Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Структура програми




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

Проілюструємо структуру програми на прикладі:

PROGRAM circle (input,output);

{Обчислення довжини кола і площі круга радіусаг}

CONST pi=3.1416;

VAR г, length, s:real;

BEGIN

read (r);

length:=2*pi*r;

s:=pi*r*r;

write ('довжина =’, length,’ площа =’, S)

END.

У заголовку програми за службовим словом PROGRAM вказу­ється ім'я програми (у даному разі circle)» а в круглих дужках—список параметрів. Закінчується заголовок крапкою з комою. У загальному випадку заголовок має вигляд

PROGRAM ім'я (список параметрів);

За допомогою параметрів програма взаємодіє з «навколишнім світом». Список параметрів — це фактично список імен формальних фай­лів, з якими працює програма.

У мові Паскаль є два стандартних файли, імена яких input (введення) і output (виведення). Вхідні дані читають­ся з файла input, а результати роботи програми записую­ться у файл output, з якого вони і виводяться на пристрій відображення інформації. Оскільки кожна програма видає деякі результати, то заголовок кожної програми містить формальний параметр output.

PROGPAM Ім'я;

При роботі на ПЕОМ вхідні дані, як правило, вво­дяться з екрана дисплея або з магнітного диска, а результа­ти видаються на дисплей або друкуються на принтері.

Блок будь-якої програми може мати до шести розділів, які записуються в такому порядку:

1) розділ опису міток;

2) розділ означень констант;

3) розділ означень типів;

4) розділ опису змінних;

5) розділ опису процедур і функцій;

6) розділ операторів (тіло блоку, тіло програми).

Кожний опис і означення закінчується символом — крапкою з комою. Обов'язковим у кожній програмі є розділ операторів, решта розділів може не бути. Оператори прог­рами обмежуються службовими словами BEGIN і END. Зазначимо, що BEGIN і END не є операторами; вони віді­грають роль операторних дужок. Таким чином, загальна структура програми, яка використовує тільки два стандарт­них файли, має вигляд

PROGRAM Ім'я ;

розділи описів i означень;

BEGIN S1; S2;… Sn; END.

де SI, S2, .... Sn — оператори.

Будь-яку послідовність (серію) операторів, що обмеже­на словами BEGIN і END, називають складеним оператором.

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

Наведена програма circle з перших п'яти розділів міс­тить лише два, а саме,

розділ означення констант

CONST pi = 3.1416;

і розділ опису змінних

VAR г, length, s : real;

Тіло програми містить два оператори присвоювання І оператори вводу (read), виводу (write), які працюють із стандартними файлами input і output.

Між будь-якими операторами програми повинна стояти крапка з комою. Крапка з комою не є символом, що закін­чує оператор, вона відокремлює оператори один від одного. Між останнім оператором і словом END крапка з комою не ставиться, оскільки слово END не є оператором.

Між двома будь-якими послідовними символами в про­грамі можна поставити довільну кількість пропусків. Проте пропуски не повинні зустрічатися всередині іденти­фікаторів, службових слів, чисел і складених символів. Між будь-якими двома рядками програми завжди розумі­ють наявність одного пропуску (маркери кінця рядків інтерпретуються як пропуски), тому ідентифікатори,служ­бові слова, числа і складені символи не можна розривати при переході від одного рядка до іншого.

У програмах крім звичайних констант часто використо­вуються іменовані константи (у програмі circle такою кон­стантою є рі). Імена присвоюються константам у розділі означення констант:

CONST ім'я = константа;

ім'я == константа;

………………….

ім'я == константа;

Під константою тут розуміють або число, абоім'я кон­станти, або рядок.

Наприклад,

CONST variant = 'ізотропний';

е = 268;

nju = 0.34;

eps = l.0E—4;

epsl = eps;

У подальшому замість констант скрізь використовують­ся імена, які їм присвоєні. Константі після її означення у програмі не може бути присвоєно нове значення. Викорис­тання розділу означення констант у програмі робить її більш наочною, підвищує надійність, забезпечує її прості­ші модифікування. Завдяки розділу означення констант можна, наприклад, згрупувати на початку програми ве­личини, які залежать від ЕОМ, на якій розв'язується за­дача, або характерні для даного прикладу, оскільки вони більш помітні і їх простіше змінювати.

У програмі можна використовувати коментарі:

