
- •Дисципліна: Навчальна практика
- •Курс________________Група __________________Семестр______________ завдання на навчальну практику студента
- •1 Завдання
- •2 Постановка задачі
- •3 Математична модель
- •4 Опис структури даних та вимоги до них
- •5 Опис файлів та їх призначення
- •6 Опис процедур і функцій користувача
- •7 Опис стандартних процедур і функцій
- •8 Інструкція для роботи з програмою
- •9 Текст програми
- •10 Приклади роботи з програмою
- •Висновок
- •Література
6 Опис процедур і функцій користувача
procedure Button2Click(Sender: TObject); - процедура що відповідає за очистку програми від вхідних і вихідних даних.
procedure Button3Click(Sender: TObject); - процедура що відповідає за зчитування вхідних даних, основне обчислення в програмі, та виведення результатів.
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char); - процедура що не дозволяє вводити в Stringgrid символи, букви а лише додатні цілі числа.
procedure N3Click(Sender: TObject); - процедура що відповідає за очистку програми від вхідних і вихідних даних.
procedure N2Click(Sender: TObject); - процедура відповідає за відкриття додаткової форми та завантаження в неї текстового документу з завданням.
procedure N6Click(Sender: TObject); - відповідає за закриття додаткової форми.
procedure N4Click(Sender: TObject); - процедура відповідає за відкриття додаткової форми та завантаження в неї текстового документу з довідкою.
7 Опис стандартних процедур і функцій
ShowMessage(‘повідомлення’) – функція, яка відображає коротке повідомлення.
LoadFromFile(filename) – функція завантаження інформації з файлу.
StrToInt(змінна) – функція що переводить рядкову величину в числову цілу.
IntToStr(змінна) – функція що переводить цілу числову величину в рядкову.
8 Інструкція для роботи з програмою
1 Для запуску програми запустити файл «Фонтан.exe» який знаходиться в директорії «Фонтан».
2 Для початку вам необхідно заповнити значеннями ліву крайню таблицю. Кожна комірка повинна бути заповнена бо програма свій обрахунок здійснити не зможе.
3 Потім потрібно натиснути кнопку "Обрахувати" і в праву крайню таблицю буде виданий результат у вигляді нулів (0) та одиниць (1). Під таблицею буде написано, чи залишається вода у фонтані та яка найбільше глибина калюжі.
4 Якщо ви хочете змінити значення вхідних даних то можете це зробити прямо в таблиці, навівши на потрібну комірку курсор, клацнути лівою кнопкою миші та вказати потрібне значення, після чого натиснути кнопку "Обрахувати".
5 Якщо вам потрібно змінити майже всі вхідні дані то простіше буде, натиснути на кнопку "Очистити" яка знаходить у вікні програми під кнопкою "Обрахувати" або у меню "Програма".
6 Для того щоб переглянути завдання для якого було створено цю програму необхідно зайти у меню "Програма" та обрати пункт "Завдання". З'явиться додаткова форма в якій буде відображене завдання та дві кнопки. При натисненні першої закриється активна форма і ви повернетесь до головної програми, при натисненні другої відбудеться вихід з усієї програми.
7 Щоб дізнатись довідку по програмі а тобто інструкцію з експлуатації необхідно натиснути кнопку "Довідка" у головному меню.
8 Для виходу з програми натисніть кнопку закриття вікна або оберіть в меню "Програма" пункт "Вихід".
9 Текст програми
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Menus, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Button2: TButton;
Button3: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N6: TMenuItem;
N4: TMenuItem;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var A:array[0..4,0..4] of integer;
B:array[1..8] of integer;
C:array[1..16] of integer;
mas:array[1..3,1..3] of integer;
e:array[0..4,0..4] of integer;
i,j,m,n,r1,r2,x,y,z,mini,k,l,h,p:integer;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
for i:=0 to 4 do
begin
for j:=0 to 4 do
begin
stringgrid2.cells[i,j]:='';
stringgrid1.cells[i,j]:='';
end; end;
label1.Caption:='';
label2.Caption:='';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if ((stringgrid1.Cells[0,0]='') or (stringgrid1.Cells[0,1]='')
or (stringgrid1.Cells[0,2]='') or (stringgrid1.Cells[0,3]='')
or (stringgrid1.Cells[0,4]='') or (stringgrid1.Cells[1,0]='') or (stringgrid1.Cells[1,1]='') or (stringgrid1.Cells[1,2]='')
or (stringgrid1.Cells[1,3]='') or (stringgrid1.Cells[1,4]=''))
then showmessage('Заповніть всі комірки!')
else
begin
for i:=0 to 4 do
for j:=0 to 4 do
A[i,j]:=strtoint(stringgrid1.cells[i,j]);
for i:=1 to 3 do
for j:=1 to 3 do
begin
mas[i,j]:=strtoint(stringgrid1.Cells[i,j]);
if mas[i,j]>=a[4,3] then
stringgrid2.cells[i,j]:='0'
else stringgrid2.cells[i,j]:='1';
end;
stringgrid2.cells[0,0]:='0';
stringgrid2.cells[0,1]:='0';
stringgrid2.cells[0,2]:='0';
stringgrid2.cells[0,3]:='0';
stringgrid2.cells[0,4]:='0';
stringgrid2.cells[1,4]:='0';
stringgrid2.cells[2,4]:='0';
stringgrid2.cells[3,4]:='0';
stringgrid2.cells[4,4]:='0';
stringgrid2.cells[1,0]:='0';
stringgrid2.cells[2,0]:='0';
stringgrid2.cells[3,0]:='0';
stringgrid2.cells[4,0]:='0';
stringgrid2.cells[4,1]:='0';
stringgrid2.cells[4,2]:='0';
stringgrid2.cells[4,3]:='0';
c[1]:=a[0,0];
c[2]:=a[1,0];
c[3]:=a[2,0];
c[4]:=a[3,0];
c[5]:=a[4,0];
c[6]:=a[0,1];
c[7]:=a[0,2];
c[8]:=a[0,3];
c[9]:=a[0,4];
c[10]:=a[1,4];
c[11]:=a[2,4];
c[12]:=a[3,4];
c[13]:=a[4,4];
c[14]:=a[4,1];
c[15]:=a[4,2];
c[16]:=a[4,3];
b[1]:=a[1,1];
b[2]:=a[2,1];
b[3]:=a[3,1];
b[4]:=a[1,2];
b[5]:=a[1,3];
b[6]:=a[2,3];
b[7]:=a[3,3];
b[8]:=a[3,2];
h:=0;
for x:=0 to 4 do
for y:=0 to 4 do
e[x,y]:=strtoint(stringgrid2.cells[x,y]);
z:=0;
for x:=0 to 4 do
for y:=0 to 4 do
if (e[x,y]=1) then z:=z+1;
mini:=strtoint(stringgrid1.cells[1,1]);
m:=0;
if (z>0) then begin
label1.Caption:='Вода залишається';
for r1:=1 to 3 do
for r2:=1 to 3 do
begin
if (strtoint(stringgrid1.cells[r1,r2])<mini) then
mini:=strtoint(stringgrid1.cells[r1,r2]);
end;
if (mini=strtoint(stringgrid1.Cells[2,2])) then
begin if ((a[2,2]<a[3,2]) and (a[2,2]<a[1,2]) and
(a[2,2]<a[2,3]) and (a[2,2]<a[2,1]) and
(a[4,2]>=a[3,2]) and (a[2,0]>=a[2,1]) and
(a[0,2]>=a[1,2]) and (a[2,4]>=a[2,3])) then
h:=a[4,2]-a[2,2] else
begin for r1:=1 to 3 do
for r2:=1 to 3 do
if (stringgrid1.cells[r1,r2]=stringgrid1.cells[1,1])
then m:=m+1;
if (m=9) then h:=a[4,2]-a[2,2];
end;
end
else h:=a[4,3]-mini;
label2.caption:='Найбільша глибина - '+ inttostr(h);
end
else
begin label1.Caption:='Вода не залишається';
label2.Caption:=''; end;
end;
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9' : ;
#13:
if StringGrid1.Col < StringGrid1.ColCount - 1
then StringGrid1.Col := StringGrid1.Col + 1;
else key := Chr(0);
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
for i:=0 to 4 do
begin for j:=0 to 4 do begin
stringgrid2.cells[i,j]:='';
stringgrid1.cells[i,j]:='';
end; end;
label1.Caption:='';
label2.Caption:='';
end;
procedure TForm1.N2Click(Sender: TObject);
begin
form2.Caption:='Завдання';
form2.memo1.lines.loadfromfile('txt\zavd.txt');
form2.showmodal;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
form1.close;
form2.close;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
form2.Caption:='Довідка';
form2.memo1.lines.loadfromfile('txt\dovidka.txt');
form2.showmodal;
end;
end.