Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Austausch | 
 

 1: Bool und if

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: 1: Bool und if   Do Feb 05, 2009 7:42 pm

Hier erkläre ich mal wie if im prinzip funktioniert. Das ist absolutes Grundwissen, jedoch sollte man vorher mindestens mal gelesen haben was eine funktion ist.

Dazu muss man erstmal Bool verstehen. Diese mathematik besagt das es nur war und falsch gibt.
Hier: true und false
true ist hierbei alles was nicht 0 ist. (zb. 1 oder 3)
false ist hierbei alles was 0 ist. (zb. 0)

Die meisten Funktionen() geben werte dieser Art zurück zb diese hier:
Zitat :
func Ja(){return(true);}

Bei der if abfrage (Eigentlich bei allem, auch bei while) wird einzig und allein true oder false akzeptiert.
Es steht aber etwas komplett anderes da nämlich Ja() Shocked
Zitat :
if (Ja()) Tuwas();
Der Compiler fragt sich jetzt solange durch die funktion Ja() bis er ein ergebniss hat das true oder false lautet. Das Ergebniss kann man in der Funktion mit return angeben.
Zitat :
return Ergebniss;
Wir erinnern uns das wir das bereits kennen:
Zitat :
func Ja(){return(Ergebniss);}
Der findige Compiler nimmt jetzt das Ja() raus und tauscht es durch das Ergebniss aus, welches er in dem fall bei "return" findet:
Zitat :
if (Ja()true) Tuwas();
Man bezeichnet das ganze so das "Ja() true zurück gegeben hat", wonach true der "Rückgabe wert" ist.

Es kann selbst verständlicherweise auch etwas anderes passieren:
Zitat :
func Ja(){ return(false);}
oder:
Zitat :
func Ja(){}
Dann sieht das ganze so aus:
Zitat :
if (Ja()false) Tuwas(); //<-Wird nicht ausgeführt da Ja()=false ist

Man kann innerhalb von den if() klammern eigentlich alles machen. Was sehr gerne gemacht wird sind rechenaufgaben und vergleiche.
Zitat :
if (10 > 11) Log("Seltsame Logik :O");
Das funktioniert auf dem selben prinzip, der Compiler ersetzt die Rechnung durch das Ergebniss, welches true oder false sein kann.
Wie in diesem beispiel müsst ihr ungefähr denken:
Zitat :
Aufgabe: ist 10 größer als 11?
Lösung: Nein
Schlußfolgerung: Nein heißt falsch, also deutsch für "false"
10>11 = false
Zitat :

Aufgabe: 10+10
Lösung: 10+10 = 20
Schlußfolgerung: 20 ist nicht 0
demnach ist 20 = true

Hier ein paar beispiele die zeigen was alles möglich ist:
Zitat :
if (20-20) Machdas() //20-20 = 0 -> false
if (10>11) Machdas() //10 ist kleiner -> false
if (1) Machdas() //1 ist nicht 0 -> true
if (GetAlive(Clonk)) //wenn clonk lebt -> true, sonst false


Jetzt kommen wir dazu wie man if() noch verwenden kann:
Zitat :
if (true) TuDas(); else TuDies();
else bedeutet hier "andernfalls".
Man kann sich das ganze immer wie ein satz vorstellen:
Zitat :
if (Hunger()) Essen(); else satt(); = wenn ich Hungere, esse ich. Andernfalls bin ich satt

else führt also den nachstehenden befehl aus, wenn der erste nicht ausgeführt wird (also bei if(false))
Zitat :
if (true) WirdAusgeführt(); else NichtAusgeführt();
if (false) NichtAusgeführt(); else WirdAusgeführt();
else ist demnach eine verkürzte schreibweise von solchen dingen:
Zitat :
if (Hunger()) Essen();
if (!Hunger()) Satt(); //Das "!" kehrt den wert um. Also aus true wird false und aus false wird true (Wenn Kein Hunger dann Satt)

Wenn man den Wunsch hat mehrere Dinge auszuführen, allerdings dafür keine funktion zu schreiben will kann man dies auch in geschweiften klammern tun:

Zitat :
if (Hunger())
{
Essenmachen();
TischDecken();
GabelnHolen();
Essen();
Abräumen();
}
Diese kann man überall und immer einsetzen, sogar sinnlos, in whileschleifen oder nach einem else. Wichtig ist nur das jede geöfnette klammer wieder geschlossen wird!

Zitat :
if (Hunger())
{
TuDiesunddas();
{{{{ //<-Sinnlos, aber nicht störend
}}}}
}
else
{
Sattsein();
Schlafen();
}


Das war ein, hoffentlich DAU sicheres, tutorial über if und bool. Wer noch interessiert ist mehr verwendungs möglichkeiten kennen zu lernen kann sich einfach mal die
Operatoren ansehen. Damit kann man schöne dinge machen =)

Zitat :
if (true && true) TuDas(); //wenn Wahr und Wahr dann TuDas()


Zuletzt von Liech am Sa Feb 07, 2009 1:54 am bearbeitet; insgesamt 1-mal bearbeitet (Grund : Titel anpassung)
Nach oben Nach unten
Benutzerprofil anzeigen
Kai
Kapitän
Kapitän


Männlich Alter : 21
Anmeldedatum : 29.12.08

BeitragThema: Re: 1: Bool und if   Do Feb 05, 2009 8:21 pm

Deine Geduld: ***** (hast alles sehr gut erklärt und es so gemacht das man unmöglich was übersehen kann =) )
Beispiele : ***** (hunger, essen, tischdecken xD)
Komplexität: ***** (für anfänger jut, und du hast einen weiteren Link gegeben Very Happy )
Verständnis: *** (nur 3 Sterne, weil ich nicht ganz verstanden habe wo man if sätze anwendet, also in einer funktion, oder außerhalb, und auch habe ich das mit true und false nicht verstanden, und du hast teilweise begriffe genannt, die auf einen höheren niveau stehen als ein if satz zu bilden)

gesamt punkte:
********************

PS: hehe, mein bewertungs schema ist konkurenz zu mega hazards aufn CNDG Twisted Evil

MfG Kai
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: 1: Bool und if   Do Feb 05, 2009 8:34 pm

Das was du nicht verstanden hast lässt sich im nachhinein ja noch erklären.
Ich gehe bei dem Tutorial davon aus das man sich ein Tutorial über Funktionen schon angesehen hat bzw es danach tut. Diese auch noch zu erklären wäre wahrscheinlich auf einer Seite zu viel gewesen.

zu den Begriffen mit höherem niveau:
Du sprichst wahrscheinlich den compiler an, welcher in jeder Einführung erwähnt wird, welche man schon gelsen haben sollte.
(Ein Compiler übersetzt grob gesagt die befehle wie zb. if in PC sprache)

Wo Wendet man if sötze an?:
If wendet man dann an, wenn man es will.
Da alles innerhalb einer funktion abläuft (bis auf konstanten/lokale variablen deklaration), verwendet man sie in einer funktion.

Was hast du an true und false nicht verstanden? Etwas simpleres als Ja/Nein gibt es wohl kaum Wink
Nach oben Nach unten
Benutzerprofil anzeigen
Soterotu
Generalleutnant
Generalleutnant
avatar

Männlich Alter : 25
Ort : Einsames Dorf in Oberfranken
Anmeldedatum : 27.01.09

BeitragThema: Re: 1: Bool und if   Do Feb 05, 2009 8:35 pm

das ist super zu verstehen auch mit lustigen beispielen das hat mich auf die idee gebracht wie ich vielleicht mein if Problem lösen

und hunger hab ich jetzt auch

ich habs mit dem if doch net geschafft mein problem zu lösen das werde ich dann fürs erste auf Eis legen
Nach oben Nach unten
Benutzerprofil anzeigen
Dragonclonk
Kadett
Kadett
avatar

Männlich Alter : 24
Ort : Lübeck
Anmeldedatum : 11.12.08

