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




 

Цель работы – ознакомление с особенностями программирования алгоритмов разветвленной структуры, а также использования различных операторов перехода.

 

2.1 Алгоритмы разветвленной структуры. Операторы перехода и выбора

Ветвящимся (разветвленным) называется алгоритм, в котором в зависимости от исходных данных или промежуточных результатов вычисления реализуется по одному из нескольких заранее предусмотренных (возможных) направлений, называемых ветвями вычислений.

Оператор условного перехода реализует разветвление алгоритма и применяется, когда в зависимости от условия необходимо выполнить либо одно, либо другое действие. В качестве условий используются логические отношения. Логические отношения представляют собой записи равенств и неравенств: <, >, =, <=, >=,<> (не равно), AND (логическое "и"), OR (логическое "или"). В Паскале оператор условного перехода имеет две конструкции (таблица D1).

В Паскале принят порядок выполнения операторов согласно их следованию в программе. Если необходимо обойти какую-то группу операторов, то используется оператор безусловного перехода, который в блок-схеме отображается в виде стрелки, а не отдельного блока (таблица D1). Метка, используемая в операторе, показывает, что дальнейшая работа должна проводиться в другой части программы, с той строки, на которую она указывает и должна быть предварительно описана в разделе Label (например, Goto NM;). Этот оператор используется только в исключительных ситуациях, поскольку такие переходы разрушают связи между структурой программы и структурой вычислений, что приводит к потере ясности программы и затрудняет задачу верификации (доказательства правильности составления программы).

Кроме оператора безусловного перехода, в Турбо Паскале 7.0 иногда используются четыре безусловные функции:

- Break – позволяет досрочно закончить цикл;

- Continue – позволяет начать новую итерацию цикла, не дожидаясь окончания предыдущей итерации;

- Exit – позволяет завершить работу текущего программного блока (программу, процедуру);

- Halt(n) – позволяет завершить работу программы с кодом завершения n.

К операторам разветвляющейся структуры относится также оператор выбора (варианта), позволяющий программировать сложные ветвления, когда имеется несколько (обычно равновероятных) вариантов действия (таблица D1).

 

2.2 Примеры решений задач разветвленной структуры

2.2.1 Вычислить

На рисунке 2.1 представлена блок-схема и программа для решения данной задачи. В блоке 4 производится ввод значения х из какого-либо одного заданного интервала. В блоках 5 и 6 осуществляется проверка условий принадлежности х к одному из интервалов. Если х <0 (блок 5), то вычисления производятся по формуле в блоке 7, если нет, то проверяется условие х =0. Если это условие выполнено, то для вычисления у используется блок 8, иначе - блок 9. Независимо от того, по какой формуле осуществлено вычисление, следующее действие - вывод вычисленного значения у. Блоки 2, 3, 11, 12 используются для организации многократного ввода различных значений х, что называется зацикливанием. Блоки 5, 6, 12 реализуются в программе операторами условного перехода, а блоки 3, 7, 8, 9, 11 – операторами присваивания. В качестве аналогов блоков 2, 4, 10 в программе используются процедуры ввода-вывода.

 

Program primer2_1; Label m1; Var i, n:integer; x, y:real; Begin Write(‘Введи N’); Read(n); i:=1; m1: Write(‘Введи x’); Read(x); If x<0 then y:=exp(x) else if(x>=0)and(x<=1) then y:=0 else y:=sin (x); write (‘Y=’,y:10:3); i:=i+1; if i<=n then goto m1 end.  

 

Рисунок 2.1 - Блок-схема алгоритма и программа разветвленной структуры

 

2.2.2 В старояпонском календаре принят 60-летний цикл, состоящий из пяти 12-летних малых циклов. Малые циклы обозначаются названиями цвета. Внутри каждого малого цикла годы носят названия животных. Определить название заданного года нашей эры по японскому календарю. Так как в данном случае блок-схема получается достаточно громоздкой, ниже приведена только программа решения задачи.

Program primer2_2;

Var year, i, k: integer;

Begin

Write ('Введите год'); Read (year); Write (‘- the year of the ‘);

i:= (year-3) mod 12; k:= (3010 – year) mod 60 div 12;

Case k of

0: writе ('green ');

1: write ('red ');

2: write ('yellow ');

3: write ('white ');

4: write ('black ');

end;

Case i of

1: Writeln ('rat'); {крыса}

2: Writeln ('bull'); {бык}

3: Writeln ('tiger'); {тигр}

4: Writeln ('rabbit'); {кролик}

5: Writeln ('dragon'); {дракон}

6: Writeln ('snake'); {змея}

7: Writeln ('horse'); {лошадь}

8: Writeln ('sheep'); {овца}

9: Writeln ('monkey'); {обезьяна}

10: Writeln ('hen'); {петух}

11: Writeln ('dog'); {собака}

0: Writeln ('pig'); {свинья}

end;

end.

 

2.3 Варианты заданий

2.3.1 Составить блок-схему и программу разветвляющейся структуры для вычисления заданной функции.

1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
25 26
27 28
29 30

2.3.2 Составить программу решения задачи, используя оператор выбора

1 Определить время года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.

2 Определить знаки координат точки по вводимому номеру квадранта. В случае если пользователь укажет недопустимый номер, повторить попытку ввода.

3 Определить квартал текущего года по вводимому номеру месяца. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.

4 Вводится ответ на вопрос "Язык общения? русский (р) / английский (а)". Если введено "р", то вывести "Привет!", если введено "а", то вывести "Hello!". В остальных случаях вывести "Повторите ввод".

