Контакти

Оператори введення даних ReadLn та Read. Тема: Введення – висновок. Оператори Read (Readln), Write (Writeln). Найпростіші лінійні програми У чому різниця між readln та read

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

Program number3; uses crt; var n:integer; begin clrscr; write ('Введіть число з клавіатури:'); readln (n); writeln ('Ви ввели число', n); readln end.

У рядку №3 ми записуємо службове слово Var. Воно використовується для оголошення змінних. Змінні – це різні значення, числа чи слова, які можуть змінюватися під час виконання програми. Коли ми вводимо з клавіатури чи цифри літери, вони записуються в змінні. Після слова Var через пропуск вказуємо ідентифікатор змінної (тобто її назву, яку ми вигадуємо самі). Змінні – це службові слова, програміст задає їх сам. В даному випадку ми задали одну змінну «n» і надалі використовуватимемо тільки цю змінну. Після запису змінної через двокрапку вказується тип даних. Існує кілька типів даних Один з них – Integer (цілий). Він дає зрозуміти програмі, що наша змінна «n» може бути цілим числом, що лежить в діапазоні від -32768 до 32767. Використання різних типів даних залежить від конкретних потреб програміста при написанні програми. Найголовніше на даному етапі зрозуміти, що якщо у своїй програмі ви збираєтеся використовувати якесь число, то для нього потрібно вказати змінну (у нашому випадку n) і тип даних (у нашому випадку Integer).

У рядку №7 ми записуємо оператор для введення даних із клавіатури Readln. Цей оператор викликає вбудовану процедуру введення даних і на цьому етапі програма зупиняється і починає чекати на введення даних. Ми використовували цей оператор для затримки екрана. У цій програмі після оператора Readln у круглих дужках вказується наша змінна "n". Те число, яке ми будемо вводити з клавіатури, запишеться до цієї змінної. Відповідно, це число має відповідати параметрам змінної, тобто. повинно бути цілим, що лежить в діапазоні -32768 до 32767. Після того, як програма дійде до 7-го рядка, вона виведе на екран повідомлення «Введіть число з клавіатури: » і чекатиме. На цьому етапі ми повинні ввести якесь число і натиснути Enter.

Рядок №8. Тут ми записуємо оператор виведення на екран Writeln. Він виводитиме повідомлення «Ви ввели число», а також виводитимете значення нашої змінної «n» (тобто те значення, яке ми введемо з клавіатури). Зауважте, що в рядку №8 перед змінною «n» ми ставимо кому, а сама змінна не полягає в апострофі.

Тепер наберемо програму у Паскалі.

Запускаємо (Сtrl + F9). Набираємо число, наприклад, 5 та натискаємо Enter.

Тема:Ввід вивід. Оператори Read (Readln), Write (Writeln). Найпростіші лінійні програми.

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

Завдання . Напишіть програму, яка очищала екран і обчислювала добуток двох чисел, що вводяться користувачем.

Program Proizv2;
Uses
Crt; (Підключаємо модуль Crt)
Var
number1 (змінна, в якій буде містити перше число)
number2 (змінна, в якій буде міститися друге число)
rezult (змінна, в якій буде містити результат)
: integer;
Begin
ClrScr; (Використовуємо процедуру очищення екрану з модуля Crt)
Write ("Введіть перше число");
Readln (number1);
(Введене користувачем число зчитуємо змінну number1)
Write ("Введіть друге число");
(Виводимо на екран символи, записані між апострофами)
Readln (number2);
(Введене користувачем число зчитуємо змінну number2)
rezult: = number1 * number2;
(Знаходимо добуток введених чисел і присвоюємо змінній rezult)
Write ("Твір чисел", number1, "і", number2, "рівно", rezult);
(Виводимо на екран рядок, що містить відповідь задачі)
Readln; (Процедура затримки екрана)
End.

