Ich weiß nicht, ob das so recht hier her passt (für mich denke ich
schon), aber es ist ein "Programmierprojekt"
Entstanden (aufgrund der "aktuellen Situation") im "Homework"
Auszubildender, die grundsätzlich programmieren lernen sollen / müssen.
Um grundsätzliches vermitteln zu können wurde JavaScript gewählt.
Hieraus entstanden ist eine Art "Logikparser" für einen frei eingebbaren
boolschen Term.
Da der Quelltext auf der Seite komplett mit der rechten Mousetaste
einsehbar ist, hier nur der Link und ein Screenshot dazu.
http://www.jjflash.de/logic2/logic.htm
Evtl. kann das jemand gebrauchen oder hilft jemandem zum
"experimentieren" mit logischen digitalen Verknüpfungen.
Viel Spaß und ... bleibt gesund.
Irgendwer schrieb:> Eijeijeijei...>> Gibt mal im Feld "Anz. Inputs" folgendes ein:> alert("Ich muss noch viel lernen!");>> und drück auf den button "refresh".>> Und danach lies das hier:>> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Never_use_eval!
Wäre ich jetzt nicht zu müde, würde ich nicht nur den Kopf schütteln,
sondern extra für die Leute wie dich das Eingabefeld als String einlesen
und eine Prüfung auf Gültigkeit vornehmen.
Hier ging es darum, grundsätzlich etwas auf zu setzen, in dem die
Azubi's etwas ausgeben können.
Wenn man so etwas komfortabel macht, erklärst (und schon gar nicht über
Videokonferenz und Audio) schon mal überhaupt nichts.
Naaaaaaaaatürlich macht man sich auch nicht den Umstand, einen
Textbuffer aufzusetzen und alle Ausgaben (wenn man das möchte) in ein
Stringarray auszugeben nur damit in der Textarea eine einfache
Positionierung des Cursors erfolgen kann (okay, eine Positionierung im
Buffer).
Uuuuuund ... das war etwas Funktionales zum Erklären boolscher Algebra
über geteilte Bildschirme ....
Aber dennoch:
bleibt gesund !
Ralph S. schrieb:> Wäre ich jetzt nicht zu müde, würde ich nicht nur den Kopf schütteln,
Wegen so wenig Kritik schon gekränkt?
> sondern extra für die Leute wie dich das Eingabefeld als String einlesen> und eine Prüfung auf Gültigkeit vornehmen.
Warum so umständlich?
> Hier ging es darum, grundsätzlich etwas auf zu setzen, in dem die> Azubi's etwas ausgeben können.
Azubis sollte man ein Vorbild sein.
Auszüge aus Deinem Code:
------------------------------------------------------------
Diesen Sermon kann man z.B eindampfen zu:
------------------------------------------------------------
Meine meine Güte,
hier geht es darum, jemanden, der noch nie etwas mit Computern zu tun
hatte, ohne Vorbereitungszeit, Programmierung nahe zu bringen.
Du siehst weder den Auszubildenden, die Kommunikation ist schwierig,
geht nur per Skype von statten und sie sind z.T. auch in der deutschen
Sprache nicht sicher.
Ohne Vorbereitungszeit soll man einen Computerkurs abhalten. Du kennst
die Rechnersysteme nicht, du konntest die Rechner auch nicht
vorbereiten. Du brauchst etwas, das allen zu Verfügung steht und aus
diesem Grunde fiel die Wahl auf JavaScript.
Hier geht es darum absolut grundsätzliches zu vermitteln. Die zu
Unterweisenden kennen wirklich absolut nichts.
Also mußt du erst einmal erklären, was Variable sind... und du mußt
erklären was eine bedingte Ausführung ist.
Du kannst denen nicht mit Objekten kommen und auch die HTML-Tags waren
nicht so einfach zu vermitteln (weil das "Spiel" mit den Tabellen, deren
Rahmen du nicht sehen kannst, verwirrend sind).
Also braucht es etwas, in das du etwas hinein programmieren kannst. Und
es braucht für den Anfang etwas, um das zu erklären.
Im Normalfall würde man die Objekte schon gar nicht "kapseln", sondern
ein neues davon ableiten (um nicht immer die genaue Methode oder
Variable mit dem Overheat, der Klasse bla bla bla schreiben zu müssen).
Wenn du also erklärst, was If - Else ist... ist ein Beispiel gefragt.
Nächste Woche wird Switch-Case gemacht.
JavaScript hätte ich normalerweise für die Aufgabenstellung nicht
gewählt. Das unsägliche eigentständige Casten der Typen bringt Fehler.
Der Debugger aus Firefox ist umständlich zu bedienen... es liese sich
vieles aufzählen.
Aber darum geht es nicht.
Die sind erst so weit, halbwegs IF, FOR und WHILE zu verwenden und dafür
braucht es Beispiele (ob die in der Programmierpraxis so angewendet
würden ist eine andere Fragestellung).
Es geht darum, was Logik ist (und das war ein Unterrichtsthema)...
Daraus entstanden ist diese boolsche Algebra.
Wenn du hier sowas tust:
Versteht kein Mensch dass hier:
return window.document.smallcon["infeld" + nr];
dem Interpreter ein Cast bei nr selbst überlassen wird und nur dadurch,
dass "infeld" ein String ist, wird nr hier zum String, auch wenn du der
Funktion ein Integer übergeben hast.
Ich habe hier grundsätzlich das Problem zu erklären was Typen sind,
sogar ein Problem damit, dass für den Computer alles Zahlen sind und ein
Char "0" mit Ascii-Code 48 eben als solcher behandelt wird.
Ich habe die Seite eingestellt gehabt der Seite wegen... und nicht des
Codes. Um aufzuzeigen wie boolsche Algebra funktioniert.
Als nächste Unterrichtseinheit habe ich Zahlensysteme auf dem Plan und
weiß jetzt schon, dass das schwierig ist. Manche können noch nicht
einmal verstehen, dass im Hexadezimalen "F", kein Buchstabe, sondern
eine Ziffer ist.
Und dann habe ich unterschiedlichen Lernfortschritt, einer versteht
bspw. das hier:
Andere noch nicht einmal die Syntax wie man das verwendet (und aus
diesem Grunde gibt es im Code auch ein "writeln")
Diese Seite ist eine Zusammenarbeit von 9 Auszubildenden die
unterschiedliche Fortschritte machen.
Sie wurde erstellt um boolsche Logik "sichtbar" zu machen und zu zeigen
was eine Wahrheitstabelle ist.
Andere könnten sie evtl. auch gebrauchen um zu sehen was mit
Logikgattern passiert.
Sie ist nicht dazu da, den Code auseinander zu nehmen (das könnte man in
der Tat eleganter machen, aber - und das ist das üble in der Zeit -
niemand macht sich Gedanken darüber, wie bestimmte Grundzüge sind).
Wie man etwas eleganter machen kann ... oder besser machen kann. Kommt
viel viel später.
Du hast schon ein Problem damit, dass Funktionen nicht aus einem
Programmfluss heraus gestartet werden, sondern dass das eventgesteuert
ist.
Aber es wird immer wieder welche geben, die sich freuen, wenn sie etwas
"besser" können sie wie ein Aasgeier darauf zu stürzen und zu sagen, das
kann man (also du selbst) bessr machen.
Wieviele absolute Anfänger hast du denn schon unterrichtet?
Bist du überhaupt noch in der Lage dich auf Anfängerniveau herab zu
begeben.
Nächste Woche werden Zahlensysteme (um Farben für RGB zu mischen) dran
genommen.
Ich weiß jetzt schon, dass etws in der Art:
r = 0xff;
r = r << 16;
extrem schwierig werden wird (vor allem hab ich hier von einem
interessierten, der vorab gelesen hat, eine Frage in der Art, warum
manchmal #ffffff davor geschrieben wird und im Programmcode dan 0x ...
und warum 0x kein Text ist).
Und dann hast du das Problem, zu erklären, dass der Computer nicht mal
in dezimal, mal binär, oder in hex rechnet (oder gar mit Texten),
sondern dass er immer in binär rechnet).
Was mich extrem ärgert ist das hier:
Irgendwer schrieb:> Azubis sollte man ein Vorbild sein.
Ein Vorbild im Programmieren erstellt einen Programmcode, der super ist.
Aber von keiner Sau auf den ersten Blick zu durchschauen ist.
Ein Vorbild für Azubis ist, wer sich so weit herunterläßt, bis es - auf
welcher Ebene auch immer - klick macht und ein Verständnis dazu kommt.
Wenn dann ein Satz in der Art kommt: ich habe hier immer wieder den
gleichen Code, kann man daraus eine Funktion machen.
Dann ... freut es dich, weil du dann zu Funktionen kommst.
Für dich ist es vielleicht nicht ersichtlich, aber für einen Newbie ist
es bisweilen schwierig zu verstehen warum:
function eins(nr)
{
nr = 4;
}
function zwei();
{
var nr;
eins(nr);
}
Warum in Funktion zwei nr nicht den Wert 4 hat.
Wenn irgendwann einmal Corona vorbei ist... wird man sich mit C und dann
mit C++ auseinandersetzen.
Du hier hast aber gezeigt, dass dich die Funktion der Seite einen sch***
kümmert, du bist jemand, der auch keine Spiele braucht, denn dein Spiel
ist es (ich unterstelle noch nicht einmal böse Absicht) zu schauen, wo
etwas nicht ganz hasenrein ist um dich selbst zu erhöhen und sich zu
sagen: ich würde das besser machen.
Im Programmcode vielleicht ... (aber glaube mir, das kann ich dort auch
besser), in der Ausbildung auch ?
Also verkneife dir etwas in der Art: Man sollte Vorbild sein, du bist es
nicht !
Ach so, ja:
im Normalfall würde es auch nicht heißen:
read_infeld
set_infeld
read_str_infeld
das war der "Normalen Sprache" geschuldet. Im Normalfall (wenn es keine
objektorientierte Sprache ist), würde man das so benennen:
infeld_read
infeld_set
infeld_read_str
Um zu verdeutlichen, dass hier alles zu "infeld" gehört... man das auch
dann so tut, wenn es nur eine einzelne Funktion ist, um gleich zu sehen,
zu welchem "Pseudoobject" sie gehört.
Für diejenigen des Kurses, die weiter waren, gab es deshalb:
txb_init
txb_show
txb_write
etc.
Du siehst, dass deshalb auch schon die Namenswahl einer Funktion
problematisch sein kann !
Du kannst denen noch nicht erklären, dass man das so macht, damit,
sollte da mal irgendwo anderst hin portiert werden, daraus ein
txb.init
gibt.
Das es Variable gibt, die nur zu diesem Objekt dann gehören... und
Variable eines Objektes nicht direkt angesprochen werden, sondern du zum
manipulieren einer Variable wieder eine externe Methode schreibst.
Diese Art und Weise ist der visuellen objektorientierten Programmierung
geschuldet, bei dem du nur auf ein Objekt klickst und dann die
Funktionalität reinprogrammierst.
Hierbei hast du dann so überhaupt gar nichts gelernt.
Didaktisch gehts vom Einfachen zum Komplexen ... von : super dass das
geklappt hat und jetzt sehen wir mal, ob man das optimieren kann.
Das hast du scheinbar vergessen