{"id":8808,"date":"2017-02-16T20:07:47","date_gmt":"2017-02-16T19:07:47","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=8808"},"modified":"2023-05-24T12:04:57","modified_gmt":"2023-05-24T10:04:57","slug":"programmieren-in-der-9-jahrgangsstufe","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2017\/02\/programmieren-in-der-9-jahrgangsstufe.htm","title":{"rendered":"Programmieren in der 9. Jahrgangsstufe"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2017\/02\/programmieren-in-der-9-jahrgangsstufe.htm#comments'>7 Kommentare.<\/a>)<\/small> <\/div>\n<p>In Bayern besch\u00e4ftigen sich Sch\u00fclerinnen und Sch\u00fcler der 9. Jahrgangsstufe (Gymnasium, naturwissenschaftlich-technologischer Zweig) mit Tabellenkalkulations- und Datenbanksoftware. Das ist bei dem aktuellen, etwa zehn Jahre alten Lehrplan so, und bei dem kommenden neuen ebenfalls. Dabei sollen die Sch\u00fclerinnen nicht Excel lernen, sondern vor allem: Datenflussmodellierung, und ein Verst\u00e4ndnis f\u00fcr Funktionen im informatischen Sinn. Und sie sollen auch bei Datenbanken neben SQL vor allem Datentypen und die Modellierung mit Klassendiagrammen lernen, als Vorarbeit f\u00fcr die 10. Jahrgangsstufe, die ganz unter dem Stern der Objektorientierten Programmierung steht.<\/p>\n\n\n\n<p>Ein halbes Jahr Excel, ein halbes Jahr SQL &#8211; <strong>das h\u00e4ngt einem zum Hals heraus.<\/strong> Beides braucht man danach im Informatikunterricht nur sp\u00e4rlich, jedenfalls nicht bis in die jeweiligen Feinheiten.<\/p>\n\n\n\n<p>Da ich dieses Jahr zum Halbjahr unter anderem meine 9. Klasse abgeben muss (und stattdessen eine Deutschklasse \u00fcbernehme; so etwas kommt zum Halbjahr immer mal wieder vor), habe ich nicht mit Datenbanken angefangen, obwohl ich schon vor einer Weile mit Tabellenkalkulation abgeschlossen habe. Stattdessen habe ich mit den Sch\u00fclern das getan, was sich logischerweise anschlie\u00dft an die Auseinandersetzung mit Tabellenkalkulation unter funktionalem Begriff: selber Funktionen programmiert.<\/p>\n\n\n\n<p>Das geht mit Python so kinderleicht und so nat\u00fcrlich, dass die Sch\u00fcler damit keine Probleme haben. Man kann fast die gleichen Aufgaben, die sie vorher mit Calc gel\u00f6st haben, jetzt mit Python programmieren. Aus Zellbezeichnern werden Variablenbezeichner, schlie\u00dflich ist so eine Zelle fast auch nur ein Beh\u00e4lter f\u00fcr einen Wert &#8211; wie Variablen.<\/p>\n\n\n\n<p><strong>Arbeiten mit der Programmiersprache Python<\/strong><\/p>\n\n\n\n<p>Python ist eine einfache Programmiersprache. Du schreibst die Befehle dazu in eine Datei (Men\u00fc: \u201cFile&gt;New Window\u201d oder einfach STRG+N), die du dann mit der Taste F5 (\u201cRun\u201d) ausf\u00fchren l\u00e4sst.<br>Die Funktionen darin \u00e4hnen denen in Tabellenkalkulationsprogrammen, nur dass du die Zellen nicht siehst:<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td><span style=\"font-family: Courier New,monospace;\">a1 = 14<\/span><\/td><td>in Zelle a1 wird 14 eingetragen<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">b1 = 12<\/span><\/td><td>in Zelle b1 wird 12 eingetragen<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">c1 = a1+b1<\/span><\/td><td>in Zelle c1 wird die Summe von a1 und b1 eingetragen<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">a1 = -5<\/span><\/td><td>in Zelle a1 wird -5 eingetragen \u2013 anders als bisher \u00e4ndert sich dabei c1 nicht, die Werte anderer gemerkter Sachen werden nicht automatisch aktualisiert<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Um die Werte anzuzeigen, kannst du die print-Funktion verwenden:<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td><span style=\"font-family: Courier New,monospace;\">print(c1)<\/span><\/td><td>druckt \u201c26\u201d aus<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">print(&#8222;Ergebnis:&#8220;, c1)<\/span><\/td><td>druckt \u201cErgebnis: 26\u201d aus<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">print(a1, b1, c1)<\/span><\/td><td>druckt \u201c-5 12 26\u201d aus<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Vordefiniert sind diese Funktionen in Infix-Schreibweise: <code>+, -, \/, *<\/code><\/p>\n\n\n\n<p>Andere Funktionen musst du dir selber schreiben. Das geht so:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def quadrat(x):\n    return x*x<\/code><\/pre>\n\n\n\n<p>Wichtig sind dabei das Schl\u00fcsselwort def f\u00fcr Definition, die Klammern, der Doppelpunkt und die automatische Einr\u00fcckung nach dem Doppelpunkt. Mit dem Schl\u00fcsselwort return bestimmst du, was die Funktion zur\u00fcckgeben soll.<br>Sobald du das getan hast, kannst du die Funktion in den Zeilen darunter benutzen:<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td><span style=\"font-family: Courier New,monospace;\">d1 = quadrat(3) <\/span><\/td><td>&nbsp;<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">print(d1)<\/span><\/td><td>druckt \u201c9\u201d aus<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">print(quadrat(quadrat(3+2))<\/span><\/td><td>druckt \u201c625\u201d aus<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>AUFGABE 1: Erg\u00e4nze und teste folgende Funktionen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td>&nbsp;<\/td><td>\n<p align=\"center\">Testwerte<\/p>\n<\/td><td>\n<p align=\"center\">Ergebnis<\/p>\n<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">def quader_volumen(laenge, breite, hoehe)<\/span><\/td><td>\n<p align=\"center\">2,3,4<\/p>\n<\/td><td>\n<p align=\"center\">24<\/p>\n<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">def kreis_flaeche(radius)<\/span><\/td><td>\n<p align=\"center\">3<\/p>\n<\/td><td>\n<p align=\"center\">28.27431<\/p>\n<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">def kreis_umfang(radius)<\/span><\/td><td>\n<p align=\"center\">3<\/p>\n<\/td><td>\n<p align=\"center\">18.84954<\/p>\n<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">def zylinder_volumen(radius, hoehe)<\/span><\/td><td>\n<p align=\"center\">3,4<\/p>\n<\/td><td>\n<p align=\"center\">113.09724<\/p>\n<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">def quadrat_umfang(seitenlaenge)<\/span><\/td><td>\n<p align=\"center\">3.5<\/p>\n<\/td><td>\n<p align=\"center\">12.25<\/p>\n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Hinweise: Nimm f\u00fcr Pi den Wert 3.14159 \u2013 achte darauf, wie bisher kein Komma zu nehmen, sondern einen Dezimalpunkt.<br>Umlaute und Sonderzeichen funktionieren meistens bei Programmiersprachen, machen aber ab und zu doch Probleme, deshalb verzichte ich meistens ganz auf sie<\/p>\n\n\n\n<p><strong>AUFGABE 2: Schreibe dir eine Funktion, mit der du die vorherigen Funktionen testest:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def test():\n    print(\"Quadrat von 2:\", quadrat(2))\n    print(\"Volumen Quader 2*3*4:\", quader_volumen(2,3,4))\n    print(\"Kreis Umfang Radius 1:\", kugel_umfang(1))<\/code><\/pre>\n\n\n\n<p>Und so weiter. (Diese Funktion gibt nichts zur\u00fcck.)<br>Starte den test mit der Zeile: <code>test()<\/code><\/p>\n\n\n\n<p><strong>AUFGABE 3: Erg\u00e4nze Funktionen<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zum Berechnen des Durchschnitts zweier Zahlen<\/li>\n\n\n\n<li>zum Berechnen der Fl\u00e4che eines Trapezes<\/li>\n\n\n\n<li>zum Berechnen der Blutalkoholkonzentration, abh\u00e4ngig von Masse des Menschen, Menge des Getr\u00e4nks, Alkoholgehalt des Getr\u00e4nks \u2013 entscheide dich dabei f\u00fcr die Formel f\u00fcr M\u00e4nner oder Frauen<\/li>\n<\/ul>\n\n\n\n<p><strong>AUFGABE 4:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Schreibe eine Funktion <code>verschieben(zeichen)<\/code>, die\n<ol class=\"wp-block-list\">\n<li>ein eingebenes Zeichen in eine Zahl umwandelt. Das geht mit der bereits vorhandenen Funktion <code>ord(zeichen)<\/code> (=&gt; wandelt Zeichen in Zahl um).<\/li>\n\n\n\n<li>Z\u00e4hle dann 1 zu dem Ergebnis dazu<\/li>\n\n\n\n<li>und wandle das Ergebnis mit der vorhandenen Funktionen <code>chr(Zahl)<\/code> (=&gt; wandelt<br>Zahl in Zeichen um) wieder in ein neues Zeichen um,<\/li>\n\n\n\n<li>das die Funktion dann zur\u00fcckgibt<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Schreibe eine entsprechende Funktion <code>zurueckschieben(zeichen)<\/code><\/li>\n\n\n\n<li>Schreibe die <em>neuen<\/em> Funktionen <code>verschiebenUm(zeichen, verschiebung_um)<\/code> und <code>zurueckschiebenUm(zeichen, verschiebung_um)<\/code><\/li>\n\n\n\n<li>Teste das jeweils mit der folgenden Funktion an einem ganzen Satz:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>def verschluesseln(satz):\n    for buchstabe in satz:\n        print (verschiebenUm(buchstabe, 2))<\/code><\/pre>\n\n\n\n<p><strong>Aufgabe 5: Die Kontrollstruktur: Wenn, dann, sonst (\u201cBedingte Anweisung\u201d)<\/strong><\/p>\n\n\n\n<p>Es gibt keine wenn-Funktion, aber so etwas \u00c4hnliches. Du kennst das noch von Robot Karol:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def darfBierBestellen(alter, eltern_sind_dabei):\n    if alter&gt;16:\n        return True\n    else:\n        if alter&gt;14 and eltern_sind_dabei==True:\n            return True\n        else:\n            return False<\/code><\/pre>\n\n\n\n<p>Zum Testen:<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td><span style=\"font-family: Courier New,monospace;\">x1 = darfBierBestellen(15, False)<\/span><\/td><td>&nbsp;<\/td><\/tr><tr><td><span style=\"font-family: Courier New,monospace;\">print (x1)<\/span><\/td><td>druckt \u201cFalse\u201d aus<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Warum steht das nicht im Lehrplan, wo es sich doch organisch an die Tabellenkalkulation anf\u00fcgt? Und eine gute Vorbereitung f\u00fcr die 10. Klasse ist? Au\u00dferdem halte ich es f\u00fcr \u00e4u\u00dferst sinnvoll, erst einmal <em>nicht<\/em> objektorientiert zu programmieren, Algorithmik zu \u00fcben &#8211; nur dann erkennen Sch\u00fcler sp\u00e4ter auch den Sinn und Nutzen von objektorientierter Programmierung.<\/p>\n\n\n\n<p>Ich vermute mal, dass das mit der Geschichte des Pflichtfachs Informatik in Bayern zu tun hat. Bayern ist da ja mit Vorreiter, und wenn ich mir anschaue, wie schwer sich andere L\u00e4nder mit dem Einf\u00fchren eines solchen Fachs tun, dann war das wohl auch hier eine gro\u00dfe Leistung. Bei den Entscheidungstr\u00e4gern hatte Informatik, und das ist wohl immer noch so, den Ruf, etwas mit Programmierung zu tun &#8211; und das war ja total verp\u00f6nt. Das brauchte man allenfalls in der Berufsbildung, aber doch nicht an allgemeinbildenden Schulen. &#8212; Und so hat man sich mit dem Verzicht auf fr\u00fches Programmieren vielleicht den Pflichtfachstatus erkauft. Trotzdem schade, dass der neue Lehrplan keien Verbesserung gegen\u00fcber dem alten bringt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(7 Kommentare.) In Bayern besch\u00e4ftigen sich Sch\u00fclerinnen und Sch\u00fcler der 9. Jahrgangsstufe (Gymnasium, naturwissenschaftlich-technologischer Zweig) mit Tabellenkalkulations- und Datenbanksoftware. Das ist bei dem aktuellen, etwa zehn Jahre alten Lehrplan so, und bei dem kommenden neuen ebenfalls. Dabei sollen die Sch\u00fclerinnen nicht Excel lernen, sondern vor allem: Datenflussmodellierung, und ein Verst\u00e4ndnis f\u00fcr Funktionen im informatischen Sinn. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[227],"class_list":["post-8808","post","type-post","status-publish","format-standard","hentry","category-informatik","tag-informatik"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/8808","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=8808"}],"version-history":[{"count":2,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/8808\/revisions"}],"predecessor-version":[{"id":57710,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/8808\/revisions\/57710"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=8808"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=8808"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=8808"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}