ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.03.2025
Просмотров: 649
Скачиваний: 1
СОДЕРЖАНИЕ
Реализация алгоритмов в среде Delphi Сборник заданий для лабораторных работ
2. Задание и рекомендации по его выполнению
Лабораторная работа №2. Решение задач обработки массивов в консольном приложении среды Delphi
2. Задание и рекомендации по его выполнению
2. Задание и рекомендации по его выполнению
2. Задание и рекомендации по его выполнению
Лабораторная работа №5. Разработка простейших оконных приложений в среде Delphi
2. Задание и рекомендации по его выполнению
ПриМер основного обработчика индивидуальнойзадачи
Лабораторная работа №6. Создание оконных приложений обработки матриц в среде Delphi
2. Задание и рекомендации по его выполнению
ПриМер обработчиков приложения индивидуальной задачи
2. Задание и рекомендации по его выполнению
ПриМер обработчиков приложения индивидуальной задачи
Лабораторная работа №8. Разработка оконных приложений, использующих автономные модули
2. Задание и рекомендации по его выполнению
Некоторые обработчики приложения, вычисляющего сумму элементов одномерного массива
Лабораторная работа №9. Разработка оконных приложений, осуществляющих графический вывод
Пример обработчика вывода графических примитивов
Лабораторная работа №10. Обработка исключительных ситуаций
2. Задание и рекомендации по его выполнению
Приложение 1. Пример проекта отчета по консольному приложению Условие
Приложение 2. Пример проекта отчета по оконному приложению Условие
2. Задание и рекомендации по его выполнению
Следуя §1.2 пособия [3], создайте оконное приложение, выполняющее сцепление двух строк. Сохраните это приложение, учитывая, что каждое оконное приложение необходимо хранить в отдельной папке.
Обратите внимание, что с окном сохранения приходится работать дважды – для файла проекта и для файла формы. Файлу проекта среда Delphi автоматически присваивает имяProject1(илиProject2,Project3, …) и расширение .dpr. Файлу формы автоматически дается имяUnit1(илиUnit2,Unit3, …) и расширение .pas. Эти имена можно изменить, но делать это надо очень внимательно (чтобы не перепутать проект и форму и по другим причинам). Кроме файловProject.dpr и Unit.pas, среда создает еще несколько файлов проекта и формы с разными расширениями. При переносе проекта приложения на другой компьютер или в другую папку, необходимо переносить только файла проекта Project.dprи два файла для каждой формы:Unit.pasиUnit.dfm. Все остальные файлы при открытии проекта приложения будут созданы средой Delphi1. Отметим, что файлUnit.dfmхранит графическое изображение формы в текстовом виде; файлProject.exeявляется исполняемым файлом, который можно запускать независимо от среды Delphi.
Открывать проект приложенияследует командойFile/Open Project, и в окне открытия файла выбирать файл с расширением .dpr.
Следуя §1.2 [3], измените приложение п. 1 так, чтобы оно складывало два числа.
Руководствуясь §1.3 [3], добавьте в оконное приложение главное и контекстное (всплывающее) меню.
Модифицируйте оконное приложение, используя вместо процедуры valпреобразования строки в число функциюStrToFloat, а вместо процедурыstrпреобразования числа в строку функциюFloatToStr2. Как ими пользоваться, узнайте из справочной системы Delphi. Для вызова справки по некоторому слову в программе, достаточно поставить внутрь этого слова курсор и нажать клавишуF1.
Разработайте и отладьте оконное приложение для решения задачи [1] 1.3.4.N+1. Чем оно будет отличаться от приложения, складывающего два числа? Обратите внимание, что правила трассировки оконных и консольных приложений одинаковы.
Зафиксируйте результаты работы в отчете и покажите их преподавателю.
ПриМер основного обработчика индивидуальнойзадачи
Условие задачи.А—начальная стоимость оборудования. В первый год эксплуатации стоимость оборудования снижается наВруб., а в каждый следующий год снижение стоимости уменьшается нар% (относительно предыдущего года). Определить, через сколько лет стоимость оборудования станет меньшеА/2. Рассматривать срок не болееNлет.
Н
а
рис. 4 приведенаформа приложения.
Обратите внимание, что каждое
текстовое окно на форме нужно либо
для ввода исходного данного, либо для
вывода результата. Далее приведен
текст обработчика события – нажатия
кнопки «Вычисление».
procedure TForm1.Button1Click(Sender: TObject);
Var A,B,p:real; N,i:integer; {i-счетчик лет }
At,Bt:real; {текущие значения стоимости оборудования и ее снижения}
begin A:=StrToFloat(Edit1.Text);{эти операторы считывают c}
B:=StrToFloat(Edit2.Text);{формы исходные данные, это замена }
p:=StrToFloat(Edit3.Text); N:=StrToInt(Edit4.Text);{операторов ввода}
At:=A;Bt:=B;i:=1;{подготовка цикла}
while (At>=A/2) and (i<=N) do{цикл продолжается пока}
begin { снижение не достигнуто и срок не прошел}
At:=At-Bt; {ежегодно стоимость снижается на Bt}
Bt:=Bt-Bt*p/100; {ежегодно Bt уменьшается на р%}
i:=i+1 {увеличение счетчика лет}
end;
if At<A/2 then {анализ приоритетного условия выхода из цикла}
begin i:=i-1; Edit5.Text:=IntToStr(i){это аналог вывода}end else
Edit5.Text:='за '+IntToStr(N)+' лет снижения нет';{это аналог вывода}
end;
Лабораторная работа №6. Создание оконных приложений обработки матриц в среде Delphi
Цель работы:освоение приемов создания оконных приложений, обрабатывающих матрицы, в среде Delphi
Продолжительность работы:2часа
1. Подготовка к работе
Перед началом выполнения работы студент должен:
Ознакомиться с основами разработки оконных приложений в среде Delphi по пособию М.М. Марана [3], §1.4
Разработать проект отчета по решению задачи 2.2.2. N+1. Проект отчета должен содержать (см. также приложение 2):
номер и условие задачи;
состав данных задачи;
блок-схему алгоритма решения задачи;
эскиз основной формы приложения (для создания эскиза необходимо продумать, какие визуальные компоненты должны быть на форме (EditиStringGridдля ввода и вывода данных, кнопки для запуска вычислений);
программный код основных обработчиков на Паскале;
тесты.
Набрать программный код основных обработчиков приложения в блокноте или в среде Delphi.
При разработке алгоритмов и программ необходимо учесть следующее:
размеры матрицы (число строк nи число столбцовm) должны задаваться считыванием значений из текстовых окон (компонентEdit); команда на задание размеров – нажатие кнопки (которую можно подписать, например, фразой «Ввод n, m»);
для отображения массивов на форме следует использовать компоненту StringGrid; число строк и столбцов этой компоненты должно настраиваться в соответствии с введенными значениямиnиm;
приложение не должно иметь ограничений на размеры массивов; для хранения массивов в оперативной памяти рекомендуется использовать динамические массивы;
в
изуальные
компоненты для вывода результатов
выбираются из условия задачи: компонентаEdit– для простых
значений, компонентаStringGrid– для массивов; примерный вид формы
приложения, вычисляющего суммы элементов
каждой строки матрицы и произведение
всех ее элементов, приведен на рис.
5.
2. Задание и рекомендации по его выполнению
Создайте новое приложение. На его форму перенесите управляющие элементы в соответствие с подготовленным эскизом. Сохраните приложение (в отдельной папке!) и не забывайте периодически повторять сохранение.
Используя домашние заготовки, создайте необходимые обработчики. Один обработчик – для ввода nиm, другой – для запуска основного алгоритма. Заметим, что приемы кодирования на Паскале вычислительных алгоритмов не изменились по сравнению с консольными приложениями, только операторы ввода заменяются считыванием значений из элементов формы, а операторы вывода – записью значений в элементы формы. Особенности работы с компонентойStringGridописаны в пособии [3]. Обратите внимание, чтоnиmдолжны быть описаны как глобальные переменные, так как используются в двух обработчиках. Отладьте полученное приложение.
Добавьте в приложение главное меню. На данном этапе в нем должен быть пункт Файлс подпунктомВыходи пунктОбработка(возможно, с подпунктамиВвод n, mиВычисление).
Добавьте в приложение контекстное меню с несколькими подпунктами. Проверьте, работают ли главное и контекстное меню.
Зафиксируйте результаты в отчете и покажите их преподавателю.
ПриМер обработчиков приложения индивидуальной задачи
procedure TForm1.Button1Click(Sender: TObject);
{обрабатывает нажатие кнопки «Ввод n,m»}
Var i:integer;
begin
n:=StrToInt(Edit1.Text);{ считали из компонент Edit1}
m:=StrToInt(Edit2.Text); {и Edit2 значения n и m}
StringGrid1.RowCount:=n+1;{задали число строк и }
StringGrid1.ColCount:=m+1; {столбцов StringGrid1}
for i:=1 to n do {написали номера строк в фиксированном}
StringGrid1.Cells[0,i]:=IntToStr(i);{ столбце StringGrid1}
for i:=1 to m do { написали номера столбцов в фиксированной }
StringGrid1.Cells[i,0]:=IntToStr(i);{строке StringGrid1}
end;
procedure TForm1.Button2Click(Sender: TObject);
{Обрабатывает нажатие кнопки «Вычисление» - расчет суммы каждой строки матрицы и произведения всех элементов матрицы}
Var i,j:Integer;{счетчики} p:real;{произведение элементов матрицы}
A:array of array of real;{исходная матрица}
s:array of real;{массив сумм элементов строк}
begin
SetLength(a,n,m);{распределение памяти под массивы a}
SetLength(s,n); {и s }
for i:=1 to n do {в цикле считываем из ячеек компоненты}
for j:=1 to m do {StringGrid1 значения элементов матрицы}
if StringGrid1.Cells[j,i]='' then {если ячейка пустая}
a[i-1,j-1]:=0 {то элемент матрицы равен нулю}
else
a[i-1,j-1]:=StrToFloat(StringGrid1.Cells[j,i]);
{закончен ввод матрицы, далее обработка}
p:=1;
for i:=0 to n-1 do
begin
s[i]:=0;
for j:=0 to m-1 do
begin
p:=p*a[i,j];
s[i]:=s[i]+a[i,j]
end;
end;
{закончена обработка, далее вывод}
Edit3.Text:=FloatToStr(p);{записываем в Edit3 произведение}
for i:=0 to n-1 do {в цикле записываем в ячейки StringGrid2}
StringGrid2.Cells[0,i+1]:=FloatToStr(s[i]); {cуммы строк}
end;
Лабораторная работа №7. Программирование открытия и сохранения файлов с использованием стандартных диалоговых окон
Цель работы:закрепление знаний и навыков программирования задач с файлами; освоение приемов использования стандартных диалоговых окон открытия и сохранения файлов
Продолжительность работы:2 часа
1. Подготовка к работе
Перед началом выполнения работы студент должен:
Ознакомиться с принципами использования стандартных диалоговых окон открытия и сохранения файлов по пособию М.М. Марана [3], §§ 2.1, 2.2.1, 2.2.2.
Продумать структуру файлов исходных данных и результатов (формы файлового ввода и вывода) для задачи [1] 2.2.2. N+1.
Подготовить в блокноте 2-3 файла исходных данных для тестирования программы.
2. Задание и рекомендации по его выполнению
Откройте приложение задачи 2.2.2. N+1, полученное в результате выполнения лабораторной работы №5. Добавьте в пункт Файл главного меню приложения подпунктыВвод из файлаиВывод в файл.
Поставьте на форму приложения компоненты OpenDialogиSaveDialog, чтобы обеспечить возможность использования стандартных диалоговых окон открытия и сохранения файлов. Настройте объектыOpenDialogиSaveDialog в Инспекторе объектов. В свойствоFilterзапишите два фильтра: для всех файлов и для текстовых файлов. СвойствуInitialDir присвойте значение имени папки, в которой хранится проект приложения рассматриваемой задачи. В свойствоDefaultExt компоненты SaveDialog запишите значение .txt. Правила работы со стандартными диалоговыми окнами изложены в [3], §§ 2.2.2
Запишите обработчики ввода из файла и сохранения в файл, используя пособие [3] и приведенный ниже пример; измените приведенные там коды в соответствии с индивидуальной задачей.
Отладьте полученное приложение, используя подготовленные файлы исходных данных. Зафиксируйте результаты в отчете и покажите их преподавателю.
ПриМер обработчиков приложения индивидуальной задачи
procedure TForm1.N2Click(Sender: TObject);
{обработчик пункта меню “ввод из файла”}
Var f:TextFile; s:string; {f-программное имя файла, s-физическое}
i,j:integer; {счетчики строк и столбцов матрицы}
a: array of array of real;{динамический массив}
begin
if OpenDialog1.Execute then{если подтверждено открытие
файла в диалоговом окне}