§ 4. Оператор ветвления
Сайт: | Профильное обучение |
Курс: | Информатика. 10 класс (Повышенный уровень) |
Книга: | § 4. Оператор ветвления |
Напечатано:: | Гость |
Дата: | Суббота, 21 Декабрь 2024, 15:17 |
4.1. Запись оператора ветвления
Для записи оператора ветвления используется команда if. Формат команды: if ( <условие> ) { Оператор ветвления может быть в полной или сокращенной формах. В сокращенной форме отсутствует блок else: if ( <условие> ) { Условие в записи оператора ветвления может быть простым и составным. Фигурные скобки могут быть опущены, если внутри них находится одна команда. Использование управляющих конструкций в программе предполагает ее запись в структурированном виде. Структурированность программ достигается за счет отступов, регулирующих размещение вложенных алгоритмических конструкций. Пример 4.1. Задано число x. Определить, является оно положительным или нет. Вывести соответствующее сообщение. Этапы выполнения задания I. Исходные данные: x (введенное число). II. Результат: соответствующее сообщение. III. Алгоритм решения задачи. 1. Ввод исходных данных. |
Можно соблюдать следующее правило: при движении курсора вниз от «начала» структуры до ее «конца» на пути курсора могут встретиться только пробелы. Все, что находится «внутри» структуры, размещается правее. На практике чаще всего пользуются одним из двух правил расстановки фигурных скобок в управляющих конструкциях:
Пример 4.1. V. Программа:
VI. Тестирование. Для x = 5: Для x = –1: VII. Анализ результатов. Для полной проверки программы требуется еще проверить значение x = 0. |
4.2. Решение задач с использованием оператора ветвления
Пример 4.2. Таня и Катя живут в разных домах. Им стало интересно, кто из них живет ближе к школе. Они разместили на карте прямоугольную систему координат так, чтобы школа имела координаты (0, 0). Известно, что Танин дом имеет координаты (x1; y1), а Катин — (x2; y2). Девочки ходят в школу по прямой и проходят разные расстояния. Написать программу, которая определит, чей дом ближе к школе. Этапы выполнения задания I. Исходные данные: координаты домов девочек x1, y1, x2, y2. II. Результат: сообщение о том, чей дом ближе. III. Алгоритм решения задачи. 1. Ввод координат домов. и
3. Сравнение расстояний и вывод ответа IV. Описание переменных: x1, y1, x2, y2, r_T, r_K — тип double. Пример 4.3. Проверить является ли введенное число трехзначным, и если да, то вывести четные цифры этого числа. Этапы выполнения задания I. Исходные данные: a (трехзначное число). II. Результат: переменные a1, a2, a3 (цифры числа) или сообщения: «не трехзначное», «нет четных цифр». III. Алгоритм решения задачи. 1. Ввод исходного числа. 3.1. Для выделения первой цифры a1 находим целую часть от деления числа a на 100. 4. Вывод результата. IV. Описание переменных: a, a1, a2, a3 – int. Пример 4.4. Вычислить значение функции для заданного x.
Этапы выполнения задания I. Исходные данные: переменная x (значение переменной). II. Результат: переменная f (значение функции). III. Алгоритм решения задачи. 1. Ввод исходных данных. 2.1. Сначала проверим истинность условия x < –2. Если оно истинно, то вычислим значение функции по формуле f = x – 2. Иначе (это значения, для которых x ≥ –2) проверим следующее условие. 3. Вывод результата. IV. Описание переменных: x, f — double. Пример 4.5. Определить, принадлежит ли точка a(x, у) данной области.
Этапы выполнения задания I. Исходные данные: переменные x и y (координаты точки). II. Результат: слово «да» или «нет» в зависимости от принадлежности точки закрашенной области. III. Алгоритм решения задачи. 1. Ввод исходных данных. 3. Вывод результата. IV. Описание переменных: x, y – double. |
Пример 4.2. V. Программа:
VI. Тестирование. Танин дом — x1 = 2.3, y1 = 4.5, Катин дом — x2 = −2.1, y2 = 4.9. Результат: Танин дом — x1 = −6.1, y1 = 4.5, Катин дом — x2 = −1.71, y2 = −3.2. Результат: Пример 4.3. V. Программа:
VI. Тестирование. Результат для значения 345: Другие варианты исходных данных VII. Анализ результатов. Для полной проверки программы требуется еще проверить значения, в которых цифр меньше трех, содержащие 1 четную цифру (на разных позициях), две четные цифры. Пример 4.4. V. Программа:
V. Тестирование: VI. Анализ результатов. Число 5 больше 2, поэтому вычисление значения функции происходит по формуле Для числа −0.3 вычисления происходят по формуле . Полная проверка программы требует ввести значения, принадлежащие каждому из указанных в условии промежутков. Пример 4.5. V. Программа:
VI. Тестирование: VII. Анализ результатов. Полная проверка программы требует ввести значения, принадлежащие каждой из областей, которые образуются при пересечении прямых. |
4.3. Оператор множественного выбора
Оператор if позволяет выбирать один из двух альтернативных вариантов. Если требуется выбор из трех и более вариантов, то использование нескольких операторов if может ухудшать читаемость кода программы. В С++ еще имеется оператор множественного выбора switch, который позволяет выбрать один вариант из нескольких в зависимости от значения выражения и обеспечивает множественное разветвление в программе. Часто использование оператора switch более эффективно, чем использование нескольких операторов if. Формат команды: switch ( <переменная> ) { case константа1: { команда(ы)1 break; } case константа2: { команда(ы)2 break; } ... default: { команда(ы)n break; } } Переменная поочередно сравнивается со значениями констант, описанными после ключевого слова case. После двоеточия находится код, который будет выполнен в случае, если переменная оказалась равной текущему значению. Команда break необходима для того, чтобы прервать выполнение switch и не проверять переменную на совпадение с оставшимися значениями. В блоке default прописываются команды, которые будут выполняться в том случае, когда ни одного совпадения переменной с перечисленными значениями не было обнаружено. Этот блок может быть опущен. Фигурные скобки могут быть опущены, если в блоке выполняется только одна команда. Пример 4.6. Дано значение n (1 ≤ n ≤ 7), являющееся номером дня недели. Написать программу, которая определит по значению n, выходной этот день или рабочий. Этапы выполнения задания I. Исходные данные: n (номер дня недели). II. Результат: сообщения — «рабочий», «выходной» или «ошибочный номер». III. Алгоритм решения задачи. 1. Ввод исходного числа. 2.1. Если значения n — 1, 2, 3, 4, 5 — выводится сообщение «рабочий». 3. Вывод результата. VI. Описание переменных: n – int. |
Нужно помнить о некоторых особенностях оператора switch:
С технической точки зрения операторы break являются необязательными в операторе switch. Они используются для окончания работы последовательности команд, относящихся к одному блоку, в котором произошло совпадение значения переменной со значением константы. Если оператор break отсутствует, то после того, как было обнаружено совпадение, будут выполнены все остальные команды для каждого выбора, описанного после совпадения. Сравнения не происходят, а команды выполняются последовательно. Пример 4.6. V. Программа:
VI. Тестирование: |
Вопросы к параграфу
1. Что такое оператор ветвления? 2. Чем отличается полная запись оператора ветвления от сокращенной? 3. Можно ли использовать составные условия в операторе ветвления? 4. Как записывается оператор множественного выбора? |
Упражнения
1. Можно ли изменить логическое выражение в операторе ветвления в примере 4.1 так, чтобы сообщения "pologitelnoe" и "ne pologitelnoe" пришлось поменять местами? Если да, то как это сделать?
2*. Какие изменения нужно внести в программу примера 4.1, чтобы рассматривались три случая: "pologitelnoe", "otricatelnoe", "ravno 0"?
3. Добавьте в программу примера 4.2 проверку корректности исходных данных: координаты домов должны быть такими, чтобы расстояния до школы были различными. Если расстояния одинаковы, то вывести сообщение 'Координаты введены неверно', а если разные, то вывести ответ.
4. Какие изменения понадобится внести в программу примера 4.2, если допустить, что девочки могут проходить одинаковые расстояния? Внесите изменения в программу и проверьте правильность ее работы.
5. Как известно, многие задачи имеют не единственное решение. Так, Юля нашла другой способ вычисления второй цифры трехзначного числа для примера 4.3. Какую из команд использовала Юля? Объясните, что получится при выполнении каждой из приведенных команд.
1. a2 = a % 2. 10 / 10; a2 = a / 100 % 10; 3. a2 = a % 100 / 10;
6. Петя решил усовершенствовать программу примера 4.3 и проверку цифр в числе записал следующим образом:
if ( a1 % 2 == 0)
cout << a1 << endl;
else
if (a2 % 2 == 0)
cout << a2 << endl;
else
if (a3 % 2 == 0)
cout << a3 << endl;
else
cout << "net takih" << endl;
Почему Петина отметка оказалась невысокой? Приведите примеры, для которых программа выдает неправильный ответ. Если такое возможно, то приведите примеры, когда программа выдает правильный ответ.
7. Дано натуральное число. Напишите программу, которая проверит, является ли оно трехзначным и кратна ли 7 сумма его цифр.
8. Дано натуральное число. Напишите программу, которая проверит, является ли оно четырехзначным и расположены ли его цифры в порядке убывания.
9. Дано натуральное число. Напишите программу, которая проверит, является ли число шестизначным «счастливым» (т. е. сумма первых трех цифр числа равна сумме последних трех).
10. Запишите функцию, значение которой вычисляется с помощью предложенного фрагмента программы:
if (x < –3)
y = -x;
else
if (x < 0)
y = 0;
else
y = x * x;
11. Напишите программу для вычисления значения функций.
1. 2.
3. 4.
12. Напишете программу, которая проверит, принадлежит ли точка а(x, у) области.
1. |
2. |
3. |
|||
4. |
5. |
6. |
13. Напишите программу, которая определит, имеется ли среди чисел a, b, c хотя бы одна пара равных между собой чисел. Указать, какие числа равны.
14. Напишите программу, которая определит является ли треугольник со сторонами a, b, c равнобедренным. Если да, то программа должна указать, какая из сторон является основанием, а какие — боковыми сторонами.
15. Дан номер года. Напишите программу, которая определит — является ли он високосным (год является високосным, если его номер делится на 4, за исключением тех, которые делятся на 100 и не делятся на 400).
16. Напишите программу, которая найдет количество точек пересечения прямой
y = kx + b и окружности x2 + y2 = r2. Значения k, b, r вводятся.
17*. Даны действительные числа x1, y1, x2, y2, x3, y3, являющиеся координатами вершин треугольника. Напишите программу, которая определит, лежит ли начало координат внутри этого треугольника.
18. Вводится число от 1 до 4, определяющее пору года. Напишите программу, которая выведет название этой поры года (1 — зима, 2 — весна, 3 — лето, 4 — осень). Использовать оператор switch.
19. Дано натуральное число N (N < 20), определяющее сумму денег в рублях. Напишите программу, которая выведет для этого числа наименование: «рубль», «рубля», «рублей».
20*. Вводится число от 1 до 100. Напишите программу, которая выведет название этого числа (1 — один, 2 — два, ..., 100 — сто).