ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.03.2025

Просмотров: 658

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Реализация алгоритмов в среде Delphi Сборник заданий для лабораторных работ

Введение

Лабораторная работа №1. Реализация простейших циклических алгоритмов в консольном приложении среды Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №2. Решение задач обработки массивов в консольном приложении среды Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №3. Проектирование алгоритмов с использованием подпрограмм и их отладка в консольном приложении

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №4. Решение задач с параметрами-подпрограммами и модулями в консольном приложении Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №5. Разработка простейших оконных приложений в среде Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер основного обработчика индивидуальнойзадачи

Лабораторная работа №6. Создание оконных приложений обработки матриц в среде Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер обработчиков приложения индивидуальной задачи

Лабораторная работа №7. Программирование открытия и сохранения файлов с использованием стандартных диалоговых окон

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер обработчиков приложения индивидуальной задачи

Лабораторная работа №8. Разработка оконных приложений, использующих автономные модули

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер автономного модуля

Некоторые обработчики приложения, вычисляющего сумму элементов одномерного массива

Лабораторная работа №9. Разработка оконных приложений, осуществляющих графический вывод

1. Подготовка к работе

Пример обработчика вывода графических примитивов

Пример обработчика, формирующего массивы координат точек серий для вывода графиков функций с помощью Chart

Лабораторная работа №10. Обработка исключительных ситуаций

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Приложение 1. Пример проекта отчета по консольному приложению Условие

Состав данных

Форма ввода

Приложение 2. Пример проекта отчета по оконному приложению Условие

Состав данных

Блок-схема алгоритма

2. Задание и рекомендации по его выполнению

  1. Следуя §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. Следуя §1.2 [3], измените приложение п. 1 так, чтобы оно скла­ды­вало два числа.

  2. Руководствуясь §1.3 [3], добавьте в оконное приложение главное и контекст­ное (всплывающее) меню.

  3. Модифицируйте оконное приложение, используя вместо процедуры valпре­образования строки в число функциюStrToFloat, а вместо процедурыstrпре­образования числа в строку функциюFloatToStr2. Как ими пользоваться, уз­найте из справочной системы Delphi. Для вызова справки по некоторому слову в программе, достаточно поставить внутрь этого слова курсор и на­жать кла­вишуF1.

  4. Разработайте и отладьте оконное приложение для решения задачи [1] 1.3.4.N+1. Чем оно будет отличаться от приложения, складывающего два числа? Обратите внимание, что правила трассировки оконных и консольных приложений одинаковы.

  5. Зафиксируйте результаты работы в отчете и покажите их препо­давателю.

ПриМер основного обработчика индивидуальнойзадачи

Условие задачи.А—начальная стоимость оборудования. В первый год экс­плуата­ции стоимость оборудования снижается наВруб., а в каждый следую­щий год снижение стоимости уменьшается нар% (относительно предыду­щего года). Определить, через сколько лет стоимость обо­рудования станет меньшеА/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. Подготовка к работе

