Grundlagen der Programmierung

Werbung
Grundlagen der
Programmierung
Dr. Cătălin Rusu
Workload (in Stunden):
Vorlesung: 2
Seminar/Übung: 2 + 2
URL: http://www.cs.ubbcluj.ro/~rusu
Email: [email protected]
Kursinhalt
1. Überblick, grundlegende Sprachelemente
2. Phasen eines Softwareprojekts
3. Algorithmus
4. Wie funktioniert Python
Kursinhalt
1. Software Entwicklung
2. Prozedurale Programmierung
3. Modulare Programmierung
4. Objektorientierte Programmierung
5. Softwarearchitektur
6. Vereinheitlichte Modellierungssprache (UML)
7. Software testing
8. Rekursive Programmierung
9. Komplexitätstheorie
10. Suchalgorithmen
11. Sortieralgorithmen
12. Divide-et-Impera
13. Backtracking
Prüfungsform:
Klausur (40%)
Lab (30%)
Praktische Prüfung (30%)
Minimale Leistungsstandards:
K,P,L >= 5
Lecture 1
●
Was ist Programmierung
●
Python. Grundlegende Sprachelemente
●
Feature Driven Development
Was ist Programmierung
Hardware & Software
Hardware: computers/multi-platform?
Software
Programmiersprache
Python
Python Shell
Python standard library: Datentypen, Funktionen
Der Computer
Memory:
RAM
Festplatte
CPU:
ALU
Control Unit
I/O Unit:
Tastatur, Bildschirm
Andere Systeme
Daten
Digitale Repräsentation
von Information
●
Strukturierte
●
Semistrukturierte
●
Unstrukturierte
Datenverarbeitung?
Python
eine neue Programmiersprache, die
●
●
Einsteigerfreundlich und leicht zu lernen ist,
Viele Möglichkeiten bietet ohne unübersichtlich zu
werden,
●
Mehr als ein Programmierparadigma unterstützt,
●
Mit wenigen Keywords auskommt.
Python ist
leicht zu lernen
●
ist meist wohl strukturiert
●
intuitiv
●
gut lesbar
Python ist
eine Interpretersprache
●
mit interaktiver Shell
●
erzeugt Python-Bytecode
●
nutzt Stackbasierte VM
●
gut dokumentiert!
http://xkcd.com/303/
Python ist
eine moderne Sprache
●
Objektorientiert
●
Skalierbar
●
OS unabhängig
●
Reich an Libraries
●
Erweiterbar
http://xkcd.com/138/
Python
Ein Mantra
●
Beautiful is better than ugly
●
Explicit is better than implicit
●
Simple is better than complex
●
Flat is better than nested
●
Sparse is better than dense
●
Readability counts
Werkzeuge
Python(x,y): Softwaresuite mit allen Werkzeugen
IDLE:  Python Interpreter Shell
Eclipse + PyDev:  Integrierte Entwicklungsumgebung
Python Grundlagen
>>> print ("Hallo Welt!")
Hallo Welt!
>>>
>>> a = input ("a: ")
a: 4
>>> b = input ("b: ")
b: 6
>>> c = int (a) + int (b)
>>> print (c)
10
>>>
Python Grundlagen
Eigene Syntaxelemente
●
●
●
Kommentare: beginnen mit einem
Doppelkreuz-Zeichen #
Name: erlaubt sind die Buchstaben A - Z und a
- z, die Zahlen 0 - 9, sowie der Unterstrich "_".
Literale: direkte Darstellung der Werte von
Basistypen
>>> STRING = "# Dies ist kein Kommentar."
>>>
Datenmodell
Data abstraction: alle Daten sind Objekte
Ein Objekt:
Zustand
Verhalten
Identität
unveränderlichen gegen veränderlichen Objekte
Grund-Datentypen (Zahlen, Strings, Tupel)
Liste,ADTs (Abstrakter Datentyp)
Grund-Datentypen
Integer
>>> type(1)
<type 'int'>
(sehr) lange Integer
>>> type(1L)
<type 'long'>
Gleitkommazahlen
>>> type(1.0)
<type 'float'>
Komplexe Zahlen
>>> type(1 + 2j)
<type 'complex'>
Standardoperationen
Addition +
Subtraction Division /
Integerdivision //
Multiplikation *
Expotentieren **
  Modulo %
Built-in Funktionen
 round, pow, etc.
Numersche Operationen
Operation Abkürzung
x=x+y
x += y
x=x-y
x -= y
x=x*y
x *= y
x=x/y
x /= y
x=x%y
x %= y
x = x**y
x **= y
x = x//y
x //= y
Vergleichsoperation
x == y
x != y
x<y
x <= y
x>y
x >= y
Strings
Escape-Sequenz Erklärung
String
str1 = "abc"
str2 = 'abc'
str3 = """
abc
"""
str4 = ("abc"
"def")
\a erzeugt Signalton
\b Backspace
\f Seitenvorschub
\n Linefeed
\r Carriage Return
\t horizonal Tab
\v vertikal Tab
\" \' \\ Escaping " ' \
Formatierung mit Strings
Syntax
"...%n...%m..." %
(Wert1, Wert2)
 Beispiele
>>> a = 'H'
>>> b = 'ello World'
>>> "%c%s" % (a,b)
'Hello World'
Format
d, i
f
g, G
u
x
o
e, E
c
s, r
%
Erklärung
Integer mit Vorzeichen
Float (Dezimaldarstellung)
Float (wiss. mit Exponent)
Integer ohne Vorzeichen
Hexzahl ohne Vorzeichen
Oktalzahl ohne Vorzeichen
Float (Exponentendarst.)
Zeichen (Länge 1)
String
Prozentzeichen
Ausdrücke und Variabilen
Variabile: abstrakter Behälter für eine Größe, welche im
Verlauf eines Rechenprozesses auftritt
Name
Adresse
●
Ausdrück: eine Kombination von Operanden (Werten,
Variablen) und Operatoren.
>>> 2*3-4
2
>>> 2*(3-4)
-2
Anweisungen
Programm: eine Abfolge von Anweisungen. Ein
Programm ist dabei aus Anweisungsblöcken
aufgebaut
Zuweisung
die Verbindung zwischen einem Namen und
dem Wert
>>> x = 1
>>>
>>> x = x + 2
>>>
Die Katze auf der Terrasse
Mit Python-Objekten ist es wie mir der Katze,
die du irgendwann schlafend auf deiner
Terrasse vorfindest. Ganz wie ein PythonObjekt kann dir die Katze nicht sagen, wie sie
heißt – es ist ihr auch ganz egal. Um ihren
Namen herauszufinden, wirst du wohl deine
Nachbarn fragen müssen, und du solltest nicht
überrascht sein, wenn du herausbekommst,
dass die Katze viele Namen hat.
Rollen in der Software Engineerings
Der Entwickler/Tester/Architekt
Der Stakeholder
Der Nutzer
Stakeholder
Einzelpersonen und Organisationen
• die aktiv an einem Projekt beteiligt sind.
• deren Interessen als Folge der Projektdurchführung
oder des Projektabschlusses positiv oder negativ
beeinflusst werden können.
• die das Projekt und seine Ergebnisse beeinflussen
Die Phasen eines Softwareprojekts
Softwaretechnik: systematische Verwendung
von Prinzipien, Methoden und Werkzeugen für
die arbeitsteilige, ingenieurmäßige Entwicklung
und Anwendung von umfangreichen
Softwaresystemen
Feature-driven development
Die Phasen eines Softwareprojekts
Problemstellung. Idee
Ein Lehrer braucht ein programm für alle
Studenten, die Rationale Zahlen lernen
möchten.
Anforderungs (was?)
Genaue Festlegung des Leistungsumfanges des
geplanten Systems
Umsetzung der Anforderungen in ein Modell, welches
die künftige Funktionalität des zu entwickelnden
Produktes vollständig beschreibt
Die Phasen eines Softwareprojekts
Problemstellung. Idee
Ein Lehrer braucht ein programm für alle
Studenten, die Rationale Zahlen lernen
möchten.
Anforderungs (was?)
Genaue Festlegung des Leistungsumfanges des
geplanten Systems
Umsetzung der Anforderungen in ein Modell, welches
die künftige Funktionalität des zu entwickelnden
Produktes vollständig beschreibt
Probleme
●
Kunden wissen nicht was sie wirklich wollen.
●
Kunden benutzen ihre eigene Fachsprache.
●
●
●
●
Verschiedene Stakeholder können widersprüchliche
Anforderungen haben.
Politische und organisatorische Faktoren können
Anforderungenbeeinflussen.
Anforderungen ändern sich während der Analyse und
Entwicklung.
Neue Stakeholder mischen sich ein
Anforderungs
Vollständig
Alle Anforderungen des Kunden müssen explizit
beschrieben sein, es darf keine impliziten
Annahmen des Kunden über das zu
entwickelnde System geben.
Atomar
Es darf nur eine Anforderung pro Abschnitt oder
Satz beschrieben sein.
Anforderungs
Identifizierbar
Jede Anforderung muss eindeutig identifizierbar sein
Nachprüfbar
Die Anforderungen sollten mit Abnahmekriterien verknüpft
werden, damit bei der Abnahme geprüft werden kann, ob
die Anforderungen erfüllt wurden.
Konsistent
Die definierten Anforderungen sind untereinander
widerspruchsfrei.
Features
Die Features werden nach dem einfachen
Schema <Aktion> <Ergebnis> <Objekt>
aufgeschrieben (z.B. „Berechne Gesamtsumme
der Verkäufe“).
Ein Feature darf maximal wenige Stunden zu
seiner Realisierung benötigen.
Features
Rechner (Feature-Liste)
F1. Eine Zahl einfügen
F2. Rechner löschen
F3. Die letzte Änderung rückgängig machen
Feature Driven Development
Erstelle eine Feature-Liste
Plane jede Iteration
Für jeden Iteration:
Entwurf je Feature
Konstruiere je Feature
Ein Beispiel - Rechner (die erste
Iteration)
Interaktionsszenario (running scenario)
Nutzer
a
b
0
1/2
c
d
1/2
2/3
e
f
5/6
1/6
g
h
i
Programm
1
-6/6
0
Erklärung
Gesamt
Zahl einfügen
Gesamt
Zahl einfügen
Gesamt
Zahl einfügen
Gesamt
Zahl einfügen
Gesamt
Tasks
Eine Aufgabe für jede Operation (T1,T2)
Eine Aufgabe für die Benutzerinteraktion (T4)
Eine Aufgabe für jede Schnittstellenfunktion (T3)
Aufgabenabhängigkeit : T4->T3->T2->T1
T1. Berechne den Größten gemeinsamen Teiler
T2. Addition zweier rationaler Zahlen (c,e,g,i)
T3. Implementiere den Rechner: init, add, total
T4. Implementiere eine Benutzerschnittstelle
T1 - ggT berechnen
Testfall
Ein Testfall ist gegeben durch eine Folge von
Eingabewerten, die für ein bestimmtes Testobjekt unter
definierten Randbedingungen eine zugehörige Folge von
Sollreaktionen erzeugt.
Input: a, b
c=ggT(a,b)
23
1
24
2
64
2
02
2
20
2
24 9
3
-2 0
Fehler
0 -2
Fehler
If - anweisung
While - Schleife
References
1. The Python language reference.
http://docs.python.org/py3k/reference/index. html
2. The Python standard library.
http://docs.python.org/py3k/library/index.html
3. The Python tutorial.
http://docs.python.org/tutorial/index.html
Herunterladen