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

4. Реализация базовых структур алгоритмов в языке с.

Рассмотрим операторы языка, реализующие базовые конструкции структурного программирования.

4.1 Оператор присвавания

Переменная=выражение;

Алгоритм выполнения:

  • вычисляется выражение;

  • если необходимо, формат представления результата приводится в соответствие с типом переменной;

  • полученный результат загружается в поле вычисляемой переменной.

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

Любое выражение, завершающееся точкой с запятой, рассматривается как опера­тор, выполнение которого заключается в вычислении выражения. Частным слу­чаем выражения является пустой оператор ; (он используется, когда по синтак­сису оператор требуется, а по смыслу - нет). Примеры:

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

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

fun(i,k): // выполняется вызов функции

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

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

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

Синтаксис оператора.

if (выражение) S1; [else S2;]

где S1, S2- операторы или блоки.

Сначала вычисляется выражение, которое может иметь логический, арифметический или тип указателя. Если оно не равно нулю (имеет значение true), выполняется S1, иначе – S2. После этого управление передается на оператор, следующий за условным.

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

Примеры:

cin>>a>>x>>y;

  1. if(а<0) b = 1;else b=0;

  2. if(а<0) {b = 1;c=1;} else {b=0;c=0;}

  3. if(а<0) a= -a;

  4. if(а!=0) b = a; else b=1;

  5. if(а) b = a; else b=1;

  6. if(a>=x&&a<=y) cout<<” a принадлежит [x,y]”;

else cout<< “a не принадлежит [x,y]”;

.

Пример 4 и 5- идентичны.

Распространенная ошибка при записи условных операторов - использование в выражениях вместо проверки на равенство (= =,) простого присваивания (=), например,

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

4.3.2. Оператор switch.

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Формат оператора:

switch ( выражение ){

case константное_выражение_1: [список_операторов_1]

case константное_выражение_2: [список_операторов_2]

………..

case константное_выражение_n: [список_операторов_n]

[default: операторы ]

}

Выполнение оператора начинается с вычисления выражения (оно должно быть целочисленным), а затем управление передается первому оператору из списка, помеченного константным выражением, значение которого совпало с вычисленным. После этого, если выход из переключателя явно не указан, последовательно выполняются все остальные ветви.

Выход из переключателя обычно выполняется с помощью операторов break. Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while, do. Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).

Пример (программа реализует простейший калькулятор на 4 действия):

#include <iostream.h>

int main(){

int а, b, res;

char op;

cout << "\nВведите 1й операнд : "; cin >> а;

cout << "\nВведите знак операции : "; cin >> op;

cout << "\nВведите 2й операнд : "; cin >> b;

bool f = true;

switch(op){

саsе ' + ' : res = а + b; break;

саsе ' - ' : res = а - b; break;

саsе ' * ' : res = а * b; break;

саsе ' / ' : res = а / b; break;

default cout: << "\nНеизвестная операция"; f = false;

}

if (f) cout << "\nРезультат : " << res;

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]