2 Vorkurs Programmierung. Übungs-Nachlese. Übungs-Nachlese. Kontrollstrukturen, Prozeduren, Methoden und Funktionen

Größe: px
Ab Seite anzeigen:

Download "2 Vorkurs Programmierung. Übungs-Nachlese. Übungs-Nachlese. Kontrollstrukturen, Prozeduren, Methoden und Funktionen"

Transkript

1 Kontrollstrukturen, Prozeduren, Methoden und Funktionen Prof. Dr. Detlef Krömker Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik (12) Übungs-Nachlese Aufgabe 1 Kleine Wiederholung zu Zugriffsrechten: rwx rwx rwx Gefragt war: Alle Rechte für den Besitzer, wechseln für die Gruppe, keine Rechte für den Rest: rwx--x--- chmod 710 Test 2 Übungs-Nachlese Aufgabe 2 import random, sys, socket, time # Erzeugt Zufallszahl zwischen 0 und 100 modulo 3 n = random.randint(0,100) % 3 if n == 0: # Welchen Zeichensatz benutzt das Dateisystem? if sys.getfilesystemencoding() == "mbcs": print "Vermutlich Windows" # Neue Abfrage auf UTF-8 elif sys.getfilesystemencoding() == "utf-8": print "Vermutlich Mac oder aktuelles Linux" # Irgendwas anderes else: print "Aelteres Linux oder Unix" elif n == 1: # Holt die IP-Adresse zum Rechnernamen print "IP-Adresse " + socket.gethostbyname(socket.gethostname()) elif n == 2: # Gibt die aktuelle Uhrzeit aus print "Es ist " + time.asctime(time.gmtime(time.time())) 3 1

2 Übungs-Nachlese Aufgabe 3 - X wurde mit dem Wert 5 initialisiert. Der Ausdruck X**5*3+4<<1 wird in folgender Reihenfolge ausgewertet: ((((-X)**5)*3)+4)<<1. Der Wert ist Da es sich mit += um einen Zuweisungsoperator handelt, wird der Wert dieses Ausdruckes zum Anfangswert 5 addiert und die richtige Lösung ist Der Bezeichnerlambda ist nicht zulässig, weil es sich um ein reserviertes Wort handelt. Ebenfalls unzulässig ist 4.operator, weil er nicht mit einem Buchstaben oder Unterstrich beginnt und mit dem Punkt ein unerlaubtes Zeichen enthält. while ist zwar ein Schlüsselwort, mit dem Unterstrich am Schluss allerdings nicht mehr und damit erlaubt. hei_d30 ist ebenfalls erlaubt. 4 Übungs-Nachlese Aufgabe 3 Die Ausgabe lautet Hallo, dies ist ein Test Das Zeichen \n sorgt für einen Zeilenumbruch; da der String in dreifache Anführungszeichen gesetzt ist, würde der normale Zeilenumbruch dazu führen, dass er ebenfalls in dem String ausgewertet wird. Durch den Backslash allerdings wird Python angewiesen, den Zeilenumbruch zu ignorieren. 5 Übungs-Nachlese Integerzahlen können in Python keine beliebigen Werte annehmen. Sie sind beschränkt auf den Wertebereich Wird dieser verlassen, findet eine implizite Typkonvertierung zum Typ long statt. Ganze Zahlen vom Typ long können in Python so groß werden, wie mit dem verfügbaren Speicherplatz dargestellt werden können. Jede Integerzahl kann in ein Float konvertiert werden. Zahlen vom Typ long können in float konvertiert werden; dies ist kein Syntaxfehler. Allerdings ist zu beachten, dass es zu erheblichen Rundungsfehlern kommen kann, da der Wertebereich von float geringer ist als der von long. 6 2

3 Übungs-Nachlese Aufgabe 4 Für die Eingabe haben wir die Methoden input() und raw_input() kennen gelernt. raw_input() liefert Strings -> float(string) Bei Annahme, es werden syntaktisch korrekte Float-Zahlen eingegeben, kann auch input() verwendet werden 7 Übungs-Nachlese Aufgabe 4 x = input() y = input() print (x**2+43*x) / (2.5*x+x**0.5) print ((4*x**2 + x**3)**2)**0.5 print (4*x**2 + 2*y + 2) / (x / y / 3.0-5) 8 Rückblick Wir haben uns mit dem Prinzip der Variablen unter Python beschäftigt und uns angesehen, wie man einer Variablen Werte zuweist. Wir haben uns mit Operatoren und Ausdrücken in Python beschäftigt Wir haben die elementaren numerischen Datentypen und Strings kennen gelernt Bislang kannten wir nur Batch-Programmierung mit linearem Ablauf. Jetzt wollen wir lernen, wie man verzweigen, wiederholen und modularisieren kann. 9 3

