Для виведення результатів використовується оператор. Turbo Pascal

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

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

Спочатку оператори введення (формати операторів):

Read(<Список ввода>);

Readln(<Список ввода>);

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

Виконання операторів введення відбувається так: хід програми припиняється, на екран виводиться курсор, комп'ютер очікує від користувача набору даних для змінних, імена яких вказані у списку введення. Користувач із клавіатури вводить необхідні значення в тому порядку, в якому вони потрібні списком введення, натискає Enter. Після цього набрані дані потрапляють до відповідних змінних і виконання програми триває.

Примітка: дані під час введення розділяються пробілами.

Різниця між роботою процедур Read і Readln (від Read line) полягає в наступному: після виконання Read значення наступного даного зчитується з цього рядка, а після виконання Readln - з нового рядка.

Для виведення інформації у Паскалі також є дві команди:

Write(<Список вывода>);

Writeln(<Список вывода>);

Такий формат використання Write та Writeln дозволяє виводити на екран монітора дані зі списку виводу. Елементами списку виведення можуть бути імена змінних, вирази, константи. Перш ніж вивести на екран комп'ютер, значення виразів спочатку обчислить. Елементи списку, як і в операторах введення, розділяються комами.

Відмінність між двома операторами висновку така: після виконання оператора Writeln (від Write line) відбувається перехід на новий рядок, а після виконання інструкції Write, перехід на новий рядок не відбувається і друк за наступними командами виводу Write або Writeln відбуватиметься на тому самому рядку. При виклику оператора Writeln без параметрів просто відбувається перехід на новий рядок.

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

Program Inteface;

Write("Введіть радіус кола"); (Друк на екрані прохання про введення)

Readln(R); (Введення значення змінну R з клавіатури)

S:=4*ARCTAN(1)*SQR(R); (Обчислення площі кола (pR2))

Writeln("Площа кола радіусом", R, "рівна", S)

Ця програма запитує користувача значення радіуса кола, забезпечує можливість ввести його значення, розраховує і виводить на екран величину площі кола з таким радіусом. Таким чином, з'являється можливість, не вносячи змін до тексту програми, вводити різні значення радіусу і отримувати відповідні значення площі кола. Для цього достатньо кілька разів запустити програму. Також ця програма демонструє таке правило: видача результатів має бути прокоментована так, щоб було зрозуміло зміст надрукованих чисел. Дійсно, адже можна було б обмежитися Writeln(S), але значення виведеного програмою числа в цьому випадку було б зрозумілим лише тому, хто цю програму написав.

ОПЕРАТОРИ ВВЕДЕННЯ ТА ВИСНОВКУ

Розглянемо організацію введення та виведення даних з термінального пристрою. Термінальний пристрій - це пристрій, з яким працює користувач, зазвичай екран (дисплей) і клавіатура. Для введення та виведення даних використовуються стандартні процедури введення та виведення Read та Write, що оперують стандартними послідовними файлами INPUT та OUTPUT.

Ці файли розбиваються на рядки змінної довжини, що відокремлюються один від одного ознакою кінця рядка. Кінець рядка задається натисканням клавіші ENTER.

Для введення вихідних даних використовуються оператори процедур введення:

Read(A1,A2,...AK);

ReadLn(A1,A2,...AK);

Перший з них реалізує читання До значень вихідних даних та присвоєння цих значень змінним А1, А2, ..., АК. Другий оператор реалізує читання До значень вихідних даних, пропуск решти значень до початку наступного рядка, привласнення лічених значень змінним А1, А2, ..., АК. Третій оператор реалізує пропуск рядка вихідних даних.

При введенні вихідних даних відбувається перетворення з зовнішньої формиуявлення у внутрішню, що визначається типом змінних. Перемінні, що утворюють список введення, можуть належати або до цілого або до дійсного, або до символьного типу. Читання вихідних даних логічного типу у мові ПАСКАЛЬ неприпустимо.

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

var rV, rS: Real;

iW, iJ: Integer;

................

Read(rV, rS, iW, iJ);

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

Для виведення результатів роботи програми на екран використовуються оператори:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

Перший із цих операторів реалізує виведення значень змінних А1, А2,...,АК у рядок екрана. Другий оператор реалізує виведення значень змінних А1, А2, ..., АК та перехід до початку наступного рядка. Третій оператор реалізує пропуск рядка та перехід до початку наступного рядка.

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

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

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

Оператор виводу дозволяє встановити ширину поля виводу для кожного елемента списку виводу. У цьому випадку елемент списку виводу має вигляд А:К, де А - вираз чи рядок, К - вираз чи константа цілого типу. Якщо значення, що виводиться, займає в полі виведення менше позицій, ніж До, то перед цим значенням розташовуються пробіли. Якщо значення, що виводиться, не поміщається в ширину поля К, то для цього значення буде відведено необхідну кількість позицій. Для величин дійсного типу елемент списку виведення може мати вигляд А:К:М, де А - змінна або вираз дійсного типу, К - ширина поля виведення, М - число цифр дробової частини значення, що виводиться. К і М - вирази чи константи цілого типу. У цьому випадку дійсні значення виводяться у формі десяткового числа з фіксованою точкою. Приклад запису операторів виводу:

. . . . . . . . . . . .

var rA, rB: Real; iP, iQ: Integer;

bR, bS: Boolean; chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

Мітки. Оператор безумовного переходу.

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

Мітка в стандарті мови Паскаль є цілим невід'ємним числом. Усі мітки, що використовуються в програмі, повинні бути перераховані в розділі опису міток, що починається службовим словом Label, наприклад:

Однією міткою можна позначити лише один оператор. Мітка від позначеного оператора відокремлюється двокрапкою.

6: Writeln (14/2);

У всіх наведених раніше програмах оператори виконувались один за одним у порядку, в якому вони були записані в тексті. Така алгоритмічна структура називається прямим дотриманням. Однак, у мові Паскаль спочатку існує оператор, який порушує прямолінійне виконання програми, що передає управління довільну її точку. Така інструкція називається безумовним переходом і має такий формат:

Goto<метка>;

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

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

ЕЛЕМЕНТИ СТРУКТУРНОГО ПРОГРАМУВАННЯ

Структуризована програма (або підпрограма) - це програма, що складається з фіксованого безлічі базових конструкцій. Розглянемо основні визначення та способи утворення цих конструкцій у схемах алгоритмів.

З операцій, розвилок і злиттів будуються базові конструкції: слідування, розгалуження, цикл. Застосовуючи лише ці три конструкції, можна реалізувати алгоритм розв'язання будь-якого завдання.

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

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

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

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

Операція може бути реалізована будь-яким оператором мови ПАСКАЛЬ (простим або складеним), або групою операторів, за винятком оператора переходу GOTO.

У мові ПАСКАЛЬ кількість базових конструкцій збільшена до шести, це:

Слідування;

Розгалуження;

Цикл із передумовою;

Цикл із постумовою;

Цикл із параметром;

Умовний оператор

Однією з основних алгоритмічних структур є розгалуження (альтернатива).

Якщо умова виконується, то буде виконано інструкцію "1", якщо ні, то - інструкцію "2". Незважаючи на те, що у схемі присутні дві дії, виконано буде тільки одну, оскільки умова або хибно, або істинно. Третього не дано. Така схема дозволяє вирішувати завдання, в яких залежно від обставин, що склалися, потрібно вчинити ту чи іншу дію. Немає жодного сумніву, що кількість завдань такого роду величезна. Понад те, дуже складно придумати реально значуще завдання, алгоритм виконання якого містив у собі просте пряме слідування команд. Навіть примітивний приклад, взятий з математичного курсу, як ви побачите, не може бути вирішений без використання розгалуження. Отже, необхідно обчислити значення виразу y=1/x. Вам відомо, що дана функціяякий завжди має значення, тобто для всіх значень аргументу існує значення результату. Наше завдання так скласти алгоритм, щоб виконавець ні в якому разі не став у безвихідь, навіть при отриманні нуля як аргумент. Сформулювати це природною мовою не важко:

1. Отримати значення x.

