Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Языки Бейсик

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
622 Кб
Скачать

Глава VIII. Математические функции

61

PRINT (SIN(90 * (PI / 180)))

'Вывод: 1

 

PRINT (TAN(45 * (PI / 180)))

'Вывод: 1.000000000205103

 

Пример 8.8.1.

 

 

'Программа вычисления тригонометрических функций

 

'Sin(x),Cos(x),Tg(x),Ctg(x),Artg(x),Arctg(x)

 

'где x-угол в градусах, вводится с клавиатуры, результат

 

выводится на

 

 

‘экран монитора

 

 

CONST

pi = 3.141593

 

 

p1: CLS 'Очистка экрана

 

 

PRINT

“выберите, что вычислять?”

 

 

PRINT

“1-Sin(x) 2-Cos(x) 3-tg(x) 4-Ctg(x) “

 

z$ = INPUT$(1)

 

 

PRINT

“Введите угол в градусах”

 

 

INPUT

“õ:-”; x

 

 

rad =

x * pi / 180

 

 

SELECT CASE VAL(z$)

 

 

CASE 1

 

 

PRINT

“Sin(“; x; “)=“; SIN(rad)

 

 

CASE 2

 

 

PRINT

“Cos(“; x; “)=“; COS(rad)

 

 

CASE 3

 

 

PRINT

“tg(“; x; “)=“; TAN(rad)

 

 

CASE 4

 

 

PRINT

“Ctg(“; x; “)=“; COS(rad) / SIN(rad)

 

CASE ELSE

 

 

PRINT

“такой функции нет-”; z$

 

 

END SELECT

 

 

PRINT

“Закончить работу?(0-да)”

 

 

z$ = INPUT$(1)

 

 

IF VAL(z$) <> 0 THEN GOTO p1 ELSE END

 

8.9. Функция SQR

Функция SQR возвращает квадратный корень числового выражения.

Формат записи функции SQR

SQR(числ_выражение)

ãäå

числ_выражение Значение большее или равное нулю.

Пример:

PRINT SQR(25), SQR(2) 'Вывод: 5 1.414214

Пример 8.9.1.

Пример программы нахождения корней квадратного уравнения через дискриминант, который проверяется на значение не меньше нуля. В противном слу- чае считается, что корни отсутствуют.

62 Языки Бейсик

'Программа нахождения корней квадратного уравнения 'Ах^2+Bx+C=0

'где A,B,C вводятся с клавиатуры, результат выводится 'на экран монитора

p1: CLS 'Очистка экрана

PRINT “Введите коэффициенты уравнения” INPUT “A:-”; a

INPUT “B:-”; b INPUT “C:-”; c

'Вычисляем дискриминант d = b ^ 2 — 4 * a * c

'Проверяем значение дискриминанта IF d < 0 THEN

PRINT “Дискриминант меньше нуля. Уравнение корней не имеет!” p2: PRINT “Закончить работу?(0-да)”

z$ = INPUT$(1)

IF VAL(z$) <> 0 THEN GOTO p1 ELSE END ELSE

'Печать результатов

PRINT “X1=“; (-b + SQR(d)) / (2 * a)

PRINT “X2=“; (-b — SQR(d)) / (2 * a) GOTO p2

END IF

Глава IX. Работа с символьными данными

63

Глава IX. Работа с символьными данными

При решении информационно-поисковых задач в автоматизированных системах управления (АСУ), в экономических задачах наряду с вычислительными операциями широко используется обработка символьных данных.

Средства обработки символьной информации в языке Бейсик представлены достаточно большим набором операторов и специальных функций. По назна- чению их можно разделить на следующие группы:

— преобразование кодов:

функции CHR$, ASC, LCASE$, UCASE$;

выделение определенной части символьного выражения: функции LEFT$, MID$, RIGHT$;

замена части символьного выражения:

оператор MID$;

функции, LTRIM$, RTRIM$;

обмен символьными выражениями: оператор SWAP(см. раздел 3.2.), функции LSET, RSET(см. раздел 9.12.)

формирование строк одинаковых символов: функции STRING$, SPACE$;

обработка числовой информации в тексте: функции VAL, STR$;

