- •Программирование на языке
- •Object pascal в среде delphi
- •(Лабораторные работы)
- •Содержание
- •Лабораторная работа 1. Программирование линейных алгоритмов
- •1.1. Базовые элементы языка Object Pascal
- •1.1.1. Алфавит языка
- •1.1.2. Синтаксис языка
- •1.1.3. Основные типы данных
- •1.1.4. Оператор присваивания
- •1.1.5. Целые типы данных
- •1.1.6. Вещественные (действительные) типы данных
- •1.1.8. Cимвольные типы данных
- •1.1.9. Строкоые типы данных
- •1.1.10. Арифметические вычисления
- •1.2. Интегрированная среда разработчика delphi
- •1.3. Структура программ delphi
- •Interface
- •Implementation
- •1.4. Пример написания программы
- •1.4.2. Изменение заголовка формы
- •1.4.6. Написание программы обработки события
- •1.4.7. Написание программы обработки события
- •2.3. Оператор выбора Case
- •2.4. Составной оператор
- •2.5. Некоторые возможности, предоставляемые Delphi для организации разветвлений
- •Interface
- •Implementation
- •2.7. Индивидуальные задания
- •3.1.2. Организация цикла с помощью оператора repeat
- •3.2. Организация вложенных циклов
- •3.3. Организация прерывания цикла
- •3.4. Алгоритмы, использующие рекуррентную последовательность
- •3.5. Пример написания программы
- •Interface
- •Implementation
- •3.6. Индивидуальные задания
- •Лабораторная работа 4. Программирование с использованием массивов
- •4.1. Работа с массивами
- •4.2. Операции над массивами
- •4.3. Примеры часто встречающихся алгоритмов работы с массивами
- •4.4. Компонент tStringGrid для ввода/вывода массивов
- •4.5. Пример написания программы с использованием tStringGrid
- •Interface
- •Implementation
- •4.6. Компонент tEdit для ввода одномерных массивов
- •4.7. Пример написания программы с использованием tEdit
- •4.7. Компонент tMemo для ввода/вывода одномерных массивов
- •4.8. Пример написания программы с использованием tMemo
- •4.9. Индивидуальные задания
- •Лабораторная работа 5. Программирование с использованием строковых данных
- •5.1. Работа со строками
- •5.2. Пример написания программы
- •Лабораторная работа 6. Программирование с использованием подпрограмм и модулей
- •6.1. Описание подпрограмм
- •6.2. Передача данных через формальные параметры
- •6.3. Процедурные типы
- •6.4. Область видимости переменных
- •6.5. Пример написания программы с использованием процедур
- •Interface
- •Implementation
- •6.6. Использование модулей
- •6.7. Пример написания программы с использованием модуля
- •6.7.1. Создание модуля
- •6.7.2. Подключение модуля
- •Implementation
- •6.8. Индивидуальные задания
- •Лабораторная работа 7. Построение графиков
- •7.1. Компонент tChart
- •7.2. Пример написания программы
- •7.4. Индивидуальные задания
- •Лабораторная работа 8. Работа с файлами
- •8.2. Прямая работа с файлами (классический способ)
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Запись и чтение типизированных файлов
- •Запись и чтение нетипизированных файлов
- •8.3. Диалоги открытия и сохранения файлов
- •8.4. Пример написания программы
- •8.5. Индивидуальные задания
- •Средства отладки программ в delphi
- •Литература
Лабораторная работа 5. Программирование с использованием строковых данных
Цель лабораторной работы: изучить строковые данные, их типы, способы объявления в программе, а также процедуры и функции работы со строками. Написать программу с использованием строк.
5.1. Работа со строками
Строковый тип данных - один из самых часто используемых в программах тип. Действительно, без него не обходится практически ни один алгоритм. Даже программы, выполняющие исключительно математические операции, порой, написаны с использованием строковых типов данных.
Строка - это последовательность символов. В Object Pascal существует несколько строковых типов:
Тип данныхМаксимальная длинаИспользуемая памятьИспользуется для...
ShortString 255 символов от 2 до 256 байт Минимальная совместимость, хранение
небольших строк
AnsiString около 2^31 символов от 4 байт до 2 Гб 8-битные символы (ANSI), DBCS ANSI,
MBCS ANSI и т.д.
WideString около 2^30 символов от 4 байт до 2 Гб Юникод-символы -
многопользовательские сервера,
мультиязыковые приложения
Для большинства целей подходит тип AnsiString (иногда называется LongString), а также универсальный тип String (аналог AnsiString).
Примеры описания строк:
type
str_type = string[12];
const
n = 50;
var
s1: string;
s2, s3: str_type;
s4: string[n];
s5, s6, s7: string[7];
Для работы со строками в Object Pascal`е существует довольно много процедур и функций, перечислять которые здесь не имеет смысла. Приведем только некоторые из них.
Стандартные функции и процедуры обработки строк:
Функция Length(Str: String) - возвращает длину строки (количество символов).
Пример:
var
Str: String; L: Integer;
{ ... }
Str:='Привет!';
L:=Length(Str); { L = 6 }
Функция SetLength(Str: String; NewLength: Integer) позволяет изменить длину строки. Если строка содержала большее количество символов, чем задано в функции, то "лишние" символы обрезаются.
Пример:
var Str: String;
{ ... }
Str:='Hello, world!';
SetLength(Str, 5); { Str = "Hello" }
Функция Pos(SubStr, Str: String) - возвращает позицию подстроки в строке. Нумерация символов начинается с единицы. В случае отсутствия подстроки в строке возращается 0.
Пример:
var Str1, Str2: String; P: Integer;
{ ... }
Str1:='Пример решения 1-й задачи';
Str2:='1-й';
P:=Pos(Str2, Str1); { P = 16 }
Функция Copy(Str: String; Start, Length: Integer) - возвращает часть строки Str, начиная с символа Start длиной Length. Ограничений на Length нет - если оно превышает количество символов от Start до конца строки, то строка будет скопирована до конца.
Пример:
var Str1, Str2: String;
{ ... }
Str1:='Тест решения задачи';
Str2:=Copy(Str1, 6, 7); { Str2 = 'решения' }
Функция Delete(Str: String; Start, Length: Integer) - удаляет из строки Str символы, начиная с позиции Start длиной Length.
Пример:
var Str1: String;
{ ... }
Str1:= 'Тест решения задачи';
Delete(Str1, 6, 8); { Str1 = 'Тест задачи' }
Функции UpperCase(Str: String) и LowerCase(Str: String) преобразуют строку соответственно в верхний и нижний регистры:
Пример:
var Str1, Str2, Str3: String;
{ ... }
Str1:='hELLo';
Str2:=UpperCase(Str1); { Str2 = 'HELLO' }
Str3:=LowerCase(Str1); { Str3 = 'hello' }
Строки можно сравнивать друг с другом стандартным способом:
Пример:
var Str1, Str2, Str3: String; B1, B2: Boolean;
{ ... }
Str1 := '123';
Str2 := '456';
Str3 := '123';
B1 := (Str1 = Str2); { B1 = False }
B2 := (Str1 = Str3); { B2 = True }
Если строки полностью идентичны, логическое выражение станет равным True.
Помимо отмеченных стандатных фунций и процедур, существует еще довольно большое количество дополнительных, которые размещены в модуле StrUtils.pas. Чтобы подключить этот модуль к программе, нужно добавить его имя (StrUtils) в раздел Uses.