{будь-яка послідовність символів} У деяких реалізаціях мови Паскаль коментарі обмежу­ються не фігурними дужками, а символами (* і *). Комен­тарі, як і пропуски, і кінці рядків належать до відокремлювачів; їх можна поставити в будь-яке місце програми, де дозволяються пропуски. Коментарі допомагають краще розуміти програму, вони можуть використовуватися для пояснення призначення програми, призначення змінних (вказувати на аргументи і результати), окремих частин програми і т. п.

 

2.3. Стандартні типи даних. Стандартні функції. Вирази

Кожний елемент даних (константи, змінні) належить до деякого типу, який означає як множину значень, що може набувати елемент, так і операції, які можна над ни­ми виконувати.

У мові Паскаль є чотири стандартних скалярних типи:

цілий (integer), дійсний (real), булевий (boolean), символь­ний (char). Інші скалярні типи, відмінні від стандартних, можуть бути введені програмістом.

Тип кожної змінної, яка використовується у програмі, повинен бути явно заданий за допомогою описів (у розділі опису змінних). Розділ опису змінних починається із служ­бового слова VAR і має вигляд:

VAR список ідентифікаторів змінних: тип;

………………………………………..

список ідентифікаторів змінних: тип;

Ідентифікатори в списку відокремлюються один від одного комою.

Наприклад,

VAR і, a, m2 : integer;

j, r5 : real;

d: char;

Тут описано 6 змінних: і, а, m2 — цілого типу (integer), j, r5 —дій­сного типу (real), d— символьного типу (char).

На відміну від змінних вказувати тип константи за до­помогою спеціального ідентифікатора типу не слід; маши­на може визначити тип константи за її зображенням.

Цілий тип (integer). Змінні цілого типу можуть набува­ти лише цілих значень. У мові Паскаль можна подати цілі числа з відрізка [minint; maxint], де minint і maxint— цілі константи, які залежать від реалізацій. Наприклад, minint=—32768, maxint = 32767. Спроба обчислити ви­раз, значення якого виводить за межі вказаного відрізка, призводить до помилки. Компілятори з Паскаля, як пра­вило, мають вбудовану числову константу, Ім'я якої ma­xint; значення константи є 32767.

До операндів цілого типу можна застосовувати такі операції: + (додавання), — (віднімання), * (множення), DIV (цілочисельне ділення), MOD (остача від цілочисельного ділення). Такі операції виконуються точно. У вира­зах службові слова DIV і MOD відокремлюються від опе­рандів принаймні одним пропуском. Залежністьміж операціями DIV і MOD виражається співвідношенням:

a MOD b = a --(a DIV b)*b, де а>0 i Ь>0.

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

Якщо для цілих т і п виконується співвідношення DIV п) * п = т або тMOD п = 0, то п є дільником m.

Дійсний тип (real). Змінні типу real можуть набувати як цілі, так і значення з дробовою частиною (—2.75,2.0,3.2Е—5 і т. д.). У пам'яті ЕОМ можна подати дійсні чис­ла з деякої скінченної підмножини дійсних чисел.

До дійсних операндів можна застосовувати такі операції:

+ (додавання), — (віднімання), * (множення), / (ділен­ня); в результаті операції дістанемо результат дійсного типу. В одному арифметичному виразі можна використову­вати цілі і дійсні значення (константи, змінні, підвирази). Якщо один з операндів операції +, -, * є дійсний, то другий перед виконанням операції автоматично перетво­рюється до дійсного типу. При виконанні операції ділення обидва операнди можуть бути і цілого типу, але результат операцій завжди дійсний.

Дійсні значення в ЕОМ запам'ятовуються з обмеженим числом цифр (число у формі з плаваючою крапкою) і тому є наближеними. Тому не слід порівнювати дійсні числа між собою. На практиці замість порівняння двох дійсних зна­чень а і b доцільно користуватися таким співвідношенням:

abs (а—b)<e,

де e — деяка мала константа. Якщо порядок а і b невідо­мий, то e повинно бути функцією одного з них. Наприклад, можна взяти

abs (а — b) < abs * 1E — 6)

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

Зауважимо, що округлення значення х у функції round (x) здійснюється за правилом:

 


(trunc — скорочення від truncate — відтинати, відрізати; round — круглий). Наприклад.

trunc (5.4) = 5, trunc (— 2.8) = — 3, round (4.2) =4,

round (6.9) = 7, round (—2.5) = —2, round (3.5) = 4.

 


Таблиця2.1

