Символьные и строковые переменные

advertisement
Символьные и строковые
переменные
Общие понятия
 Для того чтобы ЭВМ могла обрабатывать тексты,
она должна уметь оперировать не только с
числами, но и со словами.
 СЛОВОМ или СТРОКОЙ в информатике принято
считать любую последовательность символов
некоторого алфавита.
 АЛФАВИТ - упорядоченная определенным
образом совокупность взаимно различных знаков.
 Число символов в слове назовем его ДЛИНОЙ.
 Длина пустого слова равна нулю.
Для работы со словами нам нужно научиться:
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 будетсодержатся
количество букв "а" в тексте.
Download