
- •§ 1. Поняття про інформаційне моделювання
- •Опорний конспект
- •§ 2. Етапи розв’язання задач на комп’ютері
- •§ 3. Середовища розробки проектів
- •§ 4. Властивості елементів керування
- •§ 1. Поняття про інформаційне моделювання 2
- •Контрольна робота № 1
- •§ 5. Створення проектів
- •§ 6. Основні поняття мови програмування
- •9. Процедура кнопки «Обчислити» для задачі про калькулятор.
- •§ 7. Алгоритм та його властивості
- •Запитання
- •§ 8. Різновиди алгоритмів
- •Запитання
- •§ 9. Типи даних
- •§ 10. Лінійні програми
- •Запитання та вправи
- •Контрольна робота № 2
- •§11. Введення даних і виведення результатів
- •§ 12. Текстові файли даних
- •§ 13. Програми з розгалуженням
- •§ 1. Поняття про інформаційне моделювання 2
- •Запитання
- •§ 14. Елементи керування прапорці і перемикачі
- •§ 15. Алгоритмічна конструкція вибір
- •Контрольна робота № 3
- •§ 16*. Списки
- •§ 17. Підпрограми. Функції користувача
- •§ 18. Підпрограми. Процедури користувача
- •§ 19. Цикли. Цикл з параметром
- •§ 20. Задачі пошуку даних. Цикл «доки»
- •§ 21. Застосування циклів
- •Контрольна робота № 4
- •Розділ 2. Складені структури даних
- •§ 22. Одновимірні масиви. Створення масивів
- •§ 23. Пошук даних в одновимірному масиві
- •1. Пошук даних у масиві за заданим критерієм.
- •5. Проект «На метеостанції». Застосування масивів і процедур користувача у vb.
- •§ 24. Впорядкування одновимірного масиву
- •§ 1. Поняття про інформаційне моделювання 2
- •4. Моделювання предметних областей за допомогою масивів.
- •§ 25. Двовимірні масиви. Створення масивів
- •§ 26*. Опрацювання двовимірних масивів
- •1. Елементи керування DataGridView (vb) та DataGrid (vba).
- •Контрольна робота № 5
- •§ 27. Опрацювання текстових даних
- •§ 28. Структури даних (записи)
- •§ 1. Поняття про інформаційне моделювання 2
- •§ 29. Файли даних прямого доступу
- •5. Vb. Команди для роботи з файлами даних прямого доступу.
- •§ 30. Застосування файлів даних послідовного доступу
- •§ 31. Графіка у vb
- •§ 32. Поняття про об’єктно-орієнтоване програмування
- •Розділ 3. Задачі
- •Складніші задачі*
- •Розділ 4. Vba у програмах пакету ms office
- •§ 33. Застосування vba у ms word
- •§ 34. Vba у програмі ms excell
- •§ 35. Задача про облік товарів на складі
- •§ 36. Розв’язування математичних задач
- •§ 37. Робота 3 базами даних
- •Список літератури
- •§ 1. Поняття про інформаційне моделювання 2
§ 20. Задачі пошуку даних. Цикл «доки»
Пошук потрібних значень серед великої кількості даних — одне з найважливіших завдань інформатики. У цьому параграфі розглянемо типові задачі пошуку даних.
1. Розгалуження в циклі, або як знайти значення, які задовольняють деяку умову (критерій пошуку). Пошук даних виконують за допомогою алгоритмічної конструкції «розгалуження в циклі». Вона є комбінацією циклу і розгалуження. Розгалуження в циклі утворюють шляхом використання команди розгалуження If чи Select Case у циклі For або в іншому циклі.
Задача 1. Послідовність десяти чисел задана формулою ai = і2-30, і = 1,2, ..., 10. Вивести послідовність у вигляді таблиці: номер числа, його значення. Додатково виконати пошук даних, що задовольняють критерії, сформульовані у завданнях.
Завдання 1. Вивести лише додатні елементи послідовності.
Завдання 2. Вивести елементи послідовності, що задовольняють умову 10 < а, < 50.
Завдання 3. Вивести всі елементи й обчислити кількість (k) від’ємних елементів.
Завдання 4. Вивести всі елементи і суму (s) додатних елементів.
Завдання 5. Вивести всі елементи і середнє арифметичне додатних елементів.
Завдання 6*. Скільки в послідовності є елементів, більших за середнє арифметичне значення додатних елементів?
Розв’язування. В основу проекту покладемо код розв’язування завдання 1. Код призначимо деякій кнопці на формі. Для виведення таблиці застосуємо багаторядкове текстове поле TextBox1. У цикл For помістимо команду if з метою пошуку додатних елементів послідовності. Критерій пошуку моделюємо нерівністю а > 0.
’ Послідовність чисел
Dim і, n, a, t
n = InputВох("Введіть кількість чисел")
TextBox1.Text =""
For і = 1 То n
а = і ^ 2 – 30
If а > 0 Then
t= Str(i) + ” "+Str(a)
TextBox1.Тext = TextBox1.Text +1 + vbCr VBA
End If
Next і
Переконайтеся, що результат буде такий:
6 |
6 |
7 |
19 |
8 |
34 |
9 |
51 |
10 |
70 |
Завдання 2-6 виконайте самостійно, використовуючи різні способи виведення результатів. Головне — правильно записати критерій пошуку і перед циклом задати початкові значення змінним, як: змінюватимемо в циклі, наприклад, k = 0 чи s = 0. Ключ-підказка: виберіть з наступного списку відповідну команду розгалуження, яку треба вставити в цикл, щоб отримати потрібний код:
If а > 0 Then s = s+ а
If а < 0 Then k = k + 1
If а > 10 And a < 50 Then <вивести і, a>
If a > 0 Then s = s+a:k = k + 1
2. Як знайти найбільше (найменше) дане у послідовності, а також номер такого даного. Типовою задачею інформатики е аналіз даних з метою знаходження найбільшого чи найменшого значення. Ця задача є моделлю багатьох реальних задач, наприклад:
визначити найбільший дохід компанії за певний період;
дослідити, в якому році (місяці) були найбільші втрати;
з’ясувати, хто з менеджерів компанії реалізував товарів на найбільшу суму тощо.
Розглянемо задачу, яка може слугувати математичною моделлю вищеописаних задач.
Задача 2. У послідовності чисел, заданих формулою ai = і2 - 5і + 5, де і = 1, 2, 3, ..., 6, визначити найбільше число і його номер.
Розв’язування. Маємо таку послідовність: 1, -1, -1, 1, 5, 11. Переконайтеся, що найбільше число тут — 11, а його номер у послідовності — 6. Однак формальний виконавець, яким є комп’ютер, очей не має і чисел не бачить. Щоб розв’язати цю задачу, він повинен «переглянути» і проаналізувати всі числа без винятку (запам’ятайте цей принцип).
Спочатку виконавець робить припущення, що найбільше число — перше і номер найбільшого числа, відповідно, 1.
Перше число і номер 1 він приймає за еталон, які зберігає у змінних шах (число) і nomer (номер).
За допомогою циклу виконавець «переглядає» всі інші числа і порівнює їх з еталоном. Якщо він виявить число, більше за еталон (оце удача!), то змінює еталон (max) на знайдене число, значення номера (nomer) змінює на нове і переглядає числа далі, порівнюючи їх уже з новим еталоном. Коли цикл завершиться, змінні max і птах міститимуть розв’язок задачі.
Розглянемо код описаного вище алгоритму:
' Найбільше число і його номер Dim і, n, a, max, nomer
n = InputВох(“Введіть кількість чисел”)
nomer = 1
max = nomer ^2 - 5* nomer + 5
For і = 2 To n
а = і^2-5*і + 5
<вивести і, a>
If a > max Then max = a : nomer = і
Next і
<вивести nomer, max>
Завдання 1. Реалізуйте задачу 2 як проект на формі.
Завдання 2. Визначіть мінімальний елемент і його номер.
Завдання 3*. Визначіть суму мінімального і максимального елементів. Код має містити лише один цикл.
4. Цикл «доки». Команда циклу While. Розглянемо ще одну конструкцію циклу, яку називають цикл «доки» (інші назви — цикл While, цикл з умовою). Цей цикл вважають універсальним. Він призначений для реалізації циклів як з відомою, так і з невідомою заздалегідь кількістю повторень. Цикл має такий загальний вигляд у VB:
While <логічний вираз> <серія команд> End While |
і такий у VBA:
While <логічний вираз> <серія команд> Wend |
Якщо у середовищі VB написати слово Wend, середовище автоматично замінить його на End While (без фіксування помилки).
Дія команди. Серія команд виконується в циклі, доки значення логічного виразу є істинне. Істинний логічний вираз описує умову продовження циклу.
Розгляньте графічні схеми циклу «доки» (рис. 1.25).
Запишемо код виведення таблиці квадратів чисел від 10 до 20 за і допомогою команди While:
і = 10
While і <= 20
<вивести і, і ^ 2>
і = і + 1
Wend
Рис. 1.25. Графічні схеми циклу «доки»
Правило 1. Усередині тіла циклу «доки» має бути команда зміни значення параметра (тут і = і + 1) чи деякого виразу.
Правило 2. Перед командою циклу має бути команда, що задає початкове значення параметра (тут і = 10) чи деякої змінної.
Задача 3. Скласти графічні схеми і код для обчислення суми чисел від 1 до 100, використавши команду While.
Розв’язування. Графічні схеми алгоритму зображені на рис. 1.26.
Рис. 1.26. Графічні схеми алгоритму обчислення суми чисел
Відповідний код має такий вигляд:
'Сума чисел
Dim Число As Integer, Сума As Integer, n As Integer
n = InputВох("Введіть n")
Сума = 0
Число = 1
While Число <= n
Сума = Сума + Число
Число = Число +1
Wend
<вивести Сума>
Завдання 1. Реалізуйте код розв’язування задачі 3.
Завдання 2. Обчисліть суму парних чисел від 20 до 100, використавши команду While.
Завдання 3. Обчисліть 10!, використовуючи команду While. Підказка: 10!=1*2*3*...*10 (добуток перших десяти чисел).
Завдання 4. Обчисліть суму, добуток і кількість парних чисел від 10 до ЗО, використавши одну команду While.
Завдання 5*. У текстовому файлі є стовпчик з невідомою кількістю чисел. Обчислити їх суму. Підказка: застосуйте такий фрагмент коду, де Eof — стандартна логічна функція «кінець файлу»:
s = 0
While Not Eof(nf)
Input #nf, z
s = s + z
Wend
<
вивести
s>
Команду While тут читають так: доки не кінець файлу з номером nf, то зчитувати з файлу одне значення і додавати його до s. У цьому циклі кількість повторень заздалегідь невідома, але їх можна визначити в процесі виконання циклу. Зробіть це.
5. Табулювання функції. Табулювання функції — це побудова таблиці зі значеннями аргументу і функції, де аргумент змінюється на деякому проміжку з деяким кроком.
Задача 4. Протабулювати функцію у = х3 на проміжку [-1; 1], змінюючи значення аргументу на крок 0,25, тобто для таких значень аргументу: -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1. Застосувати підпрограму-функцію. Результати подати у вигляді таблиці. Обчислити суму, добуток і кількість додатних значень функції у.
Розв’язування. Головний код помістіть у процедуру Sub Маіn(), а перед ним розташуйте функцію у(х).
Function у(х)
у = х ^ 3
End Function
' Табулювання функції (головний код)
Dim s, k, d, х, у1, xk As Single
s = 0:k = 0:d = 1
x = -1 : xk = 1 : h = 0.25
While x <= xk
y1 = y(x)
<вивести X, y1>
If y1 >0 Then
s = s + y1:d = d*y1:k = k + 1
End If
x = x + h
Wend
<вивести "s = " + str(s) + " d = " + str(d) + " k = " + str(k)>
Виведення результатів організуйте командами Console.WriteLine (у VB) чи Debug.WriteLine (у VB чи VBA) — отримаєте результати, близькі до тих, що подані на рисунку поряд з умовою задачі.
Завдання 1. Модифікуйте код для визначення найбільшого значення функції і значення аргументу, для якого воно досягається.
Завдання 2. Модифікуйте код, застосувавши цикл «для» замість циклу «доки».
Висновок. Задачі пошуку потрібних даних розв’язують за допомогою конструкції «розгалуження в циклі»: циклу For або While, в який для аналізу даних поміщено команду If.
Довідка. Окрім команд циклів For і While, є група команд циклів Do-Loop. їх ми не розглядатимемо.
Вправи
1. Які значення змінних s і d після виконання кодів:
а) s=0 : x=1 |
б) |
d = 1 |
While х <= 5 |
|
m = 6 : x = 1 |
s = s + x |
|
While x <= m |
х = х + 2 |
|
d = d*x:x = x + m/2 |
Wend |
|
Wend |
в) d = 1 : a = 2 |
г) |
s = 0 : x = 10 |
While а < 6 |
|
While x > 0 |
d=d*a:a=a+1 |
|
s = s + x:x = x-3 |
Wend |
|
Wend |
2. Використовуючи команду циклу While, виведіть у вигляді таблиці значень і, at послідовність чисел at = і2 - 36, де і = 1, 2, ..., 10 та:
а) визначіть суму додатних елементів послідовності;
б) кількість від’ємних елементів;
в) середнє арифметичне додатних елементів.
3*. Використовуючи цикл While, серед перших ста цілих чисел визначіть кількість парних чисел, які є:
а) кратні числу 3;
б) діляться без остачі на 3 і на 5.
4*. Розв’яжіть задачу № 9 свого варіанта з розділу «Задачі».
5**. Розв’яжіть задачу № 10 свого варіанта з розділу «Задачі».