Лекція №2 мова програмування pascal основні елементи мови Алфавіт мови pascal включає: Букви англійської мови (a-z, a-z)



Скачати 142.4 Kb.
Дата конвертації08.12.2016
Розмір142.4 Kb.
ЛЕКЦІЯ №2
МОВА ПРОГРАМУВАННЯ PASCAL
Основні елементи мови

Алфавіт мови PASCAL включає:

Букви англійської мови (A-Z, a-z)

Арабські цифри (0-9)

· Спеціальні символи :

+, - /, *, =,^ ( знак каре ) <, >, (, ), [, ], {, }, ., ;, :, ‘, # (дієз), $, @, _ (підкреслення, пропуск).

Всі інші символи зустрічаються тільки в коментарі { або (* *), // - Object Pascal - коментар до кінця рядка.

якщо {$.}

(*$.*) - директива компілятора, для управління режимом компіляції поточної програми.

Слова на Pascal’і поділяються на три групи :



  • зарезервовані : program, begin, else, if .

  • стандартні (зумовлені) ідентифікатори :

  • імена всіх вбудованих в мову процедур і функцій: read, write, log, sin

  • типів (integer, real, char .) і

  • директив (forward, index, assembler .)

  • ідентифікатори користувача - задаються користувачем і використовуються для позначення міток, const, var, type, procedure & function, модулів користувача.

Вимоги до ідентифікаторів користувача:

  • складається з цифр, букв і знаку підкреслення;

  • перший символ буква або “_”;

  • максимальна довжина 126 символів, обробляється 63!

Відмінність для слів, записаних прописними і рядковими буквами (на верхньому і нижньому регістрах) не робиться.
Структура програми на Pascal’е

Програма складається з двох частин :

1 - декларативна (описова) частина;

2 - виконавча частина

або

1 - розділ описів;



2 - розділ операторів.

Найкоротша програма має вигляд :

Begin

End.


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

Порядок розміщення описів може бути різним, але зазвичай неформально структуру програми на мові Borland PASCAL можна представити в наступному вигляді:

(Заголовок програми)

program <ім'я програми>;


(Декларативна частина)

uses список використовуваних модулів;


Label опис міток;
Const опис констант;
Type опис типів;
Var. опис змінних;
! Threadvar опис потоково-локальних змінних;
Procedure

ѕ опис процедур і функцій

Function

(операторна частина)


Begin

Оператори

End.

Заголовок програми в Object і Borland PASCAL необов'язковий і використовується в декоративних цілях. Проте, якщо він в програмі присутній, то повинен мати вигляд :



Program <ім'я програми>;
2.Директива USES - не обов'язкова, вона використовується, якщо в програмі використовуються константи ~, процедури і функції визначені в стандартних модулях Object і Borland PASCAL окрім модуля System, або в модулях, створених користувачем

USES список ідентифікаторів модулів;

USES CRT, Graph, Dos, Mymodul;

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

Модуль System завжди використовується за умовчанням і указувати його в USES не потрібно.

Розділи опису міток, констант, типів, змінних, процедур, функцій і потокових локальних змінних можуть повторюватися багато разів в рамках розділу описів і у будь-якому порядку.


3.Опис влучний - починається із зарезервованого слова Label

Label <Список влучний>;

де список міток - це ряд міток перечисленних через кому.

Мітки можуть передувати будь-якому операторові програми і відділяються від операторів двокрапкою (:).

Використовуються мітки спільно з операторами переходу goto

Program one;

Label 1;..

.goto 1;.

1: write(‘End’);.

End.


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

Мітки можуть позначатися цілими числами (0.9999) або символьними конструкціями завдовжки не більше 63 символів.


4.Описания констант починається із зарезервованого слова Const, після якого слідує список констант, роздіених комами

Const


A=3;

Namber=10;

Str = ’ABCDE’;
5.Описание типів починається із зарезервованого слова TYPE

Type ідентифікатор типу = опис типу ;

Типи мови Object і Borland PASCAL діляться на дві групи:


  • стандартні (зумовлені) типи;

  • типи, визначувані користувачем (призначені для користувача типи).

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

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

Type

Mass = array[1..10] of real;



R = record

x, у : integer;

end;

6.Опис змінних. Підрозділ опису змінних починається із зарезервованого слова Var, за яким слідує список опису глобальних змінних програми і їх типів.



Var

Список ідентифікаторів : <тип>;

Наприклад :

Var


а, b, з : real;

i, j : integer;

якщо свій тип

Type


Record = record

x, у : real;

col : word

end;


Var

Point : record;

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

тип absolute адреса.

Наприклад:

Var


Ab : byte absolute $0052 : $0064

де $0052 - значення сегмента,$0064 -значеніє зсуву усередині сегменту.


Обидві константи повинні знаходитися в діапазоні $0000,$FFFF(від 0 до 65535)

ab2: array[0..10] of integer absolute massive;

~ab2 повинна розміщуватися за тією ж адресою,что і ~ massive .

Оскільки підрозділів Var може бути декілька, то необхідно стежити, щоб імена змінних в них не повторювалися.


7.Підрозділ опису потоково-локальних змінних має такий же синтаксис що і розділ Var . Змінні цього розділу використовуються при розробці багатопотокових(multithreading) застосувань.
8.Опис процедур і функцій. Якщо в програмі використовуються процедури і функції, то їх визначення повинне передувати основному блоку(операторному).
9.Основний (операторний ) блок - це програма, що використовує все що було описане і оголошене вище він починається із зарезервованого слова Begin і включає операторів розділення ”;” і закінчується End ”. “

Після “.” всі оператори ігноруються .



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

Існує 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 допускає вкладеність але усередині вкладених циклів не можна змінювати параметри зовнішніх циклів.



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

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