Программирование алгоритмов разветвляющейся структуры

  • pdf
  • 14.08.2025
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Лаб.работа №3 Программирование алгоритмов разветвляющейся структуры.pdf

Лабораторная работа № 3

 

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ

РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ

Цель работы: овладение практическими навыками разработки и программирования разветвляющихся процессов с использованием условных операторов (If...then... else... и Case).

 

Теоретические сведения

 

Оператор условного перехода If

Операторы условного перехода позволяют выбрать для исполнения один из нескольких операторов-компонентов в зависимости от условия.

Синтаксис оператора If:

                                                          If A then ST1      else ST2,

где A – булевское выражение (возвращающее TRUE или FALSE); ST1, ST2 – операторы (возможно пустые или составные).

В блок-схемах оператор условного перехода реализуется следующей структурой (рис. 3.1).

 

 

Рис. 3.1. Структура оператора условного перехода в блок-схемах

 

Если значение выражения A – TRUE, то выполняется оператор ST1; если значение выражения A – FALSE, то выполняется оператор ST2. Затем в обоих случаях управление передается следующему оператору программы.

Допускается и краткая форма условного оператора:

            If A         then ST;

где A – булевское выражение; ST – оператор (возможно составной).

В блок-схемах (рис. 3.2) краткая форма оператора условного перехода реализуется структурой, изображенной на рис. 3.2.

             

 

 

Рис. 3.2. Краткая форма оператора условного перехода в блок-схемах

 

Если значение A – TRUE, то выполняется оператор ST. Если значение A – FALSE, то управление передается оператору, следующему за оператором IF.

 

Оператор выбора Case

При написании программы не рекомендуется использовать многократно вложенные друг в друга условные операторы – программа становится громоздкой и трудно понимаемой. Считается, что число уровней вложения не должно превышать двух-трех. Но как быть, если необходимо проверять достаточно много условий и в зависимости от них выполнять те или иные действия? Для этих целей в языке ПаскальАВС существует специальный оператор выбора Case.

Синтаксис оператора выбора Case:

 

Case P of a: S1;

b: S2;

n: Sn  else Sn+1 ; end;

где 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 могут использоваться диапазоны значений и списки. Например:

Case x of

1..5: S1;

2, 3, 8: S2; 4, 6, 9..13: S3 else S4

end;

Составной оператор

Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками – зарезервированными словами в языке ПаскальАВС – 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

1.                        Вычислите значение выражения y = (используйте полную форму оператора IF). 

