Перевод кода из Delphi в Pascal
Формулировка задачи:
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Edit1: TEdit;
- Edit2: TEdit;
- Edit3: TEdit;
- Button1: TButton;
- Button2: TButton;
- Label4: TLabel;
- Label5: TLabel;
- Label6: TLabel;
- Label7: TLabel;
- Label8: TLabel;
- Label9: TLabel;
- Label10: TLabel;
- Label11: TLabel;
- Label12: TLabel;
- Label13: TLabel;
- Label14: TLabel;
- Label15: TLabel;
- Button3: TButton;
- procedure Button1Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- const
- n = 5; {kolichestvo stantsii}
- var
- Form1: TForm1;
- rg:real; {opytnaya nagruzka}
- s:real; {opytnaya proizvoditel'nost'}
- p:real; {veroyatnost' prohozhdeniya kadra}
- rp:real; {opytnaya veroyatnost' prohozhdeniya kadra}
- i:integer; {schetchik kollizii(neproshedshih kadrov)}
- j:integer; {schetchik uspeshno proshedshih kadrov}
- k:integer; {peremennaya "proverki prohoda kadrov" }
- l:integer; {kolichestvo kadrov v nabore}
- g:real; {normirovannaya propuschennaya nagruzka}
- r:integer; {dlitel'nost' kadra}
- bool:boolean; {flag sostoyaniya}
- implementation
- {$R *.dfm}
- procedure aloxa; {protsedura ALOHA}
- begin
- i:=0;
- j:=0;
- for k:= 1 to l do {nachalo proverki prohoda kadrov}
- begin
- bool:=false;{esli false to paket ne proshel}
- while bool=false do {poka bool=false do...}
- begin
- rp:=(random(100)+1)/100;{opytnaya veroyatnost' prohozhdeniya kadra - sluchainym obrazom generiruetsya}
- if (rp<=p) then {esli opytnaya veroyatnost' prohozhdeniya kadra <= veroyatnost' prohozhdeniya kadra}
- begin
- bool:=true;{...bool:=true;}
- inc(j);{schitaet kolichestvo uspeshno proshedshih paketov}
- end
- else inc(i);{kolichestvo neproshedshih paketov}
- end;
- end;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- randomize;{generator sluchainyh chisl}
- if edit1.Text <> '' then
- g:=StrToFloat(Edit1.Text);
- if edit2.Text <> '' then
- r:=StrToInt(Edit2.Text);
- if edit3.Text <> '' then
- l:=StrToInt(Edit3.Text);
- p:=exp(-2*G);{veroyatnost' prohozhdeniya kadra}
- aloxa;
- rg:=((j+i)*n*1/r)/l; {opytnoe znachenie normirovannoi propuschennoi nagruzki}
- s:=rg*exp(-2*rg); {opytnoe znachenie proizvoditel'nosti}
- label5.Caption:='Teoreticheskoe znachenie proizvoditelnosti '+FloattoStr(g*p);
- label6.Caption:='Opytnoe znachenie proizvoditelnosti '+FloatToStr(s);
- label7.Caption:='Kolichestvo kollizii na '+floattostr(l)+' paketov '+floattostr(i);
- label8.Caption:='Obschee vremya peredachi kadrov '+floattostr((j+i)*r);
- label9.Caption:='Vremya peredachi odnogo kadra '+floattostr((j+i)*r/l);
- p:=exp(-G);
- aloxa;
- rg:=((j+i)*n*1/r)/l; {opytnoe znachenie normirovannoi propuschennoi nagruzki}
- s:=rg*exp(-rg); {opytnoe znachenie proizvoditel'nosti}
- label11.Caption:='Teoreticheskoe znachenie proizvoditelnosti '+FloattoStr(g*p);
- label12.Caption:='Opytnoe znachenie proizvoditelnosti '+FloatToStr(s);
- label13.Caption:='Kolichestvo kollizii na '+floattostr(l)+' paketov '+floattostr(i);
- label14.Caption:='Obschee vremya peredachi kadrov '+floattostr((j+i)*r);
- label15.Caption:='Vremya peredachi odnogo kadra '+floattostr((j+i)*r/l);
- end;
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- close;
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- edit1.Text:='';
- edit2.Text:='';
- edit3.Text:='';
- label5.Caption:='';
- label6.Caption:='';
- label7.Caption:='';
- label8.Caption:='';
- label9.Caption:='';
- label11.Caption:='';
- label12.Caption:='';
- label13.Caption:='';
- label14.Caption:='';
- label15.Caption:='';
- end;
- end.
Решение задачи: «Перевод кода из Delphi в Pascal»
- const n=5; {количество станций}
- procedure aloha(g: Real; r, l: Integer); {процедура ALOHA}
- var i, j, k: Integer; rg, p: Real;
- begin
- for m:=2 downto 1 do begin
- i:=0; {счетчик коллизий} p:=Exp(-m*g); {вероятность прохождения кадра}
- for k:=1 to l do
- repeat
- if Random>p then Inc(i) else Break;
- until False;
- rg:=(l+i)*n/r/l; {опытное значение нормированной пропущенной нагрузки}
- WriteLn('Теоретическое значение производительности: ',g*p);
- WriteLn('Опытное значение производительности: ',rg*exp(-m*rg));
- WriteLn('Количество коллизий на ',l,' пакетов: ',i);
- WriteLn('Общее время передачи кадров: ',(l+i)*r);
- WriteLn('Время передачи одного кадра: ',(l+i)*r/l);
- end;
- end;
- var
- g: Real; {нормированная пропущенная нагрузка}
- r: Integer; {длительность кадра}
- l: Integer; {количество кадров в наборе}
- begin
- Randomize; Write('g r l: '); ReadLn(g,r,l); aloha(g,r,l);
- end.
Объяснение кода листинга программы
const n = 5; {количество станций} procedure aloha(g: Real; r, l: Integer); {процедура ALOHA} var i, j, k: Integer; rg, p: Real; begin for m := 2 downto 1 do begin i := 0; {счетчик коллизий} p := Exp(-m g); {вероятность прохождения кадра} for k := 1 to l do repeat if Random > p then Inc(i) else Break; until False; rg := (l + i) n / r / l; {опытное значение нормированной пропущенной нагрузки} WriteLn('Теоретическое значение производительности: ', g p); WriteLn('Опытное значение производительности: ', rg Exp(-m rg)); WriteLn('Количество коллизий на ', l, ' пакетов: ', i); WriteLn('Общее время передачи кадров: ', (l + i) r); WriteLn('Время передачи одного кадра: ', (l + i) * r / l); end; end; var g: Real; {нормированная пропущенная нагрузка} r: Integer; {длительность кадра} l: Integer; {количество кадров в наборе} begin Randomize; Write('g r l: '); ReadLn(g, r, l); aloha(g, r, l); end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д