І. Загальнi вiдомостi про Способи Подання структурної iнформацiї в еом 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

І. Загальнi вiдомостi про Способи Подання структурної iнформацiї в еом



ЗМІСТ

1 Загальні відомості про способи подання структурної інформації в ЕОМ…….....................……..................................................................5

 

2 Лабораторна робота № 1

Опис масивів, дії над ними.........……....…..............…...........................7

 

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

Записи. Масиви писів.............................………...…............................12

 

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

Типізовані послідовні файли..............................…………...................16

 

5 Лабораторна робота № 4

Організація черги за допомогою списку…..............……..………........20

 

6 Лабораторна робота № 5

Організація стека за допомогою списку…..………....……...................26

 

7 Лабораторна робота № 6

Реалізація двунаправленого циклічного списку...……..……...............28

 

8 Лабораторна робота № 7

Застосування бінарних дерев...…........................................…………..35

 

9 Лабораторна робота № 8

Вивчення засобів формування вхідних даних для побудови математичних моделей…………..............................…………............. 38

 

Программа VVOD……….………………..............................………….40

 

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

Вивчення моделей розподілень…..............................……..…………..42

 

Обчислення параметрів розподілень..............................………….......42

 

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

Побудова математичних моделей з використанням кореляційного аналізу та множинной лінійной регресії……..............................…….48

 

12 Лабораторна робота № 11

Дослідження методів лінійного програмування..................................54

 

13 Додаток А…………………………………………...........................60

 

13 Література.....…...............................................................................67

 


І. ЗАГАЛЬНI ВIДОМОСТI ПРО СПОСОБИ ПОДАННЯ СТРУКТУРНОЇ IНФОРМАЦIЇ В ЕОМ

В цьому роздiлi викладенi концепцiї подання структурної iнформацiї в ОП ЕОМ.

Логiчна структура даних не несе у собi iнформацiї про те, яким чином данi та зв'язки мiж ними подаються в пам'ятi ЕОМ.

Звiдси, абстрактна структура (логiчна) не може безпосередньо використовуватись при обробцi даних на ЕОМ. Між тим така структура зручна i для неї нема альтернативи при розробцi немашинних алгоритмiв рiшення практичних задач обробки даних. Тому, при перетвореннi немашинних алгоритмiв у машинi з'являється необхiднiсть перетворення абстрактної структури даних у так звану структуру зберiгання у пам'ятi ЕОМ, яка не тiльки зберiгає саму абстрактну структуру, але й доповнює її вiдомостi про адресу кожного даного та зв'язки адрес у вiдповiдностi зi зв'язками абстрактної структури.

Проблема вiдображення абстрактних структур зберiгання полягає у знаходженнi ефективних методiв, тобто таких, котрим вiдповiдають наступні якостi:

- легка формалiзуємiсть з можливiстю подання результата формалiзацii у виглядi адресної функцiї;

- можливiсть реалiзацiї адресної функцiї простим алгоритмом з мiнiмальним обчисленням та виконання вiдображення в автоматичному режимi;

- адресацiя елементiв даних.

Сукупнiсть цих якостей забезпечує можливiсть автоматичного формування структур зберiгання на основi опису абстрактних структур, без котрого неможлива побудова трансляторiв, якi дозволяють обробляти данi, поданi у рiзних абстрактних структурах.

При реалiзацiї адресних функцiй слiд пам'ятати адресну структуру ОП ЕОМ, у яких пам'ять подана як єдиний вектор з елементами - байтами, проiдентифікованими адресами та впорядкованими по збiльшенню адрес вiд 0 до найбiльшої. Ця
6

 

структура вiдображає найбiльш вiдповiдну структуру даних для зберiгання в ОП - кiнцеву послiдовнiсть, яку називають списком. Список - лiнiйна структура. Багато типiв абстрактних структур без особливих перешкод можуть бути перебудованi у список. Це дуже важливо, тому що для вiдображення списка у структуру зберiгання

iменi застосовується тип адресних функцiй: послiдовне або зв'язане розподілення пам'ятi.

При послiдовному розподіленнi пам'ятi елементи списка розташовуються у послiдовних елементах пам'ятi.

При зв'язаному розподіленні пам'ятi необхiдно вказати за допомогою зв'язкiв (вказiвникiв) вiдношення слiдування та передування елементiв списка. Вказiвниками є адреси, якi зберiгаються бiля кожного елемента списка. Кожний елемент зберiгає вказiвник на слідуючий (попереднiй) або на обидва елемента вiдразу. Наявнiсть адрес зв'язку дозволяє розташовувати елементи списка вiльно у будь-якiй вiльнiй дiлянцi пам'ятi. При цьому лiнiйна структура списку забезпечується вказiвниками.

Зв'язане подання списка називається зв'язанним списком. Зв'язанi списки - зручна форма подання в пам'ятi ЕОМ абстрактних лiнiйних структур, що диннамічно змінюються. Вказанi типи адресних функцiй застосовують тiльки для спискiв. Велику кiлькiсть типiв абстрактних структур не можливо перебудувати до списку.

