Имя_типа список_идентификаторов;
Программу сохранить под своей фамилией сбросить на флешку преподавателю.
Структура программы на языке С++
Программа на языке С++ есть последовательность директив препроцессора, объявлений глобальных констант, типов данных, переменных, функций (вспомогательных алгоритмов) и операторов.
В каждой программе должна быть объявлена функция с именем main, именно с неё начинается выполнение программ на языке С++.
Объявление функции может иметь следующий вид:
Тип_результата имя_функции (список_аргументов)
{ тело функции, которое может состоять из:
· объявлений локальных констант, типов данных, переменных,
· операторов и операций.
}
Объявлять внутри функции другие функции ЗАПРЕЩАЕТСЯ.
Размер букв в тексте программ важен, например, Var и var – два разных идентификатора[1].
Запись оператора завершается символом ";" , который считается составной частью оператора.
Однострочечные комментарии начинаются с символа //, а многострочечные заключается между символами /* и */.
Пример программы на языке C++
#include <iostream.h> // директива препроцессора
#include <conio.h>
void main() { // объявление функции
cout << ”\nHellow, World! \n”; // тело функции
Getch ();
}
Схема подготовки исполняемой программы (exe-файла)
Примечание. В дальнейшем примеры программ будут приводиться для системы программирования на языке C++ фирмы Borland для операционной системы Windows (сокращённо BCW).
Основные стандартные простые типы данных языка С++
Простым типом данных называется тройка (M, O, R), где M есть конечное множество констант, O – множество операций, R – множество отношений, определённых на множестве M.
имя типа | размер констант в байтах | множество констант | Примечания |
unsigned char | [0; 255] Ç Z | коды символов | |
char | [-128; 127] Ç Z | коды символов | |
unsigned int | [0; 65535] Ç Z | ||
int | [-32768; 32767] Ç Z | ||
unsigned long | [0; ~ 4 млрд.] Ç Z | "~" означает примерно | |
long | [~ - 2 млрд.; ~ 2 млрд.] Ç Z | ||
float | [3,4*10-38; 3,4*1038] Ç Ç Q | по абсолютной величине, 7 значащих цифр. | |
double | [1,7*10-308; 1,7*10308] Ç Ç Q | по абсолютной величине, 15 значащих цифр. | |
long double | [3,4*10-4932; 3,4*104932] Ç Ç Q | по абсолютной величине, 19 значащих цифр. |
Примечания.
· Z означает множество целых чисел, Q – рациональных чисел.
· Символы заключаются в апострофы.
· Целые константы можно записывать в 16 СС и в 8 СС, предваряя их запись Æx и Æ соответственно, например, ÆxaAbB, Æ12345.
Объявление постоянных
Переменная, значение которой не может меняться, называется постоянной.
Постоянные объявляются следующим образом:
const имя_типа идентификатор = выражение;
Пример.
const float pi = 3.14;
Объявление переменных
имя_типа список_идентификаторов;
Примечания.
· При объявлении переменных допускается их инициализация.
· Объявлять переменные можно в любом месте блока до первого их использования.
· Блоком является вся программа, тело функции, либо операторы и операции, заключенные в { }.
Пример объявления переменных простых типов:
int a, b = 17, B = 21; // переменные в списке разделяются запятыми
char d = ‘s’, ch = Æx31;
Приоритеты операций
Ранг | Операции | Комментарии |
( ) [ ] -> :: . | ||
! ~ + - ++ -- & * (имя_типа) sizeof new delete | унарные операции | |
.* ->* | ||
* / % | бинарные операции: умножить, разделить, частное от деления | |
+ - | бинарные операции | |
<< >> | сдвиги влево/вправо | |
< <= >= > | отношения | |
== != | равно/неравно | |
& | поразрядное «и» | |
^ | поразрядное «исключающее или» | |
| | поразрядное «или» | |
&& | конъюнкция | |
|| | дизъюнкция | |
?: | условная операция | |
= += /= %= += -= &= ^= |= <<= >>= | операции присваивания | |
, | операция запятая |
Примечание. Операции участвуют в записи выражений. При вычислении значения выражения сначала вычисляются операции с меньшим рангом (с бóльшим приоритетом), операции с одинаковым рангом вычисляются слева направо по порядку.
Обратите внимание на то, что в С++присваивания являются операциями, выполняющимися справа налево, а не операторами, как во многих других языках программирования.
Преобразование типов
Если это необходимо и возможно, то тип результата выражения можно явно преобразовать следующим образом:
(имя_типа) выражение
например, в результате явного преобразования типа int d = (int) 2.71;переменная dполучит значение 2, то есть преобразование к целому типу заключается в отбрасывании дробной части числа.
Основные конструкции языка С++
Функции в языке С++
Каждая используемая в программе функция[2] должна быть объявлена в любом месте программы до первого к ней обращения.
Объявление функции имеет вид:
заголовок_функции {тело_функции}
Правила языка С++ позволяют до обращения к функции объявить её прототип:
Заголовок_функции ;
а после обращения привести “полное” объявление функции.
Такое "двухэтапное" объявление функций позволяет выделить основной алгоритм, который выполняет функция main().
Чаще всего заголовок функции имеет вид:
ëклассû тип_значения_функции имя_функции (список_аргументов) ;
где
· класс ::= extern | static
extern означает, что функция будет доступной из других программ,
static означает, что локальные параметры функции сохраняют свои значения между вызовами функции,
· тип значения функции может быть любым кроме типов массив или функция,
· список аргументов содержит задания типов и имён для каждого аргумента функции.
Если функция не возвращает значение, то тип её результата void.
Если тип результата функции не void, то в её теле должен выполняться оператор return выражение; Выполнение этого оператора прекращает выполнение операторов в теле функции, а значение выражения заменяет вызов (обращение к) функции.
Пример определения функции.
Без прототипа функции | С прототипом функции |
int sum(int a, int b) // заголовок; {return a + b;} // тело; void main(void) { int A = 2, B = 3; C = sum(A, B); } | int sum(int a, int b); // прототип void main(void) { int A = 2, B = 3; C = sum(A, B); } // объявление функции: int sum(int a, int b) {return a + b;} |
Примечание. Если требуется запретить изменение аргумента в теле функции, то его задание в списке аргументов должно начинаться с модификатора const, например, прототип int f(const int a, int b); объявляет, что у функции f от двух аргументов попытка изменения в теле функции аргумента a, должна рассматриваться компилятором как ошибка.
Язык С++ разрешает объявлять функции со значением аргументов по умолчанию, например,
int f(int x, int y = 1, int z = 2) {…}
Если при вызове таких функций значения аргументов не указываются, то им присваиваются значения объявленные в заголовке функции.
Примеры вызовов.
int k = f(5, 6, 7); // все аргументы получают указанные значения,
k = f(10, 4); // z получает значение по умолчанию 2,
k = f(0); // аргументы y и z получают значения по умолчанию.
Примечание. Аргументы, значения которым присваиваются по умолчанию, должны объявляться последними в списке аргументов.
Операции присваивания
В общем случае операция присваивания имеет вид[3]:
ëимя_типаû идентификатор знак_операции ë(имя_типа)û выражение;
Выполнение операции:
· вычисляется значение выражения,
· полученная константа приводится к указанному типу,
· над содержимым области памяти, поименованной идентификатором, и константой выполняется операция, знак которой находится до “=”,
· результат помещается в область памяти, поименованной идентификатором.
Примеры.
· int a = 7; // объявляется переменная a и a ← 7[4]
· a += (int) 8/3; // a ← 7 + 2
· int b = a = 9; // объявляется переменная b и a ← 9, b ← 9
Обратите внимание на последнюю строку в примерах. Возможность двойного присваивания обусловлена тем, что = есть операция, а в выражении знаков операций может быть несколько.
Так как операция присваивания выполняется справа налево, то в ней может объявляться только одна переменная.
Особо следует отметить две операции присваивания: инкремент ++ и декремент --, каждая из которых бывает двух видов: префиксной и постфиксной, например,
++ c; // префиксный инкремент,
b -- ; // постфиксный декремент,
Префиксная форма ++ (--) увеличивает (уменьшает) операнд на единицу ДО его использования. Постфиксная форма ++ (--) увеличивает (уменьшает) операнд на единицу ПОСЛЕ его использования.
Пример.
int a, b = 5;
a = ++b; // b ← b + 1, a ← b; итог: a ← 6, b ← 6
a += b--; // a ← a + b, b ← b – 1; итог: a ← 12, b ← 5