- •§ 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
§ 21. Застосування циклів
У цьому параграфі розглянемо метод перебирання варіантів і алгоритмічну конструкцію «вкладені цикли», обчислення за рекурентною формулою, метод пошуку даних у списку, а також алгоритм визначення простих чисел.
1. Вкладені цикли, або як визначити щасливі числа. Розглянемо задачі, які розв’язують методом перебирання й аналізу всіх можливих варіантів (методом перебору).
Задача 1. Скільки є «щасливих» чисел серед чотиризначних з діапазону від 1000 до 9999? «Щасливим» вважають число, якщо сума перших двох цифр дорівнює сумі двох останніх, наприклад, 4527.
Розв’язування. Нехай значення чотирьох цифр у числі (зліва направо) є і, j, k, т. Щасливе число — це число, для якого виконується умова і + j = k + т. Числа j, k, т можуть набувати значення від 0 до 9, а число і — від 1 до 9. Чисел є 9000. Перебрати і проаналізувати всі числа можна за допомогою конструкції «вкладені цикли For». Розгляньте код розв’язування задачі.
'Щасливі числа
Dim s, і, j, k, m As Integer
s = 0 's - кількість шуканих чисел
For і = 1 То 9
For j = 0 То 9
For k = 0 То 9
For m = 0 То 9
If і + j = k + m Then s = s + 1
Next m
Next k
Next j
Next і
<вивести s>
Завдання 1. Розв’яжіть задачу 1 в консольному режимі.
Завдання 2. Розв’яжіть задачу 1 для шестизначних чисел.
Завдання 3. Виведіть всі чотиризначні числа, сума цифр яких дорівнює добутку цифр, наприклад, 1421. Ключ до розв’язку: шукані числа (для яких виконується умова i+j+k+m=i*j*k*m) дасть змінна b, де b = 1000 * і + 100 * j + 10 * k + m.
2. Поняття про рекурентні формули, або як полічити кроликів. У XIII столітті італійський математик Фібоначчі побудував математичну модель (одну з можливих) розмноження кроликів. Він зробив такі припущення: у деякому місяці народилась пара кроликів, кролики починають розмножуватися на третій місяць від народження так: кожна пара плодить одну пару кроликів щомісяця. Смертність кроликів не розглядається.
Задача 2. Побудувати таблицю, що демонструє ріст популяції кроликів, починаючи з третього місяця до кінця року. Скільки кроликів буде через 12 місяців?
Розв’язування. Розглянемо послідовність чисел, де перші два числа — це 1 (оскільки першого і другого місяців є лише одна пара кроликів).
Третього місяця буде дві пари кроликів (народиться одна пара кроликів), четвертого — три (народиться ще одна пара від найстарших кроликів, а молодша пара потомства ще не дала).
П’ятого місяця буде п’ять пар (до трьох попередніх пар додадуться дві новонароджені пари від старших і молодших пар кроликів, а наймолодша пара потомства ще не дала) і т. д.
Отримаємо таку послідовність чисел: 1, 1, 2, 3, 5. Видно, що кожне наступне число є сумою двох попередніх. Такі числа називають числами Фібоначчі.
Математична модель задачі. Математично розв’язок задачі описують співвідношенням (формулою, рівнянням), яке називають рекурентним або ітераційним:
ап =an—1+an-2, де n — 3, 4, ..., 12, а1=1, a2=1.
У цій рекурентній формулі кожне наступне значення визначається через два попередні.
Алгоритм обчислення десяти наступних чисел: а3, а4,..., а11, а12 за наведеним рекурентним рівнянням такий:
а3 = а2 + а1;
а4 = а3 + а2;
а5 = а4 + а3;
…
a12 = а11 + а10.
Кодування. Для реалізації алгоритму потрібні три змінні: дві (b, а) — для відомих значень (аn-1; аn-2) і третя (с) — для шуканого значення (ап). Код буде такий:
’ Числа Фібоначчі
<вивести "Місяці Пар кроликів">;
Dim а, b, с
а = 1 : b = 1
For n = 3 То 12
с = b + а : <вивести n, с>
a = b 'змінна а отримує наступне значення
b = с 'змінна b отримує наступне значення
Next n
Результати. Отримаємо таблицю, що демонструє числа Фібоначчі та ріст популяції кроликів, починаючи з третього місяця.
Завдання 1. Виконайте код і переконайтеся, що наприкінці року пар кроликів буде 144.
З
авдання
2*.
Модифікуйте
рекурентне рівняння і код для такої
умови: кролики живуть 6
місяців.
З*. Як з’ясувати, чи повторюється деяке прізвище у списку. Розглянемо алгоритм пошуку потрібних даних у списку.
Задача 3. У список введено прізвища декількох осіб, які можуть повторюватися. Перевірити, чи повторюється задане прізвище у списку. Якщо так, то скільки разів.
Розв’язування. Вставимо на форму такі елементи керування: список ListBox1, два поля і дві кнопки. Список з прізвищами створимо за допомогою кнопки «Створити список» (див. тему «Списки») у VBA або як колекцію в конструкторі форми у VB. Поле TextBox1 призначене для задания критерію пошуку — прізвища, яке перевірятимемо, чи воно повторюється. Поле TextBox2 призначене для виведення повідомлення про результати пошуку (кількість повторень прізвища у списку), наприклад, «2 у списку». В коді кнопки «Перевірити» реалізуємо алгоритм перегляду списку і пошуку конкретного прізвища з підрахунком кількості повторень цього прізвища у списку.
У VB код кнопки «Перевірити» має такий вигляд:
Dim і As Integer, к As Integer
к = 0 'к - кількість повторень прізвища у списку
For і = 1 То ListBoxl.Items.Count
If ListBoxl.Items.Item(i -1) = TextBox1.Text Then k = k + 1
Next
TextBox2.Text = Str(k) + " у списку"
У VBA код кнопки «Перевірити» має такий вигляд:
Dim і As Integer, k As Integer
k = 0 'k - кількість повторень прізвища у списку
For і = 1 То ListBoxl.ListCount
If ListBoxl.List(i -1) = TextBox1 .Text Then k = k + 1
Next
TextBox2.Text = Str(k) + " у списку"
Завдання 1. Реалізуйте проект розв’язування задачі 2. Додаткове завдання: прізвища з першого списку занесіть без повторень у другий список.
Завдання 2*. Визначіть, скільки разів кожне прізвище трапляється у першому списку.
Завдання 3*. З’ясуйте, яке прізвище найчастіше трапляється у першому списку.
4*. Змінні-прапорці, або як з’ясувати, чи ціле число просте. Прості числа діляться лише на 1 і на себе.
Задача 4. Визначити і вивести на екран всі прості числа від 3 до 100: 3, 5, 7, 11,..., 97.
Розв’язування. Треба послідовно проаналізувати всі числа. Не розглядатимемо парні числа, бо вони непрості. Кожне непарне число і на парні числа націло не ділиться, тому перевіримо, чи воно ділиться націло на непарні числа 3, 5, 7, 9, ..., і / 2.
Розглянемо додаткову змінну flag типу boolean, яка сигналізуватиме про те, що число просте. Якщо число ділиться націло на інше, то воно непросте, змінній flag надаємо значення false і аналізуємо наступне число. Якщо число не ділиться націло на деяке непарне число, то перевіряємо, чи воно ділиться націло на наступне непарне число. Якщо після всіх перевірок flag=true (а це і є «сигнал», що число просте), то виведемо на екран число, яке розглядаємо.
Словесному опису алгоритму відповідає такий код:
Dim і, n As Integer, flag As Boolean
For і = 3 To 100
If і mod 2 = 1 Then 'Розглядаємо лише непарні числа
flag = true 'Це ознака простого числа
n = 3 'Аналізуємо ділення на всі непарні числа
While n < і / 2 And flag
If і mod n = 0 Then flag = false Else n = n + 2
Wend
If flag = true Then <вивести i>
End If
Next і
Змінні, які сигналізують про настання деякої події, у програмуванні називають змінними-прапорцями.
Завдання 1. Виведіть прості числа: а) у список; б) у файл.
Завдання 2*. Створіть інший код розв’язування задачі 4.
Вправи
Виведіть всі двозначні числа, які діляться на 3 і на 5.
Визначіть кількість тризначних чисел, сума цифр яких дорівнює заданому числу л.
Виведіть усі числа Армстронга з першої тисячі. Число Армстронга — це число, сума кубів цифр якого дорівнює цьому числу.
Нехай СТО, СОТ і ТОС — тризначні числа такі, що СТО 4- COT = TOC. Визначіть цифри С, Т. О. Ключ: СТО = С * 100 + Т * 10 + О.
Згенеруйте і виведіть послідовність чисел за таким правилом:
ап = 2аn-1 + аn-2, де п = 3, 4, ..., 12, a1 = 1, а2 = 1.
6*. Обчисліть наближено площу під кривою у = sinx на проміжку х ≥ 0 і х ≤ π методом: а) Монте-Карло; б) «лівих прямокутників» (про суть і формули методів дізнайтеся з мережі).
7*. Розв’яжіть наближено рівняння 2пх = 1 + sinx а) методом простих ітерацій; б) ітераційним методом Ньютона (дані знайдіть у мережі).
