Операторы в языке С

Содержание

Слайд 2

ОПЕРАТОРЫ В ЯЗЫКЕ С . Все операторв языка С можно разделить

ОПЕРАТОРЫ В ЯЗЫКЕ С .

Все операторв языка С можно разделить на

пять групп:
Оператор «выражение».
Оператор ветвления.
Операторы цикла.
Оператор множественного выбора.
Операторы передачи управления.
Слайд 3

Оператор «выражение» Любое выражение, завершающееся точкой с запятой, рассматривается как оператор,

Оператор «выражение»

Любое выражение, завершающееся точкой с запятой, рассматривается как оператор,

выполнение которого заключается в вычислении выражения.
Частным случаем выражения является пустой оператор (он используется, когда по синтаксису оператор требуется, а по смыслу — нет).
Слайд 4

Оператор «выражение» Примеры: i++; // выполняется операция // инкремента а* =

Оператор «выражение»

Примеры:

i++; // выполняется операция
// инкремента
а* = b + с; // выполняется

умножение
// с присваиванием
fun(i, k); // выполняется вызов функции
Слайд 5

Оператор ветвления Условный оператор if используется для разветвления процесса вычислений на два направления.

Оператор ветвления

Условный оператор if используется для разветвления процесса вычислений на два

направления.
Слайд 6

Оператор ветвления Формат оператора: if ( выражение ) оператор_1; [else оператор_2;]

Оператор ветвления

Формат оператора:

if ( выражение ) оператор_1; [else оператор_2;]

Слайд 7

Условный оператор if

Условный оператор if

Слайд 8

Обратите внимание! Одна из ветвей может отсутствовать логичнее опускать вторую ветвь

Обратите внимание!

Одна из ветвей может отсутствовать

логичнее опускать вторую ветвь вместе с

ключевым словом else

Если в какой-либо ветви требуется выполнить несколько операторов,
их необходимо заключить в блок.

Блок может содержать любые операторы, в том числе описания и другие условные операторы, но не может состоять из одних описаний

Необходимо учитывать, что переменная, описанная в блоке,
вне блока не существует.

Слайд 9

Условный оператор if if (a if (a d || a==0)) b++;

Условный оператор if

