Символьные и строковые переменные Общие понятия Для того чтобы ЭВМ могла обрабатывать тексты, она должна уметь оперировать не только с числами, но и со словами. СЛОВОМ или СТРОКОЙ в информатике принято считать любую последовательность символов некоторого алфавита. АЛФАВИТ - упорядоченная определенным образом совокупность взаимно различных знаков. Число символов в слове назовем его ДЛИНОЙ. Длина пустого слова равна нулю. Для работы со словами нам нужно научиться: 1) выделять в слове его части; 2) соединять слова в предложение или новое слово; 3) сравнивать слова: а) на равенство и неравенство; б) на больше, меньше. Каждый символ имеет свой код и, поэтому, сравнение происходит по кодам символов. Латинские буквы закодированы в алфавитном порядке. Русские буквы чаще всего не закодированы в алфавитном порядке, поэтому операции сравнения на больше или меньше для них не всегда имеют смысл. В языке Паскаль русские буквы закодированы по порядку, но внутри этого ряда вставлены символы. СИМВОЛЬНЫЕ ВЕЛИЧИНЫ. Значением символьной величины является один символ: русская или латинская большая или маленькая буква, цифра, знак препинания или специальный знак (например, "+", "*", "/" и другие). Существует также символ " ", который называется пробелом и используется для разделения слов в последовательности символов. Всего символьная величина может принимать 256 различных значений. В алгоритмическом языке символьные значения записываются в кавычках, а в языке Паскаль - в апострофах. Служебные слова для описания этого типа переменных: Алгоритмический язык – СИМ Язык Паскаль - char. ЛИТЕРНЫЕ ВЕЛИЧИНЫ. Значением литерной величины является строка символов переменной длины. Служебные слова для обозначения этого типа переменных: Алгоритмический язык - ЛИТ Язык Паскаль - string. Для обозначения i-го элемента литерной величины T в алгоритмическом языке и в языке Паскаль используется запись T[i]. В алгоритмическом языке и языке Бейсик литерные значения записываются в виде строки символов, заключенных в кавычки, а в языке Паскаль - в апострофах. После выполнения команды Т:="КРОКОДИЛ" на Алгоритмическом яз. Т:='КРОКОДИЛ'; на яз. Паскаль значением литерной величины T станет последовательность из 8 символов. К Р О К О Д И Л 1 2 3 4 5 6 7 8 T[3] - буква О. T[6] - буква Д. Количество букв в слове можно узнать с помощью следующей команды: D: integer; D:= LENGTH(C); Выделение из слова его части. S:=COPY(SI,I,J) -> из исходной строки SI выделяется подстрока. I - номер символа с которого начинается выделение и J сколько символов необходимо взять. Удаление символа из слова. DELETE(SI,I,J) -> процедура удаляющая из строки SI начиная с I-того символа J символов. Пример: SI:='кооперация'; DELETE(SI,3,1); После работы процедуры DELETE в SI будет слово 'коперация' и оно будет на один символ короче. Добавление символов в строку. INSERT(S,SI,I); -> добавляет в исходную строку SI слово S, где I номер символа с которого происходит добавление. Поиск символов в строке. J:=POS(S,SI); -> в строке SI ищет слово S. Результатом будет номер символа, с которого начинается искомое слово. Если J равно нулю, то значит ничего не нашли. Очистка слова.(Сделать длину слова равной нулю.) А:=''; Соединение нескольких слов в одно. Для соединения используется знак +. C:=A+B; Пример: A,B,C:string; A:=’зеленый’; B:=’крокодил’; C:=A+B; Writeln(C); На экране будет напечатано: зеленыйкрокодил Команды преобразования численного значения в его строковое представление и обратные действия. X:REAL; S:STRING; Процедура STR(X,S); переводит численное значение Х в его строковое представление S. Если X:=67.89, то S будет равно '67.89'. Процедура VAL(S,X,code); преобразует строковое значение S в его численное представление X. Если представление невозможно, то переменная code будет отлична от нуля. Команды для преобразования типов. var S:char; n:integer; S:=CHR(n);->возвращает символ код которого равен n. n:=ORD(s);->возвращает код символа в таблице ASCII. АЛГОРИТМЫ ДЛЯ РАБОТЫ С ЛИТЕРНЫМИ ВЕЛИЧИНАМИ. Составить алгоритм, распечатывающий ваше фамилию и имя разноцветными буквами на экране. Алгоритм программы: Из введенного с клавиатуры слова выделяем по одной букве, раскрашиваем эту букву и печатаем. Обозначения: В переменной IM хранится распечатываемый текст. В переменной D хранится количество распечатываемых букв. Переменная I показывает, какую букву мы печатаем. program fam; uses crt; var c,i,d,x,y:integer; im:string; begin clrscr; write('Ведите текст ');readln(im); d:=length(im); y:=10; for i:=1 to d do begin c:=trunc(random(15)+1); textcolor(c); gotoxy(i,y); На экране текст ИВАНОВ writeln(im[i]); y:=y+1; ПЕТЯ напечатается по end; вертикали в столбик. end. При печати текста по диагонали необходимо изменить в программе несколько строк: for i:=1 to d do begin c:=trunc(random(15)+1); textcolor(c); gotoxy(i,i+2); writeln(im[i]); end; Алгоритм подсчитывающий количество букв "а" в тексте. Просматриваем каждую букву текста и сравниваем ее с буквой "а". Если буквы одинаковые, то включаем счетчик. Обозначения: В переменной T хранится исходный текст. В переменной D хранится длина текста. Переменная I хранит номер буквы, с которой мы работаем. Переменная k считает количество сравнений. program fam; uses crt; var k,i,d:integer; im:string; begin clrscr; write('Ведите текст ');readln(im); d:=length(im);k:=0; for i:=1 to d do if im[i]=’a’ then k:=k+1; writeln(‘Количества букв «а» равно ’;k); end. После окончания цикла в переменной k будетсодержатся количество букв "а" в тексте.