Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Belova_TM

.pdf
Скачиваний:
57
Добавлен:
06.05.2015
Размер:
2.46 Mб
Скачать

Программирование в системе Delphi с помощью строк

171

4.Каким образом можно преобразовать строковый тип в вещественный?

5.Каким образом можно преобразовать числовой тип в стро-

ковый?

6.С помощью какой функции можно найти подстроку в стро-

ке?

7.С помощью какой функции можно найти текущую длину

строки?

8.Как можно передать короткие строки в качестве параметров подпрограмм?

9.Как можно передать длинные строки в качестве параметров подпрограмм?

10.Как можно использовать широкие строки в качестве параметров подпрограмм?

11.Как можно передать нуль-терминальные строки в качестве параметров подпрограмм?

12.Чем отличаются кодировки длинных и широких строк?

13.При помощи каких компонент можно ввести строку?

14.При помощи каких компонент можно вывести на форму

строку?

15.Какие основные свойства у компонента Memo?

16.Какие основные свойства у компонента RichEdit?

17.Найдите ошибки в описаниях:

а) Const

adres:=’ул. Дейнеки,5’; max=string;

б) Type tf=string[125]; var

fstr.ft;

st2, st1,string[50]; nazv: string[280];

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

1. Дан текст, содержащий от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом – точка. Вывести эту же последовательность слов, но в обратном порядке.

172Программирование в системе Delphi с помощью строк

2.Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 1 до 10 строчных латинских букв; между соседними словами − не менее одного пробела, за последним словом − точка. Вывести все слова текста, отличные от последнего. При выводе в каждом слове удалять последнюю букву.

3.Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 1 до 10 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от последнего слова. При выводе из каждого слова удалить все предыдущие вхождения последней буквы.

4.Дан текст, содержащий от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом – точка. Вывести все слова, которые встречаются в последовательности по одномуразу.

5.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: слово симметрично. (Например, слова ааваа и вссв являются симметричными.)

6.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые имеют нечетное количество букв. При выводе из каждого слова удалить его среднюю букву.

7.Дан текст, содержащий от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами − запятая, за последним словом − точка. Вывести слова текста, упорядочив их по убыванию.

8.Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 1 до 10 строчных латинских букв и арабских цифр; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от последнего слова. При выводе из каждого слова удалить все арабские цифры.

9.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от первого слова и удовлетворяют следующемусвойству: первая буква слова входит в него еще раз.

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

173

10.Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 7 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от первого слова и удовлетворяют следующемусвойству: буквы слова упорядочены по алфавиту.

11.Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 7 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от последнего слова и удовлетворяют следующемусвойству: количество букв в слове четное.

12.Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 6 строчных латинских букв; между соседними словами 1 или более пробелов, за последним словом – точка. Вывести текст, предварительно удалив из него все однобуквенные слова и оставив между соседними словами строго по одномупробелу.

13.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 7 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать те слова текста, которые отличны от последнего слова и удовлетворяют следующему свойству: длина слова максимальна.

14.Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 1 до 10 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать все слова текста, которые отличны от первого слова, предварительно преобразовав каждое из них по следующему правилу: перенести первую буквув конец слова.

15.Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать те слова текста, которые отличны от последнего слова и удовлетворяют следующему свойству: в слове первая буква повторяется хотя бы один раз.

16.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать те слова текста, которые отличны от последнего слова и удовлетворяют следующему свойству: последняя буква входит в слово не менее трех раз.

174Программирование в системе Delphi с помощью строк

17.Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 6 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от первого слова и удовлетворяют следующему свойству: в слове встречается хотя бы одна из гласных букв (e, u, i, o, a).

18.Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 1 до 10 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от последнего слова и удовлетворяют следующему свойству: в слове первая и последняя буквы совпадают.

19.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 7 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от первого. При выводе удалить первую буквукаждого слова.

20.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 7 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от первого. При выводе удалить в каждом слове символы, имеющие четные номера.

21.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 7 строчных латинских букв; между соседними словами − не менее одного пробела, за последним словом − точка. Вывести те слова текста, которые отличны от последнего слова и удовлетворяют следующему правилу: количество символов в слове не более четырех.

22.Дан текст, содержащий от 2 до 50 слов, в каждом из которых от 1 до 7 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от первого слова. При выводе в каждом слове удалить удвоенные гласные буквы.

23.Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 1 до 9 строчных латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Вывести те слова текста, которые отличны от последнего слова и имеют минимальную длину.

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

175

24.Дан текст, содержащий от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом – точка. Вывести слова текста, упорядочив их по возрастанию количества символов.

25.Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом – точка. Вывести тот же текст, но удалив из него повторные вхождения слов.

26.Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом – точка. Вывести тот же текст, но удалив из него слова, в которых встречаются удвоенные согласные.

27.Дан текст, в котором могут быть круглые скобки. Проверить правильность расстановки круглых скобок.

10. ИЗУЧЕНИЕ РАБОТЫ С ФАЙЛАМИ В СИСТЕМЕ DELPHI

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

Виды файлов

Под файлом понимается именованная область внешней памяти ПК (жесткого диска, дискеты, диска CD-ROM), способная хранить некоторую совокупность информации. В эту область внешней памяти можно как поместить определенные данные, так и извлечь их из нее. Файл представляет собой последовательность элементов одного типа. Типом элементов может быть любой тип Object Pascal, кроме файлов, то есть нельзя создать «файл файлов».

