Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Візуал Бейсік 2010 Глінський.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.12 Mб
Скачать

Контрольна робота № 5

Варіант 1

  1. Запишіть значення елементів масиву А(4), якщо

For і = 1 То 4 : А(і) = 4 - 2* і: Next.

  1. Оголосіть і створіть масив з прізвищами чотирьох друзів і масив з чотирма числовими даними про їхній зріст.

3а. Нарисуйте графічну схему алгоритму і складіть код, щоб визна­чити ім’я найвищого друга.

3б. Нарисуйте графічну схему алгоритму і складіть код для зане­сення в масив десяти значень аі=3sin2i та обчислення добутку і суми тих значень, які більші, ніж 1, і менші, ніж 2.

4*. Побудуйте і виведіть на екран двовимірний масив dij = 2icosj, і = 1, …, 4, j = 1, ..., 4. Обчисліть добуток його від’ємних елементів.

Додаткове завдання: обчисліть суму значень елементів рядка, що містить мінімальний елемент масиву.

Варіант 2

  1. Запишіть значення елементів масиву В(5), якщо

For і = 1 То 5

В(і) = 8 - 3* і

Next.

  1. Оголосіть і створіть масив з назвами трьох компаній і масив з трьома числовими даними, що означають кількість співробітни­ків у компаніях.

3а. Нарисуйте графічну схему алгоритму і складіть код, щоб визна­чити назву найменшої компанії.

3б. Нарисуйте графічну схему алгоритму і складіть код для зане­сення в масив двадцяти значень ai=4sin3i обчислення середньо­арифметичного тих значень, які більші, ніж -1, і менші, ніж 1.

4*. Створіть і виведіть на екран двовимірний масив dij = 3icos2j, і = 1, ..., 6, j = 1, ...,6. Обчисліть кількість додатних елементів у ньому.

Додаткове завдання: обчисліть суму значень елементів стовпця, к якому є найбільший елемент масиву.

§ 27. Опрацювання текстових даних

Історія людства — це історія становлення інформатики. Най­більш поширеною формою подання інформації є текстова. Вона передається від джерела до споживача в закодованій формі. Ал­фавіти української чи англійської мови — це відкриті (відомі усім) коди. Однак з давніх часів люди намагалися захищати важливу інформацію від несанкціонованого використання, ство­рюючи закриті коди. Так виникла криптографія — наука про способи перетворення інформації (шифрування) з метою її за­хисту. Комп’ютер може аналізувати і перетворювати тексти. Для цього є тип даних, що називається String, а також текстові функції, які призначені для перетворення текстів. їх вивчатиме­мо у цьому параграфі.

  1. 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$ =

  1. 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. Типові задачі опрацювання текстів. Задачі опрацювання тек­стових даних можуть мати, наприклад, такі формулювання:

  1. у списку прізвищ знайти ті, які починаються з літери «Д»;

  2. текстове дане, що містить прізвище, ім’я, по батькові, заміни­ти на дане з прізвищем та ініціалами;

  3. текстове дане, що містить прізвище, ім’я, по батькові чи ад­ресу особи ("вул. Миру, буд. 4, кв.6"), розділити на атоми (не­подільні частини), тобто створити три окремі текстові дані;

  4. закодувати деякий текст;

  5. дослідити, чи деякий текст входить в інший текст;

  6. у тексті вилучити зайві пропуски;

  7. полічити кількість слів чи речень у тексті тощо.

Метод розв’язування таких задач полягає в організації доступу до кожного символу текстового даного. Алгоритм дій такий. Споча­тку визначають довжину тексту. Потім записують команду циклу, в середині якої аналізують по черзі всі символи і виконують з ними потрібні за умовою задачі перетворення.

Розглянемо, наприклад, алгоритм розв’язування задачі, де з те­кстового даного, що містить прізвище, ім’я та по батькові, наприк­лад, 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.

Вправи

  1. VB. Наведіть результати застосування текстових функцій з пункту 4 до змінної а зі значенням «Література».

  2. VBA. Наведіть результати застосування текстових функцій з пункту 5 до змінної t зі значенням «Суспільство».

  3. Розв’яжіть задачу № 15 з розділу «Задачі».

  4. Розв’яжіть задачу № 16 з розділу «Задачі».

5*. Визначіть і виведіть значення:

а) поточної секунди;

б) поточної години;

в) поточного місяця;

г) поточного дня;

д) поточного року.

6. Запишіть команду таймера для пришвидшення миготіння деякого об’єкта на формі.

7. Поекспериментуйте з двома-трьома таймерами. Придумайте сценарій їх використання.