Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_1.doc
Скачиваний:
15
Добавлен:
18.09.2019
Размер:
1.64 Mб
Скачать

4.Структуры с ветвлениями

Подготовка к работе

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

  • условной и безусловной передачи управления;

  • вычислительного процесса с разветвляющейся структурой.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программы решения задач.

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

  1. Какие структуры вычислительных процессов Вы знаете?

  2. Как организовать разветвление вычислений?

  3. Условный оператор if...then...else.

  4. Условный оператор if...then.

  5. Вложенные условные операторы.

  6. Оператор выбора case …of.

Задания к работе

  1. Вычислить значения функции по варианту задания из табл. 4 .3. Вывести значения исходных данных и полученные результаты, сопровождая их именами переменных. Значения аргумента взять из указанного диапазона так, чтобы протестировать все ветви программы. Проект – консольное приложение.

  2. Вывести сообщения для дней недели с использованием оператора выбора. Проект – консольное приложение.

табл. 4.3. Варианты заданий

Функции и условия

Данные

Диапазон

1

a = -0.5

b = 2

t = [0 .. 3]

шаг 0.25

2

a = 1.5

x= [0.8 .. 2.8]

шаг 0.25

3

a = 2.8

b = -0.3

c = 4

x = [1 .. 2]

шаг 0.25

4

a = 1.65

b = 1.1

x = [0.5 .. 2]

шаг 0.25

5

a = 2.3

x = [0.2 .. 3]

шаг 0.4

6

a = 2.5

x =[1 .. 2.5]

шаг 0.25

7

b = 1.5

x = [0.5 .. 3]

шаг 0.25

8

x = [2 .. 5]

шаг 0.25

9

a = 20.3

x = [0.5 .. 2]

шаг 0.25

10

a = 0.9

x = [0.5 .. 2]

шаг 0.5

11

t = 2.2

x = [0 .. 2]

шаг 0.25

12

a = 2.6

b = - 0.4

x = [0 .. 6]

шаг 1

13

a = 2.1

b = 1.8

c = -20.5

i = [0 .. 8]

шаг 1

14

a = 2.5

n = 10

i = [1 .. 2.5]

шаг 0.25

15

a = 2.5

b = 0.4

t = [-1 .. 1]

шаг 0.2

Пример выполнения

Задание 1

Вычислить при y=1.3, x=[0.. 2.1] с шагом 0.3 значения функции a. Результат вывести в виде таблицы. Проект – консольное приложение.

Блок-схема алгоритма представлена на рис. 4 .6. Для организации цикла введены следующие переменные: xs - начальное значение, xk - конечное значение dx - шаг изменения аргумента x. Окно работающего приложения показано на рис. 4 .7.

Листинг программы:

program Prg_4_1;

{$APPTYPE CONSOLE}

uses

SysUtils,RusTrans;

var

a,y,x,xs,xk,dx: real;

label

20;

begin

writeln(Rus('Введите y,xs,xk,dx')); // Приглашение

readln(y,xs,xk,dx); // Ввод данных

writeln;

writeln(Rus('Таблица a(x)')); // Заголовок

x:=xs; // Начало цикла

20: if y*x<1 then a:=exp(-y*x)*cos(y*x)

else if y*x=1 then a:=cos(y*x)

else a:=y*x+1;

writeln('x=',x:5:1,' a=',a:6:3);

x:=x+dx;

if x<=xk then goto 20; // Конец цикла

readln

end.

рис. 4.6. Блок-схема алгоритма задания 1

рис. 4.7. Окно работающего приложения задания 1

Задание 2

Вывести сообщения для дней недели с использованием оператора множественного ветвления. Проект – консольное приложение. В программе в разделе объявления типов type определен тип WeekDay из 7 строк. В разделе переменных var объявлена переменная MyWeek этого типа, значениям которой в исполняемой части программы присвоены русскоязычные имена дней недели. Программа содержит цикл запроса у пользователя номера дня недели в пределах 1..7. После ввода номера в этом интервале с помощью оператора выбора case..of формируется текстовое сообщение о дне недели. Если пользователь вводит номер 0, работа приложения завершается. Ввод чисел, отличных от 0..7, программа рассматривает, как ошибку, и просит повторить ввод, Окно работающего приложения показано на рис. 4 .8.

Листинг программы:

program Prg_4_2;

{$APPTYPE CONSOLE}

uses

SysUtils,RusTrans;

label

10;

type

WeekDay=array[1..7] of string;

var

s:string;

MyWeek:WeekDay;

x:integer;

begin

MyWeek[1]:='Понедельник';

MyWeek[2]:='Вторник';

MyWeek[3]:='Среда';

MyWeek[4]:='Четверг';

MyWeek[5]:='Пятница';

MyWeek[6]:='Суббота';

MyWeek[7]:='Воскресенье';

writeln(Rus('Введите номер дня 1..7, или 0'));

writeln;

10:readln(x);

case x of

0: s:=Rus('Спасибо, до свидания');

1: s:=Rus(MyWeek[x])+Rus(' - день бездельник');

2,3,4: s:=Rus(MyWeek[x])+Rus(' - рабочий день');

5: s:=Rus(MyWeek[x])+Rus('. Уф, завтра отдыхаем!');

6: s:=Rus(MyWeek[x])+Rus(' - выходной');

7: s:=Rus(MyWeek[x])+Rus(' - выходной, а завтра..');

else

begin

writeln(Rus('Вы ошиблись, повторите'));

goto 10;

end;

end;

writeln(s);

if x<>0 then goto 10;

readln;

end.

рис. 4.8. Окно работающего приложения задания 2

Выводы

  1. Для безусловной передачи управления применяется оператор goto <Метка>.

  2. Для ветвлений используется оператор If <условие> then <оператор1> else <оператор2>.

  3. Возможен сокращенный оператор ветвлений if <условие> then <оператор>.

  4. Для множественного ветвления можно применить оператор выбора caseof. Селектор этого оператора должен быть порядкового типа (чаще всего целочисленного, например integer).

  5. Если в ветвях then или else нужно выполнить несколько операторов, то их нужно объединить в один составной оператор с помощью операторных скобок beginend.

  6. Оператор ветвления может применяться для создания циклов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]