Щоб краще зрозуміти дію програми, наберіть її на комп'ютері та перевірте її дію. Дайте відповідь на питання:

  • чому програму назвали Proizv2?
  • навіщо у розділ Uses помістили модуль Crt?
  • яке призначення змінних number1, number2, rezult?
  • який тип цих змінних? що це означає?
  • якщо присвоїти змінним number1 і number2 відповідно значення 5 і 7, то який рядок видасть комп'ютер під час останньої процедури Write? Запишіть її у зошит.
  • у яких рядках у користувача запитуються значення змінних?
  • у якому рядку відбувається множення чисел?
  • що робить оператор присвоєння у цій програмі?

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

Оператори Write та WriteLn

Ми вже використовували оператори Write та WriteLn, але нам необхідно докладніше зупинитись на правилах застосування цих операторів.

Write (англ. писати) – оператор, який використовується для виведення інформації на екран. Оператор WriteLn виконує те саме дію, але оскільки він ще закінчення Ln (line - англ. лінія, рядок), то після виведення на екран потрібного повідомлення, він додатково переводить курсор на наступний рядок.

Загальний вигляд:
Write (список виразів)
WriteLn (список виразів)

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

Наприклад, при виконанні процедури WriteLn('Знайдене число ',а), буде надруковано рядок, укладений в апострофи, а потім виведено значення змінної а.

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

Оператори Read та ReadLn

Згадаймо, що основне призначення ЕОМ – заощадити людську працю. Тому необхідно забезпечити можливість, якось написавши програму, багаторазово її використовувати, вводячи щоразу інші дані. Така гнучкість у мові забезпечується операторами Read та ReadLn. Цими операторами вводиться інформація з клавіатури.

Загальний вигляд:
Read(змінна, змінна...)
ReadLn(змінна, змінна...)

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

Наприклад, якщо вводяться значення 53 і Х, то при виконанні оператора Read(a,b) змінної а буде надано число 53, а змінної Х - літера Х. Причому, зазначимо, щоб не було аварійної ситуації, потрібно правильно визначити тип даних у розділі Var; у разі а:integer, а b:char.

Особливих відмінностей під час читання та запису у використанні операторів Read та ReadLn немає. Часто процедуру ReadLn без параметрів застосовують наприкінці програми для затримки: до натискання клавіші результат виконання програми залишається на екрані. Це дуже корисно робити для аналізу результатів.

Примітка . Коли ви ставите затримку екрана, зверніть увагу на попереднє введення. Якщо дані запитувалися процедурою затримки Read не буде.

Розв'яжемо завдання, в якому розглянемо всі можливі вживання цих процедур.

Завдання . Знайти середнє значення трьох чисел.

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

Наберіть текст завдання та уважно розгляньте кожну сходинку. Ім'я програми Srednee відображає зміст завдання. До речі, домовимося про те, щоб ім'я програми та ім'я файлу, що містить цю програму, збігалися. Далі йде підключення модуля Crt. У розділі Var описані First, Second, Third як змінні цілого типу, а Sum – дійсного типу. Розділ операторів починається зі стандартної процедури очищення екрана ClrScr (Clear Screen), що знаходиться у модулі Crt. Далі оператором Write ми виводимо на екран повідомлення 'Введіть перше число', отримавши яке користувач повинен ввести число.

Тепер комп'ютер повинен рахувати введені символи та занести їх у змінну First, це відбудеться при виконанні наступного оператора ReadLn (First). Потім за допомогою оператора Write запитуємо значення ще двох чисел та зчитуємо їх у змінні Second та Third. Потім обчислюємо їх суму та привласнюємо отримане число змінної Sum. Щоб знайти середнє, потрібно тепер отримане число поділити на 3 і зберегти результат у будь-якій змінній.

Зовсім не обов'язково описувати ще одну змінну для збереження результату. Можна, як у нашій програмі, значення змінної Sum розділити на 3 і результат знову надати тій же змінній Sum. Тепер можна вивести результат обчислень на екран за допомогою Write. І, нарешті, остання процедура ReadLn затримає виведення на екрані до натискання на клавішу.

Натисніть клавіші +. Введіть значення змінних 5, 7 та 12, на екрані побачите наступне:

Середнє значення 5, 7 та 12 дорівнює 8.00

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

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

  1. Ввести два числа a та b. За допомогою оператора присвоєння обміняти їх значення:
    а) з використанням проміжної змінної (x:=a; a:=b; b:=x);
    b) без використання проміжної змінної (a:=a-b; b:=a+b; a:=b-a).
  2. Скласти програму, яка запитує користувача ціле число, дійсне число, довільний символ і рядок, а потім все виводить в одному рядку.
  3. Виведіть на екран своє прізвище, ім'я та по батькові, а через два рядки – дату свого народження.
  4. Написати програму для друку зірочками однієї з фігур:
    а) ялинки (кілька ялинок);
    б) сніжинки (кілька сніжинок);
    в) будиночка.

    *
    * *
    * *
    ***********
    * *
    * *
    * *
    * *
    ***********

  5. Скласти свою візитну картку.


    * Іванов Сергій *
    * Пролетарська 74 кв. 55*
    * Телефон 45-72-88 *
    *******************************

  6. Складіть діалог користувача з комп'ютером на довільну тему.
    Наприклад, машина ставить два питання "Як тебе звуть?" і скільки тобі років?"; після введення імені (Антон) та числа (15) виводить на екран “Так... Через 50 років тобі вже буде 65 років, а звати тебе будуть не Антон, а дід Антон”
  7. Запросити у користувача два числа та вивести на екран результат суми, різниці, твору та частки цих чисел повною відповіддю.
  8. Запитати у користувача два числа і вивести на екран результат цілісного поділу та залишок від цілого чищення у вигляді таблиці. Наприклад, при введенні чисел 5 та 3 на екрані має бути така таблиця:

    **************************
    * X * Y * div * mod *
    **************************
    * 5 * 3 * 1 * 2 *
    **************************

  9. Написати програму, яка запитує назву тварини та число, а потім виводить на екран фразу типу "Білка з'їсть 10 грибів" (при введенні слова "білка" та числа 10).
  10. Організуйте діалог продавця (комп'ютер) і покупця (користувач) при купівлі будь-якого товару за наступною схемою: пропозиція товару за певною ціною, запит кількості купованого товару, визначення та виведення на екран грошової суми, яку повинен заплатити покупець за покупку.

Ви знаходитесь у розділі матеріалів з програмування на Паскалі. Перед тим, як почати програмувати, треба прояснити деякі поняття, які нам знадобляться на початку. Адже просто так програмувати не можна. Ми не можемо записати програму словами – комп'ютер крім нулів та одиниць більше нічого не розуміє. Для цього в Паскалі створено спеціальну символіку – мову Паскаля, набір зарезервованих слів, які не можна використовувати у своїх програмах більше ніде, окрім як за призначенням. Перелічимо основні поняття, які нам знадобляться на початку:

✎ 1) program – англійською «програма», пишеться на самому початку коду, після чого йде назва програми латиницею та крапка з комою. Наприклад: program Summa; − програма під назвою Summa. Але цю частину коду, яку називають заголовком програми, можна і не писати – вона присутня тільки для наочності і показує, яке завдання вирішує дана програма. Тут ми використали слово «код» – так називається текстовий запис програми.

✎ 2) integer - англійською означає "ціле число" (або просто "ціле") і в Паскалі використовується для позначення 32-бітових (8 байт) цілих чисел зі знаком з діапазону [-2147483648, 2147483647]. Що означають ці великі числа, потім розберемо.

✎ 3) real – з англійської «реальний», «справжній», «речовий», «дійсний». У мові Паскаль цим терміном позначаються речові числа з діапазону [-1.8∙10308, 1.8∙10308]. Це дуже великі числа, але значних цифр виводиться 15 – 16. До речі, типи даних integer і real серед програмування PascalABC.Net завжди автоматично виділяються синім кольором.

✎ 4) const - аналог англ. "constant", що означає "постійна", "константа". У Паскалі це величина, яка може змінюватися. Записується так:


Цей запис треба сприймати так, як він пишеться: число N дорівнює 12, S дорівнює 5, «пі» дорівнює 3,14 (як і в математиці, тільки замість коми в Паскалі використовується крапка). В останньому рядку ми використовували подвійний слеш (дві косі риси), після яких йде текст, – так у Паскалі пишуться коментарі, і їхня програма не сприймає. Все, що починається подвійним слешем і до кінця рядка - це коментар, який пишеться для пояснення до програми і завжди виділяється іншим кольором (у PascalABC.Net - це зелений, Turbo Pascal не використовується такий вид коментаря). Існує й інший тип коментаря - це (текст, укладений у фігурні дужки, так само, як і тут, що теж виділяється зеленим кольором). Цей вид коментаря може діяти кілька рядків поспіль - від початку дужки і до її закриття, і все, що знаходиться всередині такої конструкції, компілятор не сприймає як код і просто пропускає.

Насправді формат запису constтрохи складніше. За правилами ми мали записати:

1 2 3 4 const N: type integer;

Опис:

")" onmouseout="toolTip()">integer
= 12 ; // число N - цілого типу S: type integer;

Опис:
Представляє 32-бітове ціле число зі знаком.

Діапазон значень: -2 147 483 648 .. 2 147 483 647")" onmouseout="toolTip()">integer
= 5 ; // число S - цілого типу pi: type real;

Опис:
Показує число подвійної точності з плаваючою комою.

Розмір: 8 байт
Кількість цифр: 15 - 16
Діапазон значень: -1.8∙10 308.. 1.8∙10 308
")" onmouseout="toolTip()">real
= 3.14 ; // число «пі» - речового

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

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


Як видно із запису, знака «=» тут немає – перераховуються змінні одного типу (через кому) і після двокрапки вказується лише тип. Змінні N, m (цілі) та Q, r, t (речові) у програмі можуть змінювати значення в межах integer та real відповідно. Ще одне зауваження: опис змінних завжди стоїть після опису констант (постійних) – спочатку йде конструкція const, а потім var.

✎ 6) begin – у перекладі з англійської означає «починати» і Паскале означає початок основної програми, де записуються команди (оператори). Після слова beginкрапка з комою не встановлюється.

✎ 7) end – англ. "Кінець", і в мові Pascal означає те ж (кінець програми). Після останнього слова endзавжди стоїть крапка. Ми виділили слово "останнього", оскільки використання конструкції begin – endможливо ще одному випадку: це звані операторні дужки, які застосовуються об'єднання кількох операцій під одним оператором. Але про це згодом. Таким чином, основна програма виглядатиме так:

1 2 3 4 5 6 begin < оператор 1 > ; < оператор 2 > ; . . . . . . . < оператор N > ; end.

Тут оператори у тілі програми – це різні команди компілятора.

✎ 8) write – англійською означає «писати». Цей оператор виводить на екран текст, поміщений у нього, тому так і називається оператор виведення. Текст, поміщений до нього, виділяється синім і записується так:

Write( "Цей текст виведено на екрані");

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

цей текст виведено на екрані

У такому вигляді оператор write використовується в тому випадку, коли треба показати підказку, пояснення, коментар тощо. А якщо необхідно вивести ще й числове значення, скажімо, S = 50 кв. м, то використовується формат:

Write(, S);

В результаті отримаємо на екрані результат:

Розмір площі дорівнює: S = 50

А при необхідності вивести одиниці виміру, треба після S знову вставити текст у лапках:

Write( "Величина площі дорівнює: S = ", S, "кв.м");

Після виконання останнього оператора виведення отримаємо висновок на екран:

Розмір площі дорівнює: S = 50 кв.м

✎ 9) writeln – те саме, що й write, але після виконання курсор буде переведено на наступний рядок.

