Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Фрагмент таблицы ASCII-кодов букв русского алфавита




A B … П 128 129 … 143 а б … п 160 161 … 175 Коды малых букв от заглавных отличаются на 32.
P … Я 144 … 159 р … я 224 … 239 Коды малых букв от заглавных отличаются на 80.
Е 240 е 241  

 

Функции обработки символьных переменных

 

chr(x:byte):char - возвращает символ, соответствующему коду x.

Например:

writeln( chr(65) );

Результат на экране:

заглавная буква A латинского алфавита.

 

ord(c:char):byte

возвращает число, соответствующее коду символа c.

Например:

writeln( ord(‘A’) );

Результат на экране:

число 65 – код заглавной буквы A латинского алфавита.

 

upcase (c:char):char –

преобразует малые буквы латинского алфавита в заглавные.

Например:

writeln( upcase(‘a’) );

Результат на экране:

заглавная буква A латинского алфавита.

Если аргументом этой функции окажется не малая буква латинского алфавита, то эта функция никаких действий не выполнит.

 

pred(c:char):char -

возвращает предшествующий символ.

 

Например:

writeln( pred('B') );

Результат на экране:

заглавная буква A латинского алфавита, код которой на 1 меньше кода буквы B.

 

succ(c:char):char -

возвращает последующий символ.

Например:

writeln( succ(‘A’) );

Результат на экране:

заглавная буква B латинского алфавита, код которой на 1 больше кода буквы A.

 

Задача.

Вывести на экран таблицу ASCII-кодов.

 

program ASCII;

var

i: byte;

begin

for i:=1 to 255 do

writeln (chr(i),'=',i);

end.

 

Тип char в программах на Паскале часто используют для хранения вводимых с клавиатуры ответов на запросы меню.

Для этого используют функцию readkey. Работу этой функции обеспечивает модуль Crt.

Приведем пример использования:

Program char;

uses

crt;

begin

repeat

ch:= readkey

until (ch='n') or (ch='N');

end.

 

Цикл действий продолжается до тех пор, пока не будет введено с клавиатуры 'n' или 'N'.

 

Строковые переменные

 

Строковые переменные используются для хранения любой цепочки символов и занимают 255 байт памяти. Для описания строковых переменных используют служебное слово string.

 

а) var

s:string;

b) var

t:string[20];

По умолчанию под строковую переменную s будет отведено 255 байт памяти (вариант а), а под строковую переменную t будет отведено 20 байт (вариант b).

Строковые константы задаются в апострофах:

S:=’Москва’;

 

Ввод строковых переменных осуществляется с помощью оператора - readln, а вывод - writeln.

var

S:string;

begin

readln(s);

Ввод цепочки символов завершается нажатием Enter. Если количество введенных символов превышает 255, то «хвост» отбрасывается, и в переменную попадают только первые 255 символов.

Над строковыми переменными допустимы три операции: присвоение, сравнение и «слияние».

Существует два способа обработки строковых переменных:

обработка всей строки как единого целого;

строковые переменные можно рассматривать как одномерный массив символов (элементов типа char) и применять к ним функции символьных переменных.

Операция слияния:

d:= 'Москва - столица';

a:= 'России';

d + a 'Москва - столица России'

 

Функции обработки строковых переменных

 

length(s:string):byte - подсчитывается фактическая длина строки, включая пробелы и знаки препинания.

Например:

s:=’Москва’;

wrtiteln(length(s));

 

Результат на экране:

Число 6, количество символов в сломе Москва.

 

copy(s:string,i,n):string -

копируется фрагмент строки s.

Где s - переменная, из которой копируется фрагмент;

i - позиция, с которой копируется;

n - количество копируемых символов.

 

Если i и n - вне пределов строки, сообщения об ошибке не будет.

Если i>length(s ) результат - строка нулевой длины.

Если n >length(s ) результат - фрагмент от i до конца строки.

Например:

s:='электрификация';

b:=copy(s,8,3)+copy(s,12,3);

writeln(s);

Результат на экране:

фикция

 

pos(t:string,s:string):byte -

осуществляет поиск подстроки t в строке s.

Результатом этой функции является позиция вхождения t в s. Если подстрока не найден - результат 0.

Например:

t:='ритм'; s:='алгоритм';

k:=pos(t,s);

wrieln(‘k=’,k);

Результат на экране:

k=5

 

Процедуры обработки строковых переменных

 

insert(t,s,i);

- вставить подстроку t в строку s начиная, начиная с позиции i.

Например:

s:='ритм';

insert(‘алго’,s,1);

wrieln(s);

 

Результат на экране:

алгоритм

 

 

delete(s,i,n) ;

- удалить из строки s с позиции i - n символов.

Например:

s:='алгоритм';

delete(s,1,4);

writeln(s);

Результат на экране:

ритм

 

i,n - в процедурах insert и delete обязательно должны присутствовать в строке s. Иначе - сообщение об ошибке.

Примеры обработки строковых переменных

 

Задача.

В произвольном тексте заменить все сочетания “чя” на “ча”.

Таблица идентификаторов

Наименование переменной Обозначения в программе
1 Текст Text
2 Индекс массива i

 

Program word_text;

Uses crt;

var

text:string;

i:integer;

begin

clrscr;

writeln(‘Введите текст’);

readln(text);

for i:=1 to length(text)-1 do

if copy(text,i,2)=‘чя’ then

begin

delete (text,i+1,1);

insert (‘a’,text,i+1);

end;

writeln(‘Преобразованный текст’);

writeln(text);

readln;

end.

 

Задача.

В произвольном тексте (text) в слове word заменить первую букву на заглавную и подсчитать количество замен (текст латинский).

Таблица идентификаторов

Наименование переменной Обозначения в программе
1 Текст text
2 Слово word
3 Индекс массива i
4 Количество замен s

 

Program word_text1;

Uses crt;

var

text,word:string;

s,i:integer;

begin

writeln(‘Введите текст’);

readln(text);

s: =0;

writeln(‘Введите слово’);

readln(word);

for i:=1 to length(text)-lenght(word)+1 do

if copy(text,i,length(word))=word then

begin

s:=s+1;

text[i]:=upcase(text[i]);

end;

writeln (s);

readln;

end.

 

Задача.

Заменить в произвольном тексте все слова word1 на слово word2.

 

Таблица идентификаторов

Наименование переменной Обозначения в программе
1 Текст text
2 Слова первое word1
3 Слова второе word2
4 Индекс i

Program word_text2;

var

text,word1,word2:string;

i:integer;

begin

writeln(‘Введите исходный текст’);

readln text);

writeln(‘Введите первое слово’);

readln(word1);

writeln(‘Введите второе слово’);

readln(word2);

repeat

i:=pos(word1,text)

if i<>0 then

begin

delete(text,i,length(word1));

insert(word2,text,i);

end;

until i=0;

writeln(‘Преобразованный текст’);

writeln(text);

readln;

end.

 

Вопросы для самоконтроля










Последнее изменение этой страницы: 2018-04-12; просмотров: 647.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...