Automat

Fragen zum Thema HTML, JavaScript, PHP
sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Do Jan 14, 2016 5:16 pm

Hä?? Ich raff nach wie vor den Unterschied zwischen meinem und deinem nicht

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Do Jan 14, 2016 11:04 pm

Eine Funktion soll ein Feld erzeugen und zurückgeben. Fertig. Diese Funktion soll das Feld nicht evaluieren.

Eine Funktion soll ein Feld evaluieren und ein Ergebniswert zurückliefern. Diese Funktion soll kein Ergebnis anzeigen und auch keine Funktion aufrufen, die ein Ergebnis anzeigt. Diese Funktion soll nur ein Ergebnis zurückliefern.

Eine Funktion soll einen Ergebniswert ausdrucken. Diese Forum hat überhaupt keine Ahnung, was ein Feld ist.

Code: Alles auswählen

$field = createField();
$result = evaluate( $field );
printResult( $result );
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Do Jan 14, 2016 11:14 pm

Also ist der einzige Unterschied zu meinem das ich ne Funktion hab die das Ergebnis anzeigt und du nicht oder wie?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Do Jan 14, 2016 11:28 pm

Du hast eine schweigende Funktion, die ein Feld evaluiert.

Was bedeutet das?
Du kannst ein Feld erzeugen, dass in der oberen Reihe gleiche Zahlen hat und statt das Ergebnis auszugeben, kannst Du es testen.

Code: Alles auswählen

$feld = createField( "toprow" );  // da kommt immer das ganz bestimmte Feld raus.
$result = evaluate( $feld );
test( $result, "onerow" );   // richtig erkannt?

$feld = createField( "diagonaldown" );  // da kommt immer das ganz bestimmte Feld raus.
$result = evaluate( $feld );
test( $result, "diagonal" );   // richtig erkannt?

usw...
Damit kannst Du Deine Evaluate-Funktionen entwickeln und gegen die Aufgabe testen. Und dann kommt das eigentliche Problem: Zufallsfelder reinwerfen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Do Jan 14, 2016 11:53 pm

Und woher kennt der die Funktion "createField"?

Aber um ehrlich zu sein raff ich immer noch nicht was mir das ganze bringen soll außer mich zu verwirren :D

Also ein Feld ist 3*3 Bilder groß, da sind wir uns doch einig oder? Dieses Feld soll in einer eigenen Funktion erstellt und angezeigt werden, das was bei mir jetzt "Feld" und "Bilder" machen soll quasi in eine Funktion richtig?
Dann erstelle ich eine neue Funktion die herausfindet ob ich mit der Bilderkonstellation die das "Feld" mir anzeigt gewonnen habe jedoch zeigt die Funktion nichts an sonder ist nur dazu da um nachzusehen ob wir gewonnen haben oder nicht. Somit haben wir nun die Funktionen "Feld" und "evaluieren" also 2 Funktionen
Dann erstelle ich noch eine Funktion, also die dritte nun und diese Funktion zeigt mir dann an ob ich gewonnen habe

So meintest du das doch oder? Zumindest verstehe ich es so^^

Dann ist aber jetzt nach wie vor die Frage wo ist der Unterschied zu meinem jetzigen Code? Angesehen davon das ich zum bestimmen und anzeigen der Bilder in Feld 2 Funktionen benutze.
Schließlich habe ich auch die Funktion "evaluieren" die nur dazu da ist um festzustellen ob mit der Bilderkonstellation etwas gewonnen wurde oder nicht
Die Funktion "Ausgabe" zeigt dann an was Sache ist

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Fr Jan 15, 2016 9:16 am

sashpta hat geschrieben:Und woher kennt der die Funktion "createField"?
Du schreibst sie?
sashpta hat geschrieben:Aber um ehrlich zu sein raff ich immer noch nicht was mir das ganze bringen soll außer mich zu verwirren :D
Dein Problem ist die korrekte Evaluierung. Ich lotse Dich zu Test-Driven-Development. Du legst ein Feld fest, wo Du das Ergebnis kennst, lässt den Computer es bewerten und guckst nach, ob die Bewertung richtig ist.
Das geht aber nur, wenn Du die Funktionen voneinander trennst.
sashpta hat geschrieben:Also ein Feld ist 3*3 Bilder groß, da sind wir uns doch einig oder? Dieses Feld soll in einer eigenen Funktion erstellt und angezeigt werden, das was bei mir jetzt "Feld" und "Bilder" machen soll quasi in eine Funktion richtig?
Das Anzeigen des Feldes habe ich hier nicht berücksichtigt. Schreib eine Funktion, die das macht, so dass der Kern Deines Programms halt erstellen, anzeigen, bewerten und Ergebnis anzeigen ist.
sashpta hat geschrieben:Dann erstelle ich eine neue Funktion die herausfindet ob ich mit der Bilderkonstellation die das "Feld" mir anzeigt gewonnen habe jedoch zeigt die Funktion nichts an sonder ist nur dazu da um nachzusehen ob wir gewonnen haben oder nicht. Somit haben wir nun die Funktionen "Feld" und "evaluieren" also 2 Funktionen
Dann erstelle ich noch eine Funktion, also die dritte nun und diese Funktion zeigt mir dann an ob ich gewonnen habe

So meintest du das doch oder? Zumindest verstehe ich es so^^
Prinzipiell ja, bis auf dass die Funktion createField() da halt noch ist, die das erstellen des Feldes kapselt.
sashpta hat geschrieben:Dann ist aber jetzt nach wie vor die Frage wo ist der Unterschied zu meinem jetzigen Code? Angesehen davon das ich zum bestimmen und anzeigen der Bilder in Feld 2 Funktionen benutze.
Schließlich habe ich auch die Funktion "evaluieren" die nur dazu da ist um festzustellen ob mit der Bilderkonstellation etwas gewonnen wurde oder nicht
Die Funktion "Ausgabe" zeigt dann an was Sache ist
evaluate() darf keine Ausgabe machen, also auch nicht Ausgabe() rufen.
Es soll das Ergebnis zurückmelden.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Fr Jan 15, 2016 10:13 am

Xin hat geschrieben:Dein Problem ist die korrekte Evaluierung. Ich lotse Dich zu Test-Driven-Development. Du legst ein Feld fest, wo Du das Ergebnis kennst, lässt den Computer es bewerten und guckst nach, ob die Bewertung richtig ist.
Das geht aber nur, wenn Du die Funktionen voneinander trennst.
Oke also fällt das mit dem Zufallsprinzip komplett raus? Also nehme ich mein Feld was ich habe und lege direkt fest welche Bilder das sind somit habe ich dann die Funktion "Feld" die 9 Bilder anzeigt oder soll das Anzeigen gar nicht sein dass nur ich weiß welche Bilder das sind?
Dann erstelle ich eine neue Funktion, die die Bilderkonstellation bewertet und die Bewertung in einer Variable speichert. Dann hab ich eine Funktion/nen Code(??) der das Ergebnis anzeigt. Und dann sehe ich ob das alles klappt wies soll weil ich ja weiß was rauskommen soll
Ist das richtig so?

Xin hat geschrieben:
evaluate() darf keine Ausgabe machen, also auch nicht Ausgabe() rufen.
Es soll das Ergebnis zurückmelden
Was soll denn nun das Ergebnis anzeigen?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Fr Jan 15, 2016 10:46 am

sashpta hat geschrieben:
Xin hat geschrieben:Dein Problem ist die korrekte Evaluierung. Ich lotse Dich zu Test-Driven-Development. Du legst ein Feld fest, wo Du das Ergebnis kennst, lässt den Computer es bewerten und guckst nach, ob die Bewertung richtig ist.
Das geht aber nur, wenn Du die Funktionen voneinander trennst.
Oke also fällt das mit dem Zufallsprinzip komplett raus?
Zu Beginn ja. Du entwickelst Deine evaluate-Funktion mit bekannten und unveränderlichen Daten. Wenn sie funktioniert, dann erst lässt Du die Zufallsdaten darauf los.
sashpta hat geschrieben:Also nehme ich mein Feld was ich habe und lege direkt fest welche Bilder das sind somit habe ich dann die Funktion "Feld" die 9 Bilder anzeigt oder soll das Anzeigen gar nicht sein dass nur ich weiß welche Bilder das sind?
Richtig, Du legst das Feld fest. Ob die Anzeige machst, sei Dir überlassen. Zum Testen der Anzeigefunktion sicher nicht verkehrt.

Du wirst feststellen, dass Dich immer weniger interessiert, was da getestet wird. Am Anfang schreibt man vielleicht noch eine Zeile, ob der Test erfolgreich war oder nicht, die meisten Test-Programme schreiben pro erfolgreichen Test einen Punkt, damit man sieht, dass das Programm überhaupt läuft. Was man braucht ist am Ende ein "OK", bzw. eigentlich braucht man auch das nicht, man braucht die Info, wenn was fehlgeschlagen ist und was fehlgeschlagen ist.
sashpta hat geschrieben:Dann erstelle ich eine neue Funktion, die die Bilderkonstellation bewertet und die Bewertung in einer Variable speichert. Dann hab ich eine Funktion/nen Code(??) der das Ergebnis anzeigt. Und dann sehe ich ob das alles klappt wies soll weil ich ja weiß was rauskommen soll
Ist das richtig so?
Yepp, klingt gut.
sashpta hat geschrieben:
Xin hat geschrieben:
evaluate() darf keine Ausgabe machen, also auch nicht Ausgabe() rufen.
Es soll das Ergebnis zurückmelden
Was soll denn nun das Ergebnis anzeigen?
Wie oben beschrieben.

Code: Alles auswählen

$field = createField();
$result = evaluate( $field );
printResult( $result );              // <- Ergebnis anzeigen.
Wenn Du die Anzeige noch machen möchtest:

Code: Alles auswählen

$field = createField();
printField( $field );                   // Feld ausgeben
$result = evaluate( $field );
printResult( $result );              // <- Ergebnis anzeigen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Automat

Beitrag von sashpta » Fr Jan 15, 2016 2:47 pm

Aber die Ausgabe des Ergebnisses ist nicht in ner Funktion die ist einfach so ein Code oder?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Automat

Beitrag von Xin » Fr Jan 15, 2016 3:19 pm

sashpta hat geschrieben:Aber die Ausgabe des Ergebnisses ist nicht in ner Funktion die ist einfach so ein Code oder?
Den Satz verstehe ich nicht.
Mehr Punktion, mehr Definition. "So ein Code" ist nichts, was ich abnicken oder ablehnen kann.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten