Структура основной программы
Простейшая программа на С++
Такая программа состоит всего из 12 символов, но заслуживает внимательного рассмотрения. Вот она:
void main()
{
}
Основная программа в С++ всегда называется именем main (будьте внимательны – С++ различает большие и маленькие буквы, а все стандартные операторы С++ записываются маленькими буквами). Пустые скобки означают, что main не использует аргументов, а слово void (пустой) говорит о том, что она также и не возвращает никакого значения, то есть, является процедурой.
Фигурные скобки обозначают начало и конец процедуры main - поскольку внутри них ничего нет, наша программа ничего не делает, она просто соответствует правилам языка С++, ее можно скомпилировать и получить исполняемыйфайл.
Составим теперь программу, которая делает что-нибудь полезное, например, выводит на экран слово «Привет».
#include "stdafx.h" /*подключение заголовочного файла stdio.h, в котором находится описание стандартных функций ввода и вывода, */
int main()
{
printf("Привет"); // вызов функции вывода на экран
return 0;
}
Что новенького?
Перечислим новые элементы, использованные в этой программе:
Для вывода информации на экран используется функция printf. В простейшем случае она принимает единственный аргумент - строку в кавычках, которую надо вывести на экран.
Чтобы использовать стандартные функции, необходимо сказать компилятору, что есть функция с таким именем и перечислить тип ее аргументов - тогда он сможет определить, верно ли мы ее используем. Это значит, что надо подключить описание этой функции.
Описания стандартных функций С++ находятся в так называемых заголовочных файлах с расширением *.h
Для подключения заголовочных файлов используется директива (команда) препроцессора "#include", после которой в угловых скобках или кавычках ставится имя файла с заголовками. Все команды препроцессора начиняются символом "#" в начале строки. Для подключения каждого нового заголовочного файла надо использовать новую команду "#include".
В программу могут быть включены комментарии - тексты,
поясняющие программу.Комментарии – не обязательная принадлежность программы. Описание нетривиального алгоритма, как правило, снабжается пояснениями, которые помогут разобраться в тексте программы персоналу сопровождения программных продуктов. Вязыке С++ предусматривается две разновидности комментариев – многострочные и однострочные.
Однострочный комментарий начинается вслед за парой символов "//" и продолжается до конца программной строки. Обычно с его помощью записывается комментарий к текущей строке или исключается фрагмент текущей строки из области обслуживания.Комментарии, заключенные в /* */ и записываются в любом месте программы и могут располагаться на нескольких строках.
Алфавит языка
При написании программ на алгоритмическом языке можно пользоваться лишь символами, предусмотренными алфавитом этого языка.
Алфавит языка С++ включает в себя следующие символы.
Строчные и прописные буквы латинского алфавита
|а|b|с| ... |x|y|z|A|B|C| ... |X|Y|Z|
Арабские цифры
|0|1 |2| ...|9|
Специальные символы
|+|-|*|/| = |>|>=|< |<=|==|!|.|,|:|;|’|(|)|[|]|{| |}|&|@|$|#|
Язык С++ также включается набор зарезервированных слов, имеющих строго определенное назначение. Например, слова IF, ELSE используются в условном операторе, слово DEFAULT обозначает выбор по умолчанию. Назначение зарезервированных слов будет поясняться в процессе изучения языка.
Константы и переменные
Константы
Константами являются программные элементы, имеющие определенный тип и не меняющие своего значения при выполнении программы. В качестве констант на языке С++ используются целые и вещественные числа, логические значения, символы и строки.
Целые числа записываются со знаком или без него по обычным арифметическим правилам.
Например: 15 +1000 -47 02
Вещественные числа могут записываться либо в форме десятичного числа, либо в экспоненциальной форме.
В записи десятичного числа целая часть отделяется от дробной части точкой.
Например:2.5 -14.0 +0.33 0.0
Числа в экспоненциальной форме имеют вид: а .10р , где a являетсямантиссой; р - десятичным порядком.
На языке С++ числа с порядком записываются с использованием буквы Е, за которой следует порядок. Буква Е читается как «умножить на 10 в степени».
Мантисса может быть целым или десятичным числом. Порядок всегда является целым числом. Следует помнить, что в написании вещественного числа с порядком должны обязательно присутствовать мантисса и порядок.
Примеры записи чисел с порядком
Математическая запись | Запись на языкеС++ |
3,14.105 | 3.14Е5 |
-17.10-2 | -17Е-2 |
25,625 | 2.5625Е1 |
10-6 | 1Е-6 |
0,00048 | 4.8Е-4 |
Символьная константа - это любой символ ПК, заключенный в апострофы, например: ‘7’ или ‘S’ или ‘ *’.
Строковая константа (строка) - любая последовательность символов из набора символов ПК, заключенная в кавычки, например:
"Х="
"Максимальное значение ="
Строки используются также при выводе текстов и оформлении комментариев.
Переменные
Программа оперирует информацией, представленной в виде различных объектов и величин. Переменная – это символическое обозначение величины в программе. Как ясно из названия, значение переменной (или величина, которую она обозначает) во время выполнения программы может изменяться.
С точки зрения архитектуры компьютера, переменная – это символическое обозначение ячейки оперативной памяти программы, в которой хранятся данные. Содержимое этой ячейки – это текущее значение переменной.
В языке С++ прежде чем использовать переменную, ее необходимо объявить.
В объявлении переменной первым стоит название типа переменной, а затем идентификатор или имя переменной. Тип переменной определяет, какие возможные значения эта переменная может принимать и какие операции можно выполнять над данной переменной. Тип переменной изменить нельзя, т.е. пока переменная существует, она всегда будет описанного типа.
Имя представляет собой последовательность латинских букв и цифр, которая начинается с буквы. В имени может присутствовать символ подчеркивания. Длина имени составляет от 1 до 63 символов. Следует помнить, что пробелы не должны входить в написание имени.
Примеры записи имен переменных
Математическая запись | x | ap | y1 | α | ∑ | d-21 |
Запись на языке С++ | x | ap | y1 | alpha | S | d_27 |
С точки зрения компьютера все данные в памяти - это числа (более точно - наборы нулей и единиц). Тем не менее, и вы (и компьютер) знаете, что с целыми и дробными числами работают по-разному. Поэтому в каждом языке программирования есть разные типы данных (переменных), для обработки которых используются разные методы. Основными данными в языке С++ являются
- целые переменные (тип int - от английского integer - целый) занимают 2 байта в памяти;
- вещественные переменные, которые могут иметь дробную часть (тип float – от английского floating point - плавающая точка), занимают 4 байта в памяти;
-символы (тип char - от английского character - символ) занимают 1 байт в памяти.
Типы задаются стандартными зарезервированными словами:
int - целый тип;
long – длинный целый тип;
short – целый тип с меньшим диапазоном;
float - вещественный тип;
double - вещественный тип с двойной точностью;
char - символьный тип;
Для использования все переменные необходимо объявлять - то есть сказать компьютеру, чтобы он выделил для них ячейку памяти нужного размера и присвоил ей нужное имя. Переменные обычно объявляются в начале программы. Для объявления надо написать название типа переменных (int, float или char и др.), а затем через запятую имена всех объявляемых этим типом переменных. При желании можно сразу записать в новую ячейку нужное число, как показано в примерах ниже. Если переменной не присваивается никакого значения, то в ней находится "мусор", то есть то, что было там раньше.
По описанию переменной в памяти компьютера резервируется ячейка для хранения ее значения. В зависимости от объявленного типа переменной ячейка может иметь разную внутреннюю структуру, т.е. содержать различное число байт.
Примеры.
int a; // выделить память под целую переменную a
float b, c; //две вещественных переменных b и c
int Tu104, Dl86=23, Yak42; //три целых переменных,
//причем в D186 сразу записывается число 23.
float x=4.56, y, z; //три вещественных переменных,
// причем в x сразу записывается число 4.56.
char c, c2='A', m; //три символьных переменных,
//причем в c2 сразу записывается символ 'A'.
Арифметические выражения
Арифметические выражения строятся из операндов, арифметических операций и круглых скобок. Операндами могут быть константы, переменные и функции.
В бесскобочных арифметических выражениях операции выполняются слева направо в соответствии с их приоритетом.
1. * (умножение); / (деление); % ( остаток от деления целых чисел).
2. + (сложение); - (вычитание).
Изменить порядок выполнения операций можно с помощью
круглых скобок. Выражение, заключенное в круглые скобки, выполняется в первую очередь. Например, выражению: а/b*с соответствует математическая запись: , а выражению а/(b*с) – запись .
Тип арифметического выражения определяется типом входящих и него операндов.
Арифметическое выражение является целым, если все входящие и него операнды целого типа.
Если в арифметическом выражении содержится хотя бы один вещественный операнд, то результат - вещественный. Целые операнды в вещественном арифметическом выражении всегда преобразуются к вещественному типу.
Операция выделения остатка или деление по модулю ( % ) применима только к целым числам. Результат ее выполнения имеет целый тип.
Исключение составляет операция деления с использованием символа ‘/’ (косая черта). Результат выполнения этой операции всегда зависит от типа операндов.
Например, значением выражения 2/5 будет число 0.
Примеры вычисления арифметических выражений
Арифметические выражения | Результат | Тип результата |
6 + 4 * (5 - 3) | Целый | |
6 + 4 * (5 - 3.0) | 14.0 | Вещественный |
7 % 2 | Целый | |
7/2.0 | 3.5 | Вещественный |
Стандартные функции
Часто используемые в арифметических выражениях математические функции оформлены в виде стандартных подпрограмм, которые хранятся в библиотеке системы С++ (файл с именем math.h). Для правильного обращения к стандартной функции необходимо записать имя функции, за которым в круглых скобках следует аргумент (параметр). Приоритет вычисления функций выше, чем приоритет арифметических операций.
В таблице ниже представлен набор стандартных функций с указанием типов функции и аргумента. В таблице приняты обозначения: I - целый тип, F - вещественный тип.
Математическая запись | Запись на языке С++ | Тип аргумента | Тип функции |
abs(x) fabs(x) | I F | I F | |
tg x | tan(x) | I или F | F |
sin x | sin(x) | I или F | F |
cos x | cos(x) | I или F | F |
ln x | log(x) | I или F | F |
sqrt(x) | I или F | F | |
arctg(x) - арктангенс | atan(x) | I или F | F |
arcctg(x)- арккотангенс arcctg(x)= | 3.14/2.0-atan(x) | F | F |
Округление до ближайшего целого > x | ceil(x) | F | I |
Округление до ближайшего целого < x | floor(x) | F | I |
Возведение в степень xn | pow(x,n) | I F | I F |
exp(x) | I или F | F | |
arcsin(x) - арксинус | asin(x) | I или F | F |
arccos(x) - арккосинус | acos(x) | I или F | F |
десятичный логарифм. | log10(x) | I или F | F |
гиперболический синус | sinh(x) | I или F | F |
гиперболический косинус | cosh(x) | I или F | F |
гиперболический тангенс | tanh(x) | I или F | F |
Округление по правилам математики | round(x) | I или F | I |
Генерация случайного числа | rand() rand() /x | нет х - F | I F |
Примеры программирования арифметических выражений
Математическая запись | Запись на языке С++ |
(a+12*b)/(с1 - 1.8E3) | |
exp((2*sin(4*x)+pow((cos(x* x),2)))/(3*x)) | |
log(fabs(tan(al)-sin(pow(al,3)))) |
Контрольные задания
1. Составить описания для заданных переменных
Вариант | Математическая запись | Тип | Вариант | Математическая запись | Тип |
C2,Lt, j , Z1, T, rs | Целый Символьный | Sum, max, w Т, Z1, R | Вещественный Целый | ||
М, n1, ар , В, , | Целый Вещественный | A C3, kb, ,X1, ∑ | Символьный Вещественный | ||
, h, E, st, w, y1 | Вещественный Символьный | I, d0, KH Ch, Q, rez | Целый Символьный | ||
T3, j, x , , w, Z1 | Целый Вещественный | N, Kc, a2 Z,fd, | Целый Символьный | ||
N, x1, b, A, , min | Целый Вещественный | I, kd, ,v,Tn | Символьный Вещественный | ||
J, I, К, F, S, R2 | Целый Символьный | M1, j, r, b0,A, σ | Символьный ВещественныйI | ||
Вещественный Символьный | Mo, j, rcm E, £, f1 | Целый Вещественный | |||
Вещественный Символьный | α, μ, c str, P1,φ | Вещественный Символьный |
2. Записать на языке С++ числовые константы
а) целые;
б) вещественные (в форме десятичных чисел и чисел с порядком).
Вариант | Математическая запись |
а)+15; 72,93.103; -500 б) ; -16,7; 0,054.102; 62,7.10-5 | |
а) 02; 32.103; -8.102 б) -0,25; 2,89.102; 3,164; 23,7.10-4 | |
а) 600; -041; 52,625.104 б) ; 0,03.10-2; -715,4; 2,1.103 | |
а)735; -24.103; 13,14.102 б) 0,0265.103; -3,7; 54,6; 0,275.10-2 | |
а)014; 25.10°; 27,3.103 б) 0,518; 2,546.102; -0,07.10-3; 3,04 | |
а)01; 25.10; 2,73.102 б) 15,37; 4,52.10-3; 23; 0,0083 | |
а)07; 94.102; 16,27.103 б) 8,4; -35,07.10-1; 6,3.102; 0,004 | |
а) 41; 286.10°; 23,7.102 б) 0,817; 0,645.102; -0,718.103; 0,3556.10° | |
а)377; -15.103; 25,4.103 б) -0,572.106; 6.28; 5886; 0,0695.102 | |
а)012; 7,5.103; -0,05.102 б) -0,084.10-2; 7,12; -52; 0,0085 | |
а)0015; -9,4.103; 99,0 б)-5,14; 27,06.10-6; ; 0,008.102 | |
а) 276; 9,275.103; -02 б) -0,56.10б; -0,07425; 6; -0,873 | |
а) 03; 52.10°; -1,0.103 б) ; 631,5.102; -8,25; 92,1.104 | |
а)-016; 95,72.102; -576 б)-2,75; 81,2.10-6; -15,0.103; 0,033.10-3 | |
а) 05; -91,0.103; 14,5.102 б) 3,48; 1,5.102; -912.10-5; 0,0385 | |
а) 008; 7,2.104; -12.102 6)54; 17,8; 2,041.10-3; 513.103 |
3. Записать на языке С++ арифметические выражения
Вариант | Математическая запись |
4. Записать в виде алгебраической формулы
Вариант | Запись на языке С++ | |
log(abs(x*x*x))+atan(x)+exp(omega) | ||
x*sin(3.14/4.0)/(1-2*x*cos(3.14/4.0)+exp(1/3*log(x))) | ||
sqrt(fabs(log(sin(x)+2))) | ||
3*sin(x)+1/3*log(1+x*x)+sqrt(exp(x)) | ||
sqrt(abs(x-y))/(pow(sin(z),2)+1) | ||
exp(abs(x+y))*exp(x*log(1 +sin(y))) | ||
2*((x+y+z)*pow((x+y+z),2)/(2*x)-sin(x*x*x)) | ||
(sin(al)+atan(al))/(omega+pow(cos(al),2)) | ||
exp(cos(x))*pow(cos(sin(x)),2)+5.7E-1 | ||
exp(x)/(4E-1 +x*x)-sin(log(x)) | ||
4*a*a+x*(b*b*b+x*(pow(c,4)+x*(a-exp(x)))) | ||
18*a*x*x+exp(2/3*log(x))+sin(al/2) | ||
2*b*b*b+log(a)-exp(2.5*log(x)) | ||
(x+y+z)/(pow(sin(a*x),2)+b*b) | ||
exp(y/x*log(abs(x)))+exp(1/3*log(y/x)) | ||
atan(x*x*x)/(log(x)+sin(x)/cos(x))+1 |
5. Вычислить арифметическое выражение
Вариант | Запись на языке С++ | Исходные данные |
18.75 - 16.4Е0+1/4 | - | |
floor(sqrt(a+b)) | a = 0,84; b = 0,16 | |
3/x+x*x | x = 2 | |
(x*x*t+2.1)*ceil(1/4)+5 | x = 36; t =5,287 | |
i+3-i*pow(i,2) | i = -3 | |
4+exp(ceil(3/2)*log(6.25E-1)) | - | |
1%3+1/3 | - | |
2*10/4 | . - | |
x/(y*x-y)+x/y+1.2E1 | x = 3; y= 1,5 | |
19/4+1%4 | - | |
100*(99/100) | - | |
m+k*((m+k)/n)-n | M=2; k=7; n= 10 | |
2*floor(4/10)+2E0 | - | |
2.0*(1E5) | - | |
19/4+5%4 | - | |
exp(1/3*log(27))+2 | - |