русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

СИМВОЛЬНЫЕ ДАННЫЕ


Дата добавления: 2014-11-28; просмотров: 767; Нарушение авторских прав


Паскаль позволяет обрабатывать не только числовые, но и символьные данные, которые бывают двух типов. Символы описываются в описательной части программы атрибутом CHAR и хранят один знак. Строки это цепочки символов и описываются атрибутом STRING. Например, var ST: char; SM: string[32]; SS: string. Здесь ST – одиночный символ, SM – строка не более чем из 32 символов. Если количество символов не указано, строке присваивается емкость в 255 символа. В программе и символы и строки должны заключаться в апострофы, например: ST:=‘a’; SM:=‘экзамен’;. Над символами и строками с помощью приведенных в таблице функций производятся различные операции.

 

Функция Назначение
concat (строка1,строка2) Соединяет строки строка1 и строка2 в одну (пример: concat(‘а’,’б’)=’аб’)
copy(строка, позиция, количество) Копирует из строки, начиная с заданной позиции количество символов (пример: copy(‘программа’,4,5)=’грамм’)
delete(строка, количество,позиция) Удаляет из строки количество символов, начиная с заданной позиции (пример: delete(‘программа’,4,4)=’прома’)
insert(строка1,строка2, позиция) Вставляет строку1в строку2, начиная с заданной позиции (пример: insert(‘сколько стоит’,’это ’,9)= ‘сколько это стоит’)
length(строка) Определяет длину строки (пример: length(‘саша’)=4)
pos(строка1,строка2) Отыскивает в строке2 первое вхождение строки1 и определяет номер позиции, с которой она начинается (пример: pos(‘саша’,’а’)=2)
upcase(символ) Преобразует символ латинского алфавита в заглавный
str(число, формат,строка) Преобразует число типа integer или real в строку по заданному (если есть) формату (примеры: str(5,x) – результат х=’5’, str(18.3:5:2,y) – результатy=’18.30’)
val(строка, число,признак) Преобразует строку в целое или вещественное число, если оно прошло успешно, признак =0 (пример: val(’12.4’,x,k) – получим x=12.4, k=0)
ord(символ) Преобразует символ в целое число – код символа в ASCII-таблице (пример: ord(Я)=159)
chr(число) Преобразует число в символ из ASCII-таблицы с соответствующим кодом (пример: chr(159)=’Я’)

 



Над символьными данными определена операция ‘+’ (аналогичная 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’ (буква Я больше П).

Задача 7-3.В строке S содержатся русские и латинские символы (заглавные и строчные), цифры и знаки препинания. Преобразовать все символы S в заглавные. Результат занести в D. В программе Х – строка размером в один символ, куда заносятся поочередно все символы из S для преобразования. В результате получим D='абвxyz123ABC'. Преобразование здесь осуществляет оператор вида X:=chr(ord(x[1])-32). Здесь сначала выясняется код ord(x[1])текущего символа, из него вычитается 32 (т.е. вычисляется код соответствующей заглавной буквы), и, наконец, этот код снова преобразуется в символ.



<== предыдущая лекция | следующая лекция ==>
С помощью этого оператора гораздо удобнее программировать задачу 5-2 (program P5_2). | Задания.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.079 сек.