4. Структура программы
Программа, записанная на языке C++, должна иметь заголовок и тело программы, состоящее из одной или нескольких функций. В качестве примера рассмотрим структуру программы (табл. 16), реализующую алгоритм определения суммы или произведения элементов матрицы в зависимости от значения первого элемента. Алгоритм был разработан в п. 2.4.4 и приведен на рис. 23.
Каждая программа на языке C++ начинается с оператора #include, например (см. табл. 16):
#include <iostream.h>
Оператор #include сообщает компилятору, какие заголовочные файлы (файлы с расширением h) нужно включить в программу. Заголовочные файлы — это файлы, которые содержат определения, предоставляемые компилятором для выполнения различных операций (например, операций ввода-вывода, математических операций и т.д.). Заголовочные файлы записаны в формате ASCII, их содержимое можно вывести для просмотра на экран или на принтер из каталога INCLUDE.
Тело программы состоит из одной или нескольких функций. Каждая программа на C++ содержит главную функцию, с которой начинается выполнение программы. Главная функция начинается с оператора
void main(void)

После оператора начала главной функции следуют операторы программы, заключенные в группирующие фигурные скобки {}.
// данная программа
//позволяет перевести из фунтов в метры и сантиметры
#include <iostream.h>
#include <iomanip.h>
int main ()
{
float feet, meters, centimeters;
cout << "Введите количество футов: ";
cin >> feet;
centimeters = feet * 12 * 2.54;
meters = centimeters/100;
cout << setw(8) << setprecision(2)
<< setiosflags(ios::fixed) << feet
<< " (футы)- равняется \n";
cout << setw(8)
<< meters << " (метры) \n";
cout << setw(8) ,
<< centimeters << " (сантиметры) \n";
cout << ">>>До свидания! <<<";
}
Файл IOMANIP.H, подключаемый в начале программы, содержит объявления трех функций, являющихся членами класса ios (базовый в иерархии классов ввода/вывода): setw(), setprecision () и setiosflags(). Функция setw() задает минимальную ширину (в символах) выводимого поля. Функция setprecision () задает число цифр после десятичной точки при выводе чисел с плавающей запятой. Функция setw () вынуждена повторяться три раза, нескольку определяет формат вывода только следующей за ней переменной, после чего все сделанные установки сбрасываются. В отличие от нее функция setios - f lags () вызывается один раз, устанавливая флаг fixed, который задает вывод чисел с плавающей запятой в фиксированном формате, т.е. без экспоненты.
5. Операторы языка C++
Операторы в языке C++ предназначены для описания действий. Любой оператор может быть помечен меткой. Операторы отделяются друг от друга точкой с запятой.
К простым операторам языка C++ относятся оператор присваивания, операторы ввода и вывода данных, оператор перехода.
Оператор присваивания
Оператор присваивания является основным, фундаментальным оператором. Общий вид оператора: имя_переменной=выражение;
Например: F=3*c+2*sin(x);
Выражение состоит из операндов и операций. Операндом может быть константа, переменная или функция. Операции объединяют операнды и выражения. Перечень операций языка C++ приведен в приложении 7. Вид выражения однозначно определяет правила его вычисления: действия выполняются слева направо с соблюдением старшинства, указанного в таблице приоритетов (табл. 17).

Наиболее часто используемые в программах математические функции языка C++ находятся в библиотеке math.h, расположенной в каталоге INCLUDE. Если вы хотите воспользоваться этими функциями, то в начало программы необходимо включить заголовочный файл: #include <math.h>
Начальное значение переменной в языке C++ можно присвоить при ее объявлении, например, int х=16, у=32;
В отличие от других языков программирования в C++ оператор присваивания может использоваться в выражениях, которые включают в себя операторы сравнения или логические операторы, например: if ((x=x+5)>0) cout«"Bывод";
В этом примере сначала происходит увеличение переменной на 5, а затем ее значение сравнивается с нулем.
Для того чтобы присвоить одинаковое значение, например 2*k, нескольким переменным, можно воспользоваться оператором присваивания: x=y=z=2*k;
В языке C++ есть дополнительные операции присваивания: +=, - = , *=, /=, %=. Например, вместо оператора х=х+5; можно записать: х+=5;
Часто в C++ используются префиксные (до) и постфиксные (после) операции увеличения и уменьшения значений переменных на единицу.
Префиксные операции увеличивают (уменьшают) значение переменной на единицу, а затем используют это значение, например: х=++у;
В этом примере сначала происходит увеличение на единицу значения переменной у, а затем присваивание этого значения переменной х.
Постфиксные операции сначала используют значение переменной, после чего увеличивают (уменьшают) его, например: х=у- -; В этом примере переменная х получает значение у, после чего у уменьшается на единицу.
Дополнительные операторы присваивания: +=, -=, *=, /=, %=
В языке С++ имеется несколько операторов присваивания. Важнейшим из них, несомненно, является оператор =, который просто присваивает значение выражения, стоящего справа от знака, переменной, стоящей слева от знака операции. Другие операторы присваивания обновляют или корректируют значения переменных. В записи каждого такого оператора имя переменной стоит слева от знака, а выражение — справа. Переменной присваивается новое значение, равное ее старому значению, скорректированному на величину выражения, стоящего справа. Результат зависит от используемой оператора, например:

В представленном выше перечне мы воспользовались простыми числами, но мы вполне могли использовать более сложные выражения: х *= 3 * у 4- 12 то же самое, что и х = х*(3*у + 12)
Операторы присваивания, которые мы только что обсудили, обладают таким же низким приоритетом, что и оператор =, т.е. меньший, чем приоритет + или *. Это обстоятельство наглядно проявляется в последнем примере, когда 12 прибавляется к 3 * у, а после этого результат умножается на х.
Операции приращения и уменьшения.
Есть две разновидности префиксная форма ++а и постфиксная форма а++.
Листинг 5.11 Программа post_pre.c.
/* postjpre.c — постфиксная и префиксная формы */
#include <iostream.h>
int main(void)
{
int a=1, b=1;
int aplus, plusb;
aplus = a++; /* постфиксная форма */
plusb = ++b; /* префиксная форма */
cout<<”a aplus b plusb \n”<<;
cout<<"%ld %5d %5d %5d\n", a, aplus, b, plusb<<;
return (0);
}
Если ваш компилятор работает корректно, получается следующий результат:
a aplus b plusb
2 1 2 2
Как и предполагалось, значение обеих переменных а и b увеличилось на 1. Однако переменной aplus значение было присвоено перед изменением величины а, в то же время переменная plusb получила значение b уже после того, как была изменена величина b. В этом и заключается различие между постфиксной и префиксной формами (рис. 5.5).
aplus = а++; /* постфиксная форма: а подвергается изменению после того, как ее значение использовано */
plusb = ++b; /* префиксная форма: b подвергается изменению перед тем, как ее значение использовано */
В тех случаях, когда одна из этих операций используется сама по себе, как, например, в одиночном операторе ego++, не имеет значения, какой формой этой операции вы пользуетесь. Однако выбор имеет смысл, когда сама операция и ее операнды являются частью выражения, подобного приведенным выше оператор присваивания. В подобного рода ситуациях желать более четкое представление о результате, который вы хотели бы получить. Например, вспомните, с какой цельлью вы использовали следующей оператор:

Операция уменьшения: —
Каждой форме операции приращения соответствует операции уменьшения (декремента), при этом вместо ++,
мы используем --
— - count; /* префиксная форма операции уменьшения
count — -; /* постфиксная форма операции уменьшения
