МОУ САТИНСКАЯ СОШ Символьные переменные. Обработка символьных переменных в языке программирования Бейсик. Учитель: Щербинина М.В. Строка • В языке программирования предусмотрена работа с последовательностями символов, которые называются строками. Строка может быть задана константой или значением переменной. Строковые константы заключаются в обычные двойные кавычки: например, «Бейсик». Если между кавычками нет никаких символов (в том числе и пробела), то это особая строковая константа, которая называется пустой строкой или пустой символьной константой или пустой текстовой константой. Длина текстовой константы не более 255 символов, длина текстовой переменной не более 32567 символов. Символьные величины • Символьные величины - это буквы, цифры, знаки, слова, предложения, заключённые в кавычки. Для символьной величины существует понятие длина количество символов, из которой она состоит. Длина символьной величины в Бейсике не должна превышать 255. Строковая (символьная) переменная • Переменная считается строковой, если в конце идентификатора стоит символ $. Например, а$ - строковая (символьная) переменная. Значение символьной переменной можно задать при помощи оператора присваивания. В левой части такого оператора стоит символьная переменная, а в правой - строковое выражение. Значением текстовой переменной может являться любая текстовая константа. Каждой такой переменной можно последовательно присваивать (с помощью, например, операторов LET или INPUT) различные значения. • Например, D$ = «ИНФОРМАТИКА», INPUT F$. Операция соединения • Операции со строками отличаются от действий, которые можно выполнять с числами. Сложение, вычитание, умножение и деление для строк не имеют смысла. Основная строковая операция - это слияние строк (соединение) или конкатенация. Она объединяет две строки вместе - вторая присоединяется к первой. Соединить два слова - это значит к первому слову справа приписать второе. Обозначается операция конкатенации знаком + (плюс), например, так: «кило» + «грамм» = «килограмм» Операции конкатенация (+): "ТРАМ" + "ТАРАРАМ" = "ТРАМТАРАРАМ" Пример №1 А$ = «Красн» В$ = «тапочка» С$ = «солнышко» DS = «ая» Е$ = «ое» RO1$=A$ + D$+B$ RO2S = А$ + Е$ + С$ PRINT RO 1$,RO2$ В результате выполнения этой программы будут выведены на экран словосочетания: «Красная шапочка» и «Красное солнышко». Операции сравнения текстовых величин • Над символьными величинами можно выполнять операции отношения: =, о, <, >, <=, >= • Каждый символ в ПК представлен некоторым кодом, поэтому операция сравнения двух символьных величин заключается в сравнении соответствующих им символьных кодов. • Правило: из двух слов больше то, которое стоит дальше в словаре. Пустое слово подобно пулю. Сравнение строк производится посимвольно, сначала сравниваются первые (слева) символы строк, если они равны, то вторые, затем третьи и т. д. Первые неравные символы будут определять значение соотношения. • Операция записи множества слов в алфавитном порядке есть задача записи этих слов в порядке возрастания значений их кодов. Примеры истинных отношений «Таня» = «Дима» «PASCAL» < «ПАСКАЛЬ» «Саша» > «Саня» «СЛОН» > «МОСЬКА» «ЖИРАФ» > «ЖИР» «ПОТ» + «КОМ» <> «КОМ» + «ПОТ» Сравним свойства соединения слов и сложения чисел Переместительный закон: а+в=в+а ПОТ+КОМ ≠ КОМ+ПОТ Сравним свойства соединения слов и сложения чисел Сочетательный закон: ((а+в)+с=а+(в+с)) (ПАР+О)+ХОД= ПАР+(О+ХОД)= ПАР+О+ХОД= ПАРОХОД Сравним свойства соединения слов и сложения чисел а+0=а Слово называется пустым, если в нем вообще нет символов. Сравним свойства соединения слов и сложения чисел В отличие от сложения чисел, для соединения слов переместительный закон (а+в=в+а) не верен – результат, как правило, зависит от порядка, в котором соединяются слова. Например: ПОТ+КОМ≠КОМ+ПОТ В то же время сочетательный закон ((а+в)+с=а+(в+с)) верен: (ПАР+О)+ХОД=ПАР+(О+ХОД)=ПАР+О+ХОД=ПАРОХОД Вообще, соединяя несколько слов, скобки можно не писать. А что получится, если некоторое слово соединить с пустым словом? Слово называется пустым, если в нем вообще нет символов. Каждому ясно: от соединения с пустым словом ничего не меняется. Среди слов пустое слово играет ту же роль, что и число 0 среди чисел. Текстовые (строковые) встроенные функции Функция определения длины переменной LEN(<строка>) - функция определяет длину строки, то есть возвращает целое число, равное количеству символов в строке. Например: функция LEN("ABCDE") дает результат 5. Пример №2 • Чему будет равна переменная Х, после выполнения следующей программы: 10 REM 20 C$= «МОРЕ» 30 Х= LEN(C$) Ответ: 4 Функция выделения части слова MID$(<строка>, N1, N2) - проверяет "строку" и возвращает N2 символов, начиная с позиции N1. Если N1 больше, чем строка, MID$ возвращает пустую строку. Например: функция MID$("ABCDE", 2, 3) дает результат "BCD". Или функция МID$ (Т$, п, к) копирует к символов текста Т$, начинал с n - го, где Т$ - константа или переменная (текстовая); n, k - числа, переменные или арифметические выражения. Пример программы, которая с помощью этой функции составляет новые слова из слова «ИНФОРМАТИКА»: A$ = «ИНФОРМАТИКА» P$=MID$ (A$, 3, 5) PRINT Р$ Х$ =MID$ (AS, 5, 1) + МID$ (А$, 1, 1) + MID$ (Л$, 8, 1) + MID$(А$, 6, 1) PRINT X$ В результате выполнения этой программы на экране появятся слова ФОРМА и РИТМ Пример №3 • Какое слово будет находиться в символьной переменной B$, после выполнения программы: 10 REM 20 A$= «КРОКОДИЛ» 30 B$=MID$(A$,2,3) Ответ: рок Используя выделение части слова и соединения слов, можно решать самые разнообразные задачи. Например: Комбинируя операции + и MID$ можно из слова ЖЕЛЕЗНОДОРОЖНИК получить слово ДОЗОР: 10 А$ = «ЖЕЛЕЗНОДОРОЖНИК» 20 D$ = MID$(A$,8,2)+ MID$(A$,5,1)+ MID$(A$,9,2) Например: Из слов секрет, материя, сериалы, волшебные с помощью операций + и MID$ составить предложение: Секретные материалы. 10 A$= «СЕКРЕТ» 20 B$= «МАТЕРИЯ» 30 C$= «СЕРИАЛЫ» 40 D$= «ВОЛШЕБНЫЕ» 50 E$= “ “ 60 F$= A$+MID$(D$,7,3) 70 X$= MID$(B$,1,5)+ MID$(C$,4,4) 80 Y$= F$+E$+X$ 90 PRINT Y$ Дополнительные функции • LEFT$(<строка>, N) - выделяет из "строки" подстроку с первого до N-го знака. Здесь и далее над аргументом <строка> будем понимать символьное выражение, а аргумент N (в других функциях N1, N2) должен быть целым числом или выражением, принимающим целочисленное значение. Если N равно или больше длины отроки, выдается вся строка. Если N=0, выдается пустая строка. Например: функция LEFT$("ABCD", 3) дает результат "АВС". Т.е., Вырезка слева. LEFT$(строка, число) выдает в качестве своего значения начальный отрезок заданной строки, те заданный вторым аргументом функции количество символов слева. Дополнительные функции • RIGHT$(<строка>, N) - выделяет наиболее правые символы "строки". Если N равно или превышает длину строки, выдается вся строка. Если N=0, выдается пустая строка. Например: функция RIGHT$("ABODE", 2) дает строку "DE". 6 Т.е., Вырезка справа. RIGHT$(строка, число) выдает в качестве своего значения конечный отрезок заданной строки, те заданный вторым аргументом функции количество символов справа. Дополнительные функции VAL(<строка>) - функция преобразует цифровую строку в числовое значение. Строка может включать цифры, знаки "+", "-", "." и "Е". Если строка содержит другие знаки, то значение функции равно нулю. Например: функция VAL("1E3") дает числовое значение 1000. Дополнительные функции STR$(<выражение>) - действие функции противоположно действию функции VAL - она преобразует числовое значение в цифровую строку. Например: функция STR$(9372) дает строку "9372". • STR$(число)- преобразует число в символьную строку, которая представляет собой запись числа в виде последовательности десятичных цифр (возможно со знаком и точкой) • S$=”7*8=”+STR$(7*8) LEN(строка)- выдает длину значения символьного выражения S$=”7*8=”+STR$(7*8) ?LEN(S$) Дополнительные функции ASC(<строка>) - функция возвращает код КОИ-7 первого символа указанной строки. Например: функция ASG("ABCD") дает значение 65. ASC(строка)- выдает код первого символа строки PRINT”КОД БУКВЫ F=”;ASC(“F”) CHR$(ЧИСЛО)- обратная функции ASC ?”БУКВА С КОДОМ 70-ЭТО”:CHR$(70) CHR$(<выражение>) - функция возвращает символ КОИ-7, код которого равен значению выражения. Выражение должно приводиться к целому числу между 0 и 255. Например: функция CHR$(65) дает символ "А". HEX$(<выражение>) - функция возвращает строку, значение которой эквивалентно шестнадцатеричному представлению выражения. Например: функция HEX$(32) дает строку "20". Дополнительные функции INKEY$ - функция (без аргумента), предназначенная для опроса клавиатуры. Функция возвращает пустую строку, если не нажата ни одна клавиша, или строку с символом, соответствующим нажатой клавише. Домашнее задание 1. Из слов солнце, небыль, округ, вечный с помощью операций + и MID$ составить предложение: Солнечный круг, небо вокруг! 2. Из слов любовь, старая, действие, щука, ела, программист с помощью операций + и MID$ составить предложение: Любая действующая программа - устарела! Задание для самостоятельного решения • Из слова «ЖЕЛЕЗНОДОРОЖНИК» составить 5-10 новых слов. • Из слов «АРИФМЕТИКА» и «ОПЕРА» с помощью операций + и MID$ составить слово «АРИФМОМЕТР» • Из слов солнце, небыль, округ, вечный с помощью операций + и MID$ составить предложение: Солнечный круг, небо вокруг! Вопросы для повторения: 1. Какую величину называют переменной? 2. Какие типы переменных вы знаете? 3. Как записываются имена числовых переменных? 4. Чем отличается запись числовых переменных от записи символьных переменных? 5. Какой оператор служит для изменения значений переменных? 6. Что такое слово? 7. Что такое длина слова? 8. Какая функция используется для определения длины слова? Задача: подсчитать сколько раз среди символов заданной строки встречается буква, заданная с клавиатуры. INPUT”ВВЕДИТЕ СТРОКУ”;S$ INPUT”ВВЕДИТЕ ИСКОМУЮ БУКВУ”;С$ K=0 FOR I=1 TO LEN(S$) IF MID$(S$,I,1)=C$ THEN K=K+1 NEXT I PRINT “БУКВА”;С$;”ВСТРЕТИЛАСЬ”;К;”РАЗ” Задача: составить программу, которая печатает заданное слово задом наперед INPUT”ВВЕДИТЕ СЛОВО”; S$ FOR I=LEN(S$) TO 1 STEP -1 ? MID$(S$,I,1) NEXT I