перевод чисел из одной системы счисления в другую: функции OCT$, HEX$;

определение количественных характеристик символьных строк: функции LEN, INSTR

9.1. Преобразование кодов

Все символы, которые обрабатывает компьютер, представлены в памяти компьютера в виде набора из восьми бит(один байт), который называется кодом данного символа. Поскольку различных комбинаций бит в одном байте 256, постольку и существует возможность закодировать 256 различных символов. Много это или мало? Достаточно сказать, что клавиатура компьютера имеет 104 клавиши, и даже если бы все они набирались в двух регистрах(без и с клавишей Shift), то еще свободными оставались бы 48 кодов. Правда, если посмотреть на таблицу кодов 11.8.1-11.8.2, представленную на экране монитора (потому что в книге она набрана только символами, которые есть в печати) можно заметить, что там пустых мест нет. Но это обычное дело. Думаю, что разработчики нового программного обеспечения даже сетуют на то, что одного байта явно не хватает, чтобы реализовать все их гениальные задумки.

64

Языки Бейсик

Итак, каждый символ, с которым работает компьютер, имеет по крайне мере три представления:

символьное — как мы его привыкли видеть;

шестнадцатиричное (или двоичное — что одно и тоже, только запись покороче) — это для компьютера;

десятичное — это чисто в силу людской привычки, потому что более привычно и понятно для большинства людей, что означает число 256, чем число FF, хотя это и одно и тоже. В уже упомянутой выше таблице кодов AS- CII(11.8.1-11.8.2.) вы видите, что все коды представлены в десятичном виде — тоже исключительно для удобства человека.

9.1.1. Функция CHR$

Функция CHR$(CHaRacter code) позволяет получить символ, соответствующий указанному коду ASCII.

Формат записи функции CHR$:

CHR$(ascii-êîä%)

ãäå

ascii-êîä% Десятичный код ASCII нужного символа в пределах от 0 до 255.

Пример:

PRINT CHR$(65) 'Вывод: A

9.1.2. Функция ASC

Функция ASC возвращает десятичный ASCII код первого символа в строковом выражении.

Формат записи функции ASC:

ASC(строк_выражение$)

ãäå

строк_выражение$ Любое строковое выражение.

Пример:

PRINT ASC(“Q”) 'Вывод: 81

9.1.3. Функции LCASE$, UCASE$

Функции LCASE$, UCASE$ преобразуют символьную строку следующим образом:

Функция LCASE$ преобразует все буквы в символьной строке на строчные буквы;

Функция UCASE$ преобразует все буквы в символьной строке на прописные буквы;

Глава IX. Работа с символьными данными

65

Формат записи функций:

LCASE$(строк_выражение$)

UCASE$(строк_выражение$)

ãäå

строк_выражение$ Любое строковое выражение.

Пример:

Test$ = “СТрокА” PRINT Test$

PRINT LCASE$(Test$); ' только со строчными буквами

PRINT UCASE$(Test$); ' ТОЛЬКО С ПРОПИСНЫМИ БУКВАМИ

9.2. Выделение части символьного выражения

9.2.1. Функции LEFT$, RIGHT$

Функции LEFT$(левый) и RIGHT$(правый) возвращают указанное число символов, стоящих с левого или с правого конца строки.

Формат записи:

LEFT$(строк_выражение$,n%)

RIGHT$(строк_выражение$,n%)

ãäå

Строк_выражение$ Любое строковое выражение.

n% Число возвращаемых символов, начиная с самого правого или левого символа строки.

Пример:

a$ = “IBM DOS QBasic”

PRINT LEFT$(a$, 5) 'Вывод: IBM D

PRINT RIGHT$(a$, 5) 'Вывод: Basic

9.2.2. Функция MID$

Функция MID$(MIDdle-середина) возвращает часть строки (подстроку).

Формат записи:

MID$(строк_выражение$,начало%[,длина%])

ãäå

Строк_выражение$ Строка, из которой функция MID$ возвращает подстро-

 

ку. Может быть любым строковым выражением.

Начало%

Позиция первого возвращаемого символа в строке.

Длина%

Число символов в подстроке. Если длина опущена, MID$

 

возвращает все символы справа от начальной позиции.

66

