Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Степан / Информатика / Паскаль (Яньков).doc
Скачиваний:
70
Добавлен:
20.04.2015
Размер:
660.99 Кб
Скачать

Н

program P7_1;

const x='Петров Саша';

Var n:integer;y:string;

begin;

n:=pos(' ',x); {n=7}

y:=copy(x,n+1,length(x))'; {y=Саша}

y:=y+’ ‘+copy(x,1,n-1);

writeln(y); {y=Саша Петров}

end.

ад символьными данными определена операция ‘+’ (аналогичнаяconcat) сцепления. Пример: ‘студент ’+’Петров’= ’студент Петров’.

Задача 7-1. В символьной строке Х=‘Петров Саша’ поменять местами имя и фамилию и поместить результат вY. Решение потребует трех действий: 1). Нахождение позиции пробелаn=7, 2). Остаток фразы от пробела (т.е. ‘Саша’) поместить вY. 3).ДополнитьYпробелом и начальным фрагментом фразы Х до пробела. Для наглядности процесс реализован в трех операторах. Но можно записать его и в одинy:=copy(x,pos(' ',x)+1,length(x))+' '+copy(x,1,pos(' ',x)-1);

коды

символы

0..32

управляющие

65..90

A..Z

97..122

a..z

128..159

А..Я (кроме Ё)

160..175

а..п (кроме ё)

224..239

р..я

240,241

Ё,ё

Задача 7-2. В символьной строке Х подсчитать количествоKслов. Считаем, что число слов равно числу пробелов +1. Первый вариант программыP7_2имеет недостаток. Если перед первым словом предложения или после последнего имеются пробелы, или внутри фразы встречается более одного пробела разом, число найденных слов окажется больше фактического. Исправим программу с учетом этих обстоятельств. Во втором варианте добавлен просмотр начала фразы до первого не пробела (j– номер первого значащего символа). Затем просматривается остаток фразы, где подсчитываются только одиночные пробелы (после пробела вi-ой позиции не должен стоять другой пробел). Дополните программу выдачей по отдельности всех слов предложения и их (справа) длин.

Представление символьных данных.Каждому символу ПК сопоставлен код (целое число от 0 до 255) изASCII-таблицы. Первые 128 символов включают цифры, знаки, латинские символы. Из них символы с кодами 0..31 являются служебными (возврат каретки, перевод строки и т.д.). Латинские буквыA..Zимеют коды 65..90,a..z– 97..122. Следующие 128 позиций заняты символами псевдографики и буквами национального алфавита. В кириллице буквыA..Я имеют коды 128..159,a..п – 160..175, р..я – 224..239, буквы Ё – 240, ё – 241. Замечаем, что коды заглавных и строчных буквa..п различаются на 32, а букв р..я – на 80. Очевидно, что на клавиатуре нет всех 256 знаков. Тем не менее, они могут быть отражены в программе с помощью своего кода в форме:#код. Например, операторwrite(#65,#177,#201,#205,#187);выведет строку: “A▒╔═╗”. Символы, отсутствующие на клавиатуре, можно найти в справочнике, а можно и вывести вместе с их кодами на экран с помощью операторов:for i:=0 to 255 do write(chr(i),i:3,' ');.Отметим, что коды от 0 до 31 являются управляющими и, хотя многие из них имеют экранное отображение, использовать эти символы для непосредственного вывода нельзя.

Символьные данные можно сравнивать между собой. При этом более короткая строка дополняется символами с кодом 0 до размеров более длинной строки. Далее последовательно слева направо коды символов сравниваются попарно из обеих строк (чей код больше – тот символ больше). Например: ‘а’<’б’; ‘а’=’а’; ’а’>’А’ (заглавные буквы имеют меньший код); ‘ВАЛЯ’<’ВАСЯ’ (расхождение в третьем символе, где ‘Л’<’C’); ‘ЯША’>’ПETP’ (буква Я больше П).