- •Методичний посібник для самостійної роботи
- •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.
- •Література
Задача 28.
Виведення рядка в переверненому вигляді і за окремими словами
var s:string;
i: integer;
begin
write('Введіть рядок); readln(s);
for i:=length(s) downto 1 do write (s[i]);
for i:=l to length(s)-l do
if (s[i])=' ') and (s[i+1]<>' ') then writeln
else write(s[i]);
end.
Операції над рядками
Над рядковими даними допустима операція зчеплення (конкатенації) і операції відношення. Використовуючи рядкові змінні, константи, функції і операцію зчеплення, можна будувати рядкові вирази.
Операція зчеплення (+) застосовується для з'єднання декількох рядків.
Приклад 1. Вираз: ‘Turbo’+ ‘Pascal'+'7.0'
Результат: Turbo Pascal 7.0
Для присвоєння рядкової змінної результату рядкового виразу використовується оператор присвоєння.
str1 := 'Група студентів'; str2 := str1 + ' коледжу';
Розміри рядків не контролюються. Якщо значення змінної після виконання оператора присвоєння перевищує по довжині максимальний розмір, вказаний при оголошенні, всі зайві символи справа відкидаються.
Задача 29.
Доповнення рядка зірочками
Const n=80;
var s:string;
begin
writeln('Введіть рядок:');
readln(s);
while length(s)<n do s:=s+'*';
writeln(s)
end.
Операції відношення
Операції = <> > < >= <= виконують порівняння двох рядкових операндів і використовуються в основному при перевірці умов. Порівняння рядків проводиться зліва направо до першого неспівпадаючого символу, і той рядок вважається більшим, в якому код першого неспівпадаючого символу більше. Такий спосіб порівняння рядків називають лексикографічним. Рядки вважаються рівними, якщо вони співпадають по довжині і містять одні і ті ж символи.
Приклад. Вираз: Результат
'Іванов' = 'Іванов І.І.’ false
'Іванов' < 'Іванов І.І.’ true
' program' > 'PROGRAM' true
Найважливішими діями над масивами рядків є:
сортування масиву в лексикографічному порядку;
швидкий пошук даних у відсортованому масиві;
злиття двох відсортованих масивів.
Рядкові процедури і функції
Для спрощення програмування задач обробки текстів Turbo Pascal, як і всі інші мови програмування, містить добре продуманий набір процедур і функцій для виконання типових дій з рядками.
Рядкові процедури функції розташовуються в модулі SYSTEM.
Процедура видалення delete (st,poz,n) — видалення n символів рядка st, починаючи з позиції роz. Якщо значення роz більше, ніж розмір рядка, ніщо не віддаляється. При видаленні символів частина рядка, що залишилася, підтягається до початку.
Приклад.
st:='peкa Волга'; delete(st,1,5); { в результаті st='Волга’ }
while st[l]=' ' do delete(st,1,1); {видаляє всі пропуски з початку рядка st}
while st[length(st)]=' ' do delete(st,length(st),1); {видаляє всі пропуски з кінця рядка st}
Процедура вставки символів insert (str1,str2,poz) — вставка рядка str1 в рядок str2, починаючи з позиції роz. При вставці рядок розсувається і обов'язково потрібно контролювати довжину отриманого рядка.
Приклад.
s1 := 'Я розробляю програми'; s2 := 'гарні ';
insert(s2,s1,16); { в результаті,s1='Я розробляю добрі програми' }
insert('*',s,length(s)+1). {вставка зірочок в кінець рядка }
Функція length (st) — обчислює поточну довжину в символах рядка st. Результат має цілочисельний тип.
Приклад. n:=length ('123456789'); { п=9 }
Функція length повертає вираз ord(s[0]), оскільки сам елемент s[0] має тип char. Можна не використовувати функцію length, звертаючись безпосередньо до нульового байта.
Функція copy (st,poz,n) — виділяє з рядка st підрядок завдовжки n символів, починаючи з позицією роz. Якщо роz більше довжини рядка, то результатом буде порожній рядок.
Приклад.
s1:='Turbo Pascal1; s2:=copy(s1,1,5); s3:=copy(s1,7,3);
{ в результаті s2='Turbo'; s3='Pas' }
Функція concat(str1,str2...,strn) — виконує зчеплення рядків str1, str2 .. strn в тому порядку, в якому вони вказані в списку параметрів.
Приклад.
s:=concat('AA', 'ХХ', 'У'); { в результаті s='AAXXY'; }
Функція concat виконує ті ж дії, що і операція конкатенації.
Функція роs(str1,str2) — знаходить першу появу в рядку str2 підрядка str1. Результат має цілочисельний тип і рівний номеру тієї позиції, де знаходиться перший символ підрядка str1. Якщо в str2 підрядки str1 не знайдені, результат рівний 0.
Приклад 1.
s1:= 'Turbo Pascal';
n1:=pos('Pascal',s1); n2:=pos('pascal', s1);
{в результаті n1=7; n2=0 (pascal і Pascal — це різні рядки}
Приклад 2. Видалити з рядка перше слово разом з наступним за ним пропуском. При цьому передбачається видалення провідних пропусків:
while st[1]=' ' do delete(st,1,1);
delete(st,1,pos(' ', st));
Процедура str (number, st) — перетворення числового значення величини number в рядок st. Після number може записуватися формат, аналогічний формату виведення. Якщо у форматі вказано недостатнє для виведення кількість розрядів, поле виведення розширяється автоматично до потрібної довжини. Наприклад:
Приклад.
var sl,s2,s3,s4 : string; num1: integer; num2:real;
num1:=5; num2:=5.78;
str (num1,s1); str (num1:3, s2); str (num2, s3); str (num2:3:1, s4);
{ в результаті s1='5'; s2=' 5'; s3='5.780000000000E+00'; s4='5.8'; }
Процедура val (st, number, code) — перетворить значення st у величину цілочисельного або дійсного типу і поміщає результат в numder. code — цілочисельна змінна. Якщо під час операції перетворення помилки не знайдено, значення code рівно нулю, якщо помилка знайдена (рядкове значення не переводиться в цифрове), code міститиме номер позиції першого помилкового символу, а значення number не визначено
Пример1.
s1:= '5.78'; s2:= '5,78';
val (sl, num1,cod1);
val (s2, num2,cod2);
{ в результаті cod1=0, cod2=2 — другий символ помилковий }
