Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_Информатика_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
279.04 Кб
Скачать

1.Цель работы:

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

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

IF - THEN - ELSE

Разветвления в программах возникают при необходимости выбора одного из нескольких путей решения задачи, в зависимости от выполнения одного или нескольких условий. Для организации разветвлений в Pascal-программах используют условный оператор: IF - THEN - ELSE или оператор выбора: CASE.

Условный оператор имеет два вида записи:

1) IF b THEN a;

2) IF b THEN a1 ELSE a2;

где b - логическое выражение; a,a1,a2 - операторы простые или составные.

Для первого вида записи если логическое выражение "b" истинно, выполняется оператор "a" , в противном случае следующий за условным оператором оператор.

Для второго вида записи если логическое выражение "b" истинно, выполняется оператор "a1" , в противном случае - оператор "a2".

Примером простейших логических выражений является сравнение переменных или констант: a > b , c <= d , 5 > 3.2.

Переменные должны быть определены до выполнения операции сравнения.

Использование составных операторов расширяет действие условного оператора. Составной оператор представляет собой последовательность операторов, заключенных в операторные скобки (ключевые слова begin и end ) и рассматриваются транслятором как один оператор.

begin

оператор A;

оператор B;

........

оператор S

end;

Условный оператор IF - THEN - ELSE применяют в тех случаях, когда вычисления могут пойти различным путем, в зависимости от выполнения определенных условий.

Рассмотрим пример использования условного оператора.

Задание:

Составить программу, вычисляющую сумму или разность двух чисел, в зависимости от соотношения этих чисел. Если первое число больше второго, то нужно вычислить их сумму, в противном случае - их разность.

Паскаль программа имеет вид:

(файл prim41.pas)

program prim;

var x,y,z:real ;

Begin

writeln('введите число x '); readln(x);

writeln('введите число y '); readln(y);

IF x>y THEN z:=x+y ELSE z:=x-y;

writeln('число z = ',z:8:2 );

readln

End.

Алгоритм:

В этой задаче можно рассматривать переменную z как функцию, меняющую свое значение в зависимости от значения аргументов x и y и их соотношения.

- инструкция IF - THEN – ELSE используется для выбора одного из двух направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);

- выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия;

- условие – это выражение логического типа, которое может принимать одно из двух значений: TRUE (истина – условие выполняется) FALSE (ложь – условие не выполняется);

- при помощи логических операций AND (логическое "И") и OR (логическое "ИЛИ") из простых условий можно строить сложные.

CASE

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

CASE _ выражение _ OF

константа n : оператор n

END;

Здесь CASE , OF , END - служебные слова.

Выражение может быть любого стандартного типа кроме REAL. В соответствии с этим и константа не может быть действительного типа. Тип константы должен совпадать с типом выражения.

Оператор выбора действует следующим образом: если значение выражения равно одной из констант, то выполняется соответствующий ей оператор, и затем управление передается за пределы оператора выбора.

Пример программы для определения дня недели по введенному числу месяца (для октября 2001 года) имеет вид:

(файл prim42.pas)

program day_;

var data, ost:Integer;

day:string[15];

Begin

writeln('Введите число.');

readln(data);

ost:=data mod 7;

Case ost of

1:day:='понеделник';

2:day:='вторник';

3:day:='cреда';

4:day:='четверг';

5:day:='пятница';

6:day:='суббота';

7:day:='воскресенье';

end;

writeln(day);

End.

В рассмотренном примере используется операция MOD - получение целого остатка при делении целого данного на целое.

В операторе выбора в качестве константы допускается использование списка констант, например:

Раздел описаний :

var S:char;

P:integer;

Фрагмент тела программы:

Case S of

'+','-','*','/': P:=1;

'A','B' : P:=2;

'.' : P:=3

- инструкция Case используется для выбора одного из нескольких направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);

- выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от равенства выражения константе, указанной перед группой инструкций;

GOTO

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

Общий вид оператора безусловного перехода:

GOTO <метка>;

GOTO - зарезервированное слово языка, а <метка> - идентификатор или целое число от 0 до 9999. Все используемые в программе метки перечисляются в разделе LABEL.

Пример: (файл prim43.pas)

program perehod;

uses crt;

label 1;

var data, ost:Integer;

day:string[15];

Begin

clrscr;

1:writeln('Введите число.');

readln(data);

if (data<0) or (data>32) then

begin

TextColor(128);

writeln('Ошибка при вводе

числа (1..31).');

TextColor(White);

writeln;

goto 1;

end;

ost:=data mod 7;

Case ost of

1:day:='понеделник';

2:day:='вторник';

3:day:='cреда';

4:day:='четверг';

5:day:='пятница';

6:day:='суббота';

7:day:='воскресенье';

end;

writeln;

TextColor(Red);write(data);

TextColor(White);

write(' октября 2001 года соответствует дню недели ');

TextColor(Red);writeln(day);

repeat until keypressed;

End.

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

Такую программу трудно читать, отлаживать и модифицировать.

EXIT и HALT

Модуль System, который содержит все стандартные и встроенные процедуры и функции Turbo Pascal, используется автоматически любым модулем или программой и никогда не требуется указывать его в директиве uses. Модуль System реализует низко-уровневые подпрограммы для операций ввода/вывода, обработки строк, управления оверлеями и динамическое распределение памяти.

Процедуры управления программой:

Exit Позволяет немедленно выйти из текущего блока.

Halt Останавливает выполнение программы и возвращает в операционную систему.

Пример: (файл prim44.pas)

program preriv;

uses crt;

var data, ost:Integer;

day:string[15];

Begin

clrscr;

writeln('Введите число.');

readln(data);

if (data<0) or (data>32) then

begin

TextColor(128);

writeln('Ошибка при вводе числа (1..31).');

writeln('Для выхода нажать ввод');

readln;

Halt;

end;

ost:=data mod 7;

Case ost of

1:day:='понеделник';

2:day:='вторник';

3:day:='cреда';

4:day:='четверг';

5:day:='пятница';

6:day:='суббота';

7:day:='воскресенье';

end;

writeln;

TextColor(Red);write(data);

TextColor(White);

write(' октября 2001 года соответствует дню недели ');

TextColor(Red);writeln(day);

repeat until keypressed;

End.

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

4.ОФОРМЛЕНИЕ ОТЧЕТА

Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы, представленный в виде таблицы (5 значений аргумента, 5 значений функции).

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Какие операторы применяют для организации ветвлений в языке Turbo Pascal?

2. В каких случаях применяют в программе условный оператор?

3. Тип выражения в операторе CASE в языке Turbo Pascal?

4. Оператор безусловного перехода в языке Turbo Pascal?

5. Немедленная остановка выполнения программы?

6. ВАРИАНТЫ ЗАДАНИЙ

№ по списку

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

№ задания

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

№ задания

Функция

Исходные данные

1

x2, при x<1

y={

ax, при x>1

a=0,5*№ по списку

2

a+5, при a<2

b={ c, при a=2

a-5, при a>2

c=5+№ по списку

3

d3, при d<0

f={

(d-k)2, при d>0

k=№ по списку

4

p+t, при p<0

g={ t, при p=0

p-t, при p>0

t=4/№ по списку

5

10n, при n<10

m={

n/10+h, при n>10

h=№ по списку/2

Лабораторная работа N15.

ОРГАНИЗАЦИЯ ЦИКЛИЧЕСКИХ ВЫЧИСЛЕНИЙ.

ЦИКЛЫ С ПРЕДУСЛОВИЕМ И ПОСТУСЛОВИЕМ.