Другие языки программирования и технологии

Кто знает язык delphi, нужно пояснить что означает каждая строчка программы

unit LR1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
pp: TOpenDialog;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a:array[0..255]of real;
aa:array[0..255]of real;
m,mm:array[0..255,0..255]of real;
c:File of byte;
b,bb:byte;
i,j:integer;
s,ss,x,xx,en,k,ki:real;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=0 to 255 do begin
for j:=0 to 255 do begin
m[i,j]:=0;
mm[i,j]:=0; end;
a:=0;
aa:=0;
end;
if pp.Execute then begin
AssignFile(c,pp.FileName);
reset(c);

while not EoF(c) do begin
read(c,b);
a:=a+1;
aa:=a;
end;
en:=0;
s:=0;
for i:=0 to 255 do begin
aa:=aa/10000;
s:=s+aa;
if aa<>0 then
en:=en+aa*(ln(aa)/ln(2));
end;
Memo1.lines.Add('сумма вероятностей= '+FloatToStr(s));
Memo1.lines.Add('энтропия источника= '+FloatToStr(-en));
end;
reset(c);
read(c,b);
while not EoF(c) do begin
read(c,bb);
m[b,bb]:=m[b,bb]+1;
mm[b,bb]:=m[b,bb];
b:=bb;
end;
s:=0;
xx:=0;
x:=0;
for i:=0 to 255 do begin
for j:=0 to 255 do begin
m[i,j]:=m[i,j]/9999;
s:=s+m[i,j];
if m[i,j]<>0 then begin
x:=x+m[i,j]*(ln(m[i,j])/ln(2));
end;
if a<>0 then
mm[i,j]:=mm[i,j]/a;
ss:=ss+mm[i,j];
end;
xx:=xx+x;
x:=0;

end;

memo1.Lines.Add('сумма совместных вероятностей пар= '+floatToStr(s));
memo1.Lines.Add('сумма условных вероятностей пар= '+floatToStr(ss));
s:=0;
ss:=0;

for i:=0 to 255 do begin
for j:=0 to 255 do begin

if mm[i,j]<>0 then
s:=s+mm[i,j]*(ln(mm[i,j])/ln(2));

end;
s:=s*aa;
ss:=ss+s;
s:=0;
end;
memo1.Lines.Add('условная энтропия= '+floatToStr(-ss));
memo1.Lines.Add('совместная энтропия= '+floatToStr(-xx));
x:=-en-ss;
memo1.Lines.Add('проверка '+floatToStr(x));
k:=(8-en)/8;
ki:=10000*(-en);
memo1.Lines.Add('количество информации без учета связи = '+floatToStr(ki));
memo1.Lines.Add('коэффициент избыточности без учета связи = '+floatToStr(k));
k:=(8-ss)/8;
ki:=10000*(-ss);
memo1.Lines.Add('количество информации c учетом связи = '+floatToStr(ki));
memo1.Lines.Add('коэффициент избыточности с учетом связи = '+floatToStr(k));

end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Clear;

end;

end.
unit LR1; Название модуля

interface Начало определения внешнего интерфейса модуля

uses Объявление подключаемых модулей
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; Собственно имена подключаемых модулей

type Задание общих типов
TForm1 = class(TForm) Создание скласса формы
pp: TOpenDialog; Объявление диалога открытия файла
Memo1: TMemo; Объявление редактируемого поля
Button1: TButton; Объявление кнопки 1
Button2: TButton; Объявление кнопки 2
procedure Button1Click(Sender: TObject); Реакция на нажатие кнопки 1
procedure Button2Click(Sender: TObject); Реакция на нажатие кнопки 2
private
{ Private declarations }
public
{ Public declarations }
end;

var Начало объявления переменных программы
Form1: TForm1; Собственно форма
a:array[0..255]of real; Один массив
aa:array[0..255]of real; Другой массив
m,mm:array[0..255,0..255]of real; Ещё два массива
c:File of byte; Файл целочисленных данных от 0 до 255
b,bb:byte; Целочисленные переменные от 0 до 255
i,j:integer; Ещё две целочисленные переменные, но уже с большим диапазоном значений
s,ss,x,xx,en,k,ki:real; Туева хуча действительных переменных
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); Начало процедуры реакции на нажатие первой кнопки
begin
for i:=0 to 255 do begin Цикл от 0 до 255
for j:=0 to 255 do begin Цикл от 0 до 255
m[i,j]:=0; Обнуление массива
mm[i,j]:=0; end; Обнуление массива
a[ i]:=0; Обнуление массива
aa[ i]:=0; Обнуление массива
end;
if pp.Execute then begin Если файло выбрано
AssignFile(c,pp.FileName); Сапоставляем его с переменной
reset(c); Открываем его на чтение

while not EoF(c) do begin Пока не конец файло
read(c,b); Читаем байт
a:=a+1; Увеличиваем на 1, только не понятно что и зачем… mail погрыз немного
aa:=a; Делаем присвоение, но тоже не понятно что и зачем… mail погрыз немного
end;

Дальше нет смысла объяснять, ибо в последних строчках какая-то ошибка!
Однозначно!!!
Дмитрий Мурзин
Дмитрий Мурзин
62 927
Лучший ответ
ну, это платно, много букаф
Владимир Шорин
Владимир Шорин
15 648

Похожие вопросы