Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
10
Добавлен:
01.03.2025
Размер:
7.34 Mб
Скачать

Var I, j: Byte;

c: Char;

f: Text;

Begin

ClrScr;

Assign(f, 'D:\User\ASCII.txt');

ReWrite(f);

Write(f, ' | ');

For j:=0 To 15 Do

Write(f, n[j+1],' ');

WriteLn(f);

WriteLn(f, s);

Write(f, '0 | ');

For j:=0 To 15 Do

Begin

If (j In [9,10,13])

Then c:=' '

Else c:=Chr(j);

Write(f, c, ' ');

End;

WriteLn(f);

For i:=1 To 15 Do

Begin

Write(f, n[i+1],' | ');

For j:=0 To 15 Do

Write(f, Chr(i*16+j), ' ');

WriteLn(f);

End;

WriteLn(f, s);

WriteLn(f);

Close(f);

End.

Результат работы программы - кодирование в 16-ричной системе счисления, причем символы первых двух строк на экран вывести нельзя – это управляющие символы:

| 0 1 2 3 4 5 6 7 8 9 A B C D E F

--+-----------------------------------------------

0 |

1 | µ § ‑ ­

2 | ! " # $ % & ' ( ) * + , - . /

3 | 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

4 | @ A B C D E F G H I J K L M N O

5 | P Q R S T U V W X Y Z [ \ ] ^ _

6 | ` a b c d e f g h i j k l m n o

7 | p q r s t u v w x y z { | } ~ 

8 | Ђ Ѓ ‚ ѓ „ … † ‡ € ‰ Љ ‹ Њ Ќ Ћ Џ

9 | ђ ‘ ’ “ ” • – — ˜ ™ љ › њ ќ ћ џ

A |   Ў ў Ј ¤ Ґ ¦ § Ё © Є « ¬ ­ ® Ї

B | ° ± І і ґ µ ¶ · ё № є » ј Ѕ ѕ ї

C | А Б В Г Д Е Ж З И Й К Л М Н О П

D | Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я

E | а б в г д е ж з и й к л м н о п

F | р с т у ф х ц ч ш щ ъ ы ь э ю я

--+-----------------------------------------------

Таким образом, 16-ричный код цифры ноль – 30, что соответствует ее коду 48 в десятичной системе счисления.

Строки с нулевой по седьмую – это первая, стандартная часть таблицы, где хранятся коды цифр, символов латинского алфавита и некоторых символов клавиатуры. Строки с восьмой по F – это расширенная, национальная часть таблицы, где хранятся коды символов национальных алфавитов.

Рассмотрим стандартную часть таблицы, состоящую из первых восьми строк. Разобьем ее на две половины по четыре строки. Если S – любой символ из верхней половины, то ^S – символ из нижней половины, находящийся в том же столбце, то есть отстоящий на четыре строки, и наоборот.

Например, ^} соответствует = , наоборот ^= соответствует символу }.

Аналогичное правило действует и в расширенной, национальной части таблицы.

При вводе с клавиатуры исходных данных знак карата ^ соответствует нажатию клавиши CTRL, удерживаемой при одновременном нажатии того или иного знака. Этим часто пользуются при вводе символов, отсутствующих на клавиатуре: будет соответствовать символу ¬ (операция отрицания).

Нумерация элементов строки начинается с единицы. Для каждого элемента строки в оперативной памяти выделяется 1 байт. Для хранения текущей длины строки в памяти выделяется дополнительный байт в начале строки (нулевой байт). Длина строки хранится в нем в виде ASCII-символа, порядковый номер которого и определяет ее длину. Например, Ord(my_str[0])=19 – в ней 19 символов, включая пробелы.

В программе строки можно задать операторами присваивания:

srt_1 := ‘Это первая строка’; записывается в апострофах

srt_2 := ‘Это вторая строка’;

или ввести с клавиатуры целиком, указывая имя строки:

ReadLn(str_1); вводится без апострофов

Если длина задаваемой строки меньше длины, указанной в ее описании, то остальные элементы строки не заполняются, а если больше – то лишние элементы отбрасываются.

Строки можно выводить на экран целиком, указывая имя строки:

WriteLn(str_1);

Помимо присваивания, ввода и вывода, над строками определены следующие операции:

1. сложение (конкатенация) строк:

str_1 :=’Turbo’;

str_2 := ‘ Pascal’;

str_3 := str_1 + str_2; в str_3 будет фраза Turbo Pascal

2. сравнение строк – осуществляется операциями отношения >, >=, <, <=, =, <> посимвольно слева направо до первого несовпадающего символа – сравниваются коды символов строк. Большей считается та строка, у которой код этого символа больше:

Vova’ > ‘Vasja’ = True так как Ord(‘o’) > Ord(‘a’)

Для работы со строками определены следующие функции:

1. Length(строка) - текущая длина строки – количество символов в ней (целое число):

str_1 :=’Turbo’;

n := Length(str_1); n=5 – в строке 5 символов

2. Pos(строка_1, строка_2) - определение положения строки_1 в строке_2 (положение - номер символа – целое число):

str_1 :=’ша’;

str_2 :=’Наша Маша шагает в шапке’;

n := Pos(str_1, str_2); n=3определяется первое вхождение str_1 в str_2, а это позиция с номером 3 во второй строке

Внимание! Если искомая строка не найдена, то результат равен нулю.

3. Copy(строка, номер символа, длина фрагмента) - копирование фрагмента заданной длины, начиная с заданного номера символа строки; получается новая строка:

str_1 :=’браконьер’;

str_2:=Copy(str_1, 2, 3); из строки браконьер, начиная со второй буквы, копируется фрагмент длиной 3 символа; получается str_2=’рак’

4. Concat(строка_1, строка_2, строка_3, ...)конкатенация (сложение) строк; получается новая строка:

str_1 :=’Turbo’;

str_2 := ‘ Pascal’;

str_3 := Concat(str_1, str_2); в str_3 будет фраза Turbo Pascal

Внимание! Длина суммарной строки не должна превышать 255 символов.

Для работы со строками определены следующие процедуры:

1. Delete(строка, номер символа, длина фрагмента) - удаление из строки фрагмента заданной длины, начиная с заданного номера символа строки; получается новая строка_1:

str_1 :=’коробочка’;

Delete(str_1, 4, 2); из строки коробочка, начиная с четвертой буквы, удаляется фрагмент длиной 2 символа; получается str_1=’корочка’

2. Insert(строка_1, строка_2, номер символа) - вставка строки_1 в строку_2, начиная с заданного номера символа; получается новая строка_2:

str_1 :=’сор’;

str_2 :=’мука’;

Insert(str_1, str_2, 3); в строку мука, начиная от третьей буквы, вставляется строка сор; получается str_2=’мусорка’

Паскаль позволяет преобразовывать данные числового типа в строку символов, а также преобразовывать строку в число, если она содержит последовательность символов, удовлетворяющую правилам записи чисел. Для этого используются две процедуры:

1. Str(число, строка) - преобразование числового значения величины число в строку:

x:= 3.14;

Str(x, str_1); строка str_1 примет значение ‘3.14’

2. Val(строка, число, код) - преобразование значения строки в величину целого или вещественного типа число. Если во время операции преобразования ошибки не обнаружено, то значение кода равно нулю. Если же обнаружена ошибка (строка не переводится в число), то код будет содержать номер позиции ошибочного символа, а значение числа не определено:

str_1 := ‘3.14’;

Val(str_1, x, n); строка str_1 преобразуется в число x=3.14, n = 0 (ошибок нет)

str_1 := ‘3,14’;

Val(str_1, x, n); строка str_1 не будет преобразована в число, n = 2 (второй символ – запятая - ошибочен), x не определен

Использование этой функции позволяет избежать неприятной ошибки выполнения Invalid numeric format, возникающей при неправильном вводе числовых данных, при появлении которой программа заканчивает работу. Если же вводить число в виде строки, а потом преобразовывать ее в число, используя процедуру Val, то даже при некорректном вводе можно будет продолжать работу, анализируя значение кода ошибки и повторив ввод.

С остальными структурами данных – множествами, записями и файлами – мы познакомимся после изучения базовых структур алгоритмических языков, позволяющих осуществлять обработку данных по сложным алгоритмам.