- •Программирование на языке
- •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
- •Литература
8.4. Пример написания программы
Задание: Записать в текстовой файл содержимое Мемо. Затем прочитать файл и все его строки, начинающиеся на букву "А", записать в другой текстовой файл. Далее прочитать новый файл и вывести его строки в RichEdit.
Интерфейс программы изображен на рис. 8.1, а программа - на листинге 8.1.
Рис. 8.1. Интерфейс программы
Листинг 8.1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, jpeg;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Splitter1: TSplitter;
RichEdit1: TRichEdit;
Button2: TButton;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//-----------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
//запись содержимого Мемо в файл
var
f: TextFile;
i: integer;
begin
AssignFile(f, 'F.txt');
Rewrite(f);
//записываем построчно содержимое Мемо1
for i:=0 to Memo1.Lines.Count-1 do
writeln(f, Memo1.Lines[i]);
CloseFile(f);
ShowMessage('Данные из Мемо записаны в файл "f.txt" ');
end;
//---------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
//читаем исходный файл и все строки, начинающиеся на "A" ,
// и записываем их в другой файл
var
f,f1: TextFile;
s,t: string;
begin
AssignFile(f,'F.txt');
Reset(f); //открываем 1-й файл f для чтения
AssignFile(f1,'F1.txt');
Rewrite(f1); // открываем 2-й файл f1 для записи
while not Eof(f) do begin //пока не достигли конца файла f ...
ReadLn(f,s);
if s[1] = 'А' then WriteLn(f1,s); //сравниваем с русской буквой "A"
end;
CloseFile(f);
CloseFile(f1);
// открываем 2-й файл f1 для чтения (теперь в этом файле
//все строки начинаются на "A" )
S := '';
AssignFile(f1, 'F1.txt');
reset(f1);
while not Eof(f1) do begin //пока не достигли конца файла f1 ...
ReadLn(f1, t); //читаем запись
S := S + t + #13#10; //добавляем запись в обобщенную строку S
End;
CloseFile(f1);
RichEdit1.Text := S; //выводим обобщенную строку S в RichEdit
end;
//-----------------------------------------
end.
8.5. Индивидуальные задания
Таблица 8.1
Вариант |
Задание |
1 |
Даны два текстовых файла f и f1. Определить совпадают ли компоненты файла f с компонентами файла f1. Если нет, то получить номер первой строки и позицию первого символа в этой строке, в которых файлы f и f1 отличаются между собой. Обеспечить возможность вывода файлов. |
2 |
Читается текстовой файл: а) определить, являются ли 2 первых символа файла цифрами? б) если да, то узнать, является ли число, образованное этими цифрами, четным? |
3 |
Создайте два текстовых файла: первый содержит целые числа, второй - любые символы. Упорядочите символы второго файла по алфавиту. |
4 |
Заполнить файл целыми числами из отрезка [-7000;7000] с помощью датчика случайных чисел. Переписать в один из новых файлов все четырехзначные положительные числа исходного файла, в другой - все двузначные. |
5 |
Считать из заданного текстового файла f1 слова и записать в новый текстовый файл f2 только те из них, которые оканчиваются на заданную букву. |
6 |
В заданном текстовом файле строки имеют разное количество слов, вывести строки, содержащие менее 5 слов. |
7
|
Написать программу, которая запрашивает с клавиатуры строку текста и записывает ее в текстовый файл, имя которого запрашивается с клавиатуры. |
8 |
Создать файл и заполнить его целыми числами (окончание ввода 0). Сформировать второй файл, в который записать квадраты элементов первого файла. Вывести на экран содержимое файлов с комментариями. |
9 |
Дан файл, содержащий в каждой отдельной строке фамилию, предмет и оценку(на 1 фамилию - 1...n предметов), нужно вывести список студентов, имеющих оценки только 4 и 5 по всем предметам. |
10 |
В текстовом файле получить длину каждой строки и записать её в типизированный файл. |
11 |
В текстовом файле получить длину каждой строки и записать её в типизированный файл. |
12 |
Создать файл компонентами которого являются целые числа, удалить последние 10 элементов файла. |
13 |
Имеется текстовый файл. получить другой файл, в котором в конце каждой строки заданного файла добавлен восклицательный знак. |
14 |
Создайте два типизированных файла одинакового размера, элементами которых являются отдельные буквы. Получить третий файл, каждый элемент которого представляет собой сочетание соответствующих букв первого и второго файлов. |
15 |
Имеется текстовый файл. Переписать его строки в перевёрнутом виде в другой файл. Порядок строк во втором файле должен совпадать порядку строк в заданном файле. |
Приложение