Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБЩИЙ_файл_ПОСОБИЕ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
22.69 Mб
Скачать

Графічне подання вкладених циклічних обчислювальних процесів

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

На рис. 4.8 подано приклад схеми вкладеного циклу.

рис. 4.8. Внутрішній цикл вкладено у зовнішній

При кожному значенні параметра зовнішнього циклу i схеми (рис. 4.8) один раз виконається внутрішній цикл, а вказана в ньому дія повториться N разів. Оскільки параметр i послідовно набуває M значень (від 1 до M), то внутрішній цикл повториться також M разів, а вказана в ньому дія виконається * M разів.

На практиці вкладені цикли зустрічаються при побудові алгоритмів, у яких дії виконуються над елементами масивів (одновимірних, двохвимірних тощо). В економічних задачах – це товари одного типу на різних складах, ціни товарів різних видів, кількість товарів різних видів, проданих у різні дні, станки в кількох цехах заводу, випуск продукції у різні дні місяця тощо.

Приклад. Магазин продає товари N видів. Відомі найменування й ціна товару кожного виду. Скласти алгоритм упорядкування (відсортування) списку товарів за зростанням їхньої ціни для складання прайс-листу методом "бульбашки" (bubblesort).

При розв'язанні задачі використовуються такі дані:

Вхідні дані: N, Цінаi, Кількістьi, де i змінюється в межах від 1 до N, тобто масиви з іменами Ціна і Кількість.

При розв'язанні задачі використовуються такі дані:

Вхідні дані: N, Найменуванняі, Цінаi, де i змінюється в межах від 1 до N, тобто масиви з іменами Найменування і Ціна.

Проміжні дані: i, k, Цінадоп, Найменуваннядоп.

Результат: Впорядкований за зростанням масив цін товарів Ціна й відповідний йому масив найменувань товарів Найменування.

Ідея алгоритму полягає у тому, що виконується n-1 дія, тобто переглядів елементів масиву. При кожному послідовному перегляді елементів перший порівнюється з другим. Якщо виявиться, що перший елемент більший за другий (стоїть не на своєму місці), вони міняються місцями. У будь-якому випадку, після першого порівняння на другому місці знаходиться більший з перших двох елементів. Потім процес порівняння повторюється для другого й третього елементів, потім для третього та четвертого і т. д. Ця процедура продовжується доти, доки не буде здійснене порівняння всіх елементів.

У результаті перегляду один елемент буде відсортований (найбільший елемент знаходиться на останньому місці). Для наступного перегляду кількість елементів (а отже й порівнянь) зменшується на один. У результаті другого перегляду на передостанньому місці виявиться другий за величиною елемент. Потім відбуваються третій перегляд, четвертий і т. д., поки, нарешті, не буде здійснено n-1 перегляд. При кожному перегляді відсортовується один елемент. Отже, тепер всі елементи, крім першого поставлені на свої місця, а перший, як єдиний не має іншого вибору, тому й він стоїть на своєму місці. Відтак, всі елементи набору впорядковані.

Цей метод отримав назву "метод бульбашки", тому що виникає асоціація, ніби більші ("важчі") елементи поступово "опускаються" донизу, а менші (більш "легкі") – піднімаються вгору.

Словесно описати алгоритм можна так:

Ціни видів товарів можна подати як одновимірний масив з ім'ям Ціна. Він складається з N елементів:

Ціна1, Ціна2, … Цінаi, …, ЦінаN, i = 1, 2, …, N.

Назви видів товарів також можна подати як одновимірний масив з ім'ям Найменування. Він складається із N елементів:

Найменування1, Найменування2, , НайменуванняN, i = 1, 2, …, N.

Умова, яка перевіряється для кожної пари елементів масиву Ціна має вигляд:

Цінаі>Цінаi+1,

де і = 1, 2,…, k (і поточний елемент масиву)

k = n-1, n-2, …, 1 (k номер поточного перегляду, а також кількість порівнянь у перегляді).

Якщо умова виконується, то переставляються місцями елементи масиву Ціна (Цінаі і Цінаi+1) і відповідні їм елементи масиву Найменування (Найменуванняі і Найменуванняі+1). У протилежному разі послідовність елементів залишається незмінною.

Перестановка місцями двох елементів виконується за допомогою допоміжної величини Цінадоп, використовуючи три оператори присвоювання:

Цінадоп =Цінаі

Цінаі= Цінаі+1

Цінаі+1 =Цінадоп

Аналогічну перестановку виконують з елементами масиву Найменування

Найменуваннядоп = Найменуванняі

Найменуванняі+1 = Найменуванняі

Найменуванняі = Найменуваннядоп

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

Виходячи з опису алгоритму видно, що він є вкладеним циклічним алгоритмом. У зовнішньому циклі (Перегляди) виконуються перегляди елементів масиву (кількість повторень циклу (переглядів) k =N-1). У внутрішньому циклі виконується попарне порівняння елементів масиву і у випадку необхідності вони переставляються місцями. Кількість порівнянь у кожному циклі (перегляді) зменшується на 1 від k до 1.

У кожному циклі кількість повторень циклу відома, тому їх можна подати як цикли з параметром.

На рис. 4.9. наведена схема алгоритму впорядкування прай-листу за зростанням ціни товарів.

Рис. 4.9. Схема алгоритму впорядкування прай-листу за зростанням ціни товарів

Зображена на схемі послідовність дій задовольняє всім властивостям алгоритму. Це рекомендується перевірити самостійно.