- •Методичні вказівки до виконання лабораторних робіт із дисципліни “Інформатика”
- •Полтава 2014
- •Середовище програмування turbo pascal 7.0
- •1.1. Виклик інтегрованої інструментальної оболонки
- •1.2. Рядок меню
- •1.3. Створення та збереження програми на дискові
- •1.4. Виконання програми
- •1.5. Пошук помилок у програмі за допомогою налагоджувача
- •1.5.2. Виконання програми до вказаної точки
- •1.5.3. Перезапуск програми
- •1.5.4. Перегляд та модифікація змінних програми
- •1.5.1. Покрокове налагодження програми та трасування
- •1.5.5. Використання вікна output
- •1.6. Завершення роботи з по тр 7.0
- •Мова turbo pascal 7.0
- •2.1. Загальна структура програм у turbo pascal 7.0
- •Розділ оголошень та узгоджень
- •Розділ текстів процедур та функцій
- •Основний блок програми
- •2.2. Типи даних мови тр
- •2.3. Поняття алгоритму
- •Виконання лабораторних робіт
- •3.1 Лабораторна робота №1 Складання алгоритму та написання програми мовою тр 7.0 для розрахунку функції розгалуженням
- •Послідовність виконання роботи
- •3.1.1. Умовні оператори (умовні конструкції) мови тр
- •3.1.2. Оператори циклу (циклічність конструкції) мови тр
- •3.1.3. Дані типу array (масив)
- •3.1.4. Зразок виконання індивідуального завдання
- •Контрольні питання
- •3.2. Лабораторна робота №2 Написання програм для роботи з простими типами даних мови тр 7.0
- •3.2.1. Прості (скалярні) типи даних мови тр 7.0
- •3.2.2. Оператор присвоювання
- •3.2.3. Зразок виконання індивідуального завдання
- •Контрольні вправи та питання
- •3.3. Лабораторна робота №3 Написання програм для введення та обробки серій із нулів та одиниць
- •3.3.1. Поняття послідовності серій із чисел
- •3.3.2. Зразок виконання індивідуального завдання
- •Контрольні вправи та питання
- •3.4. Лабораторна робота №4 Написання програми введення та обробки двомірних масивів
- •3.4.1. Поняття двомірного масиву. Правила опису та роботи з ним
- •3.4.2. Зразок виконання індивідуального завдання
- •Контрольні вправи та питання
- •3.5.Лабораторна робота №5 Написання програм із використанням процедур та функцій
- •3.5.1.Поняття процедур та функцій
- •3.5.2. Механізм параметрів у процедурі та функції
- •3.5.3.Зразок виконання індивідуального завдання
- •Контрольні вправи та питання
- •3.6. Лабораторна робота №6 Написання програми з використанням складених типів даних: string (рядковий), record (запис), file (файловий)
- •Послідовність виконання роботи:
- •3.6.1. Файлові типи даних (file) і робота з ними
- •3.6.2. Записи (record). Робота з ними
- •3.6.3. Рядковий тип даних (string). Стандартні процедури та функції для обробки рядків
- •Зразок виконання індивідуального завдання
- •Контрольні запитання та вправи
- •3.7.2. Зразок виконання індивідуального завдання
- •2)Ввести, налагодити та виконати наведену програму за комп’ютером. Контрольні вправи та запитання
- •Рекомендована література
3.3. Лабораторна робота №3 Написання програм для введення та обробки серій із нулів та одиниць
Кількість занять – 2 (4 години).
Мета роботи – вдосконалити навики роботи з цілим типом мови ТР 7.0 та побудови алгоритмічних конструкцій.
Підготовка до роботи – за матеріалами лекцій, методичною та додатковою літературою ознайомитися з основними алгоритмічними конструкціями по обробці серій цілих чисел : відповісти на контрольні питання.
Послідовність виконання роботи.
Отримати індивідуальне завдання.
Скласти алгоритм розв`язання задачі у вигляді блок-схеми.
Написати програму мовою ТР 7.0, яка реалізує даний алгоритм.
Ввести і налагодити програму, виконати розрахунки за комп`ютером.
Оформити та захистити звіт.
3.3.1. Поняття послідовності серій із чисел
Розглянемо довільну послідовність цілих чисел, до складу якої входять лише нулі та одиниці:
1 00 1 0 1111 00 1 0 1
└┘ └┘ └┘ └┘ └┘ └┘ └┘ └┘ └┘ └┘
S1 S2 S3 S4 S5 S6 S7 S8 S9 S10
Перед серією послідовності розуміють набір однакових чисел, що слідують одне за одним. У наведеному прикладі набори S1-S10 є серіями.
Кількість нулів або одиниць в серії визначає її довжину. Наприклад, серія S6 складається з чотирьох одиниць, тому її довжина дорівнює 4. Кількість нулів та одиниць послідовності визначає її довжину (в наведеному прикладі довжина послідовності дорівнює 15).
У подальшому при побудові алгоритмів та написанні програм домовимося використовувати такі позначення:
Z — щойно введене (поточне) число послідовності (нуль або одиниця);
C — попередньо введене число;
I — довжина послідовності;
L — число елементів (нулів або одиниць) у поточній серії (серії, що вводиться);
Lp — число елементів у попередньо введеній серії;
S — число серій у послідовності;
L0,L1— відповідно довжина нульової та одиничної серії.
3.3.2. Зразок виконання індивідуального завдання
Завдання. Зчитувати з клавіатури послідовність нулів та одиниць до тих пір, поки не буде введено N серій, що складаються з М нулів; вивести загальну кількість введених елементів (довжину послідовності).
Виконання завдання. Складемо алгоритм обчислень, побудувавши графічну блок – схему (рис.3.3.1.)
Перш ніж перейти до написання програми, звернемо увагу на те, що в наведеному алгоритмі використовується багатонапрямлене (три напрями) розгалуження. Як відомо, в цьому випадку можна використати вкладені конструкції IF…THEN…ELSE, як показано в наведеній нижче ТР-програмі. Однак неважко помітити громіздкість та заплутаність цього варіанта вирішення, які збільшуються зі збільшенням числа напрямків розгалуження.
У мові ТР у подібних ситуаціях дуже часто використовують оператори CASE..OF, які замінюють конструкції складеними операторами IF…THEN…ELSE і є більш наочними при програмуванні.
Рис.3.3.1. Блок-схема введення та обробки серій із нулів й одиниць.
PROGRAM SERII1;
USES CRT;
CONST N=2; M=3; {опис констант}
VAR I, L0, S, Z:INTEGER;
BEGIN
CLRSCR;
I:=0; L0:=0; S:=0;
REPEAT {цикл із післяумовою}
I:=I+1;
WRITE(‘Введіть нуль або одиницю:’);
READLN(Z);
IF Z=0 {багатонапрямлене розгалуження}
THEN
L0:=L0+1 {перша вітка}
ELSE
IF Z=1
THEN
BEGIN
IF L0:=M {друга вітка}
THEN
BEGIN
S:=S+1;
L0:=0
END;
END;
ELSE
BEGIN
WRITELN(‘Некоректне введення:’); {третя вітка}
I:=I-2
END;
UNTIL S=N;
WRITELN(‘Довжина послідовності:’);
END.
Загальний вигляд конструкції CASE..OF:
CASE <порядкова зміна> OF
<Значення_1>: {перший напрямок}
BEGIN
<оператор_1>;
-
-
<оператор_n>;
END;
<Значення_2>: {другий напрямок}
BEGIN
<оператор_1>;
-
-
<оператор_m>;
END;
-
-
<Значення_K>: {k-ий напрямок}
BEGIN
<оператор_1>;
-
-
<оператор_p>;
END;
ELSE {останній напрямок}
BEGIN
<оператор_1>;
-
-
<оператор_1>;
END;
END. {кінець конструкції CASE..OF}
Для даної конструкції виконується той і–ий напрямок, <значення_i> якого збігається зі значенням <порядкової_змінної>. Якщо ж жодне із <значень_і> не збігається зі значенням <порядкової_змінної>, то виконується напрямок (набір операторів), що відповідає ключовому слову ELSE (останній напрямок).
Слід зауважити, що <порядкова_змінна> оператора вибору CASE..OF повинна належати одному з упорядкованих типів, який дозволяє перерахування (впорядкування) деяких об`єктів (у нашому випадку це цілий тип даних).
Наведена вище ТР – програма при використанні конструкції CASE..OF перепишеться таким чином:
PROGRAM SERII2;
USES CRT;
CONST N=_;M=_;
VAR I, L0, S, Z:INTEGER;
BEGIN
CLRSCR;
I:=0; L0:=0; S:=0;
REPEAT
I:=I+1;
WRITE(‘Введіть нуль або одиницю:’);
READLN(Z);
CASE Z OF
0: L0:=L0+1; {перша вітка}
1: IF L0=M {друга вітка}
THEN
BEGIN
S:=S+1;
L0:=0;
END;
ELSE {остання вітка}
BEGIN
WRITELN(‘Некоректне введення:’);
I:=I-2
END;
END;
UNTIL S=N;
WRITELN(‘Довжина послідовності:’);
END.
Введемо, налагодимо та виконаємо наведені програми за комп`ютером.
Порівняємо отримані результати.
