Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Листы Лабораторных работ ПАскаль.doc
Скачиваний:
7
Добавлен:
05.11.2018
Размер:
370.69 Кб
Скачать

Лабораторна робота №10

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

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

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

Перед виконанням лабораторної роботи треба вивчити яким чином в програмі на мові Паскаль оголошуються покажчики, знати типи покажчиків, операції які виконуються над покажчиками.

ЛІТЕРАТУРА:

1. А.Н. Вальвачов, в.С. Крисевич «Программирование на языке Паскаль для персональных эвм»,Минск, вш. – 1989

2. Н.Д. Васюкова, в.В.Тюляева «Практикум по основам программирования на языке Паскаль»,Москва, вш.-1991

3. Ковалюк т.В. Основи програмування. – к.: Видавнича група bhv, 2005. – 384 с.

ЗМІСТ, ПОСЛІДОВНІСТЬ, МЕТОДИКА ВИКОНАННЯ РОБОТИ

ЗАВДАННЯ 1: Побудувати динамічну структуру типу список. Необхідно реалізувати такі процедури:

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

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

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

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

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

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

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

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

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

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

Програма на мові Pascal

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

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

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

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

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

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

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

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

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

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

Висновок:

Виконано: _______________________

Підпис студента та дата виконання

Захищено з оцінкою : ____________________ Дата ___________

підпис викладача дата захисту