Языки Бейсик

Пример:

a$ = “Почему я никогда не был в Париже?” PRINT MID$(a$, 27, 5) 'Вывод: Париж

9.3. Замена части символьного выражения

При работе с символьными данными используются следующие виды их обработки: присваивание символьного выражения, обмен символьными выражениями и замена части символьного выражения другим символьным выражением. Присваивание выполняется обычными средствами, например A$=B$. Обмен выражениями может быть выполнен оператором SWAP.(см 3.2.).

9.3.1. Оператор MID$

Оператор MID$ замещает часть строковой переменной другой строкой.

Формат записи:

MID$(строк_переменная$,начало%[,длина%])=строк_выражение$

ãäå

 

Строк_выражение$

Строка замещения, используемая в операторе MID$.

 

Может быть любым строковым выражением.

Начало%

Позиция первого замещаемого символа в строк_пере-

 

менная$.

Длина%

Число символов в подстроке, которые должны быть за-

 

менены. 1 < длина% < 255 Если длина опущена, MID$ за-

 

мещает все символы справа от начальной позиции.

Строк_переменная$

Строковая переменная, изменяемая оператором MID$.

Пример:

Text$ = “Париж, Франция”

PRINT Text$ 'Вывод: Париж, Франция

MID$(Text$, 8) = “Сиэтл “

PRINT Text$ 'Вывод: Париж, Сиэтл

При выполнении оператора MID$ длина символьной переменной не меняется.

9.3.2. Функции LTRIM$, RTRIM$

Функции LTRIM$, RTRIM$ удаляют начальные или конечные пробелы из строки.

Формат записи:

LTRIM$(строк_выражение$)

RTRIM$(строк_выражение$)

ãäå

строк_выражение$ Любое строковое выражение.

Глава IX. Работа с символьными данными

67

Пример:

a$ = “ Basic “

 

 

PRINT “*” + a$ + “*” 'Вывод: * Basic

*

 

PRINT

“*”

+

LTRIM$(a$) + “*” 'Вывод:

*Basic *

PRINT

“*”

+

RTRIM$(a$) + “*” 'Вывод:

*

Basic*

9.4. Формирование строк одинаковых символов

Эта операция часто используется при составлении таблиц, когда необходимо вставить сплошную линию(функция STRING$) или добавить пробелы (функция SPACE$).

9.4.1. Функция STRING$

Функция STRING$(цепочка) возвращает строку указанной длины, состоящую из повторяющегося символа.

Формат записи:

STRING$(длина%,{ascii-êîä% | строк_выражение$})

ãäå

 

Длина%

Длина строки.

Ascii-êîä%

ASCII код повторяемого символа.

Строк_выражение$ Любое строковое выражение. STRING$ заполняет строку первым символом из строк_выражения$.

Пример:

PRINT STRING$(5, “-”);

PRINT “Привет”;

PRINT STRING$(5, “-”)

9.4.2. Функция SPACE$

Функция SPACE$(пробел) возвращает строку пробелов.

Формат записи:

SPACE$(n%)

ãäå

n% Нужное число пробелов в строке. 0 < n% < 255

Åñëè n% дробное, то оно округляется.

Пример:

FOR i% = 1 TO 5 x$ = SPACE$ (i%) PRINT x$; i% NEXT i%

68

Языки Бейсик

9.5. Обработка числовой информации в тексте

Для того, чтобы видеть числа на экране монитора или печатать на принтере, они должны быть в символьном виде, то есть занимать один байт памяти. Но для того, чтобы компьютер мог производить с числами математические действия, они должны быть представлены в специальном(числовом) формате. Поэтому есть настоятельная необходимость преобразовывать числа из символьного вида в числовой формат и наоборот.

9.5.1. Функция VAL

Функция VAL(VALume-значение) переводит строковое представление числа в числовую форму.

Формат записи:

VAL(строк_выражение$)

ãäå строк_выражение$ Строковое представление числа.

Если в строк_выражение$ встречаются управляющие символы, пробелы, знаки табуляции и “перевод строки”, то их значения игнорируются. Если символьное выражение начинается не с цифры, а с другого знака, то функция вернет значение ноль.

Пример:

