Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика курс лекций.pdf
Скачиваний:
149
Добавлен:
26.07.2016
Размер:
837.84 Кб
Скачать

14.2. Функции обработки символьных переменных

chr(x:byte):char - возвращает символ, соответствующему коду x. Например:

writeln( chr(65) );

Результат на экране:

заглавная буква A латинского алфавита.

ord(c:char):byte

возвращает число, соответствующее коду символа c. Например:

writeln( ord(‘A’) );

Результат на экране:

число 65 – код заглавной буквы A латинского алфавита.

upcase (c:char):char –

преобразует малые буквы латинского алфавита в заглавные. Например:

writeln( upcase(‘a’) );

Результат на экране:

заглавная буква A латинского алфавита.

Если аргументом этой функции окажется не малая буква латинского алфавита, то эта функция никаких действий не выполнит.

pred(c:char):char -

возвращает предшествующий символ.

Например: writeln( pred('B') );

Результат на экране:

заглавная буква A латинского алфавита, код которой на 1 меньше кода буквы B.

succ(c:char):char -

возвращает последующий символ. Например:

writeln( succ(‘A’) );

Результат на экране:

заглавная буква B латинского алфавита, код которой на 1 больше кода буквы A.

Задача.

Вывести на экран таблицу ASCII-кодов.

program ASCII;

71

var

i: byte; begin

for i:=1 to 255 do writeln (chr(i),'=',i); end.

Тип char в программах на Паскале часто используют для хранения вводимых с клавиатуры ответов на запросы меню.

Для этого используют функцию readkey. Работу этой функции обеспечивает модуль Crt. Приведем пример использования:

Program char; uses

crt; begin repeat

ch:= readkey

until (ch='n') or (ch='N'); end.

Цикл действий продолжается до тех пор, пока не будет введено с клавиатуры 'n' или 'N'.

14.3. Строковые переменные

Строковые переменные используются для хранения любой цепочки символов и занимают 255 байт памяти. Для описания строковых переменных используют служебное слово string.

а) var s:string; b) var

t:string[20];

По умолчанию под строковую переменную s будет отведено 255 байт памяти (вариант а), а под строковую переменную t будет отведено 20 байт (вариант b).

Строковые константы задаются в апострофах: S:=’Москва’;

Ввод строковых переменных осуществляется с помощью оператора - readln, а вывод - writeln. var

S:string; begin readln(s);

72

Ввод цепочки символов завершается нажатием Enter. Если количество введенных символов превышает 255, то «хвост» отбрасывается, и в переменную попадают только первые 255 символов.

Над строковыми переменными допустимы три операции: присвоение, сравнение и «слияние». Существует два способа обработки строковых переменных:

обработка всей строки как единого целого;

строковые переменные можно рассматривать как одномерный массив символов (элементов типа char) и применять к ним функции символьных переменных.

Операция слияния: d:= 'Москва - столица'; a:= 'России';

d + a 'Москва - столица России'

14.4. Функции обработки строковых переменных

length(s:string):byte - подсчитывается фактическая длина строки, включая пробелы и знаки препинания.

Например:

s:=’Москва’; wrtiteln(length(s));

Результат на экране:

Число 6, количество символов в сломе Москва.

copy(s:string,i,n):string -

копируется фрагмент строки s.

Где s - переменная, из которой копируется фрагмент; i - позиция, с которой копируется;

n - количество копируемых символов.

Если i и n - вне пределов строки, сообщения об ошибке не будет. Если i>length(s ) результат - строка нулевой длины.

Если n >length(s ) результат - фрагмент от i до конца строки. Например:

s:='электрификация'; b:=copy(s,8,3)+copy(s,12,3); writeln(s);

Результат на экране: фикция

pos(t:string,s:string):byte -

73

осуществляет поиск подстроки t в строке s.

Результатом этой функции является позиция вхождения t в s. Если подстрока не найден - результат 0.

Например:

t:='ритм'; s:='алгоритм'; k:=pos(t,s); wrieln(‘k=’,k);

Результат на экране: k=5

14.5. Процедуры обработки строковых переменных

insert(t,s,i);

- вставить подстроку t в строку s начиная, начиная с позиции i. Например:

s:='ритм'; insert(‘алго’,s,1); wrieln(s);

Результат на экране: алгоритм

delete(s,i,n) ;

- удалить из строки s с позиции i - n символов. Например:

s:='алгоритм'; delete(s,1,4); wrieln(s);

Результат на экране: ритм

i,n - в процедурах insert и delete обязательно должны присутствовать в строке s. Иначе - сообщение об ошибке.

14.6. Примеры обработки строковых переменных

Задача.

В произвольном тексте заменить все сочетания “чя” на “ча”.

74

Таблица идентификаторов

Наименование переменной

Обозначения в программе

1

Текст

Text

 

 

 

2

Индекс массива

i

 

 

 

Program word_text; Uses crt;

var text:string; i:integer; begin clrscr;

writeln(‘Введите текст’); readln(text);

for i:=1 to length(text)-1 do if copy(text,i,2)=‘чя’ then begin

delete (text,i+1,1); insert (‘a’,text,i+1); end;

writeln(‘Преобразованный текст’); writeln(text);

readln;

end.

Задача.

В произвольном тексте (text) в слове word заменить первую букву на заглавную и подсчитать количество замен (текст латинский).

Таблица идентификаторов

Наименование переменной

Обозначения в программе

1

Текст

text

2

Слово

word

3

Индекс массива

i

 

 

 

4

Количество замен

s

 

 

 

Program word_text1; Uses crt;

var text,word:string; s,i:integer; begin

writeln(‘Введите текст’); readln(text);

s: =0;

75

writeln(‘Введите слово’); readln(word);

for i:=1 to length(text)-lenght(word)+1 do if copy(text,i,length(word))=word then begin

s:=s+1;

text[i]:=upcase(text[i]);

end; writeln (s); readln; end.

Задача.

Заменить в произвольном тексте все слова word1 на слово word2.

Таблица идентификаторов

Наименование переменной

Обозначения в программе

1

Текст

text

 

 

 

2

Слова первое

word1

 

 

 

3

Слова второе

word2

4

Индекс

i

Program word_text2; var text,word1,word2:string; i:integer;

begin

writeln(‘Введите исходный текст’); readln text);

writeln(‘Введите первое слово’); readln(word1);

writeln(‘Введите второе слово’); readln(word2);

repeat i:=pos(word1,text) if i<>0 then begin

delete(text,i,length(word1));

insert(word2,text,i);

end; until i=0;

writeln(‘Преобразованный текст’); writeln(text);

76

Соседние файлы в предмете Информатика