- •§ 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
Контрольна робота № 5
Варіант 1
Запишіть значення елементів масиву А(4), якщо
For і = 1 То 4 : А(і) = 4 - 2* і: Next.
Оголосіть і створіть масив з прізвищами чотирьох друзів і масив з чотирма числовими даними про їхній зріст.
3а. Нарисуйте графічну схему алгоритму і складіть код, щоб визначити ім’я найвищого друга.
3б. Нарисуйте графічну схему алгоритму і складіть код для занесення в масив десяти значень аі=3sin2i та обчислення добутку і суми тих значень, які більші, ніж 1, і менші, ніж 2.
4*. Побудуйте і виведіть на екран двовимірний масив dij = 2icosj, і = 1, …, 4, j = 1, ..., 4. Обчисліть добуток його від’ємних елементів.
Додаткове завдання: обчисліть суму значень елементів рядка, що містить мінімальний елемент масиву.
Варіант 2
Запишіть значення елементів масиву В(5), якщо
For і = 1 То 5
В(і) = 8 - 3* і
Next.
Оголосіть і створіть масив з назвами трьох компаній і масив з трьома числовими даними, що означають кількість співробітників у компаніях.
3а. Нарисуйте графічну схему алгоритму і складіть код, щоб визначити назву найменшої компанії.
3б. Нарисуйте графічну схему алгоритму і складіть код для занесення в масив двадцяти значень ai=4sin3i обчислення середньоарифметичного тих значень, які більші, ніж -1, і менші, ніж 1.
4*. Створіть і виведіть на екран двовимірний масив dij = 3icos2j, і = 1, ..., 6, j = 1, ...,6. Обчисліть кількість додатних елементів у ньому.
Додаткове завдання: обчисліть суму значень елементів стовпця, к якому є найбільший елемент масиву.
§ 27. Опрацювання текстових даних
Історія людства — це історія становлення інформатики. Найбільш поширеною формою подання інформації є текстова. Вона передається від джерела до споживача в закодованій формі. Алфавіти української чи англійської мови — це відкриті (відомі усім) коди. Однак з давніх часів люди намагалися захищати важливу інформацію від несанкціонованого використання, створюючи закриті коди. Так виникла криптографія — наука про способи перетворення інформації (шифрування) з метою її захисту. Комп’ютер може аналізувати і перетворювати тексти. Для цього є тип даних, що називається String, а також текстові функції, які призначені для перетворення текстів. їх вивчатимемо у цьому параграфі.
VB і VBA. Оголошення текстових змінних. Комп’ютер не лише розв’язує задачі, де даними є числа. Розглянемо дані, значеннями яких є тексти (інший термін — рядки).
Конкретне текстове дане записують у лапках, наприклад, "Високий Замок", "Романець Ю. І." тощо. Текст нульової довжини зображають так: Текстове дане може бути присвоєне сталій або змінній.
Текстові змінні оголошують за допомогою команди Dim так:
Dim <змінна1> As String, <змінна2> As String,... |
Нагадаємо, що у VB змінні можна оголошувати списком.
Дані, оголошені як String, можуть бути досить великої довжини, наприклад, до 65535 символів у VBA і до двох мільярдів символів у VB.
VBA-довідка. Якщо відомо, що дані матимуть конкретну довжину чи їхня довжина не перевищуватиме деякої кількості символів, то змінні оголошують із зазначенням довжини. Наприклад,
Dim v As String*12
v = "Інформатика"
Це означає, що змінна v може мати не більше 12 символів.
VBA-довідка. У VBA є спосіб оголошення текстової змінної шляхом дописування символу $ до її назви. Командою Dim такі змінні вже не оголошують. Наприклад, дві текстові змінні t$ і s$ можна оголосити та надати їм значення так: t$ = "Київ": s$ =
VB і VBA. Дії з текстовими даними. Над текстовими даними визначена одна операція: додавання (інші назви — конкатенація, з’єднання). Символ операції + або &.
Якщо t1 = "3", a t2 = "4", то t1 + t2 дає "34".
Нехай t1 = "Новий", t2 = "рік". Розглянемо команду присвоєння s = t1 + t2. Змінна s набуде значення "Новийрік" (без пропуску між словами). Пропуск між словами можна створити так: s=t1+" " + t2 або треба набрати пропуск перед словом «рік» так: " рік". Тоді вираз t1 + t2 дасть результат "Новий рік".
Текстові дані можна порівнювати. Це використовують під час побудови логічних виразів у задачах відшукання даних. Є такі операції порівняння: =, <>, <, <=, >, >=.
Два тексти порівнюють зліва направо до перших різних символів. «Більшим» вважається той символ, який в алфавіті розташований далі (який має більший номер у таблиці кодів ASCII). У цій таблиці числові коди наступних символів зростають зліва направо:
..., 0, 1, 2, ..., 9, ..., А, В, С, ..., X, Y, Z а, Ь, с, .., у, z, ..., А, Б, В, ..., а, б, в, ...
Істинними є такі логічні вирази: "7" < "9", "А1"<"А2", "АВ" > "АА", "Галя" < "Роман", а хибними — "А" > "В", "В" = "Б", "СШ 15" > "СШ 91".
3. Типові задачі опрацювання текстів. Задачі опрацювання текстових даних можуть мати, наприклад, такі формулювання:
у списку прізвищ знайти ті, які починаються з літери «Д»;
текстове дане, що містить прізвище, ім’я, по батькові, замінити на дане з прізвищем та ініціалами;
текстове дане, що містить прізвище, ім’я, по батькові чи адресу особи ("вул. Миру, буд. 4, кв.6"), розділити на атоми (неподільні частини), тобто створити три окремі текстові дані;
закодувати деякий текст;
дослідити, чи деякий текст входить в інший текст;
у тексті вилучити зайві пропуски;
полічити кількість слів чи речень у тексті тощо.
Метод розв’язування таких задач полягає в організації доступу до кожного символу текстового даного. Алгоритм дій такий. Спочатку визначають довжину тексту. Потім записують команду циклу, в середині якої аналізують по черзі всі символи і виконують з ними потрібні за умовою задачі перетворення.
Розглянемо, наприклад, алгоритм розв’язування задачі, де з текстового даного, що містить прізвище, ім’я та по батькові, наприклад, z = "Новосад Юрій Іванович", треба вивести на екран тільки ім’я особи. Людина відповідь бачить: z1 = "Юрій", але комп’ютер (формальний виконавець) так робити не може.
Алгоритм розв’язування цієї та багатьох інших задач базується на понятті «відокремлювана». «Відокремлювачем» у цьому випадку є символ " " (пропуск). Задача зводиться до відшукання номера (k1) першого і номера (k2) другого пропуску в текстовому даному z. Не можна рахувати символи «вручну». Пошук виконують за допомогою текстових функцій. Шукане дане (ім’я) — це частина рядка, що міститься від k1+1-го символу до символу k2-1-го. Цю частину можна отримати за допомогою текстової функції.
Отже, щоб розв’язати задачу опрацювання текстового даного, потрібно знати можливості текстових функцій.
4. VB. Текстові функції. Нехай а, b, а1 — це змінні типу String; n, m — числові дані, g — масив даних типу String.
Увага! Нумерація символів у текстовому даному у VB починається від нуля.
Нехай змінній а командою а = "Інформатика" надано значення «Інформатика». Довжина рядка — 11 символів. Символ «І» має номер 0, «н» — 1 і т.д.
У таблиці 2.1 подано найважливіші текстові функції, застосовані до змінної а.
У VB текстові дані — це об’єкти класу String, а текстові функції — це властивості й методи цього класу. Звідси специфічна форма написання вказівника функції: <назва об’єкта>.<назва властивості чи методу>.
Таблиця 2.1. Текстові функції у VB
Функція |
Опис функції |
|
a.Length |
Довжина рядка а |
|
a.Substring(n) |
Частина рядка а, починаючи з позиції n, де відлік позицій ведеться від нуля |
|
a.Substring(n, m) |
Частина рядка а довжиною m символів, починаючи із символу n |
|
a.Substring(0,1) |
Перший символ рядка а |
|
a.IndexOf(b) |
Позиція входження рядка b у рядок а |
|
a.IndexOf(b, n) |
Позиція входження рядка b у рядок а, після позиції n |
|
a.Insert(n, b) |
Вставляє рядок b у рядок а перед позицією з номером n |
|
a.ToLower |
Дає рядок з рядкових літер рядка а |
|
a.Tollpper |
Дає рядок з прописних літер рядка а |
|
Int32.Parse(a) |
Повертає цілочисловий аналог символьного рядка |
|
Single.Parse(a) |
Повертає десяткове значення рядка |
|
c.ToString |
Переводить числове дане с в дане типу рядок |
|
a.Chars(n) |
Дає символ з рядка а, що є на позиції з номером n |
|
a.Remove(n, m) |
Дає рядок, що утворюється вилученням m символів з рядка а, починаючи з позиції n |
|
Chr(n) |
Дає символ з таблиці кодів ASCII за номером n |
|
Авс(<символ>) |
Дає номер символу в таблиці ASCII |
|
a.Trim |
Вилучає крайні пропуски в тексті а |
|
a.Split(b, n) |
Повертає масив значень типу String, який утворюється шляхом поділу рядка а на частини, де b є символом-розділювачем в рядку, a n — кількість елементів масиву |
|
a.Join(r, g) |
Утворює дане а типу String з масиву g, де r є символом-розділювачем |
|
Текстові функції можна застосовувати лише у виразах. Нехай змінній а надано значення "Інформатика". Розглянемо команди присвоєння і результати їх виконання, де до змінної а застосовано текстові функції (див. табл. 2.2).
Таблиця 2.2. Застосування текстових функцій у VB
Команда |
Результат |
n = a.Length |
n = 11 |
b = a.Substring(5) |
b = "матика" |
b = a.Substring(2, 5) |
b = "форма" |
n = a.IndexOf(“a”) |
n = 6 |
n = a.IndexOf(“a”, 7) |
n = 10 |
a1 = a.Insert(0, "К") |
a1 = "КІнформатика" |
a1 = a.ToLower |
a1 = "інформатика" |
a1 = a.ToUpper |
a1 = "ІНФОРМАТИКА" |
n= Int32.Parse("12345") |
n = 12345 |
s = Single.Parse("12.34") |
s= 12.34 |
a = 123.ToString |
a = "123" |
a1 = a.Chars(3) |
a1 = "o" |
a1 = a.Remove(2, 4) |
a1 = "Інатика" |
a = Chr(65) |
a = "A" |
n = Asc(“B”) |
n=66 |
b = "синій ".Trim |
b = "синій" |
g = a.Split(“p”, 2) |
g(0) = "Інфо", g(1) = "матика" |
a.Join(“,”, g) |
a = "Інфо,матика" |
a.Join(“”, g) |
a = "Інфоматика" |
Доступ до нульового символу текстового даного можна отримати так: a.Substring(0, 1). А до і-го символу так: a.Substring(i, 1).
Позицію пропуску (4) у даному b = "Юрій Новосад" визначить функція b.IndexOf(“ “). Тоді ім’я з цього даного можна виокремити так: b.Substring(0, b.IndexOf(“ “)), а прізвище так: b.Substring(b.IndexOf(" ") + 1).
Функції Split і Join використовують під час роботи з файлами даних, де буває потрібно замінити розділювач-пропуск між даними на розділювач-кому чи навпаки. Нехай з файлу зчитано дане-рядок, в якому окремі поля розмежовані пропусками. Створити дане-рядок, в якому ці поля будуть розмежовані комами. Фрагмент коду такий:
Dim a As String, g() As String
a = "Федір Микола Петро Василь"
g = a.Split(“ “, 4)
a = a.Join(“,”, g)
Отримаємо a = "Федір,Микола,Петро,Василь". Запишемо цей рядок у текстовий файл. Такий файл можна опрацьовувати засобами мови VB.
5. VBA. Текстові функції. Під час розв’язування багатьох задач потрібно вміти виокремлювати з текстового даного один символ чи певну кількість символів. Для цього, а також для інших перетворень над текстами використовують стандартні текстові функції. Розглянемо базовий набір функцій. Зверніть увагу, що нумерація символів у текстовому даному у VBA — від одиниці.
Таблиця 2.3. Текстові функції у VBA
Функція |
Опис функції |
Left(t, k) |
дає k перших символів у тексті t |
Right(t, k) |
повертає k останніх символів тексту t |
Mid(t, і, k) |
дає k символів тексту t, починаючи від символу з номером і |
Mid(t, i, 1) |
дає доступ до одного символу з номером і тексту t |
Len(t) |
визначає кількість символів тексту t |
Val(t) |
дане типу текст перетворює у числове |
Str(b) |
перетворює числове дане b у текст |
Instr(t, t1) |
дає номер позиції, з якої починається входження тексту t1 у текст t |
Chr(b) |
дає символ із таблиці ASCII, що є в ній під номером b |
Asc(символ) |
дає номер символу в таблиці кодів ASCII |
Trim(t) |
вилучає крайні пропуски в тексті t |
RTrim(t) |
вилучає пропуски в кінці тексту t |
LTrim(t) |
вилучає пропуски на початку тексту t |
Нехай змінна t має значення "Юрій Новосад". Тоді наведені нижче функції дадуть такі результати (див. табл. 2.4).
Таблиця 2.4. Застосування текстових функцій у VBA
Команда |
Результат |
Left(t, 4) |
"Юрій" |
Right(t, 7) |
"Новосад" |
Mid(t, 6, 1) |
"H" |
Len(t) |
12 |
Val(“124”) |
124 |
Str(124) |
"124" |
Instr(t," ") |
5 |
Chr(74) |
J |
Asc("J") |
74 |
Доступ до першого символу тексту t дають функції Left(t, 1) і Mid(t, 1,1), а до п’ятого — Mid(t,5,1). Номер (число 5) позиції пропуску у цьому тексті дає функція Instr(t," ").
Зауваження. Деякі функції з таблиці 2.3 (Len, Mid, Trim) можна використовувати і у VB.
6. VBA і VB. Застосування текстових функцій. Розглянемо дві задачі, де використовують текстові функції.
Задача 1. Дано текст t. Визначити кількість літер «о» у ньому.
Ознайомтеся з кодом розв’язування задачі 1.
'Кількість літер "о" у тексті
Dim ... 'оголосіть змінні самостійно
t = "Юрій Новосад"
k = Len(t) 'VBA і VB
k = t.Length ’лише VB
s = 0
For і = 1 To k
If Mid(t, i, 1) = "o" Then s = s + 1 'VBA і VB
If t.Substring(i -1,1) = "o" Then s = s + 1 'лише VB
Next і
<вивести s>
Завдання 1. Виконайте код і переконайтеся, що s = 2.
Завдання 2. Модифікуйте код так, щоб він підраховував у тексті кількість малих чи великих літер: а) «ю» і «о»; б) «ю» або «о».
Завдання 3. Визначіть, зі скількох слів складається текст.
Задача 2. Скласти програму для перетворення тексту за таким правилом: вилучити з деякого тексту, що буде введений з клавіатури, пропуски, коми і крапки, інші символи продублювати.
'Перетворення тексту
Dim a As String, b As String, с As String
Dim k As Integer, і As Integer
a = InputВох("Уведіть текст")
b =""
k = Len(a) 'VBA і VB
k = a. Length 'VB
For і = 1 To k
с = Mid(a, i, 1) 'VBA і VB
с = a.Substring(i - 1, 1) 'VB
If с <> And с <> And с <>"" Then b = b + с + с
Next і
<вивести b>
Завдання 1. Виконайте програму.
Завдання 2. У деякому тексті замініть: а) усі букви «а» — ш. «б», б*) усі букви «а» — на «б», а «б» — на «в».
7. VBA і VB. Криптографія. Розглянемо основи криптографії (науки про шифрування). У Давньому Римі застосовували шифр Цезаря: кожну літеру тексту замінювали на третю після неї літеру алфавіту, записаного по колу. Слово «Цезар» писали так: «Щзйгу». Такий шифр тепер називають простим шифром зі зміщенням на три символи.
Розкриття шифрів називають криптоаналізом. Значним досягненням англійських учених під час Другої світової війни і першим ефективним застосуванням електронних машин було розшифрування у 1943 р німецьких стратегічних шифрів за допомогою машини «Колоссус», ще значно пришвидшило закінчення війни і поразку Німеччини.
Різні способи захисту інформації використовують і в наш час. зокрема, в банківській справі, де через комп’ютерні мережі пересилають контракти, платіжні документи, підписи тощо.
Числовий код деякого символу можна отримати за допомогою функції Asc(chmboh). Зворотну дію виконує функція Chr(число).
Задача 3. Деяке повідомлення закодуйте простим шифром з: зміщенням 4.
'Шифр Цезаря
а = "Юстас - Центру і т.д."
b =""
m = 4 'Зміщення
k = Len(a) 'VBA і VB
k = a.Length 'VB
For і = 1 To k
с = Mid(a, i, 1) 'VBA і VB
с = a.Substring(i - 1,1) 'VB
b = b + Chr(Asc(c) + m)
Next і
<вивести b>
Зауваження. Ви знаєте, що у VB нумерація символів починається від нуля. Тому, якщо задано цикл For і = 1 То k, то функція доступу до поточного символу повинна мати такий вигляд: a.Substring(i —1,1). Якщо ж цикл записати інакше, наприклад, For і = 0 То k — 1, то функцію треба використати так: a.Substring(i, 1).
Завдання 1. Реалізуйте код розв’язування задачі 3.
Завдання 2. Розшифруйте повідомлення Ь.
Завдання 3*. Зашифруйте текст складнішим шифром: перший символ шифруйте зі зміщенням т = 4 символи, наступні символи шифруйте, нарощуючи зміщення на величину г = 2.
8*. VB. Час і дата. Стандартна змінна TimeString містить поточний час комп’ютерного годинника у вигляді "година:хвилина:секунда", наприклад, "15:35:26" або "00:00:00".
Сьогоднішню дату у форматі #місяць/день/рік година:хвилина:секунда# отримують так:
Dim datel As Date = Date.Now.
Деяку фіксовану дату і час описують так (час можна опустити):
Dim date2 As Date = #3/6/2012 16:12:23#.
Date є класом, що характеризується такими полями: Date (дата), Day (день місяця), DayOfWeek (номер дня тижня), DayOfYear (номер дня року), Month (номер місяця), Hour (година), Minute (хвилина), Second (секунда) та певними методами (див. довідку). Datel і date2 — екземпляри класу Date. Поля дають доступ до всіх компонент дати і часу, наприклад, date2.Month = 3, date2.Minute = 12.
9*. VBA. Час і дата. Стандартна змінна Time у VBA містить поточний час комп’ютерного годинника у вигляді ”година:хвилина:секунда", наприклад, "15:35:26" або "00:00:00".
Задати новий час годиннику можна за допомогою команди присвоєння так: t = "12:10:00": Time=t.
Стандартна змінна Date у VBA містить поточну дату у вигляді “місяць/день/рік”, наприклад, ”03/06/2012" — 6 березня 2012 року або у форматі "день/місяць /рік" (залежно від налаштувань операційної системи).
Системну дату у комп’ютері можна змінити у VBA командою присвоєння: Date = "12/31/2012" або Date = "31/12/2012”.
Будь-яку компоненту дати або часу у VBA можна визначити за допомогою стандартних текстових функцій. Наприклад, числовій змінній m надамо значення поточної хвилини так:
m = Val(Mid(Time,4,2)).
Стандартна числова змінна Timer містить кількість секунд, як: минули після опівночі. Вона дає змогу вимірювати тривалість виконання різних фрагментів програми.
10.
VB.
Елемент
керування Timer.
Елемент
керування
призначений
для ініціювання події таймера Tick
через
однакові інтервали часу, що вимірюється
в мілісекундах (1000
мс
=
1 с).
Інтервал задає користувач як
властивість Interval
таймера.
Таймер дає змогу запрограмувати ефекти блимання об’єктів на формі, накласти обмеження на час виконання користувачем певних дій, наприклад, під час тестування тощо.
Таймер вставляють на форму з панелі Toolbox, але під час виконання проекту він на ній не відображатиметься. У конструкторі він розташовуватиметься під формою.
Появу і зникнення через 1 с об’єкта на формі можна запрограмувати, двічі клацнувши на таймері, так:
If об’єкт.Visible = True Then об’єкт.Visible = False Else об’єкт.Visible = True.
У конструкторі треба задати властивість Interval таймера як 1000. Цей інтервал можна збільшувати (для уповільнення миготіння) чи зменшувати програмно, наприклад, так:
Timerl.Interval = Timer1.Interval + 1000.
Вправи
VB. Наведіть результати застосування текстових функцій з пункту 4 до змінної а зі значенням «Література».
VBA. Наведіть результати застосування текстових функцій з пункту 5 до змінної t зі значенням «Суспільство».
Розв’яжіть задачу № 15 з розділу «Задачі».
Розв’яжіть задачу № 16 з розділу «Задачі».
5*. Визначіть і виведіть значення:
а) поточної секунди;
б) поточної години;
в) поточного місяця;
г) поточного дня;
д) поточного року.
6. Запишіть команду таймера для пришвидшення миготіння деякого об’єкта на формі.
7. Поекспериментуйте з двома-трьома таймерами. Придумайте сценарій їх використання.
