Лекція №3 Оператори алгоритмічної мови pascal. Розділ операторів містить інструкції про обробку даних, вирази, оператори



Скачати 129.3 Kb.
Дата конвертації05.03.2017
Розмір129.3 Kb.
ЛЕКЦІЯ №3
Оператори алгоритмічної мови PASCAL.
Розділ операторів містить інструкції про обробку даних, вирази, оператори..
Вираз – це алгоритмічні конструкції мови, які визначають правила для обчислення значень змінних. Вирази складаються з операцій і операндів. По кількості операндів операції діляться на унарні і бінарні.

Існує 3 групи операцій:



  1. Унарні: - +, not @,(узяття адреси);

  2. Бінарні: +, - *, /, div, mod, and, or, xor, shl, shr, in (включення в множинах), as, is (над класами і об'єктами) !

  3. Операції відношення (порівняння) : =, < >, <, >, < =, > =.


Управляючі конструкції

Управління послідовністю виконання дій в Object і Borland PASCAL здійснюються за допомогою управляючих конструкцій, які можна розділити на 2 категорії:



  • оператори

  • управляючі процедури


Оператори – призначені для опису дій, які будуть виконані при реалізації алгоритму. Оператори можна розділити на дві групи:

  • прості оператори;

  • структурні оператори.

Прості оператори оператори, які не містять в собі інших операторів :

  • оператор привласнення;

  • оператор процедури;

  • оператор переходу.

Структурні оператори – включають інших операторів і управляють послідовністю їх виконання:

  1. складений оператор

  2. умовні оператори:

- оператор альтернативи if;

  • оператор вибору Case;

  1. оператори циклу :

  1. оператор приєднання With;

  2. оператор обробки виняткових ситуацій Try;

Оператори відділяються один від одного “ ; “ .
Оператор привласнення - :=

A :=10; b:= cos(x)+ 10 ;
Ідентифікатор (ім'я) змінної, якою привласнюється значення або обчислюється значення виразу і привласнюється змінній (або функції). Обов'язковою є вимога щоб тип виразу в правій частині виразу і тип змінної або результат функції в лівій частині оператора були сумісними по привласненню. Привласнення допускається для всіх типів, окрім файлових типів.

Оператор процедури – складається з ідентифікатора процедури або з імені процедури, за яким в круглих дужках знаходиться список фактичних параметрів. Виконання оператора процедури приводить до дій описаних в тілі процедури. При цьому відбувається передача фактичних параметрів формальним параметрам, вказаним в заголовку процедури.

Swap(x, у);

Swap(5, 10);

Poisk(5, x, rez);

Формальні і фактичні параметри повинні співпадати по кількості і за типом.



Оператор переходу (безумовного) – змінює природний порядок виконання операторів. Він складається з ключового слова GOTO, за яким вказується мітка. Виконання оператора GOTO приводить до переду передачі управління на оператора, перед яким стоїть вказана в операторові GOTO мітка.

Goto metka;.

Metka: a:= 7;

Вимога: мітка, вказана в операторові переходу, розташовувалася в тому ж блоці або модулі, що і оператор GOTO. Тобто за допомогою цього оператора не допускаються переходи всередину процедур (функцій), а також передача управління з процедури (функції) в навколишнє середовище.

Рекомендація: уникати використання цього оператора.
Складений оператор – об'єднує групу операторів в єдине ціле, після чого вони можуть вважатися одним оператором. Складений оператор складається з послідовності операторів, які розташовуються між ключовими словами BEGIN & END. Складений оператор використовується тоді, коли синтаксис мови Object і Borland PASCAL допускає в певній точці програми вказівку тільки одного оператора, а по алгоритму в цьому місці необхідно виконати групу операторів.

Наприклад:

For i:= 1 to 10 do

Begin


Read(x);

A:= cos(x)* sin(x) – z;

Write(‘а =’,a)

End;


Умовний оператор if може записуватися в скороченій і повній формі:

  1. if <вираз> then <оператор>;

  2. if <вираз> then <оператор1> else <оператор2> ;

При виконанні оператора спочатку виконується вираз, який може приймати тільки булевий тип (true, false), а потім залежно від результату, виконується <оператор1> або<оператор2>.

У скороченій формі, при значенні результату False управління передається операторові наступному за оператором If, а оператор, що стоїть за Then пропускається .



If а > 5 then write (‘);

If x >= у then a:= abs(z)* sqr(z)

else a:= sqrt(abs(z));

По синтаксису за ключовими словами then & else може стояти один оператор. Якщо ж потрібно виконати декілька операторів, то як правило використовуєьтся складений оператор:



If а > b then begin

X:= cos(x);

Writeln(‘при a>b x= ’,x);

End


Else

Begin x:= sin(x);

Writeln(‘при a<=b x= ’,x);

End;


Умовні оператори можуть бути вкладені один в одного.

If a<7 then

If b>5 then <оператор1>

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

Else <оператор3>;

Розглянемо випадок коли може виникнути неоднозначність:

If <вираз 1> then

If <выражение2> then <оператор1>

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



Правило:

Ключове слово Else зв'язується з найближчим ключовим словом If, що стоїть перед ним, не зв'язаним з Else‘ом

If <выражение1> then

If <выражение2> then <оператор1>

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


Оператор вибору if дозволяє вибирати одну з двох можливих дій залежно від логічного виразу .



Case може виконати одну з декількох дій залежно від значення селектора (перемикача).

Структура оператора:



Case селектор of

<набір значений1> : <оператор1>;

<набір значень n> : <оператор n>

else <оператор>

end;

Призначкння селектора – визначити який з операторів повинен бути виконаний.

Якщо значення селектора не співпало ні з одним значенням <Набору значень>, то виконується гілка Else .

У операторові Case гілка Else може бути відсутньою, тоді управління передається операторові, наступному безпосередньо після ключового слова End, що замикає оператора Case .

Тип селектора повинен бути тільки перерахованим, всі інші типи компілятором ігноруються .

Var : до : byte;.

Case до of

1 : у := sin(x);

2,5,7 : y:= cos(x);

10..20 : begin y:= sqr(x); a:= b + x; end;

else write (‘не у діапазоні’)

end;


case color of

red : write(‘червоний’);

yellow : write(‘жовтий’);

blue : write(‘блакитний’)

end;

! Мітки не повинні повторюватися і перетинатися. Мітки Case & Label не описуються.

Оператор циклу з передумовою (While)

Цикли – виконання одних і тих же операторів, що повторюються .

Структура оператора циклу :

While < умова > do <оператор>;

While <умова> do begin <оператор>, <оператор> ., <оператор>

End;

Робота циклу:

- спочатку, при вході в цикл, обчислюється <умова >. Якщо вона рівна False, то вхід в цикл не виконується і управління передається операторові, наступному за оператором циклу.

Якщо умова – True, то відбувається вхід в цикл і одноразове виконання операторів тіла циклу. Досягши кінця тіла циклу, управляючі слова передаються на його заголовок, де обчислюється <умова>. Як тільки чергове обчислення <умови> циклу дає значення False – робота циклу завершується .

Наприклад: обчислити факторіал числа n.

Program factor ;

Var fact, n : integer ;

Begin


Writeln (‘введіть значення числа n’) ;

Readln (n) ;

Fact := 1 ;

While n > 0 do

Begin


Fact := fact * n ;

N := n – 1

End ;

Writeln (‘ факторіал = ’,fact)



End.

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



  • умова перевіряється до початку виконання кожної ітерації;

  • щоб цикл мав шанс завершитися – вміст циклу повинен впливати на умову циклу;

  • умова повинна складатися із значень або виразів, визначених ще до першого виконання тіла циклу.

Оператор циклу з постумовою складається з ключового слова Repeat, за яким слідують оператори циклу, і замикаючого слова Until, після якого вказується умова закінчення циклу .

Структура оператора :

Repeat


<оператор>;

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

<оператор >

Until <умова >;



! Оператор Repeat не вимагає складеного оператора .

Загальний принцип роботи оператора Repeat такий же як і While, але <умова> виконується після циклу і управління циклом Repeat протилежно управлінню циклом While, тобто цикл продовжується, поки умова рівна False і закінчується, коли <умова> робиться рівною True .

S = 1 + 1/2 + 1/3 + .1/n

Program Sum ;

S : real ;

N : integer ;

Begin

S := 0; Writeln(‘введіть n’); read(n);



Repeat

S := S + 1/N;

N := N – 1

Until N = 0;

Writeln(‘S =’, S)

End .
Оператор циклу з параметром (з лічильником) використовується для організації “суворих” циклів, тобто при суворому заданні кількості повторень .



Структура оператора :

  1. якщо лічильник при виконанні циклу нарощує своє значення:

For <параметр> := <початкове значення> to <кінцеве значення> do <оператор>; (управління циклом);

  1. якщо лічильник при виконанні циклу зменшує своє значення:

For <параметр> := <початкове значення> downto <кінцеве значення> do <оператор>;

Установка початкового значення по управління циклом виконується прямо в заголовку:



Sum := 0;

For i := 1 to n do

Sum := Sum + 1/i ;


  • параметр циклу і діапазон його змін може бути тільки порядкового типу !

  • зміна що управляє циклом може бути +1 або –1.

  • Параметр циклу і його межі в тілі не підсумовуються .

  • Параметр циклу не може брати участь в організації діапазону його дій.

  • Оператора For допускає вкладеність але усередині вкладених циклів не можна змінювати параметри зовнішніх циклів.

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

Структура оператора

With посилання на запис або об'єкт Do



<оператор>;
Оператор обробки виняткових ситуацій Try
Оператор є нововведенням мови Object Pascal .

Синтаксис оператора Try

Try . except

Try . finally - ці варіанти оператора Try в системі Delphi

Блок Try . except

Цей блок має повну і скорочену форму запису .



Повна форма запису :

Try <


Except

On <виключення 1> do <

On <исключение2> do <

On <виключення n > do <оператор n> ;

Else <список операторів 2>

End ;
Принцип роботи:

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

- якщо ж при виконанні <списку операторів1> між зарезервованими Try & Except виникає виняткова ситуація, то виконання <списку операторов1> переривається, і управління передається в блок обробки виключення (exception block), який по структурі схожий на оператора Case .

У разі, коли виняткова ситуація співпадає з одним із заголовків альтернатив On .. Do, то виконується відповідний до цієї альтернативі оператор, в іншому випадку виконується <список операторів2> після зарезервованого слова Else .

Скорочений спосіб :

Try


<список операторов1>

Except


<список операторов2 >

end ;


Управління на <список операторів2> буде передано при будь-якій помилці, що виникла в процесі виконання <списку операторів1> .

Якщо ж помилок при виконанні <списку операторів2> виконуватися не буде:

Блок Try . finally

Форма запису:

Try <

Finally <



End;

- якщо в процесі обробки <списку операторів1> помилок часу виконання не відбувається, то після останнього оператора цього списку управління переходить на першого оператора <списку операторів2>.



  • якщо при виконанні якого-небудь оператора <списку операторів1> виникає виняткова ситуація, то оператори цього списку, що залишилися, пропускаються, і управління передається першому операторові з <списку операторів2 >, розташованого за ключовим словом Finally.

Можливе сумісне використання блоків Try.except і Try.finally .

При цьому надається можливість опису виключень за допомогою On.do у Try.except і можливість виконання групи обов'язкових операторів не залежно від виникнення яких-небудь виняткових ситуацій за допомогою блоку Try. finally


1) Try

Try <


Except

On <виключення1> do <

On <виключення n> do <оператор n>

Else <


End;

Finally <

End;


  1. Try

Try <список операторів1>

Finally <список операторів2>

End;

Except


On <виключення> do <

On <виключення n> do <оператор n> ;

Else <

End ;



Управляючі процедури





  1. Управляюча процедура виходу з циклу

Процедура Break

For i:= 1 to 10 do

Begin

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

if <умова> the break ;

<оператор n + 1;.оператор m>

End ;


<ОПЕРАТОР>;

- // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - //-

While <умова> do

Begin


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

if <вираз> then break;.

<оператор>

End ;


<

  1. Процедура продовження управляючого циклу

Процедура Continue

While <умова> do

Begin

<оператор >;

if <вираз> do continue ;.



<оператор>;

End ;


  1. Управляюча процедура виходу з процедури

Процедура Exit

Procedure PRIMER;

Begin

<Оператор>;.

If вираз then exit;.



<Оператор>;

End;


  1. Управляюча процедура завершення програми Halt

Процедура Halt зупиняє виконання програми (end.)

Може бути Halt (

Program PR1;.

Begin


If <вираз> then halt ;.

<оператор>

end .


  1. Управляюча процедура завершення програми з генерацією помилки часу виконання Run Error

.If <вираз> then Run Error (код помилки);


База даних захищена авторським правом ©lecture.in.ua 2016
звернутися до адміністрації

    Головна сторінка