2. Якщо x=0, то повідомити, що значення не має, інакше - обчислити y як 1/x.

Таким чином використовується наведена вище алгоритмічна структура. Вона може бути виражена простими словами:

Якщо<усл.>(Якщо виконується умова)

то<действие 1>(тобто виконати дію № 1)

інакше<действие 2>(інакше - виконати дію № 2)

Як це записати на Паскалі? Так само, тільки англійською.

Формат умовного оператора мовою Паскаль:

If<условие>

Then<оператор 1>

Else<оператор 2>;

Зверніть увагу на те, що в Then-і Else-частини стоїть тільки один оператор. Але що робити, щоб вирішити завдання, в якому по виконанню чи невиконанню умови потрібно вчинити не одну, а кілька дій? Тут приходить на допомогу вже відомий вам складовий оператор. У операторні дужки можна покласти будь-яку кількість операторів.

Варіант умовного оператора у разі:

If<условие>

Then Begin<группа операторов 1>end

Else Begin< группа операторов 2>end;

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

Тепер поговоримо про умови. У програмах мовою Паскаль умови є висловлювання, значенням яких є величина логічного (Boolean) типу. Це може бути просто змінна зазначеного типу, і складна послідовність висловлювань, пов'язаних логічними операціями.

У простих умовах можуть застосовуватися знаки операцій порівняння: >(більше),<(меньше), =(равно), <>(Не дорівнює), >=(більше або одно),<=(меньше или равно).

Приклади простих умов: A = 5 (Значення змінної А дорівнює 5)

(C+D3)>=(D1*(45-2)) (Значення виразу в лівій частині більше або дорівнює значенню виразу з правої частини)

S<>"ABC" (Значення змінної S не дорівнює рядковій константі "ABC")

Наведемо приклад вирішення ще одного завдання: "З двох чисел вибрати найбільше".

На перший погляд, рішення очевидне, але воно не настільки тривіальне, як здається.

Program Example;

Var A, B, C: Real; (A,B – для зберігання аргументів, C – результат)

Writeln("Введіть два числа");

Readln(A,B); (Вводимо аргументи з клавіатури)

If A>B Then C:=A Else C:=B; (Якщо A>B, то результат - A, інакше результат - B)

Writeln(C); (Виводимо результат на екран)

Ще один класичний приклад: "За заданими коефіцієнтами розв'язати квадратне рівняння". Це завдання складніше, тому перед тим як писати програму складемо алгоритм, записавши його у вигляді блок-схеми. Спочатку вводимо коефіцієнти, потім обчислюємо дискримінант. Тепер виникає дві можливості: або відсутність дійсних коренів у разі негативного дискримінанта, або це коріння можна все-таки обчислити і вивести на екран у разі невід'ємного дискримінанта (випадок рівності дискримінанта нулю входить сюди ж, коріння - два, тільки вони однакові J).

При записі алгоритму мовою програмування слід врахувати, що у галузі "ні" не одна дія, а три, тому слід застосувати складовий оператор. Арифметичні вирази не забувайте записувати відповідно до правил мови Паскаль. В іншому, ця програма не складніша за попередню.

Var A, B, C, D, X1, X2: Real;

Writeln ("Введіть коефіцієнти квадратного рівняння");

If D<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Цікаво, що як оператор, який виконується за виконанням або невиконанням умови, може виступати умовний оператор. І тут говорять про вкладеності умовних операторів. Я настійно рекомендую при вирішенні таких завдань складати блок-схему алгоритму в зошиті. Тільки потім, при складанні програми, вам залишається лише акуратно прописувати спочатку всю Then-частину, а потім переходити до Else-частини. Зазвичай під час запису умовних операторів мовою Паскаль (особливо при множинних розгалуженнях) команди записують уступом праворуч і донизу. Це підвищує наочність і, повірте, знижує втрати часу на налагодження.

Для ілюстрації розв'яжемо ще одне завдання: "вирішити рівняння виду A*x^2 + B*x + C = 0". Прошу не плутати з квадратним рівнянням, для якого нам було відомо, що коефіцієнт А не дорівнює нулю. Тут же коефіцієнти можуть бути будь-якими числами. Виходячи з елементарних математичних міркувань, отримуємо наступний алгоритм:

