Народна Освіта » Інформатика » Розділ 11. Лінійні алгоритми

НАРОДНА ОСВІТА

Розділ 11. Лінійні алгоритми

Типи даних та їх класифікація; поняття змінної, оператор присвоювання; стандартні типи даних і типи даних користувача; константи, арифметичні вирази; стандартні математичні функції; введення й виведення даних.

11.1. Дані й типи даних

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

11.1.1. Класифікація типів даних

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

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

 

Статичні типи даних поділяються на прості (скалярні) та структуровані (агрегатні). Прості типи даних своєю чергою поділяються на стандартні (базові) й такі, що визначаються програмістом — типи даних користувача (рис. 11.1).

У мові Pascal стандартні типи даних наперед означені в модулі System. Ця мова надає програмістові широкі можливості для створення власішх типів даних.

Елементи даних структурованих типів об'єднуються в різні структури, зокрема, в масиви, записи, множини. Такі структури можуть бути однорідними або неоднорідними. В однорідних структурах усі елементи можуть мати лише один тип, наприклад, 63'ти числами або літерами. У неоднорідних структурах елементи можуть належати до різних типів. Наприклад, елементами даних у кожному рядку розкладу руху потягів с: номер потяга; час відправлення; кінцева станція; номер платформи.

 

На рис 11.2 подано класифікацію структуз'рованих типів даних. Із зазначених структур розглядатимемо лише масиви.

Рис. 11.2. Класифікація структурованих типів даних у мові Равсаі

Кожен тип даних позначається певним ідентифікатором. Ідентифікатори стандартних типів даних означені в мові програмування. Наприклад, у мові Pascal ідентифікатором стандартного символьного типу даних є слово char, цілочислового — integer, дійсного — real, логічного - boolean.

Перевіряємо себе

1.    Які типи даних використовуються в мові Равсаі?

2.    У чомз' полягає основна відмінність статичних типів даних від динамічних?

3.    Чим відрізняються прості типи даних від структурованих?

4.    У якомз' модулі означуються стандартні типи даних?

11.1.2. Поняття змінної. Оператор присвоювання

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

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

Мова Pascal вимагає обов’язкового оголошення змінних.

У програмі мовою Pascal розділ оголошення змінних

розміщується між заголовком програми і словом begin.

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

<ім’я змінної 1 сім’я змінної N>: <тип зміниих>;

В одній програмі можуть бути оголошені змінні різних типів. Наприклад: program nll_l; var

a, b, с: real; j, n: integer; p, x: char; begin

У наведеному фрагменті програми змінні а, b і с оголошенні як дійсні, змінні j і п — як цілочислові, а змінні р та х — як символьні. Наведемо ще один приклад: program nll_2; var

al, а2: integer; аЗ, а4: boolean; ао, аб: real; а7, а8: char; begin

У цьому прикладі аі і а2 оголошені як цілочислові, аЗ і а4 - як булеві, а5 і аб - як дійсні, а змінні о7 і а5 - як символьні.

Для того щоб записати в область пам’яті, яка відповідає певній змінній, ті чи інші дані, їх слід присвоїти (надати) змінній. Зробити це можна за допомогою оператора присвоювання, що мас такий вигляд: сім’я змінної> := свираз>;

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

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

Приклад. Наведемо програму, що обчислює суму двох цілих чисел, уведених користувачем, program пі 1.3;

var a, b, с: integer; (оголошення змігших цілочислового типу} begin

writeln (‘увести значення а, Ь’); {повідомлення про введення} readln (а, Ь);    {уведення значень змінних а, Ь}

с:=а+Ь;    (обчислення суми]

writeln (‘sum-, с); {виведення результату} readln    (призз'пинення виконання програми]

end.

Перевіряємо себе

1. Що означає термін "неявне оголошення змінних"?

2. В якому місці Pascal-програми оголошуються змінні?

3. Які дії виконує оператор присвоювання?

4. Що означає узгодженість типів даних під час присвоювання?

Виконуємо

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

Записати мовою Pascal програм}' визначення довжини

 

2.

