Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3.doc
Скачиваний:
10
Добавлен:
15.11.2019
Размер:
325.12 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Саратовский государственный технический университет

Балаковский институт техники, технологии и управления

Программирование алгоритмов циклических структур на языке turbo pascal

Методические указания к выполнению лабораторной работы

по курсу «Программирование и основы алгоритмизации»

для студентов специальности 210100

дневной и вечерней форм обучения

Одобрено

редакционно-издательским советом

Балаковского института техники,

технологии и управления

Балаково 2009

Цель работы: овладение практическими навыками разработки алгоритмов и программ с циклической структурой.

Основные понятия

Цикл – это выполнение определенного набора команд некоторое количество раз. В языке Pascal различают три вида операторов цикла: while, repeat, for.

Если число повторений оператора (составного оператора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используются операторы while, repeat. Оператор for используется, если число повторений заранее известно.

Оператор while

Оператор while (пока) часто называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора.

Формат:

while <условие продолжения повторений> do

<тело цикла>;

Условие – булевское выражение. Тело цикла – простой или составной оператор. Составной оператор используется в тех случаях, когда тело цикла состоит из 2-х и более операторов. На рис.1 представлен алгоритм циклической структуры с предусловием.

Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True, тело цикла выполняется и снова вычисляется выражение условия. Если результат равен False, происходит выход из цикла и пере­ход к первому после while оператору.

Рис.1. Алгоритм циклической структуры с предусловием

Оператор повтора repeat

Оператор repeat реализует цикл с постусловием. Он аналогичен оператору while, но отличается от него тем, что условие проверяется после очередного выполнения операторов тела цикла, поэтому цикл с постусловием всегда будет выполнен хотя бы один раз.

Формат:

repeat

<оператор1>;

<оператор2>;

<операторN>;

until <условие окончания цикла>;

На рис.2 представлен алгоритм циклической структуры с постусловием.

Рис.2. Алгоритм циклической структуры с постусловием

Операторы, заключенные между словами repeat и until, являются телом цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевского выражения равен False, то тело цикла активизируется еще раз; если результат True, происходит выход из цикла.

Оператор повтора for

В случаях, когда число повторений может быть заранее известно, для организации циклической обработки информации применяется оператор повтора for. Часто этот оператор повтора называют оператором цикла с параметром, так как число повторений задается переменной, называемой параметром цикла, или управляющей переменной.

Оператор повтора for может быть представлен в двух форматах:

for <параметр цикла> := <S1> to <S2> do <тело цикла>;

for <параметр цикла> := <S1> downto <S2> do <тело цикла>,

где SI и S2 – выражения, определяющие соответственно начальное и конечное значения параметра цикла;

for ... do – заголовок цикла.

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

Тело цикла может быть простым или составным оператором. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все зна­чения параметра цикла от начального до конечного.

На рис.3 представлен алгоритм циклической структуры с параметром.

При первом обращении к оператору for вначале вычисляются выражения SI, S2 и осуществляется присваивание <параметр цикла>:=S1.

После этого циклически повторяются следующие действия.

  1. Проверяется условие <параметр цикла> <= S2.

  2. Если условие выполнено, то оператор for продолжает работу (выполняется оператор в теле цикла), если условие <параметр цикла> <= S2 не выполнено, то оператор for завершает работу, и управление в программе передается на оператор, следующий за циклом.

  3. Значение управляющей переменной изменяется на +1 (если to) или -1 (если downto) и далее с п. 1. Шаг изменения управляющей переменной — единица.

После завершения оператора значение параметра цикла становится неопределенным, если только выполнение оператора не было прервано оператором перехода goto.

Рис.3. Алгоритм циклической структуры с параметром

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

Порядковый номер студента по списку группы соответствует номеру варианта. По заданию требуется:

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

        2. Составить графическую схему алгоритма.

        3. Записать программу на языке Turbo Pascal.

        4. Выполнить расчеты на ЭВМ.

        5. Написать отчет по лабораторной работе.

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

Задание. Вычислить и вывести на экран значение заданной функции

x [-20; 20], x = 4.

Значение функции вычислять многократно при изменении аргумента в указанном диапазоне и с заданным шагом x. Организовать вывод значения аргумента и вычисленного значения функции в виде таблицы:

Таблица функции Y(X)

X

Y

Обозначим xo= -20 ; xk=20 ; dx=4.

Текст программы:

Program lab_31;

Const dx = 4;

Var x,y,xo,xk,d : real;

n, i : byte;

Begin

Writeln (‘Введите xo , xk’);

Read ( xo , xk );

Writeln (‘Таблица функции y(x) ‘);

Writeln (‘ x y(x) ’);

d : = ( xk - xo )/ dx;

n : = trunc ( d ) + 1;

x : = xo;

For i : = 1 to n do

begin

if x < -10 then y : = 2*exp(0.01*x)

else if (x >= -10) and (x <= 10) then y : = x

else y : = 7*exp(-0.2*x) ;

Writeln ( x :6 : 3 , ’ ‘, y : 6 : 3 ) ;

x : = x + dx ;

end;

End.

Блок-схема алгоритма решения данной задачи при использовании цикла с параметром представлена на рис.4.

Рис.4. Блок-схема алгоритма решения задачи

Пример использования оператора цикла repeat…until.

Текст программы:

Program lab_32;

Const dx = 4;

Var x,y,xo,xk : real;

Begin

Writeln (‘Введите xo , xk’);

Read ( xo , xk );

Writeln (‘Таблица функции y(x) ‘);

Writeln (‘ x y(x) ’);

x : = xo;

Repeat

if x < -10 then y : = 2*exp(0.01*x)

else if (x >= -10) and (x <= 10) then y : = x

else y : = 7*exp(-0.2*x) ;

Writeln ( x :6 : 3 , ’ ‘, y : 6 : 3 ) ;

x : = x + dx ;

Until x > xk;

End.

Пример использования оператора цикла While…do.

Текст программы:

Program lab_33;

Const dx = 4;

Var x,y,xo,xk :real;

Begin

Writeln (‘Введите xo , xk’);

Read ( xo , xk );

Writeln (‘Таблица функции y(x) ‘);

Writeln (‘ x y(x) ’);

x : = xo;

While x<=xk do

begin

if x < -10 then y : = 2*exp(0.01*x)

else if (x >= -10) and (x <= 10) then y : = x

else y : = 7*exp(-0.2*x) ;

Writeln ( x :6 : 3 , ’ ‘, y : 6 : 3 ) ;

x : = x + dx ;

end;

End.

Блок-схема алгоритма решения данной задачи при использовании цикла с постусловием представлена на рис.5.

Рис.5. Блок-схема алгоритма решения задачи с постусловием

Блок-схема алгоритма решения данной задачи при использовании цикла с предусловием представлена на рис.6.

Рис.6. Блок-схема алгоритма решения задачи с предусловием

варианты заданий

№ вар.

Функция

Условие

Исходные

данные

Диапазон

и шаг

изменения аргумента

1

2

3

4

5

1

1 ≤ t ≤ 2

t < 1

t > 2

a = - 0,5

b = 2

t [0;3]

Δt = 0.15

2

x < 1.3

x = 1.3

x > 1.3

a = 1.5

x [0.8;2]

Δx = 0.1

1

2

3

4

5

3

x < 1.2

x = 1.2

x > 1.2

a = 2.8

b = -0.3

c = 4

x [1;2]

Δx = 0.05

4

x < 1.4

x = 1.4

x > 1.4

a = 1.65

x [0.7;2]

Δx = 0.1

5

x > 3.5

x ≤ 3.5

-

x [2;5]

Δx = 0.25

6

x < 1

x = 1

1< x< 2

x > 2

a = 2.3

x [0.2;2.8]

Δx = 0.2

7

x < a

x = a

x > a

a = 2.5

x [1;5]

Δx = 0.5

8

bx < 1

bx = 1

bx > 1

b = 1.5

x [0.1;1]

Δx = 0.1

9

x > 1

x ≤ 1

a = 20.3

x [0.4;2]

Δx = 0.2

10

x < 0.5

x = 0.5

x > 0.5

t = 2.2

x [0.2;2]

Δx = 0.2

11

x < 2.8

2.8 ≤x< 6

x ≥ 6

a = 2.6

b = -0.39

x [0;7]

Δx = 0.5

1

2

3

4

5

12

x > 1

x ≤ 1

a = 0.9

x [0.8;2]

Δx = 0.1

13

i < 4

4 ≤ i ≤ 6

i > 6

a = 2.1

b = 1.8

c = -20.5

i [1;12]

Δi = 1

14

≥0

<0

a = 0.3

n = 10

i [1;10]

Δi = 1

15

x ≤ 2

2 < x < 5

x ≥ 5

-

x [0;10]

Δx = 1

16

x > 0

x < 0

x = 0

-

x [-1;0.6]

Δx = 0.2

17

y ≠ 0

y = 0

y = x - 0.5

x [0;2]

Δx = 0.5

18

x < -1

-1 ≤ x ≤ 1

x > 1

-

x [-1.5;1.5]

Δx = 0.5

19

t < 0.1

t = 0.1

t > 0.1

a = 2.5

b = 0.4

t [-1;1]

Δt = 0.2

20

0

<0

c = 0.5

n = 10

i [1;10]

Δi = 1

21

|x| > 2/3

|x|  /4

/4< |x|  2/3

-

x  [-; ]

x = /8

1

2

3

4

5

22

x  0

0 < x  1

x > 1

-

x  [-1; 3]

x = 0.2

23

x < 3

x  3

-

x  [2; 4]

x = 0.2

24

x  0

0 < x  1

x > 1

-

x  [-/4; /2]

x = /12

25

x < -2

x  -2

-

x  [-2; 2]

x = 0.4

26

x  0

0 < x  

x > 

-

x  [-; 2]

x = /4

27

x < 5

x  5

-

x[4.2; 5.85]

x = 0.15

28

x  -

x > -

-

x  [-2; 0]

x = 0.2

29

x  -1

-1 < x  1

x > 1

-

x  [-2.1; 3]

x = 0.3

30

x  /2

x > /2

-

x[/4; 3/4]

x = 0.05

31

x  0

0 < x  1

x > 1

a = 2.3

x  [-1; 3]

x = 0.2

32

x > 0

x = 0

x < 0

-

x [-1;0.2]

Δx = 0.1

33

cx < 1

cx = 1

cx > 1

c = 2

x [0.1;1]

Δx = 0.1

СОДЕРЖАНИЕ И ОФОРМЛЕИНЕ ОТЧЕТА

ПО ЛАБОРАТОРНОЙ РАБОТЕ

Отчет оформляется в текстовом редакторе MS Word в формате А4 и должен содержать:

  1. Название лабораторной работы.

  2. Цель работы.

  3. Задание.

  4. Графическую схему алгоритма с учетом требований ГОСТ 19.701-90.

  5. Программу на алгоритмическом языке Turbo Pascal.

  6. Результаты выполнения работы.

  7. Проверку в математическом процессоре Mathcad.

ВОПРОСЫ для самоконтроля

  1. Что такое цикл?

  2. Какие виды циклов реализованы в Turbo Pascal?

  3. Что такое тело цикла?

  4. В каком случае тело цикла заключается в операторные скобки begin…end?

  5. В чем отличия операторов повтора while и repeat?

  6. В каких случаях предпочтительнее использовать для организации циклов оператор повтора for? Что записывается в заголовке этого оператора?

  7. Каким образом в операторе цикла for описывается направление изменения значения параметра цикла?

ВРЕМЯ, ОТВЕДЕННОЕ НА выполнение

ЛАБОРАТОРНОЙ РАБОТЫ

Подготовка к работе – 1,0 акад. час

Выполнение работы – 1,0 акад. час

Расчеты на ЭВМ – 0,5 акад. часа

Оформление работы – 0,5 акад. часа

ЛИТЕРАТУРА

  1. Алексеев Е.Р. Turbo Pascal 7.0. Численные методы. – М.: АСТ, 2004.

  2. Глинский Я.Н., Анохин В.Е., Ряжская В.А. Turbo Pascal 7.0 и Delphi: учебное пособие. – 2-е изд., испр. и доп. – СПб: ДиаСофтЮП, 2003.

  3. Гусева А.И. Учимся программировать: Pascal 7.0. Задачи и методы их решения. – М.: Диалог-МИФИ, 1997.

  4. Емелина Е.И. Основы программирования на языке Паскаль. – М.: Финансы и статистика, 1997.

  5. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. – М.: ДИАЛОГ-МИФИ, 1998.

  6. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0. – М.: Бином Универсал, К.: ЮНИОР, 1997.

  7. Немнюгин С.А. Turbo Pascal. – СПб.: Питер, 2001.

  8. Попов В.Б. Turbo Pascal для школьников. - М.: Финансы и статистика, 2001.