FORMALE SPRACHEN IM
UNTERRICHT MIT PYTHON
BECK, LEUTGEB, SCHOLLER
AGENDA
• WH und Definition Formale Sprachen
• Einführung Python
• Praxisbeispiel: Stundenplanung mit Python
SPRACHEN
• Syntax
• Semantik
• Pragmatik
BEISPIEL – AUTOMATISIERTE VORGÄNGE
Sprache: PGM
BEISPIEL – AUTOMATISIERTE VORGÄNGE
Sprache: Python
BEISPIEL – AUTOMATISIERTE VORGÄNGE
Sprache: PGM
FORMALE SPRACHEN - DEFINITION
• Alphabet
• Nicht-leer, geordnet und endliche Menge
• Wort
• Leerwort - Σ* & Σ+
• Formale Sprache
• Syntax!
PYTHON:
• Einfachheit:
• Wenig Schlüsselwörter
• Syntax sehr übersichtlich
• Bibliothek: Leicht erweiterbar
• Multiparadigmensprache: Erlaubt das für die jeweilige Aufgabe beste
Paradigma zu wählen.
PYTHON
• Open Source:
• Für jedes OS verfügbar
• Viele bekannte Dienste nutzen Python:
• YouTube, Instagram, Pinterest, Dropbox, Reddit, ...
• Heute populärste naturwiss.-math. Programmiersprache
• Sehr viele math. Bibliotheken verfügbar: Numerik, Algebra, symbolisches Rechnen,
Funktionsplots, Zahlentheorie, ...
REGULÄRE AUSDRÜCKE IN PYTHON
• In Programmiersprachen, so auch in Python, werden reguläre Ausdrücke für
die Filterung genutzt
• Die Syntax der regulären Ausdrücke ist in allen Programmiersprachen und
Skriptsprachen gleich!
• s = „Reguläre Ausdrücke einfach erklärt!“
• „einfach“ in s
• True!
IN
MODUL RE
• Notwendig um mehr aus den regulären Ausdrücken zu machen als bisher:
• Problem: Backslash hat zB eine besondere Bedeutung in regulären
Ausdrücken, ist in Python aber in Strings ein Escape:
• 1. Lösung: statt einem \ zwei \\ machen
• 2. Lösung: r“^a.*\.html$“ = raw string (mit einem r)
ANWENDUNG:
• r“cat“ = regulärer Ausdruck um cat zu suchen.
• Funktioniert einwandfrei
• Findet aber auch Wörter wie "falsification„
•
Nicht gewünscht!
• r“ cat „ Lösung?
•
Findet nicht „I like this cat, but …“
BELIEBIGES ZEICHEN
•
Statt „cat“ wollen wir nun etwas finden, was mit „at“ endet und 3 Buchstaben hat:
•
Lösung: r“ .at „
•
•
Oder auch nicht? Auch @at oder 3at wären hier gültig.
Alternative: Gewünschte Zeichen durch [] definieren:
•
•
•
•
r“M[ae][iy]r
[a-c] als Abkürzung für [abc]
[^abc] = alles außer abc
[a^bc] = ?
DIVERSE KÜRZEL:
\d
Eine Ziffer, entspricht [0-9].
\D
das Komplement von \d. Also alle Zeichen außer den
Ziffern, entspricht der Klassennotation [^0-9].
\s
Ein Whitespace, also Leerzeichen, Tabs, Newlines und so
weiter, entspricht der Klasse [ \t\n\r\f\v].
\S
Das Komplement von \s. Also alles außer Whitespace,
entspricht [^ \t\n\r\f\v].
\w
Alphanumerisches Zeichen plus Unterstrich, also [a-zAZ0-9_]. Wenn die LOCALE gesetzt ist, matched es auch
noch die speziellen Zeichen der LOCALE, also z.B. die
Umlaute.
\W
Das Komplement von \w.
\b
Passt auf den leeren String, aber nur, wenn dieser am
Anfang oder Ende eines Strings ist.
\B
Passt wie \b den leeren String, aber nur, wenn dieser
nicht am Anfang oder Ende eines Strings ist.
\\
Ein Backslash.
MATCH VS. SEARCH
MATCH VS. SEARCH?
• Funktioniert aber nur in Python (Search)
WAS MACHT PYTHON ANDERS?
EINFÜHRUNG IN DIE
PROGRAMMIERUNG ANHAND DER
PROGRAMMIERSPRACHE
PYTHON
LEHRPLAN
• Gesamte Rechtsvorschrift für Lehrpläne – allgemeinbildende höhere Schulen,
Fassung vom 01.09.2017
• https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&G
esetzesnummer=10008568&FassungVom=2017-09-01
• Bildungs- und Lehraufgabe (5. Klasse)
• Beiträge zu den Bildungsbereichen
• Sprache und Kommunikation
Konstruktiver Informatikunterricht ist auch
Sprachunterricht.
Der Mensch-Maschine-Kommunikation liegt im
Gegensatz zu natürlichen Sprachen eine abstrakte
formale Sprache zugrunde.
Informatiksysteme tragen wesentlich zu
Veränderungen der Kommunikationskultur bei.
Unterschiedliche digitale Repräsentationsformen von
Information ergänzen die traditionelle Verständigung
und erfordern neue technologische und methodische
Kompetenzen.
Die vielfältigen Möglichkeiten der elektronischen
Kommunikation ermöglichen einen Austausch über
Grenzen hinweg und erleichtern die virtuelle
Begegnung mit anderen Kulturen.
Die davon ausgehende Motivation,
Fremdsprachenkenntnisse zu erwerben, wird durch
die Verfügbarkeit aktueller und authentischer
fremdsprachlicher Informationen und das
Fachvokabular verstärkt.
5. KLASSE (1. UND 2. SEMESTER) – PRAKTISCHE
INFORMATIK
• Begriffe und Konzepte der Informatik verstehen und Methoden und
Arbeitsweisen anwenden können
• Algorithmen erklären, entwerfen, darstellen und in einer Programmiersprache
implementieren können
• Grundprinzipien von Automaten, Algorithmen, Datenstrukturen und
Programmen erklären können
UNTERRICHTS KONZEPT
• Dauer: 2 Doppelstunden
• Zielgruppe: 5 Klasse AHS
• Lernziele
• Verstehen der Grundkonzepte der Programmierung
• Praktisches Anwenden dieser mittels Python
PROGRAMMIEREN
mit PYTHON
Übersicht
• Grundbegriffe
• Formale und natürliche Sprachen
• Die Programmiersprache Python
• Ein erstes Programm
Grundbegriffe
• Was ist ein Algorithmus?
• Was ist eine Datenstruktur?
• Was ist Programmieren?
• Und was ist ein Programm?
Was ist ein Algorithmus?
Ein Algorithmus ist eine detaillierte und explizite
Handlungsvorschrift zum schrittweisen Lösen eines
bestimmten Problems.
Eigenschaften von Algorithmen
Determinismus
• Ein Schritt folgt auf den nächsten
• Reihenfolge immer absolut klar
Effektivität
• Ein Schritt ist eine möglichst einfache Grundaktion
Verständlichkeit
• Ein Schritt muss genau genug angegeben werden, um ihn
auszuführen
Beispiele für Algorithmen
Beispiele aus dem täglichen Leben
• Spaghetti kochen
• Einkaufen in einem Supermarkt
• Abheben von Geld bei einem Bankomaten
• Einen IKEA-Tisch zusammenbauen
Aufgabe Algorithmus
Stell dir ein Essen vor, das du selbst gerne kochst.
Beschreibe algorithmisch den Ablauf. Beginnend
mit den Zutaten bist zum fertigen Rezept.
Was ist eine Datenstruktur?
• Abstraktes Objekt zur Speicherung von Daten
• Datenstrukturen werden von Algorithmen benötigt
• Beispiele:
• Zahlen, Zeichen
• Listen, Matrizen, Graphen, Mengen, …
• Reale Objekte: Buch, Telefon, Tastatur, ...
• Sollen dem Algorithmus angepasst sein
Was ist ein Programm?
• Ein Programm ist eine Abfolge von Anweisungen, die
festlegen, wie ein Problem zu lösen ist. Man kann
Anweisungen nach ihrer Funktion gruppieren:
• Eingabe (das Programm besetzt Variablen mit Daten
von der Platte, dem Netz, der Benutzer)
• Verarbeitung (Rechnen…)
• Ausgabe
Was ist Programmieren?
• Umsetzen von Algorithmen und
• Datenstrukturen in ein Computerprogramm
• Dazu ist eine Programmiersprache nötig
• Programmierer schreibt Quelltext (Code):
• Gewöhnlicher, von Menschen lesbarer Text
• Wird sofort ausgeführt oder in Dateien abgespeichert
• Enthalt Anweisungen an die Programmiersprache
Warum programmieren?
• Probleme zu formulieren, kreativ über Lösungen
nachzudenken
• Eine Lösung klar und genau zu beschreiben
• Programmieren lernen ist eine hervorragende
Gelegenheit um Problemlösungs-Fertigkeiten zu
entwickeln und zu üben
Syntax
•
Grammatik einer Programmiersprache
•
Regeln, wie ein Programm aufgebaut ist
•
Programmiersprache ähnlich der natürlichen Sprache
•
Korrekte Syntax: ”Der Lehrer spricht über Syntax.”
•
Syntaxfehler: ”Syntax spricht Lehrer über.”
•
Syntaxfehler in Programmiersprache:
•
•
•
Vergessen eines Symbols
Vertauschen von Symbolen
Zu viele Symbole aufgeschrieben
Semantik
•
Bedeutung eines Programms (oder Satzes)
•
Ziel/Zweck eines Programms?
•
”Der Lehrer spricht über Semantik”
•
Semantische Fehler
•
Syntax ok, aber:
•
•
”Eine Katze ist blau”?!
”Die Erde ist das Zentrum des Universums”?!
•
In Programmen oft nicht so einfach ersichtlich
•
Programmiersprache kann nur selten warnen
Die Programmiersprache Python
Warum Python?
• Einfacher Einstieg
• Intuitiver und lesbarer Programmcode
• Trotzdem sehr mächtig
• Unterstützt alle wichtigen Programmiermodelle:
• strukturiert, objektorientiert, funktional
• Sehr verbreitet im akademischen Umfeld, in Unternehmen,
Hobby,…
Warum Python?
•
Python ist Open Source
•
Gratis herunterladbar
•
Auch frei im Sinn von ”für beliebige Zwecke verwendbar und veränderbar”
•
Für jedes moderne Betriebssystem verfügbar
• Windows, Linux, Mac, …
•
Viele bekannte Dienste nutzen Python:
• YouTube, Instagram, Pinterest, Dropbox, Reddit, …
•
Name: Monty Python, nicht die Schlange
Installation von Python - Windows
•
Betriebssystemabhängig
•
Wir verwenden Python 3
•
Für uns am besten passend: WinPython
•
http://winpython.github.io/
•
”Downloads” → WinPython-64bit-3.4.4.6.exe
•
Für sehr alte Notebooks/Netbooks: 32bit-Version
•
Installation Windows-typisch (OK, ”Weiter”, …)
•
Mit Explorer in den Installationsordner gehen:
•
•
WinPython Control Panel.exe ausfuhren
Advanced → Register Distributionon 3 (nicht 2)!
Genug der Theorie… lasst uns
programmieren!
Ein erstes Programm – Hallo Welt
Aufgabe:
Gib folgendes am Bildschirm aus: Hallo, Welt!
Code:
print('Hallo Welt!')
Ausgabe: Hallo Welt!
Ein erste Spiel - Geisterspiel
In jeder Runde des Spieles steht man vor drei Türen.
Hinter einer dieser Türen versteckt sich ein gefährlicher
Geist. Ziel des Spieles ist es diesem Geist zu entgehen.
Errät man eine Türe ohne Geist, bekommt man einen
Punkt und man kann weiterspielen. Das Spiel wiederholt
sich so lange, bis man sich für die Tür mit dem Geist
entscheidet.
Aufgabenstellung - Algorithmus
Beschreibe die einzelnen Schritte des Spieles mit
deinen eigenen Worten. Gehe Schritt für Schritt
des Spiels ganz genau durch.