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 public 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
Kha: 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
Anjitsch hat folgendes geschrieben : |
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
BenBE hat folgendes geschrieben : |
| 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!