ЗНАЕТЕ ЛИ ВЫ?

ОБЧИСЛЮВАЛЬНИЙ ПРОЦЕС, ЩО РОЗГАЛУЖУЄТЬСЯ



 

Завдання: Скласти алгоритм і програму за допомогою операторів галуження IFі CASEі оператора безумовного переходу GOTO. Досліджувати функцію на область допустимих значень. Завдання приведені в таблиці 2.

Управління обчислювальним процесом

Коли процес обчислення залежить від проміжних обчислень, то хід розрахунку не може бути заданий однозначно до початку розрахунку. В цьому випадку потрібне використання операторів управління обчислювальним процесом:

  • GOTO- оператора безумовного переходу;
  • IF- оператора умовного переходу;
  • CASE- оператора вибору.

 

2.1 Оператор безумовного переходу GOTO

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

  • перед оператором, одержуючим управління поставити мітку у вигляді цілого числа з діапазону 0..9999;

· на початку програми описати цю мітку.

Опис міток виконують між заголовком програми і описом констант. Мітками можна зробити відразу декілька чисел.

 

Наприклад:

 

program prim;

label 1,2,8;

var c, i:integer;

b, d:real;

begin

read(b);

d: =sin (b); goto 1;

...

...

...

2: read(i);

c: =i+1;

write(c);

goto 8;

...

...

...

1: write(d);

goto 2;

...

...

...

8: end.

 

2.2 Тип даних BOOLEAN

 

Булеві (логічні) змінні можуть мати одне з двох значень: TRUE (істина) або FALSE(брехня).Булеві вирази використовуються для перевірки відносин між двома змінними.

Відносини:

= рівно;

> більше, ніж...;

>= більше, ніж... або рівно;

< менше, ніж ...;

<= менше, ніж..., або рівно;

<> нерівно;

Крім того, булеві вирази можуть конструюватися за допомогою булевих операцій. У мову Паскаль включені три булеві операції: AND (и), OR (або), NOT(не).

Булеві операції застосовуються, якщо потрібно перевірити складну умову. Булеві вирази можуть використовувати три булеві операції в будь-яких поєднаннях; операнди можуть бути простими булевими константами, булевими змінними або відносинами.

Порядок старшинства операцій в булевих виразах:

 

Вищий Нижчий
( ) >
NOT =
AND <
OR <>
  >=
  <=

 

У мові Паскаль є вбудована булева функція ODD (X) з цілочисельним аргументом. Функція ODD (X) повертає істину, якщо аргумент X є непарним.

 

 

2.3 Галуження

 

Використовуючи булеві вирази можна здійснювати перевірку різних умов в мові Паскаль. Конструкція вибору може бути реалізована за допомогою двох функцій: IFі CASE.

 

2.3.1 Інструкція IF

 

Оператори умовного переходу IF THENі IF THEN. ELSEзадають порядок проходження операторів залежно від істинності (або помилковості) виразу відношення.

 

Загальна форма запису:

IFбулевий вираз THENоператор IF булевий вираз THEN оператор 1 ЕLSE оператор 2

 

Коли оператор IFз'являється усередині іншого оператора IF, він вважається вкладеним. Вкладення використовується для зменшення числа перевірок. Проте не рекомендується використовувати більш за одного-двух рівні вкладення IF.

Якщо в операторові IFбуде потрібно виконання послідовності операторів, можна поміщати цю послідовність між зарезервованими словами BEGINі END.

 

Приклад:

 

program vybor;

var a, b:integer;

begin

writeln('введіть числа а, b');

read(а, b);

if a<b then writeln('а менше b')

else writeln('а більше b');

{ складений оператор}

if a<b then

begin

writeln('a<b');

writeln('а менше b');

end;

end.

 

2.3.2 Інструкція CASE

 

Оператор IFдозволяє програмі виконувати переходи на ту або іншу гілку за значенням булевої умови. Для здійснення вибору однієї з декількох альтернатив мова Паскаль надає іншу структуру, що управляє (оператор CASE).

Таким чином, інструкція CASEздійснює множинне галуження по ряду умов.

 

 

Загальна форма запису:

CASEвираз OF

значення: оператор;

...................

значення: оператор;

ELSEоператор;

end;

 

Обробка оператора починається з обчислення виразу, а далі виконується оператор, відповідний результату обчислення виразу.

 

Приклад 1:

 

case number mod 2 of

0: writeln('number- парне');

1: writeln('number- непар.');

end;

 

Приклад 2:

 

case month of

1,2,3: writeln('перший квартал');

4,5,6: writeln('другий квартал');

7,8,9: writeln('третій квартал');

10,11,12: begin

writeln('четвертий квартал');

writeln('складається з місяців:');

writeln('жовтень, листопад, грудень');

end;

end;

 

Змінна вибору (селектор) в операторові CASEне повинна належати типу REAL. Селектор може бути виразом.

 

Таблиця 2 - Варіанти завдань для лабораторної роботи № 2

 