BeitragThema: Re: 1: Bool und if   Fr Feb 06, 2009 4:08 pm

Tolle Arbeit, Liech!
Nach oben Nach unten
Benutzerprofil anzeigen
Simsi
Staatssekretär
Staatssekretär
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 30.03.08

BeitragThema: Re: 1: Bool und if   Fr Feb 06, 2009 6:36 pm

DAS ist ein gutes tut, bloß hats mich erst verwundert, dass if() nur true und false akzeptiert, aber wenn man dann sagt dass jede zahl auch true oder false ist, gehts^^

_________________
Copy this into your signature to have it in your signature.
Nach oben Nach unten
Benutzerprofil anzeigen
Enrique
Generalleutnant
Generalleutnant
avatar

Männlich Ort : Oelde, NRW
Anmeldedatum : 20.05.08

BeitragThema: Re: 1: Bool und if   Fr Feb 06, 2009 11:17 pm

Jetzt fehlt nurnoch dass man mit einem "!" aus true false machen kann.
Nach oben Nach unten
Benutzerprofil anzeigen
Simsi
Staatssekretär
Staatssekretär
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 30.03.08

BeitragThema: Re: 1: Bool und if   Fr Feb 06, 2009 11:21 pm

ist erwähnt, aber nur ziemlich knapp

_________________
Copy this into your signature to have it in your signature.
Nach oben Nach unten
Benutzerprofil anzeigen
Enrique
Generalleutnant
Generalleutnant
avatar

Männlich Ort : Oelde, NRW
Anmeldedatum : 20.05.08

BeitragThema: Re: 1: Bool und if   Fr Feb 06, 2009 11:22 pm

Ups überlesen :S
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: 1: Bool und if   Sa Feb 07, 2009 12:43 am

Operatoren sind übrigens eine komplett andere Geschichte, welche man getrennt behandeln sollte. Ich habe ein paar eingeführt ohne sie wirklich näher zu erklären, weil es kaum möglich ist alles getrennt zu lernen.
Nach oben Nach unten
Benutzerprofil anzeigen
Umezawa
Feldmarschall
Feldmarschall


Männlich Alter : 23
Anmeldedatum : 30.12.08

BeitragThema: Re: 1: Bool und if   Sa Feb 07, 2009 1:12 am

Kann man if eigentlich auch vor ein #appendto hängen?
Nach oben Nach unten
Benutzerprofil anzeigen
Kai
Kapitän
Kapitän


Männlich Alter : 21
Anmeldedatum : 29.12.08

BeitragThema: Re: 1: Bool und if   Sa Feb 07, 2009 10:54 am

appentdo ist doch gar kein befehl, oder?
naja, ich weiß es nicht Neutral
Nach oben Nach unten
Benutzerprofil anzeigen
Simsi
Staatssekretär
Staatssekretär
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 30.03.08

BeitragThema: Re: 1: Bool und if   Sa Feb 07, 2009 3:14 pm

Umezawa schrieb:
Kann man if eigentlich auch vor ein #appendto hängen?

soweit ich weiß nicht. aber wozu auch? sag mal ein konkretes beispiel

_________________
Copy this into your signature to have it in your signature.
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: 1: Bool und if   Sa Feb 07, 2009 3:28 pm

Es geht definitiv nicht, allerdings kannst mit solchen konstruktionen soetwas in der art erreichen:

Zitat :
func Funktion()
{
if (Bedingung) return(_inherited(...));
AppendtoBefehl();
}
Nach oben Nach unten
Benutzerprofil anzeigen
Gast
Gast



BeitragThema: Re: 1: Bool und if   Do Okt 15, 2009 2:22 pm

Also ich fand es sehr verständlich, leider muss ich mich auch noch durch die anderen ganzen Toturials lesen... *stöhn*
Nach oben Nach unten
Gesponserte Inhalte




BeitragThema: Re: 1: Bool und if   

Nach oben Nach unten
 
1: Bool und if
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Anfänger :: Tutorials-
Gehe zu: