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

advertisement
Символьный тип данных
ASCII table
• American Standard
Code for Information
Interchange
• Таблица была
разработана и
стандартизована
в США в 1963 году
ASCII table
• Символы с кодами 0 – 127 – латинские буквы, цифры, знаки
препинания, управляющие символы
• Управляющие символы используются для управления
устройствами, организации передачи данных и других целей)
• Символы с кодами 128 – 255 – национальный алфавит,
символы псевдографики
• Псевдографика – символы, отображающие графические
примитивы
• Основное назначение псевдографики — графическое
оформление программ с текстовым интерфейсом
пользователя — отображение в них окон, меню, кнопок и
прочих элементов интерфейса, создания рамок и таблиц
Коды ASCII
• цифры ‘0’ до ‘9’ – от 4810 (001100002) до 5710
(001110012)
• латинский алфавит от ‘A’ до ‘Z’ – от 6510
(010000012) до 9010 (010110102)
• латинский алфавит от ‘a’ до ‘z’ – от 9710
(011000012) до 12210 (011110102)
• русский алфавит от ‘А’ до ‘Я’ – от 12810
(100000002) до 15910 (100111112)
Стандартные функции
• Функция Ord (w) возвращает код
символа w.
i: integer; w: char;
…
w:=‘A’;
i:=Ord (w); {i=65}
Стандартные функции
• Chr (i) определяет символ с кодом i.
i: integer; w: char;
…
i:=65;
w:=Chr(i); {w=A}
Стандартные функции
• Функции Ord и Chr являются
обратными друг другу:
Chr(Ord(w))=w и Ord(Chr(i))=i.
Стандартные функции
• Pred – предыдущий по порядку
• Succ – последующий по порядку
Pred(q)=Chr(Ord(q)-1)
Succ(q)=Chr(Ord(q)+1)
• На экран выводятся символы и соответствующие им
коды.
var i, k: Integer;
Begin
For i:=0 to 255 do begin
Write(i:4, ' ', Chr(i),' ');
k:=k+1;
If k=8 then begin writeln; k:=0; end;
end;
end.
• Зачем нужна переменная k?
• Переменная символьного типа используется в
качестве управляющей переменной в операторе For.
Вывести символы:
A
BB
CCC
…
WW…WW (23 раза)
var i: сhar; j: Integer;
begin
for i:=’A’ to ‘W’ do begin
For j:=1 to ord(i)-ord(‘A’)+1 do Write (i);
writeln;
end;
end.
• Определить, что будет выводиться
после следующей не очень
значительной модификации программы.
var i, j: char;
begin
For i:=’a’ to ‘z’ do
For j:=’a’ to i do Write (j);
readln;
aababcabcd…abcde….wxyz
end.
• В следующем примере подсчитывается
количество символов введенных с
клавиатуры. Ввод заканчивается символом ‘.’
(точка).
Var i: Char; j: Integer;
Begin
Read (i);
j:=0;
While i<>’.’ do
begin j:=j+1; Read (i); end;
Writeln (j);
End.
• Другая версия этой простой программы
позволяет отказаться от символа ‘.’ (точка)
как признака конца ввода данных.
Var i: Char; j: Integer;
Begin
#13 – управляющий символ
Read(i);
«возврат каретки»
j:=0;
While i<>#13 do
begin j:=j+1; Read (i); end;
Writeln (j);
End.
• А если изменить цикл на следующий:
While i<>#10 do begin j:=j+1; Read (i); end;
#10 – управляющий символ «новая строка»
- то количество посчитанных символов будет на
единицу больше. Объяснить, почему.
В конце строки всегда стоят 2 управляющих символа:
#13 #10. Если идти циклом до #10, то будет подсчитан
еще и символ #13
• В следующем примере подсчитывается
количество цифр в вводимых с клавиатуры
данных.
var ch: char; k: Integer;
Begin
read (ch);
k:=0;
while ch<>#13 do begin
If (ch>=’0’) and (ch<=’9’) then k:=k+1;
read (ch);
end;
end.
• Функция Upcase(ch) используется для
преобразования строчных английских букв в
прописные.
• Задание. Определите, какая обработка вводимых с
клавиатуры символов осуществляется в следующем
примере.
var ch: Char;
Было: AbCdeF
Begin
Стало: ABCDEF
Read (ch);
While ch<>#13 do begin
If (ch>=’a’) and (ch<=’z’)
then write (upcase(ch))
else write (ch);
Read (ch);
end;
Также есть функция Lowercase(ch)
End.
Что она делает?
Задание
для тренировки в классе
1. Набрать в FP пример со слайда 9 и
рассмотреть все символы и их коды
2. Вывести на экран (с помощью циклов)
ZYYXXX … BB…BAA…A (B – 25 раз, А – 26
раз)
3. Дан набор символов, заканчивающийся «.»,
например ABcDefg.
Сделать маленькие большими и наоборот:
abCdEFG.
Домашнее задание
(сделать в FP, записать в тетрадь)
1.
Вывести на экран символы
AAAAAAA…..(26 раза)
BBBBBB….(25 раза)
……..
XXX
YY
Z
2.
3.
4.
5.
Подсчитать, сколько раз определенный символ
(например ‘*’) встречается в данной строке.
Вывести Aa Bb Cc … Zz
Даны 2 слова, они разделены пробелом, в конце второго
стоит точка. Определить, в каком из них больше
символов «d»
Дан текст. Перед заданным символом 1 вставить символ
2 к-штук.
Download