гіпотенузи прямокутного трикутника за умови, що відомі довжини обох катетів.

3. Увести й виконати програму nil.4. Проаналізувати отриманий результат, program nll_4;

var a:integer;    {змінна цілочислового типу}

р: boolean;    {змігша логічного типу}

begin

а:=3;    (змінній а присвоюється значення 3}

р:=а>2;    {вираз має значення true}

writeln (’р=’, р); {виведення значення true} readln    {призупинення виконання програми}

end.

У цій програмі змінна р, що оголошена як булева змінна, набуде значення true, тому що а=3, а перевіряється умова а>2.

11.1.3. Стандартні типи даних

Нагадаємо, що імена стандартних типів даних означені в модулі System. На рис. 11.3 наведена класифікація стандартних типів даїшх мови Pascal. Розглянемо їх детальніше.

Цілочислові та дійсні типи - це числові типи даних. Цілочислові типи та їх характеристики наведені в табл. 11.1.

Таблиця 11,1

 

Цілочислові типи даїшх

Тип

Пояснення

Кількість байт

Діапазон

Byte

ціле без знака

1

0...255

Shortint

ціле зі знаком

1

-128...127

Integer

ціле зі знаком

2

-32768...32768

Word

ціле без знака

2

0...65535

Longint

ціле зі знаком

4

-2147483648...

2147483647

У мові Равсаі цілі числа можуть записуватись у десятковій і

шістнадцятковій системах числення. Перед шістнадцятковими числами ставиться символ $, наприклад, $А5К

Дійсні числа подаються в нормалізованій формі, у вигляді числа М - мантиси, помноженого на 10 у степені Р — порядку. Отже значення числа становитиме М Т0Р. На записі мантиса відокремлюється від порядку літерою Е. Для запису порядку використовується два розряди, а для запису його мантиси — від 8 до 20. У пам’яті комп'ютера дійсні числа

зображаються в нормалізованій формі — таким чином, що мантиса М задовольняє нерівність 0<М<1. Будь-яке число можна подати в нормалізованій формі. Наприклад, десяткове число 0,0354 можна записати так: .354Е-01, а число 852,4 - так: .8524Е03.

Дійсні типи даних та їх характеристики наведені в табл. 11.2.

Таблиі/гЯ 11.2

Дійсні тини даних

Тип

Кількість байт

Цифр

Діапазон

Real

6

до 12

± (2.9Е-39...1.7Е38)

Single

4

до 8

± (1.5Е-45...3.4Е38)

Double

8

ДО 16

± (5.0Е-324...1.7Е308)

Extended

8

до 20

± (3.4Е-4932...1.1Е4932)

Comp

8

до20

± (-9.2Е+18)

Дані логічного типу, що в мові Pascal позначається ідентифікатором boolean, можуть мати лише два значення: true (істинне) або false (хибне). Змінним логічного типу часто присвоюють результати операцій порівняння або інших виразів, про які можна сказати істинні вони чи хибні.

Приклад. Розглянемо приклад використання логічної змінної var р: boolean: a, b: integer; begin а:=3; b:=7; р:=а<Ь; writeln (р); end.

Якщо а=3 і 5=7, то буде виведено значення true, а якщо а=12 і 5=4, то буде виведено значення false.

Символьний тип даних позначається ідентифікатором char. Дані символьного типу — це окремі символи, що записуються в одинарних лапках, наприклад, ’а’, ’п\

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

Рядковий тип даних, що позначається string, є структуровапим. Значенням цього типу може бути послідовність символів довжиною до 255 елементів. Максимальна довжина рядка вказується в квадратних дужках. Наприклад, оголошення var z:    string[12] означає, що

значенням змінної г може бути рядок довжиною не більше 12 символів. Якщо максимальна довжина рядка не вказана, вважається, що вона дорівнює 255 символів. Рядкові дані беруться в одинарні лапки: ’Інформатика’. Доступ до окремих символів рядка здійснюється за допомогою операції індексування, яка позначається символами [ ]. Наприклад, якщо s — змінна рядкового типу, то значенням виразу s[i] буде і-й символ рядка s.

Приклад. Розглянемо фрагмент такої програми: var s: string; begin

s:-Інформатика’; writeln (s [3]); end.

У результаті виконання цих операторів буде виведено символ "ф".

Стандартний текстовий тип, що позначається    text,

використовується для оголошення текстових файлів.

Приклад. У наведеній нижче програмі оголошується змінна типу text, створюється текстовий файл і здійснюється запис і читання, program f_l; var fl: text; a_l: string; begin

assign (fl, ’filel.txf); {зв'язування файл}' з файловою змінною} rewrite (fl);    {створення нового файлу}

writeln (fl, 'учні 8-го класу вивчають Паскаль’); {запис у файл} close (fl);    {закриття файлу для запису}

reset (fl);    {відкриття файлу для читання}

readln (fl, а_1);    {читання з файлу}

writeln (а_1);    {виведення на екран}

readln;    {призупинення виконання програми}

close (fl);    (закриття файлу для читання}

end.

Стандартний покажчиковий тип позначається ідентифікатором pointer. Його значенням є адреси комірок оперативної пам’яті, зокрема, адреси змінних б}'дь-яких типів. Користувач може оголошувати власні покажчикові типи даних.

Перевіряємо себе

1. Які числові типи даних використовуються в мові Pascal?

2.    Які значення має логічний тип даних?

3.    Як оголошуються змінні символьного типу?

4.    У який спосіб оголошуються змінні рядкового типу?

5.    Для чого використовується операція індексування?

11.1.4. Типи даних користувача

Типи даних користувача оголошує програміст. За структурою вони можуть бути простими або структуровапими. У Pascal-програмах розділ оголошення типів даних користувача позначається ключовим словом type.

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

Наприклад:

type

al=(oct, nov, dec); var x: al;

Цей запис означає, що змінна х може набувати будь-якого з трьох значень: oct, nov, dec.

- До значень перелічувального типу не можна застосовувати процедури введення-виведения (read, readln, write, writeln), а також арифметичні операції.

Для інтервального типу задасться діапазон допустимих значень. Граничні значеіпія відокремлюються двома крапками і мають мати однаковий порядковий тип (цілочисловий, символьний, логічний тощо).

Наприклад, після оголошень: type bl=1..30; var х: Ь1;

змінна х може набути цілочислового значення з діапозону від 1 до ЗО.

Після оголошень: type

letter-а’..’п’; var

х: letter;

змінній х можна присвоїти значення символів від ‘а’ до ‘п\

Як бачимо, значення інтервального типу в першому прикладі мають тип integer, а в другому - тип char.

Структуровані типи даних тут не розглядаються.

1. Які існують типи даних користувача в мові Pascal?

2. Як оголошується перелічувальний тип даних?

3. Як оголошується інтервальний тип даних?

4. Чим відрізняються перелічувальний та інтервальний типи?

11.1.5. Константи

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

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

Цілі десяткові числа записуються в звичайному форматі й належать діапазону від -2147483648 до +2147483647, наприклад: -203; 25.

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

<ціла частина>.<дробова частина> Е <порядок>. Наприклад: 155Е02; -31.4Е-01. Так можна позначити числа 15500; —3,14 відповідно.

Шістнадцяткові цілі числа записуються шістнадцятковими цифрами, яким передує символ "$", наприклад, $2АВ, -$С2.

Логічна константа має значення true (істинне) або false (хибне).

Символьна константа — це будь-який символ у лапках: ’а’, ’+’. Для перетворення цілого числа па ASCII-символ використовується функція chr. Так, після виконання операторів

xl:=ehr (97); x2:=chr(90);

змінна хі набуде значення ‘а\ змінна х2 - значення ‘Z\

Рядкова константа — це будь-яка послідовність символів у лапках, наприклад: ’x+y-z=’; ’Чемпіонат світу з футболз^’. Максимальна довжина рядкової константи 255 символів.

У мові Pascal часто використовзчоться так звані іменовані константи,    тобто константи, яким присвоюються імена

(ідентифікатори), що надалі використовз'ватимзться замість констант. Тип константи визначається автоматично за її значенням. У оголошенні

