Александр Цветков - Язык программирования PASCAL
- Название:Язык программирования PASCAL
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Александр Цветков - Язык программирования PASCAL краткое содержание
Язык программирования PASCAL - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
- 40 -
Тема №15 Работа со строками символов
В языке Pascal присутствуют два типа для работы с символьной информацией. Переменные типа char могут принимать значение одного из 256 символов стандартной таблицы кодировки. Константы типа char записываются в виде одного символа в апострофах. Символьные переменные можно вводить оператором readln, но при этом придется еще нажимать Enter для подтверждения ввода. В модуле CRT есть очень удобная функция ReadKey, которая вводит символьную переменную без подтверждения ввода.
Пример : var c : char; … c:='a'; readln(c); c:=ReadKey; |
Для работы с символьными переменными в языке Pascal есть две специальные функции: ord и chr. Первая функция возвращает код (порядковый номер в таблице кодировки) символа, например ord('A') вернет значение 65. Вторая функция имеет обратный смысл, по коду, возвращает символ, т.е. chr(65) будет символ 'A'. Следующий пример выводит все символы кодовой таблицы, начиная с кода 32 [15] Коды с 0 по 31 являются служебными и в таблице ANSI им не соответствуют никакие печатные символы.
и заканчивая кодом 255. Оператор ifв цикле производит переход на новую строку после вывода линейки из 32 символов. Результат работы программы приведен ниже.
ProgramANSI;
UsesCRT;
varc : char;
i : integer;
begin
fori:=32 to255 do
begin
write(Chr (i));
if(i+1) mod 32 = 0 thenwriteln;
end;
end.

В языке Turbo Pascal появился специальный тип string, который имеет черты массива символов, а также некоторые дополнительные удобные возможности. Тип string реализован и в языке ABC Pascal.
Строки в Pascal ABC имеют тип string и состоят из не более чем 255 символов. При описании var s: string; под переменную s отводится 256 байт, при этом в нулевом байте хранится длина строки.
Для экономии памяти предусмотрено описание вида var s1: string [40]; В этом случае под строку отводится 41 байт (нулевой байт – под длину строки). В случае присваивания переменной s1 строки из более чем 40 символов лишние символы отсекаются, и длина строки s1 полагается равной 40.
При выполнении операции конкатенации («склеивания») вида s1+s1 результат считается строкой типа string, т.е. занимает 256 байт. Однако если при конкатенации результат будет занимать более 255 символов, то программа завершится с ошибкой. Строки можно сравнивать, подразумевается их упорядоченность по алфавиту.
К символам в строке можно обращаться, используя индекс: s[i] обозначает i-й символ в строке. Обращение к нулевому символу s[0] считается ошибочным.
- 41 -
Для того чтобы узнать длину строки следует воспользоваться встроенной функцией Length (s).
Чтобы изменить длину строки, следует воспользоваться процедурой SetLength (s,n).
Если индекс i выходит за пределы памяти, отводимой под строку, то выдается сообщение об ошибке. Однако если индекс i выходит лишь за пределы длины строки, то сообщение об ошибке не выдается.
Тип char и тип string могут быть параметрами процедур и функций, а также возвращаться функциями. Для иллюстрации работы со строками и символами напишем функцию, заменяющую в строки заданный символ на другой и возвращающую результат.
ProgramStrings; // замена символов a на b в строке s
functionreplace(s : string; a,b : char):string;
vari : integer;
begin
fori:=1 toLength (s) do// цикл для всех символов строки
ifs[i]=a thens[i]:=b; // замена символов
replace:=s; // имени функции присваивается значение
end;
begin
writeln (replace('мама мыла раму','м','н')); // Проверка работы функции
end.
Тип char или string может использоваться для чтения информации из текстового файла, например:
ProgramReadText;
UsesCRT;
varname : string; // Имя файла
s : string; // Буфер для чтения строки
f : text; // Файловая переменная
n : integer; // Счетчик строк
begin
write('Введите имя файла: '); readln (name); // Ввод имени файла
assign (f,name); reset (f); // Открытие файла
n:=0; // Обнуление счетчика
whilenot eof (f) do// Чтение «пока не конец файла»
begin
readln (f,s); // Чтение одной строки из файла f
writeln (n:4,': ',s); // Вывод номера и строки на экран
inc(n); // inc(n) – операция увеличения на единицу
ifn mod 25 = 0 thenreadln; // Пауза после каждой 25-й строки
end;
close (f);
end.
Задание 15
1. С помощью функций ReadKey и Ord напишите программу, которая выводила бы сразу символ и его код по нажатию одной клавиши. (2 балла)
2. Напишите целочисленную функцию с двумя параметрами, подсчитывающую сколько раз символ, заданный вторым параметром, встречается в строке, заданной первым параметром, и проверьте её работу. (2 балла)
3. Напишите программу, запрашивающую имена файлов, и копирующую один файл в другой, заодно вычисляя число строк (или символов) в файле (3 балла)
- 42 -
Для работы с текстовыми строками в языке Pascal существует набор функций, который немного расширен в реализации ABC Pascal. Приведем справочник по этим функциям.
Имя и параметры |
Типы параметров |
Тип возвращаемого значения |
Действие |
---|---|---|---|
Length(s) |
s - string |
integer |
возвращает длину строки s |
Copy(s,index,count) |
s - string, index и count - integer |
string |
возвращает подстроку строки s длины count, начиная с позиции index |
Delete(s,index,count) |
s - string, |
удаляет в строке s count символов index и начиная с позиции index count - integer |
|
Insert(subs,s,index) |
s, subs - string, index - integer |
вставляет подстроку subs в строку s с позиции index |
|
Pos(subs,s) |
s, subs- string |
integer |
возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена) |
SetLength(s,n) |
s - string, n - integer |
устанавливает длину строки s равной n |
|
Str(x,s) Str(x:n,s) Str(x:n:m,s) |
s - string, x - integer, real и n, m - integer |
преобразует x к строковому представлению (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) и записывает результат в строку s |
|
Val(s,v,code) |
s - string, v - integer, real, и code - integer |
преобразует строку s к числовому представлению и записывает результат в переменную v. Если преобразование возможно, то в переменной code возвращается 0, если невозможно, то в code возвращается ненулевое значение |
Интервал:
Закладка: