Programmierkurs Aufgaben und Anleitung
|
|
|
- Michaela Abel
- vor 8 Jahren
- Abrufe
Transkript
1 Programmierkurs Aufgaben und Anleitung Lucas Mann Wiederholung Wir wiederholen kurz, wie man in Python Algorithmen schreiben und ausführen kann. 1.1 Programmstruktur Ein Algorithmus (oft auch als Funktion bezeichnet) wird folgendermaßen definiert: def mein_algorithmus(a, b): Schritt2 Dabei ist mein_algorithmus der Name des Algorithmus und a und b sind die Eingabewerte (auch Parameter genannt). Natürlich kann dein Algorithmus auch mehr (oder weniger) Eingabewerte haben. Die folgende Tabelle zeigt, wie die grundlegenden Schritte eines Algorithmus aus der Umgangssprache in Python übersetzt werden: Umgangssprache Python Eingabe: a, b. Kein extra Schritt, da in der Algorithmusdefinition enthalten (s.o.) Ausgabe: r. return r Wenn a > 2: Sonst, wenn a < 0: Sonst: if a > 2: elif a < 0: else: Wiederhole solange, wie n > 0: while n > 0: Für k im Bereich(1, n): for k in range(1, n + 1): Setze a = 0 a = 0 Erhöhe x um n x = x + n oder x += n Wende Algorithmus alg auf die Werte n und 3 an. alg(n, 3) Speichere das Ergebnis des Algorithmus alg, angewendet auf a, in r. r = alg(a) Ausgabe: Ergebnis des Algorithmus abc. return abc() 1
2 1.2 Konstanten In Python gibt es verschiedene Arten von Werten, zum Beispiel Zahlen, Wahrheitswerte und Texte. Die nächste Tabelle zeigt, wie du verschiedene Arten von Werten im Code eintippst: Werttyp Beispielwerte In Python Ganze Zahl 0, 5, 14 0, 5, -14 Reelle Zahl 3, Wahrheitswert Wahr, Falsch True, False Text Hello World "Hello World" Zeichen d d Liste [ 1, 2, Wahr, 5 ] [1, 2, True, 5] 1.3 Operatoren Operatoren berechnen einen neuen Wert aus einem oder zwei vorhandenen Werten. Bei diesen Werten kann es sich um Zahlen, Wahrheitswerte und Texte handeln, wobei abhängig vom Werttyp unterschiedliche Operatoren möglich sind. Wir fassen im Folgenden einiger dieser Operatoren zusammen: Operator In Python Beschreibung +,,,/ a+b, a-b, Grundrechenarten Ganzzahldivision a // b Wie Division, aber Nachkommastellen des Ergebnisses werden abgeschnitten Modulo a % b Berechnet a mod b Potenz a ** b Berechnet a b Minimum, Maximum min(a, b), max(a, b) Berechnet den kleineren bzw. größeren Wert zweier Zahlen; kann auch auf eine Liste angewendet werden, z.b. min(l) Betrag abs(a) Berechnet a Gleich, ungleich a == b, a!= b Überprüft, ob a und b den gleichen Wert haben Zahlvergleiche a < b, a >= b, Vergleicht die Größe zweier Zahlwerte Und, oder, nicht a and b, Verknüpft zwei Wahrheitswerte a or b, not a Listenzugehörigkeit x in l Ist Wahr, wenn x in der Liste l ist Zum Beispiel berechnet if (a > 0 and b < 0) or (a < 0 and b > 0): ob a und b verschiedene Vorzeichen haben; in diesem Fall bekommt obiger Ausdruck den Wert Wahr, sonst Falsch. 1.4 Listen Eine Liste ist eine endliche Folge von Werten, wobei die Werte innerhalb einer Liste auch verschiedene Typen haben können (in den meisten Fällen hat man aber eine Liste von lauter gleichen Typen, zum Beispiel alles Zahlen). Listen werden mit eckigen Klammern geschrieben, also zum Beispiel l1 = [1, 1, 2, 3, 5, 8] l2 = ["Hallo", True, 1, -3.2] l3 = [] # leere Liste 2
3 Die folgende Tabelle zeigt ein paar wichtige Operationen mit Listen: Umgangssprache Setze den 5-ten Eintrag der Liste l auf Wahr Setze den a-ten Eintrag der Liste l auf den Wert in k Lies den 3-ten Eintrag der Liste l und speichere ihn in r Nimm die Unterliste von l1 der Indizes im Bereich von a bis b 1 und speichere sie in l2 Nimm die Unterliste von l1 der Indizes von a bis zum Ende und speichere sie in l2 Hänge den Wert 3,1414 hinten an die Liste l an Hänge die Listen l1 und l2 aneinander und speichere das Ergebnis in l3 Sortiere die Liste l aufsteigend Invertiere die Reihenfolge der Elemente in l Speichere die Länge der Liste l in x Python l[5] = True l[a] = k r = l[3] l2 = l1[a:b] l2 = l1[a:] l.append(3.1415) l3 = l1 + l2 l.sort() l.reverse() x = len(l) Es ist dabei wichtig zu wissen, dass die Nummern der Einträge immer bei 0 anfangen zu zählen. In obiger Liste l2 ist also l2[1] = True und l2[0] = "Hallo", ferner ist l1[2:4] = [2, 3] und l2[1:] = [True, 1, -3.2]. Beachte, dass Texte sehr ähnlich zu Listen sind: Ein Text ist im Wesentlichen eine Liste von Zeichen. Daher funktionieren einige der Operationen von Listen auch mit Texten. Ist zum Beispiel a = "Hello World!", so ist a[4] = o und a[2:8] = "llo Wo". 1.5 Beispiel Es folgt ein Beispiel für einen Algorithmus in Umgangsprache und seine Übersetzung in Python: 1. Eingabe: Eine ganze Zahl n. 2. Setze n = n. 3. Setze r = [] (eine leere Liste). 4. Wiederhole die folgenden Schritte solange, wie n > 0: 4.1. Hänge an r den Wert n mod 10 an Teile n durch 10 und schneide alles hinter dem Komma ab. 5. Ausgabe: r. def number_to_digits(n): n = abs(n) r = [] while n > 0: r.append(n % 10) n = n // 10 return r Implementiere obigen Algorithmus wie folgt in Python: 1. Tippe obigen Code in eine Textdatei und gib dieser Datei den Namen digits.py. 2. Öffne ein Terminal, gehe dort mittels cd Pfad zu dem Ordner, in dem sich die Codedatei befindet. 3. Tippe python3 -i digits.py ein, um Python zu starten und deine Codedatei zu laden. 4. Nun kannst du alle Algorithmen in der Codedatei benutzen. Tippe zum Beispiel number_to_digits(143) ein; es erscheint das Ergebnis [3,4,1]. 3
4 2 Spielereien mit Ziffern und Listen Nachdem du das Beispiel aus dem letzten Kapitel implementiert hast, hast du einen Algorithmus number_to_digits in der Datei digits.py, welcher zu einer ganzen Zahl die Liste ihrer Ziffern bestimmt. Ausgehend von diesem Beispiel wollen wir den Umgang mit Listen noch ein bisschen üben. Löse dafür die folgenden Aufgaben, indem du weitere Algorithmen zu der Datei digits.py hinzufügst, die natürlich den Algorithmus number_to_digits verwenden dürfen. Aufgabe 1. Implementiere die folgenden Algorithmen: (a) num_digits(n): Gibt die Anzahl der Ziffern der ganzen Zahl n zurück. (b) cross_sum(n): Berechnet die Quersumme der ganzen Zahl n. Benutze dafür zunächst eine Schleife. Als zweite Variante kannst du die Operation sum(l) benutzen, welche die Summe der Elemente einer Liste berechnet. (c) even_digits(n) Gibt Wahr zurück, wenn die ganze Zahl n nur gerade Ziffern besitzt, sonst Falsch. (d) is_palindrom(n) Bestimmt, ob die ganze Zahl n ein Palindrom ist, also ob sie sich nicht ändert, wenn man die Reihenfolge ihrer Ziffern umkehrt (zum Beispiel ist ein Palindrom). Aufgabe 2. Schreibe den Algorithmus digits_to_number. Dieser nimmt eine Liste von Ziffern und berechnet die zugehörige ganze Zahl. Mit dessen Hilfe kannst du die folgenden Algorithmen implementieren: (a) invert_digits(n): Berechnet diejenige Zahl, die beim Umkehren der Reihenfolge der Ziffern von n entsteht. Für n = 524 ergibt sich also das Ergebnis 425. (b) sort_digits(n): Sortiert die Ziffern der Zahl n absteigend und gibt die resultierende Zahl zurück. Für n = ergibt sich also Aufgabe 3. Sei k eine positive ganze Zahl. Ein k-stelliger Kaprikar-Schritt transformiert eine k-stellige Zahl n wie folgt: Berechne die beiden Zahlen, die durch Sortieren der Ziffern von n in aufsteigender bzw. absteigender Reihenfolge entstehen und subtrahiere sie voneinander. Dadurch entsteht eine neue Zahl n. Für vierstellige Zahlen gilt: Wiederholt man diesen Prozess oft genug, so landet man immer bei der Zahl 6174, der sogenannten Kaprikar-Konstante. (a) Implementiere einen Algorithmus kaprikar_step(n, num_digits), welcher eine Zahl n und eine Anzahl an Ziffern nimmt und dann den Kaprikar-Schritt ausführt. Der Parameter num_digits ist notwendig, da n auch weniger als die gewünschte Anzahl an Ziffern haben darf in diesem Fall sind die verbleibenden Ziffern mit 0 aufzufüllen. Zum Beispiel ist die Zahl 728 im vierstelligen Modus als 0728 zu lesen. Hinweis: Du musst als erstes den Algorithmus number_to_digits anpassen, sodass diese Funktion einen zweiten Parameter num_digits nimmt, der die Anzahl der zu berechnenden Ziffern angibt. Benenne den neuen Algorithmus am besten um, damit der alte verfügbar bleibt. (b) Implementiere den Algorithmus kaprikar(n, num_digits), welcher den Kaprikar- Schritt auf die Startzahl n so lange anwendet, bis n sich nicht mehr ändert und den dann erhaltenen Wert zurückgibt. Teste für verschiedene Zahlen n, ob man tatsächlich immer irgendwann 6174 erhält. 4
5 3 Berechnung von π Das Ziel dieses Abschnittes ist es, die bekannte Kreiszahl π zu berechnen. Dazu werden wir uns verschiedene Methoden ansehen. Implementiere die folgenden Algorithmen in der Datei pi.py. Aufgabe 4. Die sogenannte Monte-Carlo-Methode benutzt Wahrscheinlichkeitstheorie, um π auszurechnen. Betrachte einen Viertelkreis mit Radius 1 innerhalb eines Quadrates mit Seitenlänge 1. Ist P ein zufälliger Punkt in dem Quadrat, dann ist die Wahrscheinlichkeit dafür, dass P im Viertelkreis liegt, genau π 4. Das Ziel ist es nun, diese Wahrscheinlichkeit empirisch zu berechnen, indem man sehr viele Punkte zufällig generiert und dann die Anzahl der Punkte im Kreis durch die Anzahl aller Punkte berechnet. Schreibe einen Algorithmus pi_montecarlo(n), welcher die oben beschriebene Wahrscheinlichkeitsberechnung mit n zufälligen Punkten durchführt und die daraus gewonnene Näherung für π zurückgibt. Zum Generieren von Zufallszahlen kannst du das Modul random benutzen: Schreibe dazu an den Anfang der Datei die Zeile from random import random. Nun kannst du mit random() eine Zufallszahl zwischen 0 und 1 erzeugen. Teste den Algorithmus für große n Wie gut ist die Näherung? Aufgabe 5. Mithilfe elementarer Analysis kann man zeigen: ( π = ) 11 ± Schreibe einen Algorithmus pi_analysis(n), welcher die ersten n Additionen/Subtraktionen dieser Formel ausrechnet und somit eine Näherung für π bestimmt. Teste die Formel für große n wie gut ist die Näherung? Aufgabe 6. Ein wesentlich besserer, aber leider auch komplizierter Weg zur Berechnung von π ist folgendermaßen gegeben: Als erstes berechnet man zwei Zahlenfolgen (a n ) und (b n ) durch folgende rekursive Vorschrift: a 0 = 1, b 0 = 0.5, a k = a k 1 + b k 1, b k = a k 1 b k 1, für k 1. 2 Zu gegebenem n berechnen wir nun s n = 2 0 (a 0 b 0 ) (a 1 b 1 ) (a 2 b 2 ) (a 3 b 3 ) n (a n b n ) 2. Dann ist eine gute Näherung für π gegeben durch π (a n + b n ) 2 1 s n, wobei die Näherung besser wird, je größer man n wählt. Implementiere den Algorithmus pi(n), welcher eine Näherung für π nach diesem Verfahren berechnet. Berechne pi(4) und vergleiche die Genauigkeit (und Geschwindigkeit) dieser Rechnung mit pi_analysis(10000). Was fällt auf? Tipp: Um die Wurzel aus einer Zahl x zu berechnen, kannst du x**.5 benutzen. Bemerkung: Dieser Algorithmus ist so schnell, dass man sehr leicht an die Rechengenauigkeit von Python herankommt. In der Tat lässt sich aufgrund dieser Rechengenauigkeit kein genauerer Wert als pi(4) bestimmen. Natürlich gibt es Methoden, die Rechengenauigkeit zu erhöhen. Bei Interesse bitte nachfragen. 5
6 4 Verschlüsselung In diesem Abschnitt beschäftigen wir uns mit einfachen Verschlüsselungsalgorithmen: der Cäsar- Verschlüsselung und der Vigenère-Verschlüsselung. Implementiere die folgenden Algorithmen in einer Datei encryption.py. Aufgabe 7. Die Verschlüsselungen ordnen den Zeichen des Alphabets üblicherweise Zahlwerte zu: A ist 0, B ist 1, C ist 2 und so weiter. Wir brauchen daher als erstes zwei Funktionen zum Umwandeln eines Zeichens in den zugehörigen Zahlwert und umgekehrt. Dafür kann man die folgenden Funktionen in Python verwenden: 1 Python-Code ord(c) chr(n) c = c.upper() c.isalpha() Bedeutung Konvertiert das Zeichen c in den zugehörigen ASCII-Wert Konvertiert den ASCII-Wert n in ein Zeichen Konvertiert das Zeichen c in den zugehörigen Großbuchstaben Überprüft, ob es sich bei c um einen Buchstaben handelt Schreibe die folgenden Algorithmen: (a) Der Algorithmus c2n(c) konvertiert den Buchstaben c in den zugehörigen Zahlwert. Beispielsweise sollen die folgenden Konvertierungen stattfinden: A 0, a 0, B 1, b 1, Z 25, z 25. Falls c kein Buchstabe ist, spielt der Rückgabewert keine Rolle. (b) Der Algorithmus n2c(n) konvertiert den Zahlwert n in den zugehörigen Großbuchstaben. Zum Beispiel: 0 A, 1 B, 25 Z. Aufgabe 8. Die Cäsar-Verschlüsselung funktioniert folgendermaßen: Der Schlüssel k ist ein Zahlwert zwischen 0 und 25. Bei der Verschlüsselung wird auf jeden Buchstaben des Klartextes der Schlüssel k addiert (modulo 26) und der sich ergebende Buchstabe in den Kryptotext übernommen. Bei der Entschlüsselung wird der Schlüssel k zeichenweise subtrahiert. (a) Schreibe den Algorithmus caesar_encrypt(text, key), welcher den Text text mit dem Schlüssel key verschlüsselt und das Ergebnis zurückgibt. Enthält der Text Zeichen, die keine Buchstaben sind, so werden diese Zeichen einfach ignoriert. Ferner gibt es keine Unterscheidung von Groß- und Kleinbuchstaben. Hinweis: Python sieht die Umlaute ebenfalls als Buchstaben an (sinnvollerweise), doch unsere Konvertierung c2n funktioniert nicht mit Umlauten. Probiere daher am besten nur Texte ohne Umlaute. (b) Schreibe den Algorithmus caesar_decrypt(text, key), welcher den Text text mit dem Schlüssel key entschlüsselt. (c) Wie sicher ist die Cäsar-Verschlüsselung? Lasse von einem Mitschüler einen Text verschlüsseln und versuche den verschlüsselten Text ohne Kenntnis des Schlüssels zu knacken. Aufgabe 9. Die Vigenère-Verschlüsselung funktioniert folgendermaßen: Der Schlüssel k ist ein Text. Dieser Text wird wiederholend unter den Klartext geschrieben. Ein Zeichen des Kryptotextes ergibt sich als Summe (modulo 26) des Klartextzeichens und des darunter befindlichen Schlüsselzeichens. 1 Der ASCII-Wert eines Zeichens ist eine eindeutige Zahl, die jedem Zeichen zugeordnet ist. Der ASCII-Wert von A ist zum Beispiel 65, der von B ist 66 und so weiter. Bei den Kleinbuchstaben ist es ähnlich: Der ASCII-Wert von a ist 97, der von b ist 98 und so weiter. 6
7 (a) Schreibe den Algorithmus vigenere_encrypt(text, key), welcher den Text text mit dem Schlüssel key verschlüsselt. Der Schlüssel ist hierbei ein Text, welcher nur Buchstaben enthält. (b) Schreibe den Algorithmus vigenere_decrypt(text, key), welcher den Text text mit dem Schlüssel key entschlüsselt. (c) Wie sicher ist die Vigenère-Verschlüsselung? Zusatz: Schreibe einen Algorithmus vigenere_hack(text, key_len), welcher den Text text entschlüsselt, indem er nur die Länge des Schlüssels verwendet, nicht den Schlüssel selbst. Diese Aufgabe ist deutlich schwieriger als die anderen Aufgaben und kann am besten von dir zu Hause probiert werden. 5 Die Türme von Hanoi Die Türme von Hanoi ist der Name des folgenden Rätsels: Gegeben sind drei Lagerplätze für Bausteine. Auf dem ersten Lagerplatz befinden sich zu Beginn n Bausteine, der Größe nach geordnet (der größte unten), die anderen beiden Lagerplätze sind leer. Die Aufgabe ist nun, alle Bausteine vom ersten auf den dritten Lagerplatz zu bewegen, indem man nacheinander einzelne Bausteine umstapelt. Dabei müssen jedoch zu jedem Zeitpunkt alle Bausteine auf allen Lagerplätzen der Größe nach geordnet sein. Schreibe die folgenden Algorithmen in der Datei hanoi.py. Aufgabe 10. Schreibe einen Algorithmus hanoi(n), der das Hanoi-Problem zu gegebener Bausteinzahl n löst. Gehe dazu wie folgt vor. Implementiere rekursiv den Algorithmus hanoi_move(x, y, z, k), welcher eine Lösung zu folgendem Problem findet: Bewege die oberen k Steine von Platz x nach Platz z und benutze dabei eventuell als Zwischenlager den Platz y. Das eigentliche Hanoi-Problem wird dann durch den Aufruf hanoi_move(1, 2, 3, n) gelöst. Tipp: Im Fall k = 1 ist hanoi_move(x, y, z, k) einfach. Verwende die Python-Funktion print, um einen Text auszugeben; hierbei kannst du den Text-Operator % benutzen, um Werte in den Text einzusetzen, zum Beispiel: print("bewege von {} nach {}"% (2, 3)). Im Fall k > 2 kannst du das Problem mittels Rekursion lösen; in diesem Fall sind drei Aufrufe von hanoi_move nötig. 6 Analytische Geometrie In diesem Abschntit wollen wir Python ein wenig analytische Geometrie beibringen. Dazu betrachten wir die folgenden Arten von Objekten: Punkte. Dargestellt durch eine Liste bestehend aus zwei Zahlen. Geraden. Dargestellt durch eine Liste von einem Punkt und einem zweiten Punkt (die Richtung der Gerade). Schreibe die folgenden Algorithmen in der Datei geometry.py. Aufgabe 11. Schreibe zunächst die Algorithmen point(x, y) und line(p, v), mit denen man Punkte und Geraden erstellen kann. 7
8 Aufgabe 12. Schreibe Algorithmen add(p1, p2) und subtract(p1, p2), welche die Addition und Subtraktion von je zwei Punkten durchführen und das Ergebnis zurückgeben. Schreibe analog mult(p, a), welches den Punkt p mit der Zahl a multipliziert und das Ergebnis zurückgibt. Schreibe schließlich lstinline{dot(p1, p2), welches das Skalarprodukt der beiden gegebenen Punkte berechnet und zurückgibt. Aufgabe 13. Implementiere die folgenden Algorithmen: (a) midpoint(p1, p2): Berechnet den Mittelpunkt der gegebenen Punkte. (b) focus(p1, p2, p3): Berechnet den Schwerpunkt des gegebenen Dreiecks. (c) orthogonal(l1, l2): Überprüft, ob die beiden gegebenen Geraden senkrecht aufeinanderstehen. Aufgabe 14. Implementiere den Algorithmus intersect(l1, l2), welcher den Schnittpunkt der beiden gegebenen Geraden berechnet. Falls die Geraden keinen Schnittpunkt haben, wird None zurückgegeben. 8
Programmiergrundkurs
Programmiergrundkurs Aufgaben und Anleitung Lucas Mann 13.01.2016 1 Übersetzung in Python Als erstes machen wir uns damit vertraut, wie man in Python Algorithmen schreiben kann. Einen Algorithmus kannst
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/
Übungszettel 2a - Python
Vorsemesterkurs Informatik Übungsaufgaben Übungszettel 2a - Python Aufgabe 1: Python starten Teilaufgaben (a)-(c) beziehen sich auf das Arbeiten unter den Systemen, die auf den RBI-Rechnern installiert
Programmieren lernen mit Groovy Kollektionen: Listen und Abbildungen
Programmieren lernen mit Groovy Kollektionen: Listen und Abbildungen Seite 1 Listen Listen Definition def Listen-Variable = Listen-Wert def liste = [1,2,3,4,5,6,7,8,9] Der erste Index ist 0! liste[0] Zugriff
Gruber I Neumann. Erfolg in VERA-8. Vergleichsarbeit Mathematik Klasse 8 Gymnasium
Gruber I Neumann Erfolg in VERA-8 Vergleichsarbeit Mathematik Klasse 8 Gymnasium . Zahlen Zahlen Tipps ab Seite, Lösungen ab Seite 0. Zahlen und Zahlenmengen Es gibt verschiedene Zahlenarten, z.b. ganze
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
Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch
Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch Betrachten wir die act()-methode des Wombats aus dem Wombats-Szenario: Wie interpretieren Sie diesen Code? (einfach übersetzen) Falls der Wombat ein
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch
SFZPy Sj. 17/18. Python Jupyter / Spyder. SFZ 16/17 W.Seyboldt
SFZPy Sj. 17/18 Python Jupyter / Spyder 1 Python Python ist eine Skriptsprache, man muss den Pythoncode nicht zuerst kompilieren, sondern kann den Code sofort ausführen (falls er richtig ist!). Entweder
Greenfoot: Verzweigungen
Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch Betrachten wir die act()-methode des Wombats aus dem Wombats-Szenario: Wie interpretieren Sie diesen Code? (einfach übersetzen) Falls der Wombat ein
Ü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
1 Berechnung von Summen (ca = 10 Punkte)
Einführung in die wissenschaftliche Programmierung Klausur 26.02.2013 Seite 1/8 Name, Vorname, Unterschrift: Matrikelnummer: 1 Berechnung von Summen (ca. 5 + 4 + 1 = 10 Punkte) Gegeben sind natürliche
Ü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
07 Funktionen (Teil I)
07 Funktionen (Teil I) Funktionen (Teil I) 1/8 Einführung Funktionen sind wiederverwendbare Code-Stücke, die Du in einem Programm überall einsetzen kannst und dir somit viel Kopierarbeit ersparen. PHP
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
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
Programmierung für Mathematik (HS13)
software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer
Einführung in die Praktische Informatik. Übungsblatt 3. PD Dr. U. Köthe Heidelberg, 7. November Aufgabe 3.1 Gaußsche Osterregel [6 Punkte]
Einführung in die Praktische Informatik PD Dr. U. Köthe Heidelberg, 7. November 2016 Übungsblatt 3 Aufgabe 3.1 Gaußsche Osterregel [6 Punkte] Erstellen Sie ein Programm, das mit dem Algorithmus von Gauß
Labor Software-Entwicklung 1
Fakultät für Technik STUDIENGANG MEDIZINTECHNIK Labor Software-Entwicklung Vorbereitungsaufgaben zu Versuch 2 C-Programmierung Mathematische Berechnungen Wintersemester 205/206 Seite von 5 Vorbemerkungen
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
Informatik B von Adrian Neumann
Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000
Polynome. Analysis 1 für Informatik
Gunter Ochs Analysis 1 für Informatik Polynome sind reelle Funktionen, die sich ausschlieÿlich mit den Rechenoperation Addition, Subtraktion und Multiplikation berechnen lassen. Die allgemeine Funktionsgleichung
Informatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr
Informatik I: Einführung in die Programmierung Prof. Dr. Bernhard Nebel Dr. Christian Becker-Asano, Dr. Stefan Wölfl Wintersemester 2013/2014 Universität Freiburg Institut für Informatik Übungsblatt 3
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
9. Einführung in die Kryptographie
9. Einführung in die Kryptographie Grundidee: A sendet Nachricht nach B über unsicheren Kanal. Es soll verhindert werden, dass ein Unbefugter Kenntnis von der übermittelten Nachricht erhält. Grundbegriffe:
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
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
Schnelle Multiplikation
Informationsblatt für die Lehrkraft Schnelle Multiplikation $&*&*& 999 3 x 3 =? 10001110 π/3 7 X 6 14 666 x 987 Informationsblatt für die Lehrkraft Thema: Schultyp: Vorkenntnisse: Bearbeitungsdauer: Schnelle
Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe
Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. August 2009 1/17 Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe Prof. G. Kemnitz
Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
Fakultät für Informatik und Automatisierung, Technische Universität Ilmenau. Über Polynome mit Arithmetik modulo m.
19 Fingerprinting Martin Dietzfelbinger Fakultät für Informatik und Automatisierung, Technische Universität Ilmenau Anhang: Über Polynome mit Arithmetik modulo m Dieser Abschnitt ergänzt Kapitel 19 Fingerprinting
Datenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn
WS2017/ Oktober 2017
Ronja Düffel WS2017/18 05. Oktober 2017 mit Python Programmieren (vereinfacht) 1 Problem beschreiben und analysieren 2 Enwicklung und Beschreibung einer Lösung 3 Übertragung/Umsetzung in eine Programmiersprache
7. Arrays. Beim Deklarieren und Initialisieren der Liste bräuchte man oft zueinander sehr ähnlichen Code:
7. Arrays Gelegentlich braucht man für ein Programm mehrere Attribute desselben Datentyps oder derselben Klasse. Beispiel: In der Highscore-Liste eines Spiels werden von den 10 besten Spielern die Namen
Programmierpraktikum
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 05 (24.11.2016) Stefan Berktold [email protected] PRÄSENZAUFGABEN Heutige Übersicht
Programmiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
ÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
Collatz-Folge. falls a i ungerade.
14 Klausurtraining Heute gibt s nichts Neues mehr wir machen nochmal einen Streifzug durch die behandelten Themen unter besonderer Berücksichtigung von Aufgaben in der Art, wie sie in Klausuraufgaben vorzukommen
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
Objektorientiertes Programmieren (Java)
Grundlagen Objektorientiertes Programmieren (Java) Java folgt gewissen Rechtschreibregeln die Syntax. Diese besagt, dass hinter jeden Befehl ein Semikolon( ; ) stehen muss, damit der Computer weiß, dass
Übungsblatt 2. Java Vorkurs (WS 2017)
Übungsblatt 2 Java Vorkurs (WS 2017) Aufgabe 1 Logische Operatoren Manchmal ist es wichtig zwei Werte miteinander zu vergleichen. Dazu gibt es in Java folgende Vergleichsoperatoren: Text Math. Zeichen
Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut
Mathematisches Institut [email protected] 24 März 2009 Übungen zur Numerik 1 Vorlesung Übungen praktische Aufgaben Webseite: (Anmeldung, Übungsblätter) http://www.mi.uni-koeln.de/~mselva/numerik1.php
Diskrete Strukturen Wiederholungsklausur
Technische Universität München (I7) Winter 2013/14 Prof. J. Esparza / Dr. M. Luttenberger LÖSUNG Diskrete Strukturen Wiederholungsklausur Beachten Sie: Soweit nicht anders angegeben, ist stets eine Begründung
Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 4A
Fachbereich Informatik und Mathematik Institut für Informatik Vorsemesterkurs Informatik Sommersemester 2018 Aufgabenblatt Nr. 4A Aufgabe 1 (Haskell Interpreter: GHCi) a) Starten Sie den Haskell Interpreter
Praktische Übung. Die Lernplattformen ILIAS ist mit Stud.IP verbunden, sodass Sie Lernmodule dieser Plattform
Informatik I Wintersemester 2016/2017 Prof. Dr. Carsten Damm Georg-August-Universität Göttingen Dr. Henrik Brosenne Institut für Informatik Übung 1 Praktische Übung Testate von Di., 01.11., 8-10 Uhr bis
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende
Variablen und Datentypen
Programmieren mit Python Modul 1 Variablen und Datentypen Selbstständiger Teil Inhaltsverzeichnis 1 Überblick 3 2 Teil A: Geldautomat 3 2.1 Einführung.................................. 3 2.2 Aufgabenstellung...............................
3. Übungsblatt zu Algorithmen I im SoSe 2017
Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799
Kap 7. Funktionen und Arrays
Kap 7. Funktionen und Arrays Elementare Algorithmen Allgemein Mathematik Text Eingabe ٧ Skalarprodukt wie Allgemein Ausgabe ٧ Länge ersetzen Summation Winkel Laenge Maximum ٧ Polynome berechnen ausschneiden
schreiben, wobei p und q ganze Zahlen sind.
Schülerinfotag 1. Man zeige, dass keine rationale Zahl ist. Das heißt lässt sich nicht als p q schreiben, wobei p und q ganze Zahlen sind. Proof. Wir werden das Prinzip Beweis durch Widerspruch verwenden.
SFZ FN Sj. 12/13. Python 4 Grundlagen. W.Seyboldt. Python, SFZ FN, Sj 12/13
SFZ FN Sj. 12/13 Python 4 Grundlagen 1 Python, SFZ FN, Sj 12/13 Python Methoden: def teilt(t, n): ''' Kommentar. ''' Berechnungen return var Statt der Variable var bei Return kann auch eine Methode oder
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
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Vom Leichtesten zum Schwersten Sortieralgorithmen
Aktivität 7 Vom Leichtesten zum Schwersten Sortieralgorithmen Zusammenfassung Häufig verwendet man Computer dazu Listen von Elementen in eine bestimmte Ordnung zu bringen. So kann man beispielsweise Namen
Informatik II Übung 3
Informatik II Übung 3 Gruppe 2 Carina Fuss [email protected] 14.3.2018 Carina Fuss 14.3.2018 1 Übung 2 Nachbesprechung Übung 2 Vorbesprechung Übung 3 String vs. StringBuffer Syntaxdiagramme und Syntaxchecker
Programmiervorkurs WS 2013/2014. Schleifen. Termin 3
Programmiervorkurs WS 2013/2014 Schleifen Termin 3 Ein Befehl soll mehrfach ausgeführt werden, z.b.: public class MyCounter { System.out.println(1); Ein Befehl soll mehrfach ausgeführt werden, z.b.: public
PYTHON. 04 Funktionen II, Module
PYTHON 04 Funktionen II, Module Funktionen Funktionen enthalten Programm-Teile können später im Programm aufgerufen werden können beliebig oft aufgerufen werden (und man muss nur die Funktion aufrufen,
Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen
Ludwig-Maximilians-Universität München München, 16.04.2018 Institut für Informatik Prof. Dr. Thomas Seidl Anna Beer, Florian Richter Algorithmen und Datenstrukturen SS 2018 Übungsblatt 1: Grundlagen Tutorien:
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
Intensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
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
Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016
to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben
Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Alexander Lochmann, Iman Kamehkhosh, Marcel Preuß, Dominic Siedhoff Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester
WIEDERHOLUNG (BIS ZU BLATT 7)
Universität Bielefeld SS 2016 WIEDERHOLUNG (BIS ZU BLATT 7) JULIA SAUTER Wir wiederholen, welche Aufgabentypen bis zu diesem Zeitpunkt behandelt worden sind. Auf der nächsten Seite können Sie sich selber
Humboldt-Universität zu Berlin Berlin, den Institut für Informatik
Humboldt-Universität zu Berlin Berlin, den 15.06.2015 Institut für Informatik Prof. Dr. Ulf Leser Übungen zur Vorlesung M. Bux, B. Grußien, J. Sürmeli, S. Wandelt Algorithmen und Datenstrukturen Übungsblatt
Über Polynome mit Arithmetik modulo m
Über Polynome mit Arithmetik modulo m Um den Fingerprinting-Satz über die Fingerabdrücke verschiedener Texte aus dem 37. Algorithmus der Woche ( http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo37.php
Anleitung zum Ausführen der vier Grundrechenarten mit dem russischen Abakus ( Stschoty )
Zahlen darstellen 1 Anleitung zum Ausführen der vier Grundrechenarten mit dem russischen Abakus ( Stschoty ) 1 Zahlen darstellen 1.1 Stschoty in Grundstellung bringen Der Stschoty wird hochkant gehalten
Algorithmen und Programmierung. Zusatzaufgaben Java Tutorium 1
TU Ilmenau, Fakultät IA FG Telematik/Rechnernetze Prof. Dr.-Ing. G. Schäfer http://www.tu-ilmenau.de/telematik/aup Algorithmen und Programmierung Zusatzaufgaben Java Tutorium 1 Aufgabe 1 (Zeitformatierung)
Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 5A. Lösung zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler)
Fachbereich Informatik und Mathematik Institut für Informatik Vorsemesterkurs Informatik Sommersemester 2017 Aufgabenblatt Nr. 5A zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler) Laden Sie von der
1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster
1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:
Programmiertechnik 1 FOR-SCHLEIFEN
Programmiertechnik 1 FOR-SCHLEIFEN In diesem Dokument wollen wir uns mit Kontrollstrukturen befassen. Dazu sind im Folgenden einige Übungsaufgaben zu den Themen Schleifen (FOR, WHILE, DO) und Bedingungen
Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Erklären
Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben
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
Effiziente Algorithmen mit Python. D. Komm, T. Kohn
Effiziente Algorithmen mit Python D. Komm, T. Kohn Copyright c 2017, ABZ, ETH Zürich http://www.abz.inf.ethz.ch/ Version vom 7. September 2017. Effiziente Algorithmen mit Python 3 1 Effizienz Effizient
Kapitel 3: Variablen
Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber
Aufgabenblatt: Methoden - rekursiv
Aufgabenblatt: Methoden - rekursiv- Seite 1 Aufgabenblatt: Methoden - rekursiv (1.) Wird noch erstellt! Lösen Sie die folgenden Aufgaben indem Sie: - Basis und Rekursive Bedingung formulieren! - die vorgegebene
Programmsteuerung mit PHP - if/else, elseif,switch
Programmsteuerung mit PHP - if/else, elseif,switch Bei der Programmierung geht es meist vor allem darum festzulegen, welche Aktionen wie oft unter welchen Bedingungen ausgeführt werden sollen. Hierzu steht
Programmieren mit Python
Programmieren mit Python Programmieren heisst: Dem Computer sagen, was er tun soll. Die Befehle muss man übrigens in einer Sprache geben, die der Computer versteht. Darum sind verschiedene Programmiersprachen
Kryptograhie Wie funktioniert Electronic Banking? Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik
Kryptograhie Wie funktioniert Electronic Banking? Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik Übersicht Zwecke der Krytographie Techniken Symmetrische Verschlüsselung( One-time Pad,
