| Autor |
Beitrag |
Anjitsch
Hält's aus hier
Beiträge: 8
|
Verfasst: 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:
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
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: 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 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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!
_________________ 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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...
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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
|
|
|