Лабораторная работа № 3
ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ
Цель работы: овладение практическими навыками разработки и программирования разветвляющихся процессов с использованием условных операторов (If...then... else... и Case).
Теоретические сведения
Операторы условного перехода позволяют выбрать для исполнения один из нескольких операторов-компонентов в зависимости от условия.
Синтаксис оператора If:
If A then ST1 else ST2,
где A – булевское выражение (возвращающее TRUE или FALSE); ST1, ST2 – операторы (возможно пустые или составные).
В блок-схемах оператор условного перехода реализуется следующей структурой (рис. 3.1).
Рис. 3.1. Структура оператора условного перехода в блок-схемах
Если значение выражения A – TRUE, то выполняется оператор ST1; если значение выражения A – FALSE, то выполняется оператор ST2. Затем в обоих случаях управление передается следующему оператору программы.
Допускается и краткая форма условного оператора:
где A – булевское выражение; ST – оператор (возможно составной).
В блок-схемах (рис. 3.2) краткая форма оператора условного перехода реализуется структурой, изображенной на рис. 3.2.
Рис. 3.2. Краткая форма оператора условного перехода в блок-схемах
Если значение A – TRUE, то выполняется оператор ST. Если значение A – FALSE, то управление передается оператору, следующему за оператором IF.
При написании программы не рекомендуется использовать многократно вложенные друг в друга условные операторы – программа становится громоздкой и трудно понимаемой. Считается, что число уровней вложения не должно превышать двух-трех. Но как быть, если необходимо проверять достаточно много условий и в зависимости от них выполнять те или иные действия? Для этих целей в языке ПаскальАВС существует специальный оператор выбора Case.
Синтаксис оператора выбора Case:
b: S2;
…
где Case («случай») – служебное слово;
P – переменная или выражение, называемое селектором или переключателем; a, b – константы выбора;
S1, S2, Sn, Sn+1 – операторы, могут быть и составными.
В блок-схемах (рис. 3.3) оператор Case реализуется следующей структурой:
При выполнении этого оператора сначала вычисляется некоторое выражение p, называемое селектором выбора, а затем в зависимости от полученного значения (если оно равно одной из констант a, b, …, n, которые называются константами выбора), выполняется один из операторов: S1, S2,…, Sn, помеченные соответствующей константой. Если значение выражения p не совпадает ни с одной из констант выбора, выполняется оператор Sn+1, содержащийся после ключевого слова else, причем ветвь else в операторе Case необязательна. Использованные здесь зарезервированные слова Case, of, else, end имеют смысл вариант, из, иначе, конец.
Выражение, играющее роль селектора, должно принадлежать порядковому типу данных (то есть типу, имеющему конечное число значений). Например: Integer, Boolean, Char.
Кроме одиночных констант, в вариантах оператора Case могут использоваться диапазоны значений и списки. Например:
1..5: S1;
2, 3, 8: S2; 4, 6, 9..13: S3 else S4
Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками – зарезервированными словами в языке ПаскальАВС – begin и end: begin S1; S2; ...; Sn end;
Поэтому приведенный оператор можно мысленно представить в таком виде: (S1; S2; … Sn). Составной оператор используется в том случае, если необходимо выполнить последовательность операторов внутри какой-либо конструкции как единое целое.
Примеры выполнения заданий
Пример 1. Составьте блок-схему (рис. 3.4) и напишите программу решения следующей задачи: определите большее из двух целых чисел X и Y.
PROGRAM Primer_1; var X : Integer; {Первый аргумент} Y:
Integer; {Второй аргумент} Bolshee:
Integer; {Результат}
BEGIN
Write ('Введите первое число: '); ReadLn (X);
Write ('Введите второе число: ');
ReadLn (Y); If X>=Y then Bolshee:=X else Bolshee:=Y;
WriteLn ('Результат: ', Bolshee) END.
Пример 2. Напишите программу решения следующей задачи:
определите пору года по номеру месяца. PROGRAM primer_2;
var mes:byte;
BEGIN
writeln ('Введите номер месяца '); readln (mes); case mes of 1,2,12: writeln ('Зима');
3..5: writeln ('Весна');
6..8: writeln ('Лето'); 9..11: writeln ('Осень'); end;
END.
Пример 3. Напишите программу, которая определяет число дней в месяце, если даны: номер месяца N – целое число от 1 до 12; целое число A, равное 1, если год високосный, и 0 – в противном случае. PROGRAM Primer_3;
var n,a,k:Integer;
BEGIN
writeln ('Введите номер месяца');
readln (n); case n of
1,3,5,7,8,10,12: begin k:=31; writeln (' в ', n, ' месяце ', k,' дней'); end;
4,6,9,11: begin k:=30; writeln (' в ', n, ' месяце ',k,' дней');end;
2: begin
writeln ('Если год високосный введите 1, иначе 0'); readln (a);
if a=1 then k:=29 else k:=28; writeln (' вo ', n, ' месяце ',k,' дней'); end else writeln ('Такого месяца нет'); end; END.
Пример 4. Составьте блок-схему (рис. 3.5) и напишите программу, переводящую школьные отметки в оценки. PROGRAM Primer_4; var BALL : Integer; BEGIN
Write ('Введите величину отметки: ');
Read (BALL);
WriteLn;
Case BALL of {Перевод отметки в оценку}
1: WriteLn ('Очень плохо...');
2: WriteLn ('Плохо...');
3: WriteLn ('Удовлетворительно');
4: WriteLn ('Хорошо!'); 5: WriteLn ('Отлично!') end; END.
Контрольные вопросы 1. Перечислите операторы условного перехода.
2. Синтаксис оператора IF.
3. Как работает оператор IF (полная форма)?
4. Краткая форма оператора IF.
5. Как работает оператор IF (краткая форма)?
6. Что представляет собой составной оператор?
7. В каком случае используется составной оператор?
8. Что такое операторные скобки?
45
9. Сколько допускается уровней вложенности условных операторов?
10. В каком случае применяется оператор выбора Case?
11. Код программы выглядит следующим образом: Case P of a: S1;
b: S2;
…
n: Sn else Sn+1 end; поясните что
обозначает: Case – ...; P – ...; a, b, …, n – ...;
S1, S2, Sn, Sn+1 – ...
12. Запишите синтаксис оператора выбора.
13. Как работает оператор выбора?
14. Какому типу данных должен принадлежать селектор?
15. Что может использоваться в вариантах оператора выбора?
16. Какая ветвь в операторе Case может отсутствовать?
17. Какому оператору передается управление после окончания работы условных операторов?
18. Объясните, в чем разница между операторами слева и справа. Каково будет итоговое значение переменной Х для каждого из них?
X:=1;
If X>=1 then X:=X+1
Else if X>=0 then X:=X+2;
X:=1;
If X>=1 then X:=X+1; if X>=0 then X:=X+2;
19. Перечислите операции отношения.
20. Перечислите логические операции.
21. Каков результат применения логической операции TRUE and TRUE = ...?
22. Каков результат применения логической операции TRUE and FALSE = ...?
23. Каков результат применения логической операции FALSE and TRUE = ...?
24. Каков результат применения логической операции FALSE and FALSE = ...?
25. Каков результат применения логической операции TRUE or TRUE = ...?
26. Каков результат применения логической операции TRUE or FALSE = ...?
27. Каков результат применения логической операции FALSE or TRUE = ...?
28. Каков результат применения логической операции FALSE or FALSE = ...?
29. Каков результат применения логической операции not TRUE = ...?
30. Каков результат применения логической операции not FALSE = ...?
1. В каждой задаче составьте блок-схему и напишите программу решения задач.
2. Оформите отчет по лабораторной работе, который должен состоять из следующих разделов: номера лабораторной работы и ее названия, условия каждой задачи, ее блок-схемы и программы.
1.
Вычислите значение выражения y = (используйте полную форму
оператора IF).
2. На трех бензоколонках имеется а, в, с литров бензина. На какую бензоколонку вести новую партию бензина? (Используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано трехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа цифра 5?
4. 1 января 2006 года было в воскресенье. Введите любую дату января 2006 года. Определите, на какой день недели эта дата приходится (используйте оператора Case).
1.
Вычислите значение выражения y (используйте полную форму оператора IF).
2. В трех магазинах один и тот же товар имеет разные цены: в первом магазине а руб., во втором – b руб., в третьем – с руб. Определите в каком магазине товар самый дешевый (используйте сложное логическое выражение и неполную форму оператора IF).
3. Студент сдал четыре экзамена и получил соответственно а, b, с, d баллов по каждому из них. Ответьте на вопрос, средний балл студента меньше 8 или нет?
4. 31 декабря 2005 года было в субботу. Введите любую дату декабря 2005 года. Определите, на какой день недели эта дата приходится (используйте оператор Case)?
1.
Вычислите значение выражения у = 𝑥2+4 (используйте
полную
𝑥−6
форму оператора IF).
2. В трех магазинах один и тот же товар имеет разные цены: в первом магазине а руб., во втором – b руб., в третьем – с руб. Определите, в каком магазине товар самый дорогой (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано четырехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа цифра 0?
4. Введите номер месяца. Дайте этому месяцу наименование (используйте оператор Case).
1.
Вычислите значение выражения y (используйте полную
форму оператора IF).
2. Дан рост трех человек: первого – х см, второго – у см, третьего – z см. Определите самого высокого (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано трехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа четные цифры?
4. Введите номер месяца 2006 года. Определите, сколько дней в этом месяце (используйте оператор Case).
1. Имеются два человека: у одного вес х пудов, у второго – у фун- тов. Кто из них тяжелее? (используйте полную форму оператора
IF).
2. Дан рост трех человек: первого – х см, второго – у см, третье- го – z см. Определите самого низкого (используйте сложное логиче- ское выражение и неполную форму оператора IF).
3. Дано трехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа нечетные цифры?
4. Введите номер месяца. Определите время года, которому он соответствует (используйте оператор Case).
1. Известно, что 500 саженей = 3500 футов = 1066,8 м. С клавиатуры введите х саженей, у футов. Какое из этих значений меньшее? (используйте полную форму оператора IF).
2. Дан вес трех человек: первого – х кг, второго – у кг, третьего – z кг. Определите самого легкого человека (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано четырехзначное целое число А. Ответьте на вопрос, превосходит ли сумма цифр этого числа данное число Х.
4. Известно, что 2006 год – год Собаки. Введите номер года от 2000 до 2023. Определите, какой это год по китайскому календарю (используйте оператор Case). Справка. Знаки идут в следующем порядке: Крыса, Бык, Тигр, Кот, Дракон, Змея, Лошадь, Коза, Обезьяна, Петух, Собака, Свинья.
1.
Вычислить значение выражения y (используйте полную
форму оператора IF).
Даны оценки по одному экзамену трех студентов: первый получил а баллов, второй – в баллов, третий – с баллов. Определите, кто сдал экзамен лучше всех (используйте сложное логическое выражение и неполную форму оператора IF).
2. Дано четырехзначное целое число А. Найдите сумму нечетных и сумму четных цифр этого числа. Ответьте на вопрос, какая из найденных сумм больше?
3. Имеется N корзин количеством от 30 до 50. Дайте этому количеству корзин правильное наименование (используйте оператор Case).
1. Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка 1 координатной четверти (используйте полную форму оператора IF).
2. Студент сдал четыре экзамена и получил соответственно a, b, c, d баллов по каждому из них. Какой предмет он сдал лучше других? (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано трехзначное целое число А. Ответьте на вопрос, равны ли первая и последняя цифра этого числа?
4. Имеется стадо из N слонов от 15 до 30 штук. Дать числу N правильное наименование от слова «слон» (используйте оператор Case).
1. Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка какой-нибудь оси координат (используйте полную форму оператора IF).
2. В магазине имеется три вида товара: а, в, с. Определите, какой вид товара необходимо завести в магазин (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано трехзначное целое число А. Ответьте на вопрос, равны ли последняя и средняя цифра этого числа?
4. В библиотеке одного человека имеется N книг от 20 до 50.
Дайте этому количеству книг правильное наименование от слова
«книга» (используйте оператор Case).
1. Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка 2 координатной четверти (используйте полную форму оператора IF).
2. В магазине имеется три вида товара: а, в, с. Определите, какой вида товара больше всего (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано трехзначное целое число А. Ответьте на вопрос, равны ли первая и средняя цифра этого числа?
4. 1 марта 2006 года – это день недели среда. Введите любую дату марта 2006 года. Определите день недели (используйте оператор Case).
1. Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка 3 координатной четверти (используйте полную форму оператора IF).
2. Студент сдал четыре экзамена и получил соответственно a, b, c, d баллов по каждому из них. Какой предмет он сдал хуже остальных? (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано трехзначное целое число А. Ответьте на вопрос, равны ли последняя и средняя цифра этого числа?
4. 1 мая 2006 года – понедельник. Введите любую дату месяца мая. Определите день недели (используйте оператор Case).
1. Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка какой-нибудь оси координат (используйте полную форму оператора IF).
2. Студент сдал четыре экзамена и получил соответственно a, b, c, d баллов по каждому из экзаменов. Какой предмет он сдал лучше остальных? (используйте сложное логическое выражение и неполную форму оператора IF).
3. Дано четырехзначное целое число А. Ответьте на вопрос, равны ли последняя и вторая цифра этого числа?
4. Имеется N парт количеством от 1 до 30. Дайте этому количеству парт правильное наименование (используйте оператор Case).
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.