Звичайно, при цьому стає проблема вибору адресних функцiй для вiдображення абстрактних структур до структур зберiгання. Для цих нелiнiйних абстрактних структур розроблена єдина методика вiдображення до структур зберiгання, суть якої у наступному.

Нелiнiйна абстрактна структура моделюється з багатозв'язаним списком. До багатозв'язаного списку застосовується адресна функцiя зв'язного розподiлення пам'ятi. Багатозв'язний список вiдрiзняється вiд списка наявнiстю явно заданих зв'язкiв мiж собою.


 

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

ОПИС МАСИВIВ, ДIЇ НАД НИМИ

Мета роботи: Вивчення логiчної структури масивiв рiзної розмiрностi та її реалiзацiї у вiдповiдну фiзичну структуру. Вивчення способiв доступу до будь-якого елемента масива та обчислення адреси будь-якого елемента.

ЗАВДАННЯ

2.1.1 Отримати елементи квадратичної матрицi A=(Aij) (i,j=1,...n), де Aij=f(ij), f(ij) – задана функцiя.

2.1.2 З матрицi A отримати компоненти вектора X=(Xi) (i=1,...n).

2.1.3 Обчислити значення U=g(x), де g(x) – задана функцiя.

Як результат видати на роздрук вихiднi рядки матрицi A, перебудувати марицю A, елементи вектора X та значення U.

Значення Pn, функцiї f(ij) i g(x), а також правила отримання вектора X зумовлюються варiантом завдання.

 

ВКАЗIВКИ ДО ВИКОНАННЯ ЗАВДАННЯ

Для вiдлагодження програм необхiдно пiдготувати вiдповiдний текст, тобто, вирішити задачу вручну, взяв таке значення n, яке не потребує великого об'єму обчислень. При цьому потрiбно при рiшеннi на машинi тестового варiанта задачi у програмi виконати усi передбаченi в нiй вiтки обчислювального процесу. З цiєю метою для вiдлагодження частин програми можливо прийдеться задати iншi правила обчислення матриці А, або значення компонент вектора X.

ЗМIСТ ЗВІТУ

2.4.1 Постанова задачi

2.4.2 Текст програми, вихiднi данi.

2.4.3 Тести та результати наладок.

2.4.4 Результат рiшення на ЕОМ.

 

Варiанти завдання отримати у викладача.


КОНТРОЛЬНI ЗАПИТАННЯ

2.5.1 У чому різниця фiзичного i логiчного подання даних у багатомiрному масивi?

2.5.2 Як здiйснюється у машинi лiнеаризацiя багатомiрного масиву (якими засобами)?

2.5.3 Для чого використовується функцiя впорядкування?

2.5.4 Що є аргументом функцiї впорядкування?

2.5.5 Як обчислити адресу похiдного елементу багатомiрного масиву?

2.5.6 Що представляє собою розріджений масив?


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

ЗАПИСИ, МАСИВИ ЗАПИСIВ

Мета роботи: вивчення структури даних-запису як кiнцевої впорядкованої кiлькості елементiв, що характеризуються рiзними типами даних. Вивчення iєрархiчної структури записiв, її подання на логiчному та машинному рiвнях.

 

ЗАВДАННЯ

Описати масив записiв, що мiстять в собi вiдомості про кожного студента вашої групи.

ВКАЗІВКИ ДО ВИКОНАННЯ ЗАВДАННЯ

Вихiднi данi треба виводити з текстового файла, за допомогою текстового редактора, в програмi органiзувати ввод з цього файла, а не з екрана.

Для вiдкриття текстового файла LAB2.DAT в програмi необхiдно:

1) Описати файлову змiнну типа TEXT,

VAR F:TEXT;

2) Назначити файловій змiнній iм'я файлу

ASSIGN (F,'LAB2.DAT);

3) Вiдкрити файл

RESET(F);

При читаннi змiнних типу "запис" можна читати тiльки значення молодших полiв запису.

ВАРIАНТИ ЗАВДАННЯ

3.3.1 Проаналiзувавши пiдсумки сесiї у своiй групi, вирахувати середнiй бал.

3.3.2 Надрукувати список студентiв, що здали сесiю на "5".


 

3.3.3 Надрукувати список студентiв групи, що отримали одну оцiнку "4", а решта "5".

3.3.4 Надрукуйте список групи студентiв, що здали сесiї без "3".

3.3.5 По якому предмету у минулу сесiю був самий високий середнiй бал, i по якому самий низький.

3.3.6 Упорядкувати список студентiв за датою народження, з вказанням напроти кожного прізвища повної дати народження.

3.3.7 Видати список студентiв, день народження у яких в травні та червнi.

3.3.8 Написати список вiдмiнникiв по математицi.

3.3.9 Надрукувати список хлопцiв i дiвчат з своєї групи окремо.

3.3.10 Впорядкувати список студентiв за датами народження.

3.3.11 Впорядкувати список iноземних студентiв за датами народження.

3.3.12 Видати список студентiв із зазначенням отриманої ними стипендii (125%, 115%, 100%,"не отримують"). В графi поставити знак "+".

