- •Основні конструкції мови програмування Базові поняття мови програмування
- •Структура програм
- •Структура програми на мові Рascal
- •Структура програми на мові с
- •Введення-виведення інформації
- •Введення-виведення даних мовою Pascal
- •Введення/виведення даних в с
- •Оператори
- •Оператори реалізації послідовного процесу
- •Оператори розгалуження
- •Оператори циклу.
- •[Ред.] Перевірка типів
- •[Ред.] Діапазон числових типів даних
- •[Ред.] Примітки
Введення-виведення інформації
Вирішення навіть найпростішої задачі на ПК не обходиться без операцій введення-виведення інформації. Введення даних - це передача інформації ззовні в ОП (із зовнішнього носія). Виведення даних - зворотний процес, коли дані після обробки передаються з ОП на зовнішній носій. Зовнішнім носієм може служити дисплей, друкований пристрій, гнучкий або жорсткий диск і т.ін.
Введення-виведення даних здійснюється або відповідними операторами, або за допомогою стандартних процедур.
Алгоритмічні мови програмування використовують концепцію поелементного введення-виведення даних. Зазвичай, введення інформації з клавіатури супроводжується "ехо-сигналом" - на екрані дисплея з'являється зображення символів, що вводяться. В деяких системах програмування існують засоби, що дозволяють відключити таке ехо. Виведення даних організується, починаючи з позиції розміщення курсору. При цьому пробіли між даними, що виводяться, автоматично не вставляються - їх необхідно враховувати самим.
За допомогою відповідних засобів можна вводити-виводити дані тільки певних типів.
Введення-виведення даних мовою Pascal
Введення даних. Здійснюється за допомогою оператора виклику стандартної процедури Read або ReadLn. Їх формат:
Read ( [ ім'я зовнішнього носія ], список елементів введення ) ;
ReadLn ( [ ім'я зовнішнього носія ], список елементів введення ) ;
Як тільки під час виконання програми зустрічається виклик процедури Read або ReadLn, ПК призупиняє свою роботу і переходить в режим очікування введення з клавіатури. У цей момент на екрані видно тільки миготливий курсор (маркер), якщо екран попередньо очищений, або такий же курсор у кінці тексту повідомлень попереднього діалогу (результатів попереднього виведення). Дані вводяться через пробіл. Ознакою закінчення введення є натискання клавіші Enter. При цьому значення змінних повинні вводитися у порядку, в якому вони зазначені в списку введення, і у відповідності із своїми типами. Наприклад, виклик ReadLn (b, с) означає, що після набору на клавіатурі послідовності символів 0.32 та 85.7 змінна b отримає значення 0.32, а с – стане рівною 85.7.
Різниця між процедурами ReadLn і Read полягає у тому, що процедура Read по закінченні введення залишає курсор у поточному рядку введення, а ReadLn - переводить його на початок нового рядка. Тобто, виклик процедури ReadLn (b, с) еквівалентний послідовності викликів
Read (b);
Read (с);
ReadLn.
При цьому ReadLn - обов'язково останній.
Процедура ReadLn без параметрів може використовуватися для організації пауз довільної довжини. Подальше продовження роботи при цьому здійснюється при натисканні будь-якої клавіші.
Для посилань на потрібний зовнішній носій в Pascal використовуються символічні імена. Наприклад,
CON – консоль (клавіатура – у випадку введення інформації, монітор - у випадку виведення);
COM1, ..., COM4 - послідовні адаптери (порти введення-виведення). До них підключаються пристрої, що передають інформацію через послідовний інтерфейс (модем, миша, тощо);
LPT1, ..., LPT3 - паралельні адаптери. До них підключаються принтери й інші пристрої, що передають інформацію через паралельний інтерфейс.
Виведення даних. Здійснюється за допомогою виклику стандартної процедури Write або WriteLn. Їх формат:
Write ( [ ім'я зовнішнього носія ], список елементів виведення ) ;
WriteLn ( [ ім'я зовнішнього носія ], список елементів виведення ).
Різниця між процедурами Write і WriteLn полягає у тому, що після виведення інформації процедурою Write курсор залишається після останнього виведеного елемента; при використанні ж процедури WriteLn - встановлюється на початок наступного рядка.
Параметром процедур Write та WriteLn може бути ім'я змінної, вираз або літерал. У перших двох випадках на екран виведеться значення змінної або результат виразу, який буде попередньо обчислений. В останньому випадку на екран буде виведена послідовність символів без будь-яких змін. Наприклад, Write (х) забезпечить виведення на екран значення змінної х, а Write ('х') - виведення символу х.
Послідовність викликів процедури Write можна замінити одним оператором за тими ж правилами, що і послідовність операторів Read. Так оператору WriteLn ( ' b = ', b, ' с = ', с) відповідає послідовність операторів
Write (' b = ');
Write ( b );
Write (' с = ');
WriteLn ( с ).
Процедура WriteLn без параметрів викликає вставку на екрані порожнього рядка.
За замовчуванням ім'я зовнішнього носія - CON, тому при введенні даних із клавіатури або при виведення даних на екран дисплея цей параметр можна не вказувати. У цьому випадку введення – виведення інформації організовується за допомогою стандартних файлів input і output. Програма одержує вхідні дані із стандартного текстового файлу Input, що зв'язаний із клавіатурою, а результати обробки розміщує в стандартний текстовий файл Output, що зв'язаний з дисплеєм.
При введенні даних корисною є підказка про те, чого очікує машина. Для цього в тексті програми оператору виклику процедури введення повинен передувати оператор виклику процедури виведення, за допомогою якого така підказка і виводиться на екран. Наприклад, перед введенням значення аргумента функції, що обчислюється, бажано оформити підказку виду
Write ('Введіть аргумент функції x =');
і тільки після цього здійснити введення відповідного значення.
За допомогою відповідних процедур можна вводити-виводити тільки цілі та дійсні числа, символи і рядки тексту (літерали). У інших випадках потрібно скористатися іншими можливостями мови (операторами циклу, операторами вибору тощо).
Форматоване виведення даних. Для кожного елемента списку виведення можна задавати свій формат виведення :
Write (елемент виведення : [ширина [: кількість цифр]], ...) ;
WriteLn (елемент виведення : [ширина [: кількість цифр]], ...),
де <ширина> - ширина поля виведення, включаючи позицію під десяткову крапку (при виведенні дійсних чисел у формі з фіксованою крапкою) і знак числа;
<кількість цифр> - кількість позицій, що відводиться для виведення дробової частини числа (при виведенні дійсних чисел у формі з фіксованою крапкою).
Наприклад,
x := 421.53;
WriteLn ( x + 55 : 8 : 3, ' ', x ); { 476.530 421.53}
WriteLn ('Приклад' : 10); { Приклад}
Використання форматованого виведення дозволяє вирішити проблему наочного їх оформлення даних, що виводяться.
Особливості форматованого виведення:
-
Якщо вказується параметр <кількість цифр>, то дійсне число виводиться у форматі з фіксованою крапкою. Для виведення його в експоненціальному форматі варто задати тільки загальну ширину поля виведення. Наприклад,
WriteLn (123.456:8 : 3); { 123.456}
WriteLn (-123.456:13 ); { -1.23456E+02}
При ширині, меншій за 8 позицій, поле виведення встановлюється автоматично рівним 8.
-
Якщо ширина поля виведення перевищує реальні розміри елемента виведення, то при виведенні він доповнюється пробілами ліворуч відповідно до зазначеної довжини. Якщо ж розмір поля менше, ніж потрібно, Pascal збільшує його до мінімально необхідного. Наприклад,
WriteLn (296 : 2); {296}
-
У випадку некоректного задання формату виведення дійсних чисел може ігноруватися тільки перший параметр формату, число ж знаків після крапки завжди встановлюється коректно, але не перевищує точності типу. Наприклад,
WriteLn (123.456:5 : 3); {123.456}
-
Якщо другий параметр формату виведення більше реального, то при форматуванні дробова частина елемента доповнюється 0. Наприклад,
WriteLn (123.45:8 :3); { 123.450}
-
Якщо другий параметр формату виведення менше реального, то при форматуванні дробова частина елемента округляється. Наприклад,
WriteLn (123.456:8 :1); { 123.5}