Любой файл имеет имя − выражение строкового типа, которое строится по правилам определения имени. Наличие имени даёт возможность программе работать одновременно с несколькими файлами.

Длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти. В зависимости от способа объявления можно выделить три вида файлов:

1.Типизированные файлы (задаются предложением File of...).

2.Текстовые файлы (определяются типом TextFile).

3.Нетипизированные файлы (определяются типом File). Файловый тип или переменную файлового типа можно задать

одним из трех способов:

var

<имя> : File of <тип>; //типизированный файл <имя> : TextFile; //текстовый файл

<имя> : File; //нетипизированный файл

Здесь <имя> − имя файлового типа (правильный идентифика-

тор);

File, of − зарезервированные слова (файл, из);

Изучение работы с файлами в системе Delphi

177

TextFile − имя стандартного типа для текстовых файлов; <тип> − любой тип Object Pascal, кроме файлов.

Например:

type

Product = record Name: String; Code: Word; Cost: Comp; end;

Text80 = File of String [80];

var

Fl: File of Char;

F2: TextFile;

F3: File;

F4: Text80;

F5: File of Product;

В данном примере Fl, F4 и F5 − типизированные файлы, F2 − текстовый файл, F3 − нетипизированный файл.

Файл можно представить как потенциально бесконечный список значений одного и того же (базового) типа. Все элементы файла считаются пронумерованными, начальный элемент имеет нулевой номер. В любой момент времени программе доступен только один элемент файла, на который ссылается текущий указатель. Как правило, все действия с файлом (чтение, запись) производятся поэлементно, причём в этих действиях участвует тот элемент файла, который обозначается текущим указателем. В результате совершения операций текущий указатель может перемещаться, настраиваясь на тот или иной элемент файла.

По способу доступа к элементам различают файлы прямого и последовательного доступа. Файлом последовательного доступа называется файл, к элементам которого обеспечивается доступ в такой же последовательности, в какой они записаны. Файлом прямого доступа называется файл, доступ к элементам которого осуществляется по номеру элемента.

Вид файла, вообще говоря, определяет способ хранения в нем информации. Однако в Object Pascal нет средств контроля, вида

178

Изучение работы с файлами в системе Delphi

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

Доступ к файлам

Файлы становятся доступны программе только после выполнения особой процедуры открытия файла. Эта процедура заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла. Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре AssignFile:

AssignFile (<ф.п.>, <имя файла>);

Здесь <ф.п.> − файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа); <имя файла> − текстовое выражение, содержащее имя файла.

В Object Pascal можно открыть файл для чтения, для записи информации, а также для чтения и записи одновременно.

Для чтения файл открывается с помощью стандартной проце-

дуры Reset:

Reset (<ф.п.>);

Здесь <ф.п.> − файловая переменная, связанная ранее функцией AssignFile с уже существующим файлом.

При выполнении этой процедуры файл подготавливается к чтению информации. В результате специальная переменная-указатель, связанная с этим файлом, будет указывать на начало файла, т. е. на элемент с порядковым номером 0.

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

var

F: File;

IsFile: Boolean;

begin AssignFile(F,'myfile.dat');

Изучение работы с файлами в системе Delphi

179

try Reset(F);

IsFile := True; except

IsFile := False; end;

if IsFile then

//Файл существует else

//Файл не существует

end;

В этом фрагменте с помощью блока try ... except ... end реализуется защита программы от краха в случае, если делается попытка открыть несуществующий файл. В случае отсутствия файла при выполнении оператора Reset(F) нормальное выполнение программы прервется, и управление будет передано в секцию except ... end для обработки исключения, в которой переменной IsFile будет присвоено значение False. Если файл существует, исключение не возникнет и переменная IsFile получит значение True.

Защита программы от краха в случае, если делается попытка открытия несуществующего файла, может быть выполнена с помощью функции lOResult. Функция lOResult досталась Object Pascal в наследство от Турбо Паскаля. Она используется следующим образом: перед фрагментом программы, в котором может возникнуть ошибка ввода-вывода, ставится директива {$I-}, отключающая автоконтроль операций ввода-вывода. После выполнения опасного участка автоконтроль включается вновь директивой {$I+}, и вызывается функция lOResult. Если операция завершилась успешно, функция возвращает ноль. Следует помнить, что lOResult становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Если автоконтроль отключен, а операция вводавывода привела к возникновнию ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция lOResult. Вот как можно проверить существование файла:

180

Изучение работы с файлами в системе Delphi

var

F: File;

begin AssignFiie(F,'MyFile');

{$I-}

// Отключаем автоконтроль

Reset(F);

// Пытаемся открыть файл

{$I+}

// Включаем автоконтроль

if IOResult=0 then

//Файл существует else

//Файл не существует

end;

Стандартная процедура

Rewrite (<ф.п.>);

открывает новый файл, связанный с файловой переменной <ф.п.>, для записи. Процедурой Rewrite нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл (если он был) уничтожается и никаких сообщений об этом в программу не передается. Новый файл подготавливается к приему информации и его указатель принимает значение 0.

Стандартная процедура

Append (<ф.п.>);

открывает ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура Append применима только к текстовым файлам. Если текстовый файл ранее уже был открыт с помощью Reset или Rewrite, использование процедуры Append приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.

Функции и процедуры для работы с файлами

В таблице 10.1 описываются функции, которые можно использовать с файлами любого вида. Специфика работы с типизированными, текстовыми и нетипизированными файлами рассматривается ниже.