
- •1 Виділення слів у текстових файлах
- •1.1 Підготовка до лабораторної роботи
- •Теоретичні відомості
- •Варіанти завдань
- •1.4 Контрольні питання
- •2 Комбінований тип даних
- •2.1 Підготовка до лабораторної роботи
- •2.2 Теоретичні відомості
- •2.3 Варіанти завдань
- •2.4 Контрольні питання
- •3 Сортування масивів комбінованого типу даних
- •3.1 Підготовка до лабораторної роботи
- •3.2 Теоретичні відомості
- •3.3 Варіанти завдань
- •3.4 Контрольні питання
- •4 Підпрограми-процедури
- •4.1 Підготовка до лабораторної роботи
- •4.2 Теоретичні відомості
- •4.3 Варіанти завдань
- •4.4 Контрольні питання
- •5 Підпрограми-функції
- •5.1 Підготовка до лабораторної роботи
- •5.2 Теоретичні відомості
- •5.3 Варіанти завдань
- •Контрольні питання
- •6 Організація односпрямованого списку
- •6.1 Підготовка до лабораторної роботи
- •6.2 Теоретичні відомості
- •6.3 Варіанти завдань
- •6.4 Контрольні питання
- •7 Обробка матриць у середовищі lazarus
- •7.1 Теоретичні відомості
- •7.2 Варіанти завдань
- •7.3 Контрольні питання
- •Перелік посилань
МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ТЕХНОЛОГІЧНИЙ ІНСТИТУТ
С
ХІДНОУКРАЇНСЬКОГО
НАЦІОНАЛЬНОГО УНІВЕРСИТЕТУ
імені ВОЛОДИМИРА ДАЛЯ
(м. СЄВЄРОДОНЕЦЬК)
Кафедра Комп'ютерної інженерії
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторних робіт з дисципліни
"ПРОГРАМУВАННЯ"
для студентів денної та заочної форми навчання
напряму підготовки 6.050102 “Комп'ютерна інженерія ”
частина 2
Сєвєродонецьк 2012
УДК 681. 3.06
Семенова Н.С. Методичні вказівки до лабораторних робіт з дисципліни «Програмування» для студентів денної та заочної форм навчання напряму підготовки 6.050102 “Комп’ютерна інженерія” частина 2. Технологічний інститут СНУ ім. В. Даля (м.Сєвєродонецьк ), 2012 р.– 73 стор.
Методичні вказівки до лабораторних робіт з дисципліни «Програмування» для студентів денної та заочної форм навчання напряму підготовки 6.050102 “Комп’ютерна інженерія” частина 2 укладені у відповідності до програми курсу та “Положення про організацію навчального процесу у вищих навчальних закладах”, затвердженого наказом Міністерства освіти України від 2 червня 1993 року №161, та освітньо-професійної програми підготовки бакалаврів за напрямом 050102 “Комп’ютерна інженерія”, затвердженої МОН України; затвердженні Технологічним інститутом СНУ ім. В. Даля (м. Сєвєродонецьк).
Рецензент – доцент, к.т.н. Е.В. Щербаков.
ЗМІСТ
ВСТУП 4
1 ВИДІЛЕННЯ СЛІВ У ТЕКСТОВИХ ФАЙЛАХ 5
2 КОМБІНОВАНИЙ ТИП ДАНИХ 9
3 СОРТУВАННЯ МАСИВІВ КОМБІНОВАНОГО ТИПУ ДАНИХ 14
4 ПІДПРОГРАМИ-ПРОЦЕДУРИ 17
5 ПІДПРОГРАМИ-ФУНКЦІЇ 22
6 ОРГАНІЗАЦІЯ ОДНОСПРЯМОВАНОГО СПИСКУ 25
7 ОБРОБКА МАТРИЦЬ У СЕРЕДОВИЩІ LAZARUS 31
ПЕРЕЛІК ПОСИЛАНЬ 37
ВСТУП
У даних методичних вказівках розглядаються теми лабораторних робіт, передбачені робочою навчальною програмою дисципліни "Програмування". Вказівки містять у собі необхідні теоретичні відомості з таким основним темам як типізовані та текстові файли, комбінований тип даних, процедури та функції, модулі, списки. Декілька робіт присвячені знайомству з методами створення віконних додатків у середовищі Lazarus і об’єктно - орієнтованому програмуванню. Методичні вказівки містять приклади розв'язання типових задач і варіанти індивідуальних завдань для виконання лабораторної роботи.
Виконання кожної роботи розраховано на чотири академічні години в комп'ютерному класі. Методика їх виконання передбачає етап підготовки напередодні заняття. При необхідності на цьому етапі можна звернутися до додаткової літератури.
У ході виконання роботи необхідно складати звіт. Такий звіт може використовуватися студентом під час захисту та отримання оцінки за виконану роботу.
1 Виділення слів у текстових файлах
Мета роботи – вивчення способів виділення послідовності символів із рядків текстового файлу для подальшої обробки.
1.1 Підготовка до лабораторної роботи
При підготовці до лабораторної роботи необхідно вивчити методи видалення або пропуску роздільників між словами, способи виділення, видалення, обробки та вставки слів.
Теоретичні відомості
Часто при обробці рядків потрібно виділяти слова. Словом будемо вважати послідовність будь-яких символів, відмінних від пробілів або символів-роздільників. Завдання виділення слів є важливою задачею в лексичному аналізі тексту програми. У цьому випадку слова називаються лексемами і визначаються як мінімальні одиниці мови, що мають самостійний сенс.
В якості прикладу розглянемо рядок ST, в якому слова поділяються пробілами. Між словами, в кінці та на початку рядку може знаходитися будь-яка кількість пробілів.
Зайві пробіли на початку рядка можна видалити за допомогою наступного циклу:
WHILE ST[1]=' ' DO
DELETE(ST,1,1);
Для видалення пробілів у кінці рядка використовується цикл:
WHILE ST[LENGTH(ST)]=' ' DO
DELETE(ST, LENGTH(ST),1);
Наступний цикл видаляє зайві пропуски між словами:
WHILE POS(' ',ST)<>0 DO
DELETE(ST, POS(' ',ST),1);
В результаті виконання цих трьох циклів будуть вилучені всі пробіли на початку і кінці рядка, а між словами залишиться по одному пробілу.
Так як ознакою закінчення слова є пробіл, а в кінці рядка всі прогалини вже вилучені, потрібно додати один пробіл після останнього слова, щоб обробка виконувалася однаково для всіх слів: ST: = ST + ''.
Тепер для виділення слів достатньо знайти позицію пробілу за допомогою функції K: = POS (' ', ST) і скопіювати слово в новий рядок SL: = COPY (ST, 1, K-1).
Крім цих дій, потрібно видаляти оброблене слово для того, щоб виділити наступне. Якщо цього не зробити, то функція POS буде знаходити один і той же пробіл - той, який стоїть першим.
Таким чином, цикл по виділенню слів після видалення зайвих пробілів можна записати наступним чином:
WHILE ST<>'' DO
BEGIN
K:=POS(' ',ST);
SL:=COPY(ST,1,K-1);
WRITELN(SL);
DELETE(ST,1,K);
END;
Цей цикл просто виводить виділені слова.
Якщо вихідний рядок не повинен змінюватися, то пропуски не видаляють, а пропускають. Розглянемо алгоритм пропуску роздільників і виділення слів у тому випадку, коли слова поділяються знаками пунктуації. Попередньо необхідно описати множину символів MN.
VAR
MN:SET OF CHAR;
Для внесення в множину символів, які є знаками пунктуації, потрібно виконати наступний оператор присвоювання:
MN:=[‘ ‘, ‘.’,’,’,’?’,’!’];
Аналогічний результат вийде, якщо описати типізовану константу-множину:
CONST
MN:SET OF CHAR=[‘ ‘, ‘.’,’,’,’?’,’!’];
Цикл для пропуску роздільників між словами:
WHILE (ST[I] IN MN) AND (I<= LENGTH(ST)) DO
INC(I);
Слова можна пропустити аналогічним циклом:
WHILE NOT(ST[I] IN MN) AND (I<= LENGTH(ST)) DO
INC(I);
Ці два цикли повинні бути включені в зовнішній цикл, який закінчиться тоді, коли закінчиться рядок.
Приклад виводу на екран всіх слів рядка ST:
I:=1;
WHILE I<= LENGTH(ST) DO
BEGIN
WHILE (ST[I] IN MN) AND (I<= LENGTH(ST)) DO
INC(I);
K:=I;
WHILE NOT(ST[I] IN MN) AND (I<= LENGTH(ST)) DO
INC(I);
SL:=COPY(ST, K, I-K);
WRITELN(SL);
END;
Приклад. Переписати в новий файл слова, символи яких впорядковані за спаданням. Програма має вигляд:
VAR
X,Y:TEXT;
J,D,C,I:INTEGER;
ST, NAME_ISH, NAME_RES, SL:STRING;
PR:BOOLEAN;
BEGIN
WRITELN(' ВВЕДІТЬ ІМ'Я ВИХІДНОГО ФАЙЛУ ');
READLN(NAME_ISH);
WRITELN (' ВВЕДІТЬ ІМ'Я РЕЗУЛЬТУЮЧОГО ФАЙЛУ ');
READLN (NAME_RES);
ASSIGN(X, NAME_ISH);
ASSIGN (Y, NAME_RES);
RESET(X); REWRITE(Y);
{ цикл проходу по файлу X }
WHILE NOT EOF(X) DO
BEGIN
READLN(X,ST);
I:=1;
{виділення слів в рядку }
WHILE I<= LENGTH(ST) DO
BEGIN
WHILE (ST[I] =' ' ) AND (I<= LENGTH(ST)) DO
INC(I);
C:=I;
WHILE (ST[I] <> ' ') AND (I<= LENGTH(ST)) DO
INC(I);
SL:=COPY(ST, C, I-C);
D:= LENGTH(SL);
{ перевірка впорядковані чи за спаданням символи слова }
PR:=TRUE;
FOR J:=1 TO D-1 DO
IF ORD(SL [J])<=ORD(SL [J+1]) THEN PR:=FALSE;
{занесення слів з впорядкованими символами в файл Y }
IF PR THEN WRITE(Y, SL,' ');
END;
WRITELN(Y);
END;
WRITELN (‘ВИХІДНИЙ ФАЙЛ’);
RESET(X);
WHILE NOT EOF(X) DO
BEGIN
READLN(X,ST);
WRITELN (ST);
END;
WRITELN (‘НОВИЙ ФАЙЛ’);
RESET(Y);
WHILE NOT EOF(Y) DO
BEGIN
READLN(Y,ST);
WRITELN (ST);
END;
CLOSE(X);
CLOSE(Y);
END.