Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Комп’ютеризовані системи
Кафедра:
Не вказано

Інформація про роботу

Рік:
2001
Тип роботи:
Інші
Предмет:
Алгоритмічні мови та програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет «Львівська політехніка»  РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ПРОЦЕДУР ТА ФУНКЦІЙ ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 3 З КУРСУ «АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ» для студентів спеціальності 6.0914 «Комп’ютеризовані системи, автоматика і управління» Затверджено на засiданнi кафедри «Автоматика та телемеханiка» Протокол № 11 вiд 15.03.2001 p. Львів 2001 Робота з масивами. Використання процедур та функцій: Інструкція до лабораторної роботи №3 з курсу «Алгоритмічні мови і програмування» для студентів спеціальності 6.0914 «Комп’ютеризовані системи, автоматика і управління» / Укл.: Р.А.Гордійчук, В.І.Отенко, А.Е.Лагун – Львів: НУЛП, 2001.- 16 с. Укладачі: Р.А.Гордійчук, ст. викладач, В.І.Отенко, канд. техн. наук, доцент А.Е.Лагун, асистент. Вiдповiдальний за випуск І.М. Ковела, канд.техн.наук, доцент Рецензенти: В.В.Самотий, доктор техн. наук, професор Мета роботи - вивчити синтаксис опису і використання в програмах змінних типу масив, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосовувати у програмах процедури і функції для виконання логічно закінчених алгоритмів. 1. КОРОТКІ ТЕОРЕТИЧНІ ДАНІ 1.1. Масиви. Масив - це сукупність елементів одного типу, доступ до кожного з яких забезпечується вказанням ідентифікатора масиву і порядкового номера (індексу) елемента в масиві. Кількість елементів у масиві задається під час описання змінної-масиву і надалі в програмі змінюватися не може. Розмір масиву не може перевищувати 64 кбайт (65535 байт). Оперативна пам'ять, виділена для локальної змінної-масиву при її описі, як правило, звільняється після закінчення виконання процедури (функції), в якій вона описана. Для опису змінної типу масив, як правило, спочатку описують тип-масив в розділі опису типів, після чого в розділі опису змінних описують змінну-масив, використовуючи ім'я описаного типу-масиву: type <ім'я_типу> = array[<тип_індексу>{,<тип_індексу>}] of <тип_елементів>; ... var <ім'я_змінної> : <ім'я_типу>; де array, of - зарезервовані слова Турбо-Паскаля; <ім'я_типу>, <ім'я_змінної> - ідентифікатори мови Турбо-Паскаль; <тип_індексу> - будь-який порядковий тип, крім longint і типів-діапазон з базовим типом longint. Як правило, використовується тип-діапазон; <тип_елементів> - будь-який тип мови Турбо-Паскаль, зокрема структурований. Використовується також спрощена форма опису змінної-масиву: var <ім'я_змінної> : array[<тип_індекса>{,<тип_індекса>}] of <тип_елементів>; В оперативній пам'яті комп'ютера елементи масиву розташовані один за одним так, що при переході від молодших до старших адрес у першу чергу змінюється крайній правий індекс масиву. Алгоритми оброблення масивів програмуються, як правило, з використанням оператора циклу for. Нижче наведена програма, яка вводить елементи двовимірного масиву з клавіатури і виводить на екран квадрати їх значень. program Array_Demo; const N=5; M=10; type Matrix=array[1..N,1..M] of real; var a : Matrix; i,j : integer; BEGIN writeln('Введіть елементи матриці :'); for i:=1 to N do for j:=1 to M do begin write (' а[',i,j,']= '); read (a[i,j]) end; writeln('Значення елементів матриці, піднесених до квадрата :'); for i:=1 to N do for j:=1 to M do writeln (' квадрат а[',i,j,']= ', sqr(a[i,j])); END. 1.2. Процедури і функції. Засобами структурних методів розроблення програмного забезпечення в мові Турбо-Паскаль є процедури і функції. Різниця між функцією і процедурою полягає в тому, що результатом виклику функції (виконання послідовності її внутрішніх операторів) є значення деякого типу, вказаного при її описі. Тому виклик функції може використовуватися тільки як операнд виразу або фактичний параметр. Процедура в зовнішню програму безпосередньо значення не повертає. Якщо необхідно, це можна зробити через параметр-змінну. Процедура не може використовуватися як операнд виразу. Описуються процедури і функції в програмі, як правило, після опису глобальних змінних. Якщо в тілі однієї процедури (функції) P1 викликається процедура (функція) P2, то P2 повинна бути описана до свого виклику. Винятком з цього правила є попередня декларація. Опис процедури: procedure <ім'я_процедури>[({[var]<змінна>{,<змінна>}:<тип>[;]})]; [<опис локальних імен>] begin <послідовність операторів> {тіло процедури} end; Опис функції: function <ім'я_функції>[({[var]<змінна>{,<змінна>}:<тип>[;]})]: <тип>; [<опис локальних імен>] begin <послідовність операторів> {тіло функції} end; де <ім'я_процедури>,<ім'я_функції> - ідентифікатори мови Турбо-Паскаль; <змінна> - ім'я локальної змінної, яку називають формальним параметром і через яку процедурі (функції) при її виклику з зовнішньої програми передаються вхідні дані, які називають фактичними параметрами; <тип> - ім'я стандартного типу, або типу, попередньо оголошеного в розділі type. Символ-розділювач «;» після оголошення останнього формального параметра (перед круглою дужкою, що закриває, в заголовку процедури (функції)) не ставиться. Кількість та типи формальних і фактичних параметрів повинні збігатися. Якщо перед <змінною> не стоїть зарезервоване слово var, то вона визначена як параметр-значення. В такому випадку фактичним параметром є значення виразу, що відповідає формальному параметру при виклику процедури (функції). Якщо фактичним параметром є глобальна (зовнішня) змінна, то процедура (функція) не може змінити її значення, оскільки їй буде передана тільки копія цієї глобальної змінної. Якщо перед <змінною> стоїть зарезервоване слово var, то вона визначена як параметр-змінна. В такому випадку як фактичний параметр можуть бути застосовані лише ідентифікатори глобальних змінних (використання виразів не допускається). При цьому процедура (функція) отримує доступ до комірки пам'яті, в якій зберігається глобальна змінна, і може змінити її значення. Процедура може повернути результат свого виконання тільки через параметр-змінну. Передавати дані у функцію рекомендується через параметри-значення; <опис локальних імен> - опис локальних (внутрішніх) типів, констант, змінних, процедур і функцій, які доступні для використання тільки в даній процедурі (функції), і термін існування яких в оперативній пам'яті комп'ютера визначається часом виконання цієї процедури (функції) після її виклику. Описувати типи всередині процедури (функції) не рекомендується; <послідовність операторів> - послідовність операторів мови Турбо-Паскаль, а також виклики процедур (функцій). Тіло функції повинно містити оператор присвоєння вигляду <ім'я_функції>:=<вираз>, де <вираз>- вираз мови Турбо-Паскаль, значення якого буде повернуте функцією в зовнішню програму і тип якого повинен бути сумісним з типом, що повертається функцією і вказаний при її описі. Оголошення типів у заголовку процедури (функції) не допускається. Конструкції procedure Sort_Array ( var a: array[1..10] of real ); function Sum_String_of_Matrix ( a: array[1..5,1..10 ): array[1..5] of double; є забороненими, оскільки оголошуються типи-діапазони, які вказують межі індексів масивів. Синтаксично правильними є такі конструкції: type Array10_Type = array[1..10] of real; Array5_Type = array[1..5] of double; Matrix_5x10_Type = array[1..5,1..10] of real; procedure Sort_Array ( var a:Array10_Type ); begin ... end; function Sum_String_of_Matrix (a:Matrix_5x10_Type):Array5_Type; var sum : Array5_Type; begin ... Sum_String_of_Matrix:=sum end; ... 1.3. Основні алгоритми сортування масивів. Сортування вставкою . На і-му кроці значення і-го елемента масиву тимчасово запам'ятовується в змінній x і послідовно порівнюється з j-ми елементами в бік першого елемента за встановленим критерієм (наприклад, x<аj при сортуванні за зростанням). Поки критерій справджується, j-ті елементи масиву послідовно переміщуються в бік і-го елемента. Значення і-го елемента, записане в змінній x, вставляється в масив після j-го елемента, для якого заданий критерій порівняння не справджується. На кожному кроці зона порівняння збільшується на один елемент в бік кінця масиву. Блок-схема алгоритму наведена на рис. 1. Порівняння за заданим критерієм здійснює функція f(aj,x), яка повертає тип boolean.  Рис.1. Блок-схема алгоритму сортування вставкою Сортування вибором. На і-му кроці серед (n-i) елементів, послідовно порівнюючи елементи в бік останнього елемента масиву, шукається елемент, значення якого найкраще задовольняє заданому критерію (наприклад, найменше). Значення знайденого таким чином елемента міняється місцями із значенням і-го елемента. На кожному наступному кроці зона пошуку зменшується на один елемент від початку масиву. Блок-схема алгоритму наведена на рис. 2. Порівняння за заданим критерієм здійснює функція f(aj,x), яка повертає значення типу boolean.  Рис.2. Блок-схема алгоритму сортування вибором Сортування обміном (бульбашкове сортування). На і-му кроці порівнюються за визначеним критерієм (наприклад, аj <aj-1) значення всіх сусідніх пар з (n-i) елементів від кінця масиву до і-го елементу. Якщо для поточної пари критерій справджується, то елементи міняються місцями. Після (n-1) проходів масив стає відсортованим. Блок-схема алгоритму наведена на рис. 3. Порівняння за заданим критерієм здійснює функція f(aj,aj-1), яка повертає тип boolean.  Рис.3. Блок-схема алгоритму сортування обміном 2. ЗАВДАННЯ 2.1. Домашня пiдготовка до роботи 1. Вивчити правила опису та використання змінних-масивів в програмах, написаних алгоритмічною мовою Турбо-Паскаль. 2. Вивчити правила опису та виклику процедур і функцій в програмах, написаних алгоритмічною мовою Турбо-Паскаль. 3. Вивчити основні алгоритми сортування масивів. 4. Написати програму алгоритмічною мовою Турбо-Паскаль згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування оформити у вигляді процедури; обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)). Таблиця 1 № п/п Алгоритм впорядкування матриці Алгоритм для розрахунку fi(aij) та F(fi(aij)) Матриця  1 Впорядкувати елементи стовпців матриці за спаданням їх значень методом вставки fi(aij)-максимальний елемент у кожному рядку матриці; F(fi(aij))-сума fi(aij). -12 7 23 13 4 67 15 34 -5 9 2 5 17 -23 45 26 -6 23 -5 -9 18 37 -8 26 12  2 Впорядкувати елементи рядкв матриці за зростанням їх значень методом обміну fi(aij)-мінімальний елемент у кожному стовпці матриці; F(fi(aij))-добуток fi(aij) 34 -8 27 7 12 -5 23 45 67 -2 13 -12 34 -3 25 17 56 -6 17 21 0 15 4 9 -14  3 Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору fi(aij)-сума елементів у кожному рядку матриці; F(fi(aij))-середнє геометричне значення fi(aij)  2 0 33 -1 -21 78 7 -4 -3 11 -2 -7 -1 -9 0 13 61 60 42 -10 1 0 4 0 16  4 Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки fi(aij)-добуток елементів у кожному стовпці матриці; F(fi(aij))-середнє арифме-тичне значення fi(aij) 90 7 89 -2 17 1 -4 8 56 32 -4 -6 -99 19 39 2 4 -7 0 75 11 41 22 80 -5  5 Впорядкувати елементи стовпців матриці за зростанням їх значень методом обміну fi(aij)-середнє арифметичне значення елементів у кожному рядку матриці; F(fi(aij))-добуток fi(aij)  40 72 6 92 98 18 -33 -48 81 26 1 -4 6 -2 0 36 9 0 4 1 -55 2 66 70 -3  6 Впорядкувати елементи рядків матриці за спаданням їх значень методом вибору fi(aij)-середнє геометричне значення елементів у кожному стовпці матриці; F(fi(aij))-сума fi(aij) -3 -5 -45 -71 -5 0 1 3 2 7 11 9 45 0 4 9 19 55 44 90 -3 -4 -1 -5 0  7 Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки fi(aij)-добуток елементів у кожному рядку під головною діагоналлю матриці; F(fi(aij))-сума fi(aij)  6 34 12 70 -1 -7 97 80 99 -99 1 6 -3 2 -8 3 33 -1 0 -78 -3 -5 -8 -56 -23  8 Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну fi(aij)-сума елементів у кожному стовпці над головною діагоналлю матриці; F(fi(aij))-добуток fi(aij) 9 67 -65 45 1 12 61 48 -5 -1 0 39 0 41 2 36 95 -8 -5 0 11 22 71 3 63  9 Впорядкувати елементи рядків матриці за зростанням їх значень методом вибору fi(aij)-сума елементів у кожному стовпці над допоміжною діагоналлю матриці; F(fi(aij))-середнє геометричне значення fi(aij) 44 -2 -5 38 -91 2 0 6 3 22 13 1 -4 90 11 -3 -6 -98 -23 -24 10 34 32 31 69  10 Впорядкувати елементи стовпців матриці за спаданням їх значень методом обміну fi(aij)-добуток елементів у кожному рядку під допоміжною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij) -1 -5 -47 -8 -1 -4 -98 -90 -45 -78 -3 -2 -5 -9 -4 -8 -67 -33 -91 -40 -2 -58 -11 -65 -77  11 Впорядкувати елементи рядків матриці за зростанням їх значень методом вставки fi(aij)-середнє арифметичне значення елементів у кожному стовпці під головною діагоналлю матриці; F(fi(aij))-добуток fi(aij) 1 16 21 11 6 2 17 22 12 7 3 18 23 13 8 4 19 24 14 9 5 20 25 15 10  12 Впорядкувати елементи стовпців матриці за спаданням їх значень методом обміну fi(aij)-середнє геометричне значення елементів в кожному рядку над голов-ною діагоналлю матриці; F(fi(aij))-сума fi(aij)  0 2 -2 89 21 -1 -4 36 41 71 56 93 51 -2 -51 1 3 -8 0 9 23 41 5 8 -2  13 Впорядкувати елементи рядків матриц за спаданням їх значень методом вставки fi(aij)-середнє арифметичне значення елементів у кожному стовпці над допоміжною діагоналлю матриці; F(fi(aij))-добуток fi(aij) 12 46 -23 72 -5 59 7 -8 0 67 7 -8 -4 -97 -55 77 -1 -5 34 -8 0 22 27 24 24  14 Впорядкувати елементи рядків матриці за зростанням їх значень методом обміну fi(aij)-сума елементів у кожному стовпці під допоміжною діагоналлю матриці; F(fi(aij)) –середнє геометричне значення fi(aij) 87 98 57 29 95 -8 59 -2 9 -11 6 10 20 59 -23 12 13 51 46 -7 -2 87 69 90 -3  15 Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору fi(aij)-добуток елементів у кожному рядку над головною діагоналлю; F(fi(aij))-середнє арифметичне значення fi(aij) 50 98 -4 85 -8 40 73 -2 -9 -19 1 6 73 21 0 0 25 2 -5 -3 99 19 95 92 -7  16 Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки fi(aij)-сума елементів у кожному стовпці під головною діагоналлю матриці; F(fi(aij))-середнє геометричне значення fi(aij)  3 5 9 24 2 -23 0 37 29 10 0 1 4 -2 -5 -5 -83 -74 82 -1 11 88 -5 81 -39  17 Впорядкувати елементи стовпців матриці за зростанням їх значень методом обміну fi(aij)-середнє геометричне значення елементів у кожному рядку матриці; F(fi(aij))-середнє арифметичне значення fi(aij) 66 21 -3 -1 90 1 74 -2 80 -1 10 30 20 -50 91 2 4 5 81 0 33 69 -5 51 24  18 Впорядкувати елементи рядків матриці за спаданням їх значень методом вибору fi(aij)-середнє арифметичне значення елементів у кожному стовпці над допоміжною діагоналлю; F(fi(aij))- добуток fi(aij) 33 -5 -9 -20 -11 0 -42 86 83 71 -6 -9 33 13 22 52 -5 -7 53 19 -3 98 72 68 0  19 Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки fi(aij)-середнє геометричне значення елементів у кожному рядку над головною діагоналлю; F(fi(aij))-сума fi(aij) 34 45 65 23 98 1 -4 67 -3 -18 23 -5 -1 94 -25 2 24 -4 79 -63 10 29 25 30 -6  20 Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну fi(aij)-добуток елементів у кожному стовпці під головною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij) 19 62 -45 -1 84 23 54 -4 -2 68 36 39 96 94 97 -3 -8 -4 -6 -22 98 -5 -3 0 11  21 Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору fi(aij)-добуток елементів у кожному рядку над допо-міжною діагоналлю матриці; F(fi(aij))-сума fi(aij) 22 41 45 -45 -49 5 1 3 -2 0 34 97 48 72 -1 -3 -7 5 92 20 0 -3 -57 9 1  22 Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну fi(aij)-середнє арифметичне значення елементів у кожному стовпці матриці; F(fi(aij))-середнє геометричне значення fi(aij) 30 31 36 63 -2 2 24 -3 -7 -1 45 28 -98 2 -8 0 -1 -2 -3 93 11 10 72 85 66  23 Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки fi(aij)-сума елементів у кожному рядку над головною діагоналлю матриці; F(fi(aij))-середнє геометричне значення fi(aij) 31 65 -83 -2 -85 9 -2 11 -4 70 52 73 -8 -1 60 57 83 -1 82 50 1 -3 -2 78 -9  24 Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну fi(aij)-добуток елементів у кожному стовпці під допоміжною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij) 10 32 1 -8 -1 2 4 91 -82 96 33 62 -1 -8 0 5 -5 6 -6 7 -19 0 3 -22 -3  25 Впорядкувати елементи стовпців матриці за спаданням їх значень методом вставки fi(aij)-середнє геометричне значення елементів у кожному рядку під головною діагоналлю матриці; F(fi(aij))-сума fi(aij) 9 24 -2 86 -3 40 49 -4 -3 0 27 -76 77 -1 69 71 -89 -94 -51 50 2 96 42 36 -1   2.2. Робота в лабораторiї 1. Ввести в комп'ютер програму, написану мовою Турбо-Паскаль згідно з отриманим завданням. 2. Відлагодити введену програму, виправивши виявлені компілятором помилки. 3. Виконати програму. Остаточний текст відлагодженої програми та отримані результати занести в звіт по лабораторній роботі. 3. ЗМIСТ ЗВIТУ 1. Повний текст завдання. 2. Блок-схема алгоритму програми. 3. Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення. 4. Остаточно відлагоджений текст програми згідно з отриманим завданням. 5. Результати виконання програми. 4. КОНТРОЛЬНI ЗАПИТАННЯ 1. Поясніть, як можна описати змінну-масив мовою Турбо-Паскаль. 2. Як здійснюється доступ до елементів масиву ? 3. Як описуються процедури і функції мовою Турбо-Паскаль? В чому полягає різниця між процедурою і функцією ? 4. Як передаються фактичні параметри при виклику процедур і функцій ? 5. Який з простих методів сортування, на Ваш погляд, є найкращим, а який найгіршим ? Поясніть чому ? СПИСОК ЛIТЕРАТУРИ 1. Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо-Паскаль.- 2-е изд. - М.: Изд-во МГТУ, 1992. 2. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка.- М.: Финансы и статистика, 1982. 3. Сердюченко В.Я. Розробка алгоритмів та програмування на мові Turbo Pascal: Навчальний посібник для техн. вузів - Х.: ВКП "Парітет" ЛТД, 1995. 4. Вирт Н. Алгоритмы + структуры данных = программы. - М.: Мир, 1985. 5. Гроного П. Программирование на языке Паскаль. - М.: Мир, 1982. Навчальне видання Робота з масивами. Використання процедур та функцій: Інструкція до лабораторної роботи №3 з курсу «Алгоритмічні мови і програмування» для студентів спеціальності 6.0914 «Комп’ютеризовані системи, автоматика і управління» Укладачі: Гордійчук Роман Анатолійович, Отенко Віктор Іванович, Лагун Андрій Едуардович.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!