КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Структура програмиПрограма, записана мовою Паскаль, складається із заголовку і блоку і закінчується крапкою. Проілюструємо структуру програми на прикладі: 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. Спроба обчислити вираз, значення якого виводить за межі вказаного відрізка, призводить до помилки. Компілятори з Паскаля, як правило, мають вбудовану числову константу, Ім'я якої maxint; значення константи є 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.
Булевий тип (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 ' > 'а',':' < >'; ', які видають результат типу boolean. Для відображення множини символів у підмножину натуральних чисел і навпаки існують дві стандартні функції: 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)
|