Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Algorithmierung und Programmierung Gliederung: Der Algorithmusbegriff Grenzen der Algorithmierbarkeit Grundlagen der Programmierung.

Ähnliche Präsentationen


Präsentation zum Thema: "Algorithmierung und Programmierung Gliederung: Der Algorithmusbegriff Grenzen der Algorithmierbarkeit Grundlagen der Programmierung."—  Präsentation transkript:

1 Algorithmierung und Programmierung Gliederung: Der Algorithmusbegriff Grenzen der Algorithmierbarkeit Grundlagen der Programmierung

2 Algorithmus Das Wort Algorithmus ist eine Abwandlung des Namens von Muhammed Al Chwarizmi (* ca. 783; † ca. 850), dessen arabisches Lehrbuch „Über das Rechnen mit indischen Ziffern“ (um 825) in der mittelalterlichen lateinischen Übersetzung mit den Worten „Dixit Algorismi“ begann. Im Mittelalter wurde daraus lateinisch „algorismus“ als Bezeichnung für die Kunst des Rechnens mit den arabischen Ziffern und als Titel für Schriften über diese Kunst.

3 Definition Eine Berechnungsvorschrift zur Lösung eines Problems heißt genau dann Algorithmus, wenn eine zu dieser Berechnungsvorschrift äquivalente Turingmaschine existiert, die für jede Eingabe, die eine Lösung besitzt, stoppt. ? http://de.wikipedia.org/wiki/Turing-Maschine

4 Eigenschaften Aus der Definition sind folgende Eigenschaften eines Algorithmus ableitbar: Das Verfahren muss in einem endlichen Text eindeutig beschreibbar sein (Finitheit). Jeder Schritt des Verfahrens muss auch tatsächlich ausführbar sein (Ausführbarkeit).

5 Eigenschaften Das Verfahren darf zu jedem Zeitpunkt nur endlich viel Speicherplatz benötigen (Dynamische Finitheit). Das Verfahren darf nur endlich viele Schritte benötigen (Terminierung).

6 Eigenschaften Der Algorithmus muss bei denselben Voraussetzungen das gleiche Ergebnis liefern (Determiniertheit). Die nächste anzuwendende Regel im Verfahren ist zu jedem Zeitpunkt eindeutig definiert (Determinismus).

7 Definition Ein Algorithmus ist eine Verarbeitungsvorschrift, die aus einer endlichen Folge von eindeutig ausführbaren Anweisungen besteht. Unter gleichen Voraussetzungen liefert die Ausführung eines Algorithmus stets gleiche Ergebnisse. → Endlichkeit → Eindeutigkeit → Ausführbarkeit Merkmale

8 Beispiel Der Algorithmus auf der folgenden Folie beschreibt die Verschlüsselung eines Textes nach dem Vigenère-Verfahren. Verschlüssle einen kurzen Text mit diesem Verfahren und übergib ihn deinem rechten Nachbar (mit Schlüssel)! Entwerfe einen entsprechenden Algorithmus zur Entschlüsselung und dekodiere damit die Nachricht deines linken Nachbarn!

9 1.Wähle ein Schlüsselwort. 2.Ersetze im Text und im Schlüsselwort alle Umlaute (ä → ae, ö → oe und ü → ue) und ß ( → ss). 3.Schreibe das Schlüsselwort immer wieder unter den zu verschlüsselnden Text, bis unter jedem Buchstaben des Textes ein Buchstabe des Schlüsselwortes steht. 4.Ordne jedem Buchstaben des Schlüsselwortes seinen Platz im Alphabet zu (A = 1, B = 2,..., Z = 26). 5.Verschiebe die Buchstaben des zu verschlüsselnden Wortes um diese Zahl. Wenn du dabei das Ende des Alphabets erreichst, beginne von vorn.

10 z.B. Klartext: I c h b i n g e n i.. Positionen: 9 3 8 2 9 14 7 5 14 9.. Schlüsselwort: N a s e n b a e r N.. Positionen: 14 1 19 5 14 2 1 5 18 14.. Versch. auf: 23 4 27 7 23 16 8 10 32 23.. bei > 26: 1 6 Schlüsseltext: W d a g w p h j f w.. A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, G = 7, H = 8, I = 9, J = 10, K = 11, L = 12, M = 13, N = 14, O = 15, P = 16, Q = 17, R = 18, S = 19, T = 20, U = 21, V = 22, W = 23, X = 24, Y = 25, Z = 26 A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, G = 7, H = 8, I = 9, J = 10, K = 11, L = 12, M = 13, N = 14, O = 15, P = 16, Q = 17, R = 18, S = 19, T = 20, U = 21, V = 22, W = 23, X = 24, Y = 25, Z = 26

11 Grenzen der Algorithmierbarkeit Alle Probleme, die sich mit Hilfe von Computern lösen lassen, basieren auf Algorithmen. Für manche Aufgaben sind Computer ungeeignet, weil: sie nicht durch Algorithmen beschreibbar sind. der Rechenaufwand zu hoch währe.

12 Grundlagen der Programmierung Gliederung: Modellierung eines Hamsters Der Hamstersimulator Das erste Programm

13 Der Feldhamster Feldhamster sammeln im Sommer ca. 60 kg Vorräte für den Winter. Im Winter schlafen sie und werden zwischendurch wach und fressen von ihren Vorräten. Der Hamster benutzt seine Backentaschen als Tragetaschen. Er schnappt sich Kornähren und zieht sie zwischen seinen Zähnen durch. Dabei streift er sich die Samenkörner in den Mund. Wenn seine Backentaschen voll sind, schleppt er den Inhalt in seinen Bau. In seine Backentaschen passen ca. 50 Gramm. Das ist ein Zehntel von seinem Körpergewicht. Ein Feldhamster ist etwa 34 cm lang. Ein Feldhamster bekommt 2 – 3 mal im Jahr 4 bis 12 Junge. Der Feldhamster (Cricetus cricetus) gehörte früher zu den häufigsten Kleinsäugetieren Deutschlands und wurde noch bis in die 70er Jahre hinein für eine Plage gehalten. Deshalb wurde er Jahrzehnte lang verfolgt. Bei der Pelzindustrie war er wegen seines weichen Fells auch sehr beliebt. Zusätzlich wurden durch die intensive Bebauung seiner Lebensräume und die veränderte Landwirtschaft die Bestände massiv dezimiert. Die Bestandssituation in Europa ist heute von Zusammenbrüchen der Populationen und Inselbildung gekennzeichnet, aus vielen Gegenden, in denen er traditionell sehr häufig vorkam, ist er heute meist völlig verschwunden. Dadurch, dass die heutige Landwirtschaft durch die frühe und gründliche Ernte dem Hamster Nahrung und Versteckmöglichkeiten nimmt, fällt er besonders häufig seinen Fressfeinden zum Opfer.

14 Modellierung Klasse Hamster Zeile, Spalte //Standort Blickrichtung Anzahl Körner im Maul vor()// Hüpfe eine Kachel in Blickrichtung. linksUm()// Drehe dich um 90 Grad nach links. nimm()// Nimm von der Kachel, auf der du gerade stehst, ein Korn auf. gib()// Lege auf die Kachel, auf der du ge- rade stehst, ein Korn aus deinem Maul. vornFrei()// Entscheide, ob vor() möglich ist! kornDa()// Entscheide, ob nimm() möglich ist! maulLeer()// Entscheide, ob gib() möglich ist! Instanz Hamster Willy Zeile 2, Spalte 5 Blickrichtung Ost Anzahl Körner im Maul: 3 vor() linksUm() nimm() gib() vornFrei() kornDa() maulLeer()

15 Der Hamstersimulator Editor Hamsterp rogramm Hamsterter ritorium

16 Der Hamstersimulator Funktionen des Programms: Verwalten und Editieren von Hamster- Programmen Compilieren von Hamster-Programmen Verwalten und Gestalten von Hamster- Territorien Ausführen von Hamster-Programmen Debuggen von Hamster-Programmen

17 Hinweise Die Dateiverwaltung erfolgt auf Betriebssystemebene. Die selbst entwickelten Hamster-Programme sowie die Hamster-Territorien werden auf Betriebssystemebene in Dateien abgespeichert. Diese Dateien finden Sie in einem Ordner namens ~/Programmierung/Javahams- ter/Programme Dateien mit Sourcecode von Hamster-Programmen haben die Endung.ham. Dateien mit Hamster-Territorien haben die Endung.ter.

18 Hinweise Ansonsten gibt es noch Dateien mit der Endung.java und.class. Diese werden beim Kompilieren generiert und enthalten Java-Sourcecode (.java) bzw. ausführbaren Java-Bytecode (.class). Funktionen zum Verwalten dieser Dateien (Umbenennen, Kopieren, Verschieben, neuen Ordner erzeugen usw.) können Sie auch auf Betriebssystemebene durchführen. Sie sollten dies jedoch nicht tun, wenn der Hamster- Simulator gestartet ist, da es ansonsten zu Inkonsistenzen kommen kann.

19 Das erste Programm 1 2 3 456

20 Kontrollstrukturen Eine einfache Abfolge von Anweisungen ist nicht ausreichend, um den Hamster auf bestimmte Situationen (Korn da oder nicht, vorn frei oder nicht...) angemessen reagieren zu lassen. Für solche Fälle existieren Kontrollstrukturen wie z.B. Selektionen oder Schleifen, die es ermöglichen, in Abhängigkeit von erfüllten Bedingungen Anweisungen (mehrmals) auszuführen.

21 Selektion (Auswahl) Bei der Selektion werden eine oder mehrere Aktionen nur dann ausgeführt, wenn eine bestimmte Bedingung erfüllt ist (bedingte Auswahl). → if... then... Eine Erweiterung ist die alternative Auswahl, bei der zusätzlich andere Aktionen ausgeführt werden, wenn die Bedingung nicht erfüllt ist. → if... then... else

22 Darstellung als Struktogramm: bedingte Auswahl Beispiel: Willy soll immer dann, wenn ein Korn da liegt, dieses aufnehmen: willy.kornDa() ja willy.nimm() Programmcode: if (willy.kornDa()) {willy.nimm(); }

23 alternative Auswahl willy.kornDa() janein willy.nimm()willy.gib() Beispiel: Willy soll immer dann, wenn ein Korn da liegt, dieses aufnehmen. Falls keins daliegt soll er eins ablegen: if (willy.kornDa()) {willy.nimm(); } else {willy.gib(); }

24 Anwendung Programmiere einen Hamster, der ein Feld vorrückt und dort ein Korn aufnimmt, wenn eins da ist. Erweitere dieses Programm so, dass der Hamster ein Korn hinlegt, wenn keins da ist. Der Hamster soll nun das ganze Feld von links nach rechts durchqueren und auf jedem Feld ein Korn aufnehmen bzw. ablegen. Welches Problem ergibt sich dabei?

25 Lösung Problem: gesamter Block muss mehrfach wiederholt werden.

26 Schleifen Schleifen wiederholen Anweisungsblöcke. Die Anzahl der Wiederholungen kann vorher festgelegt werden oder vom Erfüllen einer Bedingung abhängig sein. Die while-Schleife führt einen Anweisungsblock solange aus wie die Bedingung erfüllt bleibt. Je nach Konstruktionsart kann der Anweisungsblock bei nicht erfüllter Bedingung gar nicht oder mindestens einmal ausgeführt werden.

27 while-Schleife als Abweisschleife Beispiel: Willy soll immer ein Feld vorrücken, solange das Feld vor ihm frei ist: solange willy.vornFrei() willy.vor() als Nichtabweisschleife while (willy.vornFrei()) {willy.vor(); } do {willy.vor(); } while (willy.vornFrei()); Welcher Unterschied besteht zwischen beiden Versionen?

28 Anwendung Verbessere das letzte Programm (Der Hamster soll das ganze Feld von links nach rechts durchqueren und auf jedem Feld ein Korn aufnehmen bzw. ablegen.) so, dass der Anweisungsblock mit Hilfe einer while-Schleife wiederholt wird. Teste beide Varianten (Abweis- und Nichtabweisschleife). Was passiert, wenn die Körner im Maul alle sind und eins abgelegt werden soll?

29 Lösung 1

30 Lösung 2

31 Datentypen Ein Datentyp ist die Zusammenfassung von Wertebereichen und Operationen zu einer Einheit. (= Definition) In Programmiersprachen benutzt man z.B. die folgenden konkreten Datentypen: Ganze Zahl, Zeichen, Wahrheitswert, rationale Zahl, Feld, Zeichenkette, Verbund und Zeiger Zu jedem dieser Datentypen gibt es in der Programmiersprache typische Funktionen.

32 (siehe nächste Folie) Überblick Datentypen Datentypen einfachezusammengesetzte ordinal (abzählbar) nicht ordinal ganze Zahl (integer, int) Beispiele: 3 –5 2365 0 Zeichen (char) Beispiele: e R ? 5 Wahrheitswert (boolean) Beispiele: true false rationale Zahl (real, float) Beispiele: –2.45 0.573 4.0

33 Übersicht Datentypen Datentypen einfachezusammengesetzte Feld, Reihung (array) Abbildung von zusammengehörig en Daten eines Typs in eine Liste, Tabelle o.ä. Zeichenkette (string) Beispiele: 'Hallo Welt' '08A3F' '2365' 'a b c' Verbund (record) Zusammenfassu ng von Datenelementen zu Datensätzen Zeiger (pointer) dynamischer Datentyp

34 Eigene Prozeduren Hamster Willy soll das ganze Feld reihenweise ablaufen. Das Hauptprogramm könnte wie folgt lauten: Hamster willy; void main() { willy = Hamster.getStandardHamster(); while(willy.vornFrei()) { doppelreiheAblaufen(); } }

35 Eigene Prozeduren Die Prozedur doppelreiheAblaufen ist nicht vordefiniert und muss selbst programmiert werden, z.B.: void doppelreiheAblaufen() { vorwaerts(); rechtsUm(); willy.vor(); rechtsUm(); vorwaerts(); willy.linksUm(); willy.vor(); willy.linksUm(); } Ebenso müssen vorwaerts und rechtsUm selbst programmiert werden.

36 Eigene Prozeduren void vorwaerts() { while (willy.vornFrei()) { willy.vor(); } } void rechtsUm() { willy.linksUm(); }

37 Eigene Prozeduren Löse folgende Aufgabe unter Verwendung eigener Prozeduren! Dein Hamster soll das gesamte Feld nach Körnern absuchen, diese aufnehmen und auf dem letzten Feld ablegen. Stellt eure Varianten vor und diskutiert sie!

38 Definition und Merkmale eines Algorithmus (siehe Folie 7) Ablauf der Modellierung (siehe Folie 14) Kontrollstrukturen (Anwendung, Struktogramm und Programmcode) Selektion (bedingte und alternative Auswahl, Folien 20 bis 25) Schleifen (Folien 26 – 30) Datentypen (Einteilung, Beispiele, siehe Folien 31 – 33) Schwerpunkte LK


Herunterladen ppt "Algorithmierung und Programmierung Gliederung: Der Algorithmusbegriff Grenzen der Algorithmierbarkeit Grundlagen der Programmierung."

Ähnliche Präsentationen


Google-Anzeigen