
- •Алгоритмические языки и программирование.
- •Структура курса
- •Литература
- •1.1 Алфавит языка. Структура программы
- •Структура консольной программы
- •Описание функции
- •1.2 Фундаментальные типы данных
- •2. Вещественные типы
- •1.3 Объявление переменных и констант
- •Перечисляемый тип
- •Объявление типа
- •1.4 Стандартные функции ввода/вывода
- •Спецификации формата
- •Примеры форматного ввода/вывода
- •2 Ввод/вывод строк
- •3 Ввод/вывод символов
- •1.5 Операции
- •Операции (2)
- •Приоритет операций
- •1.6 Оператор «Выражение»
- •1.7 Блок операторов
- •1.8 Оператор условной передачи управления
- •1.9 Оператор выбора
- •1.10 Операторы циклов
- •2. Оператор цикла for
- •3. Оператор цикла do ... while
- •1.11 Неструктурные операторы передачи управления
- •2. Оператор досрочного завершения break
- •3. Оператор продолжения continue
- •Пример Ex1_06. Вывод таблицы кодов

Операции (2)
Сдвиги:
<идентификатор> >> <идентификатор> - сдвиг вправо, <идентификатор> << <идентификатор> - сдвиг влево.
Порядковые:
++<идентификатор>, <идентификатор>++ (следующее);
--<идентификатор>, <идентификатор> - - (предыдущее).
Присваивания:
= += -= *= /= %= &= ^= |= <<= >>=
Условная:
<Выражение1>?<Выражение2>:<Выражение3>
21

Приоритет операций
1. |
( ) |
[ ] -> :: . |
2. |
! (не) + - ++ -- &(адрес) *(указатель) sizeof new delete |
|
3. |
.* |
->* |
4.* / %
5.+ - (бинарные)
6.<< >>
7.< <= > >=
8.= = ! =
9.&(поразрядное и) 10. ^(исключающее или)
11.| (поразрядное или)
12.&&
13.||
14.?=
15. |
= *= /= %= += -= &= ^= |= <<= |
>>= |
16. |
, |
22 |

1.6 Оператор «Выражение»
Формат:
<Выражение1>[,<Выражение2>,...[,<Выражение n>]...]
Примеры: |
|
|
|
a) int a=10, b=3; float ret; ret=a/b; |
ret=3 |
||
б) c=1; |
b=c++; |
b=1, c=2 |
|
в) c=1; |
sum=++c; |
c=2, sum=2 |
|
г) c=a<<4; |
эквивалентно с=a*16; |
||
д) a+=b; |
|
эквивалентно a=a+b; |
|
е) a=b=5; |
эквивалентно b=5; a=b; |
||
ж) с=(a=5, b=a*a); |
эквивалентно a=5; b=a*a; c=b; |
||
|
|
з) a=(b=s/k)+n; |
эквивалентно b=s/k; a=b+n; |
|
|
и) c=(a>b)?a:b; |
если a>b, то с=a, иначе с=b |
|
23

1.7 Блок операторов
Блок операторов используется в конструкциях ветвления, выбора и циклов, предусматривающих один оператор.
Формат:
{ <Оператор>;… <Оператор>;}
Пример:
{
f=a+b;
a+=10;
}
Точка с запятой в отличие от Паскаля является частью оператора, а потому не может опускаться перед фигурной скобкой.
24

1.8 Оператор условной передачи управления
if (<Выражение>) <Оператор;> [ else <Оператор;>] Примеры:
а) if (!b)
puts("с - не определено"); // если b=0, то – ошибка, else {c=a/b; printf("c=%d\n", c);} // иначе - выводится с.
б) if ((c=a+b)!=5) c+=b; else c=a;
в) if ((ch=getchar())==′q′) |
// если в ch введено q, |
||
puts |
("Программа завершена."); |
// то ... |
|
else puts |
("Продолжаем работу..."); |
// иначе ... |
г) ch=′a′;
if ((oldch=ch, ch=′b′)==′a′)puts("Это символ ′a′\n");
else puts("Это символ ′b′\n");
25

1.9 Оператор выбора
switch (<выражение>)
{ |
case <элемент>: <операторы;> |
|
case <элемент>: <операторы;> |
|
. . . |
|
[ default : <операторы;>] |
} |
|
Пример: |
|
switch (n_day)
{case 1: case 2: case 3: case 4:
|
case 5: puts("Go work!"); break; |
|
case 6: printf("%s","Clean the yard and"); |
|
case 7: puts("relax!"); |
} |
26 |
|

1.10 Операторы циклов
1. Оператор цикла while
while (<Выражение>) <Оператор>
Пример Ex1_02. Вычислить при x > 1 сумму ряда S=1+1/x- 1/x2+1/x3-... с точностью .
#include <stdio.h> #include <math.h>
void main(int argc, char* argv[])
{float s, r,x,eps; puts("Input x, eps:"); scanf("%f %f", &x, &eps); if (x<=1) puts("Error."); else { s=1; r=1/x;
while (fabs(r)>eps){ s+=r; r=-r/x; }
printf("Result= %f.\n", s);
}
}
27

2. Оператор цикла for
for (<Выражение1>;<Выражение2>;<Выражение3>)<Оператор>;
Эквивалентно:
<Выражение1>
while (<Выражение2>) {<Оператор>; <Выражение3>;
}
Пример Ex1_03. Вычислить сумму первых десяти натуральных чисел.
#include <stdio.h>
int main(int argc, char* argv[])
{int i,s;
for (i=1,s=0;i<=10;i++) s+=i; printf("Sum=%d\n",s);
return 0;
} |
28 |
|

3. Оператор цикла do ... while
do <Оператор > while (<Выражение>) ;
Пример. Игнорировать ввод значения, выходящего за пределы заданного интервала.
do {
printf("Введите значение от %d до % d : ",low, high); scanf(" %d ", &a);
}
while (a<low || a>high);
29

1.11 Неструктурные операторы передачи управления
1. Оператор безусловного перехода goto goto <Метка перехода>;
Пример:
again: x=y+a;
...
goto again;
30