Строковый тип данных
Строковый тип данных
Общие сведения
В QB используются два основных типа данных: числовые и строковые (или текстовые).
Числовые величины в свою очередь делятся на
целые
длинные целые
вещественные одинарной точности
вещественные двойной точности.
Для указания типа величины, используются специальные символы, добавляемые к имени:
Тип
Спец. символ
Пример
Примечание
целые
%
A%
длинные целые
&
A&
вещественные одинарной точности
!
A!
Действует по умолчанию
вещественные двойной точности
#
A#
строковые
$
A$
Тип величины указывает на диапазон допустимых значений этой величины и на те операции и функции, которые допустимо использовать с этими величинами.
Каждый тип данных имеет свои преимущества и недостатки, которые следует принимать во внимание при создании программы. Выбирая тип данных, необходимо учитывать требования решаемой задачи и помнить, что выбор влияет на объем используемой памяти, на скорость выполнения программы, на точность получаемого результата.
Значением строковой величины является последовательность символов, заключённая в кавычки. Кавычки определяют начало и конец строкового значения. Последовательность может содержать буквы, числа, знаки препинания, пробелы и другие символы в любой комбинации. При этом длина строки не должна превышать 255 символов. Последовательность может быть и пустой, т.е. не содержать никаких символов.
Например: «Информация», «А2125235354Р3ЕЕЕ54354», «5550505», «».
Не следует забывать, что компьютер работает только с числами и не может хранить символы в непосредственном виде. При вводе символа с клавиатуры происходит преобразование этого символа в число в соответствии с кодовой таблицей ASCII.
Например: прописная латинская буква A имеет код 6510, а строчная латинская буква a имеет код 9710.
Большинство символов можно ввести в компьютер простым нажатием соответствующей клавиши на клавиатуре. Однако есть такие символы, которые вводятся только с помощью клавиши ALT и цифровых клавиш малой клавиатуры (справа). В этом случае по таблице ASCII-кодов определяется код символа. Затем при нажатой клавише ALT набирается цифровой код на малой клавиатуре. После отжатия клавиши ALT на экране появляется соответствующий символ.
Например: при нажатии клавиши ALT и наборе кода 248 на экране появляется символ градуса (°).
Для того, чтобы строковую величину отличить от числовой величины, к имени строковой величины добавляется символ $.
Например: A$, DATE$, PRIM$, C2$.
Рассмотренные ранее операторы LET, INPUT, PRINT используются и со строковыми величинами.
Например: INPUT A$
B$ = MID$(A$, 2, 1)
PRINT A$, B$
Строковые величины можно «склеивать» (операция «конкатенация»).
Например: A$ = «пар»
D$ = «ход»
C$ = A$ + “о” + D$
PRINT C$
В результате выполнения операторов на экран будет выведено слово «пароход».
Функции строковых величин
Функция LEN – определение длины строковой величины (в символах).
Формат записи функции: LEN(имя или значение строковой величины).
Например: INPUT A$ | Привет!
PRINT LEN(A$) | 7
Функция LEFT$ - выделение в строковой величине заданное количество символов слева.
Формат записи функции:
LEFT$(<имя или значение строковой величины>, <количество выделяемых символов>).
Например: A$ = «Информационные технологии»
B$ = LEFT$(A$, 6)
PRINT B$ | Информ
Функция RIGHT$ - выделение в строковой величине заданное количество символов справа.
Формат записи функции:
RIGHT$(<имя или значение строковой величины>, <количество выделяемых символов>).
Например: A$ = «Информационные технологии»
C$ = RIGHT$(A$, 10)
PRINT C$ | технологии
Функция MID$ - выделение в строковой величине заданное количество символов, начиная с заданной позиции.
Формат записи функции:
MID$(<имя или значение строковой величины>, <позиция первого выделяемого символа>, <количество выделяемых символов>).
Например: A$ = «Информационные технологии»
D$ = MID$(A$, 3, 5)
PRINT D$ | форма
Функция INKEY$ - содержит символ нажатой клавиши. Функция содержит нулевое значение, если клавиша не нажата.
Формат записи функции: INKEY$.
Так как одновременное нажатие клавиши и выполнение программой функции INKEY$ практически невозможно, организуется программное ожидание нажатия клавиши с использованием цикла DO … LOOP:
DO: A$ = INKEY$: LOOP WHILE A$ = «»
Цикл выполняется до тех пор, пока в переменную A$ не будет записано значение функции INKEY$.
Функция ASC – перевод символа в число.
Формат записи функции: ASC(<символ>).
Результатом выполнения функции является ASCII-код символа.
Например:
DO: A$ = INKEY$: LOOP WHILE A$ = «» | Ожидание нажатия клавиши.
PRINT A$, ASC(A$) | Вывод символа нажатой
| клавиши и его ASCII-кода
Функция CHR$ - перевод числа в символ.
Формат записи функции: CHR$(
N принимает значения в интервале от 0 до 255.
Например:
FOR I = 0 TO 255
PRINT I; « »; CHR$(I) | Вывод на экран символа и его ASCII-кода
NEXT I
Функция STR$ - перевод числа или арифметического выражения в строку символов.
Формат записи функции: STR$(<число>).
Например:
F = 1365 | Дано число 1365
F$ = STR$(F) | Символьной переменной F$ присваивается
| строковое значение «1365»
PRINT F, F$ | 1365 1365
Функция VAL – перевод строки символов в число.
Формат записи функции:VAL(<строка>).
Например:
а) PRINT 2*VAL(“2”) | 4
б) PRINT VAL(“1”+”.”+”2”) | 1.2
в) PRINT VAL(“ПРИВЕТ!”) | 0
Обработка данных строкового типа
Задание 1.
Дана строка символов. Заменить в строке все символы "!" символами "?".
Решение:
REM Замена символов
CLS
INPUT "Введите строку символов:"; A$
L% = LEN(A$)
FOR I = 1 TO L% STEP 1
IF MID$(A$, I, 1) = «!» THEN MID$(A$, I, 1) = «?»
NEXT I
PRINT A$
END
Задание 2.
Дана строка символов. Определить число вхождений в строку группы символов "IBM".
Решение:
REM Выделение части строки
CLS
INPUT "Введите строку символов:"; A$
L% = LEN(A$)
B$ = "IBM"
K = 0
FOR I = 1 TO L% STEP 1
IF B$ = MID$(A$, I, 3) THEN K = K + 1
NEXT I
PRINT «K = »; K
END
Задание 3.
Дано трехзначное целое десятичное число. Найти сумму цифр исходного числа.
Примечание: число может быть как положительным, так и отрицательным; под знак числа отводится крайняя левая позиция.
Решение:
REM Сумма цифр исходного числа
CLS
INPUT "Введите трехзначное целое число Х:"; Х%
A$ = STR$(X%)
A1$ = MID$(A$, 2, 1)
A2$ = MID$(A$, 3, 1)
A3$ = RIGHT$(A$, 1)
Y% = VAL(A1$) + VAL(A2$) + VAL(A3$)
PRINT "Cумма = "; Y%
END
Задание 4.
Дано слово (строка символов). Получить новое слово, записанное в обратном порядке. Например: дано слово «телефон», ему соответствует новое слово «нофелет».
Решение:
REM Перевертыш
CLS
INPUT «Введите строку символов:»; A$
B$ = «»
L% = LEN(A$)
FOR I = 1 TO L%
B$ = B$ + MID$(A$, L% – I + 1, 1)
NEXT I
PRINT B$
END
Задание 5.
Дана строка символов, содержащая символы «(» и «)».
Получить все символы, расположенные между первой открывающейся скобкой и второй закрывающейся скобкой, включая эти скобки.
Решение:
REM Выделение части строки
CLS
INPUT "Введите строку символов:"; A$
L% = LEN(A$)
FOR I = 1 TO L% STEP 1
B1$ = "("
B2$ = ")"
IF B1$ = MID$(A$, I, 1) THEN P1 = I
IF B2$ = MID$(A$, I, 1) THEN P2 = I
NEXT I
C$ = MID$(A$, P1, P2 – P1 + 1)
PRINT C$
END
Обработка нажатия клавиш
Ожидание нажатия клавиши:
DO: A$ = INKEY$: LOOP WHILE A$ = «»
Вывод на экран символа нажатой клавиши до нажатия клавиши ESC (код 27):
DO
DO: A$ = INKEY$: LOOP WHILE A$ = «»
PRINT A$
LOOP WHILE A$ <> CHR$(27)
Пример организации диалога:
PRINT «Продолжить? (Y - да), N - нет»
DO: A$ = INKEY$: LOOP WHILE A$ = «»
IF A$ = «Y» THEN PRINT «Продолжить»
IF A$ = «N» THEN PRINT «Конец»
Для проверки нажатия некоторых клавиш (F1 – F10, ↓, ↑, →, ← и др.) используется расширенный код, который состоит из двух байтов: в старшем байте записан 0, в младшем байте – код нажатой клавиши.
Например: нажатие клавиши ↓ вызывает перемещение символа на строку ниже.
STR = 2: STB = 20
DO
LOCATE STR, STB: PRINT «*»
DO: A$ = INKEY$: LOOP WHILE A$ = “”
LOCATE STR, STB: PRINT « »
IF A$ = CHR$(0) + CHR$(80) THEN STR = STR + 1
IF STR >= 20 THEN STR = 2
LOOP WHILE A$ <> CHR$(13)
Коды часто используемых клавиш:
ENTER
13
Завершение ввода данных
ESC
27
Возврат в предыдущее состояние
SPACE
32
Пробел
F1
59
[Помощь]
F2
60
F3
61
F4
62
F5
63
F6
64
F7
65
F8
66
F9
67
F10
68
HOME
71
Исходная позиция
UPARROW (стрелка вверх)
72
Перемещение курсора вверх
PAGE UP
73
Листание страниц (вверх)
LEFTARROW (стрелка влево)
75
Перемещение курсора влево
RIGHTARROW (стрелка вправо)
77
Перемещение курсора вправо
END
79
Конечная позиция
DOWNARROW (стрелка вниз)
80
Перемещение курсора вниз
PAGE DOWN
81
Листание страниц (вниз)
INS
82
Вставка
DEL
83
Удаление
BACKSPACE
8
Удаление символа в предыдущей позиции
Самостоятельная работа по обработке данных строкового типа
Дана строка символов. Подсчитать, сколько раз среди символов строки встречается символ, введенный с клавиатуры.
Дана строка символов. Заменить в строке каждую точку многоточием, т.е. тремя точками.
Дана строка символов. Удалить из строки все группы букв вида abcd.
Дана строка символов. Подсчитать раздельное и общее число вхождений символов +, -, * в исходную строку.
Дана строка символов. Заменить в строке все восклицательные знаки точками.
Дана строка символов, среди которых есть двоеточие. Получить все символы до первого двоеточия, включая двоеточие.
Дана строка символов. Подсчитать, сколько раз встречается в строке последовательность символов !?-.
Дана строка символов. Преобразовать последовательность символов, заменив каждую группу стоящих рядом точек одной точкой.
Дана строка символов, среди которых есть хотя бы одно двоеточие. Получить все символы после первого двоеточия.
Дана строка символов, содержащая по крайней мере одну запятую. Найти позицию первой по порядку запятой.
Дана строка символов. Преобразовать строку следующим образом: если в строке нет символа *, то оставить строку без изменений, иначе заменить каждый символ, встречающийся после первого вхождения символа *, на символ +.
Дана строка символов. Преобразовать строку, удалив каждый символ * и повторив каждый символ, отличный от *.
Дана строка символов. Среди символов строки есть по крайней мере одна запятая. Найти позицию последней по порядку запятой.
Дана строка символов. Заменить в заданной строке все буквы «о» пробелами.
Дана строка символов. Удалить из исходной строки i–й символ.
Дана строка символов, содержащая по крайней мере один восклицательный знак. Выяснить, входит ли в последовательность символов до первого восклицательного знака заданный символ.
Даны два слова. Поменять местами буквы этих слов, занимающие одинаковые позиции.
Удалить из заданной строки все символы, совпадающие с последним символом строки.
Дана строка символов, содержащая по крайней мере один восклицательный знак. Выяснить, имеется ли среди символов до первого восклицательного знака пара соседствующих символов NO или ON.
Дана строка символов. Заменить группу символов child группой символов children.
Дана строка символов, среди которых есть двоеточия. Получить все символы, расположенные между первым и вторым двоеточиями.
Дана строка символов, содержащая по крайней мере один восклицательный знак. Выяснить, имеется ли среди символов до первого восклицательного знака пара соседствующих одинаковых символов.
Дана строка символов. Преобразовать последовательность символов, заменив в первой половине все двоеточия запятыми, а во второй половине все восклицательные знаки точками.
Дана строка символов, среди которых есть хотя бы одна точка. Преобразовать последовательность символов, удалив из нее все запятые, предшествующие точке, и заменив знаком + все цифры 3, встречающиеся после первой точки.
Дана строка символов, в которой слова разделены пробелами. Подсчитать в последнем слове данной последовательности количество символов, соответствующих введенному с клавиатуры.
Дана строка символов, включающая пробелы. Удалить из строки до первого пробела все символы, не являющиеся буквами.
Дана строка символов, включающая пробелы. Заменить в строке до первого пробела все малые буквы одноименными большими.
Дана строка символов, в которой слова разделены пробелами. Найти количество слов, начинающихся с заданной буквы.
Составить программу, определяющую, является ли введенное слово числом.
Удалить из заданной строки символов все буквы, которые встречаются в заданном слове.
Дана строка символов, в которой слова разделены пробелами. Найти количество слов, у которых первый и последний символы совпадают между собой.
Дана строка символов. Получить новую строку, в которой каждая группа стоящих рядом точек заменена многоточием, т.е. тремя точками.
Составить программу, которая удаляет из исходной строки все символы, соответствующие введенному с клавиатуры.
Дана строка символов, в которой слова разделены пробелами. Подсчитать количество слов в строке.
Задан текст, состоящий из слов, разделенных одним или несколькими пробелами. Сформировать новый текст, включив в него слова заданного текста, разделенные только одним пробелом.
Составить программу, которая вводит строку символов и выводит ее на экран, сокращая каждый раз на один символ, до тех пор, пока в строке останется только один символ.
Нравится материал? Поддержи автора!
Ещё документы из категории информатика:
Чтобы скачать документ, порекомендуйте, пожалуйста, его своим друзьям в любой соц. сети.
После чего кнопка «СКАЧАТЬ» станет доступной!
Кнопочки находятся чуть ниже. Спасибо!
Кнопки:
Скачать документ