PRINT VAL(RIGHT$(“IBM 1991”, 4))

9.5.2. Функция STR$

Функция STR$(STRing-строка) возвращает строковое представление числа.

STR$(числ_выражение)

ãäå числ_выражение Любое числовое выражение.

После перевода числа в символьную форму для положительных чисел перед цифрами резервируется один пробел для знака.

Пример:

PRINT “Десятичное 65 представляется в_ шестнадцатиричной системе как “;

PRINT “&H” + LTRIM$(STR$(41))

9.6. Перевод чисел из одной системы счисления в другую

9.6.1. Функция OCT$

Функция OCT$(OCTavo-восьмеричный) переводит десятичное число в восьмеричное представление числа.

Формат записи:

Глава IX. Работа с символьными данными

69

OCT$(числ_выражение&)

ãäå

Числ_выражение& Любое числовое выражение в пределах от –32 768 до 65 535. Если выражение дробное, то оно округляется до целого или длинного целого перед оценкой.

9.6.2. Функция HEX$

Функция HEX$(HEXadecimal-шестнадцатиричный) переводит десятичное число в шестнадцатиричное представление числа.

Формат записи:

HEX$(числ_выражение&)

ãäå

Числ_выражение& Любое числовое выражение.в пределах от –32 768 до 65 535. Если выражение дробное, то оно округляется до целого или длинного целого перед оценкой.

Примеры:

INPUT x

a$ = HEX$ (x)

b$ = OCT$ (x)

PRINT x; “ равно “;a$;” в шестнадцат. и “; b$;” в восьм.

системах.”

9.7. Количественные характеристики символьных строк

Во многих операциях поиска необходимо знать длину строковой переменной.

9.7.1. Функция LEN

Функция LEN(LENgth-длина) возвращает число символов в строке или число байтов, необходимых для хранения переменной.

Формат записи:

LEN(строк_выражение$)

LEN(переменная)

ãäå

Строк_выражение$ Любое строковое выражение. Переменная Любая нестроковая переменная.

Пример:

a$ = “IBM DOS QBasic”

PRINT LEN(a$)

9.7.2. Функция INSTR

70

Языки Бейсик

Функция INSTR(INspect STRing-просмотреть строку) возвращает позицию первого обнаружения символьной строки в другой символьной строке.

Формат записи:

INSTR([начало%,]строк_выражение1$,строк_выражение2$)

ãäå

 

Начало%

Устанавливает позицию символа, откуда начинается по-

 

иск. Если начало% опущено, INSTR начинает поиск с по-

 

зиции 1.

Строк_выражение1$ Строка, в которой ищут. Строк_выражение2$ Строка, которую ищут.

В результате выполнения функции, выдается номер позиции в строк_выражение1$, начиная с которой размещается строк_выражение2$. Если искомая строка не найдена, то функция возвращает ноль. Если искомая подстрока строк_выражение2$ является пустой, то значение функции равно начало%, а если начало% не задано, то значение функции равно 1.

Пример:

a$ = “IBM DOS QBasic”

PRINT “Позиция строки =“; INSTR(1, a$, “QBasic”)

9.8. Пересылка символов в текстовую строку. Функции LSET и RSET

Функции LSET и RSET предназначены для работы с произвольными файлами(см. раздел 9.12), однако их можно использовать и при работе с символьными данными. Главная особенность этих функций та, что они не меняют длины строковой переменной. Если при обыкновенной пересылке символьных переменных типа A$=B$ в результате длина A$ становится равной длине B$, то в случае применения функций LSET и RSET этого не происходит.

LSET и RSET осуществляют правое или левое выравнивание значений строковой переменной. LSET также копирует содержимое одной записи переменной в другую.

Формат записи:

LSET строк_переменная$=строк_выражение$

RSET строк_переменная$=строк_выражение$

LSET запись_переменной1=запись_переменной2

ãäå

Строк_переменная$ Любая строковая переменная или поле файлов прямого доступа, определенные в операторе FIELD.

Строк_выражение$ Для LSET — версия строк_переменной$ для левого края. Для RSET, версия строк_переменной$ для правого края.

Запись_переменной1Запись переменных любого определенного Запись_переменной2 пользователем типа данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]