
- •Базовий курс програмування у середовищі 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 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
2.2 Команда циклу з передумовою (while)
Команда циклу з передумовою (while) має вигляд:
while <логічний вираз> do <команда 1>;
Поки істинний логічний вираз, буде виконуватися команда 1. Логічний вираз описує умова продовження циклу. При цьому значення змінюється в самому циклі.
Для виконання блоку (декількох) команд за допомогою циклу з передумовою і постумовою необхідно використати конструкцію об'єднання команд begin-end.
2.3 Команда циклу з постумовою (repeat)
Команда циклу з постумовою (repeat) має вигляд:
repeat <команди> until <логічний вираз>;
У цьому випадку команди циклу хоч раз, але виконаються. При цьому логічний вираз вказує на умову виходу із циклу при істинному його значенні. Значення логічного виразу змінюється всередині циклу.
При виконанні блоку команд немає необхідності використовувати конструкцію begin-end. Така команда циклу сама свого роду поєднує команди в блок.
Оператор циклу repeat використовується, в першу чергу, в тих випадках, коли наперед невідомо, скільки разів слід повторити цикл.
2.4 Порівняння роботи команд циклу while, repeat та for
Порівняльні характеристики команд циклу надані в таблиці 1.
Таблиця 1
Цикл з передумовою while (поки умова істинна) |
Цикл з постумовою repeat (до істинності умови) |
1) До початку циклу необхідно зробити початкові встановлення змінних, які керують циклом, для коректного входу у цикл |
|
2) В тілі циклу повинні бути присутніми оператори, які змінюють змінні таким чином, щоб цикл через деяке число ітерацій було завершено |
|
3) Цикл працює поки умова істинна (поки True) |
3) Цикл працює поки умова хибна (поки False) |
4) Цикл завершується, коли умова стає хибною (до False) |
4) Цикл завершується, коли умова стає істинною (до True) |
5) Цикл може не виконатися ні разу, якщо початкове значення умови при входженні в цикл дорівнює False |
5) Цикл обов’язково виконується принаймні один раз |
6) Якщо в тілі циклу необхідно більше одного оператора, то треба використовувати складений оператор |
6) Незалежно від кількості операторів у тілі циклу використовувати складений оператор не потрібно |
Цикл з параметром for |
|
1) Початкове встановлення змінної лічильника циклів до заголовка не потрібно |
|
2) Змінення в тілі циклу значень змінних, які стоять у заголовку циклу, не допускається |
|
3)Кількість ітерацій циклу незмінно та точно визначається значеннями нижньої та верхньої границь та кроку циклу |
|
4) Нормальний хід роботи циклу може бути порушено оператором goto або процедурами Break та Continue |
|
|
Таблиця 2 – Порівняння запису циклів while, repeat та for
S:=0; i:=1; while i<=n do begin S:=S+A[i]; i:=i+1; end |
S:=0; i:=1; repeat S:=S+A[i]; i:=i+1; until i>n |
S:=0; for i:=1 to n do S:=S+A[i]; |
Приклад 1:
Логічні структури. Програма обчислює дату наступного дня1.
var day: integer; {змінна зберігає день}
month: integer; {змінна зберігає місяць}
year: integer; {змінна зберігає рік}
last: boolean; {true, якщо поточний день останній день місяця}
r: integer; {якщо рік високосний, то залишок від
розподілу year на 4 дорівнює нулю}
begin
write('Введіть цифрами сьогоднішню дату');{запит на введення
даних}
write('(число місяць рік) -> ');
readln(day, month, year); {зчитування введених
даних}
last:=false;
case month of {команда вибору}
1,3,5,7,8,10,12: if day=31
then last:=true; {останній день місяця}
4,6,9,11: if day=30
then last:=true;
2: begin
if day=28 then
begin
r:=year mod 4;
if r <> 0
then last:=true;
end;
if day=29 then
begin
r:=year mod 4;
if r=0
then last:=true
else begin
writeln('Помилка завдання дня місяця! ');
{рік не високосний - введена помилка}
exit; {вихід із програми}
end;
end;
end;
end; {case}
if last
then begin
writeln('Останній день місяця!');
day:=1;
if month=12
then begin
month:=1;
year:=year+1;
writelnt('З наступаючим Новим роком!!!');
end
else month:=month+1;
end
else day:=day+1;
writeln(‘Завтра ’ , day, '.',month,'.',year); {вивід результату}
readln;
end.
Приклад 2:
Циклічні
структури.
Потрібно обчислити значення функції
в інтервалі зміни аргументу
від 1 до 10 з кроком
для
(без використання циклічної структури).
program Povtor; {вибір назви буде обґрунтовано нижче}
uses Crt;
const а=2;
var x,y:integer; {цілі числа в інтервалі від -32768 до 32767, 2 байти}
begin
ClrScr;
х:=0;
y:=a*Sqr(x);
writeln('x= ',x:2,' y=',y:4);
x:=2;
у:=a*Sqr(x);
writeln('x= ',x:2,' y=',y:4);
x:=10;
y:=a*Sqr(x);
writeln('x= ',x:2,' y=',y:4);
readln;
end.{Povtor}
Тіло
програми складається з серії операторів,
призначених для розрахунку і виводу
значень
при конкретних значеннях
,
які повторюються. Саме тому для імені
програми використаний ідентифікатор
Povtor.
Якщо інтервал
збільшити, наприклад, в 100 разів (або
крок
зменшити
в 100 разів), то і в 100 разів збільшиться
тіло програми.
Кожну програму необхідно складати так, щоб вона допускала можливість швидкої модернізації на випадок можливої зміни її параметрів: коефіцієнтів, кроків дискретизації її змінних, початкових, кінцевих значень аргументів тощо. Тому ніколи не розміщуйте конкретні цифрові значення в тілі програми. Цим ви суттєво зменшите час розробки програми, зробите її легкою для читання, придатною для широкого користування. Виконання цього правила є далеко не другорядним пунктом гарного стилю програмування. Більш того, воно є важливим стандартом сучасних структурованих програм.
Приклад 3:
Циклічні структури. Оператор циклу for. Програма виконує завдання Прикладу 2 з використанням оператору циклу for.
program About_For;
uses Crt;
const a=2;
x_Min=0; {мінімальне значення х}
hx=2; {крок дискретизації аргументу х, може бути дійсним}
k=6; {число повторів циклу}
var x,y:integer; {можуть бути дійсними}
i:1..k; {інтервальний тип даних}
begin
ClrScr;
for i:=1 to k do
begin
x:=x_Min+(i-l)*hx;
y:=a*Sqr(x);
writeLn('x= ',x:2,' y=',y:4);
end; {for_i}
readln;
end. {About_For}
Приклад 4:
Циклічні структури. Оператор циклу while. Програма виконує завдання Прикладу 2 з використанням оператору циклу while.
Program About_While;
uses Crt;
const a=2;
x_Min=0; {мінімальне значення х}
x_Max=10; {максимальне значення х}
hx=2; {крок дискретизації аргументу х, може бути дійсним}
var i,x,y:integer;
begin
ClrScr;
x:=х_Мin; {для входу в цикл}
while x<=x_Max {передумова, умова входу в цикл}
begin
у:=a*Sqr(x);
writeln('x= ',x:2,' у=',у:4);
х:=х+hх; {зміна значення аргументу}
end; {для while}
readln;
end. {About_While}
Приклад 5:
Циклічні структури. Оператор циклу repeat. Програма виконує завдання Прикладу 2 з використанням оператору циклу repeat.
program About_Repeat;
uses Crt;
const a=2;
x_Min=0; {мінімальне значення х}
x_Max=10; {максимальне значення х}
hx=2; {крок дискретизації аргументу х, може бути
дійсним}
var i,x,y:integer;
begin
ClrScr;
x:=x_Min; {початкове значення аргументу}
repeat
y:= a*Sqr(x);
writeln('x= ',x:2,' y=',y:4);
x:=x+hx; {зміна значення аргументу}
Until
x> x_Max; {постумова, умова виходу з циклу}
readLn;
end. {About_Repeat}