23
Wie fange ich mit dem Programmieren an? Jugend hackt, 9.7.2015 Hubert Hesse (@hubx)

Wie fange ich programmieren an?

  • Upload
    hubx

  • View
    32

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Wie fange ich programmieren an?

Wie fange ich mit dem Programmieren an?

Jugend hackt, 9.7.2015

Hubert Hesse (@hubx)

Page 2: Wie fange ich programmieren an?

Vom Problem zum Programm● Eingabe/Ausgabe (Spezifikation)● Vereinfachen

○ “Ich will ein Antivirus implementieren”■ Dateien erkennen die “AAAA” enthalten■ Was passiert wenn AAAA verschleiert ist

● Unterprobleme/”Teile-Und-Herrsche”○ Computer fernsteuern

■ Bildschirm aufnehmen, alle 5s, versenden■ Verbindung aufbauen■ Tastenanschläge weiterleiten

Page 3: Wie fange ich programmieren an?

● Ziel: Quelltext schreiben und ausführen können● Editor: z.B: Sublime (http://www.sublimetext.com/)

● Compiler (Quelltext -> Ausführbaren Datei)

● Interpreter (Anweisungen beim Programmstart übersetzen)

● Wie kann ich das Programm starten?

Hello World Installiere Voraussetzungen<

>>> print("Hello world")Hello World!

public class HelloWorld { public static void main (String[] args) { System.out.println("Hello World!"); }}

C++/Java: Keine gute EinstiegssprachePython

Page 4: Wie fange ich programmieren an?

Variablen

>>> (1 + 4) * 210>>> x = 1>>> x1>>> x = x + 4>>> x *= 2>>> x10

a = int(input(“Seitenlänge?”))A = a * au = 4 * aprint (“Fläche:”, A)print (“Umfang:”, u)

● Veränderbarer Platzhalter für Werte● Adresse im Speicher

Typen (10 == “10”)?

Page 5: Wie fange ich programmieren an?

Funktionen (parameter)

def bereche_flaeche(a) return a * a

def berechne_umfang(a) return 4 * a

a = int(input(“Seitenlänge?”))print (“Fläche:”, berechne_flaeche(a))print (“Umfang:”, bereche_umfang(a))

● In Teilprobleme zerlegen, auf eine Sache konzentrieren● Quelltextabschnitte benennen, wiederverwenden

int bereche_flaeche(int a) { return a*a}

C++/Java: Klammern statt Einrückung

Page 6: Wie fange ich programmieren an?

Funktionen IIdef bereche_flaeche(a) return a * a

def berechne_umfang(a) return 4 * a

a = int(input(“Seitenlänge?”))print (“Fläche:”, berechne_flaeche(a))print (“Umfang:”, bereche_umfang(a))print (“Doppelte Seitenfläche => Fläche:”, berechne_flaeche(2 * a))print (“Doppelte Seitenfläche => Umfang:”, bereche_umfang(2 * a))

● Wiederverwendung von Code mit Funktionen möglich

Page 7: Wie fange ich programmieren an?

Eingebaute Funktionen

mein_string = “ ICH bIn Groß ”print(mein_string.strip().lower()) # ”ich bin groß” <- Kommentar

● Vorher schauen ob Funktion schon mit der Standardbibliothek mitkommen

Page 8: Wie fange ich programmieren an?

SchleifenWiederholen von Anweisungen

namen = “Alex,Trevor,Alice”.split(“,”)for name in namen: print(“Willkommen “ + name)

total = 0for i in 1, 1, 2, 3, 5, 7, 11, 13: print(i) total += i

print(total) #43

Page 9: Wie fange ich programmieren an?

Verzweigungen if-Ausdrücke

def rechner(a, b, op): if op == "+": return a + b elif op == "-": return a - b else: return a

total = 0while True: op = input("+/-?") i = int(input("i?")) total = rechner(total, i, op) print (total)

● Testen von Variablen auf Inhalte ○ <,>, ==, (i % 2 == 0)○ str.endswith(),str.islower()

● Wahrheitswert (Boolean)○ True, False

Page 10: Wie fange ich programmieren an?

Listen

def quadriere(liste): b = [] for a in liste: b.append(a*a) return bquadriere([1, 2, 3, 4, 5])

liste = [0,1,2,3,4,5]b = [a*a for a in liste] # Kürzere Schreibweise: List comprehensionb[5] # Direkter Zugriff auf das 6. Element = 25

(Zwischen-)ergebnisse aufsammeln

Page 11: Wie fange ich programmieren an?

Lerntipps● Selber tippen trainiert Muskelgedächtnis● Mit Freunden programmieren● Hilfe suchen (online/offline)● Spaß

OpenTechSchool Konzepte ausführlicher https://opentechschool.github.io/python-beginners/de/index.html

Page 12: Wie fange ich programmieren an?

CodeCombatMulltiplayer Programmierspiel (http://codecombat.com/)

Page 13: Wie fange ich programmieren an?

“Die Programmierstunde”https://code.org/learnhttp://lightbot.com/

Page 14: Wie fange ich programmieren an?

Let’s Code - ProgrammiervideosJava für Einsteiger - https://open.hpi.de/courses/javaeinstieg2015

Python - https://open.hpi.de/courses/pythonjunior2014

khanacademy.org: Zeichnen mit JavaScripthttps://de.khanacademy.org/video?lang=de&format=lite&v=h25CyONlPdM

Youtube: Android Apps programmieren (JaDaHB1)https://www.youtube.com/playlist?list=PL13I0cBsOJUc0OTlv09DG7_m2T0Si0Wbx

Page 15: Wie fange ich programmieren an?

Projektideen● Text: Wörter zählen, Palindrom-Check, Cäsar-

Chiffre/Enigma● Datei/Netzwerk: Verzeichnis auflisten, Datei

erkennen/ablehnen, Passwort-Check, Webserver der immer die gleiche Webseite ausliefert

● Spiele: Hangman, Pong

Page 16: Wie fange ich programmieren an?

Programmieren lernen - CommunitiesOpenTechSchool: http://learn.opentechschool.org/ (D/Eng...)

Coder Dojos:https://zen.coderdojo.com/

Internet: https://www.reddit.com/r/learnprogramming/wiki/faq (Eng)

Page 17: Wie fange ich programmieren an?

PauseZwischenfragen?

Page 18: Wie fange ich programmieren an?

Versionierung● Das Backup der Programmierenden● “Wie war nochmal der Stand den ich gestern

hatte?”● Automatisches Zusammenführen von

Änderungen

Versionskontrolle mit Githttps://try.github.io/

Page 19: Wie fange ich programmieren an?

Dictionaries Zuordnung speichern

fak = {0:1, 1:1, 2:2, 3:6, 4:24, 5:120}def fakultaet(n): if n == 0: return 1 if n in fak: return fak[n] fak[n] = fakultaet(n-1) * n return fak[n]

Zuordnung Index -> WertGebe alle Fakultäten bis 1000 aus

Wikipedia [De]: Fakultät (Mathematik)

5! = 4! * 5

Page 20: Wie fange ich programmieren an?

Algorithmen & Datenstrukturen● Deutsche Sprache> 5 Mio

Wörter● Immer die Wörterliste

durchlaufen zu dauert lange! …vorsichtigemvorsichtigervorsichtigerevorsichtigeremvorsichtigerervorsichtigeresvorsichtigesvorsichtigstemvorsichtigstenvorsichtigstervorsichtshalbervorsiehtvorsingen...

Page 21: Wie fange ich programmieren an?

Algorithmen & Datenstrukturen● Trie (Prefixbaum) speichern

Wörterbücher effizienter● Schneller durchsuchbar● Braucht weniger Speicher

https://de.wikipedia.org/wiki/Trie#/media/File:Trie.svg

Page 22: Wie fange ich programmieren an?

Algorithmen & DatenstrukturenÜbungen:Bundeswettbewerb Informatik (alte Aufgaben) https://www.bwinf.de/

USA Computing Olympiad (Automatisierte Bewertung)

http://usaco.org/

Page 23: Wie fange ich programmieren an?

Frameworks● Rails maßgeschneidert für den Anwendungsfall

dynamischer Webseitenbau

● Code in vorgefertigtes Schema (Modell, View, Controller)● “Wissen wo was hinkommt”

● Rails for Zombies (http://railsforzombies.org)