Міністерство освіти і науки України
Вінницький національний технічний університет
Факультет інформаційних технологій і комп'ютерної інженерії
Кафедра комп'ютерних наук
Лабораторна робота №3
з дисципліни: "Алгоритмізація та програмування"
Тема:
підготовка і розв’язання на пк задач лінійного характеру
Мета:
набути практичні навики з підготовки, відладки та виконання лінійних програм
Хід роботи:
1. Основні теоретичні відомості
а) Алфавіт та ключові слова
Алфавіт мови програмування — це скінчений набір символів. За допомогою цих символів можуть бути записані ідентифікатори, вирази та оператори мови.
Алфавіт мови Pascal є підмножиною символів із кодової таблиці ASCII (від American Standard Code for Information Interchange — Американський стандартний код обміну інформацією). Кожному такому символу відповідає числовий код від 0 до 255. Частина символів кодової таблиці ASCII з кодами від 0 до 127 ідентична для всіх IBM-сумісних комп'ютерів. Символи алфавіту мови Pascal можна поділити на такі категорії:
символи, що використовуються для складання ідентифікаторів (малі латинські літери з кодами ASCII від 97 до 122, великі латинські літери з кодами ASCII від 65 до 90, десяткові цифри від 0 до 9 з кодами ASCII від 48 до 57, символ підкреслення (_) із кодом ASCII 95);
розділовий символ пробілу, код ASCII 32;
спеціальні символи, які використовуються у процесі побудови конструкцій мови ( + - * / = > < . , ; : ' ( ) [ ] { } ^ @ $ #);
керуючі символи, що мають ASCII-коди від 0 до 31.
Із символів алфавіту складаються лексичні одиниці мови, або лексеми — мінімальні значущі одиниці в текстах програм. Множина всіх допустимих лексем називається словником мови програмування. У мові Pascal розрізняють такі види лексем: спеціальні символи, зарезервовані (ключові) слова, ідентифікатори, неіменовані константи, коментарі та директиви компілятора.
Лексеми спеціальних символів, окрім спеціальних символів з алфавіту мови, містять ще складені спеціальні символи, що сприймаються компілятором як єдине ціле ( <= >= := (* *) ..).
Зарезервовані (ключові) слова мають строго визначений зміст. їх призначення не може змінюватися. Зарезервовані слова використовуються для позначення алгоритмічних конструкцій, розділів програми тощо.
Ідентифікатор — це ім'я, значення якого може варіюватися від програми до програми або навіть у межах однієї програми. У мові Pascal розрізняють стандартні ідентифікатори та ідентифікатори користувача.
Стандартними ідентифікаторами є імена вбудованих у мову процедур і функцій (read, write, sin, cos тощо), типів даних (integer, real, char тощо) і директив (forward, virtual, absolute тощо). Для стандартних ідентифікаторів припустимим є переозначення, при якому вони втрачають стандартний зміст у межах даної програми.
Ідентифікатор користувача — це ім'я, яке обирає програміст для позначення (ідентифікації) елементів програми (іменованих констант, змінних, типів, полів запису, процедур, функцій, модулів, програм). Існують правила запису ідентифікаторів:
ідентифікатор починається буквою або символом підкреслення;
ідентифікатор може складатися із букв, цифр, символу підкреслення;
ідентифікатор може мати довільну довжину, але значущими є тільки перші 63 символи;
в ідентифікаторі неприпустимо використовувати символи пробілу, крапки та і інші символи пунктуації;
малі та великі літери в ідентифікаторах не розрізняються;
зарезервовані слова не можуть використовуватись як ідентифікатори.
Наведемо деякі рекомендації щодо використання імен у програмах:
використовуйте мнемонічні ідентифікатори (такі, що легко запам'ятовуються);
використовуйте довгі ідентифікатори, що складаються із декількох слів, кожне з яких починається з великої літери, наприклад: ComputerGraphicsInterface, MnemonicCode;
замість транслітерацій українських і російських слів бажано використовувати їх переклади англійською мовою.
Дотримання цих рекомендацій, нарівні із застосуванням коментарів, зробить текст програми більш зрозумілим.Серед неіменованих констант можна вирізнити числа, символи, рядки та логічні константи. Детальніше різновиди констант розглядатимуться в підрозділі 2.4.1.
Коментар — це фрагмент тексту програми, який записується у фігурних дужках ({}) або вміщується між лексемами (* та *). Коментарі пояснюють призначення окремих фрагментів програми. Вони ігноруються компілятором і не впливають на роботу програми, але полегшують її розуміння. Далі наведемо приклади коментарів:
{ Коментар записується у фігурних дужках }(*Коментар записується у круглих дужках із "зірочками"*)
Директива компілятора — це коментар, у якому безпосередньо за фігурною дужкою записано символ «$». Директиви компілятора визначають режими компіляції і можуть істотно впливати на зміст згенерованого компілятором машинного коду.
Деякі лексеми не повинні розташовуватися поруч. Наприклад, два поруч записаних ключових слова можуть інтерпретуватися компілятором як один ідентифікатор. Для відокремлення таких лексем застосовують порожні символи, або пробіли, — символи, що не мають зображення та з'являються у тексті програми як результат натискання клавіш Space (пробіл), Enter (кінець рядка) і Tab (символ табуляції). Пробіл між сусідніми лексемами не обов'язковий, якщо хоча б одна з них є роздільником (наприклад, символом крапки з комою), коментарем або знаком операції.
б) Стандартні типи даних, модифікатори доступу й перетворення типів даних
Цілі типи
Назва
Опис
Діапазон значень
Займана пам'ять
integer
ціле зі знаком
від -32768 до 32767
2 байти
shortint
коротке ціле зі знаком
від -127 до 127
1 байт
longint
довге ціле
від - 2147483648
до 2147483647
4 байти
byte
коротке ціле без знака
від 0 до 255
1 байт
word
ціле без знака
від 0 до 65536
2 байти
Речові типи
real
дійсне
від -3,4*1038 до -1,4*10-45, 0, від 1,4*10-45 до 3,4*1038
6 байт
single
дійсне
від 1,5*10-45 до 3,4*103
4 байти
double
подвійне дійсне
від 1,8*10308 до -4,9*10-324, 0, від 4,9*10-324 до 1,8*10308
8 байт
extended
розширене дійсне
від 3,4*10-4932 до 1,1*104932
10 байт
Логічний тип
boolean
логічне
True або False
1 байт
Символьний тип
char
символьне
1 символ
(із кодування ASCII)
1 байт
Перетворення типів в Паскалі може бути явним і неявним. При явному перетворенні типів використовуються виклики спеціальних функцій Ord, Trunc, Round, Chr, Ptr (перетворює чотирьохбайтний цілочисельний аргумент до типу-вказівника), аргументи яких належать одному типу, а результат іншому.
Перетворення можна забезпечити застосуванням ідентифікатора (імені) стандартного типу, чи певного типу користувача, як ідентифікатора функції перетворення для вираження преутвореного типу (зване автовизначення перетворення типів). Наприклад, припустимо такі виклики функцій:
Type Mytype = (A, B, З, D);
. . . . . . . . . . . . . . . . .
Mytype (2);
Integer (D);
Pointer (Longint (A) + $FF);
Char (127 Mod З);
Byte (K);
При автовизначенні перетворення типу висловлювання може відбутися зміна довжини її уявлення (зменшення чи збільшення).
в) Операції
/
г) Структура програми
program - назва програми або unit - назва модуля. Відмінність полягає в тому, що програма program описує програму, призначену для безпосереднього виконання, а модуль - бібліотеку підпрограм, яку можна використовувати в інших програмах. Розділ закінчується крапкою з комою.
interface та implementation - розділи, що відокремлюють зовнішню (інтерфейсну) поведінку модуля і внутрішню (реалізацію). Закінчуються з початком іншого розділу.
uses - список використовуваних бібліотек. Розділ закінчується крапкою з комою.
type - опис користувацьких типів даних. Розділ закінчується з початком іншого розділу.
var - опис змінних. Розділ закінчується з початком іншого розділу.
const - опис змінних. Розділ закінчується з початком іншого розділу.
label - опис міток. Сучасні принципи програмування настійливо не радять використовувати мітки. Розділ закінчується крапкою з комою.
procedure або function - опис підпрограми. Цей розділ може містити власні розділи type, var, const і label, а також власні внутрішні procedure та function! Ідентифікатори, описані всередині внутрішніх розділів, недосяжні ззовні підпрограми. Закінчується блоком коду між begin та end; (з крапкою з комою).
Блок коду - починається з begin, закінчується end. (з крапкою). В модулях може бути відсутнім, тоді програма закінчується одним словом end. (з крапкою).
2. Варіант 6
Завдання 1
Алгоритм:
/
Код програми:
program vartist;
var x, y, z, P: real;
begin
Write ('Ціна зошита = ');
Readln(x);
Write ('Ціна обкладинки = ');
Readln (y);
Write ('Кількість комплектів = ');
Readln (z);
P := (x+y)*z;
Writeln('Вартість покупки = ', P);
end.
Завдання 2
Алгоритм знаходження об'єму та площі кулі:
/
Код програми:
program kulia;
var r, V, S: real;
begin
Write ('Радіус кулі = ');
Read(r);
V := 3/4*pi*exp(ln(r)*3);
S := 4*pi*sqr(r);
WriteLn('Об*єм кулі = ', V, ', площа = ', S);
end.
Завдання 3
Алгоритм знаходження похідної у заданій точці:
/
Код програми:
program pohidna;
var x, P: real;
begin
Write ('х = ');
Read(x);
P := 3/4 *sin(x/2)*sin(x);
WriteLn ('Похідна дорівнює ', P);
end.
Висновок
Алфавіт мови програмування — це скінчений набір символів. За допомогою цих символів можуть бути записані ідентифікатори, вирази та оператори мови.
Символи алфавіту мови Pascal можна поділити на такі категорії:
символи, що використовуються для складання ідентифікаторів
розділовий символ пробілу
спеціальні символи ( + - * / = > < . , ; : ' ( ) [ ] { } ^ @ $ #);
керуючі символи, що мають ASCII-коди від 0 до 31.
Стандартні типи даних:
- Цілі типи:
integer
shortint
longint
byte
word
- Речові типи
real
single
double
extended
- Логічний тип
boolean
- Символьний тип
char
Структура програми:
program
interface та implementation
uses
type
var
const
label
procedure або function