
- •Алфавіт мови включає в себе:
- •Лексеми мови. Під лексемами розуміють елементарні конструктивні елементи програми, які є неподільними:
- •Оголошення підпрограм: функцій та процедур. Структурне програмування передбачає побудову програм, яка фактично буде послідовністю звертань до підпрограм.
- •Оператор присвоєння присвоює змінній значення виразу, в якості якого може використовуватися і константа, і змінна, і результат обрахування функції, і група операцій. Оператор має вигляд:
- •Складений оператор. Якщо потрібно деяку групу команд інтерпретувати, їх як одну команду, тобто об’єднати їх в певному контексті, то використовують складені оператори.
- •Оператори вводу-виводу. В мові програмування Turbo Pascal ввід-вивід здійснюється насправді не операторами, а стандартними
- •Оператор розгалуження. В ряді випадків алгоритм розв’язку задачі передбачає розгалуження, тобто можливість виконання декількох різних дій в залежності від значення певної логічної умови.
- •Оператори циклу.
- •Програма знаходження суми чисел 1..10.
- •Програма друкування символів ‘a’..’z’.
- •Програма побудови таблиці істинності для and.
- •Скалярні / прості / стандартні типи даних:
- •Скалярні типи користувача:
- •Наприклад
- •4.Структурокані типи даних:
- •1 Діапазон – одновимірний масив;
- •2 Діапазони – двовимірний ( таблиці, матриці);
- •Наприклад
- •5.Комбіновані структури даних.
- •Варіантна частина у записі може бути лише одна і лише в кінці. Службове слово end є спільним для конструкції record і варіантної частини.
- •Приклади задач з масивами
- •Знайти середнє арифметичне додатніх і від’ємних елементів масиву цілих чисел.
- •Стандартні підпрограми обробки рядків
- •Операції над множинами
- •1. Процедури являють собою дію, тому їх можна використовувати в якості окремого оператора в розділі операторів програми.
- •2. Функції являють собою значення певного типу, крім цього вони можуть використовувати деяку дію, але значення їх є головним. Тому функції використовують як окремі оператори у виразах.
- •Параметри-змінні
- •Без типові параметри
- •Наявність умови зупинки, при якій деякому параметру рекурсії передається деяке значення рекурсії.
- •Чітко визначений алгоритм, при обчисленні кожного вищого рівня рекурсії через попередній рівень.
- •Типізовані.
- •Текстові.
- •Безтипові.
- •Процедура зв’язування певної файлової змінної із конкретним файлом на диску
- •Процедура відкриття файлу для читання
- •Процедура відкривання файлу для запису
- •Процедура закривання файлу
- •Процедура примусового очищення внутрішнього буфера обміну
- •Розглянуті раніше встановлюючи та завершальні підпрограми
- •Процедура читання
- •Процедура запису у файл
- •Функція визначення розміру файла у записі
- •Процедура відсікання хвостової частини файлу
- •Процедура читання з текстового файлу
- •Процедура запису
- •1. Процедура для перейменування файлів
- •2. Процедура видалення файлу
- •Xxxx0 адреса
- •35 Квартира з номером 34 у 13 будинку з номером 12.
- •Файли розміщуються в зовнішній пам'яті, а динамічні структури в оперативній.
- •Типізовані файли фактично є файлами прямого доступу, що означає довільний доступ до елементів. В динамічних структурах доступ до елементів виключно послідовний.
- •Здійснюватиметься рух по дереву до крайнього лівого елемента (найменшого).
- •Це значення друкується.
- •Робиться один крок вправо і послідовність 1-3 повторюється відносно нової поточної вершини.
- •Заголовок.
- •Інтерфейс на частина.
- •Розділ реалізації. В реалізації описуються всі компоненти мови, які мають бути невидимі зовні.
- •Процедури управління виконанням програм
- •Функції перетворення типів
- •Процедури і функції для змінних порядкового типу
- •Математичні функції
- •Процедури та функції роботи з рядками
- •Процедури та функції управління динамічною пам’яттю
- •Функції роботи з вказівниками і адресні функції
- •Процедури вводу-виводу і роботи з файлами і каталогами
- •Інші процедури і функції
- •Змінні та константи модуля
- •Змінні модуля crt
- •Процедури і функції модуля crt
- •Перепризначення файлів вводу-виводу
- •Процедури роботи з екраном
- •Процедури і функції управління курсором
- •Процедури роботи з рядками
- •Функції допиту клавіатури
- •Процедури управління кольором
- •Процедури управління вбудованим динаміком і таймером
- •Використання клавіш редагування рядків
- •Використання командних символі
- •Типи драйверів
- •Типи шрифтів
- •Ініціалізація графіки класифікація типів драйверів і відео режимів
- •Ініціалізація і завершення відеорежиму
- •Обробка помилок ініціалізації
- •Процедури роботи з відеорежимами
- •Переключення між текстовим і графічним режимами
- •Побудова зображень на екрані система координат
- •Управління поточним вказівником
- •Графічні вікна
- •Відображення точки на екрані
- •Відображення відрізків прямих ліній
- •Побудова прямокутників
- •Побудова многокутників
- •Побудова дуг, еліпсів і кіл
- •Робота з текстом
- •Відображення рядків
- •Відображення числової інформації
- •Управління параметрами зображення встановлення кольору
- •Встановлення палітри
- •Функції управління операційним середовищем
- •Процедури управління процесами
- •Процедури обслуговування переривань
- •Програми, резидентні в пам'яті
- •Процедури роботи з датою і часом
- •Процедури і функції перевірки стану диску
- •Процедури і функції роботи з файлами
- •Інші процедури і функції
- •Поля даних оголошуються на початку, а методи після них.
- •При оголошенні методів у структурі задаються лише заголовок відповідної підпрограми (подібно до інтерфейсу в модулях).
- •Окремі методи можуть використовувати інші методи цього ж об’єкта, тому вони повинні бути оголошенні в певному порядку.
- •Ini; {ініціалізація графіки}
- •Віртуальним варто оголошувати лише той метод, який:
- •Постановки задачі;
- •Наявними програмними ресурсами;
- •Вимогами по швидкодії, використанням ресурсів еом.
Оператор розгалуження. В ряді випадків алгоритм розв’язку задачі передбачає розгалуження, тобто можливість виконання декількох різних дій в залежності від значення певної логічної умови.
Для реалізації розгалуження використовують оператор розгалуження.
IF <логічний вираз> THEN <оператор 1> ELSE <оператор 2>;
Логічний вираз може набувати одного із значень true або false. Якщо результат true, то виконується оператор 1, якщо false – оператор 2.
В якості операторів 1,2 виконується один оператор, якщо він дійсно один, або складений оператор об’єднаний операторними дужками begin, end.
Наприклад
Програма знаходження коренів квадратного рівняння.
Var a,b,c, d, x1, x2: real;
Begin
Writeln (‘введіть коефіцієнти a, b, c’);
Readln(a,b,c);
d:=b*b-4*a*c;
if d >0 then
begin
x1:=(-b+sqrt(d))/2/a;
x2:=(-b-sqrt(d))/2/a;
writeln(‘x1=’,x1:12:6, ‘ x2=’,x2:12:6)
end
else
if d=0 then
begin
x1:=-b/2/a;
writeln (‘x=’,x1:12:6)
end
else
writeln (‘коренів немає’)
end.
Оператори циклу.
а) Оператор циклу з параметром. Якщо потрібно у алгоритмі виконати повторення деякої кількості команд кілька разів, застосовують оператор циклу з параметром.
FOR <параметр> : = <початкове значення> TO<кінцеве значення> DO <оператор тіла циклу> ;
Параметр – змінна якогось із дискретних типів. Її початкове значення задається виразом, після кожного етапу циклу значення параметру збільшується на 1 визначеного типу. Повторення повторюються доти, доки значення не стане кінцевим.
Якщо початкове значення більше від кінцевого, то це не є помилкою, просто цикл жодного разу не виконається.
Тіло циклу складається з 1 оператора, якщо він 1, або є складеним оператором в операторних дужках.
Наприклад
Програма знаходження суми чисел 1..10.
Var
i, S:integer;
begin
S:=0;
For i:=1 to 10 do S:=S+i;
Writeln(S);
End.
Програма друкування символів ‘a’..’z’.
Var c:char;
Begin
For c:=’a’ to ‘z’ do write(c:3);
End.
Програма побудови таблиці істинності для and.
Var a,b: Boolean;
Begin
For a:=false to true do
Begin
For b:=false to true do
Write (a and b :6);
Writeln
End End;
End.
Цей оператор циклу ще називають оператором циклу з параметром for to, він передбачає повторення із збільшенням параметру. Оскільки в Turbo Pascal не можна керувати кроком зміни параметра, то для реалізації повторення із зменшенням параметра використовують інший варіант циклу for downto.
FOR<параметр> : = <початкове значення> DOWNTO <кінцеве значення> DO <тіло циклу>;
Після виконання кожного етапу циклу параметр зменшується на 1 одиницю типу.
Зауваження. У випадку необхідності вийти з тіла циклу достроково, тобто до досягнення параметру кінцевого значення не бажано користуватися оператором безумовного переходу, а також аналітичним йому підпрограм типу exit, halt(1).
Для виконання виходу краще змінити значення параметру в тілі циклу.
б) Оператор циклу з передумовою. Якщо кількість повторень деякої послідовності команд алгоритму не є визначеною наперед, або повторення повинні припинитися у різних випадках, то оператор циклу з параметром не завжди дозволяє виконати це. Також можливі ситуації, коли алгоритм взагалі не оперує якимось параметром, а повторення продовжується до певної логічної умови. В таких випадках використовується інший варіант циклу. Фактично їх два. Один із них називається циклом з передумовою.
WHILE <логічний вираз> DO <тіло циклу> ;
Поки значення логічного виразу в заголовку є істинним, виконується тіло циклу, коли значення виразу хибне, цикл припиняється. Якщо логічний вираз є хибним відразу, то цикл не виконується жодного разу.
Очевидно, що тіло циклу повинно містити якісь дії, що приводять до зміни логічного виразу від true до false.
Наприклад
Дано мішок картоплі, яка вся різної маси. Найменша картоплина важить 50 г. Крок маси 5 г . Скільки картоплин вміститься в 10 кг відрі, якщо їх класти в порядку зростання маси.
Var m, dm, S: real;
i: integer;
begin
m:=0.05;
dm:=0.005;
S:=0; i:=0;
While S<=10 do
Begin
S:=S+m; i:=i+1;
m:=m+dm
end;
writeln(кількість картоплин‘’,i-1)
end.
в) Оператор циклу з післяумовою. Цикл з передумовою передбачає спочатку перевірку, а потім виконується. Деколи потрібно навпаки, спочатку виконати дію, а потім перевірити результат. Якщо результат незадовільняє, то повторити відповідні дії.
REPEAT <тіло циклу> UNTIL <логічний вираз> ;
Тіло циклу виконується до тих пір, поки значення логічної умови є хибною, як тільки істинне цикл припиняється.
Не потрібно об’єднувати тіло циклу операторними дужками.
Наприклад
Відрахувати кількість картоплин, що у відрі, якщо остання повинна важити не менше півкіло.
...
begin
m:= 0.05;
dm:= 0.005;
i:=0;
repeat i:=i+1;
m:=m+dm
until m>=0.5;
writeln(кількість картоплин‘’,i+1)
end.
Зауваження. Використання операторів циклу з передумовою і післяумовою дозволяє забезпечити достроковий вихід з циклу при певній умові без конструкції типу exit або goto. Для цього достатньо в логічний вираз включити складену умову, яка є кон’юнкцією, диз’юнкцією умов покорення та умови дострокового виходу.
Наприклад
Підрахувати кількість картоплин у відрі, поки не буде покладена 0.5 кг, якщо при цьому вони вміщатимуться у відро.
…
begin
m:=0.05;
dm:=0.005;
S:=0; i:=0;
While (S<=10) and(m<0.5) do
Begin S:=S+m; m:=m+dm; i:=i+1
End;
If S>10 then writeln(‘відро переповнилося’) else writeln(‘0ю5 кг картоплина під №’,i);
End.
Оператор вибору варіанту. Оператор варіанту подібний до оператора розгалуження, оскільки передбачає виконання однієї з декількох послідовності команд в залежності від значення спеціального параметра.
Відмінність від оператора розгалуження полягає у тому, що кількість можливих альтернативних варіантів може бути значно більшою ніж 2. Вибір варіанту визначається не значенням логічного виразу, а значенням параметра, що є величиною одного із порядкових типів. Загальна структура:
CASE <параметр> OF
<значення1> : <оператор>;
<значення2> : <оператор2>;
...
<значення п> : <оператор п>
END
ELSE <оператор п+1> ;
Параметр може бути або константою, або змінною, або виразом деякого порядкового типу.
Значення 1, 2... – деякі можливі значення відповідного порядкового типу, яких може набувати параметр. В залежності від значень параметра виконується один з операторів.
Якщо реальне значення параметра не співпадає ні з жодним значенням, то виконується альтернативна частина else. Оскільки вона не обов’язкова, то її відсутність означає не виконання жодної дії.
Зафіксовані значення параметрів можуть бути не лише окремими зображеннями відповідного типу, а цілими, інтервальними або переліком декількох значень.
Наприклад
Вивести на екран повідомлення про вид символа, що вводиться з клавіатури.
Var c:char;
Begin
Repeat
Writeln (‘введіть символ, клавіша esc - кінець’);
Readln(c);
Case c of
#0..#31: writeln(‘командний’);
‘A’..’Z’,’a’..’z’: writeln(‘англійська буква’);
‘0’..’9’: writeln(‘цифра’);
#128..#255: writeln(‘альтернативна частина таблиці’);
end
else writeln (розділовий знак‘’)
until c=#27;
end.
ТЕМА: Система типів мови Pascal.
Мову програмуванняTurbo Pascal відносять до строго типізованих мов. Це означає, що всі елементи програми повинні бути оголошені явним чином. Явне оголошення типу визначає діапазон допустимих значень та допустимими операціями.
Компілятор мови здійснює перевірку типів у всіх типів даних.
Мова програмування має розгалужену систему типів. Частина з них є скалярними, інші є структурними або складеними.
ТИПИ МОВИ ПРОГРАМУВАННЯ TURBO PASCAL: