
- •Базовий курс програмування у середовищі Turbo Pascal Методичні вказівки
- •Базовий курс програмування у середовищі Turbo Pascal Методичні вказівки
- •Практична робота №1
- •Організація вводу та виводу даних
- •Мета роботи: ознайомитись з конструкціями мови Turbo Pascal, структурою програм, стандартними типами даних і процедурами вводу та виводу.
- •Теоретичні відомості
- •1 Особливості мови Turbo Pascal
- •1.1 Спеціальні символи
- •1.2 Зарезервовані (ключові) слова
- •1.3 Ідентифікатори
- •1.5 Числа
- •1.6Рядки
- •1.7 Коментарі
- •2 Структура програми
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №2
- •Логічні та циклічні структури
- •Теоретичні відомості
- •1 Логічні структури
- •1.1 Команда розгалуження if (умовна команда)
- •1.2 Команда goto
- •1.3 Команда вибору (сase)
- •2 Циклічні структури
- •2.1 Команда циклу з параметром (for)
- •2.2 Команда циклу з передумовою (while)
- •2.3 Команда циклу з постумовою (repeat)
- •2.4 Порівняння роботи команд циклу while, repeat та for
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №3
- •Одновимірні масиви. Сортування
- •Мета роботи: ознайомитись з поняттям одновимірних масивів та діями над ними, навчитися застосовувати різні методи сортування для розв’язку математичних і технічних задач.
- •Теоретичні відомості
- •1 Одновимірні масиви
- •1.1 Додавання елементів масиву
- •1.2 Лічильник
- •1.3 Екстремуми
- •2 Методи сортування
- •2.1 Метод лінійного сортування
- •2.2 Сортування методом «бульбашки»
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №4
- •Багатовимірні масиви
- •Мета роботи: вивчити технологію роботи з багатовимірними масивами.
- •Теоретичні відомості
- •1 Опис багатовимірних масивів
- •2 Доступ до елементів масивів
- •3 Масиви ідентичного типу
- •4 Головна та побічна діагоналі
- •6 Ввід матриці
- •7 Виведення матриці
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №5
- •Підпрограми
- •Мета роботи: ознайомитись з правилами використання підпрограм, вивчити відмінності між процедурами та функціями.
- •Теоретичні відомості
- •1 Процедури та функції
- •1.1 Опис процедури
- •1.2 Опис функції
- •1.3 Формальні та фактичні параметри
- •1.3.1 Передача параметрів у підпрограмах
- •1.3.2 Виклик підпрограм
- •1.4 Глобальні та локальні змінні
- •1.5 Основні відмінності між функціями і процедурами
- •2 Рекурсивні функції
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №6
- •Символьні та рядкові змінні
- •Мета роботи: ознайомитись з прийомами роботи із символьними та рядковими змінними.
- •Теоретичні відомості
- •1 Символьні змінні
- •2 Множини
- •3 Рядкові змінні
- •3.1 Оголошення рядкових змінних
- •3.2 Доступ до окремих елементів рядка
- •3.3 Зміна поточної довжини рядка
- •3.4 Злиття рядків
- •3.5 Порівняння рядків
- •3.6 Порожній рядок
- •3.7 Рядки і символи
- •3.8 Масиви символів і рядка
- •3.9 Стандартні підпрограми для обробки рядків.
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №7
- •Записи. Записи з варіантами
- •Мета роботи: навчитись створювати прості бази даних за допомогою записів та записів з варіантами.
- •Теоретичні відомості
- •1 Записи
- •2 Записи з варіантами.
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №8
- •Файли: текстові, типізовані, нетипізовані
- •Мета роботи: ознайомитись з випадками використання файлів, типами файлів та методами обробки елементів файлів.
- •Теоретичні відомості
- •1 Текстові файли
- •2 Типізовані файли. Мітки
- •3 Нетипізовані файли
- •Приклад 4:
- •Приклад 5:
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №9
- •Мета роботи: вивчити структуру та особливості роботи з модулями в Turbo Pascal.
- •Теоретичні відомості
- •1 Структура модуля
- •1.1 Заголовок модуля
- •1.2 Інтерфейс модуля
- •1.3 Виконавча частина модуля
- •1.4 Розділ ініціалізації.
- •2 Етапи розробки модуля
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №10
- •Графіка
- •Мета роботи: ознайомитись з принципами побудови графіків функцій та інших графічних об’єктів за допомогою засобів TurboPascal.
- •Теоретичні відомості
- •1 Основні процедури і функції модуля Graph
- •2 Робота із зображеннями.
- •3 Побудова і масштабування графіків
- •Індивідуальні завдання
- •Контрольні питання
- •1 Дані динамічної структури
- •2 Вказівник
- •3 Списки
- •4 Стек. Черга
- •4.1 Алгоритм побудови стека
- •4.2 Алгоритм побудови черги
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №12
- •Об’єктно-орієнтоване програмування
- •Мета роботи: засвоїти матеріал щодо можливостей TurboPascal при створенні об’єктів.
- •Теоретичні відомості
- •1 Поняття «об'єкт»
- •2 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
1 Текстові файли
Текстові файли часто використовуються в науково-технічних дослідженнях. Одна з основних переваг цих файлів полягає у тому, що їх вміст зручно проглядати, оскільки він подається не в машинному коді, як у типізованих та нетипізованих файлів, а в кодах ASCII – у вигляді цифр, букв і інших символів клавіатури.
Текстові, як і будь-які інші файли, призначені для зберігання чисел будь-яких типів, символів і текстів. Трактуються текстові файли, на відміну від типізованих та нетипізованих файлів, як сукупність рядків змінної довжини. До будь-якого елементу кожного рядка можливий лише послідовний доступ, починаючи з першого. Припустимо, необхідно прочитати з файлу F_Isx четвертий його елемент в змінну х цього ж типу – це можливо здійснити, лише прочитавши три перші елементи в запису цього файлу:
reset(F_Isx); {відкриває файл для читання і встановлює його покажчик
на першу компоненту}
for i:=1 to 4 do
read(F_Isx,x);
reset(F_Isx); {встановлює заново покажчик на першу компоненту файлу}
У змінній х залишиться лише остання, четверта, прочитана компонента файлу.
При створенні текстового файлу (тільки текстового файлу) в турбосередовищі в кінці кожного рядка слід натискати клавішу Enter, цю ж клавішу необхідно натиснути і в кінці файлу. В цьому випадку в кінці кожного рядка генерується спеціальна ознака або код кінця рядка – EOLN (end of line), а в кінці файлу – EOF (end of file) – код кінця файлу. Ці коди можна помістити у файл також за допомогою набору символів #10#13 (EOLN) і одночасним натисненням клавіш Ctrl+Z (EOF).
2 Типізовані файли. Мітки
Компонентами таких файлів можуть бути як прості (integer, longlnt, real тощо), так і структуровані типи даних (масиви, записи тощо). Розмір буфера для типізованих файлів встановлюється автоматично на основі розміру його компонентів. Нумерація компонентів файлу починається не з одиниці, як в текстових файлах, а з нуля. Прямий доступ до компонентів типізованого файлу забезпечується процедурою seek (to seek – шукати):
seek(«ФЗ»,«№ компоненти»);
Тут «№ компоненти» – константа типу longint, вона вказує номер компоненти. Ця процедура зміщує вказівник файлу до потрібної компоненти, її не можна застосовувати до текстових файлів.
Функція filesize(«ФЗ»):longint повертає число компонентів файлу. Виклик процедури seek(«ФЗ»,filesize(«ФЗ»)) розміщує вказівник в кінці файлу – після останньої його компоненти. Це виявляється можливим внаслідок того, що нумерація компонентів типізованих файлів починається з нуля, тому функція filesize(«ФЗ») повертає номер компоненти, що стоїть за останньою компонентою файлу.
Процедура truncate («ФЗ») видаляє частину файлу, починаючи з поточної позиції до його кінця.
Для типізованих і нетипізованих файлів обидві процедури reset і rewrie дозволяють здійснювати як зчитування з файлу, так і запис у файл. Такий режим цих процедур встановлюється за замовчуванням, він дозволяє легко оновлювати раніше створені файли і за необхідністю розширювати їх. В цьому випадку значення змінної FileMode модуля System=2. Якщо FileMode=1, то для цих процедур забезпечується режим «тільки запис», а якщо FileMode=0 – режим «тільки зчитування» Змінити режим можна присвоюванням потрібного значення змінній FileMode перед відкриттям файлу. Після цього процедури reset і rewrite відкриватимуть файли в заданому режимі. Проте слід мати на увазі, що керувати режимом процедури rewrite у такий спосіб можна тільки для вже існуючих файлів. Для новостворюваних файлів процедура rewrite завжди включає режим «зчитування/запис» (FileMode=2).
На практиці рідко виникає необхідність втручатися в стандартний порядок процедур. Рекомендується використовувати процедури для тих цілей, які підказуються їх назвами.
Після відкриття файлів ввід і виведення в них даних здійснюється процедурами write і read, так само як і в текстових файлах.
Типізовані файли мають дві важливі переваги: вони зберігають цифрову інформацію в найбільш компактному вигляді, дозволяють зчитувати і записувати структуровані змінні однією командою. Компактність зберігання пояснюється тим, що компоненти таких файлів мають однаковий об'єм, тому розміщуються в пам'яті комп'ютера суцільним блоком, для організації доступу до них не потрібно мати і зберігати порядковий номер кожного з них. Нижче наведена ілюстрація зчитування і запису компонентів типізованого файлу у якості якого вибрано двовимірний масив.
tурe
Mas=array[l..100,1..20] of real;
var
x, у:Mas;
F_lsx, F_Rez:file of Mas;
begin
... {відкриття файлів F_Isx і F_Rez...}
read(F_Isx, x); {зчитується відразу весь масив}
... {обробка масиву}
write(F_Rez, у); {записується відразу весь масив}
... {...закриття масивів F_Isx і F_Rez}
end.
Використання міток в програмах є поганим стилем програмування, оскільки, як правило, робить їх незрозумілими. Без міток практично завжди можна (і потрібно) обійтися. Але проте необхідно знати про їх існування і, якщо це виявиться необхідним, уміти застосовувати їх на практиці.
Мітки звичайно оголошуються (описуються) зразу ж після директиви компілятора uses з використанням зарезервованого слова label, їх імена можуть бути правильними ідентифікаторами або ж складатися тільки з цифр діапазону 0...9999:
label
Mitka_1, Мstка_2 {імена цих міток – правильні ідентифікатори}
1999, 2000; {для міток такі імена також дозволені}
Основне призначення мітки полягає в тому, щоб перемістити виконання програми з одного її місця в інше – те, де стоїть мітка. При цьому таке перенесення можна здійснити як вперед, так і назад. Після мітки необхідно ставити двокрапку. Двокрапка розділяє мітку і оператор, який слідує за нею. Повернення обчислень в місце, позначене міткою, забезпечується оператором безумовного переходу goto (перейти). Мітки, описані в підпрограмах, є локальними, тому посилатися на них ззовні підпрограми неможливо. Приклад застосування міток в тілі програми:
Mitka_l:
writln('2011 рік');
writln('2012 рік');
goto Mitka_l;
У цьому фрагменті здійснений «вічний» цикл виведення двох повідомлень: після першого виведення 2012 рік виконання програми знов буде повернене на виконання процедури, що стоїть після мітки Mіtka_1, – знов будуть виведені обидва повідомлення, потім все повторюватиметься в цій же послідовності знову і знову.