Von Blöcken zum Programmcode und Programmieren ...
Blockly <> XML <> Python | Javascript
Vom visuellen Zusammenbauen zum Schreiben von Programmen

Quelle: Große weltweite Initiative ... Hour of Code - TYNKER-Projekt

visual-coding.jpg

collage.jpg
Beginnen wir einmal mit dem Anfang ...
Öffne folgenden Link, wechsle in den XML-Editor und kopiere den Text https://titanpad.com/blocklysum40.
Was passiert hier?

Blockly ist eine graphische Entwicklungsumgebung, die den Algorithmus in zwei unterschiedlichen Programmeirsprachen darstellen kann - Python und Javascript, beide sehr weit verbreitete Programmiersprachen.

Es wird im Folgenden der Python-Code vorgestellt - um zunächst ein Gefühl für diese (Computer)Sprache zu bekommen.
Anschließend wird ein Link zur Verfügung gestellt, wo ihr das Programm auf der Blockly-Webseite mit dem XML-Code nachbauen könnt.
Der XML-Code ist sozusagen der Bauplan für die Blöcke.

...........................

Eine interessante Zahlenfolge: Das 3N + 1 - Problem
Wie ist das Bildungsgesetz dieser beiden Zahlenfolgen? 3,10,5,16,8,4,2,1 7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
Das 3N+1 Problem beschäftigt sich mit diesen Zahlenfolgen.
Es wird überprüft ob eine Zahl gerade ist, dann wird diese durch 2 dividiert, oder falls sie ungerade ist, dann wird sie mit 3 multipliziert und 1 dazugezählt. Dies wird solange durchgeführt, bis 1 rauskommt.
Nun ist es so, dass "angeblich" egal bei welcher Zahl man beginnt, die letzten 3 Zahlen die in der Folge vorkommen sind immer 4, 2 und 1.

Hier ist das Problem mit Blockly nachgebildet.
Um es selbst zu testen, könnt ihr den Text aus dem Link, wie oben beschrieben, einfügen und das Programm starten.
Viel Spass beim ausprobieren, vielleicht findet ihr ja eine Zahl bei der dies nicht der Fall ist ;)

Bitte lasst euch nicht abschrecken - dieses Programm ist eine LUXUSVERSION (mit der Datenstruktur LISTE, ohne die es aber auch geht!)
(Einfache Versionen, die nach Eingabe einer Startzahl alle Folgeglieder bis 1 ausgiben, gibt es hier zu sehen ...)
3n.jpg

Link



Bestimmten Mittlwert finden
Im folgenden Programm geht es darum solange 10 Zufallszahlen zwischen 0 und 10 zu generieren bis der Mittelwert der Zahlen 5 ergibt.

Hier zuerst die Darstellung in Blockly und darunter wieder der Link zum XML-Code
mittelwert.jpg

Link

Schleife, Abfrage und Aufsummieren
Hier ein kleines Programm welches alle Zahlen von 1-40 durchgeht und alle Vielfachen von 4 aufsummiert:
Darstellung in Blockly

summe.jpg

Codeschnipsel 1:

=============================================================
sum2 = None
i = None
sum2 = 0

for i in range(1, 41):
if i % 4 == 0:
sum2 = (sum2 if type(sum2) in (int, float, long) else 0) + i

print(sum2)


=============================================================

Link


Wähle 2 aus:
Dieses Programm wählt aus einem Text zufällig 2 "unterschiedliche" Buchstaben aus:

wähle2.jpg

Codeschnipsel 2:
=============================================================
import random
xxy = None
item = None
items = None
list2 = None
list22 = None
j = None
xxy = 0
item = 'ABCDEFGHIJK'

print(item)

items = len(item) - 1
list2 = []
for count in range(int(items)):
list2[int(xxy - 1)] = item[int(xxy - 1)]
xxy = (xxy if type(xxy) in (int, float, long) else 0) + 1
list22 = []
xxy = 0
for count2 in range(2):
list22[int(xxy - 1)] = list2.pop(int(random.randint(0, len(list2)) - 1))
xxy = (xxy if type(xxy) in (int, float, long) else 0) + 1
for j in list22:

print(j)

=============================================================
Link


Palindrom:
Dieses Programm überprüft einen vordefinierten Text ob es sich dabei um ein Palindrom handelt
(ein Palindrom ist ein Text der von vorne und von hinten gelesen dasselbe ist wie zum Beispiel ANNA oder OTTO)

palindrom.jpg

Codeschnipsel 3:
=================================================
import math
isPalindrom = None
text = None
i = None

isPalindrom = True
text = 'MAMA'
i = 1
for count in range(int(round(len(text) / 2))):
if text[int(i - 1)] != text[-i]:
isPalindrom = False
i = (i if type(i) in (int, float, long) else 0) + 1
print(''.join([str(temp_value) for temp_value in ['Ist ', text, ' ein Palindrom? ', isPalindrom]]))
=============================================================

Link


Hier ausprobieren -> Lässt sich sehr gut einfügen (embedden - Siehe auf dieser Seite):

http://www.pythontutor.com