Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Algorithmus in der künstlichen Sprache "REPAS"


Anjitsch - Fr 20.03.09 13:42
Titel: Algorithmus in der künstlichen Sprache "REPAS"
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:

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 - 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?


Anjitsch - 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 - Fr 20.03.09 14:04

user profile iconAnjitsch hat folgendes geschrieben Zum zitierten Posting springen:
Moin Leute,
[...]

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:

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!


jaenicke - 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 - Fr 20.03.09 15:53

Vielleicht unterstützt RePas keien Strukturierung? Wäre ja ein Grund diese Sprache in die Tonne zu treten


jaenicke - Fr 20.03.09 16:02

Stimmt, ist so...
http://www.hsg-kl.de/faecher/inf//bonsai/BonsaiCompiler/Dokumentation/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.