Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einführung Stack Klasse 12 (https://www.delphipraxis.net/136034-einfuehrung-stack-klasse-12-a.html)

Razor90 22. Jun 2009 14:44


Einführung Stack Klasse 12
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo! Ich muss es leider hier nochmal versuche, habe gerade im falschen Forum gepostet!
Im Info Grunskurs Klasse 12 sollen wir einen ADT Stack programmieren. Dieser soll aussehen wie im Anhang.Das ganze Programm soll sich auf 2 Units stützen, der Oberfläche und der unit Stack. Den einzigen Hinweis, den wir bekommen haben sind die Befehle push, pop, init und top, sowie die function empty. Ich habe aber keinerlei Ahnung wie diese aufgerufen werden, bzw. wie ich die beiden units veknüpfen soll. Meinen ersten Versuch könnt ihr ja im Anhang bewundern. Bitte helft mir weiter, ich finde auch nix zum Nachlesen (das Meiste verstehe ich nicht!!!)

Mithrandir 22. Jun 2009 15:32

Re: Einführung Stack Klasse 12
 
Zitat:

Bitte helft mir weiter, ich finde auch nix zum Nachlesen
=> http://lernen.bildung.hessen.de/info...sten/stack.htm

Und, ganz ehrlich: Das hätte man über Google finden können. Und wenn du das nicht verstehst... Nun ja, bei konkreten Fragen helfen wir dir gerne weiter. Die Grundlagen musst du dir schon selbst aneignen.

Phoenix 22. Jun 2009 15:51

Re: Einführung Stack Klasse 12
 
Zitat:

Zitat von Razor90
Hallo! Ich muss es leider hier nochmal versuche, habe gerade im falschen Forum gepostet!

Das ist eigentlich kein Grund einen neuen Thread aufzumachen. Du kannst auch bei Deinen eigenen Beiträgen einfach rechts oben auf das Ausrufezeichen klicken, um den Beitrag an uns Moderatoren zu melden. In den Text einfach reinschreiben dass wir den Thread bitte ins richtige Forum verschieben sollen und dann wird das vom nächsten freien Moderator auch gerne gemacht. ;-)

Razor90 22. Jun 2009 15:55

Re: Einführung Stack Klasse 12
 
okay...gut
also erstmal weiß ich nicht wie ich die typendeklaration mache!
Delphi-Quellcode:
type st:array[1..5] of integer;
             private
             stackpointer, zahl, a:integer;
             private
             procedure Init(var ST:integer);
             procedure Push(var ST:integer; zahl:integer);
             procedure Top (var ST:integer; zahl:integer);
             procedure Pop (var ST:integer; zahl:integer);
so hab ich es mir gedacht, aber es funktioniert nicht. iuch brauche einen array, aber es sollte auch ein typ sein meinte die lehrerin. Wie wird das nun richtig deklariert? Ich bastel schon immerzu rum aber komm nich auf die Lösung!

quendolineDD 22. Jun 2009 16:01

Re: Einführung Stack Klasse 12
 
So wie du das machst vermischst du Klassendeklarationen bzw. Record-Deklarationen mit normalen Typendeklarationen.
Kannst dir ja auch ein Record machen was die Proceduren und Parameter bereitstellt bzw. das ganze mit einer Klasse lösen.
Ansonsten kannst du dir ja mal die Sourcen von der Klasse TStack anschauen, welche glaube ich in neuen Delphiversionen schon mitgeliefert wird.

Razor90 22. Jun 2009 16:03

Re: Einführung Stack Klasse 12
 
ich weiß jetzt nicht was ich machen soll^^ kannst du mir vll ein ansatz geben?

mkinzler 22. Jun 2009 16:06

Re: Einführung Stack Klasse 12
 
Dich mit den Grundlagen befassen:
http://www.delphi-treff.de/tutorials...phi-crashkurs/

Jakob Ullmann 22. Jun 2009 16:10

Re: Einführung Stack Klasse 12
 
für den Anfang reicht es vielleicht schon, mal in die OH "record" einzutippen, ansonsten http://www.delphi-treff.de/tutorials...shkurs/page/8/

mkinzler 22. Jun 2009 16:14

Re: Einführung Stack Klasse 12
 
Besser wäre es aber den Crashkurs von Anfang an durchzuarbeiten und zu überprüfen, ob ihm die Grundlagen geläufig sind.

mkinzler 22. Jun 2009 16:20

Re: Einführung Stack Klasse 12
 
CrossPost DF

Mithrandir 22. Jun 2009 16:32

Re: Einführung Stack Klasse 12
 
Zitat:

Zitat von mkinzler

Na super, ich kotz gleich. Drüben im DF haben sie ihm schon gestern geholfen, aber selbst das hat er nicht gerafft... Oh man...

//Edit: So es sich denn um ihn, und nicht einen Schulkameraden handelt. Hat man ja auch öfters... ;)

Razor90 22. Jun 2009 16:54

Re: Einführung Stack Klasse 12
 
Ist ja schön wenn jemand mal nett sein kann^^ So habe jetzt alles durchgelesen und bin auch weiter gekommen. Habe nur noch ein Problem in der procedure Push, da irgendwie der wert nicht auf das array gespeichert wird.
Delphi-Quellcode:
unit Stack;

interface

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

type
  st = array [1..5] of Integer;
var
  a: ^st;
  stackpointer, zahl: Integer;


   procedure Init(var ST:integer);
   procedure Push(zahl:integer);
   procedure Top (zahl:integer);
   procedure Pop (zahl:integer);

   implementation

procedure Init;
begin
 stackpointer:=0;
end;

procedure Push(zahl:integer);
begin
 if(stackpointer < 5)
   then begin
        Inc(stackpointer);
        a[stackpointer]:=zahl;
    end;
end;

procedure Top(zahl:integer);
begin
 if(stackpointer > 0)
   then begin
        a[stackpointer]:=zahl;
    end;
end;

procedure Pop;
begin
  if stackpointer=0 then exit;
   a[stackpointer]:=a[stackpointer-1];


end;

end.
Hat jemand ne Idee zu dem Problem a[stackpointer]:=zahl;?

DeddyH 22. Jun 2009 17:03

Re: Einführung Stack Klasse 12
 
Wieso ist a ein Zeiger auf das Array?

Razor90 22. Jun 2009 17:06

Re: Einführung Stack Klasse 12
 
Ich hab doch gar kein Zeiger....oder?

Mithrandir 22. Jun 2009 17:07

Re: Einführung Stack Klasse 12
 
:roll:
Delphi-Quellcode:
var
  a: ^st; //<= Zeiger auf st

Razor90 22. Jun 2009 17:08

Re: Einführung Stack Klasse 12
 
wusst ich gar nicht, immer wenn ich das ohne dieses a gemacht habe bekam ich den fehler: Array-Typ erforderlich. Deshalb das a.
Achso...das "^" muss weg, dann klappts.

Popov 22. Jun 2009 17:17

Re: Einführung Stack Klasse 12
 
Zuerst eine Frage: was kannst du inzwischen? Wie sind deine Programmierkenntnisse?

Delphi-Quellcode:
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Willst du nur kopieren oder verstehst du auch den Sinn der Units. Du machst dir das aber einfach. Also, räum auf. Lösch zuerst alles, starte das Programm und wenn der Compiler eine unbekannte Funktion meldet, dann drückst du auf F1 und guckst in welcher Unit die Funktion, Prozedur oder Klasse usw. ist.

Delphi-Quellcode:
type
  st = array [1..5] of Integer;
var
  a: ^st;
Entschuldige, aber das sieht aus ob es irgendwo kopiert wurde ohne zu wissen wozu.

Ich hab mir den Rest nicht angeguckt, aber wieso nicht:

Delphi-Quellcode:
var
  a: array [1..5] of Integer;

Highttower 22. Jun 2009 17:18

Re: Einführung Stack Klasse 12
 
Zitat:

Zitat von Razor90
...
Delphi-Quellcode:
...
   procedure Init(var ST:integer);
 
   implementation

procedure Init;
begin
 stackpointer:=0;
end;

...
...

Lass das (var ST:integer) doch einfach weg =)

Razor90 22. Jun 2009 17:23

Re: Einführung Stack Klasse 12
 
so klappt alles, bloß ich finde keine wirkliche antwort darauf, was dir procedure TOP erledigen soll. und jetzt bleibt mal locker, ich hab seit 6 monaten n bissl delphi unterricht und wir machen nicht wirklich viel. also ein bischen verständnis bitte.

Mithrandir 22. Jun 2009 17:27

Re: Einführung Stack Klasse 12
 
Zitat:

Zitat von Razor90
und jetzt bleibt mal locker, ich hab seit 6 monaten n bissl delphi unterricht und wir machen nicht wirklich viel. also ein bischen verständnis bitte.

Eine Tüte Mitleid für dich. *patsch*

In der Oberstufe kann man schon ein wenig Eigeninitiative Verlangen. Du hast die Begriffe "Stack" und "Pop". Meinst du nicht, dass, wenn du Google mal ganz liebt fragst, es dir ein paar grundlegende Antworten liefert?

Sorry, aber wenn du nur halbherzig an die Sachen gehen willst, dann hat keiner was davon...

Razor90 22. Jun 2009 17:31

Re: Einführung Stack Klasse 12
 
ich google jetzt 15min nach stack top, delphi top, usw...kannst nich einfach mal weiterlinken wenn du ne seite weißt?

Mithrandir 22. Jun 2009 17:31

Re: Einführung Stack Klasse 12
 
Hab ich schon.

DeddyH 22. Jun 2009 17:33

Re: Einführung Stack Klasse 12
 
http://de.wikipedia.org/wiki/Stapelspeicher
Hat geschätzte 10 Sekunden gedauert ;)

Highttower 22. Jun 2009 17:34

Re: Einführung Stack Klasse 12
 
http://en.wikipedia.org/wiki/Stack_(data_structure)


.....

15 minuten? ich hab 20 sekunden gebraucht

edit: mist da tippt jemand schneller xD

Razor90 22. Jun 2009 17:39

Re: Einführung Stack Klasse 12
 
also ist top nur das obere ende des stacks, also die spitze. aber was soll man da programmieren, ich mein ich gehe doch nicht runter oder...häää?

Mithrandir 22. Jun 2009 17:43

Re: Einführung Stack Klasse 12
 
Zitat:

Zitat von Razor90
ich mein ich gehe doch nicht runter oder...häää?

:?:

Und meinen Link hast du dir leider immer noch nicht genauer angesehen...

mkinzler 22. Jun 2009 17:44

Re: Einführung Stack Klasse 12
 
Im Speicher stapelt der Stack nach unten. Deshalb sprechen manche auch von einem Keller(-speicher)

Popov 22. Jun 2009 17:51

Re: Einführung Stack Klasse 12
 
Zitat:

Zitat von Razor90
so klappt alles, bloß ich finde keine wirkliche antwort darauf, was dir procedure TOP erledigen soll. und jetzt bleibt mal locker, ich hab seit 6 monaten n bissl delphi unterricht und wir machen nicht wirklich viel. also ein bischen verständnis bitte.

Ich hab in einem anderen Forum dir oder einem deiner Kollegen erklärt was ein Stack ist und wie der funktioniert, nur um dann zu merken, daß der Typ sich keine große Mühe mit der Beschreibung der Aufgabe gemacht hat und ich alles für die Tonne geschrieben habe.

Deine Aufgabe ist in drei Minuten programmiert, aber wenn du dir etwas Mühe gemacht hättest und den Link zum Crosposting geklickt hättest, dann hättest du mein Beispiel bemerkt. Wenn man die Funktion und Prozedur umbenennt und noch zwei weitere Funktionen für dein Int und Top progen würde, was in 30 Sekunden erledigt wäre, dann hättest du deine Antwort bereits vor sechs Stunden gehabt. Ich helfe gerne, aber ich laufe nicht hinterher.

Satty67 22. Jun 2009 17:53

Re: Einführung Stack Klasse 12
 
@Razor90

Geh diesen Thread nochmal vom 2. Post an durch. Da sind inzwischen 2 sehr gute Links genannt worden, die den Stack sehr gut beschreiben. Auch die typischen Funktionen eines Stack, wie z.B. Top.

Ja, der Ton wird im Thread wieder etwas aggressiver, aber das liegt daran, das bisher gebotene Hilfe "überlesen" wurde. Ich weis, dass Du gerne ein Code-Beispiel hättest. Aber das setzt voraus, das es jemand schreiben will. Aber auch eine Quelle für ein vollständiges Code-beispiel für TStack steht schon in diesem Thread.

€: Red-Box, aber was geschrieben werden muss... ;)

mkinzler 22. Jun 2009 17:56

Re: Einführung Stack Klasse 12
 
Zitat:

Ich helfe gerne, aber ich laufe nicht hinterher.
Aber man könnte sich darüber Streiten, ob man ihn wirklich hilft, wenn man ihm fertige Lösungen liefert.

Razor90 22. Jun 2009 18:04

Re: Einführung Stack Klasse 12
 
nur mal so am Rande...ich habe alles gelesen, aber von diesem 1 mal, merkt man sich doch nichts! das sind so viele informationen. wenn ihr euch das behalten könnt, dann freu ich mich für euch.

Mithrandir 22. Jun 2009 18:09

Re: Einführung Stack Klasse 12
 
Dann hast du dir sicher auch schon das Programm runtergeladen, was ich dir indirekt verlinkt habe, oder? Zumindest das könntest du dir schon ansehen. Da sind die Prozeduren drinne, die du brauchst. Das meinte ich mit genauer angucken.

Zitat:

ich habe alles gelesen, aber von diesem 1 mal, merkt man sich doch nichts!
Verdammisch, diese besch*** Internetseiten. Die ruft man einmal auf, und dann sind sie auch schon wieder weg... Könnte man sie doch bloß zum Nachlesen nutzen...

Zitat:

Aber man könnte sich darüber Streiten, ob man ihn wirklich hilft, wenn man ihm fertige Lösungen liefert.
Hilfe ist das sicher nicht für ihn. Aber das muss jeder mit sich selbst vereinbaren... (auf Seiten des Konsumenten, natürlich)

Satty67 22. Jun 2009 18:11

Re: Einführung Stack Klasse 12
 
Dann hast Du das mit den Referenz-Links aber falsch verstanden. Der Text da ist nicht zum auswendig lernen, das ist eine Beschreibung und eine spätere Referenz.

Im ersten geposteten Link steht z.B. die Aufgabe von Top einfach und klar beschrieben. Da schaut man dann nochmal ein 2. mal rein, dafür sind so Seiten doch da.

DeddyH 22. Jun 2009 18:12

Re: Einführung Stack Klasse 12
 
So, nochmal zum Mitschreiben: ein Stack ist ein Stapelspeicher. Stell Dir eine unten geschlossene Röhre vor, die im Innendurchmesser dem eines Eurostückes entspricht. Am Anfang ist diese Röhre leer (empty). Nun wirfst Du ein Eurostück hinein (push). Zuoberst (top) liegt nun dieses Eurostück. Nun wirfst Du noch eins hinein, dadurch ist dies natürlich dann das oberste (top). Wenn Du jetzt eins herunternimmst (pop), ist dies logischerweise das zuletzt eingeworfene und das oberste ist wieder das zuerst eingeworfene. Nimmst Du dieses nun auch noch herunter, ist der Stapel wieder leer. Ist doch ganz einfach, oder nicht?

Razor90 22. Jun 2009 18:19

Re: Einführung Stack Klasse 12
 
das habe ich verstanden, nur mit dem top war mir nicht klar was gemeint, also ist es das oberste element. hiermit konnte ich nichts anfangen: top: Stapel --> Element

Satty67 22. Jun 2009 18:20

Re: Einführung Stack Klasse 12
 
Ein Stack für "Arme" ist auch mein Quick&Dirty Stack für Integer, den nehme, wenn ich keine Prüfungen brauche, sondern schnellen Zugriff.

Evtl. hilft die einfache Programmierung ja, den Sinn der einzelnen Funktion zu verstehen:
Delphi-Quellcode:
type
  TStack = array[0..1000] of Integer; // Stack für 1001 Integer Werte