3.3.13 Видати списки студентiв-iменинникiв за мiсяцями. У разi збiгу дат народження перевагу нумерацiї вiддати жiнцi, або особі з бiльш коротким прізвищем.

3.3.14 Видати списки студентiв-землякiв з указанням Ф.I.Б. та мiсця народження.

3.3.15 Видати списки студентiв, які мають вiдмiннi оцiнки по кожному з предметiв окремо.

3.3.16 Вирахувати пiдсумкову стипендiю групи за поточний семестр.

3.3.17 Видати список студентiв, які мають домашнi телефони з указанням їх номерiв.

3.3.18 Видати список студентів, що проживають у гуртожитку, з указанням номерiв їх кiмнат.

3.3.19 Впорядкувати список студентiв за iменами в лексикографiчному порядку. В разi збiгу iмен, перевагу вiддати імені з бiльш коротким прізвищем.


 

3.3.20 Видати списки студентiв, що проживають в мiстах та селах, окремо.

3.3.21 Видати прізвища п'яти студентiв, що отримали в минулiй сесiї найбiльшу кiлькiсть балiв в порядку збiльшення.

3.3.22 Видати список трьох студентiв, що отримали в минулiй сесiї найменшу кiлькiсть балiв, з указанням кiлькостi балiв проти кожного прізвища.

3.3.23 Вказати прізвища хлопцiв, зрiст яких вище 170 см.

3.3.24 Вказати прізвища дiвчат, зрiст яких нижче 155 см.

3.3.25 Видати список студентiв, впорядкованих за зростом.

3.3.26 Впорядкувати списки студентiв по середньому балу у порядку збiльшення.

3.3.27 Визначити, чи є в групi студенти з однаковим прізвищем.

3.3.28 Видати списки студентiв у разi збiгу iменi.

3.3.29 Видати списки студентiв, iмена яких не повторюються.

3.3.30 Видати списки студентiв, що мають однаковi iмена по батьковi.

 

ЗМIСТ ЗВIТУ

3.4.1 Постанова задачi.

3.4.2 Программа та ісходнi данi.

3.4.3 Результати рiшення на ЕОМ.

3.5 Контрольнi запитання

3.5.1 Що називається записом?

3.5.2 Що з’являється елементом запису?

3.5.3 Яка iєрархiчна структура запису?

3.5.4 Дати характеристику багаторiвневому запису.

3.5.5 Що з’являється таблицею? Якi формули органiзайiї пам'ятi?

3.5.6 Якi iснують методи доступу до кожного елементу таблицi?


 

3.5.7 Як здiйснюється пошук заданого елементу, виключення заданого елементу з таблицi?


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

Типiзованi послiдовнi файли

Мета роботи: вивчення способiв органiзацiї файлiв, як важливої структури даних, операцiї над файлами. Вивчення вiдношень компонентiв iєрархiчної структури файла в основнiй i зовнiшнiй пам'ятi обчислювальної системи.

ЗАВДАННЯ

4.1.1 Сформувати типiзований послiдовний файл f, компоненти якого обчислюються по формулi.

4.2.2 Вказанi по варiантам дiї над компонентами файла виконати в рамках процедури або функцiї, яка отримує файл в якостi параметра.

4.2.3 Роздрукувати значення результуючих змінних та компонент всiх сформованих файлiв.

 

Примітка:

Кiлькiсть компонент файла вибирають в розмiрах вiд 10 до 50. Забороняється використовувати промiжнi масиви, додактовi файли та здiйснювати прямий доступ до компонентiв файлiв.

 

Формули для формування файлiв отримати у викладача.

Варiанти завдання

4.2.1 Знайти найменше із значень компонент з парними номерами.

4.2.2 Знайти найбiльше із значень компонент по модулю з непарними номерами.

4.2.3 Знайти кiлькiсть парних чисел серед компонент файла типа INTEGER.


 

4.2.4 Знайти кiлькiсть подвоєних непарних чисел серед компонент файла INTEGER.

4.2.5 Знайти кiлькiсть квадратiв непарних чисел серед компонент файла INTEGER.

4.2.6 Записати файл iз збереженням порядку слiдування компонент файла f, значення яких не перевищують 1000.

4.2.7 Зформувати файли f1 i f2. Формулу для f2 взяти iз слiдуючого варiанту. Переписати із збереженням порядка слідування компонентiв f1 i f2, i навпаки, використовуючи промiжний файл h.

4.2.8 Отримати у файлi А компоненти файла В цiлого типу, які є цiлими числами.

4.2.9 Отримати у файлi А компоненти файла В цiлого типа, які дiляться на 3 та не дiляться на 7.

4.2.10 Отримати в файлi А компоненти файла В цiлого типу, які є точними квадратами.

4.2.11 Записати в файл А всi парнi числа файла В, а в файл С усi непарнi.

4.2.12 Зформувати файли А i В. Формулу для формування А взяти iз слюдуючого варiанту завдання. Записати в файл С спочатку компоненти файла В, а потім компоненти - А iз збереженням порядку.

4.2.13 Додатково дано число Р. Переписати послiдовно компоненти файла В у файл А, зупинившись пiсля першої компоненти, меншого Р.

4.2.14 Записати у файл А із збереженням порядку слiдування тi компоненти файла В цiлого типу, слiд за якими розмiщаються компоненти, кратнi 5-ти.

4.2.15 Записати в файл А компоненти файла В перед якими розмiщуються компоненти кратнi 3.

4.2.16 Записати всi компоненти файла В, якi є кратними числами, в файл А, а останні в файл С.

4.2.17 Перевiрити, чи впорядкованi компоненти файла В за збiльшенням.

4.2.18 Дано два файли А i В. Формулу для формування файла А взяти iз слідуючого варiанту. Перевiрити, чи еквiвалентнi цi файли?

4.2.19 Знайти значення передостанньої компоненти файла.


 

4.2.20 Знайти значення третьої від кінця компоненти файла.

4.2.21 Визначити суму компонент.

4.2.22 Знайти добуток компонент.

4.2.23 Визначити суму квадратiв компонент.

4.2.24 Визначити модуль суми та квадрат добутку компонент.

4.2.25 Знайти найбiльше iз значень компонент.

4.2.26 Знайти суму найбiльшого та найменшого з значень компонент.

4.2.27 Знайти суму вiд'ємних компонент.

4.2.28 Отримати копiю файла В в файлi А.

4.2.29 Визначити добуток компонент файла, розмiщених на позицiях з непарними номерами.

4.2.30 Знайти мiнiмальне значення серед компонет файлу, розмiщених на позицiях з парними номерами.

4.2.31 Число компонент файла В повинно бути кратним 10-ти. Записати у файл А спочатку найбiльше значення перших 10-ти компонент файлу В, потiм слiдуючих 10-ти i т.д.

4.2.32 Сформувати файли В1, В2, В3, В4. Формули для формування цих файлiв взяти з iнших варiантiв. Органiзувати обмiн компонентами мiж файлами вiдповiдно зі схемою:

 

В1--->B3

B2--->B4

B3--->B2

B4--->B1

 

дозволяється використовувати тiльки один допомiжний файл.

ЗМIСТ ЗВIТУ

4.3.1 Постановка задачi.

4.3.2 Роздрук текста програми, iсходних та результуючих даних.


4.4 Контрольнi запитання

4.3.1 Що є файлом як структури даних?

4.3.2 Вiдношення компонентiв iєрархiчної структури файла до основної та зовнiшньої пам'ятi ОС.

4.3.3 Поняття зовнiшнiх та внутрiшнiх сортувань.

4.3.4 У чому полягає ефективнiсть сортування?

4.3.5 Методи сортування.

4.3.6 Способи визначення часових затрат сортування.

4.3.7 Як здійснюється пошук заданого елементу, виключення заданого елементу з таблицi?


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

ЗАВДАННЯ

Модифiкувати програму таким чином, щоб данi якi зберігаються у черзi, були типа запису (RECORD), який складається з двох полiв. Вивiд полiв запису повинен виконуватись в один рядок.

Тип даних узгодити з викладачем.

 

 

Program siod 1.1;

Uses Crt;

Type

el=^spis; {тип вказiвника на елемент черги}

spis=record {тип элемента черги}

inform:string; {рядок даних элемента}

next:el; {вказiвник на наступний элемент}

end:

Var

key:char; {символ, введений з клавiатури за допомогою}

{небуферованого вводу}

per:el; {вказiвник початку черги}

pos:el; {вказiвник кiнця черги}

num:integer; {кiлькiсть елементiв у черзi}

 

Procedure Clear_m(n:integer);

{процедура очищення частини екрана}

{n=1- очищується половина ліворуч екрана (стовпчики 1-40)}


 

{n=2- очищується права половина екрана (стовпчики 41-80)}

Var

i:integer; {координата курсора по вертикалi}

Begin

n:=(n-1*39+1); {вказiвник координати курсора по горизонталi}

for i:=to 23 do {цикл очищення частини екрана}

begin

gotoXY(n,i);

writeln(' ‘);

end;

End;

 

Procedure Insoch; {процедура додання в чергу}

Var

n:el; {елемент черги, що додається}

Begin

Clear_m(1);

new(n); {створення елементу черги}

pos^.next:=n; {додання створеного елементу в кiнець черги}

pos:=n; {встановлення вказiвника кiнця черги на}

gotoXY(1,3);

writeln('Введiть новий елемент:');

readln(pos^.inform); {ввод рядка даних останнього елементу}

num:=num+1; {визначити поточну кiлькiсть елементiв у черзi}

End;

 

Procedure Outoch; {процедура вилучення з черги}

Var

dele: el;{вказiвник на перший елемент черги (що вилучається)}

och: el; {вказiвник на другий елемент черги}

Begin

if num>0 then

begin

Clear_m(1);

gotoXY(1,3);


 

dele:=per^.next; {встановлення dele на перший} {елемент черги}

writeln('Узятий елемент:');

writeln(dele^.inform); {виведення рядка даних}

{першого елемента}

och:=dele^.next; {встановлення och на другий елемент}

{черги}

per^.next:=och; {встановлення вказiвника початку}

{черги на другий елемент}

Dispose(dele); {вилучення першого елемента}

num:=num-1; {знаходження поточної кiлькостi}

{елементiв у черзi}

if num = 0 then {встановлення вказiвника кiнця черги}

pos:=per; {на вказiвник початку черги, якщо}

{в черзi немає елементiв}

end;

Еnd;

 

Procedure Print_och; {процедура друку змісту черги}

Var

och:el; {поточний елемент черги}

i: integer; {координата курсора по вертикалi}

j: integer; {лічильник елементiв черги}

Begin

i:=4;

Clear_m(2);

gotoXY(40,3);

writeln('Змiст черги:');

{перевiрка кiлькостi елементiв у черзi, виведення елементiв,}

{якщо кiлькiсть не бiльше 17}

if num<=17 then

begin

och:=per^.next; {призначення першого елемента}

{черги поточним}

for i:=1 to num do {цикл друку елементiв черги}


 

begin

goto XY(40,i+3);

writln(och^.inform); {вивід рядка даних поточ-}

{ного елементу}

ocb:=och^.next: {призначння наступного}

{елементу поточним}

end;

end

 

else {друк елементiв черги, якщо}

begin {їх кiлькiсть перевищує 17}

och:=per^.next; {призначення першого елемента}

{черги поточним}

for i:= 4 to 13 do {цикл друку перших}

begin {10 елементів}

gotoXY(40.i);

write(och ^.inform); {виведення рядка даних}

{поточного елементу}

och:=och^.next; {призначення наступного}

{елемента поточним}

end;

gotoXY(40,14);

write('...

for j:=l to num-5 do {пропуск наступних елементів черги,}

begin {крiм останнiх 5}

och:=och^.next;

for i:= 15 to 20 do {цикл друку останніх}

begin {5 елементiв}

gotoXY(40,i);

write(och^.inform);

och:=och^.next;

end;

end;

End;


 

BEGIN

TextBackGround(l); {встановлення кольору фону екрана}

TextColor(14); {встановлення кольору виводимих символiв}

CIrScr;

writeln(' ОЧЕРЕДЬ "+" -ДОБАВИТЬ "-" ИЗВЛЕЧЬ');

TextColor(ll);

new(per); {створення вказiвника початку черги}

pеr^.infоrm:=’****************’; ініціалізація рядка даних}

{вказiвника початку черги}

pos:=per; {встановлення вказiвника кiнця черги на}

{вказiвник початку}

num:=0; {початкова довжина черги}

key:=' ';

while key <> chr(27) do {цикл, що здійснює роботу з}

begin {чергою, вихiд з циклу - натиснути клавишу <ESC>}

while not KeyPressed do {очікування натиснення клавиши}

key:=ReadKey;

if key = chr(0) then {ввод символа з клавiатури}

key:=ReadKеy;

if key <> chr(27) then {рoбота з чергою, якщо}

begin {не натиснута клавиша <ESC>}

case key of {вибір виду роботи}

'+':insoch;

'-':outoch;

else

begin

Sound(3000); {звуковий сигнал,}

Delay(128);{якщо натиснута будь-яка клавіша,}

NoSound; {окрім '+', '-' або <ESC>}

end;

end;

Print_och; {друк елементiв черги}

end;

end;

END.


 

Зміст звіту

5.2.1 Мета роботи.

5.2.2 Блок-схема алгоритма з пояснювальними коментаріями.

5.2.3 Схема фізичної структури черги.

5.3 Контрольні запитання

5.3.1 Що називається списком?

5.3.2 Що називається послідовним списком?

5.3.3 Що називається чергою?

5.3.4 Що означає переповнення черги?

5.5.5 Які основні операції над чергою?


26

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

Завдання

Модифікувати програму таким чином, щоб данi, які зберігаються в стеку, були типу запису (RECORD), складеного з двох полів. Вивід полів запису повинен здійснюватися в один рядок.

Тип даних узгодити з викладачем.

Program siod_1_1; {тип вказівника на елемент стеку}

Uses Crt; {тип елементу стеку}

Type {рядок даних елементу}

spis = "el; {вказiвник на наступний елемент}

el = record

inf: string;

next: spis;

end;

Var

key: char; {символ, введенний з клавіатури за допомогою}

{небуферованого вводу}

tek: spis; {вказiвник вершини стеку}

och: spis; {вказiвник на доданий або виключений елемент стеку}

 

Procedure clear_m(n: integer): {процедура очищення частини экрану}

{n=1 очищується половина екрану ліворуч (стовбці 1-40)}

{n=2 очищується права половина екрану (стовбці 41-80)}

Var

i: integer; {координата курсора по вертикалi}


Begin

n:=(n-1)*39+1; {визначення координати курсора по горизонталi}

for i:=3 to 23 do {цикл очищення частини екрану}

begin

gotoXY(n,i);

wrileln.(' ');

end;

end;

 

Procedure Instek; {процедура додання елементу в стек}

Begin

clear_m(l);

new(och); {утворення елементу}

och^.next:=tek; {додання утвореного елементу в стек}

tek:=och; {встановлення вказiвника вершини стеку на}

{доданий елемент}

gotoxy(l,3);

writeln('Введите новий елемент:');

readln(tek^.inf); {ввод рядка даних елементу}

End;

 

Змiст звіту

6.2.1 Мета роботи.

6.2.2 Блок - схема алгоритму з пояснювальними коментаріями.

6.2.3 Схема фізичної структури стеку.

6.3 Контрольнi запитання

6.3.1 Що називається стеком?

6.3.2 Якi основнi операцiї над стеком?

6.3.3 Що називається вершиною стеку? Як вона адресується?

6.3.4 Як зберігається стек в пам’ятi ЕОМ?


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

ЗАВДАННЯ

Program spis_2c;

Uses Crt,Graph;

Const.

Pi=3.1415826535;

Type

el = ^spis; {вказiвник на елемент списку}

spis = record {тип елементу списку}

x,y: integer;{координати центру кола, відповідні елем-ту списку}

inform: string; {рядок даних елементу списку}

{(суть елементу)}

pred: el; вказiвник на попередній елемент списку}

posi: el; {вказiвник на наступний елемент списку}

end;

Var

Driver_Mode: integer; {перемiщення, використані для iнiцiалiзацiї}

{графічного режиму дисплея}

main: el;

numb: integer; {кiлькiсть елементів списку}

key: char;

st: integer; {символ, відповідний натиснутій клавіші}

 

Procedure Beep;


Begin {процедура подачи звукового сигналу}

Sound(1000); {включення звукового сигналу}

delay(128); {затримка}

Nosound; {виключення звукового сигналу}

End;

 

Procedure Clr(xl,yl,x2,y2:integer);

{процедура очищення частини екрану, заданої у вигляді} {прямокутника}

{х1,у1 - координати верхнього кута прямокутника ліворуч}

{х2,у2 - координати правого нижнього кута прямокутника}

Begin

SetFillStyle(0,l);

Ваr(х1,у1,х2,у2);

End;

 

Procedure Setscr; {процедура вивода інструкції по роботі з програмою}

Begin

Cleardevice; {очищення екрана}

OutTextXY(10,10,' ПРОГРАМА РЕАЛІЗУЄ ДВУНАПРАВЛЕНИЙ ЦИКЛІЧНИЙ СПИСОК');

OutTextXY(20,20,'i-додати елемент d-знищити елемент 1-перейти на елемент по ч.с.');

OutTextXY(20,30,' г - перейти на елемент проти ч.с. Enter - ввести суть елемента');

OutTеxtXY(410.60,'Cyть елемента:');

End:

 

Procedure Inp_inf; {процедура ввода сутi елементу}

Begin

ОutТехtХУ(410,120,'Введіть суть елемента:'); {вивод запрошення}

GotoXY(55,17); {позиціонування курсору} readln(main^.inform); {ввод суті елементу} сlr(410.120,640,135); {витирання запрошення і введеної суті}

{елементу}


End;

 

Procedure Out_inf; {процедура виводу суті елементу}

Begin

сlr(410,70,640.80); {підготовка экрану до виводу}

OutTxtXY(410,70,main^. inform); {вивод суті елементу}

End;

 

Procedure Ch_inf; {процедура ввода суті елементу и виводу її на екран}

Begin

inp_uif;

out_mf;

End;

 

Procedure Mal_sp;

{Процедура виводить на екран геометричного уявлення списку }

{Список поданий у вигляді кільця, елементи списку - у вигляді }

{кіл, які лежать на кільці. Поточний елемент позначається }

{символом '*' - міткою поточного елементу}

Var

tek: el; {вказiвник на поточний елемент списку}

st: real; {величина кута між сусідніми колами,}

{якими позначені елементи списку}

i: integer; {керуюча змінна циклу}

Begin

сlr(1,60,400,200);

Circle(150,130,118); {вичерчування кільця}

Circle(150,130,142);

st:=2*Pi/numb;

tek:=maili;{встановлення вказівника tek на поточний елем-т списку}

for i:=l to numb do {цикл вичерчування кола - елементів списку}

begin

tek^.x:=Trunc(130*cos((i-l)*st)+150);

{обчислювання координат по горизонталі та вертикалі}

tek^:y:=Trunc(54*sin((i-l)*st)+130);


Circlc(tclt^.x,tek^.y,10); {вичерчування кола елементу}

tck:=tck^.posl; {перехід до наступного елементу}

end;

OutTextXY(main^.x-3,main^.y-3,'*'); {виведення мітки поточного}

End; {елементу}

 

Procedure Left_right(napr:char); {процедура переміщення за списком}

Begin

SetColor(0); {зтирання мітки поточного елементу}

