Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС(11-20).docx
Скачиваний:
3
Добавлен:
13.09.2019
Размер:
2.34 Mб
Скачать

19.2Первинні оператори. Оператор присвоєння. Структурні оператори (складені, умовні, циклічні). Оператор вводу-виводу.

Основна частина програми на мові Паскаль представляє собою послідовність операторів,кожен з яких виконує деякі дії над даними. Оператори виконуються послідовно в тому порядку, в якому вони записані в тексті програми і відділяються один від одного ‘’ ;’’ . Всі оператори мови Паскаль можна поділити на три групи : прості, структурні та оператори вводу-виводу. Крім операторів, які входять до цих трьох груп існує також оператор with, який використовується при роботі з записами.

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

Оператор безумовного переходу goto <мітка> - перехід до оператора, поміченого спеціальним ідентифікатором - міткою. Використання цього оператору вважаеться поганим тоном програмування і жоден з кваліфікованих програмістів не використовує його.

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

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

Оператор присвоєння ( := ) передписує виконати вираз, що задається в його правій частині і присвоїти результат змінній, ідентифікатор якої знаходиться в лівій частині. Змінна і вираз повинні мати один і той же тип за виключенням випадку, коли змінна має тип real, а вираз - integer. Допускається присвоєння будь - яких типів даних, окрім файлових.

Запис оператору присвоєння має такий вигляд :

<ідентифікатор змінної> : =<вираз>;

Наприклад :

sort :=1; cina :=15.23+nds; nazv :=’ modelN452’; result := sin(x)+a*exp(y);

Структурні оператори являють собою структури, побудовані із інших операторів за строго визначеними правилами. Всі структурні оператори поділяються на три групи : складені, умовні і циклічні (оператори повтору).

Складеним оператором в мові Паскаль називається група з довільного числа операторів, відокремлених один від одного ‘’;’’ , обмежена операторними дужками begin i end :

begin

<оператор_1> ;

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

<оператор_n> ;

end;

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

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

Паскаль допускає використання двох умовних операторів : if та case.

Оператор умови if може приймати одну із наступних форм :

  1. if <умова> then <оператор_1> else <оператор_2>;

  2. if <умова> then <оператор>;

Умова - це вираз булевського типу. Вона може бути простою або складною. Складні умови утворюються за допомогою логічних операцій and, or, not. В умовах можна використовувати всі можливі операціївідношення допустимі для типів операндів. В разі, якщо умова набула значення “iстина” виконується оператор, що йде за словом then. Інакше виконується оператор, що йде за словом else, якщо воно присутнє.

Один оператор if може входити в склад іншого оператора if. В такому випадку говорять про вкладеність операторів :

if <умова_1> then if <умова_2> then <оператор_1> else <оператор_2>;

При вкладеності операторів відповідність між then та else визначається розстановкою операторних дужок. Наприклад, у виразі

if <умова_1> then begin if <умова_2> then <оператор_1> end else <оператор_2>;

else відповідає першому then.

Оператор вибору case являє собою узагальнення оператора if і дозволяє зробити вибір із числа існуючих варіантів. Він має такий вигляд :

сase <селектор> of

<список_1> : <оператор_1>;

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

<список_n> : <оператор_n>

else <оператор >

end;

Cелектор - це вираз, який може приймати певні значення. Список - це перелік деяких констант -можливих значень виразу-селектора. В разі, якщо значення селектора знаходиться в якомусь із списків, виконується оператор, який йде за цим списком. Список може складатися і із однієї констенти.

Існування вираза else <оператор> необов’язкове. Але якщо цей вираз існує, то оператор виконується лише в тому випадку, якщо селектор набув значення, якого не існує в жодному із списків.

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

Цикл - це послідовність операторів, яка може виконуватися більше одного разу. Якщо кількість повторів наперед відома, використовується оператор for, якщо ні - оператори repeat або while.

