Б С Бусигін - Прикладна інформатика - страница 26
Програма на мові ТП складається з заголовку блока19 і закінчується точкою. Але мова ТП дозволяє максимально спрощувати запис необхідних дій, тому найкоротша програма (яка нічого не робить) виглядає у формі блока так.
Begin End.
А якщо навести приклад програми у вигляді, що наводиться у всіх керівництвах по мовам програмування, де вона завжди привітає навколишній мир, то треба написати так.
Begin
Writeln ('Hello, World!'); End.
Після натиснення клавіш Ctrl+F9 у середовищі редактора ТП комп'ютер виконає програму і миттєво повернеться назад у середовище редактора. Щоб побачити результат роботи програми треба натиснути сукупність клавіш Alt+F5. Це дозволить побачити на екрані монітору цю вельми відому фразу. Натиснення будь-якої клавіші поверне Вас зворотно у редактор ТП.
Загальна (повна) структура програми на ТП приведена на рис. 8.l5.
Program ProgName; {ProgName - ім'я програми, але сам оператор Program - необов'язковий}
Uses
... ; {Список модулів, з яких програміст для своїх цілей використовує різні об'єкти: процедури, функції, змінні і таке інше}
Const
... ; { Визначення констант програми}
Type
... ; {Опис типів змінних}
Var
... ; {Перелік змінних, що використовуються у програмі з зазначенням їхніх типів}
ВИЗНАЧЕННЯ ПРОЦЕДУР {заголовки й тіла процедур} ВИЗНАЧЕННЯ ФУНКЦИЙ {заголовки й тіла функцій}
Begin
... {Операторна частина програми} End.
Рисунок 8.15. Загальна структура програми на мові ТП ( 1 - розділ опису даних, 2 - операторна частина (розділ операторів)
19 Блок - смислова частина програми, що завершується точкою. Уся інформація, що розташована після точки останнього зарезервованого слова end середовищем ТИ до уваги не приймається!!!
Таким чином, програма починається з заголовка Program і імені програми, а блок вміщує розділ описів і розділ операторів. Розділ операторів уявляє собою так званий складений оператор (операторні дужки Begin End), який вміщує послідовність операторів, що виконуються і розподілені точкою з комою (;).
Можна покращити програму 'Hello, World!', додав у її кінці оператор процедури Readln без параметрів! Він зупиняє роботу програми у екрані результатів і чекає натиснення клавіши Enter для завершення роботи програми:
Begin
Writeln ('Hello, World!'); Readln; End.
Але, коли програміст реалізує складну програму вона повинна відповідати стандартам мови і включає дві головні частини: опис даних і операторну частину, яка описує послідовність дій для виконання алгоритму програми. Частина опису даних складається зі стандартних розділів, які Ви можете вводити за необхідністю (рис. 8.16).
Real A,B,C,D; Begin
B := 2.0;
C := 7; A := B + C;
D := b + c; Writeln('Resultat=', A, D)
End.
Рисунок 8.16. Програма обчислення виразів A=B+C та D=B+C.
(B=2.0; C=7)
Вправи
1. Яка є повна структура програми на мові Турбо Паскаль?
2. Які розділи входять у програму?
3. Чи можна продовжувати операторну частину програми після кінця блоку (End. )?
4. Запишіть у вигляді програм ТП вирази з попереднього розділу та виконайте їх на комп'ютері.
8.6. Інтерфейс програми користувача. Процедури введення-виводу
Коли програма завантажена у комп'ютер і починає виконуватися, настає етап взаємодії трьох істот (рос. - сторон, существ), тобто спілкування наступних сторін:
О користувача програми, яку виконує комп'ютер;
© розробника програми, якою користується користувач;
© комп'ютера, який забезпечує діалог, запрограмований розробником.
При навчанні програмуванню найпростішим випадком є ситуація, коли студент програмує якийсь алгоритм, виступаючи при цьому одноразово і програмістом і користувачем. Тоді він повинен сам прогнозувати ситуації взаємодії користувача (тобто себе) з комп'ютером. Останній повинен організувати запроси на виконання деяких дій, а також їх виконувати (рис. 8.17).
ПРОГРАМІСТ
Кодує повідомлення |змі сту роботи програми та| сценарій її роботи, тобто скільки і яких даних
повинен ввести користувач для вірної роботи алгоритму програми та забезпечити вивід потрібних результатів
ПРОГРАМА
Працює програма обчислення корнів квадратного рівняння Розробник: Драч А.А.
Уведіть коефіцієнти а, Ь, с:
ЕКРАН КОМПЬЮТЕРА
Працює програма обчислення корнів квадратного рівняння Розробник: Драч А.А.
Уведіть коефіцієнти а, Ь, с:
КОРИСТУВАЧ
Відповідає на закодовані
програмістом у програмі запитання і вводить потрібні для
її роботи дані.
КОМП'ЮТЕР
Виводить на екран інформацію, запитання, отримує з екрана дані та виконує обчислення
Рис. 8.17. Зміст інтерфейсу користувача
Найпростіша ситуація при виконанні програми полягає у тому, що коли користувачеві треба виконати якісь дії, то потрібно знати, а які ж вони повинні
20бути. Наприклад, по ходу виконання програми, треба увести два числа дійсного типу, тобто числа, які мають крапку у своєму відображенні (2.357 та 42.9). Виникає питання: як попередити користувача, що комп'ютер чекає від нього тільки уводу (рос. - ввода) двох дійсних чисел (з крапками серед цифр при відображенні)?
Ось тут, розробник програми (для майбутнього користувача), повинен зробити попередження, що чекає у цей момент від нього комп'ютер. У Турбо Паскалі для цього існує оператор процедури з іменем Writeln, фактичними параметрами якого є стрічки (рос. - строки), що підказують користувачеві що робити далі.
Взагалі, для введення інформації у комп'ютер і вивіду її з нього існують чотири процедури: Read, ReadLn, Write та WriteLn. Як відомо, ТП не відрізняє великих літер від малих то не буде помилки, якщо імена ціх же процедур будуть записані тільки малими символами: read, readln, write та writeln.
Процедура читання Read - забезпечує введення даних: чисел, символів, стрічок і таке інше. Нагадуємо, що як тільки у програмі зустрічається оператор Read, комп'ютер переходить у режим очікування поки користувач не введе потрібну кількість даних відповідного типу. І поки вони всі не будуть введені, робота комп'ютера не відновиться!
Формат виклику: Read (xl, x2, x3... , xn);
Де х1, х2... , хп - змінні типів, що описані в розділі програми Var, при розбіжності поміж даними що описані і які у них вводяться виникає помилка введення-виводу.
Процедура ReadLn при повторному виклику зчитує дані з нової стрічки.
Приклади: Var
A, B, C, D, Suml, Sum2 : real; Begin
Read(A,B); 1.8 3.4 <Enter>
Sum1:= A + B;
Read(C,D); 2.87 0.7 <Enter>
{Поміж числами повинно бути не менш одного пробілу}
Sum2:= C + D; Readkey End.
Використання процедури ReadLn
ReadLn (A,B); l.8 3.4 <Enter>
Sum:= A + B;
ReadLn (C,D); 2.6 0.7 <Enter>
Sum2:= C + D;
У процедурах Write и WriteLn мається можливість форматування вихідних даних, тобто запису явно завданих стрічкових виразів біля імен змінних з виразами, що визначають ширину поля виводу:
Приклад: Вивід цілих значень, що мають опис:
Var
I : Integer;
Значення, що
Вираз для виводу
Результат на екрані
міститься у
цього значення
<— ліва крайня позиція
змінній I
поля вивіду екрану
134
Write(I);
134
56789
Write(I);
56789
287
Write(I,I,I);
287287287
134
Write(I:6);
134
1
Write(I:l0); 1
Якщо для цілого числа при виводі все дуже просто, тобто треба розмістити на екрані тільки знак і значення змінної, то для дійсної змінної все значно складніше. Це виникає з того, що взагалі для дійсних значень існує дві форми представлення:
О з фіксованою крапкою ( -34.295 );
в з плаваючою крапкою або у експоненціальній формі (тобто 182600.0 = 1.826*105= +1.826Е+05 = 18.26Е4 і так далі).
При виводі числа з фіксованою крапкою потрібно відображати чотири складові:
О знак числа (знак "плюс" (+), як правило, не відображується); в цілу частину;
© крапку, що розподіляє цілу та дробову частини числа; О дробову частину.
У випадку виводу числа типу REAL з плаваючою крапкою для відображення його стандартно відводиться 18 позицій для восьми складових (рис. 8.18):
О пуста позиція (0);
в знак числа (пуста позиція якщо + або -) - займає одну позицію (1); © ціле значення мантиси (2); О розподіляюча крапка (3); © дробова частина мантиси (4);
© буква Е, що відзначає початок значення порядку числа (5); в знак порядку: плюс (+) або мінус (-) (6); © числове значення порядку (7).
Номери складових числа -—
0 12 3 4
5
б 7
Саме число —
- 2 . 815239 Е + 02
Рисунок 8.18. Складові числа з плаваючою крапкою
Примітка: У комп'ютерах типу Pentium III і вище відводиться ще більше знаків. А для зручності читання результатів можливо управляти кількістю знаків, що виводяться.
Приклад: Вивід дійсних значень, що описані:
Var
R : real;
{У поле шириною 18 символів виводиться десятинне значення змінної R у форматі з плаваючою крапкою й з 2-ма пустими позиціями перед числом, з яких друга - виділяється під знак числа}
Значення, що
Вираз для виводу
Результат на екрані
міститься у
цього значення
<— ліва крайня позиція
змінній R
поля вивіду екрану
715.432
Write(R);
7.1543200000Е+02
-1.919E+01
Write(R);
-1.9190000000Е+01
567.986
Write(R/2);
2.8399300000Е+02
511.04
Write(R:l5);
5.110400000Е+02
-511.04
Write(R:l5);
-5.110400000Е+02
46.78
Write(-R:l2);
-4.67800Е+01
511.04
Write(R:8:4);
511.0400
-46.78
Write(R:7:2);
-46.78
-46.78
Write(R:9:4);
-46.7800
Приклад програми з форматами для виводу даних:
Program MyFirst;
Uses Crt;
Var
A, B : Integer; Ratio : Real; Begin
Write ('Vvedite dva chisla A, B: '); ReadLn(A,B);
WriteLn('A= A:4, ' B= B:6); Ratio := A / B;
WriteLn('Rezultat Ratio = Ratio:7:2); Write('Najmite <Enter>_'); Readln; End.
На рис. 8.19 приведена програма з великою кількість коментарів, яка має досить розвинутий інтерфейс користувача.
Приклад програми на мові Турбо Паскаль, яка реалізує обчислення _згідно формул та інтерактивно взаємодіє з користувачем._
Program Second; { Коментар: Типова програма на мові Турбо Паскаль}
Uses Crt; {Підключення модуля Crt}
const t=2.34 5; {числова константа}
const h : integer = 55; {типізована константа}
Var {оператор опису змінних }
a,b,c,r, s,Res : Real; {дійсні змінні} i,j,k,n : integer; {цілочисельні змінні} str : string [20]; {рядкова змінна}
Begin {Початок основного блоку програми}
ClrScr; {Очищення екрану процедурою ClrScr } Writeln('Vvedite dannye dlya programmy: b,c,r,s' Readln(b,c,r,s); {Вводимо з клавіатури дані для задачі}
{ Реалізуємо наведену праворуч формулу — } {засобами функцій та операцій Турбо Паскалю }
{ й заносимо результат у змінну а }
{оператором присвоювання :=} {Піднесення до ступеню реалізуємо у вигляді формули: az = exp(z*ln(a)) }
a:=exp(l/4*ln(b*b*b+c*c*c))/(cos (sqr(r))*
sin(exp(2/5*ln(s))));
Writeln('Rezultat a=', а); {Виводимо на екран результат}
{Обчислюємо значення t згідно формули}
Res:=a*(sqr(b)*b/c); {та заносимо у змінну Res}
t = a *
c
Writeln('Rezultat Res=
Res
Writeln('Na segodnya hvatit?' Write ('Vvedite Vashe imya: ' {Виводимо на екран Res }
Writeln;
Readln(str); {Вводимо}
{власне ім'я у змінну str}
Writeln;
Writeln('Zdravstvuyte, ',str); Writeln; Writeln(' i do svidaniya ' ,str); Readln;
End.
Кінець програми
Похожие статьи
Б С Бусигін - Прикладна інформатика