Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Строковый тип данных.doc
Скачиваний:
12
Добавлен:
12.04.2015
Размер:
1.05 Mб
Скачать

2

Министерство образования и науки российской федерации

Государственное образовательное учреждение

высшего профессионального образования

«Юго-Западный государственный университет»

(ЮЗГУ)

Кафедра информатики и прикладной математики

УТВЕРЖДАЮ

Первый проректор – проректор по учебной работе

______________Е.А. Кудряшов

«____»_______________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 Содержание

  1. Цель и содержание лабораторной работы

В данной лабораторной работе изучается структура данных «Строки».

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

  1. Общие сведения

Строковый тип − это структурный (сложный) тип данных.

Значениями данных строкового типа является последовательность символов. Данные строкового типа похожи на одномерный массив символов, количество символов в котором может динамически меняться от 0 до 230.

В Delphi имеется четыре разновидности строкового типа данных:

  • короткие строки (ShortStringилиString[N],гдеN <= 255);

  • длинные строки (String);

  • широкие строки (WideString);

  • нуль-терминальные строки (Pchar).

    1. Описание переменных строкового типа

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

Для описания короткой строки максимальной длины может использоваться стандартный тип 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 выглядят для программиста одинаково (имеют одинаковые свойства).

    1. Строковые константы

Данные строкового типа могут использоваться в качестве констант. При этом строки-константы заключаются в апострофы.

Пример 6: Const C1 = строка символов;

procedure TForm1.Button1Click(Sender: TObject);

var S1: string;

S2: string[25];

begin

……….

S1:= C1;

S2:= Строковые константы;

……….

end;

    1. Совместимость коротких и длинных строк с символьным типом

В 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. Операции над данными строкового типа

Данные строкового типа можно:

  1. Сравнивать, используя операции отношений (>, >=, <, ,<=, =, <>);

  2. Выполнять операцию сцепления (конкатенации), которая обозначается знаком «+».

Рис. 1. Результат выполнения примера 7.

Пример 8: var Line:string;

procedure TForm1.Button1Click(Sender: TObject);

begin

Line:=1234;

Line:= Line + abc

Edit1.Text:= Line;

end;

В примере 8 в компонент Edit1 будет выведена строка символов 1234abc.

Остальные операции над данными строкового типа выполняются с помощью встроенных процедур и функций, приведённых в приложении.

  1. Пример программирования с использованием данных строкового типа

Задание: Дана строка символов, Состоящая из слов. Слова разделены одним или несколькими пробелами или запятой. Сформировать новую строку, состоящую из слов, отличных от первого и повторяющихся более двух раз.

    1. Схема алгоритма

Исходные данные: входная строка 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  подсчёта количества повторений