Позначення функції Математичне позначення функції Тип аргументу Тип рeзультату Примітка
abs (x) І х І real або іnteger real або integer  
sqr (x) Х2 real або іnteger real або integer  
sqrt (x)   real або іnteger real Х ³ 0
In (x) In х real або   Х >0
exp (x) ex integer real  
cos (x) cos х      
sin (x) sin х     X в радіанах
arctan (x) arctg x     головне значення в радіанах
trunc (x) Виділення цілої частини х real integer  
round (x) Округлення х до цілого Real integer  

Булевий тип (boolean). Булеві (логічні) змінні набува­ють одне значення: true (істинно) або false (хибно). Слова true і false є булевими константами. Булеві змінні як змін­ні інших стандартних типів повинні бути описані в розді­лі опису змінних. Наприклад:

VAR a, b, c: boolean;

До булевих операндів можна застосовувати такі опера­ції: AND(логічне І, кон'юнкція), OR (логічне АБО, диз'юнкція), NOT (логічне НЕ, заперечення).

Якщо а, b, c, d — булеві змінні, то булевим виразом буде, наприклад, вираз

a AND NOT b AND (c OR d).

Крім булевих операцій результат типу boolean видають операції відношення =, < >, <=, >, >= застосовані до виразів будь-якого впорядкованого типу. Наприклад, вираз 2 < 5 має значення true, а 4 < >4 - значеня false.

У мові Паскаль є стандартні функції (предикати), які набувають булевих значень:

odd (x) — задає значення true, якщо х — ціле непарне число; false — якщо парне;

eof (f) — задає значення true, якщо файл f перебуває в стані «кінець файла»; false — у противному випадку (eof — скорочення від End Of File — кінець файла);

eoln (f) задає значення true, якщо файл f перебуває в стані «кінець рядка»; false — у противному випадку (eoln скорочення від End of Line — кінець рядка).

 

Символьний тип (char). Змінна символьного (літерно­го) типу може набувати значень лише одного символу (char — скорочення від character — символ). У мові Пас­каль взагалі не визначена множина символів, а в кожному конкретному випадку використовується множина, яка ви­значається транслятором.

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

Символьні константи — це символи, які взято в апостро­фи (апостроф в рядку повторюється двічі). Наприклад, символьними константами є 'А', 'С', '7', '5*, ':', "",’ ‘. Значення останньої константи — це пропуск, який завжди включається у множину символів.

Константи і змінні символьного типу можуть бути операндами в операціях порівняння. Так, можна записати вирази 'd ' > 'а',':' < >'; ', які видають результат типу bo­olean.

Для відображення множини символів у підмножину натуральних чисел і навпаки існують дві стандартні функції:

ord (С) — визначає порядковий номер символу із заданого набору символів;

chr (I)—символом, порядковий номер якого дорівнює І.

Очевидно, chr (ord (С)) == С.

Зазначимо, що впорядкування заданої множини симво­лів визначається такою властивістю:

якщо С 1 і С2 мають символьний тип i q одна з опера­цій відношення =,< >, <, >=, >, ) ^ то СІ q С2 набуває значення true тоді і тільки тоді, коли те саме зна­чення набуває ord (С1) 6 ord (C2).

Зокрема, справедливі такі відношення:

‘ ‘<’A’<’B’<’C’ …’X’<’Y’<’Z’

‘a’<’b’< …’z’, ‘0’<’1’<’2’<…<’9’.

Існують ще дві стандартні функції pred (попередній елемент) i succ (наступний елемент), які можуть бути за­стосовані до символьних аргументів:

pred (С) — визначає символ, який знаходиться в зада­ній впорядкованій множині символів безпосередньо перед символом С;

succ (С) визначає символ, який знаходиться безпосе­редньо після символу С.

Усі елементи множини символів, крім крайніх, мають попередній І наступний елементи. Останній елемент не має наступного, перший — попереднього. Якщо відповідного елемента немає, то результат функції не визначено.

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

1) NOT

2) * , /, DIV, MOD, AND (операції типу множення)

3) +, —, OR (операції типу додавання)

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

Операції одного старшинства виконуються послідовно зліва направо.

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

Наведемо приклади деяких виразів:

1. sqrt (2*sqr (x) + 1) - 3*sin (x)/(x + у) + exp (y+ ln(x)).

Тут для операції піднесення до степеня використано співвідношення

xy = ey lnx

2. (-b + sqrt (b*b – 4*а*с))/(2*а)

1.(х > 1) AND (x < 2)

 


Поделиться:

Дата добавления: 2015-08-05; просмотров: 74; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты