Autor Beitrag
Anjitsch
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 20.03.09 13:42 
Moin Leute,
ich hab folgendes Problem
Und zwar sollten wir ein Algorithmus in der künstlichen Sprache "REPAS" (Teilmenge von Delphi) programmieren.
Das Programm sieht wie folgt aus:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Eingabe: TLabel;
    Ausgabe: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Start: TButton;
    Edit3: TEdit;
    procedure StartClick(Sender: TObject);
    procedure einlesen1 (var a:integer);
    procedure einlesen2 (var b:integer);
    procedure ausgeben (var c:integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.StartClick(Sender: TObject);
label M1,M2,M3;
var a,b,c: Integer;
begin
 einlesen1(a);
 einlesen2(b);
 M1: IF (a-b) >= 0 then Goto M2;
 c:=a; a:=b; b:=c;
 M2: IF (a-b) = 0 then Goto M3;
 a:=a-b;
 Goto M1;
 M3: ausgeben(a);
end;

procedure TForm1.einlesen1(var a:integer);
begin
 a:=strtoint(edit1.text);
end;

procedure TForm1.einlesen2(var b:integer);
begin
 b:=strtoint(edit2.text);
end;

procedure TForm1.ausgeben(var c:integer);
begin
  edit3.text:=inttostr(c);
end;

end.


Nun sollen wir sagen, was das Programm macht.
Doch ich komme nicht auf eine genaue Lösung.
Wäre gut, wenn mir jemand helfen könnte.

MfG
Anjitsch

Moderiert von user profile iconKha: Delphi-Tags hinzugefügt
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Fr 20.03.09 13:50 
Hallo!

Auf welche "ungenaue" Lösung kommst Du denn? Oder anders ausgedrückt: was genau verstehst Du nicht an diesem Quelltext?

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Anjitsch Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 20.03.09 13:54 
also ich verstehe nicht, wie man auf die Lösung also wie man auf die Zahl die ausgegeben wird, kommt.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 20.03.09 14:04 
user profile iconAnjitsch hat folgendes geschrieben Zum zitierten Posting springen:
Moin Leute,
[...]
ausblenden Delphi-Quelltext
 
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
{ ... }
procedure TForm1.StartClick(Sender: TObject);
label M1,M2,M3;
var a,b,c: Integer;
begin
 einlesen1(a);
 einlesen2(b);
 M1: IF (a-b) >= 0 then Goto M2;
 c:=a; a:=b; b:=c;
 M2: IF (a-b) = 0 then Goto M3;
 a:=a-b;
 Goto M1;
 M3:
 ausgeben(a);
end;

[...]


Dieser Quälkot ist einfach nur grausam! Da bekommt man ja Augenkrebs!

Äquivalent, aber etwas sauberer (nicht ganz optimal, sonst würd ich zu viel verraten), ist folgendes:
ausblenden Delphi-Quelltext
 
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
{ ... }
procedure TForm1.StartClick(Sender: TObject);
var a,b,c: Integer;
begin
  einlesen1(a);
  einlesen2(b);
  do
    IF a-b < 0 then 
    Begin
      c:=a; 
      a:=b; 
      b:=c;
    end;
    IF a-b = 0 then
    begin
      break;
    end;
    a:=a-b;
  until false;
  ausgeben(a);
end;


Ist ein recht bekannter Algorithmus.

P.S.: Und prügel den Autor des Oben geposteten Ausschnitts von mir: Das ist unverantwortlich, Anfängern Goto beizubringen!

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 20.03.09 15:15 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
P.S.: Und prügel den Autor des Oben geposteten Ausschnitts von mir: Das ist unverantwortlich, Anfängern Goto beizubringen!
Goto an sich ist ja nicht das Schlimme. Aber eine Verwendung in dieser Art und Weise... :shock:
So würde man das vielleicht in Assembler machen, aber von Hochsprachen hat der Autor wohl noch nicht viel verstanden.

Und da wundern sich die Leute dann hinterher, wenn die Lernenden nix können und verstehen...
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 20.03.09 15:53 
Vielleicht unterstützt RePas keien Strukturierung? Wäre ja ein Grund diese Sprache in die Tonne zu treten

_________________
Markus Kinzler.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 20.03.09 16:02 
Stimmt, ist so...
www.hsg-kl.de/faeche...mentation/RePas.html
Das Ding ist an Assembler angelehnt wie man auf den Seiten dort sieht. Allerdings hat sowas dann im Schulunterricht eigentlich nicht viel zu suchen, wenn ich so den Lehrplan anschaue.