
Міністерство освіти і науки України
Національний університет харчових технологій
Звіт з навчальної практики
На тему: “оформлення лабороторних робіт №1-5”
Виконав
Студент групи АКС-2-4
Андреєв Сергій
Перевірив викладач
Ліманська Н.В.
Київ 2014
Вступ……………………………………………………………………………
Лабороторна робота №1………………………………………………………
Лабороторна робота №2………………………………………………………
Лабороторна робота №3………………………………………………………
Лабороторна робота №4………………………………………………………
Лабороторна робота №5………………………………………………………
Висновки………………………………………………………………………
Використана література………………………………………………………
Вступ
У сучасному світі , майже все побудовано на машинах, які були раніше кимось запрограмовані для виконання певних задач.
Програмування — це процес проектування, написання, тестування, зневадження і підтримки комп'ютерних програм. Програмування поєднує в собі елементи інженерії (існує навіть відповідна спеціальна галузь інженерії — програмна інженерія фундаментальних наук (перш за все математики) і мистецтва .
Для того що б розумітись у цьому процесі потрібно знати, що таке машина Поста і Тьюрінга, та як вони працюють бо на цих принципах побудовані теперешнє поняття алгоритму. Потрібно вміти проводити аналізи працемісткості та поопераційний часовий аналіз алгоритму для того щоб розуміти, який алгорим потрібно вибрати для вирішення тієї чи іншої задачі. А також потрібно знати, що таке рекурсія та вміти нею користуватися при проектуванні програм.
Саме всі ці поняття дають нам розуміння суті слова програмування.
Лабороторна робота №1
Завдання:
Програмно реалізувати основні інструкції з набору елементарних операцій для машини Поста.
Конфігурація машини Поста.
V |
V |
|
|
V |
V |
|
|
|
|
|
|
|
|
V |
Теоретичні відомості
Машина Поста — це абстрактна (тобто така, що не існує в арсеналі техніки), але дуже проста обчислювальна машина. Машина Поста, хоча зовнішньо проста, може здійснювати різні обчислення, для чого потрібно задати початковий стан каретки і програму, яка виконає ці обчислення. Машиною ця математична конструкція названа тому, що при її побудові використовуються деякі поняття реальних машин (елемент пам’яті, команда тощо).
Машину Поста можна розглядати як спрощену модель комп’ютера. Насправді, як комп’ютер, так і машина Поста мають:
неподільні носії інформації (комірки — біти), які можуть бути заповненими або незаповненими;
обмежений набір елементарних дій — команд, кожна з яких виконується за один такт (крок).
Машина Поста складається із стрічки та каретки (яка також називається головкою зчитування/запису). Стрічка є безмежною і розділена на комірки однакового розміру. Комірка стрічки може бути порожньою, або у ній може перебувати мітка V. Інформація про те, які комірки порожні, а які містять мітки, утворює стан стрічки. Іншими словами, стан стрічки — це розподіл міток по комірках. Стан стрічки змінюється у процесі роботи машини. Зауважимо, що наявність міток у комірці можна інтерпретувати як «1», а відсутність як «0». Таке двійкове представлення інформації подібне до уявлення, яке використовується практично у всіх сучасних комп’ютерах.
Каретка може пересуватися вздовж стрічки вліво і вправо. Коли вона нерухома — вона перебуває навпроти однієї комірки стрічки. У такому випадку говорять, що каретка оглядає одну комірку. За одиницю часу каретка може зробити одну із трьох дій: стерти мітку, поставити мітку, зробити рух до сусідньої комірки. Стан машини Поста складається із стану стрічки і розташування каретки. Дії каретки підпорядковані програмі, яка складається з пронумерованого набору команд (команди можна представляти як рядки програми). Команди бувають шести типів:
1. записати 1 (мітку), перейти до i-го рядка програми;
2. записати 0 (стерти мітку), перейти до i-го рядка програми;
3. переміститися вліво, перейти до i-го рядка програми;
4. переміститися вправо, перейти до i-го рядка програми;
5. зупинка;
6. якщо 0, то перейти до i-го рядка програми, інакше перейти до j-го рядка програми.
Наведемо перелік неприпустимих дій, які ведуть до аварійної зупинки машини:
спроба записати 1 (мітку) в заповнену комірку;
спроба стерти мітку в порожній комірці;
нескінченне виконання (зациклення).
Команди машини Поста:
n. → m |
Крок вправо |
n. ← m |
Крок вліво |
n. V m |
Записати мітку |
n. X m |
Стерти мітку |
n. ? a:b |
Переглянути комірку: якщо в комірці знаходиться 0, тоді перейти на команду з номером а, інакше на команду з номером b. |
n. ! |
Зупинка |
Будемо розуміти, що ми можемо застосувати програму до біжучого стану машини Поста, якщо виконання програми не призведе до зациклювання, тобто рано чи пізно ми виконаємо команду «Зупинка».
Програмою для машини Поста називається непорожній список послідовно пронумерованих команд наступної структури: n K m, де n - порядковий номер команди, K − дія, яка виконується кареткою, m - номер наступної команди, яку необхідно виконати.
З погляду властивостей алгоритмів, що вивчаються за допомогою машини Поста, найбільший інтерес представляють причини зупинки машини під час виконанні програми:
зупинка за командою «стоп». Така зупинка називається результативною і вказує на коректність алгоритму;
зупинка при виконанні неприпустимої команди. У цьому випадку зупинка називається безрезультатною;
машина не зупиняється ніколи. У цьому і у попередньому випадку ми маємо справу з некоректним алгоритмом.
Під початковим станом каретки розумітимемо її положення навпроти порожньої комірки лівіше за найлівішу мітку на стрічці.
Пояснення до завдання:
Програма має каретку, стрічку, та керуючі кнопки, які будуть виконувати всі команди, що виконує машина поста:
Переміщати каретку вправо
Переміщати каретку вліво
Перевіряти чи відмічена/не відмічена комірка
Стирати мітку
Встановлювати мітку
Код програми:
unit Unit3;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Menus;
type
TForm3 = class(TForm)
CheckBox11: TCheckBox;
CheckBox12: TCheckBox;
CheckBox13: TCheckBox;
CheckBox14: TCheckBox;
CheckBox15: TCheckBox;
Shape1: TShape;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
CheckBox16: TCheckBox;
CheckBox17: TCheckBox;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Memo1: TMemo;
N6: TMenuItem;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure VK_Right(Sender: TObject; var Key: Char);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
var x,y,n,i:integer; s,s1:string;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
if n<17 then begin
n:=n+1; i:=i+1;
Shape1.Left:=Shape1.Left+16;
memo1.Lines.Add(inttostr(i)+'. →');
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
if n>1 then begin
n:=n-1; i:=i+1;
Shape1.Left:=Shape1.Left-16;
memo1.Lines.Add(inttostr(i)+'. ←');
end;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
i:=i+1;
s:='';
case n of
1:begin if Checkbox1.Checked=False then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end; Checkbox1.Checked:=False;
end;
2:begin if Checkbox2.Checked=False then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end; Checkbox2.Checked:=False;
end;
3:begin if Checkbox3.Checked=False then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end; Checkbox3.Checked:=False;
end;
4:begin if Checkbox4.Checked=False then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end;Checkbox4.Checked:=False;
end;
5:begin if Checkbox5.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox5.Checked:=False;
end;
6:begin if Checkbox6.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox6.Checked:=False;
end;
7:begin if Checkbox7.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox7.Checked:=False;
end;
8:begin if Checkbox8.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox8.Checked:=False;
end;
9:begin if Checkbox9.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox9.Checked:=False;
end;
10:begin if Checkbox10.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox10.Checked:=False;
end;
11:begin if Checkbox11.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox11.Checked:=False;
end;
12:begin if Checkbox12.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox12.Checked:=False;
end;
13:begin if Checkbox13.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox13.Checked:=False;
end;
14:begin if Checkbox14.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox14.Checked:=False;
end;
15:begin if Checkbox15.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox15.Checked:=False;
end;
16:begin if Checkbox16.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox16.Checked:=False;
end;
17:begin if Checkbox17.Checked=False then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox17.Checked:=False;
end;
end;
if not(s='помилка') then s:='виконано';
memo1.Lines.Add(inttostr(i)+'. Стерти. '+s)
end;
procedure TForm3.Button4Click(Sender: TObject);
begin
s:='';
case n of
1:begin if Checkbox1.Checked=True then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end;Checkbox1.Checked:=True;
end;
2:begin if Checkbox2.Checked=True then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end;Checkbox2.Checked:=True;
end;
3:begin if Checkbox3.Checked=True then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end;Checkbox3.Checked:=True;
end;
4:begin if Checkbox4.Checked=True then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end;Checkbox4.Checked:=True;
end;
5:begin if Checkbox5.Checked=True then begin showmessage('Комірка '+inttostr(n)+ 'не відмічена');s:='помилка';end;Checkbox5.Checked:=True;
end;
6:begin if Checkbox6.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox6.Checked:=True;
end;
7:begin if Checkbox7.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox7.Checked:=True;
end;
8:begin if Checkbox8.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox8.Checked:=True;
end;
9:begin if Checkbox9.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox9.Checked:=True;
end;
10:begin if Checkbox10.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox10.Checked:=True;
end;
11:begin if Checkbox11.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox11.Checked:=True;
end;
12:begin if Checkbox12.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox12.Checked:=True;
end;
13:begin if Checkbox13.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена ');s:=' помилка';end;Checkbox13.Checked:=True;
end;
14:begin if Checkbox14.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox14.Checked:=True;
end;
15:begin if Checkbox15.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox15.Checked:=True;
end;
16:begin if Checkbox16.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox16.Checked:=True;
end;
17:begin if Checkbox17.Checked=True then begin showmessage('Комірка '+inttostr(n)+ ' не відмічена');s:='помилка';end;Checkbox17.Checked:=True;
end;
end;
if not(s='помилка') then s:='виконано';
memo1.Lines.Add(inttostr(i)+'. Мітка. '+s)
end;
procedure TForm3.Button5Click(Sender: TObject);
begin
case n of
1: if Checkbox1.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
2: if Checkbox2.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
3: if Checkbox3.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
4: if Checkbox4.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
5: if Checkbox5.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
6: if Checkbox6.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
7: if Checkbox7.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
8: if Checkbox8.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
9: if Checkbox9.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
10:if Checkbox10.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
11:if Checkbox11.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
12:if Checkbox12.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
13:if Checkbox13.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
14:if Checkbox14.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
15:if Checkbox15.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
16:if Checkbox16.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
17:if Checkbox17.Checked=True then memo1.Lines.Add('Перевірка...Комірка відмічена') else memo1.Lines.Add('Перевірка...Комірка не відмічена');
end;
end;
procedure TForm3.N2Click(Sender: TObject);
begin
Button1.Click;
end;
procedure TForm3.N3Click(Sender: TObject);
begin
Button2.Click;
end;
procedure TForm3.N4Click(Sender: TObject);
begin
Button3.Click;
end;
procedure TForm3.N5Click(Sender: TObject);
begin
Button4.Click;
end;
end.
Пояснення до виконаного завдання:
-
перевіряє
чи відмічена комірка, якщо не відмічена,
то ставить мітку, якщо відмічена, то
програма видає повідомлення про помилку.
-
перевіряє чи відмічена комірка, якщо
відмічена, то стирає
мітку, якщо не відмічена, то програма
видає повідомлення про помилку.
-
переводить каретку на одну комірку
вліво.
-
переводить
каретку на одну комірку вправо.
-перевіряє
комірку і виводить повідомлення про
те , чи є комірка відміченою, чи ні.
-стрічка
з комірками та каретка
-
каретка
-
“Статус
бар” видає повідомлення про те, що
робить користувач.