Главная страница
Навигация по странице:

Символьный и строковый тип данных. Символьный тип данных Символьный тип Char



Скачать 29.69 Kb.
Название Символьный тип данных Символьный тип Char
Анкор Символьный и строковый тип данных.docx
Дата 05.05.2017
Размер 29.69 Kb.
Формат файла docx
Имя файла Символьный и строковый тип данных.docx
Тип Документы
#7917


Символьный тип данных

Символьный тип Char - представляет собой тип данных, предназначенный для хранения одного символа (буквы, знака или кода). В переменную этого типа может быть помещен любой из 256 символов расширенного кода ASCII. Это буквы ['A'...'Z', 'а'... 'z'], ['А'...'Я', 'а'...'я'], цифры ['0'...'9'], знаки препинания и специальные символы. Переменная типа Char в памяти занимает один байт.

Компьютер воспринимает нажатие клавиш в виде ASCII кода. В Турбо Паскаль предусмотрена работа с символьными типами данных в виде ASCII кода. Для этого перед числом, обозначающим код ASCII нужно поставить знак #.

Таблица ASCII кода.


Код

Клавиша или комбинация клавиш

Код

Клавиша или комбинация клавиш

Алфавитно-цифровые клавиши

8

Backspace (Забой)

9

Tab (Табуляция)

13

Enter

32

Пробел

33

!

34

''

35

#

36

$

37

%

38

&

39

'

40

(

41

)

42

*

43

+

44

,

45

-

46

.

47

/

48...57

0...9

58

:

59

;

60

<

61

=

62

>

63

?

64

@

65...90

A...Z

91

[

92

\

93

]

94




95

_

96




97... 122

a...z

123

{

124

|

125

}

126



128...159

А...Я

160..175

а...п

224..239

p...я

Управляющие клавиши и их сочетания со сдвиговыми

3

Ctrl-2

15

Shift-Tab

16...25

Alt-Q...Alt-P (верхний ряд букв)

30...38

Alt-A... Alt-L (средний ряд букв)

44...50

Alt-Z...Alt-M (нижний ряд букв)

59...68

F1-F10

71

Ноmе

72

Курсор вверх

73

PgUp

75

Курсор влево

77

Курсор вправо

79

End

80

Курсор вниз

81

PgDn

82

Ins

83

Del

84..93

Shift – F1... Shift – F10

94...103

Ctrl-F1...Ctrl-F10

104...113

Alt-F1...Alt-F10

114

Ctrl - PrtScr

115

Ctrl - курсор влево

116

Ctrl - курсор вправо

117

Ctrl - End

118

Ctrl - PgDn

119

Ctrl - Home

120...131

Alt- l...Alt- =

(верхний ряд клавиш)

132

Ctrl - PgUp








К типу Char применимы следующие встроенные функции:

1) Функция Chr (x: byte): char. Возвращает символ, соответствующий ASCII - коду числа x;

2) Функция Ord (x: char):Byte. Возвращает число, соответствующее символу x в ASCII - таблицы;

3) Функция UpCase (x: char): char. Преобразует символы из строчных букв в прописные, но распространяется только на литеры латинского алфавита, русские просто игнорируются;

4) Функция Pred (x:CHAR): char. Возвращает символ, который предшествует в ASCII таблице символу x,

5) Функция Succ (x; Char): char. Возвращает символ, который следует в ASCII - таблице за символом x.

Например:

  • оrd ('A') = 65

  • chr (128) = 'Б'

  • pred ('Б') = 'A'

  • succ ('Г') = 'Д'

  • upcase ('n') = 'N'


Строковый тип данных

Строка — это последовательность символов. Максимальное количество символов в строке (длина строки) может изменяться от 1 до 255. Переменную строкового типа можно определить через описание типа в разделе определения типов или непосредственно в разделе объявления переменных.

Переменные: string [максимальная длина строки];

Если максимальная длина строки не указывается, то она равна 255 байт.

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

Разумеется, никто не запрещает вводить и выводить строки по отдельным символам, используя любой из операторов цикла. Однако такая необходимость возникает редко. Посимвольный ввод строки стоит реализовать только в том случае, если необходимо совместить ввод и какую-то обработку символов. Посимвольный вывод также удобно использовать для какой-либо нестандартной формы вывода.

Операции над строками:

1) Операция сцепления (+)

Применяется для соединения нескольких строк.

Например:

Выражение: 'Turbo' + ' Pascal'+'7.0'

Результат: 'Turbo Pascal 7.0'

2) Операции отношения

Операции =, < >, >, <, >=, <= выполняют сравнение двух строковых операндов и используются в основном при проверке условий. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается большей, в которой код первого несовпадающего символа больше. Такой способ сравнения строк называют лексикографическим. Строки считаются равными, если они совпадают по длине и содержат одни и те же символы.

Например:

Выражение

Результат

'Иванов' = 'Иванов И.И.'

false

'Иванов' < 'Иванов И.И.'

true

'program'='PROGRAM'

true

3) Функция delete(st, poz, n) — удаление n символов строки st, начиная с позиции poz. Если значение poz больше, чем размер строки, ничего не удаляется.

При удалении символов оставшаяся часть строки подтягивается к началу, чтобы занять образовавшуюся после удаления "дырку".

Например:

st: = 'peкa Волга'; delete(st, 1, 5); { в результате st='Boлгa' }

Следующий фрагмент программы удаляет все пробелы из начала строки st (пробелы в начале строки называются ведущими пробелами):

while st[l]=' ' do delete(st,1,1) ;

4) Функция insert(str1, str2, poz) — вставка строки str1 в строку str2, начиная с позиции poz. He перепутайте: первый параметр - что вставляем, второй - куда.

Например:

sl:= 'Я разрабатываю программы'; s2 := 'хорошие ';

insert (s2,sl, 16) ;

{ в результате sl='Я разрабатьшаю хорошие программы' }

При вставке строка раздвигается, чтобы вместить вставляемые символы.

При вставке в начало и конец строки действие процедуры insert аналогично выполнению операции конкатенации. Так, например, для вставки звездочек в конец строки можно использовать

s:=s+'*' на insert ('*', s, length (s)+1).

Обратите внимание — при вставке символов обязательно нужно контролировать длину полученной строки, чтобы не потерять последние символы. При этом никакого сообщения об ошибке не выдается даже при включенной директиве {$R+}.

5) Функция length(st) — вычисляет текущую длину в символах строки st. Результат имеет целочисленный тип.

Например, n:=length('123456789'); { n=9 }

6) Функция copy(st, poz, n) — выделяет из строки st подстроку длиной n символов, начиная с позиции poz. Если poz больше длины строки, то результатом будет пустая строка.

Например:

sl: = 'Turbo Pascal';

s2:=copy (s1, 1,5) ;

s3:=copy(sl,7,3) ;

{ в результате s2='Turbo'; s3='Pas' }

7) Функция concat(str1, str2,..., strn) — выполняет сцепление строк str1, str2, ... strn в том порядке, в каком они указаны в списке параметров.

Например: s:=concat('AA', 'XX', 'Y'); ( в результате s='AAXXY'; }

Функция concat выполняет те же действия, что и операция конкатенации. Например, для приведенного случая то же самое можно было записать так: s: = 'AA' + 'XX' + 'Y';.

8) Функция pos(strl, str2) — обнаруживает первое появление в строке str2 подстроки str1. Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ подстроки str1. Если в str2 подстроки str1 не найдено, результат равен 0.

Например:

s1:= 'Turbo Pascal';

n1:=pos{'Pascal',s1); n2:=pos('pascal', s1);

{В результате n1=7; n2=0 (pascal и Pascal - это разные строки)}

9) Функция str(number, st) — преобразование числового значения величины number в строку st. После number может записываться формат, аналогичный формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода расширяется автоматически до нужной длины. Удобно использовать процедуру str для вставки числовых данных в какой-либо текст, т. к. операция конкатенации и процедура insert могут работать только со строковыми данными.

Например:

var Sl,S2,s3,s4 : string; num1: integer; num2: real;



num1: =5; num2:=5.78;

str (num1, S1) ;str (num1:3,s2) ; str (num2, s3) ; str (num2: 3:1, s4);

{ в результате s1='5'; S2=' 5'; s3='5.780000000000E+00'; s4='5.8'; }

10) Функция val(st, number, code) — преобразует значение st в величину целочисленного или вещественного типа и помещает результат в numder. Сode - целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение code равно нулю, если ошибка обнаружена (строковое значение не переводится в цифровое), code будет содержать номер позиции первого ошибочного символа, а значение number не определено.

Например:

s1:= '5.78'; s2:= '5,78';

val(s1,num1, cod1);

val(s2,num2,cod2);

{ в результате cod1=0, cod2=2 - второй символ ошибочный }

Обратите внимание — использование функции val позволяет избежать неприятной ошибки выполнения Invalid numeric format, возникающей при неправильном вводе числовых данных. Приходится прибегать к такой хитрости — вводить вместо числовой переменной строковую (в ней разрешены любые символы). После этого введенная строка преобразуется в число и, если преобразование невозможно, об этом выводится сообщение на русском языке. Чаще всего в таких случаях не прерывают программу, а просят пользователя повторить ввод. Здесь очень удобно использовать цикл repeat, т. к. гарантируется выполнение тела цикла хотя бы один раз.

Например:

var s:string; n, error: integer;

begin

repeat

write('Введите число '); { просим ввести чиспо, }

readln(s); { а вводим строку }

val(s,n,error); { преобразуем строку в число }

if error>0 then writeln('Неверный символ № ', error);

until error=0;

{ продолжение программы }
написать администратору сайта