
Материал по ОТ(лабы) / №4 / goto, if, boolean
.docЛабораторна робота #3
Керування обчислювальним процесом
Мета роботи - оволодіння прийомами програмування розгалужених обчислювальних процесів.
3.1. Теоретичні відомості
У програмному модулі, що складається з операторів введення-виведення й присвоювання, оператори будуть виконуватися послідовно один за одним. Такий процес обчислень називається лінійним, він використовується в найпростіших випадках. Але в більшості задач послідовність обчислень не може бути задана заздалегідь, бо вона залежить від вихідних даних чи проміжних параметрів. Наприклад, обчислення за визначеною формулою необхідно припинити, якщо досягнено заданої точності чи, залежно від вихідних даних, обчислювати слід за різними алгоритмами. Такі обчислювальні процеси називаються розгалуженими і для їх реалізації використовують спеціальні оператори керування обчислювальним процесом.
3.1.1. Оператор GOTO 3.1.1.1. Синтаксис
GOTO < мітка >;
Оператор безумовного переходу GOTO є простим оператором і означає "Перейти до". Він використовується в тих випадках, коли після виконання якої-небудь команди чи оператора необхідно виконати не наступну по порядку команду чи оператор, а який-небудь інший. При, цьому той оператор чи команда, котрі необхідно виконати, позначаються < міткою > - набором символів (літер чи цифр) не більше 127 знаків, до того ж біля мітки, яка позначає необхідний оператор, ставиться двокрапка, наприклад:
Goto Mitkal;
Mitkal: if a<b then begin... {до виконання цього оператора приступить програма після виконання оператора Goto}
При використанні оператора GOTO необхідно, щоб всі мітки, які використовуються у програмі, були описані в розділі опису міток,
розташованому на початку програми. Зарезервованим словом для опису міток є Label, а сам процес виглядає так:
Program example;
Var {розділ опису змінних} і: integer;
label Metkal, Metka2; {розділ опису міток}
Begin
End.
Примітка: областю дії мітки є той блок програми, в якому вона описана, тому спроба перейти в інший блок (чи вийти за межі блока) викличе програмне переривання.
3.1.2. Відношення. Тип даних BOOLEAN
Вираз "А1<А2" є булівським виразом. В загальному випадку булівський вираз будується з арифметичних виразів, об'єднаних операціями відношення:
< -метие;
>= - менше або дорівнює; = - дорівнює; > - більше;
>= - біпьше або дорівнює; <> - не дорівнює.
Значення булівського виразу може бути надано булівській змінній.
Булівський тип boolean - це третій стандартний тип даних мови Pascal Змінні булівського типу можуть набувати тільки одного з двох значень: TRUE (істина) або FALSE (неправда). Опис булівської змінної має такий вигляд:
var BOOL; Boolean;
Результатом виконання операцій порівняння є булівські значення. Наприклад:
BOOL: =5>2; результат:BOOL=TR UE
BOOL: =5<>5; результат:BOOL =FALSE
BOOL: =5>-5; результат:ВVOL=TRUE
BOOL:=5>10; результат: BOOL^FALSE
З булівськими змінними можна виконувати логічні операції:
and-кон'юнкція, або логічне множення.
Ця двомісна операція лає результат TRUE лише в тому випадку, якщо обидва операнди дорівнюють TRUE, тобто: TRUE and TRUE - TRUE TRUE and FALSE = FALSE FALSE and TRUE = FALSE FALSE and FALSE = FALSE
or - диз'юнкція, або логічне додавання, яка набуває значення FALSE лише в тому разі, якщо обидва операнди дорівнюють FALSE, тобто: TRUE or TRUE = TRUE TRUE or FALSE =TRUE FALSE or TRUE =TRUE FALSE or FALSE=FALSE
not - операція заперечення, яка замінює значення свого операнда на протилежне:
not TRUE=FALSE not FALSE^TRUE
3.1.3. Умовний оператор IF
Синтаксис IF < умова > then <onepamopl> Else <оператор2>; Можлива інша форма запису: І/< умова > then < оператор >;
Умовний оператор IF забезпечує виконання чи невиконання якогось оператора чи блока а залежно від заданих умов. Ключові слова IF, THEN, ELSE відповідно еквівалентні "якщо", "то", "інакше".
Механізм роботи оператора IF трактується так: якщо <умова> істинна (TRUE), то виконується <оператор!>, інакше виконується <оператор2>;
Якщо треба, виконати групу операторів замість одного за умовою, то блок операторів виділяється так:
Begin <оператор 1>; <оператор 2>;
<оператор п> End;
Складні умови записуються за допомогою логічних операцій: AND (і),' OR (чи), NOT (ні).
Якщо вам потрібно перевірити, чи належить число X заданому відрізку [-5;5], це можна зробити за допомогою умови:
if(x>=-5) and (х<—5) then
writeln('4ucno х належить відрізку') else
writeln('число не належить відрізку'); Для запису умов можуть використовуватись можливі операції відношення. Приклад:
Begin Л:=13; В:=12; С:=І;
if А<В then WriteLnf Помилка'); {перевіряєтьсяумова А<В} if А >В then { перевіряється умова А>В}
Begin {Якщо А>уВ, то виконуємо блок}
WriteLnf' Все правильно '); {операторів} С-А+В+С; WriteLnCC=',C); End
else halt; {Якщо A<—B, то вихід з програми}
End.
3.1.4. Оператор-селектор (Case)
Синтаксис
Case <вйраз-селектор> of <список 1>: <оператор 1>; <список 2>: <оператор 2>;
<спиеок N>: <оператор N>; [else <оператор N+l>;] End; {Case}
Оператор-селектор Case є умовним оператором і являє собою узагальнений варіант оператора IF, про який розповідалось вище. Він дозволяє зробити вибір з декількох варіантів. Оператор-селектор Case
складається з <виразу-селектора> цілого, булівського чи літерного типів, <оператор 1>, <оператор 2>, .... <оператор N> представляють ті команди чи оператори, які виконуються при набуванні <виразом-селектором> значень <список 1>, <список 2>, <список N> відповідно. На той випадок, коли <вираз-селектор> не набуває ні одного із значень <список 1>, <список N>, то можливе використання оператора else, який використовується в таких же випадках, що і в операторі IF.
Приклад:
Vor
Simvol: Char; і: Integer;
{символьний тип} {цілий тип}
Begin
Simvol; —ReadKey;
{зчитує код натиснутої клавіші}
Case Simvol of 'a': i:=l; Ъ': i:=2; 'c': i:=3;
{перевірка натиснутої клавіші} {якщо натиснуто 'а', то і-1} {якщо натиснуто Ъ', то і~2} {якщо натиснуто 'с', то і—З}
Else
halt;
{і
End.
Задача
Скласти програми розрахунку:
у + 0.3, якщо у < 0, F (у) = і 0, якщо 0<у<1,
у2 — у, якщо у > 1.
Розв'язання:
Progam Laha_2;
Uses Crt; {Бібліотека для роботи з екраном}
Var у, f_y: real;
ClrScr; {очищення екрана}
WriteLnC Розробив програму ');
WriteLnC студент ФСА, групи EK-SI ');
WriteLn(' Іванов 1.1. ');
І'^/гбіл^************************************')' WriteLn; WriteLn; WriteLn; Write( ' Введіть у:'); ReadLnfy); lfy<0 then fjy:=Sqr(y)*y-Q.6 Else
lf(y>=0) and(y<=l) thenf_y:=0 Elsefjy: =Sqr(y) * Sqrfy) - Sqr(y); Write(F(y)=',fjy); WriteLn('Для виходу натисніть будь-яку клавішу...'); Repeat Until KeyPressed; End.
Блок-схема алгоритму
3.3. Контрольні запитання
-
Який синтаксис і семантика оператора IF?
-
Який синтаксис і семантика оператора CASE? З.Яке призначення оператора GOTO?
4. Чи є відмінність між списком оператора CASE і міткою в мові Pascal?
5.Які знаки відношення використовуються у Pascal для арифметичних знаків >, >, =, <, < ?
6. Яке призначення умовного логічного оператора?
Список лггератури
Зуев Е. А. Программирование на языке Turbo Pascal 6.0, 7.0. - M.: Наука, 1993 - 120 с.
Бородич Ю. С, Зальвачев А. Н., Кузмич А. й. Паскаль для персональных компьютеров. - М.: Наука, 1994 - 200 с. Иенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. - М.: Энергия, 1982. - 130 с.
Сорокин Н. А:, Меркулов В. С. Программирование на языке Паскаль. -М: Финансы к статистика. 1986. - 240 с.