Зміст завдання Початкові дані
A B C
1.45 3.65 4.82 3.65  
7.54 -2
4.29 0.5 4.5 8.61
4.95 2.57
7.8 2.55 10.41 4.7
-6.52 10.54
1.27 0.38 4.28 0.15
1.23 12.55 -2.75 7.32
16.24 2.67 11.2 3.28
16.25 2.26 4.83 0.865
6.58 4.35
14.2 10.2 2.78 6.43
10.42 -11.3 -1.42 -0.98
0.93 0.44 1.38 0.52
8.45 9.36 11.48 10.55
10.43 1.53 2.6 6.05
10.36 0.828
3.75 -6.75 1.34 3.075
5.016 7.22 10.98 3.5
Перевірити істинність виразу: A+BC-2>5 -3
Перевірити істинність виразу:
Якщо вираз AВ>0 істинно то обчислити: 3.25 -5.4 1.4 2.4 15.6
Перевірити числа A, B, C на парність -3 -7
Отримати MAX (A, B) 3.45 4.78  
Отримати MAX (A, B, C) -2.5 -59 2.48
Отримати MIN (A, B, C) 15.28 2.33 20.73
Обчислити MAX(A+B+C, ABC) 5.4 8.2 0.45
Перевірити чи виконується А<B<C 2.54 3.27 4.28 5.44 10.5 2.1
Якщо A>=В>=С, то подвоїти A, B і C інакше замінити абсолютними значеннями 5.28 2.49 4.72 7.24 3.24 -4.66
Надрукувати A, якщо A>В інакше надрукувати A і B 4.58 2.27 3.54  

ЛАБОРАТОРНА РОБОТА № 3

 

ЦИКЛІЧНИЙ ПРОЦЕС

 

Завдання: Написати програми розрахунку функції, використовуючи операторів циклу WHILE, REPEATі FOR. Для кожного конкретного завдання з таблиці 3 визначити ефективність кожного оператора циклу.

Цикл це послідовність операторів, яка може виконуватися більше одного разу. Для реалізації циклів в Паскалі передбачено три різні інструкції. WHILEі REPEATвикористовуються, якщо число повторень (ітерацій) заздалегідь не відомі, але відомі умови завершення циклу. Інструкція FORзастосовується, коли число ітерацій відоме.

 

3.1 Оператор WHILE

 

При виконанні оператора WHILEповторюється група операторів до тих пір, поки визначене в операторі WHILEбулева умова істинно. Як тільки умова циклу не задовольняється, управління передається інструкції, наступній за WHILE. Якщо умова не виконується до початку виконання циклу, тіло циклу пропускається.

 

Загальна форма запису:

WHILEбулева умова DOоператор;

 

Приклад підрахунку суми додатніх чисел:

program sum;

var a, sch, sum:integer;

begin

sum:=0;sch:=0;

while a>0 do

begin

read(a);

sum:=sum+a;

sch:=sch+1;

end;

writeln('сума',sch,' чисел рівна',sum);

end.

 

3.2 Оператор REPEAT

 

Між інструкціями REPEATі WHILEіснує три істотні відмінності:

 

  • У інструкції REPEATперевірка умови виходу відбувається в кінці, а не на початку циклу, так що тіло циклу виконується хоч би один раз.
  • У інструкції REPEATумова виходу задовольняється, якщо вираз істинний, а в інструкції WHILE- якщо помилково.
  • Між ключовими словами REPEAT. UNTILможна помістити декілька інструкцій, а в інструкції WHILEтіло циклу повинне містити тільки одну інструкцію.

Загальна форма запису:

REPEAT

список операторів;

UNTILумова;

 

Приклад підрахунку суми додатніх чисел:

 

program sum;

var a, sch, sum:integer;

begin

sum:=0;sch:=0;

repeat

read(a);

sum:=sum+a;

sch:=sch+1;

until a>0;

writeln(' сума',sch', чисел рівна',sum);

end.

 

3.3 Оператор FOR

 

Ця інструкція призначена для організації покрокових циклічних процесів, керованих за допомогою спеціальної змінної.

 

Загальна форма запису 1:

FORкеруюча змінна:=початкове значення

TOкінцеве значення DOоператор;

 

Загальна форма запису 2:

FORкеруюча змінна:= початкове значення

DOWNTOкінцеве значення DOоператор;

 

Керуюча змінна, набуває значень починаючи з першого (їм є вираз після символу :=) і, закінчуючи останнім (їм є вираз після TOі DOWNTO). Значення керуючої змінної, міняються з кроком +1, якщо використовується ключове слово TO, або з кроком -1, якщо використовується ключове слово DOWNTO.

Інструкція після ключового слова DOвиконується один раз для кожного нового значення змінної, що управляє. Цикл завершується досягнувши керуючої змінної свого кінцевого значення.

 

Приклад підрахунку суми 10 чисел:

 

program sum;

var a,i,sch,sum:integer;

begin

sum:=0;sch:=0;

for i:=1 to 10 do

begin

read(a);

sum:=sum+a;

sch:=sch+1;

end;

writeln(' сума',sch', чисел рівна',sum);

end.

 

Таблиця 3 - Варіанти завдань для лабораторної роботи № 3

Вид функції Початкові дані
A B N
0.9 1.85 10.2 12.4
4.86 9.35 6.2 10.6
11.6 2.4 1.4 6.9
3.14 5.39 18.4 25.6
5.25 7.39 4.25 5.46
6.3 0.86 1.25 8.75
1.28 0.03 12.6 34.6
0.25 11.6 0.2 1.2
0.6 1.24 6.44 3.24
0.44 2.28 6.5 7.3
3.2 0.45 0.6 1.5
7.32 0.15 13.3 14.5
1.35 0.2
1.41 10.45 0.2 1.4
7.38 0.3
0.49 1.28 1.56 2.96
1.3 7.35 5.15
1.16 1.28 0.45 0.15
17.2 24.6
0.4 10.8 1.25 2.25
1.28 0.03 12.6 8.6
0.25 0.68 2.12 1.44
6.44 0.35 0.49
0.45 0.6 1.5 7.5
4.1 0.95 -0.63 0.63
4.25 2.6 0.3 1.2
7.5 26.6 4.2 0.7
1.28 16.3 0.54 1.34
0.98 12.8 2.1 3.6
23.4 19.6 12.1 19.6

 


ЛАБОРАТОРНА РОБОТА № 4





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.216.79.60 (0.017 с.)