| |||||||
| Registrieren | Benutzerliste | Interessengemeinschaften | Usermap | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| ||||
| Inhalt Toni
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Horst (02.06.11 um 18:32 Uhr) Grund: Wiki-Link entfernt |
| ||||
| Vorweg: Um was gehts? Diese Tutorial richtet sich an alle, die noch nie mit irgendeiner Programmiersprache gearbeitet haben und soll etwas die Angst vorm scripten in IPS (IP-Symcon) nehmen. Hier werden vor allem erste Schritte und die Grundlagen der Informatik erklährt. Untertitel des Tutorials könnte also lauten: Lerne zu denken wie ein Computer. PHP lernen wir hier eher spielend nebenbei. Es ist sinnvoll diesen Text nicht einfach blind zu lesen, sondern IPS zumindest schon einmal live gesehen und ein wenig darin herumgeklickt zu haben... Was brauche ich zum scripten mit IPS? Garnichtmal so viel. Ein Buch? Für den Einstig in IPS reicht die Doku und das Forum. Ein Einsteiger PHP-Buch schadet nicht, hilft vermutlich aber auch nicht so viel wie man meint - später aber sinnvoll. Es gibt viele tolle Programme, die Web-Entwickler benutzen um PHP zu programmieren. Brauchen wir nicht. IPS hat einen Scripteditor, der völlig ausreichend ist und obendrein IPS-Interne Funktionen unterstützt und einen Execute-Button, der unsere Scripte gleich testet. ausserdem bekommt man in einer Box mitgeteielt in welcher Zeile sich noch Fehler verstecken. Viel mehr können diese Tools auch nicht und irgendwelche integrierten Internet-Tools brauchen wir nicht. Was will man also mehr? Wir haben quasi ein Rundum-Sorglos-Paket schon an der Hand. Mehr nicht? Aber dann ist das doch bestimmt alles schwierig, oder? Mooooment...Zunächst müssen wir uns darüber klar werden, dass PHP eine wirklich mächtige und umfangreiche Sprache ist. Wir benötigen für IPS aber keine 5% davon um zum Beispiel das Licht, die Heizung, einige Unterhaltungselektronik und sogar die Gartenbewässerung zu bedienen. Und das alles in Abhängigkeit vom Wetter, von den Tageslichtverhältnissen, der Innen- und Außentemperatur, Bewegung oder persönlichen Einstellungen wie Tagschaltung, Nachtschaltung, Spätschicht, Wochenende, Urlaub, Anwesend, Abwesend, Kind kommt von der Schule und vieles mehr. Eine ganze Menge also fast ohne PHP... Aber eben nur fast. Ohne PHP? Wie denn dann? Da müssen wir etwas ausholen. Alles was man mit IPS steuern kann, wird über zusätzliche, integrierte IPS-Funktionen bedient, die mit PHP rein garnichts zu tun haben. Diese Funktionen sind, wenn man so will, wie Hebel einer großen, auf den ersten Blick komplizierten, Dampfmaschiene. Wenn wir die IPS-Installation abgeschlossen haben und das Menü sich zu ersten mal öffnet fühlen wir uns ein bisschen so wie ein Durchschnittsmensch um 1900, der zum ersten mal so ein furchteinflößendes, zischendes Dampf-Monster sieht. Wir haben Respekt und sind vielleicht sogar ein wenig erschrocken. Wer sich die Maschiene nun genauer anschaut wird schnell feststellen, dass jeder Hebel eine bestimmte Aufgabe hat. Einige Hebel sind schon bis aufs letzte verschlissen weil er offenbar ständig bedient wurde, andere wiederum sehen fabrikneu aus. .
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (27.10.06 um 15:37 Uhr) |
| ||||
| Aber was zum Geier ist eigentlich eine Funktion? Eine Funktion ist eine Sammlung von einzelnen Befehlen die zusammengafasst eine definierte Aufgabe erledigen. So könnte, um auf unsere Dampfmaschiene zurückzukommen, der Vorgang Klappenverriegelung lösen, Klappe öffnen, Wasserkran heraziehen, Wasserventil öffen, warten bis voll, wasserkran zurückschieben, Klappe schließen, Klappe verriegeln als eine Funktion mit dem Namen "Wasserfassen" zusammengefasst werden. Und wenn man seinem Heizer sagen kann:"Los geh Wasserfassen" - dann interessieren uns die einzelnen Handgriffe eigendlich garnicht mehr und wir können uns wichtigeren Dingen zuwenden. Das macht uns die Sache doch einfacher, oder nicht? Ein Beispiel zum Anfassen: PHP-Code: Zitat:
Da wäre ich ja nie drauf gekommen - woher weiss ich wie ich das schreiben muss? Wir müssen die Syntax eingalten. Die Syntax ist die Grammatik der Programmiersprache. Wenn jemand deutsch spricht ohne sich auch nur grob an die Grammatik zu halten braucht man eine gewisse Phantasie um zu verstehen was der von uns will. Nun, der Computer hat hat ungefähr so viel Phantasie wie ein Blumentopf... Die Funktionen erkennen die übergebenen Informationen anhand ihrer Reihenfolge. Das bedeutet es ist nicht egal in welcher Reihenfolge wir ihnen die Informationen geben. Als erstes das "woher" danach das "wohin". Wie genau, das muss man vorher in Erfahrung bringen. Das Semikolon hinter der Anweisung sagt PHP, dass ihr nun fertig seid mit der formulierung der Anweisung. Da man zu besseren Übersicht - für uns, nicht für den Computer - immer nur eine Anweisung pro Zeile schreibt, kommt also an das Ende jeder Zeile ein Semikolon. Wie im Telegramm - Stop - .
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (22.11.06 um 11:30 Uhr) |
| ||||
| Damit sind wir auch schon beim nächsten Thema - den Variablen. Eine Variable ist eine Art "Merker". Sie merkt sich Werte aller Typen und Längen. PHP übernimmt für uns das Management. Das bedeutet es wird Platz im Arbeitsspeicher angefordert und sich eine Adresse (wie eine Post-Adresse) gemerkt, damit man diese einmal gemerkten Werte auch irgendwann mal wiederfindet. Von alle dem bekommen wir aber nichts mit. Wir müssen uns nicht darum kümmern - Wie müssen sie nicht einmal anmelden (deklarieren) wie es bei anderen Programmiersprachen üblich ist. Das einzige was wir tun müssen ist der Variablen einen Namen zu geben. Wir haben sie $Liter genannt. Das Dollarzeichen macht PHP darauf aufmerksam, dass es sich bei "Liter" nicht um eine Funktion oder soetwas handelt sondern eben um eine Variable. Alle Variablen müssen durch ein $ gekennzeichnet sein! Vorsicht Falle! In IPS gibt es zwei Arten von variablen. Die eben beschriebenen Variablen sind so wie wir sie eben kennengelernt haben nur innerhalb unseres Scriptes bekannt. IPS hat aber noch eigene Variablen, die im Menüpunkt "Variables" verwaltet werden können. Diese Beiden Variablen-Arten haben nichts miteinander zu tun. Wenn man auf eine IPS-Variable zugreifen will geht das nur mit einem Dolmetscher. Genaugenommen gibts da mehrere Hochspezialisierte Dolmetscher, die wie unser Heizer von vorhin arbeiten, denn es sind auch Funktionen. Auch diese Dolmetscher-Funktionen sind IPS-Funktionen und somit eigentlich noch garkein PHP. PHP-Code: Noch Fragen? Und nun ratet mal was "getValueString" oder "setValueBoolean" machen... Und immer noch kein PHP benutzt... .
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (22.11.06 um 11:36 Uhr) |
| ||||
| Waas? Wann gehts denn endlich mit PHP los? Okay, aber erstmal ganz langsam, ja? Manchmal ist es sinnvoll erstmal zu wissen was in einer Variablen drin steht bevor man damit weiterarbeitet. Dafür kann man sich in IPS den Inhalt von Variablen in einem Output Window ausgeben lassen. Das ist besonders interessant wenn man einmal einen Fehler sucht. Denn dann sieht man warum sich ein script vielleicht einmal deneben benimmt. PHP-Code: Zitat:
Nanu... was ist denn das mit dem Doppel-Schrägstrich (doppel slash - Sprich: släsch) da? Das ist ganz einfach. Manchmal, wenn zu Beispiel jemand Anderes auch verstehen soll was an einer Stelle passiert, ist es sinnvoll ein Script zu kommentieren. Alles was nach diesen Slashen kommt wird von PHP ignoriert. Ist, unter uns, auch ganz sinnvoll wenn man selbst nach einem Jahr mal wieder in das Script schaut. Denn dann hat man unter Umständen längst vergessen was das Script eigendlich macht, warum und vor allem wie. Wichtig beim Kommentieren ist vor allem, dass wir nicht nochmal in deutsch schreiben was dort passiert, denn das steht ja schon in PHP dort, sondern vielmehr warum das passiert. Ein Kommentar soll ein Script erklären nicht übersetzen. .
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (22.11.06 um 11:42 Uhr) |
| ||||
| Na Toll, das war ja aufregend... War das etwa schon alles? Ohhh Nein, noch lange nicht! Eine Programmiersprache ist wie ein Werkzeugkoffer. Ein guter Handwerker hat für jede Aufgabe das richtige Werkzeug dabei. Aber eben auch einige ganz einfache Werkzeuge, ohne die es einfach nicht geht. Ein Hammer zum Beispiel ist alles andere als ein hochspezialisiertes Werkzeug. Es ist ein Allrounder, den man immer wieder mal für was brauchen kann. So einen Allrounder wollen wir uns nun einmal vornehmen. Dazu erstmal ein kleines Script, dass quasi schon Level Zwei in unserm kleinen Spiel ist. PHP-Code: Zitat:
If, zu deutsch: Wenn. Das sagt doch schon alles, oder? Wenn also die Bedingung innerhalb der Klammern Wahr (true) ist, dann wird der Code zwischen den beiden geschweiften Klammern ausgeführt. Andernfalls eben nicht. Das ist auch schon alles was es dazu zu wissen gibt. Das ganze Geheimnis sozusagen. Allerdings gibts zu den Klammern noch etwas zu sagen. Das ist eigentlich eher Geschmackssache als eine echte Regel.Exkurs: Zitat:
Zurück zum Thema: Was haben wir da oben mit dem "==" gemacht? Tippfehler? Nö... Damit PHP weiss dass wir nicht die Variable in den runden Klammern auf true setzen wollen sondern etwas miteinander zu vergleichen versuchen muss sich das "=" von dem "==" unterscheiden. Eine Sache, die man oft liest und, wenn man es nicht weiss, nicht versteht, will ich noch schnell dazu loswerden. Ihr sollt ja mit dem Gefühl nach Hause gehen heute etwas gelernt zu haben. .
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (12.01.07 um 15:32 Uhr) |
| ||||
| Was wenn die Bedingung nicht erfüllt wird Machmal ist es sinnvoll darauf zu reagieren wenn eine Bedingung nicht erfüllt wurde. PHP-Code: Zitat:
Klar, oder? Boolsche Algebra Keine Angst... So weit wollen wir nicht in die Materie einsteigen. Aber dass es soetwas gibt und wie man es auf unterstem Level benutzt wollen wir noch schnell behandeln. Es kommt häufig vor, dass man mehrer Faktoren hat, auf die man reagieren muss. Um diese möglichst übersichtlich (Übersicht ist Alles! Wirklich!) miteinander zu verknüpfen gibt es einige sogenannte "Operatoren", die wir auch aus dem täglichen Leben kennen. PHP-Code: Zitat:
Wichtig hierbei ist, dass die Bedingungen innerhalb der inneren klammern erfüllt werden und die Ergebnisse dieser Klammern zusammen wieder eine Bedingung, nämlich die in den Äußeren Klammern, ergeben, die ebenfalls erfüllt sein muss. Also wenn es regnet UND das Fenster offen ist, wird das Fenster geschlossen Weder wenn es regnet und das Fenster schon geschlossen ist, noch wenn das Fenster zwar offen ist, es jedoch nicht regnet, wird das Fenster geschlossen. Logisch, oder? .
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (22.11.06 um 11:51 Uhr) |
| ||||
| Noch so ein Werkzeug: Die For-Schleife Eine Schleife, in diesem Fall eine For-Schleife, macht nichts weiter als ein und den selben Code mehrmals auszuführen. Dafür muss das Script wissen wo wir anfangen wollen, wieweit wir zählen wollen und in welchen Schritten wir zählen. Allereinfachstes Beispiel: Wir wollen einen Befehl genau 5 mal aufrufen. wir zählen also von 0 bis 5 (ohne die 5 selbst) in Einerschritten. Damit wir in der Schleife wissen wo wir gerade sind merken wir uns den Wert in einer variablen - exemplarisch "i". der Befehl, der ausgefürt werden soll wird in geschweifte Klammern geschrieben. Es können nämlich auch mehrer Befehle in diesem Befehlsblock stehen und das Script muss ja wissen wo es anfangen soll und wieweit es gehen soll. PHP-Code: Zitat:
Aufpassen: 5 ist nicht kleiner als 5! Also zählt er nur von 0 bis 4 was in etwa genau so weit ist wie wenn er von 1 bis 5 zählen würde. Das könnte man eine Eigenart der Informatik nennen, weil dort fängt man immer mit der Null an. .
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (06.12.06 um 09:04 Uhr) |
| ||||
|
Das ist nur ein Auszug aus dem ganzen Thema. Ich hab das "mal eben" zusammengetippt, grad wie es mir in den Sinn kam. Immer wenn mir was sinnvolles einfällt werde ich das hier ergänzen bzw korrigierern. Hinweise, Vorschläge oder Anregungen aber auch Danksagungen nehme ich gern per PM entgegen.Da ich aber hier nicht ALLES abhandeln kann gibt es jetzt noch die: Links und weiterführende Literatur.
Toni
__________________ www.Tonis-Welt.com 01001000 01100101 01101100 01101100 01101111 Mit Logik kommen wir hier nicht weiter...01110111 01101111 01110010 01101100 01100100 _________________________________ Geändert von Tonic1024 (Morgen um 14:76 Uhr) Geändert von Tonic1024 (08.12.06 um 09:36 Uhr) |
| |||
|
WIKI Link oben geht leider nicht mehr !!!
__________________ Gruss und Danke Heiko IP-Symcon IPshomecontrol MCE-Community 3x FHT80;1x FHZ1300; 1xFS20SM4; 4x FS20 PHP-Programmierung seit 16.03.2008 |
![]() |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Toni's ParaGraph | Tonic1024 | Projekt Showcase | 39 | 05.04.07 20:08 |