OutTextXY(main^Jt-3,main^.y-3,'*’);

SеtColor(l);

if napr=T {вибір напрямку руху за списком}

then

main:=main^.posi; {перехід до наступного елементу}

else

main:=main^.pred; {перехід до попереднього елементу} OutTextXY(main^.x-3,main^ -y-3,’*’);

{виведення мітки поточного eлементу}

cild;

 

Procedure Plus_l;

{процедура включення нового елемента між поточним та наступним}

Var

r:el; {вказiвник на наступний елемент списку}

n:el; {вказiвник на новий елемент списку}

Begin

r:=main^.posl; {встановлення вказівника r на наступний елемент} {списку}

new(n); {утворення нового елементу списку}

main^.posl:=n; {формування зв’язку поточного елементу з новим}

n^.pгed:=main;

n^.posi:=r; {формування зв’язку нового елементу з наступним}

r^.pred:=n;

n^.inform:="; {інiцiалiзація рядка даних нового елементу списку}

main:=n.; {призначення включеного елементу списку наступним}


mal_sp; {виведення на екран поточного стану списку}

End;

 

Procedure Minus_l;

{процедура знищення поточного елементу з списка}

Var

l: el; {вказiвник на попередній елемент списку}

r: el; {вказiвник на наступний елемент списку}

Begin

l:=main^.pred; {встановлення вказiвника 1 на попередній елемент}

{списку}

r:=main^.posi; {встановлення вказівника r на наступний елемент}

{списку}

Dispose (main); {знищення поточного елементу}

l^.posl:=r; {формування зв’язку мiж попереднім та наступним}

r^.pred:=l; { елементами списку}

main:=l; {призначення попереднього елемента поточним}

mal_sp; {виведення на екран поточного стану списку}

End;

 

BEGIN

Driver:=Dctect;

Initgraph(Driver_Mode,' '); {ініціалізація графічного режиму}

{роботи екрану}

setscr;

numb:=l; {похідна кiлькiсть елементів списка}

new(main); {утворення першого елементу списка}

main^.posl:=main; {утворення циклічного списку}

main^.pred:=main;

main^.inform:=' '; {iнiцiалiзацiя рядка даних елементу}

mal_sp; {виведення поточного стану списку}

key:=' ':

while kеy<>chr(27) do {цикл обробки натиснутої клавіші, вихід}

begin {з циклу при натисненні клавіші <КЛЮЧ>}

out_inf;


while not KeyPressed do {очікування натиснення клавіші}

key:=ReadKey;

if key=chr(0) then {ввод символа, відповідного}

begin

key:=ReadKey; {натиснутій клавіші}

case key of {вибір виду обробки}

'r': left_right('r'); {переміщення за списком проти г.с.}

‘l': left_right(T); {переміщення за списком за г.с.}

#13: ch_inf; {ввод суті елементу}

'd': if numb<>l {перевірка кількості елементів}

then

begin {якщо кiлькiсть елементів більше 1,то}

numb:=numb-l;

{зменшення кількості елементів на 1}

minus^l; {усування поточного елементу}

end

else {якщо список складається з 1 елементу, то}

beep;

{подання звукового сигналу про помилку}

'i': begin {додаток елементу}

numb:=numb+l;

{збiльшення кількості елементiв на 1}

plus_l; {включенння нового елементу}

end;

#27:;

else

beep; {подання звукового сигналу у випадку}

end; {натиснення невикористаної клавіші}

end;

CloseGraph: {знищення графічного режиму роботи экрану}

End.

 

Змiст звіту

 

7.2.1 Мета роботи.


7.2.2 Блок-схема алгоритму з коментаріями

7.2.3 Схема фізичної структури двунаправленого кільцевого

списку.

 

7.3 КонтрольнІ запитання

 

7.3.1 Що називається списком?

7.3.2 Що називається двунаправленим кільцевим списком?

7.3.3 Як включається новий елемент до списку?

7.3.4 Як виключається елемент зі списку?


 

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

Застосування бiнарних дерев

Мета роботи: метою роботи є вивчення методiв знаходження одного рiшення з двох можливих із застосуванням бiнарних дерев.

ЗАВДАННЯ

8.1.1 Вивчити операції над бінарними деревами.

8.1.2 Розробить програму знаходження усiх дублiкатiв у списку чисел.

8.1.3 Розробить програму знаходження бiнарних дерев.

8.1.4 Pозробить програму подання виразу, утримуючого операнди та бінарні оператори у виді строго бiнарного дерева.

Варіанти завдання отримати у викладача.

Змiст звіту

8.3.1 Мета роботи.

8.3.2 Описання методiв примінення бiнарних дерев.

8.3.3 Алгоритм.

8.3.4 Текст програми.

8.4 Контрольнi питання

8.4.1 Яке дерево є бiнарним?

8.4.2 Класiфiкация бiнарних дерев.

8.4.3 Операцiї над бiнарними деревами.

8.4.4 Примінення бiнарних дерев.

8.4.5 Методи проходження бiнарних дерев.

8.4.6 Подання списків у вигляді бiнарних дерев.


 

8.4.7 Як застосовується пошук заданого елементу, знищення заданого елементу з таблиці?


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

 

ЗАВДАННЯ

 

9.1.1 Вивчити методи вводу результатів спостережень.

9.1.2 Розробити програму вводу результатів спостережень.

9.1.3 Розробити процедури коригування файлів результатами спостережень.

9.1.4 Розробити програми по п. 2.2, 2.3.

9.1.5 Розробити програму роздруку файлів з результатами спостережень.

9.1.6 Перевірити роботу програми на конкретних даних, наданих викладачем.

 

ПРОГРАМА VVOD.

 

Алгоритм програми складаєтся з слідуючих дій:

1. Вводится вид масива як перемінна NR, визначаюча розмір масива.

2.Для тривимірового масива вводится число рівней NK, для двовимірового – число стілбців NJ.

 

3. Вводится число рівней NI для масива будь-який розмірності.

4. Вихідні дані заносяться як елементи масива A(N), де

N=I + NI*(J – 1) + NI*NJ*(K – 1); I = 1, NI; J = 1,NJ; K = 1,NK

5.При необхідності масив A(N) роздруковується на АЦПУ, при знаходженні помилок вона виправляється.

6.Вводиться назва для файлу з масивом A(N).

 

Програма KRF.

Алгоритм програми складається зі слідуючих дій:

1.Вказується назва корегуємого файлу та вигляд масиву.

 

2.Вводиться кількість рівней NK для трьох мірних масивів, кількість стовбців для двох та трьох мірних масивів і кількість нагляданнь у стовбці NI.

3.При необхідності виправляється будь-який елемент масива, виключаються та довводяться наглядання.

 

 

ЗМІСТ ЗВІТУ.

 

9.5.1 Ціль роботи.

9.5.2 Опис логічної структури процедури: Вхідні дані.

9.5.3 Блок-схема алгоритму.

9.5.4 Тексти програм вводу, корегування, роздруку.

 

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

 

9.6.1 Поняття математичної моделі.

9.6.2 Види математичних моделей.

9.6.3 Яка модель виявляється ймовірносною?

9.6.4 Яка модель виявляється детермінованою?

9.6.5 Поняття випадкової величини.

9.6.6 Що таке залежна та незалежна випадкова величина?

9.6.7 Поняття статистичної ймовірності.

9.6.8Дискретні та неперервні випадкові величини.

 

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

 

ЗАВДАННЯ

 

10.1.1 Вивчити методи побудови виробничих розподілень та оцінки їх з теоретичними;

10.1.2 Розробити блок-схему алгоритму розрахунку параметрів розподілень;

10.1.3 Розробити блок-схему алгоритму оцінки узгодження емпіричного та теоретичного розподілення за критеріями;

10.1.4 За блок-схемами пп.2.2, 2.3 розробити програми, виконати контрольні розрахунки.

 

 

ЗМІСТ ЗВІТУ

 

10.4.1 Мета роботи.

10.4.2 Опис логічної структури та блок – схеми алгоритму: розрахунку параметрів виробничих розподілень, оцінки узгоджень емпіричного та теоретичного розподілень.

10.4.3 Тексти програм за п. 2.4.

 

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

 

10.5.1 Що називається розподіленням випадкової величини?

10.5.2 Поняття теоретичного та емпіричного розподілень.

10.5.3 Як виконати оцінку узгодження емпіричного розподілення з теоретичним.

10.5.4Критерії узгодження.

10.5.5 Дати визначення диференціальній функції розподілення випадкової величини.

10.5.6 Інтегральна функція розподілення.

10.5.7 Густість ймовірності розподілення випадкової величини.

10.5.8 Закон нормального розподілення та області його використання у математичному маделюванні.

10.5.9 Дати визначення початкового та центрального моментів розподілення.

10.5.10 Поняття математичного очікування та середнього арифметичного значення випадкової величини

10.5.11 Поняття дисперсії та середнього квадратичноговідхилення випадкової величини.

10.5.12 Що представляє собою гістограма та як вона будується.

 

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

 

ЗАВДАННЯ

 

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

11.1.2 Розробити блок-схему алгоритму розрахунку коефіціентів кореляції між незалежними змінними та вектор взаємних кореляцій незалежних змінних із залежними змінними.

11.1.3 Розробити програми по п.2.2.

 

ЗМІСТ ЗВІТУ.

 

11.5.1 Мета роботи.

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

11.5.3 Тексти програм пп.2.3.

 

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

 

11.6.1 Сформулювати задачу побудови математичної моделі на основі кореляційного та регресійного аналізів.

11.6.2 У чому заключається задача кореляційного аналізу.

11.6.3 У чому заключається задача регресійного аналізу.

11.6.4 Коефіцієнт регресії та його властивості.

11.6.5 Поняття кореляційного відхилення. Його властивості.

11.6.6 Кореляційна таблиця. Методи її побудови.

11.6.7 Як розраховуються коефіцієнти рівняння регресії.

11.6.8 Рівняння регресії першого порядку.

11.6.9 Рівняння регресії другого порядку.

11.6.10 Якими методами можна обчислити коефіцієнти рівняння регресії.

11.6.11 Як визначити адекватність рівняння регресії.

11.6.12 У чому заключається принцип вибіра найкращої математичної моделі.

 

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

 

ЗАВДАННЯ

 

12.1.1 Вивчення методів лінійного програмування.

12.1.2 Розробити алгоритм вирішення транспортної задачі.

12.1.3 Розробити програму по п. 2.2.

12.1.4 Перевірити роботу програми на конкретних даних наданих викладачем.

 

Таблиця 3.1

Умови задачи

 



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 177; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.190.152.38 (0.608 с.)