Оператор повтору for складається із заголовку та тіла. Він може бути представлений в двох форматах :

  1. for <параметр цикла> := <n1> to <n2> do <оператор> ;

  2. for <параметр цикла> := <n1> downto <n2> do <оператор> ;

n1 та n2 - вирази, які визначають відповідно початкове і кінцеве значення параметру.

Вираз for ... do - це заголовок, <оператор> - тіло циклу.

Оператор for забеспечує виконання тіла циклу до тих пір, поки не буде послідовно перебрано всі значення параметру цикла від початкового до кінцевого.

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

Кількість кроків можна визначити по таблиці :

Оператор

n1<n2

n1=n2

n1>n2

for ... to

n2-n1+1

1

0

for ... downto

0

1

n1-n2+1

Параметром циклу може бути і змінна типу char. Наприклад :

for ch :=’a’ to ‘e’ do write (ch :2);

Результат :

a b c d e

Оператор повтору repeat складається із заголовку - repeat, тіла і умови закінчення - until <умова>:

repeat<тіло>until<умова>;

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

Оператор repeat має три характерні особливості :

  1. тіло виконуєьтся хоча б один раз;

  2. тіло виконуєтья поки умова хибна;

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

Оператор while аналогічний оператору repeat, але перевірка умови виконання тіла циклу відбувається на самому початку оператора :

while<умова>do<тіло>;

Тут тіло може бути простим або складним оператором

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

Вийти із циклічних операторів можна обминаючи умови перевірки - за допомогою оператора goto або штучно зробивши умови перевірки хибними чи істинними в залеж

Розв’язання самої простої задачі на ЕОМ не обходиться без операцій вводу-виводу.

Ввод даних - це передача інформації від зовнішнього носія в оперативну пам’ять для обробки.

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

В мові Паскаль стандатними засобами спілкування людини та ЕОМ являються наперед визначені файли Input та Output. Програма отримує вхідні дані із файла Input, і видає результати обробки в файл Output. Стандартно файлу Input назначено клавіатуру, а файлу output - екран терміналу.

Оскільки в Паскалі не існує спеціальних операторів вводу-виводу, то фактично вони являють собою звернення до стандартних процедур вводу-виводу. Такихпроцедурчотири : read, readln, writeіwriteln.

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

read (x1,x2,...,xn);

абоread (FV, x1,x2,...,xn);

деx1,x2,...,xn - зміннідопустимихтипівданих, FV - змінна, пов’язаназфайломвводу.

Якщо ввод проводиться з клавіатури, то значення x1,x2,...,xn набираються щонайменше через один пробіл, а по закінченні набору даних для однієї процедури read необхідно нвжати Enter. Якщо дані знаходяться у файлі на диску, то вони також повинні бути відокремлені один від одного хоча б одном пробілом. Значення змінних повинні вводитись у строгій відповідності із синтаксисом мови Паскаль. Якщо відповідність порушено (наприклад, якщо змінна має тип integer, а введене значання має тип char), то відбудеться помилка вводу-виводу (I/O error).

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

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

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

write ( y1,y2,...,yn);

абоwrite (FV, y1,y2,...,yn);

де y1,y2,...,yn - вирази зазначених типів, а FV - змінна, пов’язана з файлом виводу. Наприклад для виводу даних на принтер FV дорівнує Lst, а для запису в файл на диску FV - це ім’я змінної логічічного файлу.

Процедура write дає можливість обмежити кількість символів у виразі, що виводиться. Для цього у виклику функції після виразу треба поставити : n, де n - потрібна кількість. Наприклад, якщо S - строка і записано:

write (S : 5 );

то це означає, що буде виведено пірші п’ять символів строки S. Якщо кількість m символів строки S менша п’яти, то перед строкою буде виведено 5-m пробілівПроцедура запису writeln аналогічна процедурі write, але після виводу останнього значення від-бувається перехід на наступний рядок.