русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


ЛАБОРАТОРНА РОБОТА №10


Дата додавання: 2014-11-28; переглядів: 852.


ТЕМА: Складання, налагодження та введення програми з використанням динамічних структур даних в системі програмування Borland Pascal 7.0.

МЕТА: Навчиться працювати з динамічними структурами даних мові програмування Паскаль

 

МЕТОДИЧНІ ВКАЗІВКИ:

Borland Pascal 7.0 дає програмісту можливості виділяти пам’ять для яких небудь даних динамічно, тобто за необхідністю. Використання динамічно розміщених в оперативній пам’яті структур даних (або динамічних структур даних) забезпечує незалежність програм (їх універсальність) від розмірності задач, що розв’язуються, дозволяє виконувати “накладення “ одних структур даних на інщі.

Перед виконанням лабораторної роботи треба вивчити теоретичний матеріал про спеціальний тип даних - покажчики. Вони приймають значення, що дорівнюють адресам розміщення в оперативної пам’яті відповідних змінних. Треба знати яким чином в програмі на мові Паскаль оголошуються покажчики, типи покажчиків, операції які виконуються над покажчиками. Покажчики використовують для створення динамічних структур даних, тобто структур які містять в собі покажчики. Найбільш розповсюджені серед них – списки. Список – це структура кожен елемент якої містить посилання, що зв’язує його з іншим елементом. Треба знати яким чином організується на мові Паскаль списки та як обробляються дані у списках.

СПИСОК ПОСИЛАНЬ:

1. А.Н. Вальвачов, В.С. Крисевич „Программирование на языке Паскаль для персональных ЭВМ»,Минск, Высшая школа, 1989, стр. 108-113

 

ПОРЯДОК ВИКОАНННЯ ТА ЗМІСТ РОБОТИ:

Завдання: Побудувати динамічну структуру типу список. Інформація для списку згідно вашого індивідуального завдання. Необхідно реалізувати такі процедури:

1. створення списку.

2. друк списку на екран

3. додавання елементу в початок списку, кінець списку

4. пошук запису за даним ключем.

5. вилучення запису із списку.

6. Видалення всього списку

Вибір необхідної процедури користувачем повинен здійснюватися з меню програми. Меню повинне передбачати також вихід з програми.

ХІД РОБОТИ:

1. Скласти програму організації роботи зі списком для вашого завдання.

2. Включити комп’ютер .

3. Після загрузки операційної системи увійти в систему програмування Турбо Паскаль – для цього необхідно двійчи щелкнути мишою на позначці програми, яка знаходиться на Робочому столі Windows.

4. В системі Турбо Паскаль увійти в меню за допомогою миши, вибрати пункт File, увійти в нього и вибрати команду: New – якщо необхідно увести нову програму, і вибрати Open –якщо бажаєте викликати свою вже існуючу програму. Увійти у список файлів (клавіша [Tab]) и з допомогою клавіш управління курсором вибрати необхідний файл і натиснути клавішу [Enter].

5. В окні системи набрати програму або внести необхідні зміни у вашу раніше створену програму

6. Запустити програму на виконання : для цього в меню системи вибрати пункт Run, якщо необхідне виконати налагодження програми.

7. В зошит переписати результат роботи програми ( усі рядки, що були виведені на екран)

8. Вийти з системи Турбо Паскаль – для цього необхідно увійти в меню системи, вибрати пункт File и виконати команду Exit.

 

ПРИКЛАД ВИКОНАННЯ ЗАВДАННЯ

Побудувати лінійний список, вивести його на екран та реалізувати процедури додавання елементу у список, виведення елементів списку..

 

               
   
 
 
   
 
   
 
Elem   Sled *  
Elem   Sіed *  

 

 


Program List_Proc;

Type

Sviaz=^zveno; {Уявлення списка}

Zveno=record {Звено списка}

Elem:integer; {Інформаційна частина }

Sled:sviaz; {Наступний елемент списку}

End;

var

p,t:sviaz;

i:integer;

c:char; n:integer;

procedure Standart; {Повертання до стандартного вікна}

begin

Window(0,0,24,79);

Textbackground(black);

TextColor(white);

Clrscr;

end;

procedure Menu; {Попереджальний опис процедури}

forward;

{Ініціація списку без заглавного звена }

procedure ListInit(var tek:sviaz);

var k:integer;

begin

Standart;

writeln('Spisok iniciirovan.');

tek:=nil;

writeln('Dlia vixoda v menu nasmite ENTER');

readln;

Menu;

end;

{Додавання елементу в початок списка }

procedure DobNach(var tek:sviaz);

var k:integer;

dob:sviaz;

begin

Standart;

writeln('Vvedite elementi spiska 4erez probel do nazatia ENTER');

while not eoln do

begin

read(k);

new(dob);

dob^.elem:=k;

dob^.sled:=tek;

tek:=dob;

end;

writeln('Dlia vixoda v menu nasmite ENTER');

readln;

Menu;

end;

{Додавання елементу у кінець списку без головного звена}

procedure DobKon(var tek:sviaz);

var e:integer;

p, dob:sviaz; { dob – звено,яке додається, р – допоміжний покажчик для пошуку останньогоо елементу в списку }

