курсовая работа delphi / 220c1d9e87ed431a50a13ca7836572fe_Lab_Pascal-Delphi(TMS_A5)__________лекции
.pdfReset(F); |
{ Открываем файл для чтения } |
WriteLn('Сведения об учениках класса: '); |
|
While NOT EOF(F) do
begin { Чтение сведений об одном ученике из файла} Read(F,a);
Write(a.famil,' ',a.oc1,' ',a.oc2);
WriteLn |
|
end; |
|
Close(F); |
{ Вывод списка успевающих учеников |
Reset(F); |
|
} |
|
WriteLn('Список успевающих учеников: '); While NOT EOF(F) do
begin
Read(F,a);
If (a.oc1>=4) AND (a.oc2>=4) { Успевающий ли ученик? } then WriteLn(a.famil)
end;
Close(F);
ReadLn
END.
3. Проведите отладку программы и проверьте результат в полученном текстовом файле.
2.2. Применение текстовых файлов.
1.Задание: В текстовом файле f.txt записаны (вперемешку) целые числа: поровну отрицательных и положительных. Используя только один вспомогательный файл, переписать в текстовый файл h.txt все эти числа так, чтобы:
порядок отрицательных чисел был сохранен;порядок положительных чисел был сохранен;
любые два числа, стоящие рядом, имели разные знаки.
2.Решение: Если бы нам разрешили использовать два вспомогательных файла, мы бы просто переписали все положительные числа в один из них, а все отрицательные – в другой. А затем объединили бы два этих файла. В нашем же случае придется переписать во вспомогательный файл только положительные числа. Затем при «сборке» мы будем считывать из вспомогательного файла «все подряд», а из исходного – только отрицательные числа..
3.В рабочей области редактора наберите код программы, представленный на листинге 1.
Родионов К.А. Лабораторный практикум |
71 |
Листинг 1.
Program z1;
var f,g,h: text; k: integer;
begin
assign(f,’f.txt’);
assign(g,’g.txt’);
assign(h,’h.txt’);
{Переписываем положительные числа в доп.файл} reset(f);
rewrite(g);
while not eof(f) do begin read(f,k);
if k>0 then write(g,’ ‘,k);
end;
{Собираем числа в новый файл h.txt}
reset(f); {Возвращаем указатель на начало файла f} reset(g);
rewrite(h);
while not eof(g) do begin read(g,k);
write(h,k,’ ‘); repeat
read(f,k) until k<0; write(h,k,’ ‘);
end;
close(f);
close(g);
close(h);
end.
4. Проведите отладку программы и проверьте результат в полученном текстовом файле.
2.3. Использование директив {$I}.
Задание: При помощи системной функции IOResult проверьте существование файла.
Наберите код программы, представленный на листинге 2.
Родионов К.А. Лабораторный практикум |
72 |
Листинг 2.
. . .
flag:= false;
write('Введите имя файла: '); repeat
readln(s); {s:string} {$I-}
assign(f,s);
reset(f);
case IOResult of 0: flag:= true;
3: write('Путь к файлу указан неверно. Измените путь: ');
5:write('Доступа к файлу нет. Измените имя файла: ');
152:write('Такого диска нет. Измените имя диска: '); else write('Такого файла нет. Измените имя файла: '); end;
until flag; {$I+}
Проверьте работу программы путем задания правильного и неправильного имени файла (пути, диска).
3. САМОСТОЯТЕЛЬНАЯ РАБОТА
Разработать программы для обработки текстовых файлов, в соответствии с вариантом задания.
Вариант 1.
1.Дан файл f, компоненты которого являются действительными числами. Найдите: (а) сумму компонент файла f; (б) произведение компонент файла f; (в) сумму квадратов компонент файла f; (г) модуль суммы и квадрат произведения компонент файла f; (д) последний компонент файла.
2.Дан файл f, содержащий сведения о кубиках: размер каждого кубика (длина ребра в см), его цвет (красный, зеленый, желтый, синий) и материал (деревянный, металлический, картонный). Найдите: (а) количество кубиков каждого из перечисленных цветов и их суммарный объём; (б) количество деревянных кубиков с ребром 3 см и количество металлических кубиков с ребром, превышающим 5 см.
Родионов К.А. Лабораторный практикум |
73 |
Вариант 2.
1.Дан файл f, компоненты которого являются действительными числами. Найдите: (а) наибольший компонент; (б) наименьший компонент с четным номером; (в) наибольший модуль компонента с нечётным номером; (г) разность первого и последнего компонента файла.
2.Дан файл f, компоненты которого являются целыми числами. Получите файл g, образованный из файла f исключением повторных вхождений одного и того же числа.
Вариант 3.
1.Дан файл f, компоненты которого являются целыми числами. Найдите среди компонентов количество квадратов простых чисел.
2.Дан файл f, компоненты которого являются целыми числами, причём никакой из компонент файла не равен 0. Файл f содержит столько же отрицательных чисел, сколько и положительных. Используя вспомогательный файл h, перепишите компоненты файла f в файл g так, чтобы в файле g: (а) не было двух соседних чисел с одинаковым знаком; (б)вначале шли положительные, затем отрицательные числа; (в) числа шли в следующем порядке: два положительных, два отрицательных, два положительных, два отрицательных и т.д. (предполагается, что число компонентов в файле f делится на 4).
Вариант 4.
1.Дано натуральное число n. Запишите в файл целые числа b1,...,bn, для
которых bi=2i+3 i+1, i=1,2,...,n.
2. Дан файл f, компоненты которого являются целыми числами, причём никакой из компонентов файла не равен 0. Числа в файле идут в следующем порядке: десять положительных, десять отрицательных, десять положительных, десять отрицательных и т.д. Перепишите компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: (а) пять положительных, пять отрицательных, пять положительных, пять отрицательных и т.д.; (б) двадцать положительных, двадцать отрицательных, двадцать положительных, двадцать отрицательных и т.д. (предполагается, что число компонентов в файле f делится на 40).
Вариант 5.
1.Последовательность x1,x2,... образована по закону xi=(i-0.1)/(i3+2 i), i=1,2,... Дано действительное число S>0. Запишите в файл H члены
последовательности x1,x2,..., остановившись после первого члена последовательности, для которого выполнено условие |xi|<S.
2.Дан файл f, компоненты которого являются целыми числами, причём число компонентов файла делится на 5. Запишите в файл g наибольшее значение первых пяти компонентов файла f, затем - следующих пяти компонентов и т.д.
Родионов К.А. Лабораторный практикум |
74 |
Вариант 6.
1.Дан символьный файл f. Получите копию данного файла в файле g.
2.Дан файл f, компоненты которого являются целыми числами. Запишите в файл g наибольшее значение первых пяти компонентов файла f, затем следующих пяти компонентов и т.д. Если в последней группе окажется менее пяти компонентов, то последний компонент файла g должен быть равен наибольшему из компонентов файла f, образующих последнюю (неполную) группу.
Вариант 7.
1.Даны символьные файлы f1 и f2. Перепишите с сохранением порядка следования компоненты файла f1 в файл f2, а компоненты файла f2 - в файл f1. Используйте вспомогательный файл h.
2. Даны символьные файлы f и g. Определите, совпадают ли компоненты файла f с компонентами файла g. Если нет, то получите номер первого компонента, в котором файлы f и g отличаются между собой. В случае, когда один из файлов имеет n компонентов и повторяет начало другого (более длинного) файла, ответом должно быть число n+1.
Вариант 8.
1. Даны файлы f1,f2,f3,f4,f5, компоненты которых являются вещественными числами. Организуйте обмен компонентами между файлами в соответствии со следующей схемой:
f1 |
f2 |
f3 |
f4 |
f5 |
↓ |
↓ |
↓ |
↓ |
↓ |
f3 |
f4 |
f5 |
f2 |
f1 |
т.е. компоненты файла f1 переписываются в файл f3, компоненты файла f2 -
вf4 и т.д. Разрешается использовать только один вспомогательный файл h.
2.Дан символьный файл f, содержащий сведения о сотрудниках учреждения, записанные по следующему образцу:
Фамилия Имя Отчество Фамилия Имя Отчество ... Запишите эти сведения в файле g, используя следующие образцы: (а) Имя Отчество Фамилия Имя Отчество Фамилия ...; (б) Фамилия И.О. Фамилия И.О. ...
Вариант 9.
1.Дан символьный файл f, содержащий не менее двух компонентов. Определите, являются ли два первых символа файла цифрами. Если ответ - "да", то установите, является ли число, составленное из этих цифр, чётным.
2.Прямая на плоскости задается уравнением ax+by+c=0, где a и b одновременно не равны 0. Будем рассматривать только прямые, для которых коэффициенты a, b, c - целые числа. Пусть f - файл, содержащий коэффициенты нескольких прямых (не менее трёх). Перепишите из файла f
вфайл g коэффициенты тех прямых, которые: (а) параллельны первой из прямых, заданной в файле f; (б) указаны в пункте (а), но дополнительно
Родионов К.А. Лабораторный практикум |
75 |
требуется, чтобы все прямые были различны; (в) пересекают первую из прямых, заданных в файле f; (г) указаны в пункте (в), но дополнительно требуется, чтобы среди прямых не было параллельных.
Вариант 10.
1.Дан файл f, компоненты которого являются целыми числами. Получите в файле g все компоненты файла f: (а) являющиеся чётными числами; (б) делящиеся на 3 и не делящиеся на 7; (в) являющиеся точными квадратами.
2.Даны числовые с целыми компонентами файлы f и g. Запишите в файл h все начальные совпадающие компоненты файлов f и g.
Вариант 11.
1.Получите для заданного натурального числа n в файле f последовательные числа Фибоначчи uo,u1,...,un+1.
2.Прямая на плоскости задается уравнением a x+b y+c=0, где a и b одновременно не равны 0. Будем рассматривать только прямые, для которых коэффициенты a, b, c - целые числа. Пусть f - файл, содержащий коэффициенты нескольких прямых (не менее трёх). Получите в файле g коэффициенты всех различных прямых файла f.
Вариант 12.
1.Дан символьный файл f. Получите файл g, образованный из файла f заменой всех его прописных букв одноименными строчными.
2.Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл f, содержащий сведения об учениках школы. (а) Выясните, имеются ли в школе однофамильцы. (б) Выясните, имеются ли однофамильцы в какихлибо параллельных классах. (в) Выясните, имеются ли однофамильцы в каком-нибудь классе. г) Ответьте на вопросы (а)-(в), но в отношении учеников, у которых совпадают и имя, и фамилия. (д) Выясните, в каких классах насчитывается более 35 учащихся. (е) Выясните, на сколько человек
ввосьмых классах больше, чем в десятых. (ж) Соберите в файле g сведения об учениках 9-х и 10-х классов, поместив вначале сведения об учениках класса 9а, затем 9б и т.д., затем 10а, 10б и т.д.
Вариант 13.
1.Вычислите по схеме Горнера значение многочлена с рациональными коэффициентами для данного рационального значения переменной. Числители и знаменатели коэффициентов записаны в файле f в следующем порядке: вначале числитель и знаменатель старшего коэффициента, в последнюю очередь - числитель и знаменатель свободного члена.
2.Дан файл f, содержащий те же сведения об учениках, что и в предыдущей задаче, и дополнительно отметки, полученные учениками в последней четверти. (а) Выясните, сколько учеников школы не имеют
Родионов К.А. Лабораторный практикум |
76 |
отметок ниже четырех. (б) Соберите в файле g сведения о лучших учениках школы, т.е. об учениках, не имеющих отметок ниже 4 и по сумме баллов не уступающих другим ученикам своего и параллельных классов.
Вариант 14.
1.Дан файл f, компоненты которого являются целыми числами. Запишите в файл g все чётные числа файла f, а в файл h - все нечётные. Порядок следования чисел сохранить.
2.Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан файл f, содержащий сведения о нескольких автомобилях. Найдите: (а) фамилии владельцев и номера автомобилей данной марки; (б) количество автомобилей каждой марки.
Вариант 15.
1.Дан символьный файл f. Запишите в файл g компоненты файла f в обратном порядке.
2.Дан файл f, содержащий различные даты; каждая дата - это число, месяц и год. Найдите: (а) год с наименьшим номером; (б) все весенние даты; (в) самую позднюю дату.
Дополнительные задачи.
1.Из текстового файла в одномерный массив (размер N) ввести числа. Удалить из него все повторяющиеся числа, оставив по одному экземпляру разных чисел. Дополнительных массивов не использовать. Вывести в текстовый файл измененный массив и количество удаленных элементов.
2.Из текстового файла ввести числа, количество которых неизвестно. Найти первое самое большое число, среди введенных после первого положительного, и его номер.
Отчет по лабораторной работе
Результаты выполнения лабораторной работы должны быть сохранены в файлы и представлены для контроля преподавателю. Отчет по лабораторной работе должен содержать: цели и задачи работы, распечатку исходного кода программ, исходные и результирующие файлы.
Родионов К.А. Лабораторный практикум |
77 |
ЛАБОРАТОРНАЯ РАБОТА №5
«ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТРОВАННЫХ КОМПОНЕНТОВ В ИНСТРУМЕНТАЛЬНОЙ СРЕДЕ DELPHI»
Тема: Применение объектно-ориентрованных компонентов в инструментальной среде Delphi.
Цель работы: знакомство с инструментальной средой программирования Delphi, развитие навыков работы с базовыми компонентами Delphi.
•изучить интерфейс инструментальной среды программирования
Delphi;
•научиться работать с базовыми компонентами;
•овладеть навыками быстрого создания законченных приложений
Windows.
Лабораторная работа выполняется в операционной системе Windows ХР/200х с использованием инструментальной среды Delphi и языка программирования Object Pascal.
1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Общие замечания
Приступая к созданию законченного приложения Windows, необходимо помнить:
•Процесс создания программы в Delphi состоит из двух шагов: сначала нужно создать форму программы (диалоговое окно), затем — написать процедуры обработки событий. Форма приложения (так принято называть прикладные программы, работающие в Windows) создается путем добавления в форму компонентов и последующей их настройки.
•В форме практически любого приложения есть компоненты, которые обеспечивают интерфейс (взаимодействие) между программой и пользователем. Такие компоненты называют базовыми. К базовым компонентам можно отнести:
Label — поле вывода текста;
Edit — поле ввода/редактирования текста; Button — командную кнопку;
CheckBox — независимую кнопку выбора; RadioButton — зависимую кнопку выбора; ListBox — список выбора;
ComboBox — комбинированный список выбора.
78
Родионов К.А. Лабораторный практикум «Программирование на языке Pascal»
•Вид компонента, его размер и поведение определяются значениями свойств (характеристик) компонента (описание свойств базовых компонентов можно найти в описании практических заданий).
•Основную работу в программе выполняют процедуры обработки событий (описание основных событий можно найти в справочнике, во второй части книги).
•Исходную информацию программа может получить из полей ввода/редактирования (компонент Edit), списка выбора (компонент
ListBox) или комбинированного списка (компонент ComboBox). Для ввода значений логического типа можно использовать компоненты
CheckBox и RadioButton.
• Результат программа может вывести в поле вывода текста (компонент
Label) |
или |
в |
окно сообщения (функция MessageDlg). |
|
||
• |
Для преобразования текста, например |
находящегося в |
поле |
|||
ввода/редактирования, в целое число |
нужно |
использовать функцию |
||||
StrToInt, |
а в |
действительное число |
— функцию StrToFloat, |
для |
||
преобразования целого, например значения переменной, в строку нужно использовать функцию intTostr, а для преобразования вещественного —
функцию FloatToStr или FloatToStrF.
Палитра компонентов Standart
В таблице приведены компоненты страницы Standart.
TFrames
TMainMenu
TPopupMenu
Фрейм (кадр). Компонент визуальный. Панель с возможностями наследования. Проектируется как отдельное окно. Фрейм представляет собой нечто среднее между панелью и формой.
Главное меню. Компонент невизуальный. Он позволяет вам поместить главное меню в программу.
Всплывающее меню. Компонент невизуальный. Этот компонент позволяет создавать всплывающее контекстное меню. Этот тип меню появляется по щелчку правой кнопки мыши на объекте, к которому привязано данное меню. У всех видимых объектов имеется свойство PopupMenu, где и указывается нужное меню. Создается Popup-Menu аналогично главному меню.
79
Родионов К.А. Лабораторный практикум «Программирование на языке Pascal»
TLabel
TEdit
TMemo
TButton
TCheckBox
TRadioButton
TListBox (TComboBox)
Метка. Компонент визуальный. Этот компонент служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойстве Font (шрифт) в Инспекторе объектов. Вы увидите, что это легко cделать и во время выполнения программы, написав всего одну строчку кода.
Окно редактирования. Компонент визуальный. Это стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
Многострочное окно редактирования. Компонент визуальный. Это иная форма TEdit. Подразумевает работу с большими текстами. ТМето может переносить слова, сохранять в Clipboard (Буфер обмена) фрагменты текста и восстанавливать их. ТМето имеет ограничения на объем текста в 32 Кб, это составляет 10-20 страниц.
Командная кнопка. Компонент визуальный. Он позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. Поместив компонент TButton на форму, вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом.
Контрольный индикатор с флажком. Компонент визуальный. Он отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options | Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из
CheckBox'oB.
Радиокнопка. Компонент визуальный. Он позволяет выбрать только одну опцию из нескольких. Радиокнопки часто применяются в диалоговых окнах настройки какоголибо элемента операционной среды Windows. Посмотрите программы папки Панель управления.
Окно списка (выпадающий список). Компонент визуальный. Он нужен для показа прокручиваемого списка. Классический пример ListBox'a в среде Windows
80
Родионов К.А. Лабораторный практикум «Программирование на языке Pascal»
