- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови Turbo Pascal
- •Розділ оголошень і угод
- •Розділ текстів процедур і функцій
- •Розділ основного блоку програми
- •Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.
- •Функції числових параметрів.
- •Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
- •1. Оператор if.
- •2. Оператор вибору (case)
- •Оператори циклів у Паскалі
- •1. Цикл із післяумовою (Repeat)
- •2. Цикл із предумовою (While)
- •3. Цикл із лічильником або параметром (For)
- •Концепція типів даних. Типи даних в мові Pascal
- •Дійсні типи
- •Бульовий (логічний) тип
- •Символьні і рядкові змінні
- •1. Символьний тип
- •2. Рядковий тип
- •Перерахований та обмежений типи
- •1. Перерахований тип
- •2. Обмежений тип
- •1. Поняття масиву. Одномірні масиви
- •2. Багатомірні масиви
- •3. Сортування і пошук
- •Множинний тип
- •Тип запис
- •Процедури і функції
- •Формальні і фактичні параметри. Механізм параметрів
- •Параметри - значення
- •Параметри-змінні
- •Безтипові параметри
- •Приведення типів.
- •Процедурні типи
- •Рекурсія Рекурсивні визначення
- •Рекурсивні підпрограми
- •Алгоритми з поверненням. Розв’язок задачі про рух коня
- •Алгоритми з поверненням. Розв’язок задачі про вісьмох ферзів
- •If підходить тнеn
- •Модулі в Турбо Паскалі
- •Модуль crt
- •1. Керування екраном
- •2. Робота з клавіатурою
- •3. Інші можливості
- •Графіка в Турбо Паскалі
- •1. Включення і вимикання графічного режиму.
- •2. Побудова елементарних зображень
- •3. Виведення текстової інформації.
- •Файли в мові програмування Pascal
- •Установчі і завершальні операції
- •Операції введення-виведення
- •Обробка помилок введення-виведення
- •Переміщення по файлу
- •Спеціальні операції
- •Текстові файли
- •1. Оголошення файлової змінної і прив'язка до файлу на диску
- •2. Читання даних з файлу
- •3. Запис даних у файл
- •Двійкові файли
- •1. Типізовані файли
- •2. Нетипізовані файли
- •Статичні і динамічні змінні
- •Покажчики
- •Стан покажчика
- •Установка розмірів динамічної пам'яті
- •Сумісність і перетворення посилкових типів
- •Динамічні структури даних
- •Динамічні змінні: інші види списків, стек і черга.
- •1. Інші види списків
- •2. Стек і черга
- •Дерева і пошук у деревах
- •1. Визначення й описи структур даних
- •1. Масив
- •2. Список
- •3. Дерево
- •2. Алгоритми
- •1. Лінійний пошук у масиві
- •2. Двійковий пошук
- •3. Лінійний пошук у списку
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
2. Обмежений тип
Цей тип також розглянемо на прикладі. Нехай у деякій змінний потрібно зберігати поточне число, тобто номер дня в місяці. У Турбо Паскале можна задати тип DaysInMonth = 1..31;. Змінні і константи цього типу можуть приймати тільки такі значення, якщо спробувати задати що-небудь інше, то компілятор видасть помилку. Як границі можуть вживатися і від’ємні числа, наприклад
Temperature= - 60..50;
Як базовий тип (тобто тип, з якого вибирається діапазон значень) можуть використовуватися майже всі порядкові типи, тобто ті, котрі зберігаються у виді цілих чисел. До порядкових типів відносяться: усі цілі типи (byte, integer, і т.п.), char, boolean, перераховані типи й обмежені типи. Як базовий тип не можна використовувати лише сам обмежений тип (важко представити, як це можна зробити). З урахуванням цього правила припустимі такі оголошення типів:
type SmallLatin = 'а'..'z'; {малі латинські букви}
MyBoolean = True..False; {хоча це і безглуздо}
Holidays = Sat..Sun; {вихідні}
Не можна як базовий тип ужити який-небудь дійсний тип, наступне оголошення приведе до помилки:
type Wrong = -1.25..1.25;
Помітимо, що функції Ord, Succ і Pred можуть застосовуватися до будь-яких порядкових типів, і, зокрема, до обмеженого.
Масиви
1. Поняття масиву. Одномірні масиви
Масиви є представниками структурованих типів даних, тобто таких, змінні яких складаються з більш простих елементів відповідно до визначеного порядку. Для масивів характерно те, що вони є сукупністю деякого числа однакових елементів. У найпростішому випадку ці елементи можуть бути занумеровані натуральними числами з деякого діапазону. Розглянемо приклад такої змінної в Турбо Паскале:
var a: array [1..10] of real;
Змінна a складається з десяти елементів типу real, можна записувати і зчитувати значення з неї, користаючись записом a[<номер елементу>].
Приклад 1. Пошук найбільшого числа серед елементів масиву.
program FindMaximumInArray;
var a: array[1..10] of real;
i,max: integer;
begin
for i:=1 to 10 do begin
write('Введіть елемент номер ',i,' -> ');
readln(a[i]);
end;
max:=a[1];
for i:=2 to 10 do
if a[i]>max then max:=a[i];
writeln('Максимум дорівнює ',max);
readln;
end.
Як тип елементів масиву можна використовувати всі типи, відомі нам на даний момент (до них відносяться всі числові, символьний, рядковий і логічний типи).
Нумерувати елементи масивів можна не тільки від одиниці, але і від будь-якого цілого числа. Узагалі для індексів масивів підходить будь-який порядковий тип, тобто такий, котрий у пам'яті машини представляється цілим числом. Єдине обмеження полягає в тому, що розмір масиву не повинний перевищувати 64 Кб. Розглянемо деякі приклади оголошення масивів.
var Numbers: array [0..1000] of integer;
Names: array [1..10] of string;
Crit: array[shortint] of boolean;
CountAll: array[char] of integer;
Count: array['a'..'z'] of integer;
У наступному прикладі показане для чого може знадобитися останній тип.
Приклад 2. Підрахунок кількості різних букв у рядку.
program CountLetters;
var s: string;
count: array['a'..'z'] of byte;
ch: char;
i: byte;
begin
write('Уведіть рядок > ');
readln(s);
for i:=1 to length(s) do
if(s[i]>='a')and(s[i]<='z')then inc(count[s[i]]);
writeln('Кількість різних букв у рядку: ');
for ch:='a' to 'z' do
if count[ch]<>0 then
writeln(ch,': ',count[ch]);
readln;
end.