СИМВОЛЬНЫЙ (литерный) тип данных

Download Report

Transcript СИМВОЛЬНЫЙ (литерный) тип данных

Символьный тип данных

Описание: Char;

Диапазон значений: любой символ
– это буквы, цифры, знаки препинания и
специальные символы.
Каждому символу соответствует
индивидуальный числовой код от
0 до 255(10);
( 00(16) – FF(16); 0000 0000(2) – 1111 1111(2))
1
Наиболее распространенной международной
согласованной системой символов
кодирования всех символов является
система ASCII (American Standart Code for Informational
Interchange).
Символы с кодами от 0 до 127 – основная
таблица кодов ASCII. Она идентична для
всех на всех IBM-совместимых компьютерах.
Коды с символами от 128 до 255 представляют
национальную часть.
2
Символьный тип данных является порядковым типом
данных. Область значений такого типа данных –
упорядоченное счетное множество. Каждому элементу такого
множества соответствует некоторое порядковое число,
являющееся его номером при перечислении.
Функции:





Pred(ch)– определяет предыдущее значение
символа ch; -> Pred(‘Б’) = ‘A’
Succ(ch) – определяет последующее значение
символа ch; -> Succ(‘Г’) = ‘Д’
Upcase(ch) – преобразует строчную букву в
заглавную (только латиницу); Upcase(‘n’) -> ‘N’
Ord(ch) – возвращает порядковый номер символа
ch; -> Ord(‘A’) = 65
Chr(x) – определяет символ по его порядковому
номеру; -> Chr(97) = ‘a’
3
ПРИМЕР
Program example_1;
var i,k:char;
Begin
For i:='A' to 'Z' do
Begin
For k:='A' to i do
Write (k);
writeln;
End;
readln;
end.
{Программа выводит строки символов: }
{A
AB
ABC
...
AB..YZ }
{Количество строк}
{Количество символов в строке}
{Печатает символ k}
{Переводит курсор в следующую в
строку}
4
Написать программу вывода последовательности символов
на экран:
ZYYXXX…AA…AA;
Что будет выведено на экран в результате работы
следующего фрагмента:
a:=‘Э’; b:=‘В’; c:=‘М’; write(a,b,c,#13);
a:=‘Э’; b:=‘В’; c:=‘М’; writeln(a,b,c);
5
Задача: Напишите комментарий для каждой команды
данной программы. Определите, что делает данная
программа.
program Primer_1;
var i:integer;
q:char;
begin
for i:=1 to 255 do begin
q:=chr(i);
write(q,' ');
if i mod 25=0 then writeln;
end;
readln;
end.
6
1. Напишите программу, которая запрашивает
символ и выводит соответствующий ему код.
2. Напишите программу, которая выводит на
экран все символы таблицы ASCII
7
3. Написать программу, которая подсчитывает количество
цифр, входящих в исходный текст.
(Текст – это последовательность символов, ввод которой
заканчивается нажатием клавиши [Enter] -> #13)
4. Определить, является ли введенная строка правильной
записью целого числа
5. Вычислить сумму цифр введенного числа
8
Program kolichestvo_chicel;
var ch:char; k:integer;
K=0
Написать программу, которая подсчитывает количество цифр,
Begin
входящих в исходный
текст.
Ch
k:=0; символов, ввод которой
(Текст – это последовательность
Ch ≠нажатием
#13
заканчивается
клавиши
read(ch);<Enter>.)
Да
Да
while ch<>#13 {Пока не нажата
клавиша <Enter>}
‘0’≤ch≤’9’
begin
K=k+1
if (ch>=‘0’) and (ch<=‘9’) then k:=k+1;
Ch
read(ch);
End;
K
Writeln(‘Количество цифр =’,k);
End.
9
Задача: вычислить сумму цифр введенного числа
Program Cumma_chisel;
var ch:char; k,n,s:integer;
begin
s:=0;
readln(ch);
while ch<>#13 do
begin
if (ch>='0') and (ch<='9') then
begin
n:=ord(ch); s:=s+n-48;
end;
readln(ch);
end;
Впишите комментарии.
writeln('s=',s);
end.
10
1. Написать программу, которая подсчитывает
количество букв ‘А’ и ‘a’ в тексте.
(Текст – это последовательность символов, ввод
которой заканчивается нажатием клавиши
<Enter>.)
2. Написать программу, которая печатает true,
если в заданном тексте буква А встречается
чаще, чем В, и печатает false в противном
случае.
3. Составить программу, запрашивающую
координаты ферзя на шахматном поле и
показывающую поля доски, находящиеся под боем.
11
Program ex_N;
var f:text; k1,k2,n: integer; ch:char; logic,pp:boolean;
begin
assign(f,'c:ex1.pas'); reset(f);
n:=0; logic:=true;
while not eof(f) do
begin
inc(n); k1:=0; k2:=0; pp:=false;
while not eoln(f) do
begin
read(f,ch); if ch='(' then inc(k1);
if ch=')' then if (k1<k2) then inc(k2) else pp:=true;
end;
if (k1<>k2) or pp begin writeln(‘…',n,' …'); logic:=false; end;
readln(f)
end;
Определите, какую задачу
if logic then writeln(‘…');
решает данная программа.
close(f); readln
Впишите комментарии и
end.
текст на место точек. 12