4 Lernziele Verzweigungen und die unterschiedlichen Schleifen in Python kennen lernen Verstehen, wie Module in Python funktionieren, und wie man Funktionen erstellt 10 Kontrollstrukturen Verzweigungen bilden zusammen mit den Schleifen die Kontrollstrukturen moderner Programmiersprachen. In allen imperativen und objektorientierten Sprachen sind sie in unterschiedlichen Ausprägungen vorhanden. Leistungsfähige Schleifenkonstrukte zusammen mit Unterprogrammmethoden sind essentielle Konstituenten der strukturierten Programmierung (dritte Programmiersprachen- Generation) aber auch der Objektorientierten Programmierung. 11 Verzweigungen Eine Wertabhängige Fallunterscheidung ist sowohl in der Mathematik als auch in der Informatik elementar für jede Art von Algorithmen. Aufgrund einer Bedingung wird der Programmfluss (die Abfolge der Ausführung der Befehle) verzweigt. Wir unterscheiden die einfache (bedingte) Verzweigung die den Programmfluss in zwei Pfade auftrennt und eine mehrfache Verzweigung. Realisiert ist dies in den meisten Programmiersprachen sehr ähnlich, ungefähr folgendermaßen: if <Bedingung> then <Aktionsfolge> else <AlternativeAktionsfolge> endif 12 4

5 Realisierung in Python if else elif if expression: suite elif expression: suite elif expression: suite... else: suite indent 4 Blanks (Leerzeichen) oder 1 Tab(ulator) besser nicht verwenden expression ist hierbei ein Ausdruck, der sich zu einem booleschen Wert auswerten lässt, suite kennzeichnet eine beliebige Anweisungsfolge. 13 Die mehrfache Verzweigung (Prinzip) case <avariable> avalue1: <AktionsfolgeA> avalue2: <AktikonsfolgeB>... otherwise: <Aktionsfolge> endcase Nicht in Python, siehe 14 Iterative Grundstrukturen (1) Die Iteration (von lateinisch iterare, "wiederholen"; engl. iteration) ist ein grundlegender Lösungsansatz sowohl in der Mathematik als auch der Informatik mit zwei verschiedenen Ausprägungen: 1. Iteration (in Mathematik und Informatik) ist eine Methode, sich der Lösung eines Rechenproblems schrittweise, aber zielgerichtet anzunähern. Sie besteht in der wiederholten Anwendung desselben Rechenverfahrens. Meistens iteriert man mit Rückkopplung: Die Ergebnisse eines Iterationsschrittes (oder alle bisher erzielten Ergebnisse) werden als Ausgangswerte des jeweils nächsten Schrittes genommen - bis das Ergebnis zufrieden stellt. 15 5

6 Iteration (Fortsetzung) Dazu muss man sicher sein (beweisen!), dass die Iterationsfolge konvergiert und dass der Grenzwert mit der gesuchten Lösung übereinstimmt. Die Geschwindigkeit der Konvergenz ist ein Maß dafür, wie brauchbar die Iterationsmethode ist. Grundsätzlich wird ein iteratives Lösungsverfahren dann eingesetzt, wenn das Ergebnis nicht geschlossen berechenbar ist (zum Beispiel Gleichungen mit transzendenten Funktionen: sin x + cos x = x, Bestimmung der Nullstellen ab dem Polynomgrad 5, etc.). Häufig ist eine gute Näherung schon befriedigend. 16 Ein klassisches Beispiel, die Regula Falsi: Nullstellen (Wurzeln) eines Polynoms finden: 1. Schritt: Durch schätzen oder probieren ermittelt man ein Intervall (x 1, x 2 ) wo eine Nullstelle von y = f(x) ungefähr liegen könnte, z.b. dadurch, dass f(x1)>0, f(x2)<0 2. Einen besseren Wert x 3 berechnen wir mit der Regula Falsi, die als Näherung ein gerades Kurvenstück annimmt: x2 x1 x3 = x2+ f ( x2) f ( x ) f ( x ) , 4. i. Diesen 2. Schritt wiederholen wir jeweils mit x i, und x i-1, bis uns das Ergebnis genau genug ist. 17 Iterative Grundstrukturen (2) 2. In der Informatik wird auch von Iteration gesprochen, wenn ein schrittweiser Zugriff auf Einzelelemente eines zusammengesetzten Datentyps (Sammlungen), z.b. einen String, erfolgt. Z.B wird wiederholt auf einen String mit veränderten Indexwert zugegriffen: in einem Sting otto sollen alle Kleinbuchstaben durch Großbuchstaben ersetzt werden: OTTO. Eine besondere Bedeutung hat dieses Vorgehen bei Sammlungen (engl. collections), bei Strukturen wie Feldern (engl. arrays), Listen, Schlüssel-Wert-Paaren (engl. Maps, Hashes, Dictionaries) oder Mengen (engl. Sets), die wir allerdings detailliert erst morgen kennen lernen werden. 18 6

