СТРУКТУРА ПРОГРАМИ.

Слід зауважити, що крім чотирьох блоків: опису констант, змінних, типів та основної програми програма на Паскалі може містити ще блок опису міток та блок описання підпрограм. Але використання в програмі міток небажане, а з блоком опису підпрограм ми познайомимося пізніше.

Отже, формулюємо нашу першу задачу, яку ви вже напевне розв’язували на уроках математики.

 

 

Задача 1.1. Обчислити довжину кола.

Розв’язання:

{ Спочатку йде блок описів }

Const { відповідно розділ сталих }

pi = 3.1415926; { цю сталу величину можна було б і не описувати, }

{ так як ПЕОМ її знає в даній мові програмування }

Var {розділ змінних}

R, L : real; { R і L – дійсні числа }

{ зверніть увагу на спосіб запису – спочатку позначення }

{ змінних, а після двокрапки – до якого типу змінних вони відносяться }

Begin

{ початок програми – блок опису дій }

Read (R); { чекаємо вводу з клавіатури значення радіуса }

L := 2*pi*R; { зверніть увагу на спосіб запису формули! }

Write(’ Довжина кола становить ’, L); { вивід на екран результату }

End. { кінець програми }

Як бачимо, наш партнер розуміє англійські слова “read” і “write”, які в перекладі на українську означають відповідно “прочитати” і “написати”.

Сформулюємо ще два правила нашої гри.

Правило 5: Скрізь, де в математиці ми пишемо знак = потрібно писати знак := який називається знаком присвоєння, крім двох винятків: 1) в розділі сталих пишеться = і 2) якщо йде перевірка виконання якоїсь умови, то також пишеться знак =.

Для розуміння символу := проведемо таку аналогію. Уявимо що у вашому гаманці є 100 доларів. Вам віддали борг в 50 доларів. Скільки стало в вашому гаманці? Вірно, 150 доларів. Тобто, до того що в ньому було, ви ще щось додали. Вираз типу а := а + bі є аналогією вашого гаманця, якщо припустити, що а – це вміст гаманця, а b – борг, що вам повернули. Тепер стає зрозумілим, чому використовують знак присвоєння :=, а не просто знак рівності =, адже цілком очевидно, що при використанні знаку = ми не мали б права записати, що а = а + 50, тобто, що 100 доларів дорівнюють 150 доларам. В той же час ми маємо повне право написати, що в гаманці знаходиться те, що в ньому було раніше плюс те, що ми тільки що поклали! Наголошуємо, що := є одним знаком, а не поєднанням двох знаків – двокрапки : і рівності = .

Тепер дещо про спосіб запису формул. На мові математики ми записали б так L = 2pR, але наш партнер по грі не розуміє, що якщо стоять різні змінні, то між ними автоматично розуміється знак множення, тому необхідно дотримуватись наступного правила 6: знаки множення ставляться обов’язково, весь математичний вираз обов’язково записується в один рядок, тобто “багатоповерхові” дроби наш партнер по грі не розуміє. Останнє потрібно пояснити, не можна використовувати “багатоповерхові” дроби у звичному для нас вигляді. Якщо ж ми запишемо цей дріб в один рядок при допомозі дужок і запишемо вірно, то проблем при обчисленні не буде ніяких!

Отже, можете ввімкнути вашого електронного партнера і спробувати свої сили. Як завантажити оболонку програмування і які в ній необхідно виконувати команди – дивись додаток 1, автор вважає, що з даним питанням кожен користувач ПЕОМ може розібратись самостійно.

 

 

Поняття Опис Приклад
Алфавіт мови Літери латинського алфавіту, цифри, спеціальні сим­воли, зарезервовані слова. A...Z, a...z, 0...9, + - * / = < >[ ]{ }$ ^ & #
Ідентифікатори Імена об'єктів (констант, типів даних, змінних, функ­цій, програм). Правила запису ідентифікаторів: · всі ідентифікатори складаються з літер латинського алфавіту, цифр, починаються з літери або знака,«_»; · Великі і малі літери не розрізняються. А, В begin Write Test My_First_Program
Елементи даних     Константа - комірка пам'яті, значення якої протягом виконання програми залишається постійним. 45, Pi
Змінна - комірка пам'яті, значення якої протягом виконання програми може змінюватися. a, b, c
Коментар Призначений для внесення до тексту програми пояснень. Обмежується символами { } або (* *) {Це коментар) (*Це коментар*)

§ 8 Службові слова та функції мови Turbo Pascal

Службові слова мови Turbo Pascal

and — і array — масив begin — початок case — вибір const — сталі div — ділення без остачі do — виконати downto — униз до else — інакше end — кінець file — файл for — для function — функція goto — перейти до if — якщо in — в label — позначка mod — остача nil — нуль not — ні of — з or — або packed - стиснутий procedure – процедура program - програма record — запис repeat — повторювати set — множина then — то to — до type — тип until — доки var — змінні while — доки та інші.

Програма — це послідовність команд, за допомогою яких записують алгоритм розв’язування задачі.

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

Стандартні типи даних

За допомогою програм МВР вирішуються найрізноманітніші завдання, тому необхідно мати можливість створювати й обробляти різні типи даних. Основна одиниця інформації — окремий елемент даних, наприклад число або символ.

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

Тип даних Позна­чення Опис Обсяг пам'яті Приклади
Цілочисельний тип Byte Цілі числа в інтервалі [0; 255] 1 байт 0, 5, 245
Shortint –128..127 1 байт -5, 26, 96
word 0..65535 2 байта 0, 36, 6545
Integer (основний) Цілі числа в інтервалі [-32767; 32767] 2 байта 457, -568, -7, 0
longint –2147483648..2147483647 4 байта -2356, 988456
Дійсний тип single 1.5·10–45–3.4·1038 4 байта 236,36; 6954,369
Real (основний) Значення з плавоючою крапкою, що містить мантису (до 11 значущих цифр) і експоненту - степінь числа 10 (від 10-39 до 1038) 6 байтів 0.4,-1.8, 0.172Е+3, 37Е-4
extended 3.4·10–4951 –1.1·104932 10 байт 0.4,-1.8, 0.172Е+3,
Символьний тип даних Char Символьні константи містять один символ, який обмежено апострофами 1 байт А', 'є', Y, '2'
Рядковий тип даних String Рядок символів довжиною не більше 255 Зале­жить від довжини  
Логічний тип даних Boolean Константи логічного типу мають два можливі значення: True (істинне) і False (хибне) 1 байт 5<3 - True 5+8>14- False

 

Операції відношень

Результатом операції відношень є значення логічного типу:

 

 

> більше ніж   < = менше ніж або дорівнює
> = більше ніж або дорівнює = дорівнює
< менше ніж < > не дорівнює

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

При практичному програмуванні вибираючи тип змінної, намагайтесь вибирати його найменшим, але таким, що точно охоплює весь інтервал значень, що може зустрітись при виконанні обчислень. Запас створювати немає потреби, а з збільшенням кількості змінних і об’єму програми запас пам’яті ПЕОМ буде катастрофічно зменшуватись. В наш час «пентіумів» це можливо і не така вже велика проблема, але для тих хто працював, або ще й досі продовжує працювати на БК, Корветах, УКНЦ, Пошуках – ця проблема досить відома. Тому дотримуйтесь в програмуванні життєвого правила: “Економіка повинна бути економною”.

Наголосимо на одній важливій вимозі до імен сталих та змінних. Першим символом у іменах сталих або змінних, або як їх називають у програмуванні ідентифікаторах повинна бути обов’язково літера.

Опис констант і змінних

Розділ опису констант починається з службового слова Const, за яким йде опис назви сталих величин і відповідних їм числових або символьних значень. Назва відповідної сталої величини (а також і змінної) повинна бути унікальною, тобто вживатись тільки один раз. Великі і малі літери у назвах величин ПЕОМ розуміє як однакові, тобто константи або змінні виду рі та РІ для ПЕОМ позначають одну і ту ж величину.

Розділ опису змінних розпочинається з службового слова Var за яким йде опис назв змінних і їх типів. Крім вище перечисленних типів у мові Pascal існує ще один тип величин типу Boolean, який називають логічним або булівським на честь видатного математика Буля, який створив одноіменний розділ алгебри. Даний тип може набувати тільки двох значень: true і false, відповідно “істинно” і “хибно”. Інколи для зручності їм ставлять у відповідність число 1 і 0, але це є не зовсім вірно. Незважаючи на наукову неточність останньої відповідності, ми також будемо інколи проводити таку ж аналогію з метою спрощення наочності при пояснення тієї чи іншої задачі чи проблеми. Більш детальніше типи змінних ми розглянемо в процесі подальшої розповіді.

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

Блок опису дій є самим головним, навіть, якщо бути принциповим, то власне він і є самою програмою, а все те що ми писали до цього є вступом. Тут слід було б відмітити, що в порівнянні з музичним твором, все те, що ми пояснювали нашому партнеру є не чим іншим як поясненням, які саме музичні інструменти повинні приймати участь в нашому творі, а самі ноти для виконання нашої опери тільки тут і починаються.

Блок опису дій складається з інструкцій трьох типів: команд для виконавця, дій виконавця і повідомлень виконавця, – або як говорять програмісти: вводу, операторів і виводу. Тобто, продовжуючи паралельно нашу музичну освіту, ми можемо образно пояснити це так:

n спочатку музикантам роздають ноти, або диригент повідомляє їм вхідні дані: повідомляє що і як потрібно прочитати або з нотного листа, або з рухів диригента;