if (a<0) b = 1; // 1
if (a

(a>d || a==0)) b++; else {b *= a; a = 0;} // 2
if (aif (a++) b++; // 4
if (b>a) max = b; else max = a; // 5

Примеры:

Слайд 10

Условный оператор if 1 отсутствует ветвь else подобная конструкция называется «пропуск

Условный оператор if

1

отсутствует ветвь else
подобная конструкция называется «пропуск оператора»

2

если требуется проверить

несколько условий, их объединяют знаками логических операций.

3

Вычисляется наименьшее значение из трех переменных.
Фигурные скобки в данном случае не обязательны, так как компилятор относит часть else к ближайшему if.

4

хотя в качестве выражений в операторе if чаще всего используются операции отношения, это не обязательно.

5

такую конструкцию проще и нагляднее записывать в виде условной операции
в данном случае: max =(b>a)?b:a;

Слайд 11

Обратите внимание! Распространенная ошибка при записи условных операторов — использование в

Обратите внимание!

Распространенная ошибка при записи условных операторов — использование в выражениях

вместо проверки на равенство (==) простого присваивания (=), например, if(a=1)b=0;

синтаксической ошибки нет, так как операция присваивания формирует результат, который и оценивается на равенство/неравенство нулю
в данном примере присваивание переменной b будет выполнено независимо от значения переменной а
поэтому в выражениях проверки переменной на равенство константе константу рекомендуется записывать слева от операции сравнения: if (1==a) b=0;.

Слайд 12

Обратите внимание! Вторая ошибка — неверная запись проверки на принадлежность диапазону

Обратите внимание!

Вторая ошибка — неверная запись проверки на принадлежность диапазону

например, чтобы

проверить условие 0<х<1, нельзя записать его в условном операторе непосредственно

так как будет выполнено сначала сравнение 0<х, а его результат, преобразованный в int будет сравниваться с 1.
правильный способ записи: if (0<х && х<1)...

Слайд 13

Обратите внимание! Если какая-либо переменная используется только внутри условного оператора, рекомендуется

Обратите внимание!

Если какая-либо переменная используется только внутри условного оператора, рекомендуется объявить

ее внутри скобок

if (int i = fun(t)) a -= i; else a += i;

Объявлять внутри оператора if можно только одну переменную

область ее видимости начинается в точке объявления и включает обе ветви оператора

Слайд 14

Объявление переменной в тот момент, когда она требуется, то есть когда

Объявление переменной в тот момент, когда она требуется,
то есть когда

ей необходимо присвоить значение,
является признаком хорошего стиля и позволяет избежать случайного использования переменной до ее инициализации.


Слайд 15

Операторы цикла Цикл с предусловием (while). Цикл с постусловием (do while). Цикл с параметром (for).

Операторы цикла

Цикл с предусловием (while).
Цикл с постусловием (do while).
Цикл с параметром

(for).
Слайд 16

Цикл с предусловием (while) Формат оператора: while ( выражение ) оператор

Цикл с предусловием (while)

Формат оператора:

while ( выражение ) оператор

Выражение определяет условие

повторения тела цикла, представленного простым или составным оператором.
Выполнение оператора начинается с вычисления выражения.
Если оно истинно, то выполняется оператор цикла.
Если при первой проверке выражение равно false, цикл не выполнится ни разу.
Тип выражения должен быть арифметическим или приводимым к нему.
Выражение вычисляется перед каждой итерацией цикла.
Слайд 17

Цикл с предусловием (while) #include #include int main(){ clrscr(); cout while(!kbhit()); cout return 0; } Пример:

Цикл с предусловием (while)

#include
#include
int main(){
clrscr();
cout << "\nНажмите

любую кнопку на клавиатуре";
while(!kbhit());
cout << "\nБлагодарю за сотрудничество";
return 0;
}

Пример:

Слайд 18

Обратите внимание! В круглых скобках после ключевого слова while можно вводить

Обратите внимание!

В круглых скобках после ключевого слова while можно вводить описание

переменной

Областью ее действия является цикл

while (int x = 0){ ... /* область действия х */ }

Слайд 19

Цикл с постусловием (do while) Формат оператора: do оператор while выражение;

Цикл с постусловием (do while)

Формат оператора:

do оператор while выражение;

Сначала выполняется простой

или составной оператор, составляющий тело цикла.
Затем вычисляется выражение.
Если оно истинно, тело цикла выполняется еще раз.
Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления.
Тип выражения должен быть арифметическим или приводимым к нему.
Слайд 20

Цикл с постусловием (do while) // программа находит все делители целого

Цикл с постусловием (do while)

// программа находит все делители целого числа

#include
int main(){
int num;
cout << "\nВведите число : "; cin >> num;
int half = num / 2 // половина числа
int div = 2 // кандидат на делитель
do{
if (!(num % div)) cout << div << "\n";
div++;
}while(div <= half);
return 0;
}

Пример:

Слайд 21

Цикл с параметром (for) Формат оператора: for (инициализация; выражение; модификации) оператор;

Цикл с параметром (for)

Формат оператора:
for (инициализация; выражение; модификации) оператор;

Слайд 22

Цикл с параметром (for) Инициализация используется для объявления и присвоения начальных

Цикл с параметром (for)

Инициализация используется для объявления и присвоения начальных значений

величинам, используемым в цикле.

в этой части можно записать несколько операторов, разделенных запятой (операцией «последовательное выполнение»)

например, так:

for (int i = 0, j = 2; ...
int k, m;
for (k = 1, m = 0; ...

Областью действия переменных, объявленных в части инициализации цикла, является цикл

Инициализация выполняется один раз в начале исполнения цикла

Слайд 23

Цикл с параметром (for) Выражение определяет условие выполнения цикла если его

Цикл с параметром (for)

Выражение определяет условие выполнения цикла

если его результат, приведенный

к типу bool, равен true, цикл выполняется

Цикл с параметром реализован как цикл с предусловием

Слайд 24

Цикл с параметром (for) Модификации выполняются после каждой итерации цикла и

Цикл с параметром (for)

Модификации выполняются после каждой итерации цикла и служат

обычно для изменения параметров цикла

В части модификаций можно записать несколько операторов через запятую

Слайд 25

Цикл с параметром (for) Простой или составной оператор представляет собой тело цикла

Цикл с параметром (for)

Простой или составной оператор
представляет собой тело цикла

Слайд 26

Цикл с параметром (for) Любая из частей оператора for может быть

Цикл с параметром (for)

Любая из частей оператора for может быть опущена


но точки с запятой надо оставить на своих местах!

Слайд 27

Цикл с параметром (for) // оператор, вычисляющий сумму чисел от 1

Цикл с параметром (for)

// оператор, вычисляющий сумму чисел от 1 до

100
for (int i = 1, s = 0; i<=100; i++) s += i;
// программа находит все делители целого числа
#include
int main(){
int num, half, div;
cout << "\nВведите число : "; cin >> num;
for (half = num / 2, div = 2; div <= half; div++)
if (!(num % div)) cout << div <<"\n";
return 0;
}

Примеры:

Слайд 28

Оператор множественного выбора Оператор switch (переключатель) предназначен для выбора одного из нескольких направлений вычислений.

Оператор множественного выбора

Оператор switch (переключатель) предназначен для выбора одного из нескольких

направлений вычислений.
Слайд 29

Оператор множественного выбора Формат оператора: switch ( выражение ){ case константное_выражение_1:

Оператор множественного выбора

Формат оператора:

switch ( выражение ){
case константное_выражение_1: [список_операторов_1]
case константное_выражение_2: [список_операторов_2]
case

константное_выражение_n: [список_операторов_n]
[default: операторы ]
}
Слайд 30

Оператор множественного выбора

Оператор множественного выбора

Слайд 31

Оператор множественного выбора Выход из переключателя обычно выполняется с помощью операторов

Оператор множественного выбора

Выход из переключателя обычно выполняется с помощью операторов break

или return

Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while и do
Оператор return выполняет выход из функции, в теле которой он записан

Слайд 32

Оператор множественного выбора Все константные выражения должны иметь разные значения, но

Оператор множественного выбора

Все константные выражения должны иметь разные значения, но быть


одного и того же целочисленного типа

Несколько меток могут следовать подряд

Слайд 33

Оператор множественного выбора // программа реализует простейший калькулятор #include int main(){

Оператор множественного выбора

// программа реализует простейший калькулятор
#include
int main(){
int a,

b, res;
char op;
cout << "\nВведите 1й операнд: "; cin >> a;
cout << "\nВведите знак операции: "; cin >> op;
cout << "\nВведите 2й операнд: "; cin >> b;
bool f= true;
switch (op) {
case ’+’ : res=a+b; break;
case ’-’ : res=a-b; break;
case ’/’ : res=a/b; break;
case ’*’ : res=a*b; break;
default : cout << "\nНеизвестная операция"; f=false
}
if (f) cout << "\nРезультат :" << res;
return 0;
}

Пример:

Слайд 34

В случае синтаксической ошибки в слове default сообщение об ошибке не

В случае синтаксической ошибки в слове default
сообщение об ошибке не

выдается, поскольку компилятор воспримет это слово как допустимую метку оператора.


Слайд 35

Операторы передачи управления оператор безусловного перехода goto оператор выхода из цикла

Операторы передачи управления

оператор безусловного перехода goto
оператор выхода из цикла break
оператор перехода

к следующей итерации цикла continue
оператор возврата из функции return
Слайд 36

Оператор goto Формат оператора: goto метка; В теле той же функции

Оператор goto

Формат оператора:

goto метка;

В теле той же функции должна присутствовать ровно

одна конструкция вида:

метка: оператор;

Оператор goto передает управление на помеченный оператор

Метка — это обычный идентификатор, областью видимости которого является функция, в теле которой он задан

Слайд 37

Оператор goto Не следует передавать управление внутрь операторов if, switch и

Оператор goto

Не следует передавать управление внутрь операторов if, switch и циклов

Нельзя

переходить внутрь блоков, содержащих инициализацию переменных, на операторы, расположенные после нее, поскольку в этом случае инициализация не будет выполнена:

int к; ...
goto metka; ...
{int a = 3. b = 4; k = а + b;
metka: int m = k + 1; ... }

После выполнения этого фрагмента программы значение переменной m не определено

Слайд 38

Оператор goto Использование оператора безусловного перехода оправдано в двух случаях: принудительный

Оператор goto

Использование оператора безусловного перехода оправдано в двух случаях:

принудительный выход вниз

по тексту программы из нескольких вложенных циклов или переключателей
переход из нескольких мест функции в одно
например, если перед выходом из функции всегда необходимо выполнять какие-либо действия

В остальных случаях для записи любого алгоритма существуют более подходящие средства

Применение goto нарушает принципы структурного и модульного программирования

все блоки, из которых состоит программа, должны иметь только один вход и один выход

Слайд 39

Оператор break Оператор break используется внутри операторов цикла или switch для

Оператор break

Оператор break используется внутри операторов цикла или switch для обеспечения

перехода в точку программы, находящуюся непосредственно за оператором, внутри которого находится break
Слайд 40

Оператор continue Оператор перехода к следующей итерации цикла continue пропускает все

Оператор continue

Оператор перехода к следующей итерации цикла continue пропускает все операторы,

оставшиеся до конца тела цикла, и передает управление на начало следующей итерации.