Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
си_1.doc
Скачиваний:
48
Добавлен:
02.02.2015
Размер:
111 Кб
Скачать
☆

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 — -; /* постфиксная форма операции уменьшения