Здравствуйте.Помогите решить задачу минимум 4 чисел.Условие такое:"Напишите функцию int min (int a, int b, int c, int d) (C/C++)"находящую наименьшее из четырех данных чисел."Заранее спасибо! |
Управляющие операторы. Структуры данных языка С
Базовые конструкции структурного программирования
Презентацию к лекции Вы можете скачать здесь.
В теории программирования доказано, что программу для решения задачи любой сложности можно составить только из трех структур, называемых следованием, ветвлением и циклом. Их называют базовыми конструкциями структурного программирования.
Следованием называется конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных).
Ветвление задает выполнение либо одного, либо другого оператора в зависимости от выполнения какого-либо условия.
Цикл задает многократное выполнение оператора.
Особенностью базовых конструкций является то, что любая из них имеет только один вход и один выход (см. рис. 3.1), поэтому конструкции могут вкладываться друг в друга произвольным образом.
Целью использования базовых конструкций является получение программы простой структуры. Такую программу легко читать, отлаживать и при необходимости вносить в нее изменения.
Оператор "выражение"
Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор ; (он используется, когда по синтаксису оператор требуется, а по смыслу - нет). Примеры:
i++; //выполняется операция инкремента a *= b + c; //выполняется умножение с присваиванием
Операторы ветвления
Условный оператор if
Условный оператор if используется для разветвления процесса вычислений на два направления. Структурная схема оператора приведена на рис. 3.1. Формат оператора:
if ( выражение ) оператор_1; [else оператор_2;]
Сначала вычисляется выражение, которое может иметь арифметический тип или тип указателя. Если оно не равно нулю, выполняется первый оператор, иначе - второй. После этого управление передается на оператор, следующий за условным. Одна из ветвей может отсутствовать.
Если в какой-либо ветви требуется выполнить несколько операторов, их необходимо заключить в блок. Блок может содержать любые операторы, в том числе описания и другие условные операторы.
Примеры:
if (a<0) b = 1; // 1 if (a<b && (a>d || a==0)) b++; else {b *= a; a = 0;} // 2 if (a<b) {if (a<c) m = a; else m = c;} else {if (b<c) m = b; else m = c;} // 3
В примере 1 отсутствует ветвь else. Подобная конструкция называется "пропуск оператора", поскольку присваивание либо выполняется, либо пропускается в зависимости от выполнения условия.
Если требуется проверить несколько условий, их объединяют знаками логических операций. Например, выражение в примере 2 будет истинно в том случае, если выполнится одновременно условие a<b и одно из условий в скобках. Если опустить внутренние скобки, будет выполнено сначала логическое И, а потом - ИЛИ.
Оператор в примере 3 вычисляет наименьшее значение из трех переменных. Фигурные скобки в данном случае не обязательны.
Пример. Производится выстрел по мишени, изображенной на рис. 3.2. Определить количество очков.
#include <iostream> using namespace std; int main() {float x, y; int kol; cout << "Введите координаты выстрела\n"; cin >> x >> y; if ( x*x + y*y < 1 ) kol = 2; else if ( x*x + y*y < 4 ) kol = 1; else kol = 0; cout << "\n Очков: " << kol; }
Оператор switch
Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Формат оператора:
switch ( выражение ){ case константное_выражение_1: операторы_1; case константное_выражение_2: операторы 2; ... case константное_выражение_n: операторы n; [default: операторы ;]}
Выполнение оператора начинается с вычисления выражения (оно должно быть целочисленным), а затем управление передается операторам, помеченным константным выражением, значение которого совпало с вычисленным, после чего последовательно выполняются все остальные ветви, если выход из переключателя явно не указан.
Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).
Пример (программа реализует простейший калькулятор на 4 действия):
#include <iostream> using namespace std; 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;}
Выход из переключателя обычно выполняется с помощью операторов break или return.