Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ОА и П.doc
Скачиваний:
23
Добавлен:
29.08.2019
Размер:
13.34 Mб
Скачать

Procedure tForm1.Button2Click (Sender: tObject); {обработка массива}

var

Max, Min, Sum, CountPlus: integer; {результаты обработки массива}

begin

if CheckBox1.Checked then Min:=M[0]; {пусть 0-й элемент-Min}

Edit3.Text:=’ ‘;

if CheckBox2.Checked then Max:=M[0]; {пусть 0-й элемент-Max}

Edit4.Text:=’ ‘;

Sum:=0; {обнулить значение Sum}

Edit5.Text:=’ ‘;

CountPlus:=0; {обнулить значения суммы положительных элементов}

Edit6.Text:=’ ‘;

for I:=0 to N-1 do

begin

if CheckBox1.Checked then {определить минимальный элемент массива}

if Min>M[I] then Min:=M[I];

if CheckBox2.Checked then {определить максимальный элемент массива }

if Max<M[I] then Max:=M[I];

if CheckBox3.Checked then {суммировать элементы массива}

Sum:=Sum+M[I];

if CheckBox4.Checked then {суммировать положительные элементы массива}

if M[I]>0 then CountPlus:=CountPlus+1;

end;

{вывести результаты обработки массива}

if CheckBox1.Checked then Edit3.Text:=IntToStr (Min);

if CheckBox2.Checked then Edit4.Text:=IntToStr (Max);

if CheckBox3.Checked then Edit5.Text:=IntToStr (Sum);

if CheckBox4.Checked then Edit6.Text:=IntToStr (CountPlus);

end;

Сохраните файлы проекта и программного модуля, откомпилируйте и запустите программу на выполнение. Задавая различные значения числа элементов массива и щелкая мышью на кнопке Создать массив, убедитесь в правильной работе процедуры защиты от ввода нечисловых данных в Edit1 и генерации массива случайных целых чисел.

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

Закройте окно приложения, (рис. 19).

Рис. 19

Задания для самостоятельного решения.

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

Лабораторная работа №27.

Тема: «Разработка программ с использованием компонентов страницы Standart и Addinational».

Цель работы: получение навыков составления программ с использованием компонентов страницы Standart и Addinational.

ЗАДАНИЕ

Напишите программу, которая вычислит доход по вкладу. Программа должна обеспечивать расчет простых и сложных процентов. Простые проценты начисляются в конце срока вклада, сложные – ежемесячно и прибавляются к первоначальной сумме вклада и в следующем месяце проценты начисляются на новую сумму. Рекомендуемый вид формы программы приведен ниже, (рис. 20).

Рис. 20

Решение:

{щелчок по кнопке Вычислить}

procedure TForm1.Button1Click (Sender: TObject);

var

sum: real; {сумма вклада}

pr: real; {процентная ставка}

srok: integer; {срок вклада}

dohod: real; {доход по вкладу}

buf: real;

i: integer;

begin

{получить исходные данные}

sum:=StrToFloat (Edit1.Text);

pr:= StrToFloat (Edit2.Text);

srok:= StrToInt (Edit3.Text);

if RadioButton1.Checked

then {выбран переключатель Простые проценты}

dohod:=sum*(pr/100)*(srok/360)

else {т. к. В группе два переключателя, то если не выбран RadioButton1, то выбран RadioButton2 – Сложные проценты}

begin

buf:=sum;

for i:=1to srok do

buf:=buf+buf*(pr/100);

{здесь buf – сумма в конце срока вклада}

dohod:=buf-sum;

end;

sum:=sum+dohod;

Label14.Caption:=’Доход:’+Float-ToStrF (dohod, ffGeneral, 9, 2)+#13+’Сумма в конце срока вклада:’+FloatToStrF (sum, ffGeneral, 9, 2);

End;

{выбор переключателя Простые проценты}

procedure TForm 1.RadioButton1Click (Sender:

TObject);

begin

Label 12. Caption :=’ Срок (дней)’;

Label 14. Caption :=’’;

end;

{выбор переключателя Сложные проценты}

procedure TForm 1.RadioButton2Click

(Sender: TObject);

