Обчислювальний процес, що розгалужується 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обчислювальний процес, що розгалужується



 

Завдання: Скласти алгоритм і програму за допомогою операторів галуження 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; просмотров: 129; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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