Отчет по практике: Разработка программного обеспечения
end;
end.
Кнопки-переключатели в
DELPHI
При создании программ и
DELPHI дня организации разветвлений часто используются компоненты в виде
кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально
отражается на форме.
Компонент TCheckBox
организует кнопку независимого переключателя, с помощью которой пользователь
может указать свое решение типа да/нет. В программе состояние кнопки связано со
значением булевской переменной, которая проверяется с помощью оператора if.
Компонент TRadioGroup
организует группу кнопок - зависимых переключателей. При нажатии одной из
кнопок группы все остальные кнопки отключаются. В программу передается номер
включенной кнопки (0,1,2,..), который анализируется с помощью оператора case.
Пример написания
программы разветвляющегося алгоритма
Задание: ввести три числа - х, у, z.
Вычислить по усмотрению u=sin(x) или
u=cos(x), или u=tg(х).
Найти по желанию максимальное из трех чисел: max(x, у, z), или min (|x|, |у|,
|z|).
Создать форму и написать
соответствующую программу.
Создание формы
Создайте форму, такую же
как в первом задании, скорректировав текст надписей и положение окон TEdit.
Работа с компонентом
TCheckBox
Выберите в меню
компонентов Standard пиктограмму {} и поместите ее в нужное место формы. С
помощью инспектора объектов измените заголовок (Caption) на "maabs".
В тексте программы появилась переменная CheckBox типа TCheckBox. Теперь в
зависимости от того, нажата или нет кнопка, булевская переменная CheckBox.Checked
будет принимать значения True или False.
Работа с компонентом
TRadioGroup
Выберите в меню
компонентов Standard пиктограмму {} и поместите ее в нужное место формы. На форме
появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1.
Замените заголовок (Caption) на U(х). Для того чтобы разместить на
компоненте кнопки, необходимо свойство Columns установить равным единице
(кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства
Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три
строки с именами: в первой строке sin(x), во второй - cos(х), в третьей -
tg(х), нажмите ОК.
После этого на форме
внутри окаймления появится три кнопки-переключателя с введенными надписями.
Обратите внимание на то,
что в тексте программы появилась переменная RadioGroup типа TRadioGroup. Теперь
при нажатии одной из кнопок группы в переменной целого типа
RadioGroup1.ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля),
что используется в тексте приведенной программы.
Создание обработчиков
событий FormCreate и Botton1Click
Процедуры - обработчики событий
FormCreate и Botton1Click создаются аналогично тому, как и в первой теме. Текст
процедур приведен ниже.
Запустите программу и
убедитесь в том, что все ветви алгоритма выполняются правильно.
Текст программы приведен
ниже.
unit tema2;
interface
uses
Windows,
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
ExtCtrls;
type
TForm1 =
class(TForm)
CheckBox1:
TCheckBox;
RadioGroup1:
TRadioGroup;
Memo1: TMemo;
Button1:TButton;
Edit1:TEdit;
Label1:
TLabel;
Label2:
TLabel;
Edit2:TEdit;
Label3:
TLabel:
Edi3: TEdlt;
procedure
FormCreate(Sender: TObject);
procedure
Button1Click(Sender: TObject);
private
{Private
declarations}
public
{public
declarations}
var
Form1: TForm1;
implementation
{$R.DFM}
procedure
TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0,1';
Edit3.Ttext:='0,356';
Memo1.Clear;
Memo1.Lines.Add('Рез-ты ст.гр.
9383 Валента А.А.');
end;
procedure
TForm1.Button1Click(Sender: TObject);
var x, y, z,
u, ma : extended;
begin
// Ввод исходных
данных и их вывод в окно Memo1
x:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('x='+Edit1.Text);
y:=StrToFloat(Edlt2.Text);
Memo1.Lines.Add('y='+Edit2.Text);
z:=StrToFloat(Edtt3.Text);
Memo1.Lines.Add('z='+Edit3.Text);
// Проверка номера нажатой кнопки и
выбор соответствующей ей функции
case RadioGroup.ltemlndex of
0: u:=cos(x);
1: u:=sin(x);
2:
u:=sin(x)/cos(x);
end:
// Проверка состояния кнопки СheckBox1
if CheckBox1.Checked then
begin
u:=abs(u);
y:=abs(y);
z:=abs(z)
end;
// Нахождение
максимального из трех чисел
if u>y then ma:=u else ma: =y;
if z>ma then
ma:=z;
if CheckBox1.Checked
then
Memo1.Lines.Add('
maxabs='+FloatToStrF(ma,ffFixed,8,2))
else
Memo1.Lines.Add('max='+FtoatToStrF(ma,ffGeneral,8,2));
end;
end.
Пример написания
программы циклического алгоритма
Задание: написать и
отладить программу, которая выводит таблицу значений функции S(х) для х
изменяющихся в интервале от XI до Х2 с шагом h.
Текст программы приведен
ниже.
unit tema3;
interface
uses
Windows, Messages,
SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
Memo1: TMemo;
Button1:
TButton;
Label1:
TLabel;
Label2:
TLabel;
Label3:
TLabel;
Label4:
TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure
FormCreate(Sender: TObject);
procedure
Button1Click(Sender: TObject);
private
{ Private
declarations }
public
{ Public
declarations}
end;
var Form1:
TForm1;
implementation
{$R*.DFM}
procedure
TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text
:='0';
Edit2.Text
:='2';
Edit3.Text
:='5';
Edit4.Text
:='0.25';
Memo1.Clear;
Memo.Lines.Add('Результаты ст. гр. 9383 Валета А.В.');
end;
procedure
TForm1.Button1Cllck(Sender: TObject);
var x1, x2, x,
h, a, s : extended;
N, k, c :
integer;
begin
x1:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('x1='+Edit1.Text);
x2:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('x2='+Edit2.Text);
N:=StrTolnt(Edit3.Text);
Memo1.lines.Add('N='+Edit3.Text);
h:=StrToFloat(Edit4.Text);
Memo1.Lines.Add('
h='+Edit4.Text);
c:=-1;
x:=x1;
repeat
a:=1;
S:=1;
for k:=1 to N
do
begin
a:=c*a*x/k;
s:=s+a;
end;
Memo1.lines.Add('при x=' +FloatToStrF(x,ffFixed,6,2)+ ' сумма = '+FloatToStrF(s,tfFtxed,6,2));
x:=x+h;
until x>x2;
end;
end.
После отладки программы составьте
тест (N=2, Х1=0, Х2=1, h=3), установите курсор на первый оператор (N:= ),
нажмите клавишу F4. После этого нажимая клавишу F7, выполните пошаговую программу
и проследите, как меняются все переменные в процессе выполнения.
Индивидуальные
задания.
Ниже
приведено 15 вариантов задач из трёх частей. По указанию преподавателя выберите
свое индивидуальное задание. Уточните условие задания, количество, наименование,
типы исходных данных. В соответствии с этим установите количество окон Edit, тексты
заголовков на форме, размеры шрифтов, а также типы переменных и функции
преобразования при вводе и выводе результатов. С помощью инспектора объектов
измените цвет формы, шрифт выводимых символов.
Часть
1. Использование ООП для программирования линейных алгоритмов.
1.
Найти сумму цифр
заданного четырехзначного числа.
2.
Определить число,
полученное в оратном порядке цифр , заданного трехзначного числа.
3.
Вывести на экран
1 или 0 в зависимости от того, равна ли сумма двух первых цифр заданного
четырехзначного числа сумме двух его последних цифр.
4.
Вывести на экран
1 или 0 в зависимости от того, равен ли квадрат эго трехзначного
числа кубу суммы цифр этого числа.
5.
Вывести на экран
1 или 0 в зависимости от того, есть ли среди первых дробной части
заданного положительного вещественного числа цифра.
6.
Вывести на экран
1 или 0 в зависимости от того, есть ли среди цифр трехзначного числа
одинаковые.
7.
Присвоить целой
переменной k третью от конца цифру в записи положительного целого числа n.
8.
Присвоить целой
переменной k первую цифру из дробной части положительного вещественного числа.
9.
Целой переменной
S присвоить сумму цифр трехзначного целого числа k.
10.
Идет k-я секунда
суток. Определить, сколько полных часов (h) и полных минут (m) прошло к
этому моменту.
11.
Определить f -
угол (в градусах) между положением часовой стрелки в начале суток и ее
положением в h - часов, т - минут и s - секунд (0<=Н<=11,
0<=т,s< =59).
12.
Определить h -
полное количество часов и m - полное количество минут, прошедших от начала
суток до того момента (в первой половине дня), когда часовая стрелка
повернулась на f градусов(0<=f<360, f - вещественное число).
13.
Пусть k - целое
от 1 до 365. Присвоить целой переменной n значение 1,2,3,...,6 или 7 в
зависимости от того, на какой день недели (понедельник, вторник, ..., суббота
или воскресенье) приходится k-й день невысокосного года, в втором 1 января -
понедельник.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 |