Перед началом выполнения работы студент должен:

  1. Ознакомиться с основами разработки оконных приложений в среде Delphi по пособию М.М. Марана [3], §1.4

  2. Разработать проект отчета по решению задачи 2.2.2. N+1. Проект отчета дол­жен содержать (см. также приложение 2):

  1. номер и условие задачи;

  2. состав данных задачи;

  3. блок-схему алгоритма решения задачи;

  4. эскиз основной формы приложения (для создания эскиза необхо­димо продумать, какие визуальные компоненты должны быть на форме (EditиStringGridдля ввода и вывода данных, кнопки для за­пуска вычислений);

  5. программный код основных обработчиков на Паскале;

  6. тесты.

  1. Набрать программный код основных обработчиков приложения в блокноте или в среде Delphi.

При разработке алгоритмов и программ необходимо учесть следующее:

  1. размеры матрицы (число строк nи число столбцовm) должны зада­ваться считыванием значений из текстовых окон (компонентEdit); ко­манда на задание размеров – нажатие кнопки (которую можно подпи­сать, например, фразой «Ввод n, m»);

  2. для отображения массивов на форме следует использовать компоненту StringGrid; число строк и столбцов этой компоненты должно настраи­ваться в соответствии с введенными значениямиnиm;

  3. приложение не должно иметь ограничений на размеры массивов; для хра­нения массивов в оперативной памяти рекомендуется использовать динамические массивы;

  4. визуальные компоненты для вывода результатов выбираются из условия задачи: компонентаEdit– для простых значений, компонентаStringGrid– для массивов; примерный вид формы приложения, вычисляющего суммы элементов каждой строки матрицы и произведение всех ее эле­ментов, приведен на рис. 5.

2. Задание и рекомендации по его выполнению

  1. Создайте новое приложение. На его форму перенесите управляю­щие эле­менты в соответствие с подготовленным эскизом. Сохраните приложе­ние (в отдельной папке!) и не забывайте периодически повторять со­хранение.

  2. Используя домашние заготовки, создайте необходимые обработчики. Один обработчик – для ввода nиm, другой – для запуска основного алго­ритма. Заме­тим, что приемы кодирования на Паскале вы­числительных алго­ритмов не из­мени­лись по сравнению с консольными приложе­ниями, только операторы ввода за­меняются считыванием значений из элемен­тов формы, а операторы вывода – записью значений в элементы формы. Особенности ра­боты с компо­нентойStringGridописаны в пособии [3]. Обратите внимание, чтоnиmдолжны быть описаны как глобальные переменные, так как используются в двух об­работчиках. Отладьте полученное приложение.

  3. Добавьте в приложение главное меню. На данном этапе в нем должен быть пункт Файлс подпунктомВыходи пунктОбработка(возможно, с подпунктамиВвод n, mиВычисление).

  4. Добавьте в приложение контекстное меню с несколькими подпунктами. Проверьте, работают ли главное и контекстное меню.

  5. Зафиксируйте результаты в отчете и покажите их препо­давателю.


ПриМер обработчиков приложения индивидуальной задачи

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. Подготовка к работе

Перед началом выполнения работы студент должен:

  1. Ознакомиться с принципами использования стандартных диалоговых окон открытия и сохранения файлов по пособию М.М. Марана [3], §§ 2.1, 2.2.1, 2.2.2.

  2. Продумать структуру файлов исходных данных и результатов (формы файлового ввода и вывода) для задачи [1] 2.2.2. N+1.

  3. Подготовить в блокноте 2-3 файла исходных данных для тестирования программы.

2. Задание и рекомендации по его выполнению

  1. Откройте приложение задачи 2.2.2. N+1, полученное в результате выполне­ния лабораторной работы №5. Добавьте в пункт Файл главного меню прило­жения подпунктыВвод из файлаиВывод в файл.

  2. Поставьте на форму приложения компоненты OpenDialogиSaveDialog, чтобы обеспечить возможность использования стандартных диалоговых окон открытия и сохранения файлов. Настройте объектыOpenDialogиSaveDialog в Инспекторе объектов. В свойствоFilterзапишите два фильтра: для всех файлов и для текстовых файлов. СвойствуInitialDir присвойте значе­ние имени папки, в которой хранится проект приложения рассматриваемой за­дачи. В свойствоDefaultExt компоненты SaveDialog запишите значение .txt. Правила работы со стандартными диалоговыми окнами изложены в [3], §§ 2.2.2

  3. Запишите обработчики ввода из файла и сохранения в файл, используя посо­бие [3] и приведенный ниже пример; измените приведенные там коды в соот­ветствии с индивидуальной задачей.

  4. Отладьте полученное приложение, используя подготовленные файлы исход­ных данных. Зафиксируйте результаты в отчете и пока­жите их препо­давателю.

ПриМер обработчиков приложения индивидуальной задачи

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{если подтверждено открытие

файла в диалоговом окне}