Пошук даних у масиві. Вибирання елементів з масиву за певним критерієм


Як описати програму пошуку заданого елемента?
При опрацюванні табличних величин часто розв’язують завдання пошуку елемента, який відповідає деякій умові. Для розв’язування цього завдання можна, як у прикладах, розглянутих на попередніх уроках, переглядати кожний елемент масиву та підраховувати кількість входжень. Якщо така кількість дорівнює 0, то зазначеного елемента таблична величина не містить, якщо більше 0, то містить. Але такий підхід є нераціональним, особливо якщо кількість елементів дуже велика, наприклад, понад 1000, а збіг є вже серед перших елементів. У цьому разі використовують цикл while та виконують такі дії:
     1.      Уводять спеціальну логічну величину — прапорець, призначення якої полягатиме в тому, що її значення зберігатиме результат наявності чи відсутності такої величини в таблиці. Початкове значення цієї величини — false, яке означає, що шукане значення поки що не траплялось у масиві.
     2.      Переглядають усі елементи табличної величини, починаючи з першого, доти, доки не буде переглянуто всі елементи або знайдено елемент із потрібним значенням.
     3.      Якщо елемент знайдено, то змінюють значення прапорця на true та переривають виконання циклу. Нагадаємо, що для переривання виконання циклу використовують команду break.
     4.      Здійснюють виведення результату залежно від значення прапорця.
Якщо потрібно не просто визначити наявність елемента, а його номер у масиві чи списку даних, то вводять змінну, наприклад flag, для фіксування такого номера. Початкове значення змінній flag можна присвоїти 0 (у Free Pascal передбачено нумерацію елементів масиву з 1) або –1 (у Python передбачено нумерацію елементів масиву з 0). Якщо елемент буде знайдено, тоді змінній flag присвоюють його номер. Тоді ця змінна може слугувати прапорцем завершення перегляду елементів: якщо flag>0 (Free Pascal) flag>–1 (Python), тоді виконання циклу зупиняють.

Вправа 1. Пошук номера елемента.
Завдання. Створіть проект Номер елемента, у якому здійснюють пошук номера елемента лінійної таблиці з 10 цілих чисел, значення якого дорівнює її першому елементу.

Розробка проекту в середовищі програмування Lazarus
1. У папці Навчальні проекти своєї структури папок створіть папку Номер елемента.
2. Відкрийте середовище Lazarus і створіть новий проект. Розмістіть на екранній формі 


об’єкти, самостійно надайте значення їхнім властивостям.
3. Створіть процедуру опрацювання події Виконати. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: а — масив цілих чисел; i — номер (індекс) елемента масиву; flag — номер шуканого елемента.
var i, flag: integer;
а : array [1..10] of integer;
4. У вікні редактора коду запишіть команди введення значень елементів масиву, знаходження номера елемента та виведення його значення або повідомлення, що такого елемента не існує


5. Запустіть проект на виконання. Перевірте на контрольному прикладі, дібраному самостійно, чи відповідають умові завдання дії, пов’язані з об’єктами управління екранної форми. Якщо є помилки, виправте їх. Завершіть роботу з проектом і середовищем програмування, зберігши всі зміни.

Розробка проекту в середовищі Geany
1. Відкрийте середовище програмування Geany.
2. Створіть новий файл програми мовою програмування Python з іменем Номер елемента в папці Навчальні проекти своєї структури папок.
3. У вікні редактора коду введіть команди введення значень елементів масиву, знаходження номера елемента та виведення його значення або повідомлення, що такого елемента не існує.


4. Запустіть проект на виконання. Перевірте на контрольному прикладі, дібраному самостійно, чи відповідають умові завдання отримані результати. Якщо є помилки — виправте їх. Завершіть роботу з проектом і середовищем програмування, зберігши всі зміни.

Як описати програму пошуку елемента з найбільшим або найменшим значенням?
Для того щоб зрозуміти, як відбувається пошук найбільшого елемента деякої табличної величини, уявімо себе на місці виконавця алгоритму. Елементи табличної величини записані в пам’яті, доступ до комірок якої здійснюється за номерами елементів. Виконавець може одночасно відкривати доступ до однієї комірки. Нехай задано лінійну таблицю з n цілих чисел.


Виконаємо такий алгоритм:
1) прочитаємо з пам’яті перший елемент таблиці. Його значення дорівнює 5. Запам’ятаємо його як максимальне — надамо його значення величині max;
2) прочитаємо другий елемент таблиці. Його значення більше за max, тому «забудемо» про попереднє значення й запам’ятаємо значення max=6;
3) прочитаємо третій елемент таблиці. Його значення менше за max, тому можна приступати до наступного кроку без зміни значення max.
Продовжимо таким чином кроки алгоритму, поки не будуть переглянуті всі елементи лінійної таблиці до n включно. На кожній ітерації циклу в змінній max міститиметься найбільше значення з пройденої частини лінійної таблиці, а по завершенні циклу змінна max зберігатиме максимальне значення в усьому масиві.
Пошук найменшого елемента масиву здійснюють за аналогічним алгоритмом, знаходячи відповідно елемент (min), який є меншим від усіх переглянутих елементів.

Вправа 2. Різниця між найбільшим і найменшим.
Завдання. Створіть проект Випробування, у якому знаходять різницю між найбільшим і найменшим елементом лінійної таблиці з 10 дійсних чисел, які набувають значень від 5 до 10 випадково.

Розробка проекту в середовищі програмування Lazarus
1. У папці Навчальні проекти своєї структури папок створіть папку Випробування.
2. Відкрийте середовище Lazarus і створіть новий проект. Розмістіть на екранній формі 


об’єкти, самостійно надайте значення їхнім властивостям.
3. Створіть процедуру опрацювання події натиснення кнопки Знайти. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: а — масив дійсних чисел; i — номер (індекс) елемента масиву; max — найбільше значення серед елементів; min — найменше значення серед елементів.
var i : integer;
max, min : real;
а : array [1..10] of real;
4. У вікні редактора коду запишіть команди випадкового генерування елементів масиву та виведення їх у таблицю, пошуку найбільшого й найменшого елементів масиву, виведення різниці значень max і min 


Зауважте, для того щоб отримати випадкове дійсне число, яке відповідає умові 5<x<10, використано вираз: 10.0 random*5.0.
5. Запустіть проект на виконання. Перевірте, чи відповідають умові завдання дії, пов’язані з об’єктами управління екранної форми. Якщо є помилки — виправте їх.
6. Знайдіть на екранній формі найбільше та найменше значення елементів згенерованої таблиці. Обчисліть їхню різницю. Перевірте програму на наявність логічних помилок. Завершіть роботу з проектом і середовищем програмування, зберігши всі зміни.

Розробка проекту в середовищі Geany
1. Відкрийте середовище програмування Geany.
2. Створіть новий файл програми мовою програмування Python з іменем Випробування в папці Навчальні проекти своєї структури папок.
3. У вікні редактора коду запишіть команди випадкового генерування елементів масиву та виведення списком у вікні виконання проекту, пошуку найбільшого й найменшого елементів масиву, виведення різниці значень max і min 



Зауважте, для того щоб отримати випадкове дійсне число за умовою 5 < x < 10 з двома знаками після коми, використано вираз: round((10.0 – random.random()*5.0),2).
4. Запустіть проект на виконання. У згенерованому списку знайдіть найбільше та найменше значення елементів. Обчисліть їхню різницю. Перевірте програму на наявність логічних помилок.
5. Завершіть роботу з проектом і середовищем програмування, зберігши всі зміни.

Комментариев нет:

Отправить комментарий