Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АП_лабораторна робота 1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
235.01 Кб
Скачать

Алгоритмізація та програмування

Лабораторна робота № 1

(кількість аудиторних годин – 2)

Тема роботи: "МОВА ПРОГРАМУВАННЯ ПАСКАЛЬ.

ЛІНІЙНІ ПРОГРАМИ "

Мета роботи: знайомство з середовищем програмування, робота з лінійними програмами.

Теоретична частина

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

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

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

Тіло програми починається службовим словом begin і закінчується ключовим словом end, за яким стоїть крапка. Між begin і end записується основний текст програми, що складається з інструкцій (операторів), розділених крапкою з комою ";". Структура begin - end називається операторними дужками. Для зручності запису програми її розбивають на рядки. Рядок можна починати з декількох пропусків, що дозволяє полегшити читання програми.

Найпростіша програма на мові PASCAL схематично може бути зображена в такий спосіб:

program <ім'я програми>(<зв'язок з оточенням>);

var <список імен перемінних>:<тип>;

begin

{текст програми, що виконується}

end.

Текст програми мовою Турбо-Паскаль складається з рядків утворених із символів алфавіту, який включає букви, цифри й спеціальні символи коду ASCІІ (Amerіcan Standard Code for Іnformatіon Іnterchange) - стандартний американський код для обміну інформацією).

1. Букви. Великі й малі літери латинського алфавіту й символ підкреслення A, B, C,...,Z, a ,b, c,... z, _

2. Цифри. Використовуються 10 арабських цифр: 0, 1, ... , 9

3. Спеціальні символи. Використовуються 22 спеціальних символи:

+ - / * = < > . , : ; @ ' ( ) [ ] { } # $ ^

Саме з символів алфавіту мови Паскаль і конструюють слова, які відділяють одне від одного розділовими символами (пропуск, кома, коментар, ознака кінця рядка).

Слова поділяють на:

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

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

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

Зарезервовані слова Турбо Паскаля: and, export, nil, string, asm, fife, not, then, array, for, object, to, begin, function, of, type, case, goto, or, unit, const, if, packed, until, constructor, implementation, procedure, uses, destructor, in, program, var, div, inline, record, while, do, interface, repeat, with, downto, label, set, xor, else, library, end, mod, shr.

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

Рис. 1. Типи даних мови Паскаль

У мові Pascal визначені 4 стандартних простих даних (таблиця 1):

    • Integer (цілий);

    • Real (дійсний);

    • Char (символьний).

    • Boolean (логічний);

Таблиця 1

Типи даних

Тип

Допустимі значення

Формат

Integer

-32768 .. 32767

2 байта зі знаком

Real

2.9 * 10-39 .. 1.7 * 10+38

6 байт

Boolean

False, True

1 байт

Char

[‘A’..’Z’, ‘a’..’z’], [’0’ .. ’9’], розділові знаки і спец.символи

1 байт

Тип даних Integer

Значеннями цілого типу Integer є елементи підмножини (відрізка) цілих чисел.

Операції:

* − множення;

div − цілочисельне ділення;

mod − остача від цілочисельного ділення;

+ − додавання;

- − віднімання;

Функції:

Abs(x) -  х ;

Sqr(x) - х 2;

Trunc(x) - відкидання дробової частини від дійсного х;

Round(x) - округлення дійсного x;

Succ(x) - х + 1;

Pred(x) - х - 1;

Відношення:

< - менше <= - менше або дорівнює

> - більше >= - більше або дорівнює

= - дорівнює <> - не дорівнює

Тип даних Real

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

Операції:

* − множення; / − ділення;

+ − додавання; - − віднімання;

Функції

Abs(x) - модульх;

Sqr(x) – х2 у квадраті;

Sqrt(x) - корінь з х,

Sin(x) - sin х;

Cos(x)- cos х;

Arctan(x)- arctg х;

Ln(x) - ln х;

Exp(x) - e х;

Відношення: такі самі, як і для типу Integer.

Тип даних Сhar

Символьний тип Сhar – представляє особливий тип даних, призначений для зберігання одного символу (букви, знаку або коду). В змінну цього типу на комп’ютері може бути розміщений будь-який з 256 символів розширенного коду ASCII.

Функції

Ord(x) - порядковий номер x.

Chr(n)- символ з порядковим номером N.

Pred(x)- символ, який передує x.

Succ(x) - символ, який слідує за x.

Відношення

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

= , <> , > , < , >= , <= .

Результат порівняння можна використовувати як дані типу Boolean.

Тип даних Boolean (логічний)

Змінні типу Boolean є логічними змінними, що можуть приймати тільки 2 значення: True (істина) і False (хибність). Значення булевого типу True і False є по суті інтерпретаторами констант.

Операції

Для булевих змінних, що приймають тільки 1 із 2-х допустимих значень, дозволені тільки 2 операції порівняння “=” і “<>” (недорівнює). Інші доступні для логічних змінних операції: AND, OR, NOT.

Операції і вирази

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

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

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

Математичні операції

+ − додавання;

- − віднімання;

* − множення;

/ − ділення;

div − ціла частина від ділення (наприклад: 7 div 2= 3);

mod − остача від ділення (наприклад: 7 mod 2= 1);

= − дорівнює;

<> − не дорівнює (≠);

> −більше;

< − менше;

>= − більше або рівне (≥);

Для даних цілого і логічного типів можуть застосовуватись логічні операції. Допустимі логічні операції наведено у таблиці 2.

Таблиця 2

Логічні операції

Позначення

Операція

Тип операндів

Тип результату

not

логічне заперечення

цілий, логічний

цілий, логічний

and

логічне І, кон’юнкція

цілий, логічний

цілий, логічний

or

логічне АБО, диз’юнкція

цілий, логічний

цілий, логічний

xor

виключне логічне АБО

цілий, логічний

цілий, логічний

Перша логічна операція в таблиці 2 – це унарна операція. Її дія полягає в тому, що вона змінює логічне значення на протилежне. Наприклад, якщо а-логічна змінна, що має значення true, то результатом операції (not a) буде false.

Всі інші логічні операції – бінарні. Для їх використання необхідно два операнди. Результат дії бінарних логічних операцій при різних значеннях операндів наведено в таблиці 3.

Таблиця 3

Результат дії логічних операцій над операндами логічного типу

Значення операнда 1

Значення операнда 2

Результат операції

and

or

xor

true

true

true

true

false

false

true

false

true

true

true

false

false

true

true

false

false

false

false

false

Операнди і операції формують вирази. У найпростішому випадку вираз може складатися лише з однієї унарної операції. Операції у виразі виконуються у порядку їхнього приорітету (таблиця 4).

Таблиця 4

Пріоритет операцій

Оператори

Пріоритет

Категорія

@, not

перший (вищий)

унарні операції

*,/,div,mod, nd,shl,shr

другий

операції множення

+,-,or,xor

третій

операції додавання

=, <>, <, >,<=, >=, in

четвертий (вищий)

операції відношення

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

  • визначаються значення функцій;

  • виконуються арифметичні операції в залежності від пріоритету (в дужках);

  • виконуються операції порівняння;

  • логічні операції.

Стандартні функції

Більшість операцій по обробці величин виконують стандартні функції. Функція має ім'я (ідентифікатор), за яким вказано один чи більше аргументів. При зверненні до функції викликається готова вбудована в транслятор програма обробки, якій, в якості вхідних величин, передаються аргументи функції. Результат повертається в головну програму через ім'я функції.

Abs(X) − обчислення абсолютного значення (модулю) Х.

ArcTan(X) − обчислення кута, тангенс якого дорівнює Х, значення кута подано в радіанах і може знаходитися в діапазоні від -π/2 до π/2. Для перетворення значення кута з радіанної міри в градусну необхідно значення кута помножити на число 180/π. Результат має дійсний тип.

Cos(X) − обчислення косинуса Х, параметр задає значення кута в радіанах.

Exp(x) − обчислення значення експоненти аргументу (x). Результат завжди має дійсний тип.

Frac(X) − знаходження дробової частини Х. Результат має дійсний тип.

Int(X) − знаходження цілої частини Х (дробова частина відкидається). Результат має дійсний тип.

Ln(x) − обчислюється натуральний логарифм аргументу. Результат має дійсний тип. За допомогою функцій Exp та Ln можна обчислити довільну степінь числа так: ab=Exp(b*Ln(a)), відповідно корінь можна подати так само a1/b (тобто корінь степеня b з a =Exp(1/b*Ln(a)).

Pi − повертає значення числа p (3.1415926).

Sin(X) − обчислення синуса Х. Параметр задає значення кута в радіанах. Для перетворення значення кута з радіанної міри в градусну необхідно значення кута помножити на число 180/p. Результат має дійсний тип.

Sqr(X) − піднесення до квадрата значення Х.

Sqrt(X) − обчислення квадратного кореня з Х. Тип результату дійсний.

Random − генерує значення випадкового числа з діапазону від 0 до 0.99. Тип результату дійсний.

Random(P) − генерує значення випадкового числа з діапазону від 0 до P. Тип результату цілий. Щоб випадкові числа були «більш випадковими», необхідно періодично змінювати базу генерації. Для цього використовується процедура Randomize, що дозволяє при кожному новому запуску програми отримувати різні випадкові числа.

Для величин перелічувальних типів (всі цілі, літерний та булівський) існують також декілька зручних стандартних функцій та процедур:

Dec(x, [dx]) — процедура зменшує значення змінної Х на величину DX, а якщо параметр DX не заданий — на 1.

Inc(x, [dx]) — процедура збільшує значення змінної Х на величину DX, а якщо параметр DX не заданий — на 1.

Pred(X) — функція, що визначає попереднє значення для даного типа. Наприклад, Pred(5)=4, Pred(True)=False, Pred('B')='A'.

Succ(X) — функція, що визначає наступне значення для даного типа. Наприклад, Succ(5)=6, Succ(True)=False, Succ('A')='B'.

Odd(X) — число перевіряється на непарність. Результат дорівнює true, якщо аргумент непарний, і false — в протилежному випадку.

Структура слідування

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

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

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

а) Оператор вводу. Pascal має дві процедури вводу: Read, Readln. Оператор вводу Read здійснює читання даних із буфера обміну пристрою вводу-виводу без переведення курсору на новий рядок. Процедура Readln здійснює читання із переведенням курсору на початок нового рядка.

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

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

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

Наприклад

Var

x: integer;

y: real;

s: string;

c: char;

read (x, y, s, c);

Дані вводяться так: 23 6.89 доля Ф , після кожного вводу натискаємо Enter.

б) Оператор виводу. Pascal має дві процедури виводу: Write, Writeln. Процедура Write здійснює запис в буфер обміну пристрою вводу-виводу без переведення курсору на новий рядок. Writeln здійснює запис із переведенням курсору на початок нового рядка.

Для процедур запису в якості параметрів можуть використовуватися ідентифікатори змінних, ідентифікатори констант, вирази.

Наприклад

Var

x: integer;

y: real;

s: string;

c: char;

x: =2; y: =6.35; s: =’осіння’; c: =’A’;

writeln( x,’3’, x+y, s+’ пора’, ord(c)); { 238.35осіння пора65 }

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

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

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

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

Наприклад

y: = -365.4587;

writeln(y) {-3.654587E+02 }

writeln(y:12:5) {…-365.4587}

writeln(y:12:3) {….-365.459}

writeln(y:0:7) {-365.4587}

Правила написання Pascal-програм

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

2. В кінці кожної команди ставиться крапка з комою (“;”).

3. Після команди, яка знаходиться перед end, крапку з комою (“;”) бажано не ставити, оскільки буде вважатись, що перед end є ще один порожній оператор.

4. Команди в Pascal можна записувати в один рядок, хоча для полегшення читання коду програми бажано кожну команду вказувати з нового рядка.

5. Якщо користувач бажає помістити в текст програми коментарі, то їх необхідно вказувати у фігурних дужках.

6. При астосуванні в програмі виразів, що містять будь-які дужки, потрібно пам’ятати, що кількість закритих та відкритих дужок повинна бути однаковою.

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

8. Усі змінні, константи та типи даних, що використовуються в програмі, повинні бути описані в розділах const, type та var.

Приклад лінійної програми

Скласти програму обчислення значення функції: Y=(a-b+c)/(a+b), при a=16, b=9, c=-17.

Program pr3;

Uses crt;

Var

y:real;

a,b,c:integer;

Begin

Write(‘введіть значення а:’);

Readln(a);

Write(‘введіть значення b:’);

Readln(b);

Write(‘введіть значення c:’);

Readln(c);

Y:=(a-b+c)/(a+b);

Writeln(‘Значення функції Y=’,Y:2:2);

Readln;

End.