✎ 10) read – у перекладі з англійської означає «читати», тому read називається оператором зчитування або введення даних. Записується як read(N), що означає необхідність введення величини N де N – будь-яке число, або текст, або інший тип змінної. Наприклад, якщо треба запровадити вік людини, якій 32 роки, ми можемо записати так:


У першому рядку цього коду програма виводить питання « Яким є Ваш вік?» та переводить курсор у наступний рядок (закінчення ln); у другому рядку ми виводимо "Year =" (на початку пробіл); далі ми бачимо оператор readln(Year), що означає необхідність введення віку Year (число 32); нарешті, виводимо повідомлення «Мій вік», «32» та «року. » по черзі. Потрібно уважно стежити за пробілами. В результаті виконання цього коду ми отримаємо повідомлення:

Яким є Ваш вік?
Year = 32
Мій вік 32 роки

✎ 11) readln – те саме, що й read, лише з переведенням на новий рядок. Справді, у наведеному вище прикладі після введення числа Year ми лише у наступному рядку пишемо: « Мій вік 32 роки».

Це поки що все. На наступній сторінці ми напишемо першу програму, і у програмуванні на Паскалі це будуть наші

Для типізованих файлів, зчитує компонент файлу змінну.

Для текстових файлів, зчитує одне або більше значень в одну або більше змінних

Зауваження:

Для рядкових змінних:

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

Використовуйте кілька звернень до ReadLn, щоб рахувати кілька рядкових значень.

Коли включено опцію Extended Syntax, процедура Read може зчитувати рядки з нульовим закінченням у нуль-основані масиви символів.

Для змінних типу Integer або Real:

Read пропускатиме будь-які пробіли, мітки табуляції або маркери кінця рядка, що передують числовому рядку. Якщо числовий рядок не
відповідає очікуваному формату, відбувається помилка введення/виводу, інакше змінній надається отримане значення. Наступний Read почнеться з пробілу, знаку табуляції або маркера кінця рядка, які завершували числове рядок.

Приклад процедури Read

Uses WinCrt, WinDos;
Var F: Text;
Ch: Char;
Begin
(Отримуємо ім'я файлу з командного рядка)
Assign(F, ParamStr(1));
Reset(F);
While Not EOF(F) Do
Begin
Read(F, Ch);
Write(Ch); (Виводимо вміст файлу на екран)
End;
End.

  • Readln
  • Write
  • Writeln

Інструкція read призначена для введення значень змінних (вихідних даних) з клавіатури. У загальному вигляді інструкція виглядає так:

read (Змінна!, Змінна 2, ... Змінна Щ де змінна - ім'я змінної, значення якої має бути введене з клавіатури під час виконання програми.

Наведемо приклади запису інструкції read:

Read(а); read(Cena, Kol);

При виконанні інструкції read відбувається таке:

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

2. Після натискання клавіші введене значення надається змінною, ім'я якої вказано в інструкції.

Наприклад, внаслідок виконання інструкції

Read(Tempérât);

та введення з клавіатури рядка 21, значенням змінної Tempérât буде число 21.

Одна інструкція read дозволяє отримати значення кількох змінних. При цьому числа, що вводяться, повинні бути набрані в одному рядку і розділені пробілами. Наприклад, якщо тип змінних а, ь і с – real, то в результаті виконання інструкції read (а, b, с); та введення з клавіатури рядка:

4.5 23 0.17

змінні матимуть такі значення: а = 4,5; ь = 23, про; з = 0,17.

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

Read (а, В); read(С);

та введення з клавіатури рядка

10 25 18

змінні отримають такі значення: а = 10, = 25. Інструкція read (С); надасть змінної значення 18.

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

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

Readln (а, В); read(С);

та введення з клавіатури рядка

10 25 18

змінні отримають наступні значення: а = ю, в = 25. Після чого програма буде чекати введення нового числа, щоб привласнити його змінною с.

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

Writeln("Введіть вихідні дані."); write("Ціна виробу:"); readln(Сепа); write("Кількість у партії:"); readln(Kol); write("Знижка:"); readln(Skidka);

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



Сподобалася стаття? Поділіться їй