begin

Standart;

new(dob);

writeln('Vvedite dobavliaemoe v konec zveno spiska ');

readln(e);

dob^.elem:=e;

dob^.sled:=nil;

if tek=nil then tek:=dob else

{пошук останнього елементу в спискі}

begin

p:=tek;

while p^.sled<>nil do p:=p^.sled;

p^.sled:=dob;

end;

writeln('Dlia vixoda v menu nasmite ENTER');

readln;

Menu;

end;

{Друк елементів списку }

procedure Print(tek:sviaz);

begin

Standart;

write('>');

while tek<>nil do

begin

write(tek^.elem);

if tek^.sled<>nil then write(',');

tek:=tek^.sled;

end;

writeln;

writeln('Dlia vixoda v menu nasmite ENTER');

readln;

Menu;

end;

 

{видалення усіх елементів списку}

procedure DelAll(var tek:sviaz);

var

p:sviaz;

begin

writeln(‘Udalit spisok Y/N?’);

readln ( c );

if c in [‘y’, ‘Y’, ‘n’, ‘N’] then

begin

while tek<>nil do

begin

p:=tek;

tek:=tek^.sled;

dispose(p);

end;

writeln('Spisok Udalen');

end;

writeln('Dlia vixoda v menu nazmite ENTER');

readln;

Menu;

end;

{Створення меню}

procedure Menu;

begin

clrscr;

window(20,8,60,25);

textcolor(red);

Textbackground(yellow);

clrscr;

Gotoxy(10,7);

writeln('MENU');

writeln('1- Sozdanie spiska');

writeln('2- prosmotr spiska');

writeln('3- dobavlenie elementov v na4alo spiska');

writeln('4- dobavlenie v konec spiska');

writeln('5 - Udalenie spiska');

writeln('6- Vixod');

repeat

writeln('Vash vibor');

writeln(' ' );

readln(c);

Until c in ['1','2','3','4','5','6'];

case c of

'1': ListInit(t);

'3': DobNach(t);

'2': Print(t);

'4': DobKon(t);

'5': DelAll(t);

'6': Halt;

end;

end;

{Тіло програми}

BEGIN

Standart;

Menu;

readln;

END.

 

СКЛАД ЗВІТУ:

1. Тема, мета роботи

2. Зміст та порядок виконання роботи

3. Програма на мові Паскаль

4. Результати роботи програми

5. Висновки по роботі

 

КОНТРОЛЬНІ ПИТАННЯ:

1. Для чого призначена динамічна пам’ять?

2. Який тип визначений в мові Паскаль для роботи з адресами пам’яті?

3. Що означає Nil?

4. Чим відрізняються статичні змінні від динамічних?

5. Які процедури і функції по роботі з динамічною областю пам’яті ви знаєте?

6. Які динамічні структури даних вам відомі?

7. Охарактеризуйте списки?

8. Охарактеризуйте черги?

9. Охарактеризуйте стек?

10. Чим відрізняються лінійний та двосвязний список?

 

 

Індивідуальні завдання до лабораторної роботи № 10:

1,16 Структура “Група”:

 

№ группи Факультет Прізвище, Ім’я, по батькові Рік народження Адреса Телефон

 

2,17 Структура “Екзаменаційна відомість”:

 

Прізвище, Ім’я, по батькові № залікової книжки   Оцінка Призвище викладача Дата

 

3,18 Структура “Відомість по зарплаті”:

 

Місяць Прізвище, Ім’я, по Батькові Посада Сума до виплати

 

4,19 Структура “ Програма телебачення” :

 

Дата Канал Час Назва

 

5,20 Структура “Бібліотека” :

 

Код Прізвище, ім’я, по батькові Автора Назва книжки

 

6,21 Структура “Кіоск” :

 

Код Найменування товару Ціна Дата Продажу Кількість проданих товарів

 

7,22 Структура “Відомість по відрядженню” :

 

Прізвище, Ім’я, по Батькові Посада Місце Призначення Сума Дата

 

8,23 Структура “Реклама товару” :

 

Найменування Виробник Ціна Кількість

 

9,24 Структура “Нерухомість” :

 

Метраж Кількість Кімнат Адресса Район Поверх Ціна

 

10,25 Структура “ Аптеки” :

 

Найменування Ліків № аптеки Кількість Ціна

 

11,26 Структура “Залізниця” :

 

№ потягу Час Відправлення Колія Час прибуття

 

12,27 Структура “Телефонна довідка” :

Прізвище, ім’я, по батькові Адреса № телефону

 

13,28 Структура “Будівельна організація” :

 

Найменування Об’єкта Бетон Цегла Бригади Термін здачі

 

14,29 Структура “Меблева фабрика” :

 

Найменування Товару Назва Моделі Ціна Кількість

 

15,30 Структура “Фабрика легкої промисловості” :

 

Найменування Стать Розмір Кількість Ціна

 

 



<== попередня лекція | наступна лекція ==>
ЗАВДАННЯ № 2 | ТЕОРЕТИЧНИЙ МАТЕРІАЛ, НЕОБХІДНИЙ ДЛЯ ВИКОАННЯ РОБОТИ


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн