SJ 21/22: Klasse 10a
Mathematisch-Naturwissenschaftlicher Zweig (zweistündig - IT Wahlpflichtfächergruppe I)
Bezeichnung in der SchulApp: IT_1/10a_1
>>> zurück zur Klassenübersicht
Inhaltsverzeichnis
Ausgewählte Themenblöcke
- Themenblock: CUBE.CODES zu den Lehrplanthemen ...
- IT 2.6.1 Modellieren und Codieren von Algorithmen,
- IT 2.8.1 Computergrafik und
- IT 2.8.2 Computeranimation
Blog
- 23. November 2021: Evaluation RUBIK-Algorithmus (Würfel WM)
- 03. Dezember 2021: CUBE.CODES blank
- 03. Dezember 2021: Erste Schritte
- 03. Dezember 2021: CUBE.CODES: Einfache EVA-Programme
- 10. Dezember 2021: CUBE.CODES: Unterscheidung von Text und Zahl
- 10.12.: Die while-Schleife
x=1; y=364; ergebnis=y; while(x<=10) { UI.log(x + " mal " + y + " ist " + ergebnis); x=x+1; ergebnis=ergebnis+y; }
[08:37:01] Program starting ... [08:37:01] Program running ... 1 mal 364 ist 364 2 mal 364 ist 728 3 mal 364 ist 1092 4 mal 364 ist 1456 5 mal 364 ist 1820 6 mal 364 ist 2184 7 mal 364 ist 2548 8 mal 364 ist 2912 9 mal 364 ist 3276 10 mal 364 ist 3640 [08:37:01] Program finished successfully
- 14.2: Teiler finden
- 14.2: Primzahlen finden
//Siegerin Chiara Teiler=1; Zahl=999999751; while(Teiler<=Zahl) { if(Zahl%Teiler==0) UI.log(Teiler); ++Teiler; }
- do-while-Schleife
do await CUBE.move(" R B L F "); while(!CUBE.isSolved())
- Hausi: Schleife so ergänzen, dass die Anzahl der Durchläufe ausgegeben wird
- CUBE.CODES: Schleifen mit while Teil 2
- 11. Januar 2022: CUBE.CODES: Schleifen mit for
- 14. Januar 2022: CUBE.CODES: Besondere (Rechen-)Ausdrücke
28.1.22: Unendliche Reihen basteln und testen
for(n=1; n<=10; ++n) UI.log("1/"+n);
... ist eine witzige Folge von Zahlen, die immer kleiner werden.
[08:57:53] Program starting ... [08:57:53] Program running ... 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 1/10 [08:57:53] Program finished successfully
Wir können die Ausdrücke nicht nur als Text ausgeben, sondern auch ausrechnen lassen. Dann bekommen wir halt die Ergebnisse dezimal:
for(n=1; n<=10; ++n) UI.log(1/n);
Ausgabe:
[08:59:54] Program starting ... [08:59:55] Program running ... 1 0.5 0.3333333333333333 0.25 0.2 0.16666666666666666 0.14285714285714285 0.125 0.1111111111111111 0.1 [08:59:55] Program finished successfully
Wenn man die nun zusammenzählen würde, ...
Würde das Ergebnis immer mehr anwachsen (weil es ja immer mehr Zahlen werden, die dazugezählt werden) oder würde es über eine gewisse Schranke nie drübergehen (weil ja immer verschwindend kleinere Zahlen dazugezählt werden)? Probieren wir's aus!
summe=0; for(n=1; n<=1000; ++n) { summe=summe+1/n; UI.log(summe); }
... ergibt die Ausgabe:
[08:52:31] Program starting ... [08:52:31] Program running ... 1 1.5 1.8333333333333333 2.083333333333333 2.283333333333333 2.4499999999999997 2.5928571428571425 2.7178571428571425 2.8289682539682537 2.9289682539682538 ... ... (das geht jetzt 1000 Zeilen weiter ;-)) ... ... 7.483469859549342 7.484470860550343 7.485470860550343 [08:52:32] Program finished successfully
Man kann die Obergrenze für n jetzt immer größer machen. Es spielt ja keine Rolle. Der PC rechnet ja, nicht wir! :-) Wir beobachten, dass die Zahlen immer langsamer anwachsen (wie vermutet), aber irgendwann klickt es über 8, viel viel später mal über 9, ... Eine eindeutige Tendenz auf Dauer ist aber nicht erkennbar. Irgendwann schmiert auch der Rechner aus Überlastung ab. Dann kann man das Programm nur noch extern abbrechen. Hm!
IT-technisch interessant:
Könnt Ihr aus dem, was wir gelernt haben (CUBE.CODES: Besondere (Rechen-)Ausdrücke), wieder einen Einzeiler machen?
summe=0; for(n=1; n<=1000; ++n) UI.log(summe+=1/n);
Elegant, aber schon a bisserl crazy!