n сам музикант (наша ПЕОМ) виконує інструкції записані в нотному листі, або відповідно до наказів диригента;

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

Організація вводу-виводу

Власне кажучи, нас в даний момент цікавить саме перший і останній процес спілкування між диригентом (програмістом) і музикантом (ПЕОМ). Саме цей розділ спілкування називають в програмуванні організацією вводу–виводу інформації. В умовах мови програмування Pascal та нашої гри цій меті служать дві команди, або як ще іноді кажуть дві інструкції: Read (Readln) та Write (Writeln), які на зрозумілу нам українську мову переводяться як прочитати (отримати) та написати (вивести, надрукувати) необхідні дані. Закінчення “–ln в деяких варіантах команд трактується як “перейти на новий рядок” (скорочення від англійського – line new).

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

Write(s1, t, ’ дані про особу ’, man);

вказує на те, що на екран комп’ютера будуть виведені значення змінних sl, t, після чого буде написана фраза ” дані про особу ” і в кінці надруковано значення змінної man. Відсутність вище вказаного закінчення “–ln говорить про те, що подальші повідомлення будуть виводитись на екран саме в цьому рядку, а не в іншому місці. Уважні читачі мабуть вже самі помітили, що між символами ’ ’ можуть стояти будь–які повідомлення на довільній розмовній мові, найбільш зрозумілій користувачу або програмісту.

При виводі повідомлень на екран ПЕОМ ми маємо змогу виводити інформацію в такому вигляді, в якому нам потрібно. Для цієї мети в Паскалі передбачено форматування числових значень змінної, яке в загальному випадку записується так:

write(s:n:m); {s – змінна типу real, а n,m – integer}

де n – кількість цифр у всьому числі;

m – кількість значущих цифр у дробовій частині змінної.

Якщо загальна кількість цифр вказана меншою, ніж потрібно при виводі з вказаною кількістю цифр після коми, то компілятор Паскаля автоматично додає необхідну кількість значущих цифр. Наприклад, вираз

write(10*pi:1:3);

повинен по ідеї вивести тільки одну цифру, але виконання програми:

program demowrite1;

uses crt;

begin

clrscr; { очистити екран }

write(10*pi:1:3);

readln;

end.

дає на екрані монітору результат 31.416.

Зверніть увагу на фразу uses crt; перед початком програми. Ця фраза повідомляє, що до нашої програми автоматично підключається модуль crt. Модуль – це додаткова програма, яка підключається до вашої програми. Існують стандартні модулі, до яких відноситься і модуль crt, крім того кожен програміст може створювати власні модулі, які ще прийнято називати бібліотеками, і підключати їх до своїх програм. Зроблено це для того, щоб зменшити об’єм програми, яку потрібно написати, і мати можливість використовувати раніше написані програми багато разів. З питання створення власних модулів рекомендуємо звернутись до технічної документації, яка поставляється фірмою – розробником разом з компілятором Паскаля.

Ми ж лише вкажемо на деякі операції, що містяться в згадуваному модулі crt:

n ClrScr – очищення екрану монітору;

Рис. 1

n Gotoxy(x,y) – встановити курсор на екрані у точці з координатами (х,у). Тут потрібно сказати про координати екрану. Екранна система координат має вигляд, як показано на рис. 1. Зверніть увагу, що початок координат знаходиться в лівому верхньому куті екрану. Крім того, вісь ОY направлена вниз. У текстовому режимі значення координат змінюються в межах:

0 _ х _ 79

0 _ у _ 24

тобто можна виводити 80 символів по осі ОХ і всього 25 рядків.

Крім того, графічний екран відокремлено від текстового, тому до цього рисунку ми повернемось, коли будемо розглядати графічні команди.

n TextColor (color);– встановлює колір літер тексту.

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

 

 

№ кольору Ім’я кольору Значення кольору
Black чорний
Blue синій
Green зелений
Cyan голубий
Red червоний
Magenta фіолетовий
Brown коричневий
LightGrey світлосірий
DarkGrey темносірий
LightBlue світлосиній
LightGreen світлозелений
LightCayn світлоголубий
LightRed рожевий
LightMagenta бузковий
Yellow жовтий
White білий

Таблиця 2. Значення кольорів у модулі crt.

 

А взагалі слід відмітити, що значення параметру Color може змінюватись в межах від 0 до 255, в залежності від типу монітору (CGA, EGA, VGA і т.д.), і навіть в більших.

n TextBackGround (color); – встановлює колір для фону символів.

n Delay (Time); – затримка тривалості виконання програми. Одночасно може виконувати роль тривалості звукового сигналу (див. нижче).

n Sound (n); – подання звукового сигналу частоти n на вмонтований в ПЕОМ внутрішній динамік (не путайте з Sound – картою!).

n NoSound; – відключення звукового сигналу.