ЧИСЛОВІ ФУНКЦІЇ із строковими Аргументом

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

У даному підрозділі мова піде про функції, які обробляють рядки символів, але повертають числове значення, наприклад довжину рядка Будучи функціями, вони вимагають один або кілька аргументів і повертають одне числове значення, що привласнюється імені функції Наприклад, оператор

10   A =LEN(&quotDONT GIVE UP&quot)

помістить в змінну А значення 13 в результаті звернення до функції LEN, що повертає довжину рядка У табл 44 48 наводяться альтернативні імена і вказуються окремі особливості реалізацій для найбільш поширених функцій Для однаковості дію цих функцій ілюструється на прикладі версії Бейсика Microsoft У цих таблицях А $ і В $ можуть бути змінними, виразами або константами

Якщо А $ містить рядок ФОСФОР, то в результаті виконання операторів

B=LEN(A$)

С = ASC (А $) D = INSTR (A $, ” Ф ) E = INSTR (3, A $, ФO )

Таблиця 44 Функції Бейсика для персональної ЕОМ ZX81 фірми Sinclair

Результат

Функція

Дія

Значення

коду

CODE A$

Дає внутрішній машинний код

першого символу рядка А $ Якщо рядок порожня, в якості результату повертається 0

Довжина рядка

LEN (A $) Дає число символів в рядку А $

Число VAL (A $) Дає чисельний результат обробки рядка А $ яка може містити символьну запис досить складного арифметичного виразу

Таблиця 45 Функції Бейсика Microsoft деякі інші функції використовуються при роботі з файлами прямого доступу (див підрозд 862)

Результат

Функція

Дія

Значення

коду Довжина рядка Позиція

Число

ASC(A$)

LEN(A$) INSTR(A$,B$)

INSTR(I,A$,B$)

VAL(A$)

Дає (внутрішній машинний) Коя першого

символу

Дає число символів в рядку А $

Дає початкову позицію першого входження рядка В $ в рядок А $ повертає 0, якщо рядок В $ не є вирізкою з рядка А $ Якщо параметр I зазначений, то пошук входження рядка В $ в рядок AS почнеться з 1-й

позиції рядка А $

Дає число за його символьної записи в рядку AS яка може містити тільки цифри або знаки +, -, або & Прогалини і символи прогону рядка при цьому ігноруються

Таблиця 46 Функції Бейсика ВВС

Значення коду

Довжина рядка Позиція

Число

Таблиця 47 Функції Бейсика для персональної ЕОМ СВМ PET

Результат Функція Дія

Таблиця 48 Функції Бейсика для ЕОМ ICL 2903/4

Результат

Функція

Дія

Значення

коду

Довжина рядка Кількість входжень Позиція

Число

CHR(A$)

LEN(A$)

ОСС (А $, В $)

POS(A$,B$) POS(A$,B$,N)

VAL(A$)

Дає внутрішній машинний код першого символу

рядка А $

Дає число символів в рядку А $

Дає число неперекривающіхся входжень рядка В $ в рядок А $

Дає початкову позицію першого входження рядка В $ в рядок А $ повертає 0, якщо рядок В $ не є вирізкою з рядка А $ Якщо параметр N вказаний, то пошук входження рядка В $ в рядок А $ почнеться з N-й позиції рядка А $

Дає число за його символьної записи в рядку А $

рядок не повинна містити сторонніх символів

У одержить значення 6, С 102, рівне десятичному коду літери Ф, D1, яке вказує позицію символу

в рядку А $, починаючи з якою відбулося збіг з Ф, а Е отримає значення 4, яке вказує позицію символу в рядку А $, починаючи з якою відбулося збіг з ФО при пошуку від позиції 3 до кінця рядка Використання VAL (A $) помилково, і для даної системи призведе до значення 0

Якщо А $ містить -12356, то VAL (A $) поверне число -12356, яке при необхідності можна обробляти арифметично Існує функція, зворотна VAL і перетворююча числове значення в рядок, що містить запис цього числа в певній системі числення Таку рядок корисно уявляти собі як зображення числа Якщо А $ містить 1234, а В $ 5678, то в результаті виконання операторів

З $ = А $ + В $ E = VAL (A $) + VAL (B $)

З $ одержить значення 12345678, а Е 6912 Функція VAL може здатися дивною, але вона виявляється надзвичайно корисною в двох випадках По-перше, її можна застосовувати для додання висновку необхідного формату Можна перетворювати підлягають висновку числа в рядки, маніпулювати цими рядками, додаючи або збавляючи прогалини, відкидаючи непотрібні цифри, потім видавати результати оператором PRINT, відразу або попередньо обєднуючи декілька рядків в одну, і т д

По-друге, при деяких видах обробки дискових файлів потрібно, щоб обмін з диском відбувався тільки рядками символів У цих випадках доводиться перетворювати при записі на диск числові значення в рядки символів, а при читанні з диска – з рядків символів назад в числові значення

Дуже корисною виявляється функція ОСС (див табл 48), і якщо вона потрібна, а її не виявилося у Вашій системі, то наведемо фрагмент

програми, що виконує ту ж роботу У ньому А $ сприймається як аргумент, а В $ повинна містити шуканий зразок Повертаний у змінній Про результат дорівнює 0, або числу виявлених в А $ неперекривающіхся входжень зразка Зверніть увагу на те, що функція INSTR застосовується так, як описано в табл 45 Для вирішення цього завдання, иллюстрируемого наведеної нижче структограммой, нам потрібно продовжувати порівняння зразка В $ з символами

рядка А $ до тих пір, поки не відбудеться одна з двох подій: або збігів із зразком більше немає, або при пошуку ми вийшли за межі рядка А $ Так як структурного символу, що дозволив би здійснити вихід з різних місць всередині циклу, не існує, то умова виходу з циклу треба сформувати в його кінці На практиці для цього вводиться додаткова змінна М Їй присвоюється початкове значення 0, а потім у разі виконання якого-небудь з умов значення

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

Нижче наводиться відповідна цієї структограмме програма Вона не являє собою повну програму, так як призначена для використання у вигляді частини великої програми – наприклад, у вигляді підпрограми або функції (ці поняття обговорюються в гол 5)

100 REM ФРАГМЕНТ ПРОГРАМИ ДЛЯ ВИЗНАЧЕННЯ ЧИСЛА входження

110 0=8

120 1=1

130 J=LEN(A$)

140   K=LEN(B$)

150 М = ​​0

160   P=INSTR (I,A$,B$)

170   IF P&lt&gt0 THEN 200

180  M=1

190     GOTO 230

200   O=O+1

210   I=P+K

220   IF (I+K)&gtJ THEN M=l

230 IF M&lt&gt1 THEN 160

240 REM ВИХІД З шукане значення В Про

Для перевірки цього фрагмента додамо до нього рядки з операторами INPUT, PRINT і END: 10 INPUT A $ B $

250 PRINT ЧИСЛО входження =; O

260 END RUN

?BOT ДоВІД ПОБАЧИВ БЕГЕМОТАОТ ЧИСЛО входження = 3

END AT LINE 260

Ця програма додатково реєструє позиції в рядку А $, починаючи з яких в цьому рядку зустрічається шуканий зразок Позиції можна запамятати в масиві і використовувати по закінченню процесу пошуку разом з числом входжень зразка в рядок А $

Джерело: Уолш Б Програмування на Бейсике: Пер з англ М: Радіо і звязок, 1988 336 с: ил

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*