Var A, B, C, D, X, X1, X2: Real;

Writeln ("Введіть коефіцієнти рівняння (A, B, C)");

If C=0 Then Writeln("X - будь-яке число")

Else Writeln("Корнів немає!")

Else Begin X:=-C/B; Writeln("X=",X:8:3) End

If D<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Writeln ("X1=", X1:8:3, "X2=",X2:8:3)

Цикл. Види Циклів.

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

Як ви розумієте, повторювати ті самі дії можна і за допомогою оператора безумовного переходу. Якщо записати ці дії у програмі одна за одною, а в кінці поставити оператор переходу до початку цього блоку. Однак таким чином можна отримати лише програму, яка працює вічно (зациклюється). Цього можна уникнути, використовуючи разом із оператором переходу умовний оператор, поставивши виконання переходу у залежність від виконання певної умови. Таким чином, ми отримаємо структуру умовного переходу та можливість організації кінцевого циклу. Взагалі кажучи, так ми можемо вирішити практично будь-яке завдання, яке вимагає реалізації циклічного алгоритму. Звичайно ж, за допомогою однієї тільки сокири можна збудувати будинок. Поставимо перед собою питання: "А чи буде цей будинок красивий? Скільки часу і сил можна заощадити, використовуючи різні спеціальні інструменти?". Для чого? - Для зручності, стислості, простоти читання програми і, не побоюсь цього слова, краси. Отже, існує три види циклу, що мають власні оператори мовою Паскаль для їхнього запису. Ці види мають власні умовні назви: "Поки", "До", "З параметром". Один від одного вони дещо відрізняються і використовуються кожен для свого класу завдань

Цикл "ПОКИ"

Група операторів, звана "тілом циклу", судячи з цієї схеми, буде виконуватися поки що істинно умова циклу. Вихід із циклу відбудеться, коли умова перестане виконуватися.

Якщо умова хибно спочатку, тіло циклу нічого очікувати виконано жодного разу. Якщо умова спочатку істинно і в тілі циклу немає дій, що впливають на істинність цієї умови, тіло циклу буде виконуватися нескінченну кількість разів. Така ситуація називається "зациклюванням". Перервати програму, що зациклилася, може або оператор (натиснувши Ctrl+C), або аварійний зупинення самої програми, у разі переповнення змінної, поділу на нуль і т.п., тому використовувати структуру циклу слід з обережністю, добре розуміючи, що багаторазове виконання має коли- або закінчуватися.

На мові Pascal структура циклу "Поки" записується так:

While<условие>Do<оператор>;

Щоправда, лаконічно? Російською можна прочитати так: "Поки істинна умова виконувати оператор". Тут, як і у форматі умовного оператора, мається на увазі виконання лише одного оператора. Якщо потрібно виконати кілька дій, то може бути використаний складовий оператор. Тоді формат оператора набуває такого вигляду:

While<условие>Do

<оператор #1>;

<оператор #2>;

<оператор #3>;

Цикл "ДО"

Цей вид циклу відрізняється від попереднього переважно тим, що перевірка умови повторення тіла циклу знаходиться не перед ним, а після. Тому цикл "До" називають циклом "з постумовою", а "Поки" - "з передумовою".

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

10. Оператори введення та виведення

Розглянемо організацію введення та виведення даних з термінального уст-

рійства. Термінальний пристрій - це пристрій, з яким працює

користувач зазвичай це екран (дисплей) і клавіатура.

Для введення та виведення даних використовуються стандартні процедури введення

та виводу Read та Write, що оперують стандартними послідовними файлами

INPUT та OUTPUT.

Ці файли розбиваються на рядки змінної довжини, що відокремлюються один

від друга ознакою кінця рядка. Кінець рядка задається натисканням кла-

Для введення вихідних даних використовуються оператори процедур введення:

Read(A1,A2,...AK);

ReadLn(A1,A2,...AK);

Перший їх реалізує читання До значень вихідних даних иприс-

ваювання цих значень змінним А1, А2, ..., АК. Другий оператор

реалізує читання До значень вихідних даних, пропуск решти значе-

ній до початку наступного рядка, надання лічених значень пере-

змінним А1, А2, ..., АК. Третій оператор реалізує пропуск рядка ви-

хідних даних.

При введенні вихідних даних відбувається перетворення зовнішньої

форми подання у внутрішню, що визначається типом змінних. Пе-

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

або до дійсного, або до символьного типу. Читання вихідних

даних логічного типу у мові ПАСКАЛЬ неприпустимо.

Оператори введення під час читання значень змінних цілого і

дійсного типу пропускає прогалини, що передують числу.

водночас ці оператори не пропускають прогалин, що передують значі-

ням символьних змінних, оскільки пробіли є рівноправними

символи рядків. Приклад запису операторів введення:

var rV, rS: Real;

iW, iJ: Integer;

................

Read(rV, rS, iW, iJ);

Значення вихідних даних можуть відокремлюватися один від одного пропусками

та натисканням клавіш табуляції та Enter.

Для виведення результатів роботи програми на екран використовуються

оператори:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

Перший з цих операторів реалізує виведення значень змінних А1,

А2,...,АК встроку екрана.Другий оператор реалізує висновок

значень змінних А1, А2, ..., АК і перехід до початку наступної

рядки. Третій оператор реалізує пропуск рядка та перехід до початку

наступного рядка.

Змінні, що становлять перелік висновку, можуть належати до цілого,

дійсному, символьному чи булевському типу. Як елемент-

та списку виводу крім імен змінних можуть використовуватися вирази

та рядки.

Виведення кожного значення у рядок екрана відбувається у соот-

ветствии з шириною поля виведення, що визначається конкретною реалізацією

Форма подання значень у полі виведення відповідає типу пе-

ремінних і виразів: величини цілого типу виводяться як цілі деся-

тичні числа, дійсного типу - як дійсні десяткові

числа з десятковим порядком,символьного типу та рядка - у вигляді сім-

волів, логічного типу - як логічних констант TRUE і FALSE.

Оператор виводу дозволяє задати ширину поля виводу для кожного

елементу списку виводу. У цьому випадку

елемент списку виводу має вигляд А:К, де

А - вираз чи рядок,К - вираз чи константа целоготипа.

Якщо значення, що виводиться, займає в полі виведення менше позицій, ніж К,

то перед цим значенням розташовуються прогалини.Якщо виводиться значне-

ня не поміщається в ширину поля К, то для цього значення буде відповідати

необхідну кількість позицій. Для величин дійсного типу

елемент списку висновку може мати вигляд А:К:М, де А - змінна або вираз-

ня дійсного типу,К - ширина поля виведення,М-числоцифр

дробової частини виводиться значення. До і М - вирази або константи

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

десяткового числа з фіксованою точкою.

Приклад запису операторів виводу:

. . . . . . . . . . . .

var rA, rB: Real; iP, iQ: Integer;

bR, bS: Boolean; chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

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

Оператори присвоєння

У мові Паскаль оператор надання позначається двома символами «:=», між якими не ставиться пробіл. У лівій частині даного оператора має стояти змінна, а правій частині - вираз, значення якого присвоєно змінної.

Найчастіше у Паскалі можна побачити конструкцію виду p:=p+1. Цей запис не містить помилки. Усередині комп'ютера цей оператор виконується так: спочатку береться вихідне значення змінної, до якого додається одиниця. Після цих дій результат обчислень міститься в змінну p. Таким чином, у мові Паскаль реалізується інкремент змінної.

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

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

Таблиця 1 - Бінарні арифметичні операції над типом integer

Вихідний код програми:

Program Op_prisv;

c:=sqrt(a*a+b*b);

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

В результаті виконання даного коду програма обчислить значення гіпотенузи трикутника зі сторонами a, b і занесе це значення в змінну c.

Оператори введення-виводу

Введення та виведення необхідні для зв'язку програми із зовнішнім світом - таким чином можна отримувати вхідні дані від користувача та виводити отримані результати на екран. Очевидно, програма без висновку не має сенсу. У попередньому прикладі було розглянуто обчислення гіпотенузи прямокутного трикутника, однак без використання оператора виведення не можна дізнатися результат, отриманий при виконанні програми.

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

Для введення з клавіатури в мові Паскаль існує два оператори: Read і Readln. Для виведення на екран - Write і Writeln. Доповнення "ln" походить від англійського слова "line" - рядок, лінія. Оператори, що закінчуються на «ln», в результаті своїх дій переводять курсор на новий рядок. Так, наприклад, під час роботи оператора Write курсор залишиться на наступній позиції після останнього символу. А у випадку оператора Read чергові дані зчитуватимуться з того ж рядка, де стоїть курсор.

Традиційний запис даних операторів містить параметри, однак їх може і не бути. У такому випадку оператор Writeln буде реалізовувати просто перехід на новий рядок, а оператор Readln чекатиме введення будь-якої клавіші.

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

Як приклад використання операторів введення-виведення модифікуємо задачу визначення гіпотенузи прямокутного трикутника наступним чином:

Program Op_vvod_vyvod;

write("Катет a = ");

write("Катет b = ");

c:=sqrt(a*a+b*b);

writeln("Гіпотенуза = ",c:3:2);

writeln("Для завершення натисніть будь-яку клавішу...");

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


Рисунок 9 - Приклад роботи з операторами вводу-виводу

Крім того, у програмі використовується оператор Readln без параметрів, що підтверджує завершення програми. Так після натискання будь-якої клавіші програма видасть повідомлення про те, що її робота завершена (див. малюнок 10).


Рисунок 10 – Приклад роботи оператора введення без параметрів

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

Оператор присвоєння – це найголовніший оператор. У ньому вираз праворуч і індет. результату розділені знаком присвоєння: =

Наприклад: y:=x + 5 div 2

Оператор виклику процедури служить для активізації попередньо визначеної користувачем, або стандартної процедури. Наприклад: clrscr; і т.д.

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

Оператор безумовного переходу goto означає "перейти до" і застосовується у випадках, коли після виконання деякого оператора треба виконати не наступний по порядку, а будь-який інший, позначений міткою оператор. Приклад: gotometka1;

ВВЕДЕННЯ-ВИСНОВОК ДАНИХ: процедура читання Readвведення числових даних, символів, рядків і т.д. для подальшої обробки програмою. Формат: read (x1, x2, x3 ...); або read (FV, x1, x2, x3 ...); , де х1, х2, х3.. – змінні, FV – змінна, пов'язана з фалом, звідки виконуватиметься читання. Процедура читання Readln аналогічна процедурі Read, тільки здійснюється перехід на наступний рядок. Процедура запису Write робить висновок числових даних, символів, рядків та булевських значень. Формат: Write (x1, x2, x3 ...); або Write (FV, x1, x2, x3 ...);

де x - змінні, FV - ім'я файлу, куди робиться висновок. Writeln - переклад на інший рядок.

26. Оператори введення даних з клавіатури.

Read("список змінних");

Readln("список змінних");

Write("введіть значення а="); Readln(a);

введіть значення а = .

Readln(a); Readln(b); Readln(c); або Readln(a, b, c);

Readln(с1, с2, с3, c4); (Чекає введення значень символьних змінних с1, с2, с3, c4, наприклад: "У", "Р", "А", "!" та натискання Enter)

Writeln(с1, с2, с3, c4); виведе на екран напис: УРА!

27. Оператор вибору.

Case "параметр" Of

"список помічених операторів"

Else "оператор" End;

Приклад операторів визначення порядку цілого числа N від 0 до 999:

0..9: writeln("однозначне");

10..99: writeln("двозначне");

100..999: writeln("тризначне")

else writeln("Число "N" не входить у вказаний діапазон") end;

28. Умовний оператор.

IF "умова" Then "оператор1" Else "оператор2";

Наприклад, обчислення квадратного кореня у складі "a" проводиться за умови a>=0,

IF a >= 0 Then b:= Sqrt(a) Else begin WriteLn ("a<0"); Readln; Halt end;

Оператор Halt припиняє виконання програми.

29. Оператор циклу.

З параметром

For i:= N1 To N2 Do "оператор";

For i:= N1 DownTo N2 Do "оператор";

З умовою

While "умова" DO "оператор";

Repeat "оператори" Until "умова";

"Умова" - вираз логічного типу (Boolean).

30 .Оператор переходу до мітки.

Goto "мітка";

M1: Write("Введіть x>=0"); Readln(x); If x<0 Then Goto M1;

Мітки описуються в розділі опису, наприклад: Label M1;

31. Лінійні масиви.

Опис масивів:

VarA:array [1. .30] of byte;

S: array [1. 30] of string;

SO:array [1. 30] ofstring;

Присвоєння значень елементам масиву:

A:= 5; A:= 4; і т.д.

S: = "Іванов"; S: = "Петрів"; і т.д.

Присвоєння значення елементам масиву "y" залежно від:

y=sin(x), де x= Pi * i/180, 0<= i <=180 .

For i:= 0 to 180 Do y[i]:= sin(Pi * i/180);

Надання випадкових значень в діапазоні від -30 до +40 ста елементам масиву "R":

Randomize; for i:=1 to 100 Do R[i]:= - 30+Random(71);

Ціль лабор а торної роботи: навчитися правильно описувати змінні, використовуючи такі стандартні типи даних: цілочисленні. речові та логічний; вивчити оператори введення-виведення даних, виробити практичні навички роботи з системою PascalABC, навчитися створювати, вводити в комп'ютер, виконувати та виправляти найпростіші програми мовою Pascal у режимі діалогу, познайомитися з діагностичними повідомленнями компілятора про помилки під час виконання програм, що реалізують лінійні алгоритми.

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

Оператор присвоєння: (:=). Оператор присвоєння служить для надання значень змінним, наприклад: x:=1; a:=5. 02; b:= 32*a+Sin(x); S: = "Іване Івановичу".

Складовий оператор: Begin<операторы>End;

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

    1. Оператори введення/виведення даних

Для виконання операцій введення-виведення служать чотири оператори:

Read,ReadLn,Write,WriteLn. Оператор читання (Read) забезпечує введення числових даних, символів, рядків тощо. для подальшої обробки програмою.

Формат: Read(X1, Х2, .. , Хn), де X1, Х2, .. , Хn-змінні допустимих типів даних.

Значення X1, Х2, .. , Хn набираються мінімум через один пробіл на клавіатурі користувачем і висвічуються на екрані. Значення змінних повинні вводитися у суворій відповідності до синтаксису мови. Якщо в програмі є кілька операторів Read, дані для них вводяться потоком, тобто після зчитування значень змінних для одного оператора Read дані для наступного оператора Read – набираються на тому ж рядку, що і для попереднього до закінчення рядка, потім відбувається перехід на наступний рядок. Оператор читання ReadLn аналогічний оператору Read, єдина відмінність полягає в тому, що після зчитування останнього у списку значення для одного оператора ReadLn дані для наступного оператора ReadLn будуть зчитуватися з початку нового рядка.

Оператор запису (Write) здійснює виведення даних.

Формат: Write(X1, Х2, .. , Хn), де X1, Х2, .. , Хn-вирази типуinteger,byte,real,char,Booleanі т.д.

Приклад: Write (125); (Вираз представлено значенням) Write (А + В-С); (Виводиться результат вираження).

Оператор Write дозволяє виводити значення змінних наступними способами.

    Висновок десяткового уявлення величини Iпочинаючи з позиції розташування курсору (I):

    Висновок десяткового уявлення величини I крайні праві позиції поля шириною р (I:р):

Де - пробіл.

3. Висновок десяткового уявлення величини Iв крайні праві позиції поля шириною р і дробової частини числа шириноюq(I:р:q):

Оператор запису WriteLn аналогічний оператору Write, але після виведення останнього у списку значення для поточного оператора WriteLn відбувається переведення курсору до початку наступного рядка. Оператор WriteLn, записаний без параметрів, викликає переклад рядка.

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

a:=5.12345678912345678912345; Writeln("а=", a); виведе на екран напис.



Завантаження...
Top