констант використовується службове слово const. Оголошення мас таку структуру:

const <ідентифікатор> = <константа>;

Наведемо приклади оголошення констант: const х=51; а= ліцей’; у=2.1Е-02; z= ’ІДЕНТИФІКАТОР’;

'Типізовані константи можуть змінювати своє значення у

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

const <ідентифікатор> : <тип>=<значеиня>;

Наведемо приклади оголошення типізованих констант: const n:integer=7; s:string=^ana’; sami:boolean=true;

Типізовані константи можуть мати будь-який тип (простий, рядковий, масив та ін.), крім файлового.

Приклад. У наведеній нижче програмі оголошується одна цілочислова константа і дві рядкові. Рядкові константи об'єднуються в один рядок, program nll_5;

const п=20; х=’іденти'; у=’фікатор’; {оголошення констант} var z:=string[n];    {оголошення змінної типу string}

begin

z:=x+y;    {об’єднання рядків}

writeln (’z=’,z)    {виведеїшя слова ідентифікатор}

end.

Перевіряємо себе

1.    Як мовою Равсаі записуються дійсні десяткові числа'.'

2.    В який спосіб записуються рядкові константи?

3.    Як записуються іменовані константи?

4.    Які переваги дає використання іменованої Форми запису констант у порівнянні з неіменованою?

Виконуємо

Запишіть числа 125,4-105 і -38,05- 10й мовою Равсаі.

Запишіть мовою Равсаі оголошення рядкових констант СТОЛИЦЯ і 'х+у=\

Запишіть числа 25,4Е-02 і 412,5ЕЗ у звичайному десятковому

форматі.

11.2. Оператори й вирази

11.2.1. Арифметичні вирази

Поняття виразу в мові програмування відповідає поняттю математичного вираз}'. Як і математичний вираз, вираз у тексті програми має бути побудований за певними синтаксичними правилами.

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

Найпростіший вираз складається з одного операнда. Прикладами такого виразу можуть бути: а — змінна, 5.3 — константа, 8Іп(х) — функція. Приклад більш складного виразу: 3.5+а—8Іп(х).

Залежно від типу отриманого результату розрізняють арифметичні (результат арифметичного тип}'), логічні (результат логічного типу), рядкові (результат рядкового типу) та інші вирази .

У арифметичних виразах мови Разсаі використовуються операції: додавання (+), віднімання (—), ділення (/), множення (*).

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

1.    Вирази записуються в рядок без використання будь-яких підрядкових або надрядкових символів. Наприклад, запис 5*(а+Ь)2 є некоректним, його слід перетворити на такий: 5*8чг(а+Ь).

2.    Операції мають бути задані в явному вигляді. Запис 5(а+Ь) вважається помилковим, а отже, його необхідно подати в такому вигляді: 5*(а+Ь).

3.    Не дозволяється записувати дві операції безпосередньо одна за одною. Наприклад, вираз а*~Ь некоректний, його можна записати так: а*(-Ь) або -Ь*а.

4.    Операції виконуються з урахуванням їх пріоритету, а операції, що мають однаковий пріоритет, — у порядку їх запису (зліва направо). Правила пріоритету операцій такі: спочатку обчислюються значення

функцій, потім виконуються операції множення та ділення, а після цього — операції додавання та віднімання. Якщо у виразі є круглі дужки, то насамперед виконуються операції, записані в них. Наприклад, значення виразу a+b*(c+d)*(c+a) обчислюється так:    спочатку

визначається сума c+d, потім — сума с+а, далі значення b множиться на c+d, одержаний результат — на с+а, а до нього додасться а.

5. Кожній дужці, що відкривається, у виразі має відповідати дужка, що закривається. Отже, вираз а+Ь) є некоректним - його слід записати так: (а+Ь) або а+Ь.

Типи операидів виразів мають бути узгодженими. За цим правилом, не можна, скажімо, додавати символ до числа або віднімати від рядка булеве значення. У деяких випадках зведення різних типів операидів до одного типу виконується автоматично. Наприклад, якщо у виразі а+Ь число а є цілим, а число Ь - дійсним, то число а перетворюється на дійсне і виконується додавання дійсних чисел. Результатом такого виразу буде так само дійсне число.

У мові Pascal результатом операції додавання, віднімання та множення є ціле число, якщо обидва операнди також є цілими числами, в інших випадках — це дійсне число. Результатом операції ділення завжди є дійсне число.

Приклад. Запишемо мовою Pascal програму, що обчислює

Ь . ,

математичний вираз ,    \ Sin(x — 2z), де а, п, т - цілі числа, b, с, х, z —

И\СІ + CtYlj

ДІЙСНІ.

program nll_6;

var a, n, m: integer;    {оголошення змінних цілочислового типу)

р, Ь, с, х, z: real;    {оголошення змінних дійсного типу)

begin

writeln (’увести цілі значення a, n, т’); {повідомлення про введення значень а, п, т}

readln (а, п, т);    {уведення значень змінних а, п, т }

writeln (’увести дійсні Ь, с, х, z’);    {повідомлення про уведення

значень Ь, с, X, z)

readln (b, с, х, z);    {уведення значень змінних b, с, х, z)

p:=b*sin(x-2*z);    (обчислення виразу дійсного типу}

writeln (’результат:’, p/(n*(a+c*m))); {виведення результату} readln end.

Крім чотирьох стандартних арифметичних операцій у мові Pascal означені операції div і mod. Результатом виконання операції div є ціла частина від ділення, а результатом операції mod - остача від ділення.

Наприклад, якщо х = 9, а у = 2, то результатом операції х div у буде число 4, а результатом операції х mod у - число 1.

Перевіряємо себе

1.    Із яких компонентів складається вираз у мові Pascal?

2.    Назвіть різновиди операндів, що використовуються у виразах у мові Pascal.

3.    Які основні правила застосовуються під час запису арифметичних виразів?

4.    У яких випадках у мові Pascal результатом обчислення значення арифметичного виразу є дійсне число?

Напишіть мовою Pascal такі вирази:

а = 7гг2; S = 4лт2; A = \bh) у = с2 + а2 + Ь2;

■Е + ї = —Л*-уКх+у) = х2-у2-

Обґрунтуйте, в яких виразах доцільно використовувати оператор присвоювання (:=), а в яких - ні.

Визначте, які вирази записані мовою Pascal коректно, а які ні.

а)    (а+ехр(х)*ехр(х);

б)    sinx+2*(a+bA2);

в)    ал2+(3*а+Ь)/с;

г)    sin(x)+a-*5*c.

Запишіть математичні вирази, які відповідають наведеним нижче виразам мовою Pascal.

а)    sin(x)+sqr(x);

б)    3/sqr(l+x*x);

в)    a+b/c+sqr(x);

г)    (a+b)/(ein(x)-l).

д)    sqr((p-a)*(p-b)*(p-c)*p);

е)    2*sin((a+b)/2)*cos((a-b)/2);

є) l/2*a*b*sin(alfa).

11.2.2. Стандартні математичні функції

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

Для використання функцій у програмі необхідно записати її ім’я, а після нього в дужках вказати аргументи. Зрозуміло, що до моменту звернення до функції аргументу7 має бути присвоєне певне значення. Кількість стандартних функцій у більшості мов програмування сягає кількох десятків. Математичні функції мови Pascal, що зберігаються в модулі system і використовувані найчастіше, наведені в табл. 11.3.

Для всіх функцій, крім функцій І х І і х2, тип результату с дійсним. Для функцій І х І і х2 тип резз'льтату відповідає типу аргументу. У всіх стандартних функціях, наведених у табл. 11.3, аргумент може бути виразом, який набуває дійсних числових значень.

Таблиця 11.4

Стандартні функції мови Pascal, призначені для оброблення числових

значень

Позначення

функції

Примітка

Рі

Повертає число 3.1415

Random

Генерує випадкове число від 0 до 1

random (n)

Генерує випадкове число від 0 до п-1, де п - типу word

frac (x)

Повертає дробову частину числа х, аргумент — real, результат — real

int (x)