5 Вводится ответ на вопрос "Продолжить работу? да (1) / нет (0)". Если введено "1", то вывести "Я готов к работе", если введено "0", то вывести "Работа завершена".

6 Вводится целое число. Если введено "1", то вывести "понедельник". Если введено "2", то вывести "вторник" и т.д. В остальных случаях - "Повторите попытку ввода".

7 Вводится целое число от 2 до 5. Если введено "2", то вывести "неудовлетворительно". Если введено "3", то вывести "удовлетворительно" и т.д. В остальных случаях - "Такой оценки не существует".

8 Вводится символ. Если этот символ равен "***", то вывести "Осадки в виде снега". Если - ":::", то - "Осадки в виде дождя". В остальных случаях - "Безоблачно".

9 Ввести целое число. Если введено "0", то вывести "незачет", если введено "1", то вывести "зачет". В остальных случаях вывести "Повторите ввод".

10 По вводимому номеру вывести название ноты: 1-"до", 2-"ре", 3-"ми", 4-"фа", 5-"соль", 6-"ля", 7-"си". В остальных случаях - "Нота не определена".

11 По вводимому номеру вывести название цвета: 1-"красный", 2-"оранжевый", 3-"желтый", 4-"зеленый", 5-"голубой", 6-"синий", 7-"фиолетовый". В остальных случаях - "Цвет не определен".

12 По вводимому номеру вывести название времени года: 1-"зима", 2-"весна", 3-"лето", 4-"осень". В остальных случаях - "Время года не определено".

13 Вывести название месяца, если вводится его номер. В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.

14 Вводится целое число от 1 до 10. Если введено "1", то вывести "Средний возраст учеников - 7 лет". Если введено "2", то вывести "Средний возраст учеников - 8 лет" и т.д.

15 Даны два числа. Ввести целое число n. Если n=1, то найти минимум этих двух чисел. Если n=2, то найти максимум этих чисел. В остальных случаях повторить ввод n.

16 Вводится символ. Если этот символ равен "я", то вывести "январь". Если - "ф", то - "февраль". Если - "д", то - "декабрь". В остальных случаях - "Зимний месяц не определен".

17 Вводится символ. Если этот символ равен "с", то вывести "сентябрь". Если - "о", то - "октябрь". Если - "н", то - "ноябрь". В остальных случаях - "Осенний месяц не определен".

18 Вводится целое число n (1£n£5), выводится n звездочек (*). В остальных случаях повторить ввод n.

19 По вводимому значению n (1£n£5) вывести наименование геометрической фигуры 1-"точка", 2-"прямая", 3-"треугольник", 4-"квадрат", 5-"пентагон". В остальных случаях повторить ввод n.

20 Дано натуральное число n (1£n£10). Вывести фразу "Мы нашли n грибов (гриб, гриба), используя правильный падеж существительного "гриб".

21 По вводимому номеру вывести название дня недели 1-"понедельник", 2-"вторник", 3-"среда", 4-"четверг", 5-"пятница", 6-"суббота", 7-"воскресенье". В остальных случаях повторить попытку ввода.

22 По вводимому номеру вывести наименование пальцев руки 1-"мизинец", 2-"безымянный", 3-"средний", 4-"указательный", 5-"большой". В остальных случаях повторить попытку ввода.

23 По вводимому номеру вывести результаты спортивных соревнований 1-"золотая медаль", 2-"серебряная медаль", 3-"бронзовая медаль", 4-"утешительный приз". В остальных случаях повторить попытку ввода.

24 По вводимому номеру вывести наименование типов темперамента 1-"сангвиник", 2-"флегматик", 3-"меланхолик", 4-"холерик". В остальных случаях повторить попытку ввода.

25 По вводимому номеру вывести наименование пяти чувств 1-"зрение", 2-"слух", 3-"обоняние", 4-"осязание", 5-"вкус". В остальных случаях повторить попытку ввода.

26 В зависимости от количества участников вывести название музыкальных ансамблей 1-"соло", 2-"дуэт", 3-"трио", 4-"квартет", 5-"квинтет", 6-"сикстет", 7-"октет". В остальных случаях повторить попытку ввода.

27 По вводимому номеру вывести наименование одного из факультетов АИЭС 1-"ТЭФ", 2-"ЭЭФ", 3-"ФРТС", 4-"ФЗО и ПС", 5-"ФДП". В остальных случаях повторить попытку ввода.

28 Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье". Если пользователь укажет недопустимый номер, то повторить попытку ввода.

29 Написать программу, которая подводит итоги экзамена. При вводе кода 0 вывести "неявка"; 1 - "неудовлетворительно"; 2,3,4 -"удовлетворительно"; 5,6,7 - "хорошо"; 8,9 -"отлично"; 10 -"не допущен". В случае если пользователь укажет недопустимый номер, то повторить попытку ввода.

30 Дано натуральное число n (1 £ n £ 10). Вывести фразу "n рублей (рубль, рубля), используя правильный падеж существительного "рубль".

 

 

2.4 Контрольные вопросы

1 Какие логические отношения используются в Паскале?

2 Какие функции выполняет оператор условного перехода?

3 Чем отличаются полная и краткая формы оператора условного перехода?

4 Как изображается на блок-схеме оператор условного перехода?

5 Какую функцию выполняет оператор безусловного перехода?

6 Как изображается на блок-схеме оператор безусловного перехода?

7 Какие особенности характерны для оператора выбора?

8 Как можно изобразить на блок-схеме оператор выбора?

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: