
- •Министерство образования и науки российской федерации
- •Программирование в delphi c использованием строкового типа данных
- •305040, Курск, ул. 50 лет Октября, 94 Содержание
- •I-го слова в строке символов.
- •Interface
- •Implementation
- •Процедуры и функции для работы со строками
- •Правила использования параметров функции FloatToStrF
Министерство образования и науки российской федерации
Государственное образовательное учреждение
высшего профессионального образования
«Юго-Западный государственный университет»
(ЮЗГУ)
Кафедра информатики и прикладной математики
УТВЕРЖДАЮ
Первый проректор – проректор по учебной работе
______________Е.А. Кудряшов
«____»_______________2011 г.
Программирование в delphi c использованием строкового типа данных
Методические указания по выполнению лабораторной работы
по дисциплинам «Информатика», «Информационные технологии»
Курск 2011
УДК 681.3.06
Составитель Т.В. Алябьева
Рецензент
Кандидат технических наук, доцент Т.М. Белова
Программирование в Delphi с использованием строкового типа данных: метод. указания по выполнению лабораторной работы по дисциплинам «Информатика», «Информационные технологии» / Юго-Зап. гос. ун-т; сост. Т. В. Алябьева. Курск, 2011. 28 с.
Содержат сведения о строковом типе данных, необходимые при программировании в Delphi.
Предназначены для студентов направлений 211000, 220600, 220200.
Текст печатается в авторской редакции
Подписано в печать Формат 60 х 84 1/16.
Усл. печ. л. 1,6. Уч.- изд. л. 1,5. Тираж 50 экз. Заказ 46. Бесплатно.
Юго-Западный государственный университет
305040, Курск, ул. 50 лет Октября, 94 Содержание
Цель и содержание лабораторной работы
В данной лабораторной работе изучается структура данных «Строки».
Целью работы является получение навыков программирования в Delphi с использованием строкового типа данных.
Общие сведения
Строковый тип − это структурный (сложный) тип данных.
Значениями данных строкового типа является последовательность символов. Данные строкового типа похожи на одномерный массив символов, количество символов в котором может динамически меняться от 0 до 230.
В Delphi имеется четыре разновидности строкового типа данных:
короткие строки (ShortStringилиString[N],гдеN <= 255);
длинные строки (String);
широкие строки (WideString);
нуль-терминальные строки (Pchar).
Описание переменных строкового типа
Переменную строкового типа можно определить через описание типа в разделе описания типов или непосредственно в разделе описания переменных.
Для описания короткой строки максимальной длины может использоваться стандартный тип ShortString (эквивалент String [255]).
Пример 1: var St1: ShortString;
St2: String [30];
Выше описаны две кроткие строки:
St1 с максимальной длиной 255 символов;
St2 с максимальной длиной 30 символов.
Отличительной особенностью коротких строк является то, что элемент с нулевым индексом (St1[0] или St2[0]) содержит текущую длину строки (т.е. компилятор выделит соответственно 256 и 31 байт памяти.
Пример 2: var St3: String;
St4: Pchar;
В этом примере: St3 − длинная строка (до 2 Гбайтов);
St4 − нуль-терминальная строка.
Нуль-терминальные строки представляют собой строки символов, ограниченные символов #0. Максимальная длина строки ограничивается только объёмом доступной памяти.
Компилятор выделит для переменных St3 и St4 по 4 байта памяти, для размещения адресов памяти, начиная с которых будут фактически располагаться строки, т.е. переменные St3 и St4 фактически являются указателями.
Необходимость в использовании нуль-терминальных строк возникает только при прямом обращении к АРI-функциям ОС Windows.
Пример 3: var St5: WideString;
Переменная St5 является широкой строкой, т.е. каждый символ строки представляется символом Unicode или двухбайтным символом. По своим свойствам они идентичны длинным строкам String, но отличаются от них тем, что для представления каждого символа используются не один, а два байта.
Пример 5: Type Tstr = String[20];
var St6: Tstr;
В данном примере сначала определён тип Tstr, а затем короткая строка St6 с максимальной длиной 20 символов.
Несмотря на разницу во внутреннем представлении короткие и длинные строки в Delphi выглядят для программиста одинаково (имеют одинаковые свойства).
Строковые константы
Данные строкового типа могут использоваться в качестве констант. При этом строки-константы заключаются в апострофы.
Пример 6: Const C1 = строка символов;
procedure TForm1.Button1Click(Sender: TObject);
var S1: string;
S2: string[25];
begin
……….
S1:= C1;
S2:= Строковые константы;
……….
end;
Совместимость коротких и длинных строк с символьным типом
В Delphi короткие и длинные строки совместимы с символьным типом. Это выражается в том, что отдельные элементы строк являются символами и могут употребляться в тех конструкциях Delphi, где используются значения символьного типа (Char). И наоборот, отдельным элементам длинных и коротких строк можно присваивать значения символьного типа.
Как уже указывалось выше данные строкового типа можно рассматривать как одномерные массивы. Т.е., чтобы обратиться к отдельному элементу строки, необходимо после идентификатора (имени) строковой переменной в квадратных скобках указать выражение целого типа. Значение этого выражения определяет порядковый номер элемента (символа) строки.
Пример 7: var Buf: ShortString;
C: char;
procedure TForm1.Button1Click(Sender: TObject);
begin
Buf:='D lphi' ;
C:='A';
Buf[2]:='e';
Edit1.Text:=Buf;
Edit2.Text:= IntToStr(Ord(Buf[0]));
Buf[7]:=C;
Edit3.Text:=Buf;
Edit4.Text:= IntToStr(Ord(Buf[0]));
end;
Присваивание отдельным элементам строки не влияет на её длину. Поэтому в примере 7 (см. рис. 1) в компонент Edit1 выводится строка Delphi, в компонент Edit2 число 6, в компонент Edit3 снова Delphi, в компонент Edit4 снова число 6.
Операции над данными строкового типа
Данные строкового типа можно:
Сравнивать, используя операции отношений (>, >=, <, ,<=, =, <>);
Выполнять операцию сцепления (конкатенации), которая обозначается знаком «+».
Рис. 1. Результат выполнения примера 7.
Пример 8: var Line:string;
procedure TForm1.Button1Click(Sender: TObject);
begin
Line:=1234;
Line:= Line + abc
Edit1.Text:= Line;
end;
В примере 8 в компонент Edit1 будет выведена строка символов 1234abc.
Остальные операции над данными строкового типа выполняются с помощью встроенных процедур и функций, приведённых в приложении.
Пример программирования с использованием данных строкового типа
Задание: Дана строка символов, Состоящая из слов. Слова разделены одним или несколькими пробелами или запятой. Сформировать новую строку, состоящую из слов, отличных от первого и повторяющихся более двух раз.
Схема алгоритма
Исходные данные: входная строка s1;
Выходные данные: выходная строка s2.
Схема алгоритма формирования выходной строки в соответствии с заданием приведена на рис. 2.
Рис. 2. Схема алгоритма формирования выходной строки.
Дополнительные переменные:
l длина входной строки;
dl количество слов во входной строке;
a двумерный массив, состоящий из dl строк и двух столбцов; первый столбец содержит номер символа во входной строке, с которого начинается очередное слово, второй столбец длину слова;
i номер слова во входной строке;
ss1 первое слово входной строки ;
sst очередное слово входной строки;
m количество повторений очередного слова во входной строке;
l1 длина выходной строки.
Схема алгоритма подпрограммы Struct, формирующей массив а, содержащий информацию о местоположении и длине очередного слова во входной строке приведена на рис. 3.
Рис. 3. Схема алгоритма подпрограммы Struct.
Входные параметры:
s строка символов;
l длина строки;
Выходные параметры:
a двумерный массив, содержащий информацию о структуре строки;
k количество сток в массиве а (количество слов в строке s)
Дополнительные переменные:
c счётчик количества символов в слове;
i индекс элемента массива s (номер очередного символа в строке).
Схема алгоритма подсчёта количества повторений очередного слова в строке символов (Schet )приведена на рис. 4.
Рис.4. Схема алгоритма Schet подсчёта количества повторений