7 Schleifen: Realisierungsformen der Iteration In Programmiersprachen werden iterative Lösungen beider Art durch Schleifen realisiert: Eine Schleife ist eine Kontrollstruktur in imperativen Programmiersprachen. Sie wiederholt einen Teil des Codes den so genannten Schleifenrumpf oder Schleifenkörper so lange, bis eine Abbruchbedingung eintritt. Schleifen, die ihre Abbruchbedingung niemals erreichen oder Schleifen, die keine Abbruchbedingungen haben, nennen wir Endlosschleifen. 19 Endlosschleife kann nur von außen unterbrochen werden durch ein Zurücksetzen (engl. reset), durch eine Unterbrechung (engl. interrupt), durch Ausnahmen (engl. exeptions), Abschalten des Gerätes oder ähnliches. Oft, aber nicht immer, ist eine Endlosschleife ein Programmierfehler, weil das Programm nicht normal beendet werden kann. Ist die Aufgabe des Programms jedoch z.b. eine Überwachung und Reaktion auf einen externen (gemeldet durch einen Interrupt) oder internen Fehlerzustand (gemeldet durch eine Exception), so kann dieses Verhalten ggf. gewollt sein! Grundsätzlich aber VORSICHT! 20 Schleifenarten die kopfgesteuerte oder vorprüfende Schleife, bei der erst die Abbruchbedingung geprüft wird, bevor der Schleifenrumpf durchlaufen wird (meist durch das Schlüsselwort WHILE (= solange-bis) angezeigt. die fußgesteuerte oder nachprüfende Schleife, bei der nach dem Durchlauf des Schleifenrumpfes die Abbruchbedingung überprüft wird, z.b. durch ein Konstrukt REPEAT-UNTIL (= wiederholen-bis). die Zählschleife, eine Sonderform der kopfgesteuerten Schleife, meist als FOR (= für ) -Schleife implementiert. 21 7

8 Schleifen in Programmiersprachen Bis auf die rein funktionalen Programmiersprachen (diese brauchen keine Schleifen) realisieren alle modernen Programmiersprachen eine Auswahl der hier dargestellten Grundstrukturen. Sie unterscheiden sich in den benutzten Schlüsselwörtern, der Art der Klammerung der Programmblöcke ((), {}, begin... end, etc.) und des Typs der Laufvariablen sowie deren Inkrementierung. Mit Python werden wir hier eine sehr leistungsfähige Variante kennen lernen. 22 For-Schleife Mit der For-Schleife kann man durch eine bestimmte, vorgegebene Menge iterieren. Syntax: for_stmt ::= "for" target list "in" expression_list ":" suite ["else" ":" suite] target_list ::= target ("," target)* [","] Target ::= identifier "(" target_list ")" "[" target_list "]" attributeref subscription slicing expression_list ::= expression ( "," expression )* [","] 23 Die Mächtigkeit der Python for-schleife rührt daher, dass die Sequenz S durch einen beliebigen Sequenzdatentyp (insbesondere dann macht die for-schleife Sinn) repräsentiert wird, also entweder ein String, eine Liste, ein Tupel oder eine Menge (set). Man kann als expression also eine beliebige Variable eines solchen Typs angeben, dann wird über alle Elemente iteriert. 24 8

9 Die Mächtigkeit der Python for-schleife (2) Es können aber auch Teilbereiche angegeben werden, durch Indizierung oder wichtiger durch Teilbereichsbildung (Slicing), die zusammenhängende Bereiche einer Sequenz extrahiert: Die Bereichsgrenzen sind mit 0 und der Sequenzlänge vorbelegt: S[1:3] geht von Index 1 bis ausschließlich 3 (also 2) S[1:] geht vom Index 1 bis zum Ende S[:-1] nimmt alles bis auf das letzte Element (negative Indizes zählen vom Ende) 25 Die Mächtigkeit der Python for-schleife (3) Erweiterte Teilbereichsbildung S[i:j:k] S[::2] ergibt jedes zweite Element der Sequenz S von 0 bis zum Ende S[::-1] ergibt die Umkehrung der Sequenz S[4:1:-1] holt Elemente von rechts nach links ab Postion 4 (inklusive) bis Position 1 (exklusive) ab. 26 Beispiele >>> for x in "Ein Text": print x E i n T e x t >>> for x in "Ein Text"[::-1]: print x t x e T n i E 27 9

10 In Zusammenhang mit Listen Im Zusammenhang mit Listen sind gerade für for-schleifen sogenannte Generator Ausdrücke (und List-Comprehension-Ausdrücke) und die eingebaute Funktion range ([start,]stop [,step]) interessant. range liefert eine Liste von aufeinander folgenden Integern zwischen start und stop. Mit nur einem Parameter (stop) ergeben sich die Zahlen 0...stop-1. step ist optional und ist die Schrittweite 28 Beispiele: >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(3,10) [3, 4, 5, 6, 7, 8, 9] >>> range(3,10,2) [3, 5, 7, 9] 29 While-Schleife Die while-schleife prüft zuerst eine Bedingung und durchläuft den Anweisungsblock, wenn sie erfüllt ist: while_stmt ::= "while" expression ":" suite ["else" ":" suite] Beispiel: Eingabe = "" while Eingabe!= "Ende": Eingabe = raw_input() 30 10

11 break & continue Um eine Schleife (while oder for) ohne Erreichen der Bedingung zu beenden, verwendet man die break-anweisung. Um in die nächste Schleifeniteration zu springen (wobei der Rest des Schleifenrumpfes übersprungen wird) verwendet man die continue-anweisung. 31 Beispiele Eingabe = "" while Eingabe!= "Ende": Eingabe = raw_input() if Eingabe == "Stop": break Eingabe = "" while Eingabe!= "Ende": Eingabe = raw_input() if Eingabe == "Springe": continue print "Eingabe war", Eingabe 32 Prozeduren Funktionen Methoden Grundsätzliche Ziele Seit der Frühzeit des Computings werden Unterprogramme (engl. subroutines) eingesetzt, um verschiedene Ziele zu erreichen: eine bessere Strukturierung von Programmen, zur Abstraktion (was gemacht wird muss klar sein, aber nicht wie!) zur Modularisierung, bei mehrfacher Verwendung zum Einsparen von (Programm-) Speicherplatz, also mit dem Ziel, den Code möglichst kompakt zu halten, Ziel: Wiederverwendung von Codeteilen

12 Die Parameterübergabe Die Argumente von Unterprogrammen nennt man Parameter In der Unterprogrammdefinition nennt man sie formale Parameter (Platzhalter), denn sie werden beim Aufruf des Unterprogramms durch aktuelle Parameter ersetzt. Ggf. ist auch die Rückgabe von Werten über diese Parameter möglich. Der Compiler/Interpreter vergleicht und überprüft bei der Parameterübergabe normalerweise Anzahl und Typ des aktuellen und des formalen Parametersatzes. Wenn diese nicht übereinstimmen, wird eine Fehlermeldung generiert. 34 Funktionen versus Prozeduren Funktionen erzeugen (errechnen) einen Wert, der an das rufende Programm als Wert der Funktion zurückgegeben wird, wie in der Mathematik üblich, z.b. sin (x). Damit kann eine Funktion u.a. in Ausdrücken als Entität auftreten: a = 1-sin(x). Funktionen werden typischerweise in Bibliotheken (Modulen) thematisch gebündelt. Prozeduren führen eine Aktion aus. Hierdurch können entweder interne Variablen verändert werden (eine Zustandsänderung erwirkt werden) oder über Referenzparameter Veränderungen an Variablen im rufenden Programm bewirkt werden. 35 Funktionen in Python Die Definition Funktionen, Prozeduren und Methoden werden mit der def-anweisung definiert. >>> def add(x,y): return x+y >>> Achtung: Der Funktionsrumpf muss eingerückt (indent) werden (macht IDLE automatisch); das Ende der Funktionsdefinition wird durch Rücknehmen der Einrückung (dedent) angegeben (macht IDLE bei Eingabe einer Leerzeile auch automatisch) 36 12

13 Aufruf einer Funktion ihrem Namen wird ein Tupel von Argumenten unmittelbar nachgestellt, wie in >>> add (3,4) 7 Die Reihenfolge und Anzahl von Argumenten (Parametern) müssen mit jenen der Funktionsdefinition übereinstimmen. Anderenfalls wird eine TypeError-Ausnahme ausgelöst. 37 return -Anweisung gibt einen Wert aus der Funktion zurück. Wird kein Wert angegeben oder wird die return -Anweisung weggelassen, so wird das Objekt None zurückgegeben. Um mehrere Werte zurückzugeben, setzt man diese in ein Tupel: 38 >>> def factor(a): d = 2 while (d < (a/2)): if ((a/d)*d == a): return ((a/d), d) d = d + 1 return (a, 1) >>> factor(8) (4, 2) >>> factor(9) (3, 3) >>> factor(65) (13, 5) >>> factor(64) (32, 2) 39 13

14 Rekursive Grundstrukturen Rekursion, auch Rekurrenz oder Rekursivität, bedeutet Selbstbezüglichkeit (von lateinisch recurrere = zurücklaufen; engl. recursion). tritt immer dann auf, wenn etwas auf sich selbst verweist. muss nicht immer direkt auf sich selbst verweisen (direkte Rekursion), eine Rekursion kann auch über mehrere Zwischenschritte entstehen. Rekursion kann dazu führen, dass merkwürdige Schleifen entstehen. So ist z.b. der Satz Dieser Satz ist unwahr rekursiv, da er von sich selber spricht. Eine etwas subtilere Form der Rekursion (indirekte Rekursion) kann auftreten, wenn zwei Dinge gegenseitig aufeinander verweisen. 40 Sprachliche Beispiele Der folgende Satz ist wahr. - Der vorhergehende Satz ist nicht wahr.. Um Rekursion zu verstehen, muss man erst einmal Rekursion verstehen. Kürzeste Definition für Rekursion: siehe Rekursion. 41 Definition (Informatik und Mathematik) Als Rekursion bezeichnet man den Aufruf oder die Definition einer Funktion (hier wird Funktion sowohl wie in der Mathematik im Sinne von Abbildung gebraucht als auch im Sinne einer speziellen Prozedur, die einen Wert zurückgibt, siehe später) durch sich selbst. Ohne geeignete Abbruchbedingung geraten solche rückbezüglichen Aufrufe in einen so genannten infiniten Regress (umgangssprachlich auch Endlosschleife genannt)

15 Grundidee der rekursiven Definition Der Funktionswert f(n+1) einer Funktion f: N 0 N 0 ergibt sich durch Verknüpfung bereits vorher berechneter Werte f(n), f(n-1),... Falls außerdem die Funktionswerte von f für hinreichend viele Startargumente bekannt sind, kann jeder Funktionswert von f berechnet werden. Bei einer rekursiven Definition einer Funktion f ruft sich die Funktion so oft selber auf, bis ein vorgegebenes Argument (meistens 0) erreicht ist, so dass die Funktion terminiert (abbricht). Vorgehensweise in der funktionalen Programmierung (siehe PRG 2) 43 Beispiel Die Funktion sum (n) berechnet die Summe der ersten n Zahlen. also: sum (n): N 0 N 0 : sum(n) = n Anders ausgedrückt: sum(n) = sum(n-1) + n (Rekursionsschritt) Das heißt also, die Summe der ersten n Zahlen lässt sich berechnen, indem man die Summe der ersten n - 1 Zahlen berechnet und dazu die Zahl n addiert. Damit die Funktion terminiert, legt man hier für sum(0) = 0 (Rekursionsanfang) fest. 44 Beispiel (2) 0 sumn ( ) = sumn ( 1) + n fallsn= 0 (Rekursionsanfang) fallsn 1(Rekursionsschritt) sum(3) = sum(2) + 3 = sum(1) = sum(0) = =

16 Realisierungen sum_rekursiv(n) if n == 0 then return 0 else return n + sum_rekursiv (n-1) Eine iterative Lösung sieht wie folgt aus; sum_iterativ(n) summe = 0; i = 0; while i <= n summe = summe + i i = i + 1 return summe 46 Primitive Rekursion stets durch eine Iteration ersetzbar Kennzeichen: der Aufruf-Baum enthält keine Verzweigungen, das heißt er ist eigentlich eine Aufruf-Kette: das ist immer dann der Fall, wenn eine rekursive Funktion sich selbst jeweils nur einmal aufruft, insbesondere am Anfang (Head Recursion) oder nur am Ende (Tail Recursion) der Funktion. 47 Namensräume (1) Grundsätzlich soll ein Unterprogramm (eine Funktion in Python) auch der Kapselung, mindestens eine Namenskapselung, dienen.: Jedes Mal, wenn eine Funktion ausgeführt wird, wird deshalb ein neuer lokaler Namensraum erzeugt. Dieser Namensraum enthält die Namen der Funktionsparameter sowie die Namen von Variablen, denen im Rumpf der Funktion zugewiesen wird. Bei der Auflösung von Namen (z.b. wenn sie in einem Ausdruck stehen) sucht der Interpreter zunächst im lokalen Namensbereich, dann in den lokalen Bereichen aller lexikalisch umgebenen Funktionen (von innen nach außen, sofern vorhanden)

17 Namensräume (2) Wenn nichts Passendes gefunden wird, geht die Suche im globalen Namensraum weiter. Der globale Namensbereich einer Funktion besteht immer aus dem Modul, in welchem die Funktion definiert wurde. Wenn der Interpreter auch hier keine Übereinstimmung findet, führt er eine letzte Suche im eingebauten Namensraum durch. Wenn auch diese fehlschlägt, wird eine NameError-Ausnahme ausgelöst. 49 Globale Variablen >>> a = 42 >>> def foo(): a = 13 >>> foo() >>> a 42 a = 42 >>> def foo(): global a a=13 >>> foo () >>> a 13 Globale Variablen sind manchmal praktisch, können aber zu schwer durchschaubaren Fehlern und einer Fehlerverschleppung führen, also Vorsicht! (Man kann eine globale Variable vermeiden, indem man stattdessen Attribute eines globalen Objekts setzt.) 50 Module I Oft kommt man in die Situation, dass man Funktionen entwickelt hat, die man nicht nur in einem Programm braucht. Oder ein Programm ist sehr groß und umfangreich geworden, und man möchte es gerne in mehrere Dateien aufspalten, um die Übersichtlichkeit und Wartbarkeit zu wahren Hier kommen die Module ins Spiel. Sie ermöglichen es, Funktionalität in andere Dateien auszulagern und zu importieren (haben wir bereits an einigen Beispielen anhand der Klassenbibliothek gesehen) 51 17

18 Module II Ein Modul erzeugt man, indem man Code in einer Datei mit Namen modulname.py abspeichert. Das Modul kann mit der import-anweisung importiert werden: import modulname Module werden in einem bestimmten Suchpfad gesucht. Für heute reicht es zu wissen, dass das aktuelle Arbeitsverzeichnis in diesem Pfad enthalten ist. Wenn das Modul die Funktion funktion bereitstellt, kann diese wie folgt benutzt werden: modulname.funktion() 52 Module III Andere Möglichkeit, ein Modul zu importieren: from modulname import * (alle Funktionen) oder auch nur from modulname import funktion dann erscheint die Funktion / die Funktionen des Moduls im globalen Kontext. Voranstellen von modulname. ist nicht mehr nötig. Vorsicht, Namenskonflikte möglich! Machen Sie das nur, wenn Sie wissen, was Sie tun! 53 Zusammenfassung und Ausblick Wir haben grundlegende Kontrollstrukturen kennen gelernt: Verzweiungen, For-Schleifen, While-Schleifen Wir haben uns angesehen, wie man Funktionen erstellt und sie in Modulen wiederverwenden kann Als nächstes wollen wir uns noch einen genaueren Überblick verschaffen, welche Möglichkeiten die Klassenbibliothek von Python bietet und uns mit dem Programmierparadigma der objektorientierten Programmierung beschäftigen 54 18

19 Vielen Dank für Ihre Aufmerksamkeit! 55 Fragen? 56 19

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V7

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V7 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V7 Prozeduren Funktionen Methoden Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik

Mehr

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V6

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V6 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V6 Kontrollstrukturen Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik (12) Rückblick

Mehr

WS2017/ Oktober 2017

WS2017/ Oktober 2017 Einführung in die Programmierung Ronja Düffel WS2017/18 09. Oktober 2017 Rückblick Datentypen bool Zahlen (int und float) string Variablen Kontrollstrukturen Verzweigungen (if...: und if...else:) Schleifen

Mehr

WS2018/ Oktober 2018

WS2018/ Oktober 2018 Einführung in die Programmierung Ronja Düffel WS2018/19 05. Oktober 2018 Rückblick Datentypen bool Zahlen (int und float) string Variablen Kontrollstrukturen Verzweigungen (if...: und if...else:) Schleifen

Mehr

2 Vorkurs Programmierung

2 Vorkurs Programmierung Vorkurs Programmierung Aggregierte Datentypen und Klassenbibliothek von Python Prof. Dr. Detlef Krömker Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz

Mehr

Kontrollstrukturen -- Schleifen und Wiederholungen

Kontrollstrukturen -- Schleifen und Wiederholungen Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 05: Weitere Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Weitere Kontrollstrukturen Wiederholungsstrukturen (Schleifen) While-,do-,for-Schleifen

Mehr

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss Arrays FTI 41 2005-09-09 Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss z.b. Dim Werte(x) As Single. Wobei

Mehr

WS2018/ Oktober 2018

WS2018/ Oktober 2018 Einführung in die Programmierung Ronja Düffel WS2018/19 02. Oktober 2018 RBI-Account Account für das Rechnernetz der Informatik RBI-Account HRZ-Account zum Arbeiten an und auf den Rechnern des Instituts

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Kontrollstrukturen. Verzweigungen Einfache Mehrfache Wiederholungen Eine Sequenz durchlaufen Wiederhole bis Solange. Tue

Kontrollstrukturen. Verzweigungen Einfache Mehrfache Wiederholungen Eine Sequenz durchlaufen Wiederhole bis Solange. Tue Kontrollstrukturen Verzweigungen Einfache Mehrfache Wiederholungen Eine Sequenz durchlaufen Wiederhole bis Solange. Tue Einfache Verzweigung Eine Verzweigung erlaubt das bedingte Ausführen bestimmter Programm-Teile.

Mehr

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)

(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49) Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

Python 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014

Python 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014 Python 2! Vorlesung Computerlinguistische Techniken Alexander Koller! 28. Oktober 2014 Listen Sequenz von beliebigen Werten. Literale: [], [1,2,3], [ hallo, True, -5.0] Hinten an Liste anhängen: L.append(27)

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

Einfache Bedingte Ausführung

Einfache Bedingte Ausführung Kontrollstrukturen Bisher Programme mit Funktionen als einfache Folge von Befehlen Ablauf von Programmen darüber hinaus steuerbar über Bedingte Ausführung: Ausführung von Programmteilen (Befehlen oder

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Tag 3 Repetitorium Informatik (Java)

Tag 3 Repetitorium Informatik (Java) Tag 3 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Typkonvertierung

Mehr

5. Übung - Kanalkodierung/Programmierung

5. Übung - Kanalkodierung/Programmierung 5. Übung - Kanalkodierung/Programmierung Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Kanalkodierung a Folgende Kodes stehen Ihnen zur Verfügung: Kode 1: 0000000 Kode

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

3. Grundanweisungen in Java

3. Grundanweisungen in Java 3. Grundanweisungen in Java Die Grundanweisungen entsprechen den Prinzipien der strukturierten Programmierung 1. Zuweisung 2. Verzweigungen 3. Wiederholungen 4. Anweisungsfolge (Sequenz) Die Anweisungen

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Formale Beschreibung von Programmiersprachen Lexikalische Regeln Definition von Wörtern (Lexem, Token) Gruppierung von Zeichen Lexikalische Kategorien: Klassen ähnlicher

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri 2009-11-05 (Folien basieren auf dem gemeinsamen Kurs mit Stefan Thater) Übersicht Variablen Datentypen Werte Operatoren und Ausdrücke Kontrollstrukturen: if, while

Mehr

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

Funktionen. Theorie. Inhaltsverzeichnis. Programmieren mit Python Modul 4. 1 Modulübersicht 3

Funktionen. Theorie. Inhaltsverzeichnis. Programmieren mit Python Modul 4. 1 Modulübersicht 3 Programmieren mit Python Modul 4 Funktionen Theorie Inhaltsverzeichnis 1 Modulübersicht 3 2 Funktionen 3 2.1 Funktionen ohne Rückgabewert (Prozeduren)............... 3 2.2 Funktionen mit Parametern.........................

Mehr

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort then S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Variablen Datentypen Werte Ausdrücke Operatoren

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Sequenzen - Listen. Sequenzen Listen: Definition Listen: veränderliche Sequenzen Methoden Attribute Eine Liste von ganzen Zahlen

Sequenzen - Listen. Sequenzen Listen: Definition Listen: veränderliche Sequenzen Methoden Attribute Eine Liste von ganzen Zahlen Sequenzen - Listen Sequenzen Listen: Definition Listen: veränderliche Sequenzen Methoden Attribute Eine Liste von ganzen Zahlen Sequenzen Definition Eine Sequenz ist eine Datenstruktur, in der mehrere

Mehr

C++ - Einführung in die Programmiersprache Schleifen

C++ - Einführung in die Programmiersprache Schleifen C++ - Einführung in die Programmiersprache Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Schleifen Iterationsanweisungen. Wiederholung von Anweisungsblöcken.

Mehr

Algorithmik und Programmieren

Algorithmik und Programmieren Institut für Informatik Forschungsgruppe Datenbanken und Informationssysteme (DBIS) Universität Innsbruck Algorithmik und Programmieren Martin Pichl Datenbanken und Informationssysteme (DBIS) dbis.uibk.ac.at

Mehr

2 Teil 2: Nassi-Schneiderman

2 Teil 2: Nassi-Schneiderman 2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

Mehr

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration: Boolean Wertemenge: Wahrheitswerte {,}, auch {,} Deklaration: VAR present,billig,laut,gefunden : BOOLEAN; Ein-/Ausgabe: keine! Operatoren: Negation, Verneinung NOT ~ Konjunktion, logisches UND AND & Disjunktion,

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)

Mehr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen? Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante

Mehr

Einführung in die Computerlinguistik

Einführung in die Computerlinguistik Einführung in die Computerlinguistik Übung 2 Laura Kallmeyer Sommersemester 204, Heinrich-Heine-Universität Düsseldorf Offizielle Python Seite, auf der man jede Menge Dokumentation findet: http://www.python.org/

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine

Mehr

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Hallo Haskell. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :06. Hallo Haskell 1/23

Hallo Haskell. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :06. Hallo Haskell 1/23 Hallo Haskell Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 15.10.2018 07:06 Hallo Haskell 1/23 Glasgow Haskell Compiler (GHC) der Haskell-Compiler ist der GHC Sie installieren ihn

Mehr

6. Funktionen, Parameterübergabe

6. Funktionen, Parameterübergabe 6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

Hallo Haskell. (Funktionale Programmierung) Prof. Dr. Oliver Braun. Letzte Änderung: :08. Hallo Haskell 1/23

Hallo Haskell. (Funktionale Programmierung) Prof. Dr. Oliver Braun. Letzte Änderung: :08. Hallo Haskell 1/23 Hallo Haskell (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Hallo Haskell 1/23 Glasgow Haskell Compiler (GHC) der Haskell-Compiler ist der GHC Sie installieren ihn

Mehr

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen. Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration

Mehr

Schleifen in C/C++/Java

Schleifen in C/C++/Java Schleifen in C/C++/Java Alle 3 Sprachen stellen mindestens die folgenden 3 Schleifenkonstruktionen zur Verfügung. In C gibt es auch keine weiteren, C++, Java und C# haben noch weitere nützliche Varianten.

Mehr

Vorlesung Skriptsprachen Duale Hochschule Stuttgart Sommersemester Dipl.-Ing. (FH) Volker Schepper

Vorlesung Skriptsprachen Duale Hochschule Stuttgart Sommersemester Dipl.-Ing. (FH) Volker Schepper Vorlesung Skriptsprachen Duale Hochschule Stuttgart Sommersemester 2017 Dipl.-Ing. (FH) Volker Schepper 1 Kommentar Kommentare sollen/müssen unbedingt verwendet werden. Sinnvolle Kommentare verwenden.

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Programming 101. Carl Herrmann IPMB & DKFZ

Programming 101. Carl Herrmann IPMB & DKFZ Programming 101 Carl Herrmann IPMB & DKFZ Programmieren Kommandozeile Einfache Befehle Shell Skript aneinanderketten von Befehlen Schleifen Programmiersprache Komplexere Aufgaben Gemeinsamkeiten Alle Programmiersprachen

Mehr

Kapitel 3: Anweisungen

Kapitel 3: Anweisungen Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -66 Kapitel : Anweisungen Bedingte Anweisungen (Verzweigungen) Wiederholte Anweisungen (Schleifen) Abweisschleife Durchlaufschleife

Mehr

Arbeitsblätter für Algorithmierung und Strukturierung

Arbeitsblätter für Algorithmierung und Strukturierung Prof. Dr.- Ing. Ch. Wahmkow Fachbereich Maschinenbau Fachhochschule Stralsund Arbeitsblätter für Algorithmierung und Strukturierung Inhalt : Struktogramme, Beispiele und Erläuterungen - Sequenz - vollständige

Mehr

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave Fachhochschule Südwestfalen Wir geben Impulse Kontrollstrukturen und Schleifen in Octave Einführung Inhalt m-files Script-Files Function-Files Ein- Ausgabe von Variablen oder Ergebnissen For-Schleife While-Schleife

Mehr

Java Anweisungen und Ablaufsteuerung

Java Anweisungen und Ablaufsteuerung Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen

Mehr

Tag 2 Repetitorium Informatik (Java)

Tag 2 Repetitorium Informatik (Java) Tag 2 Repetitorium Informatik (Java) Dozent: Daniela Novac Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Zeichen und

Mehr

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus Algorithmen Algorithmusbegriff Klärung der Herkunft des Begriffs Formale Definition von Algorithmus Algorithmusbegriff Algorithmen sind eine der ältesten (abstrakten) Beschreibungstechniken für Abläufe.

Mehr

Python für Linguisten

Python für Linguisten Python für Linguisten Dozentin: Wiebke Petersen & Co-Dozent: Valentin Heinz 4. Foliensatz bedingte Anweisungen Input, Output Petersen & Heinz Python 1 Vergleichsoperatoren und Boolsche Werte numerische

Mehr

Teil II. Datentypen. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2017/

Teil II. Datentypen. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2017/ Teil II Datentypen T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2017/2018 25 Konzept von Teil II: Datentypen Hinweis: Die Erklärung des Konzepts im Sinne des Constructive

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

1 Funktionsaufrufe. Informatik I: Einführung in die Programmierung 4. Funktionen: Aufrufe und Definitionen. Standardfunktionen: Typen-Konversion

1 Funktionsaufrufe. Informatik I: Einführung in die Programmierung 4. Funktionen: Aufrufe und Definitionen. Standardfunktionen: Typen-Konversion 1 Funktionsaufrufe Informatik I: Einführung in die Programmierung 4. : und en Albert-Ludwigs-Universität Freiburg Bernhard Nebel 24./28. Oktober 2014 24./28. Oktober 2014 B. Nebel Info I 3 / 31 Funktionsaufrufe

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi 1. Datentypen C-Grundlagen zur Programmierung des MicroControllersystems MiCoWi Die Grafiken und Beispiele wurden dem Buch C von A bis z von Jürgen Wolf entnommen. Es werden hier die ANSI-Festlegungen

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der Java-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 3: Kontrollstrukturen Einfache Anweisungen Anweisungsblöcke Steuerung

Mehr

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr

Bash-Skripting Linux-Kurs der Unix-AG

Bash-Skripting Linux-Kurs der Unix-AG Bash-Skripting Linux-Kurs der Unix-AG Sebastian Weber 13.06.2012 Was ist ein Bash-Skript? Skript muss mit chmod +x ausführbar gemacht sein Aneinanderreihung von Befehlen normale Befehle nutzbar Sebastian

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Nochmal Typen und Objekte

Nochmal Typen und Objekte Nochmal Typen und Objekte Jedes Objekt hat Identität (id), Typ (type) und Wert. >>> b = 42 # Wert : 42 >>> type (b) >>> id(b) 158788940 >>> type ( type (b)) IN8008, Wintersemester

Mehr