- •Конспект лекций (часть 1) Оглавление
- •Введение
- •1. Этапы и проблемы решения задач с использованием компьютера
- •Алфавит языка
- •Ключевые слова
- •Идентификаторы
- •Знаки операций
- •Константы
- •Комментарии
- •2.3. Структура и основные элементы программы
- •2.4. Трансляция программ и их выполнение
- •3. Стандартные (базовые) типы данных, операции и выражения
- •3.1. Типы данных, переменные и константы Понятие типов данных
- •Классификация простых предопределенных типов данных
- •Переменные, константы
- •3.2. Целочисленные типы данных
- •3.3. Вещественные типы данных
- •3.4. Логический тип данных
- •3.5. Символьный тип данных
- •3.6. Операции и выражения
- •Преобразования типов данных
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные (битовые) операции
- •Операции составного присваивания
- •Условная операция
- •Операция sizeof
- •Приоритеты рассмотренных операций
- •3.7. Ввод и вывод простых типов данных
- •Вывод текстовых строк
- •Ввод/вывод арифметических типов данных
- •Форматирование ввода / вывода
- •4.1. Идеи структурного программирования
- •Условная инструкция (if)
- •Инструкция множественного выбора (switch)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Итерационный цикл (for)
- •Инструкции перехода
- •5. Приемы программирования циклов
- •5.1. Рекуррентные вычисления
- •5.2. Инвариант цикла
- •6. Массивы и указатели
- •6.1. Понятие массива
- •6.2. Объявление массивов Объявление одномерных массивов
- •Объявление многомерных массивов
- •6.3. Ввод-вывод массивов
- •6.4. Текстовые строки как массивы символов
- •6.5. Массивы и указатели
- •7. Разработка программ при работе с массивами
- •8. Функции и структура программы
- •9. Организация ввода/вывода и работа с файлами
- •Быстрое возведение чисел в целую степень
- •Нахождение наибольшего общего делителя (алгоритм Евклида)
Условная инструкция (if)
Условная инструкция ifпозволяет выбрать одно из двух направлений выполнения программы.
Имеются две формы записи этой инструкции:
if (<Выражение>)
<Инструкция 1>;
else
<Инструкция 2>;
if (<Выражение>)
<Инструкция>;
Если под термином <Инструкция> понимаются несколько последовательных инструкций, то формат записи будет таким:
Блок инструкцийпредставляет собой последовательность инструкций, каждая из которых заканчивается символом;. Блок можно рассматривать как одну инструкцию (составную инструкцию).
Термин <Выражение> представляет собой любое выражениеC++, значение которого может трактоваться как значение логического типа (bool).
Пример записи:
int K;
cin >> K;
if (K >= 0)
cout << “Вы ввели положительное число.” << endl;
else
cout << “Вы ввели отрицательное число.” << endl;
Здесь в качестве выражения использовано логическое выражение, значение которого равно trueилиfalseв зависимости от введенного с клавиатуры значения переменнойK.
Еще один пример:
int K;
cin >> K;
if (K) // Здесь использовано арифметическое выражение
cout << “Вы ввели число не равное 0.” << endl;
else
cout << “Вы ввели 0.” << endl;
В этом примере выражение не является логическим, однако его значение может трактоваться как логическое (помним, что любое числовое значение, отличное от 0, соответствует значениюtrue, а числовое значение0 – логическому значению false). Этот пример можно было бы переписать так (эквивалент предыдущего примера):
int K;
cin >> K;
if (K != 0) // Здесь использовано логическое выражение
cout << “Вы ввели число не равное 0.” << endl;
else
cout << “Вы ввели 0.” << endl;
Способ записи выражения во втором (из последних двух) примере следует считать менее эффективным и с точки зрения написания текста, и с точки зрения использования ресурсов (расхода памяти и быстродействия).
А вот пример с использованием блока инструкций:
int Max, Min, B;
cin >> Max >> Min;
if (Min > Max)
{
B = Max;
Max = Min;
Min = B;
}
В этом примере используется “укороченная” (без ветви else) форма инструкцииif, и в случае, когда переменнаяMinсодержит значение большее, чем переменнаяMax, выполняется последовательность инструкций (блок), осуществляющих перераспределение значений этих переменных так, что переменнаяMaxбудет содержать большее значение, а переменнаяMin- меньшее.
Выполняемые внутри оператора ifинструкции могут быть любыми инструкциями языкаC++, в том числе и другими инструкциямиif. То есть, другими словами, инструкцииifмогут вкладываться друг в друга. Количество уровней вложенияif – инструкций в языкеC++ ограничено 256 уровнями.
Рассмотрим несколько примеров вложений if - инструкций.
При анализе текстов подобных программ используют следующее правило:
Слово else относится к ближайшему сверху слову if, находящемуся в том же блоке инструкций, но еще не связанному ни с каким другим словом else.
Между словами ifиelseдолжна находиться хотя бы одна инструкция. Поэтому в первой реализации последнего примера мы вынуждены были использовать так называемую “пустую инструкцию”, которая не имеет никакого изображения и располагается между записью выражения(p)и разделителем;. Вторая реализация этой схемы алгоритмы, основанная на инвертировании выраженияp, является более корректной и эффективной.
В первой реализации последнего примера мы также использовали “пустую инструкцию”, так как после слова else (как и после словаif) также должна находиться хотя бы одна инструкция или блок инструкций. Если в первой реализации не записать словоelseи пустую инструкцию вложенной инструкцииif, а во второй реализации не оформить эту вложенную инструкциюifв виде блока, то будет реализована схема совершенно другого алгоритма:
В программах очень часто используется многоуровневое вложение if– инструкции так называемой “лесенкой”, схема алгоритма которой выглядит так:
Подобные схемы можно использовать для множественного выбора, однако для реализации такой схемы более подходит инструкция, рассмотренная в следующем параграфе.