Если операции с числами знакомы нам с детства, то операции с текстовыми строками это что-то новенькое. Есть у нас например текстовая переменная A$(или несколько A$, B$, C$ ...) что вообще с ними можно делать?
Функции и операции со строками не появились ведь просто так))) Программисты решая разные задачи прибегали к решению более мелких задач, порой одинаковых. И для облегчения себе жизни придумали такие вот функции для Бейсика. Есть они и в других языках и даже их там стало больше. Рассмотрим основные.
Функция LEN(A$)
Например очень часто нужно узнать длину текстовой переменной(длину строки) для этого есть функция.
Код print len(a$)
выведет на экран длину(количество символов) текстовой переменной a$
. Длина - это количество памяти(байт) которые отведены под переменную(строку). Символы пробел, точка, запятая, и т.д. ведь тоже занимают место, а следовательно так же идут в счёт. Название функции произошло от английского слова length
- длина, и во многих других языках Паскаль, С/С++ она носит полное имя, в Бейсике же ограничились более коротким - len.
Объединение строк
Если мы напишем так C$=A$+B$
? что произойдёт? Строки соединятся - к строке A$
допишется(прибавится) значение переменной B$
и результат поместится в переменную C$
A$="Free"
B$="BASIC"
C$=A$+B$
print C$
не забываем просить FreeBASIC работать в режиме QuickBasic #lang "qb" в начале программы
Или же пытаемся жить по новому и объявляем переменные и их тип в начале программы
Dim As String a, b, c
, но тогда прийдется поубирать суффиксы $
с переменных A$, B$, C$
Как думаете что выведет оператор print в этой программе?
A$="12"
B$="1"
C$=A$+B$
print C$
13? )) Напомню, что в строковых переменных хранятся символы, не числа.
VAL(A$) и STR$(k) преобразование строки в число и числа в строку
А если надо узнать какое же число хранится в строковой переменной, если оно там хранится?
Для этого есть оператор val который при использовании с переменной A$ вернет её значение.
В последнем примере print val(A$)
выдаст 12, и 12 здесь уже будет число. Ну вернее говоря print val(A$)
выдаст на экран всё таки текст, а вот получит от val число. Можно использовать например так: p=val(A$)
, p здесь числовая переменная и она будет равна 12.
Есть функция и обратная к функции Val - это функция str$, которая из числа может сделать строку.
Используют так: k$=str$(34+5)
, в результате в переменную k$
будет занесён текст "39"
Говорить что при A$="12"
в память компьютера запишутся символы 1 и 2 не совсем верно. На самом деле в память запишутся числа 49 и 50. Если взять и "залезть" в память компьютера, именно в те ячейки памяти где хранится переменная A$
, а такие средства есть, и они используются для отладки программы. Отладка - это поиск ошибок в программе, когда программа не работает, или работает, но не так как нужно. В первом случае программа выдаст ошибку и не запустится - это синтаксическая ошибка, во втором - логическая, т.е. с точки зрения Бейсика программа составлена верно, запустилась и работает, но работает она не так как нужно.
Так вот, в памяти мы увидим 49 и 50, а не 1 и 2. Это потому что в память записываются коды символов "1" это 49 и "2" это 50. Я помню, что код символа "А" например 65, а код "Z" - 90, для "a" это 97, .... Эти коды я не заучивал, это и не нужно - они есть в специальной таблице, они просто сами запомнились, от частого использования в своё время.
А всё потому что компьютер работает с цифрами и на языке цифр ему проще объяснить что и как делать. На первом примере использования этих функций в программе вы увидите - так удобней и программисту, а не только компьютеру)))
Функции Asc(символ) и Chr$(число)
Asc(символ)
дает код символа из таблицы символов, а Chr$(число)
наоборот - даёт символ с определённым кодом.
print chr$(50)
выдаст "2",
а
print chr$(49)
выдаст "1",
ну а раз строки можно объединять, то
print chr$(49)+chr$(50)
выдаст "12"
Аналогично
print asc("%")
выдаст код символа процент("%") - 37.
Функции LEFT$, RIGHT$, MID$ и функция поиска INSTR
LEFT$(a$, n) - возвращает n левых символов от строки a$
RIGHT$(a$, n) - возвращает n правых символов от строки a$
MID$(a$, n, k) - возвращает k символов от строки a$ начиная с позиции n
например b$="12345"
тогда LEFT$(b$, 2)
выдаст "12"
, RIGHT$(b$, 4)
выдаст "2345"
, а MID$(b$, 3, 1)
выдаст "3"
MID$(a$, n, k) это не только функция(которая возвращает значение), но это ещё и оператор, который что-то делает.
Код MID$(b$, 3, 1)="0"
изменит строку b$
Всё зависит от того, с какой стороны от знака равенства стоит MID$
instr(a$,5,3,"Do")
ищет в строке a$ третье вхождение подстроки "Do" и возвращает его найденную позицию.
Ещё некоторые функции для работы со строками
Функция | Действие |
---|---|
LCase(строка) | переводит строку в нижний регистр |
UCase(строка) | переводит строку в верхний регистр |
LTrim(строка) | возвращает строку состоящую из исходной, но без пробелов слева |
RTrim(строка) | возвращает строку состоящую из исходной, но без пробелов справа |
Trim(строка) | возвращает строку состоящую из исходной, но без пробелов справа и слева |
Space(k) | возвращает строку состоящую из k пробелов |
String(k, c) | возвращает строку состоящую из k символов с кодом c |
Функции семейства trim могут вырезать не только пробелы, но и целые наборы символов(подстроки). Более подробно можно почитать о них здесь
Таблица называется ASCII (American standard code for information interchange) американский стандартный код для обмена информацией.
Каждому числу от 0 до 255 соответствует свой символ печатный, или не печатный(управляющий). Управляющий это для принтеров и прочих печатных устройств. А где же русские, вернее кириллические, символы? Вторая часть таблицы особым программным образом переключалась на символы национальных алфавитов и тогда появлялись "наши" буковки. Но беда в том, что таких таблиц для русских букв было как минимум две и иногда вместо букв выскакивала непонятная кашица из символов. А потом появилась ещё и Windows там ещё было с таблицей по другому.
Первая часть коды до 127
вторая часть коды от128
Есть в этой таблице и специальные символы - сердечки, карточные масти и символы псевдографики, для рисования таблиц на экране (коды 179-218) Сначала ведь не было графики на экране, экран мог только отображать символы - A,B,... А это такие же символы, и с помощью их "рисовалась", ой, простите, печаталась таблица на экране.
Заметили что в некоторых функциях есть суффикс $
, а в некоторых нет? Если есть значит функция возвращает строку? например chr$(179)
, если нет - значит возвращает число, например val("45") будет 45.
рассмотрены текстовые функции: len, val, str, asc, chr, right, mid, instr, lcase, ucase, ltrim, utrim, trim, space, string.
0. FreeBASIC лучший из диалектов бейсика
1. Начинаем изучать FreeBasic
2. [FreeBASIC] Переменные в Бейсике
✅
✅
@sergiy, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Сюда приплывал Моби Дик
@sergiy, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество опубликованных постов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп