Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка-ПРОГРАММИРОВАНИЕ -DELPHI 2007.doc
Скачиваний:
7
Добавлен:
12.11.2019
Размер:
2.04 Mб
Скачать

Раздел 7. Символы и строки

Компьютер может обрабатывать не только числовую информацию, но и символьную. Язык Delphi оперирует с символьной информацией, которая может быть представлена как отдельными символами, так и строками (поcледовательностью символов).

 Символы

Для хранения и обработки символов используются переменные типа Ansichar и WideChar. Тип Ansichar представляет собой набор ANSI-символов, в котором каждый символ кодируется восьмиразрядным двоичным числом (байтом). Тип wideChar представляет собой набор символов в кодировке Unicode, в которой каждый символ кодируется двумя байтами.

Для обеспечения совместимости с предыдущими версиями поддерживается тип Char, эквивалентный AnsiChar.

Значением переменной символьного типа может быть любой отображаемый символ:

  • буква русского или латинского алфавитов;

  • цифра;

  • знак препинания;

И специальный символ, например, "новая строка".

Переменная символьного типа должна быть объявлена в разделе объявления переменных. Инструкция объявления символьной переменной в общем виде выглядит так:

Имя: char;

где:

  • имя — имя переменной символьного типа;

  • char — ключевое слово обозначения символьного типа.

Примеры:

otv: char; ch: char;

Строки

Строки могут быть представлены следующими типами: shortstring, Longstring и widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов.

Переменной типа shortstring память выделяется статически, т. е. до начала выполнения программы, и количество символов такой строки не может превышать 255. Переменным типа Longstring и widestring память выделяется динамически — во время работы программы, поэтому длина таких строк практически не ограничена.

Помимо перечисленных выше типов можно применять универсальный cтроковый тип String. Тип String эквивалентен типу Shortstring.

Переменная строкового типа должна быть объявлена в разделе объявления переменных. Инструкция объявления в общем виде выглядит так:

Имя: String;

или

Имя: String [длина]

где:

  • имя — имя переменной;

  • string — ключевое слово обозначения строкового типа;

  • длина — константа целого типа, которая задает максимально допустимую длину строки.

Пример объявления переменных строкового типа:

name: string[30];

buff: string;

Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам, т. е. объявления

stroka: string [255]; stroka: string;

эквивалентны.

В тексте программы последовательность символов, являющаяся строкой (строковой константой), заключается в одинарные кавычки. Например, чтобы присвоить строковой переменной parol значение, нужно записать:

parol:= 'Большой секрет';

или

parol:= '2001';

Следует обратить внимание, что инструкция parol:=2001; неверная, т.к. тип константы не соответствует типу переменной. Во время компиляции этой инструкции будет выведено сообщение: incompatible types: 'Char' and 'Integer' (типы Char и Integer несовместимы).

Используя операции =, <, >, <=, >= и о, переменную типа string можно сравнить с другой переменной типа string или со строковой константой. Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом. В табл. 3.1 приведены примеры сравнения строк.

 Операции со строками

В языке Delphi есть несколько полезных при работе со строками функций и процедур. Ниже приведено их краткое описание и примеры использования.

Функция length

Функция length возвращает длину строки. У этой функции один параметр — выражение строкового типа. Значением функции length (целое число) является количество символов, из которых состоит строка.

Например, в результате выполнения инструкций

n:=length('Иванов');

m:=length(' Невский проспект ');

значение переменных n и m будет равно 6 и 20.

Процедура delete

Процедура delete позволяет удалить часть строки. В общем виде обращение к этой процедуре выглядит так:

delete(Строка, р, п)

где:

  • Строка — переменная или константа строкового типа;

  • р — номер символа, с которого начинается удаляемая подстрока;

  • п — длина удаляемой подстроки.

Например, в результате выполнения инструкций

p:='Город Санкт-Петербург';

delete(s,7,6);

значением переменной s будет строка ' город Петербург'.

 Функция роs

Функция роз позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так:

pos (Подстрока,Строка) ;

где Подстрока — строковая константа или переменная, которую надо найти в строковой константе или переменной строка.

Например, в результате выполнения инструкции

р := pos('Пе','Санкт-Петербург');

значение переменной р будет равно 7. Если в строке нет искомой подстроки, то значение функции роз будет равно нулю.

Ниже приведена инструкция while, в результате выполнения которой удаляются начальные пробелы из строки st.

while(pos(' ',st) = 1) and(length(st) > 0) do delete (st,1,1);

Пробелы удаляет инструкция delete (st, i, i), которая выполняется в цикле до тех пор, пока первым символом строки является пробел (в этом случае значение роs (' ',st) равно единице). Необходимость проверки условия length (st) > 0 объясняется возможностью того, что введенная строка состоит только из пробелов.

 Функция сору

Функция сору позволяет выделить фрагмент строки. В общем виде обращение к функции сору выглядит так:

сору( Строка, р, п ) где:

строка — выражение строкового типа, содержащее строку, фрагмент которой надо получить;

  • р — номер первого символа, с которого начинается выделяемая подстрока;

  • n — длина выделяемой подстроки. Например, в результате выполнения инструкций

st:= 'Инженер Иванов'; fam:=copy(st, 9, 6) ;

значением переменной fam будет строка 'Иванов1.

Строковые величины

Задания к лабораторной работе № 7

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Определить, сколько слов, содержащих заданное количество заданной буквы.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Напечатать предпоследнее слово и количество слов.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Определить количество слов, заканчивающихся заданным символом.

  2. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Удалить символ * в каждом слове, имеющем четное количество символов, и подсчитать количество удаленных символов.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Удалить лишние пробелы, оставив между словами по одному пробелу.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Удалить небуквенные символы, которыми начинается или заканчивается слово.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Определить количество цифр, присутствующих в каждом слове.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Определить количество гласных букв в каждом слове.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Найти самое длинное и самое короткое слова.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Определить сумму цифр, присутствующих в каждом слове.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Если в слове есть цифра, то заменить после нее все символы до конца слова на заданный символ. Для каждого слова подсчитать количество замен.

  1. Дана последовательность символов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Найти слова, которые начинаются и заканчиваются цифрой и вывести их на экран.

  1. Дан текст. Преобразовать его, удалив повторяющиеся слова, поставив перед заглавными буквами точки.

  1. Дан текст. Вывести все симметричные слова, которые читаются одинаково слева направо и наоборот.

  1. Дан текст. Вывести все cлова, в которых нет повторяющихся букв.

  1. Дан текст. Вывести все слова, в которых гласные чередуются с согласными.