Повертає щлз' частину числа х, аргумент — real, результат — real

round (x)

Заокруглює х до найближчого цілого, аргумент - real, результат — longint (довге ціле)

trunc (x)

Повертає цілу частину числа х, аргумент — real, результат - longint

 

Перевіряємо себе

1.    Які функції називають стандартними?

2.    Яким є діапазон значень математичних функцій?

3.    Як здійснюється переведення градусів у радіани?

 

4. Як за допомогою операції тосі розпізнати парні і непарні числа?

11.3. Уведення даних з клавіатури

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

У мові Pascal використовуються такі оператори (процедури) введення даних з клавіатури:

read (список імен змінних); readln (список імен змінних);

Список імен змінних — це послідовність з одного або декількох розділених комами ідентифікаторів. Наприклад, read (a, b, с, d);. Числові дані під час їх уведення з клавіатури відокремлюються пробілами. Символьні дані пробілом не відокремлюються. Набір даних завершується натисканням клавіші Enter, і виконання програми продовжується.

Приклад. Нехай фрагмент програми має такий вигляд: var a, b: real; m, n: integer; begin

read (a, b, m, n);

Припустімо, що під час виконання оператора read на клавіатурі було набрано: 2.5    5.2    7    12, а потім патиспуто клавішу Enter. У

результаті змінні набудуть таких значень: а=2.5, Ь=5.2, ш=7, п=12.

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

Приклад. Програма обчислення площі трикутника s за трьома його сторонами а,Ь і с може бути записана так: program nll_8;

var а, Ь, с, s, р: real; [оголошення змінних дійсного типу} begin

readln (а, b, с); [уведення довжин сторін трикутника}

p:=(a+b+c)/2; {обчислення напівпсриметра трикутника} s:=sqrt(p*(p-a)*(p-b)*(p-c)); [обчислення площі трикутника} writeln (‘s=’, s);    [виведення площі трикутника}

readln    [призупинення виконання програми}

end.

Перевіряємо себе

1.    Які процедури у мові Pascal використовуються для введення даних з клавіатури?

2.    Чим відрізняється введення числових даних від уведення символьних даних під час виконання програми, записаної мовою Pascal?

3.    Чим відрізняється процедура read від процедури readln?

Виконуємо

Визначити помилки у запису процедур уведення: a) read a,b,c; б) read a;b;c; в) rsad (a,b,c); г) readn (a;b;c);

д) readl (a,b,c); е) read (а b с);

11.4. Виведення даних

Результати розв'язання задачі виводяться на стандартні пристрої виведення. Такими пристроями на персональних комп'ютерах е екран монітора і принтер. Інколи доцільно виводити не тільки кінцеві, а й проміжні результати розв’язування задачі.

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

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

write (<список виведеиия>); writeln (<список виведения>);

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

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

Приклад. Наведемо фрагмент програми, де послідовно застосовуються процедури write, var a, b, с: integer; begin

write (а, ", b, ’ У, write (с);

Нехай змінні а, b і с набувають відповідно таких значень: 5, —72, 103. У результаті виконання указаних в програмі процедур ці числа будуть виведені в одному рядку.

5 -72 103

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

Приклад. Наведемо фрагмент програми, де застосовуються процедури write та writeln. var a, b, с: integer; begin

writeln (a,’ ’,b,’ ’);

write (c);

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

5-72

103

Приклад. Разом із даними бажано виводити інформацію, яка пояснює їх зміст.

var a, b, с: integer; begin

write (’а=’, а, 'b-, Ь,’с=’,с);

Числа будуть виведені в одному рядку: а=5 Ь—72 с=103 Якщо дані вводяться з клавіатури, процедури writeln та readln бажано використовувати разом. Тоді у першій процедурі можна вказати, для яких змінних потрібно вводити дані.

Приклад, program nll_9;

var a, b, с: integer;    {оголошення змінних тилу integer}

begin

writeln (’увести а, b’); {повідомлення про введення даних}

readln (a, b);    {уведення значень змінних}

c:=a+b;    {обчислення суми двох чисел}

writeln ('перше число=', а); {виведення першого числа} writeln ('друге число-, Ь); {виведення другого числа} writeln ('сума-, с); {виведення суми чисел} readln    {призупинення виконання програми}

end.

У результаті виконання цієї програми 65'де виведена така інформація (за умови, що будз'ть уведені числа а=23 і Ь=46): перше число=23 друге число-46 сума=69.

Перевіряємо себе

1.    Які оператори мови Pascal використовуються для виведення інформації?

2.    Чим оператор write відрізняється від оператора writeln?

3.    У якому вигляді виводяться логічні значення в мові Pascal?

Виконуємо

1. Знайдіть помилки в операторах виведення: a) write (а; Ь); б) writeln ("а="; а„Ь) в) write a, b); г) write (a:b);

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

а)    writeln(7*2.1);

б)    writeln(’CЛАВА*);

11.5. Розробка програм для лінійних алгоритмів

Розглянемо декілька прикладів розроблення програм для лінійних алгоритмів.

1. Комп'ютер видає на екран запит учневі: "Ваше ім’я". Після його введення висвітлюється новий запит — "який клас". Після введення відповіді на друге запитання на екрані висвітлюється:    "Ви

навчаєтеся ...у класі".

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

program nll_10;

var x, y: string [10];    {оголошення змінних рядкового типу}

begin

writeln (‘як Вас звати?’); {прохання ввести ім’я} readln (х);    {уведення імені}

writeln (’у якому ви класі?’); {прохання ввести клас} readln (у);    {уведення класу}

writeln (х, ’, Ви навчаєтеся у ’, у, ’класі’); {виведення імені і класу} readln    {призупинення виконання програми]

end.

2.    Василь, Микола та Оксана збирали гриби. Потім вони зважили зібрані гриби й поділили порівну. Розробити програму, за допомогою якої визначається, скільки кілограмів грибів дісталося кожному з друзів.

Позначимо масу грибів, зібраних Василем змінною а, масу грибів Миколи — змінною b, а масу грибів Оксани — змінною с. Змінна s — загальна маса грибів. Програма, що реалізує це завдання, має ім’я пі 1.11. Виконайте програму для різних значень змінних і доведіть, що вона функціонує правильно, program nll_ll;

var a, b, с, s; real;    {оголошення змінних дійсного типу}

begin

writeln (’увести а, Ь, с’); [повідомлешія про введення значень змінних} readln (а, Ь, с);    {уведення значень змінних}

s:=(a+b+c)/3;    {обчислення середнього значення]

writeln (’середнє^’, s); {виведення середнього значення} readln    {призупинення виконання програми}

end.

3.    У квадрат зі стороною а вписано коло. Розробити програму визначення різниці площ квадрата й утвореного круга.

Уважатимемо, що значення змінної а вводиться з клавіатури. Позначимо площу квадрата змінною si, площу круга змінною s2, а різницю площ квадрата і круга - змінною г. Один із варіантів програми, що реалізує завдання, наведений нижче, program nll_12;

var a, si, s2, r: real; {оголошення змінних дійсного типу} begin

writeln (’увести значения змінної а’); {повідомлення про введення значення змінної а}

readln (а);    {уведення    значення змігшої а*

sl:=a*a;    {обчислення    значення площі квадрата}

s2:=3.14*s 1/4; {обчислення значення площі кола} r:=sl-s2;    {обчислення    різниці площ}

writeln (’різниця=’, г); {виведення різниці площ} readln    {призупинення виконання програми}

end.

Виконайте програм}' і переконайтеся, що для значення змінної а=4 результат обчислення різниці г=3.4400000000Е+00.

4.    Відстань між пунктами А і В дорівнює І км. Одночасно назустріч один одному з пункту А починає бігти Петро, а з пункту В їхати на велосипеді Марійка. Швидкість руху Петра дорівнює і>і км/год, а Марійка — V2 км/год. Потрібно розробити програму, яка визначає, через скільки годин вони зустрінуться.

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

program nll_13;

var t, 1, vl, v2: real;    {оголошення змінних дійсного тип}7}

begin