begin

Label 12. Caption :=’ Срок (месяцев)’;

Label 14. Caption :=’’;

end;

Задания для самостоятельного решения.

Напишите программу, которая вычислит стоимость покупки с учётом скидки. Скидка 1% предоставляется, если сумма покупки больше 50 000 рублей, 2% - если сумма больше 100 000 рублей, 3% - если сумма больше 200 000 рублей. Информация о предоставленной скидке (процент и величина) должна быть выведена в диалоговом окне.

Лабораторная работа №28.

Тема: «Разработка программ с использованием компонентов страницы Standart, Addinational и Win32».

Цель работы: получение навыков составления программ с использованием компонентов страницы Standart, Addinational и Win32.

ЗАДАНИЕ

Напишите программу “Электронные часы”, на поверхности формы которой отображается текущее время, (рис. 21).

рис. 21

Решение:

unit eclock;

interface

uses

Windows, Messades, Syssages, Syslltils, Variants, Clasess,

Graphics, Controls, Forms, Dialogs, Extltrls, StdCtrls;

type

TForm1= class (TForm)

Timer1: Ttimer;

Label1: Tlabel;

procedure FormPaint (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedure FormCreate (Sender: TObject);

{объявление процедуры ShowTime}

{помещено вручную это сделано, чтобы функция имела доступ к компонентам формы напрямую}

procedure ShowTime;

private

{private declarations}

public

{public declarations}

end;

var

Form1: TForm1;

Implementation

{$r*.dfm}

{отображает текущее время}

procedure TForm1.ShowTime;

var

Time: TDateTime; {текущее время}

Begin

Time:=Now( ); {получить системное время}

Label1.Caption:=FormatDateTime (‘hh:mm:ss’, Time);

End;

{обработка события Paint}

procedure TForm1.FormPaint (Sender: TObject);

begin

ShowTime; {отобразить часы}

End;

{обработка сигнала таймера}

procedure TForm1.Timer1Timer (Sender: TObject);

begin

ShowTime; {отобразить время}

End;

Procedure TForm1.FormCreate (Sender: TObject);

Begin

{настроить и запустить таймер}

Timer1.Interval:=1000 {период сигнала таймера 1с}

Timer1.Enabled:=True {пуск таймера}

End;

End.

Задания для самостоятельного решения.

Усовершенствуйте программу задания (выше) таким образом, чтобы в окне еще отображалась текущая дата.

Лабораторная работа №29.

Тема: «Разработка программ с использованием компонентов страниц Standart, Additional, Win32 и System».

Цель работы: получение навыков составления программ с использованием компонентов страниц Standart, Additional, System.

ЗАДАНИЕ

Создайте приложение с использованием компонентов страниц Standart, Additional, System, которое позволит проигрывать стандартные клипы Windows и видео клипы формата *.avi .

Создайте форму и поместите в любое место компонент OpenDialog из палитры Dialog и задайте для свойства OpenDialog1.Title значение «Открыть файл видео клипа», которое будет отображаться в заголовке диалогового окна открытия файла. Задайте для свойства OpenDialog1. Filter значение «видео клип (*.avi)|*.avi». Поместите на форму компоненты Button1, Button2, Button3. задайте для них имена BtWind, BtStop, BtFile. Задайте для свойств Caption этих кнопок значения «Клипы Windows», «Стоп», «Клипы из файла». Поместите в форму компонент Animate1 из палитры Win32 и задайте для него свойства Visible значение False. Над компонентом Animate1 поместите компонент Label1 и задайте для его свойства Caption пустое значение. Выровняйте и зафиксируйте компоненты на форме, как показано ниже на рисунке 22.

рис. 22

Создайте обработчик щелчка мыши на кнопке BtWind, обеспечивающий просмотр стандартных видеоклипов Windows. Для этого в окне Инспектора объектов выберите объект BtWind, затем на странице Events произведите двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1. BtWindClick (Sender: TObject);. Добавить в раздел описания переменных модуля описание переменной I целого типа, она будет хранить значение номера стандартного видео клипа Windows.

Var

Form1: TForm1;

I: byte;

Отредактируйте текст процедуры TForm1. BtWindClick следующим образом:

Proctdure TForm1. BtWindClick (Sender: TObject);

Begin

Animate1. Visible:=True; {сделать видимой область анимации}

I:=1; {указывает на первый клип Windows}

Animate1. CommonAVI:=aviFindFolder; {воспроизвести первый стандартный клип – поиск в папке}

Label1. Caption:=’Клип Windows: поиск в папке’;

Animate1. Active:=True; {активизировать анимацию}

End;

Создайте процедуру обработчика щелчка мышью на кнопке BtStop и отредактируйте ее текст следующим образом:

Procedure TForm1. BtStopClick (Sender: TObject);

begin

Animate1. Stop; {вызов процедуры смены стандартного видео клипа Windows}

end;

Процедуру смены стандартного видео клипа Windows реализуйте в виде процедуры обработчика события окончания воспроизведения видео клипа OnStop. Для этого в окне Инспектора объектов выберите компонент Animate1 и на странице Events произведите двойной щелчок на пустом поле списка в событии OnStop. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1. Animate1Stop (Sender: Tobject);. Отредактируйте ее текст следующим образом:

Procedure TForm1. Animate1Stop (Sender: Tobject);

Begin

Inc (I); {увеличить счетчик клипов}

with Animate1 do begin

case I of

2: begin

CommonAVI:=aviFindFile;

Label1. Caption:=’Клип Windows: поиск файла’;

end;

3: begin

CommonAVI:=aviFindComputer;

Label1. Caption:=’Клип Windows: поиск компьютера’;

end;

4: begin

CommonAVI:=aviCopyFiles;

Label1. Caption:=’Клип Windows: копирование файлов’;

end;

5: begin

CommonAVI:=aviCopyFile;

Label1. Caption:=’Клип Windows: копирование файла’;

end;

6: begin

CommonAVI:=aviRecycleFile;

Label1. Caption:=’Клип Windows:удаление файла в корзину’;

end;

7: begin

CommonAVI:=aviEmptyRecycle;

Label1. Caption:=’Клип Windows:очистка корзины’;

end;

8: begin

CommonAVI:=aviDeleteFile;

Label1. Caption:=’Клип Windows:удаление файла’;

end;

end;

if I<9 then Active:=True

else

begin

Visible:=False;

Label1. Caption:=’ ‘; {очистить после показа клипов}

end;

end;

end;

Как видно из текста процедуры, выбор вида стандартного клипа описан с помощью оператора выбора case. Причем значение селектора I изменяется от 2 до 8, так как для I=1 воспроизведение видео клипа выполняется в процедуре обработчика щелчка мышью на кнопке BtWind. Каждый оператор, выполняемый для конкретного значения селектора I, является составным, например,

begin

CommonAVI:=aviFindFile;

Label1. Caption:=’Клип Windows: поиск файла’;

end;

где CommonAVI:=aviFindFile; определяет конкретный стандартный видео клип Windows, а затем Label1. Caption:= ’Клип Windows: поиск файла’; выводит в окне приложения сообщения о том, какой клип воспроизводится.

Для воспроизведения видео клипов из файлов формата *.avi создайте процедуру обработчика щелчка мышью на кнопке BtFile. Отредактируйте текст этой процедуры следующим образом:

Procedure TForm1. BtFileClick (Sender: TObject);

var

Fname: string; {переменная для хранения части имени файла}

begin

if OpenDialog1 do

begin

I:=9;

FileName:=OpenDialog1. FileName;

FName:=FileName;

repeat {удалить часть имени до ‘\’}

Delete (FName, 1, Pos (‘\’, FName));

until Pos (‘\’, FName)=0;

Visible:=True;

Label. Caption:=’Клип из файла’+FName;

Active:=True;

end;

end;

Как видно из текста процедуры, в разделе описания переменных введена переменная FName, в которую копируется значение из FileName, с тем чтобы впоследствии «отрезать» от полного имени файла имя папки, в которой он находится. Для открытия файла видео клипа используется стандартный диалог OpenDialog1. Фрагмент программы:

repeat {удалить часть имени до ‘\’}

Delete (FName, 1, Pos (‘\’, FName));

until Pos (‘\’, FName)=0;

выполняет удаление из полного имени файла имени папки, в которой он находится.

Сохраните файлы проекта и модуля в папке «Воспроизведение немых видео клипов». Откомпилируйте и запустите приложение, (рис. 23).

рис. 23

Задание для самостоятельного решения.

Создайте приложение с использованием компонентов страниц Standart, Additional, System, которое позволит проигрывать стандартные клипы Windows со звуком и видео клипы формата *.avi .

Лабораторная работа №30.

Тема: «Разработка программ создания и обработки типизированных и текстовых файлов с использованием изученных компонентов».

Цель работы: получение навыков составления программ с использованием изученных компонентов.

ЗАДАНИЕ

Создайте приложение, которое создает текстовый файл text1.txt и записывает в него текст, введенный пользователем в окно Edit, после чего закрывает файл.

Создайте форму и задайте для ее свойства Caption значение «Создание файла и вывод в него текст из Edit». Разместить на форме компоненты Edit1, Label1. Caption – «Введите текст», Button1. Caption – «Сохранить». Удалите текст Edit1 из соответствующего компонента. Выровняйте компоненты и зафиксируйте их положение на форме, (рис. 24).

рис. 24

Сохраните файлы модуля (под именем main) и проекта (под именем TextEditFile) в папке Обработка текстовых файлов. Откомпилируйте приложение и запустите его на выполнение. Убедитесь в том, что приложение позволяет пользователю вводить в окно Edit1. Для того чтобы на диске создавался текстовый файл, и текст из окна Edit1 записывался в него, создайте процедуру обработчика события щелчка мышью на кнопке Button1 «Сохранить» и в ней реализуйте создание нового файла и запись в него текста. Для создания процедуры обработчика щелчка мышью на кнопке Button1 выберите в окне Инспектора объектов объект Button1, затем на странице Событий произведите двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1. Button1Click (Sender: TObject);.

Дополните текст процедуры следующим кодом:

var

f: TextFile; {описание файловой переменной}

begin

AssignFile (f, ‘text.txt’); {связь файловой переменной с файлом}

Rewrite (f); {создать новый файл}

Writeln (f, Edit1. Text); {записать в файл}

CloseFile (f); {закрыть файл}

end;

Откомпилируйте программу и запустите ее на выполнение.

рис. 25

В окне приложения введите текст, как показано на рисунке 25 выше, и щелкните мышью по кнопке Сохранить. Закройте окно приложения и откройте в окне Проводника windows папку Обработка текстовых файлов, в которой сохранены файлы проекта. В списке файлов этой папки вы увидите и вновь созданный файл text.txt.

Дважды щелкните левой кнопкой мыши на имени файла text1.txt. будет открыто окно редактора Блокнот с этим файлом. Убедитесь, что – это тот самый текст, который вы только что вводили в окне приложения.

Задание для самостоятельного решения.

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

Лабораторная работа №31.

Тема: «Разработка программ создания и использования графических примитивов, иллюстраций».

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

ЗАДАНИЕ

Напишите программу, которая на поверхности формы рисует олимпийский флаг, (рис. 26).

Рис. 26

Решение:

{Олимпийский флаг}

procedure TForm. FormPaint (Sender: TObject);

begin

with Canvas do

begin

{полотнище}

Canvas. Pen. With:=1;

Canvas. Pen. Color:=clBlack;

Canvas. Brush. Color:=clCream;

Rectangle (30, 30, 150, 115);

{кольца}

Pen. Width:=2;

Brush. Style:=bsClear; {область внутри круга не закрашивать}

Pen. Color:=clBlue;

Ellipse (40, 40, 80, 80);

Pen. Color:=clBlack;

Ellipse (70, 40, 110, 80);

Pen. Color:=clRed;

Ellipse (100, 40, 140, 80);

Pen. Color:=clYellow;

Ellipse (55, 65, 95, 105);

Pen. Color:=clGreen;

Ellipse (85, 65, 125, 105);

end

end.

Задание для самостоятельного решения.

Усовершенствуйте программу (задания выше) таким образом, чтобы все кольца были закрашены в цвета соседних колец, а контур остался без изменения.