- •Часть 1
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Часть 2 184
- •Пояснительная записка
- •Содержание дисциплины
- •Индивидуальные практические работы, их характеристика
- •Контрольные работы, их характеристика
- •Литература
- •Основная
- •Дополнительная
- •Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •Учебно-методические пособия
- •Алфавит языка
- •Лексемы
- •Идентификаторы
- •Ключевые слова
- •Знаки операций
- •Константы
- •Комментарии
- •Тема 2. Типы данных Концепция типа данных.
- •Простые типы данных
- •Целый тип int
- •Символьный тип char
- •Типы с плавающей точкой: float, double, long double
- •Тема 3. Выражения
- •Переменные
- •Именованные константы
- •Операции
- •Операции присваивания
- •Инкремент и декремент
- •Унарный плюс и унарный минус (строка 2)
- •Явное преобразование типа
- •Операция определения размера sizeof
- •Деление и остаток от деления
- •Логические операции не, и, или (!, &&, ||)
- •Условная операция (?:)
- •Операция запятая (,)
- •Операции взятия адреса и разадресации
- •Тема 4. Операторы
- •Структура программы
- •Тема 5. Базовые конструкции структурного программирования
- •Операторы ветвления
- •1. Условный оператор if
- •2. Оператор switch
- •Операторы цикла
- •1. Цикл с предусловием while
- •2. Цикл с постусловием do-while
- •3. Цикл с параметром for
- •Тема 6. Массивы
- •Тема 7. Указатели и массивы
- •Тема 8. Строки символов
- •Тема 9. Структуры
- •Массивы структур
- •Битовые поля
- •Объединения
- •Перечисления
- •Тема 10. Функции
- •Глобальные, локальные и статические переменные
- •Параметры функции
- •Передача массивов в качестве параметров функции
- •Функция main, ее параметры
- •Функции стандартной библиотеки
- •Функции форматного вывода и ввода printf и scanf
- •Тема 11. Файлы
- •Тема 12. Работа с динамической памятью
- •Тема 13. Динамические структуры данных
- •Очереди
- •Линейные списки
- •Бинарные деревья
- •Практический раздел Общие указания Указания по выбору варианта
- •Порядок оформление итогового отчета
- •Индивидуальные практические работы Индивидуальная практическая работа 1 Методические указания
- •Варианты заданий.
- •Индивидуальная практическая работа 2 Методические указания
- •Варианты заданий
- •Контрольные работы Контрольная работа 1 Методические указания
- •Варианты заданий
- •Контрольная работа 2 Методические указания
- •Варианты заданий
Тема 5. Базовые конструкции структурного программирования
В теории программирования доказано, что программу для решения задачи любой сложности можно составить только из трех структур, называемых следованием, ветвлением и циклом. Их называют базовыми конструкциями структурного программирования. Следованием называется конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных). Ветвление задает выполнение либо одного, либо другого оператора в зависимости от выполнения некоторого условия. Цикл задает многократное выполнение оператора.
Особенностью базовых конструкций является то, что любая из них имеет только один вход и один выход, поэтому конструкции могут вкладываться друг в друга произвольным образом. Например, цикл может содержать следование из двух ветвлений, каждое из которых включает вложенные циклы.
Целью использования базовых конструкций является получение программы простой структуры. Такую программу легко читать и модифицировать. В языке С существует несколько реализаций базовых конструкций, в частности, есть три вида циклов и два вида ветвлений. Они введены для удобства программирования, и в каждом случае надо выбирать наиболее подходящие средства.
Операторы ветвления
1. Условный оператор if
Условный оператор if используется для разветвления процесса вычислений на два направления (см. рис. выше). Предусмотрен также сокращенный вариант этого оператора:
Формат оператора:
if (логическое выражение)
оператор1
else
оператор2
Формат для сокращенного варианта:
if (логическое выражение)
оператор
При этом операторы могут быть как простыми , так и составными. Пример 1: определить максимальное из двух чисел.
int a = 5, b = 10, max;
/ /вариант 1:
max = a;
if (b > a)
max = b;
//вариант 2:
i f (a >= b)
max = a;
else
max = b;
П ример 2: определить максимальное из трех чисел.
int a = 5, b = 10, с = 7, max;
//вариант 1:
if (a >= b && a >= c)
max = a;
if (b >= a && b >= c)
max = b;
if (c >= a && c >= b)
max = c;
//вариант 2:
i f (a >= b && a >= c)
max = a;
else
if (b >= c)
max = b;
else
max = c;
//вариант 3:
if (a >= b)
{
if (a >= c)
max = a;
else
max = c;
}
else
{
if (b >= c)
max = b;
else
max = c;
}
Так как конструкция «else max = c;» повторяется 2 раза, то сделаем упрощение:
//вариант 4:
m ax = c;
if (a >= b)
{
if (a >= c)
max = a;
}
else
if (b >= c)
max = b;
П ри использовании вложенных операторов if необходимо помнить, что ветвь else всегда относится к ближайшему выше условию if, не имеющему своей ветви else. Если же ветвь else должна относиться к другому условию if, то необходимо использовать фигурные скобки. Например, если убрать фигурные скобки в предыдущем примере, то программа будет работать неверно, т.к. случай, когда a < b, не анализируется и тогда max будет равен c независимо от значения переменной b:
max = c;
if (a >= b)
if (a >= c)
max = a;
else
if (b >= c)
max = b;
/ /вариант 5 (наиболее компактный):
max = a;
if (b > max)
max = b;
if (c > max)
max = c;
На практике довольно часто используется конструкция из вложенных друг в друга операторов if, называемая конструкцией else-if, которая имеет следующий формат:
if (логическое выражение1)
оператор1
else if (логическое выражение2)
оператор2
else if (логическое выражение3)
оператор3
. . .
else if (логическое выражениеN)
операторN
else
операторN+1
Эта последовательность операторов if – самый общий способ описания многоступенчатого принятия решения. Логические выражения вычисляются по порядку. Как только встречается выражение со значением ИСТИНА, выполняется соответствующий ему оператор и на этом последовательность проверок завершается.
Последняя else-часть срабатывает, если все предыдущие условия не выполняются. Иногда в последней else-части не требуется производить никаких действий, в этом случае ее можно опустить или использовать для фиксации ошибочной (невозможной) ситуации. Рассмотрим предыдущий пример и перепишем первый вариант решения с использованием конструкции else-if:
i f (a >= b && a >= c)
max = a;
else if (b >= a && b >= c)
max = b;
else
max = c;