Was steckt programmiertechnisch hinter dem Einsteiger-Programm "hallo.py"?

  • Hallo Dieter,


    Danke! Hast mir als Einsteiger schon einen guten Einblick verschafft. Obwohl ich, sagen wir mal - noch "meilenweit" davon entfernt bin "auf das Eis zu gehen". Ich werde mir deine Erläuterungen auch weiterhin anschauen.


    Grüsse

    Bernhard

  • Hallo Dieter,


    das Beispiel hallo.py hatte hauptsächlich den Zweck, die wichtigsten Elemente (Variable, Funktion und Hauptprogramm) eines Programmes zu zeigen. Es geht hier nicht um die Details der Befehle. Die for - Schleife, die Elemente einer Liste abarbeitet, ist gut funktional zu begreifen. Zum Thema Schleifen wird es später eine eigene Lektion geben.


    Für einen absoluten Anfänger ist deine Version mit der while - Schleife auch recht anspruchsvoll. Der Einsteiger muss begreifen, dass mit len() die Anzahl Elemente in der Liste zurückgegeben wird und er muss wissen, dass man ein Array indexieren kann. Dass der Index mit 0 beginnt, ist für einen Einsteiger auch nicht selbstverständlich.


    Deine Zusammenfassung ist sehr gut, es wird noch viele Lektionen brauchen, bis ich in den Videos auch so weit bin. Wer also ungeduldig ist. kriegt hier schon einen Vorgeschmack, was noch alles auf ihn zukommt.


    Gruss

    René

  • Das kleine Einsteiger-Programm "hallo.py" hat es faustdick hinter den Ohren und lässt sich auf die Schnelle nicht tiefgründig verstehen, funktional hingegen schon.


    Der Grund dafür ist der, dass es im Programm die Funktion "sage_hallo(name)" gibt, die im Funktionskopf einen Namen einliest und mittels "print()"-Befehl in der Thonny-Shell anzeigt.


    Diesbezüglich muss der Einsteiger wissen, dass eine Funktion für sich alleine noch nichts bewirkt, sondern erst dann, wenn man diese z.B. vom Hauptprogramm aus aufruft. Und zwar mit dem Statement "sage_hallo(name)".


    Das Statement mit dem Funktionsaufruf befindet sich aber ausgerechnet in einer "for"-Schleife, die nur abgearbeitet wird, wenn die Bedingung "name in namen" erfüllt wird, d.h. zutreffend ist. Und bei bei "namen" handelt es sich um eine (Vornamens-) Liste vom Typ "tuple", die sich nicht erweitern lässt. Dazu muss der Einsteiger wissen, dass alle Vornamen in Form von Datenfeldern im Verborgenen indexiert (nicht indiziert!) sind und der Index stets bei Null beginnt.


    Demzufolge liefert das Statement print("Viele Grüße " + namen[2]) aus der Namensliste den Vornamen "Monika" zurück, weil dieser dem Index = 2 in der Namensliste entspricht. Aber genau das weiß der Einsteiger nicht, sodass er weder die "for"-Schleife, noch die Funktion "sage_hallo()" wirklich versteht!


    Das Problem dabei ist nun, dass der Einsteiger ein massives Verständnisproblem hat, zu dem er aber nichts kann! Er kommt sich etwas blöd vor, obwohl er nur etwas dumm, d.h. unwissend(!) ist und sich nicht traut, jemanden im Forum zu fragen, wie das Programm wirklich zu verstehen ist.


    Eine verständnisvollere Programmversion ohne "dubiose" Funktion wäre z.B.


    Kurz und gut, das kleine "Hallo"-Programm hat mich nicht nur intellektuell provoziert, sondern auch motiviert, diesem systematisch auf den Grund zu gehen.

    [ Hier ] das vorläufige Ergebnis meiner umfangreichen Bemühungen.


    Viel Spaß und Erfolgt wünscht


    Dieter