writeln (’увести значення 1, vl, у21); {повідомлення про введення значень змінних}

readln (1, vl, v2);    {уведення значень змінних}

t:=l/(vl+v2);    {обчислення часу зустрічі}

writeln (’зустрінуться через ’, t, ’ годин’); [виведення обчисленого результату}

readln    {призупинення виконання програми}

end.

Викопайте програм}7 і перевірте, чи правильно вона санкціонує.

5.    У басейні ємністю 10000000 л залишилося р літрів води. До нього підведені два насоси, один з яких подас в басейн кожної хвилини а літрів води, а другий викачує кожної хвилини b літрів води (а>Ь). Розробити програму, що визначає, через скільки хвилин басейн наповнився, за умови, що насоси вмикаються одночасно.

Використаємо такі змінні: t — кількість хвилин, за які басейн наповниться повністю; т — кількість літрів води, яку потрібно накачати, щоб басейн наповнився. Програма, що реалізує де завдання, може мати такий зміст: program nll_14;

var р, a, b, m, t: real; {оголошення змінних дійсного типу} begin

writeln ('увести значення змінних р, а, Ь’); {повідомлення про введення}

readln (р, а, Ь);    {уведення значень змінних р, а, Ь}

т:=10000000-р; {кількість літрів, які необхідно накачати] t:=m/(a-b); {обчислення часу наповнення басейну] writeln (’наповниться через ',t,’ хвилин’); {виведення результату} readln    {призупинення виконання програми}

end.

Виконуємо

1.    Розробіть алгоритм і програму обчислення значення функції у— е* + (5х-1)(х+1)+х2 для будь-якого значення .г*.

2.    Розробіть алгоритм і програму обчислення значення функції у=(а2+Ь+с)/(а2+Ь+с-4ас) для додатних значень а, Ь, с за умови, що знаменник не дорівнює нулю.

 

3.

 

Автомобіль і пішохід одночасно розпочали рух з пункту А в

пункт В, які розташовані на відстані І км один від одного. Автомобіль, досягши пункту В, не затримуючись, повертає і рухається в пункт А. Через 4 год після початку рухзг він зустрічає пішохода па відстані II4 від пункту А. Розробіть алгоритм і програму визначення, з якою швидкістю рухалися автомобіль і пішохід.

^ У посудині зберігалося п літрів спирту 96 . Потім у посудину

 

4.

додали т літрів води. Розробіть програму, щоб визначити скільки градусів мас суміш. 1

програму визначення швидкості руху автобуса і маршрутного таксі. Відстань від Києва до Харкова знайдіть в Іптернеті.

 

Завдання

Є кімната довжиною т м, шириною п м і висотою її пі. У одній стіні Є двері ВИСОТОЮ її і М І шириною Пі М, а В другій — ВІКНО шириною П'2 м і ВИСОТОЮ ІІ2 м. Скільки потрібно повних рулонів шпалер шириною 1 м і довжиною 10 м, щоб оклеїти стіни кімнати?

1.    Розробити програму обчислешія потрібної кількості рулонів шпалер.

2.    Увести програму. Виконати її компіляцію. Виправити всі синтаксичні помилки і запустити програму на виконання.

3.    Довести, що програма виконується правильно.

4.    Зберегти програму.

 

Завдання

Розробити програму, за допомогою якої створюється текстовий файл, що

містить такі дані учня:

прізвище;

клас;

улюблений предмет;

За допомогою цієї програми здійснюється також виведешш зміст}' файлу на екран.

Приклад змісту файлу: Костенко, 8 клас, інформатика.

 

Словничок

 

Дані логічного типу

- дані, що набувають лише двох значень (true і false).

Операпди

виразу

- константи, змінні та функції.

Рядковий тип

- послідовність символів довжиною до 255.

Символьний тип даних

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

Стандартні

функції

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

Структуров ані типи даних

- дані, що об'єднуються у структури (масиви, записи, множини та інші).

 

Це матеріал з підручника Інформатика 8 клас (поглиблений рівень) Гуржій

 

Категорія: Інформатика

Автор: admin от 14-12-2016, 00:05, Переглядів: 3761