Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Питання для роздумів. Функції які визначаються




Функції які визначаються

Розглянуті вище функції є вбудованими (системними) функціями Visual Basic, але кожен програміст може визначити і свої власні (визначені) функції.

Наприклад, можна визначити функцію Гіпотенуза (а, b), що обчислює довжину гіпотенузи трикутника за теоремою Піфагора: s = Sqr(a^2 + b^2), де a, b — довжини катетів, s — довжина гіпотенузи.

Як це можна робити, ми розглянемо далі, у 1-й главі 2-ї частини посібника, яка призначена процедурам і функціям, які визначаються розробником.

Розглянуті в цьому розділі види функцій і окремі функції — не єдині в Бейсік. Є й інші, про них Ви довідаєтеся в наступних розділах цієї глави (та інших главах).

Крім того, цікаво відзначити тісний зв'язок, що існує між поняттями функції і виразу: вираз (наприклад, арифметичний) можна вважати частковим випадком функції!

Hові поняття:

функція, вбудовані функції, обумовлені функції, математичні функції, фінансові функції, системні функції, функція Вікно вводу, функція Вікно повідомлення.

Як Ви думаєте, чим відрізняються поняття функції в математиці і поняття функції в інформатиці?

Приведіть приклади функцій одного, двох і трьох аргументів у мові Бейсік.

Як Ви думаєте, чим відрізняється функція Int (x) від функції Fix (x)? А функція CInt (x) від функції Fix (x)? Приведіть приклади, що демонструють ці відмінності.

Які значення мають складові Op l і Op 2 аргументу Опція функції MsgBox у прикладах, приведених на мал. 4.2? (Відповідь: 16+1, 32+4, 48+2, 64+0).

4.3. Обробка рядкових виразів

У розд. 3.1 було сказано, що рядок — це значення змінної типу String. Насамперед уточнимо це поняття.

Рядок — це впорядкована послідовність символів (Символ — це знак, для якого на Вашому комп'ютері встановлений визначений код — число від 0 до 255 (код ASCII). Багато символів (але не всі) Ви можете відшукати на клавіатурі. Тут ми не будемо докладно заглиблюватися в питання про коди ASCII), або порожній рядок. Для позначення рядка використовуються лапки:
"" — позначення порожнього рядка.

"Іван" — приклад заповненого рядка.

Між лапками при позначенні порожнього рядка пробіл ставити не можна, тому що пробіл — це теж символ.

Число символів рядка називається довжиною рядка. Довжина порожнього рядка дорівнює нулю.

Кожен символ рядка має свою позицію — порядковий номер при рахунку зліва направо. Наприклад, символ 1 в рядку " Іван " має позицію 1, а символ н — позицію 4.

У Бейсіку використовується поняття підрядка. Строго визначати його ми не будемо, обмежимося прикладами:
"Іван" — це підрядок рядка "Іванов";
"+1" — це підрядок рядка "Число+100";
"01" не є підрядком рядка "Число+100".

(чи можете Ви самі за цими прикладами визначити поняття підрядка?)

Підрядок S1 рядка S називається лівим підрядком, якщо їхні перші символи збігаються ("Іван" — лівий підрядок рядка "Іванов").

Підрядок S1 рядка S називається правим підрядком, якщо їхні останні символи збігаються ("ов" — правий підрядок рядка "Іванов").

Конкатенацією двох рядків S1 і S2 називається такий рядок S, для якого S1 і S2 — це лівий і правий підрядки, а довжина S дорівнює сумі довжин S1 і S2. Приклад: "12345678" — це конкатенація рядків "12345" і "678".

Рядковий вираз — це рядок, або рядок і рядковий вираз, між якими стоїть знак конкатенації. (Визначення рекурсивне!)

Знак конкатенації у Visual Basic — це знак +. Але не треба плутати конкатенацію рядків з додаванням чисел в арифметичних виразах, хоча знак використовується той самий!

У мові Visual Basic застосовується ще один знак конкатенації: & (амперсанд). З його допомогою можна піддати конкатенації не тільки рядки, але і числа. При цьому числа будуть спочатку перетворені в рядки (обрамлені лапками). І результат теж буде рядком.

Приклад 4.4. Код 4.3 демонструє конкатенацію рядків і чисел за допомогою знака &:

Код 4.3
Dim Рядок1, Рядок2 As Sting Dim Результат As Sting Рядок1 = "Об'єм кімнати" Рядок2 = "куб.метрів" Результат = Рядок1 & 2.5 * 3 * 5 & Рядок2

Після виконання цього коду значенням змінної Результат буде рядок: "Обсяг кімнати 37.5 куб. метрів".

А тепер представимо деякі найбільш розповсюджені функції, що мають справу з рядками — обробляють їх, або повертають їх як свої значення.

Аргументи у визначеннях функцій будемо записувати із суфіксами — для вказівки їхнього типу.

Функція визначення довжини рядка. Синтаксис функції:

Len(Рядок$)

Функція повертає довжину Рядок$. Наприклад:

Len ("Іван" + "Іванович") повертає 12;
Len ("Іван" + " "+"Іванович") повертає 13;
Len (900 & "-" & 4567) повертає 8.

Функції виділення підрядка. Таких функцій три:

Mid(Рядок$, Позиція& [, Довжина&])

У Рядку$ виділяється підрядок починаючи від заданої Позиції&. Довжину& виділеного підрядка можна не вказувати: тоді буде повернутий підрядок від даної Позиції& до кінця Рядка$.

Наприклад:
Mid ("Іван"+"Іванович", 6) повертає "Іванович";
Mid ("Іван Іванович", 6, 2) повертає "Верб".

Left(Рядок$, Довжина)

У Рядку$ виділяється лівий підрядок Довжиною&. Він і буде значенням, що повертається. Наприклад:
Left ("Іванович", 4) повертає "Іван".

Right(Рядок$, Довжина&)

У Рядку$ виділяється правий підрядок Довжиною&. Він і буде значенням, що повертається. Наприклад:
Right ("Іван Іванович", 8) повертає "Іванович".

Функція пошуку підрядка. Синтаксис функції:

Instr([Старт&,] Рядок$, Підрядок&)

В Рядку$ шукається те місце, де знаходиться Підрядок$. Повертається позиція першого символу Підрядка$. Якщо Підрядок$ не знайдено, повертається 0.

Старт& — необов'язковий аргумент — номер тієї позиції, з якої починається пошук. Наприклад:
InStr (" ІванІванович", "Іван") повертає 1;
InStr (" ІванІванович", "Петро") повертає 0;
InStr (1, " ІванІванович", "Іван") повертає 1;
InStr (2, " ІванІванович", "Іван") повертає 6;

Функції перетворення. Таких функцій у Visual Basic досить багато. Їхнє призначення — перетворення даних з одного типу в іншій. Наприклад, цілий ряд функцій покликаний перетворювати рядки в різні числові і нечислові типи (З однією з таких функцій Ви вже познайомилися — це згадана в розд. 4.2 функція CInt. У загальному випадку ця функція перетворить рядок символів у ціле число, наприклад, рядок "25" у число 25). Розглянемо тільки 4 функції цього виду.

Val(Рядок&)

Ця функція перетворить Рядок у число. Наприклад:
Val ("2.5") повертає 2.5.

Дана функція часто застосовується для перетворення рядків, що вводяться користувачем через Вікна вводу чи текстові поля екранної форми, у числа, що потім використовуються при обчисленнях (Саме з такою метою ми вже застосовували функцію Val у програмі, розглянутій у гл. 2 (код 2.1)).

Str(Число)

Ця функція перетворює Число будь-якого типу в рядок. Наприклад:
Str (5E+25) повертає "5E+25"

Дана функція часто застосовується для перетворення чисел, що виходять у результаті зроблених програмою обчислень, у рядки, що поміщаються в текстові поля екранної форми чи Вікна повідомлень (Саме з такою метою ми вже застосовували функцію Str у програмі, розглянутій в гл. 2 (код 2.1)).

Ще кілька корисних функцій обробки рядків розглянуті в останньому розділі даної глави.

Нові поняття:

рядок, функції обробки рядків, символ, код ASCII, позиція символу, підрядок, лівий підрядок, правий підрядок, конкатенація рядків, рядковий вираз.

Питання для роздумів

Як Ви думаєте, чи виконується переставний закон для операції + над рядками (для конкатенації)? Іншими словами, чи завжди справедлива рівність А + У = У + А?

Як Ви думаєте, скільки початкових позицій може бути в підрядку довжиною M у рядку довжиною N (N>M)? (Відповідь: N — M+ 1.)

Як Ви думаєте, скільки початкових позицій може мати порожній підрядок в непорожньому рядку? Перевірте! (Відповідь: Скільки завгодно.)

Яке значення поверне функція Val ("2Е5")? (Відповідь: 200000.)

Уважно подивіться на код 4.3 (приклад 4.4). Як Ви думаєте, яка з двох операцій — множення чи конкатенація виконується раніше? Чи можете Ви зробити висновок про те, що всі арифметичні операції "старші" від конкатенації"?




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 452; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.