2.                        На трех бензоколонках имеется а, в, с литров бензина. На какую бензоколонку вести новую партию бензина? (Используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано трехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа цифра 5?

4.                        1 января 2006 года было в воскресенье. Введите любую дату января 2006 года. Определите, на какой день недели эта дата приходится (используйте оператора Case).

 

Вариант № 2

1.                        Вычислите значение выражения y (используйте полную форму оператора IF).

2.                        В трех магазинах один и тот же товар имеет разные цены: в первом магазине а руб., во втором – b руб., в третьем – с руб. Определите в каком магазине товар самый дешевый (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Студент сдал четыре экзамена и получил соответственно а, b, с, d баллов по каждому из них. Ответьте на вопрос, средний балл студента меньше 8 или нет?

4.                        31 декабря 2005 года было в субботу. Введите любую дату декабря 2005 года. Определите, на какой день недели эта дата приходится (используйте оператор Case)?

 

Вариант № 3

 

 

1.                        Вычислите значение выражения у = 𝑥2+4 (используйте полную

𝑥−6

форму оператора IF).

2.                        В трех магазинах один и тот же товар имеет разные цены: в первом магазине а руб., во втором – b руб., в третьем – с руб. Определите, в каком магазине товар самый дорогой (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано четырехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа цифра 0?

4.                        Введите номер месяца. Дайте этому месяцу наименование (используйте оператор Case).

 

Вариант № 4

1.                        Вычислите значение выражения y (используйте полную форму оператора IF).

2.                        Дан рост трех человек: первого – х см, второго – у см, третьего – z см. Определите самого высокого (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано трехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа четные цифры?

4.                        Введите номер месяца 2006 года. Определите, сколько дней в этом месяце (используйте оператор Case).

 

Вариант № 5

1.                        Имеются два человека: у одного вес х пудов, у второго – у фун- тов. Кто из них тяжелее? (используйте полную форму оператора

IF).

2.                        Дан рост трех человек: первого – х см, второго – у см, третье- го – z см. Определите самого низкого (используйте сложное логиче- ское выражение и неполную форму оператора IF).

3.                        Дано трехзначное целое число А. Ответьте на вопрос, есть ли в записи этого числа нечетные цифры?

4.                        Введите номер месяца. Определите время года, которому он соответствует (используйте оператор Case).

 

Вариант № 6

1.                        Известно, что 500 саженей = 3500 футов = 1066,8 м. С клавиатуры введите х саженей, у футов. Какое из этих значений меньшее? (используйте полную форму оператора IF).

2.                        Дан вес трех человек: первого – х кг, второго – у кг, третьего – z кг. Определите самого легкого человека (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано четырехзначное целое число А. Ответьте на вопрос, превосходит ли сумма цифр этого числа данное число Х.

4.                        Известно, что 2006 год – год Собаки. Введите номер года от 2000 до 2023. Определите, какой это год по китайскому календарю (используйте оператор Case). Справка. Знаки идут в следующем порядке: Крыса, Бык, Тигр, Кот, Дракон, Змея, Лошадь, Коза, Обезьяна, Петух, Собака, Свинья.

 

Вариант № 7

1.                        Вычислить значение выражения y  (используйте полную форму оператора IF).

Даны оценки по одному экзамену трех студентов: первый получил а баллов, второй – в баллов, третий – с баллов. Определите, кто сдал экзамен лучше всех (используйте сложное логическое выражение и неполную форму оператора IF).

2.                        Дано четырехзначное целое число А. Найдите сумму нечетных и сумму четных цифр этого числа. Ответьте на вопрос, какая из найденных сумм больше?

3.                        Имеется N корзин количеством от 30 до 50. Дайте этому количеству корзин правильное наименование (используйте оператор Case).

Вариант № 8

1.                        Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка 1 координатной четверти (используйте полную форму оператора IF).

2.                        Студент сдал четыре экзамена и получил соответственно a, b, c, d баллов по каждому из них. Какой предмет он сдал лучше других? (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано трехзначное целое число А. Ответьте на вопрос, равны ли первая и последняя цифра этого числа?

4.                        Имеется стадо из N слонов от 15 до 30 штук. Дать числу N правильное наименование от слова «слон» (используйте оператор Case).

 

Вариант № 9

1.                        Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка какой-нибудь оси координат (используйте полную форму оператора IF).

2.                        В магазине имеется три вида товара: а, в, с. Определите, какой вид товара необходимо завести в магазин (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано трехзначное целое число А. Ответьте на вопрос, равны ли последняя и средняя цифра этого числа?

4.                        В библиотеке одного человека имеется N книг от 20 до 50.

Дайте этому количеству книг правильное наименование от слова

«книга» (используйте оператор Case).

 

Вариант № 10

1.                        Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка 2 координатной четверти (используйте полную форму оператора IF).

2.                        В магазине имеется три вида товара: а, в, с. Определите, какой вида товара больше всего (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано трехзначное целое число А. Ответьте на вопрос, равны ли первая и средняя цифра этого числа?

4.                        1 марта 2006 года – это день недели среда. Введите любую дату марта 2006 года. Определите день недели (используйте оператор Case).

 

Вариант № 11

1.                        Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка 3 координатной четверти (используйте полную форму оператора IF).

2.                        Студент сдал четыре экзамена и получил соответственно a, b, c, d баллов по каждому из них. Какой предмет он сдал хуже остальных? (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано трехзначное целое число А. Ответьте на вопрос, равны ли последняя и средняя цифра этого числа?

4.                        1 мая 2006 года – понедельник. Введите любую дату месяца мая. Определите день недели (используйте оператор Case).

 

Вариант № 12

1.                        Даны координаты точки А(х1, у1). Определите, принадлежит ли эта точка какой-нибудь оси координат (используйте полную форму оператора IF).

2.                        Студент сдал четыре экзамена и получил соответственно a, b, c, d баллов по каждому из экзаменов. Какой предмет он сдал лучше остальных? (используйте сложное логическое выражение и неполную форму оператора IF).

3.                        Дано четырехзначное целое число А. Ответьте на вопрос, равны ли последняя и вторая цифра этого числа?

4.                        Имеется N парт количеством от 1 до 30. Дайте этому количеству парт правильное наименование (используйте оператор Case).