var
  Stack : TStack;
  StackPos : Integer = -1;

procedure StackPush(i : Integer);
begin
  inc(StackPos);
  Stack[StackPos] := i;
end;

function StackPop : Integer;
begin
  Result := Stack[StackPos];
  dec(StackPos);
end;

function StackTop : Integer;
begin
  Result := Stack[StackPos];
end;

function StackEmpty : Boolean;
begin
  Result := StackPos < 0;
end;

Popov 22. Jun 2009 18:28

Re: Einführung Stack Klasse 12
 
Er braucht nur 5 Werte, also sollte man nicht übertreiben mit dem Array. Lieber nur 5 Werte und alles darüber ins Nichts schicken, also daß der Stack immer voller wird und der sich dann wundert wieso in seinen Edit1 bis Edit5 der Stack nicht abgebaut wird.

//EDIT:

Ich hab mir gerade diese Seite angeguckt: http://lernen.bildung.hessen.de/info...sten/stack.htm

Das steht etwas von Klasse. Braucht Razor90 also jetzt eine Klasse oder reichen Funktionen und Prozeduren?

Satty67 22. Jun 2009 18:30

Re: Einführung Stack Klasse 12
 
Das war nur ein Copy&Paste aus einer Unit ;) Hab' nur eine um 1 falsche Bemerkung angepasst

Popov 22. Jun 2009 18:46

Re: Einführung Stack Klasse 12
 
Zitat:

Zitat von mkinzler
Zitat:

Ich helfe gerne, aber ich laufe nicht hinterher.
Aber man könnte sich darüber Streiten, ob man ihn wirklich hilft, wenn man ihm fertige Lösungen liefert.

Sagen wir mal so - ich hab mal eine Zeitlang beruflich programmiert. Es war nicht meine Haupttätigkeit, kam aber öfters mal vor. Im Grunde war es kein Problem, aber gelegentlich kam ich bei Projekten auch in Zeitnöte. Vor allem dann wenn ich mit unbekannten Klassen oder API arbeiten mußte. Das Problem bei mir war, daß ich als einziger in der Firma mit Delphi programmiert habe. Ich hätte jede Zeit auf VB umsteigen könne, aber das wollte ich nicht. Ich meinte, daß Delphi besser ist, also hatte auch keiner in der Firma Verständnis für meine Zeitprobleme. Bei Problemen konnte ich also keinen fragen, da es alles VB Leute waren. Also fragte ich in Foren. Aber für Zeitdruck hat man in Foren nun mal kein Verständnis. Jeder will da der Lehrer sein und einem etwas von dem Lerneffekt erzählen. Keinen interessiert ob man das Projekt in einer Stunde abgeben muß. Nein, die meisten wollen einem unbedingt dabei helfen es selbst herauszufinden. Nur was hilft mir das wenn mein Job auf dem Spiel steht, weil ich ein Projekt nicht zeitlich hinkriege. Zeitliche Probleme kamen bei mir zwar sehr selten vor, aber die zwei oder drei Mal wo es vorkam, hab schon die Leute in den Foren verflucht und mich gefragt ob ein wenig mehr Hilfe so schwierig ist. Es ist ja nett wenn man die Funktion der Appi gesagt bekommt, aber bis man sich das alles durchliest und manche Zusammenhänge versteht, kann es schon mal paar Stunden dauern. Und manchmal hat man nun mal nicht die Zeit.

Also bin ich in der Regel auch nicht so kleinlich und helfe gerne, bzw. helfe ich erst ein mal. Erst dann beobachte ich die Reaktion. Kommt nichts, fehlt jede Eigeninitiative oder wird in Zukunft nur ständig gefragt und man merkt, es ist ein Copy&Paste Typ, dann kann man sich immer noch überlegen den Aufwand zu reduzieren.

Mithrandir 22. Jun 2009 18:54

Re: Einführung Stack Klasse 12
 
Nur dass es in diesem Falle von vornherein klar ist, dass es sich um eine Schulaufgabe handelt. Und von unmöglichen Deadlines in der Schule... sagen wir mal so: Gibt's eher selten. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz