
- •Методичний посібник для самостійної роботи
- •5.05010201 «Обслуговування комп’ютерних систем і мереж»
- •5.05010201 «Обслуговування комп’ютерних систем і мереж»
- •Затверджено методичною радою коледжу
- •Мета та задачі предмету. Історія створення та розвитку мови Pascal. Етапи розробки програми. Інтегроване середовище Turbo Pascal 7.0. Основні розділи теми.
- •Помилки. Компілятор. Синтаксис і семантика
- •Типи помилок
- •Інтегроване середовище Turbo Pascal 7.0.
- •Рядок меню.
- •Меню Compile
- •Питання для самоконтролю.
- •Алфавіт мови. Структура програми. Типи даних. Основні розділи теми.
- •Алфавіт мови
- •Типи даних
- •Стандартні типи даних.
- •Цілі типи
- •Дійсні типи
- •Нестандартні прості типи.
- •Наприклад
- •Завдання 1:
- •Типізовані константи.
- •Структура програми.
- •Перша програма.
- •Питання для самоконтролю.
- •Лінійні програми. Команди присвоювання. Команди введення та виведення даних. Форматоване виведення даних. Основні розділи теми.
- •Лінійні програми.
- •Команда присвоювання.
- •Основні операції, стандартні функції і процедури. Основні операції
- •Основні стандартні функції і процедури
- •Правила запису арифметичних виразів.
- •Правила запису стандартних функцій.
- •Команди введення даних (read, readln).
- •Команди виведення даних (write, writeln).
- •Форматоване виведення даних.
- •Х.ХхххххххххЕзнакхх
- •Питання для самоконтролю.
- •Завдання 2:
- •Розгалуження: складена команда, логічний вираз, команда розгалуження if. Команда case. Основні розділи теми.
- •Розгалуження
- •Складений оператор.
- •Логічний вираз
- •Умовний оператор if.
- •Задача2:
- •Задача 3.
- •Оператор goto.
- •Вкладений if
- •Слід знати:
- •Задача 4.
- •Задача 5.
- •Оператор вибору case.
- •Задача 6.
- •Питання для самоконтролю.
- •Завдання 3. Написати і відладити наступні програми.
- •Цикли. Команда циклу з параметром (for), команда циклу з передумовою (while), команда циклу з після умовою (repeat). Основні розділи теми.
- •Оператор циклу з параметром (for).
- •Ця команда діє, як і попередня, але крок зміни лічильника рівний -1.
- •Задача 7.
- •Задача 8.
- •Задача 9.
- •Команда циклу з передумовою (while).
- •Задача 10.
- •Команда циклу з післяумовою (repeat).
- •Задача 11.
- •Задача 12.
- •Задача 13.
- •Завдання 4:
- •Завдання 5:
- •Завдання 6:
- •Завдання 7.
- •Дайте відповідь на питання, скільки разів ця цифра зустрічається в числі Задача 17:
- •Завдання 8
- •Вкадені цикли.
- •Задача 18
- •Завдання 9
- •Питання для самоконтролю.
- •Масиви. Опис масивів. Дії над масивами. Масиви. Основні розділи теми.
- •Опис масивів.
- •Опис меж
- •Дії над масивами.
- •Заповнення масиву даними
- •Виведення масиву.
- •Обробка масиву
- •Дії з одновимірними масивами
- •Завдання 10:
- •Питання для самоконтролю.
- •Завдання для самоконтролю.
- •Сортування масивів. Двовимірні масиви. Сортування масиву Основні розділи теми.
- •Лінійне сортування (сортування відбором)
- •Програма лінійного сортування по не зростанню
- •Бульбашковий метод.
- •Підсумовування елементів кожного рядка.
- •Програма транспонування матриці.
- •Завдання 12:
- •Питання для самоконтролю.
- •Підпрограми. Процедури, функції. Рекурсивні функції. Основні розділи теми.
- •Процедури (procedure) і функції (function).
- •Виклик процедур і функцій.
- •Оператор виклику працює так:
- •Область дії параметрів:
- •Завдання 13:
- •Рекурсивні функції.
- •Завдання 14:
- •Задачі, з постановки якиїх можна витягнути рекурсію.
- •Задачі, які можна розв’язати як окремий випадок узагальненої.
- •Задачі, в яких можна використати характеристику або властивість функції.
- •Відкриті масиви.
- •Завдання 15:
- •Питання для самоконтролю.
- •Дані рядкового типу string. Основні розділи теми.
- •Тип даних char.
- •Рядковий тип
- •Задача 28.
- •Операції над рядками
- •Задача 29.
- •Операції відношення
- •Рядкові процедури і функції
- •Задача 30.
- •Задача 31.
- •Питання для самоконтролю.
- •Завдання 16:
- •Модулі. Модулі користувача. Стандартні модулі. Основні розділи теми.
- •Поняття модуля
- •Структура модуля
- •Компіляція модулів
- •Стандартні модулі Короткий опис модулів.
- •Графіка
- •Запитання
- •Оператор with
- •Питання для самоконтролю.
- •Завдання 18:
- •Файли і робота з ними. Основні розділи теми.
- •Текстові файли
- •Типізовані файли.
- •Процедури і функції для типізованих файлів:
- •Питання для самоконтролю.
- •Завдання 19:
- •Інтегроване середовище розробки Delphi 7. Мова програмування Delphi. Структура програми Delphi: структура проекту, структура модуля, елементи програми. Основні розділи теми.
- •Інтегроване середовище розробки.
- •Головне вікно
- •Інструментальні кнопки
- •Палітра компонентів
- •Вікно форми
- •Вікно дерева об'єктів
- •Вікно інспектора об'єктів
- •Вікно коду програми
- •Зміна властивостей форми
- •Оброблювач події OnClick
- •Структура програм Delphi
- •Структура проекту
- •Структура модуля
- •Питання для самоконтролю.
- •Класи. Складові класу. Методи та властивості. Питання для самоконтролю.
- •Методи.
- •Властивості.
- •Оголошення класу.
- •Питання для самоконтролю.
- •Форми. Різновид форм. Створення і використання форм. Основні розділи теми.
- •Різновиди форм.
- •Методи форми
- •Події форми.
- •Робота з формою.
- •Питання для самоконтролю.
- •Компоненти. Властивості компонентів. Основні розділи теми.
- •Знайомство з компонентами.
- •Вкладка Standard
- •Вкладка Additional
- •Вкладка Win32
- •Вкладка System
- •Вкладка Dialogs
- •Вкладка Win31
- •Вкладка Samples
- •Вкладка ActiveX
- •Робота з об’єктами.
- •Питання для самоконтролю.
- •Delphi 7. Файли. Доступ до файлу. Текстові файли. Основні розділи теми.
- •Теоретичні відомості.
- •Хід роботи
- •Практична робота № 2.
- •Тема: Створення гри «Спіймай кнопку».
- •Мета: Вивчення особливостей компонента Timer.
- •Короткі теоретичні відомості.
- •Хід роботи.
- •Практична робота № 3
- •Тема: Створення логічної гри.
- •Мета: Вивчення можливостей використання властивості Tag і об'єкта Sender.
- •Короткі теоретичні відомості.
- •Хід роботи.
- •Практична робота № 4.
- •Тема: Генератор функцій.
- •Мета: Вивчення компонента PaintBox і методів малювання на канві. Компонент TrackBar.
- •Короткі теоретичні відомості.
- •Хід роботи.
- •Практична робота № 5
- •Тема: Створення елементів інтерфейсу найпростішого графічного редактора.
- •Мета: Вивчення компонентів ColorGrid, SpinEdit, RadioGroup, ListBox, ColorDialog.
- •Короткі теоретичні відомості.
- •Хід роботи. Частина 1
- •Частина 2.
- •Література
Завдання 13:
Сформувати геометричну прогресію, що зростає, з 4 елементів: початкове значення – 5, крок – 3 (використання операції множення); та обчислити добуток її елементів.
Рекурсивні функції.
Рекурсією називається алгоритмічна конструкція, де підпрограма викликає сама себе. Рекурсія дає можливість записувати циклічні алгоритми, не використовуючи операторів циклу. Застосовуючи рекурсію, потрібно правильно складати стоп-умову, яка забезпечує закінчення рекурсивних обчислень.
Розглянемо поняття стека. Стек – це модель оперативної пам’яті (структура даних), де дані запам’ятовуються і зберігаються за принципом «перший прийшов —. Останній пішов». Аналогом у військовій справі є ріжок для патронів до автомата.
Пример1. Рекурсивна функція обчислення суми цілих чисел від а до b має вигляд
function Summa(а, b : integer): integer;
begin
if а = b then Summa := а (Це стоп-умова рекурсії}
else Summa := b + Summa(а, b-1) {Це неявний цикл}
end;
Обчислимо функцію Summa(3, 5). Формально можна записати
Summa(3, 5)= 5 + Summa(3, 4)= 5 + 4 + Summa(3, 3)= 5 + 4 + 3.
Система виконує такі обчислення за два етапи: на першому етапі формує стек, куди заносить числа 5, 4, 3. На другому етапі числа додає в зворотній послідовності (оскільки вони поступають із стека): 3 + 4 + 5 = 12.
Приклад2. Скласти рекурсивну функцію Factorial для обчислення факторіалу числа n (n! = 1* 2* 3* … n, 0! = 1,1! = 1), яка обчисляє його на багаторазовому (рекурсивному) використанні формули n! = n* (n – 1)!.
Function Factorial(n : integer): integer;
begin
if n = 0 then Factorial := 1 {Це стоп-умова}
else Factorial := n * Factorial(n-l)
end;
Обчислимо 4!:
Factorial(4)= 4 • Factorial(3)= 4 • 3 • Factorial(2)=
= 4 • 3 • 2 • Factorial(l)= 4 • 3 • 2 • 1 • Factorial(O)=
= 4 • 3 • 2 • 1 • 1.
У стек будуть занесені числа 4, 3, 2, 1, 1. Отже отримаємо результат: 1 • 1 • 2 • 3 • 4 = 24.
Завдання 14:
Написати рекурсивну функцію обчислення значень функції Аккермана для додатних чисел n и m, введених з клавіатури.
M+1, якщо n=0
A(n,m) = A(n-1,1), якщо n≠0, m=0
A(n-1,A(n,m-1)), якщо n>0, m≥0
Знайти перші N чисел Фібоначчі. Кожне число Фібоначчі, за виключенням перших двух, дорівнює сумі двох предыдущих чисел, а перші два дорівнють 1. (1, 1, 2, 3, 5, 8, 13, 21…)
1, если n=1 или n=2
Ф(n)= Ф(n-1) + Ф(n-2), если n>2
Знайти суму перших N членів арифметичної (геометричної) прогресії.
Задачі, з постановки якиїх можна витягнути рекурсію.
У формулюваннях деяких завдань рекурсія не присутня у явному вигляді, але їх можна звести до рекурсивних.
Приклади:.
Складання двох чисел. Нехай потрібно скласти два цілі числа a і b, а можна тільки додавати або віднімати 1. Тоді:
якщо b=0, то a+b=a
якщо b>0, то a+b=(a+1)+(b-1)
якщо b<0, то a+b=(a-1)+(b-1)
Це є рекурсивне визначення функції додавання двох чисел.
Function Sum(a, b : integer) : integer;
begin
if b=0 Then Sum:=a
else if b>0 Then Sum:=Sum(a+1, b-1)
else Sum:=Sum(a-1, b+1);
end;
. Знайти НСД двох чисел.(2 способ) Маємо два натуральних числа a і b.
Якщо a=b, то НОД(a,b)=a.
Якщо a>b, то НОД(a,b)=НОД(a-b,b).
Якщо a<b, то НОД(a,b)= НОД(a,b-a).
Function NOD(a,b : integer) : integer;
begin
if a=b Then NOD:=a
else if a>b Then NOD:=NOD(a-b,b)
else NOD:=NOD(a,b-a) ;
end;
a |
b |
Примітки |
123 |
36 |
Так як a>b, a:=a-b |
87 |
36 |
a:=a-b |
51 |
36 |
a:=a-b |
15 |
36 |
Так як b>a, b:=b-a |
15 |
21 |
b:=b-a |
15 |
6 |
a:=a-b |
9 |
6 |
a:=a-b |
3 |
6 |
b:=b-a |
3 |
3 |
Так як a=b, НСД:=a |
Перевести натуральне число із десяткової системи счисления у двійкову.
Function Rec(n: integer);
begin
if n>1 Then Rec(n div 2);
Write(n Mod 2);
end;