Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Работа с символами

Алгоритмы накопления суммы и произведения | Типовые алгоритмы поиска максимума и минимума | Решение учебных задач на циклы | Одномерные массивы. Описание, ввод, вывод и обработка массивов на Паскале | Решение типовых задач на массивы | Двойной цикл и типовые задачи на двойной цикл | Оператор безусловного перехода | Матрицы и типовые алгоритмы обработки матриц | Массивы в качестве параметров подпрограммы | Открытые массивы |


Читайте также:
  1. A. Работа была выполнена к 6 часам. \ Жұмыс сағат 6-ға таман орындалды.
  2. FSA - Серийный или доработанный легковой автомобиль отечественного или иностранного производства без ограничения. Объем двигателя: от 2000 до 3000 куб.см. включительно.
  3. FSB – Серийный или доработанный серийный легковой автомобиль отечественного или иностранного производства без ограничения. Объём двигателя: от 2300 до 3500 куб.см. включительно.
  4. I РАБОТА И ОТРЕЧЕНИЕ.
  5. II. Самостоятельная работа (повторение) по вопросам темы № 11 «Множественность преступлений».
  6. Run on - работать на
  7. V. Требования к конкурсным работам.

 

Для работы с отдельными символами описываются переменные типа char:

var ch:char;

{... }

ch:='y';

Одна переменная типа char хранит информацию об одном коде ASCII-символа. Это можно использовать, например, для отслеживания действий пользователя по нажатию клавиш. Приведем пример одного из вариантов такой программы:

var ch:char;

begin

repeat

writeln;

write ('Продолжить? (Y/N)');

readln (ch);

if (ch='Y') or (ch='y') then begin

{Здесь программируется

нужный вычислительный процесс}

end

else if (ch='N') or (ch='n') then halt

{Завершение программы}

else writeln ('Нажмите Y или N');

until false;

end.

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

function ord(x):char;

— возвращает ASCII-код символа x

function chr(x: byte):char;

— возвращает символ с указанным ASCII-кодом x.

Применим последнюю функцию для того, чтобы узнать, как выглядит таблица символов кодировки DOS, используемой Паскалем:

var i,j:integer;

begin

writeln;

write ('ASCII-коды [32..255]');

for i:=2 to 15 do begin

writeln;

write (i*16:3,' ');

for j:=0 to 16 do write(chr(i*16+j),' ');

end;

writeln;

write ('ENTER для выхода...');

readln;

end.

Здесь печатаются только символы с кодами от 32 до 255 включительно, т. к. первые 32 символа с кодами от 0 до 31 -- непечатаемые (например, табуляция, перевод строки).

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

write ('Введите символ: '); readln (ch);

if ch in ['A'..'Z'] then

write ('Большая латинская;')

else if ch in ['a'..'z'] then

write ('Малая латинская;')

else if (ch in ['А'..'Я']) then

write ('Большая русская;')

else if (ch in ['а'..'п']) or

(ch in ['р'..'я']) then

write ('Малая русская;')

else if ch in ['0'..'9'] then

write ('Цифра;')

else write

('Это не алфавитно-цифровой символ;');

write (' Код Вашего символа= ',ord(ch));

Работая с алфавитными символами, приходится отдельно учитывать ввод строчных и прописных букв. Удобнее сначала преобразовать все символы к прописным с помощью функции upcase:

var ch:char; i:integer;

begin

repeat

for i:=1 to random(72) do write ('*');

writeln;

write ('Продолжить? (Y/N)');

readln (ch);

until upcase(ch)='N';

end.

К сожалению, эта функция бесполезна при работе с символами русского и других национальных алфавитов, для ее замены напишем и протестируем собственную подпрограмму c названием upcase_ru:

procedure upcase_ru (var s:string);

var i,l,c:integer;

begin

l:=length(s);

for i:=1 to l do begin

c:=ord(s[i]);

if (c>=ord('а')) and (c<=ord('п'))

then c:=c-32

else if (c>=ord('р')) and (c<=ord('я'))

then c:=c-80;

s[i]:=Upcase(chr(c));

end;

end;

 

var s:string;

begin

writeln ('Введите строку текста:');

readln (s);

upcase_ru (s);

writeln ('Преобразованная строка:');

writeln (s);

end.

Программа учитывает, что в кодировке DOS не все символы кириллицы закодированы идущими подряд числами (см. Приложение 1).

Кроме того, в программе уже применяется массив символов, которому в Паскале соответствует тип данных string (строка). Мы упоминали этот тип данных, но еще не работали с ним. Как раз строкам посвящен п. 20.2.

 


Дата добавления: 2015-11-16; просмотров: 42 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Множества и перечислимые типы| Работа со строками

mybiblioteka.su - 2015-2024 год. (0.006 сек.)