Студопедия

КАТЕГОРИИ:


Архитектура-(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)

До розд. 4.3). Кілька корисних функцій обробки рядків




До розд. 4.2). Вирази як функції

По своїй суті арифметичні вирази нічим не відрізняються від функцій. Так само як і функції, вони повертають значення, а вхідні в них константи, змінні й інші вирази можна вважати їх аргументами.

Наприклад, арифметичний вираз А * (Y + C/D) можна вважати функцією множення з двома аргументами. Перший аргумент — це перемінна А, а другий — це вираження (Y + C/D), що, у свою чергу, можна вважати функцією додавання двох аргументів: В і C/D (В — змінна, a C/D — функція розподілу).

Неважко зміркувати, що будь-який арифметичний вираз — це складна функція (Функція складна, якщо її аргументами можуть бути інші функції, наприклад: Sin(Sqr(Abs(X))).). І в більшості випадків (як у приведеному прикладі) це функція двох аргументів.

Функцію двох аргументів часто називають бінарною функцією. Функцію одного аргументу називають унарною функцією, а функцію N аргументів — N-арной функцією.

Ви знаєте, що в Бейсіку функція позначається так:

Ім’яФункції(СписокАргументів)

Таке позначення називається префіксним, тому що Ім’яФункції записується перед Аргументами і є префіксом (приставкою).

Якщо функція бінарна, то для спрощення запису в багатьох мовах прийнято використовувати не префіксне, a інфіксне позначення, при якому Ім’яФункції записується між двома її Аргументами:

Аргумент1 Ім’яФункції Аргумент2

Саме так записуються арифметичні і логічні вирази в Бейсік й в багатьох інших мовах програмування.

Звичайне, звичне для Вас інфіксне позначення А * (В + C/D) можна, звичайно, представити й у префіксному вигляді (У Бейсік префіксний запис арифметичних і логічних виразів не допускається):
* (А, + (В, /(C, D))).

Але така форма запису, особливо коли вираз складний, містить велику кількість дужок. Вони дуже утрудняють розуміння цього виразу.

Але не треба забувати, що інфіксний запис вимагає строгого дотримання правила старшинства операцій. Саме ці правила допомагають іноді різко скоротити число дужок. Наприклад, замість того, щоб писати:
(((А + (В * C))- (D/E)) + F),
ми пишемо:
А + В * С — D/E+ F.

Але іноді дужки необхідні:
(А + B)/(C - D),
такий «дріб» без дужок не запишеш!

А іноді дужки ставлять навіть коли вони і не потрібні — просто щоб не заплутатися. Наприклад, у записі
Sqr (X^2 + Y^2) * (2^N)
друга пара дужок не потрібна, але вона і не зашкодить правильному розумінню того, яке дія за якою йде. А от перша пара дужок необхідна!

У програмах іноді доводиться перетворювати символи, з яких складаються рядки, у коди ASCII цих символів. Розглянемо дві функції, які для цього використовуються.

Asc(Рядок$)

Перетворює рядок у код ASCII першого символу цього рядка. Наприклад: Asc ("1998") повертає 49 (код АSСII цифри 1).

Chr(Код &)

Перетворює Код ASCII у рядок з одного символу.

Наприклад:
Chr (49) повертає "1".

Іноді доводиться перетворювати малі літери в прописні і навпаки. Для цього використовують функції зміни регістра. Їх дві:

UCase(Рядок$)

Повертає вихідний Рядок, усі букви якої перетворені в прописні. Наприклад:
UCase (" VisualBasic ") повертає "VISUALBASIC ".

LCase(Рядок$)

Повертає вихідний Рядок, усі букви якого перетворені в рядкові.

Наприклад:
LCase (" Список Міст ") повертає " список міст ".

Для того щоб зрозуміти, якою може бути практична користь від перерахованих функцій, повернемося до питання, що було поставлене при визначенні функції MsgBox у розд. 4.2: "Що потрібно зробити, щоб розбити рядок на частини, коли він друкується у Вікні Повідомлення? " Відповідь на це питання така: "Її потрібно представити у вигляді конкатенації рядків: Рядокl$ & Chr (13) & Chr (10) & Рядок2$". (13 і 10 — це коди ASCII особливих, невидимих символів, що використовуються при видачі чи друці тексту, — символу переходу на новий рядок і символу повернення на ліву сторону сторінки). Ці символи називаються також символом переносу і символом повернення каретки. (Термінологія друкарок, що працювали на механічних друкарських машинках.)

Приклад 4.6. Нехай у чотирьох текстових полях екранної форми знаходяться рядки: «Апельсин», «Банан», «Виноград» і «Грейпфрут». Після щиглика кнопки ПУСК об'єднання цих рядків повинне бути поміщене в поле мітки цієї екранної форми так, як показано на мал. 4.6 і 4.7.

Мал 4.6. Запис у поле мітки (справа) конкатенації рядків з текстових полів (зліва) без переносу слів на новий рядок

 

Мал 4.7. Запис у поле мітки конкатенації рядків з текстових полів з переносом нових слів на новий рядок

У першому випадку задачу вирішує наступний код:

Код 4.6

В другому випадку слова повинні розташовуватися «стовпчиком», тому код 4.7 трішки «складніший» від коду 4.6:

Код 4.7

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

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

фінансові функції Pmt, PV і Rate, унарна функція, бінарна функція, префіксне позначення, інфіксне позначення, символ переносу, символ повернення каретки, функції зміни регістра.




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


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


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



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




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