Опубликован: 25.08.2010 | Доступ: свободный | Студентов: 6099 / 598 | Оценка: 3.91 / 3.44 | Длительность: 11:09:00
Лекция 3:

Управляющие операторы. Структуры данных языка С

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Аннотация: В данной лекции рассматриваются основные операторы языка: ветвления, циклы, передача управления, а также типы и структуры данных, унаследованные из языка С: указатели, массивы, строки, перечисления, структуры и объединения
Ключевые слова: теория программирования, выход, структурная схема, присваивание, логические операции, фигурные скобки, вычисление выражения, переключатель, целочисленный тип, switch, break, операторы цикла, цикла, тело цикла, целое число, итерация, ПО, безусловный переход, значение функции, составной оператор, оператор передачи управления, операторы перехода, continue, goto, throw, операторы, идентификатор, область видимости, функция, оператор безусловного перехода, вложенные циклы, время выполнения, деление, переполнение, обработка исключений, программа, значение, EPS, точность, указатель, типизированный указатель, равенство, неравенство, арифметическая операция, преобразование типов, параметр функции, адрес, сегменты, исполняемый код, int, double, битовые поля, переменная, константа, область действия, динамическая переменная, освобождение памяти, free, сложение, вычитание, инкремент, декремент, приведение типов, static_cast, void, операция присваивания, структура данных, разность, байт, приоритет операций, скалярное выражение, неименованная константа, ссылка, синоним, псевдоним, память, операции, передача параметров, ссылочный тип, инициализация, external, хранение данных, массив, компилятор, компиляция, входные данные, динамический массив, размерность массива, сумма элементов массива, размерность, FLOAT, динамические массивы, new, индекс, матрица, умножение, массив символов, нуль-символ, управляющая последовательность, длина, строковый, заголовочный файл, CSTRING, вывод, ввод/вывод, стандартная библиотека, подстрока, длина строки, пароль, копирование, именованная константа, инициализатор, список, описатели, элемент списка, структурный тип

Базовые конструкции структурного программирования

Презентацию к лекции Вы можете скачать здесь.

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

Следованием называется конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных).

Ветвление задает выполнение либо одного, либо другого оператора в зависимости от выполнения какого-либо условия.

Цикл задает многократное выполнение оператора.

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

Базовые конструкции структурного программирования

Рис. 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. Мишень

Пример. Производится выстрел по мишени, изображенной на рис. 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.

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Dana Kanatkyzi
Dana Kanatkyzi
Здравствуйте.Помогите решить задачу минимум 4 чисел.Условие такое:"Напишите функцию int min (int a, int b, int c, int d) (C/C++)"находящую наименьшее из четырех данных чисел."Заранее спасибо!
Александр Мигунов
Александр Мигунов
Россия