1. GRUNDLAGEN 1.1. Algorithmen Algorithmus: (Rechen)vorschrift, die ein bestimmtes Problem in elementare Einzelschritte zerlegt und die Reihenfolge festlegt, in der diese Einzelschritte ausgeführt werden müssen. Die Anzahl der Einzelschritte bis zur Lösung des Problems muß endlich sein. Beispiel 1.1: Suche die größte Zahl in einer Reihe von Zahlen. 1) 2) 3) 4) 5) lies die erste Zahl z lies die nächste Zahl a wenn diese Zahl a größer als z ist, dann speichere in z den Wert von a wenn noch Zahlen vorhanden, dann gehe nach Schritt 2 gib z aus Bemerkung: Obiger Algorithmus setzt voraus, daß wenigstens zwei Zahlen in der Reihe vorkommen. Beispiel 1.2: Größter gemeinsamer Teiler zweier Zahlen (EuklidischerAlgorithmus) 1) 2) 3) Lies zwei Zahlen a und b Dividiere a durch b ganzzahlig und bestimme den Rest Wiederhole solange der Rest ungleich Null a) Ersetze a durch b und b durch den Rest b) Dividiere a durch b ganzzahlig und bestimme den Rest 4) Gib b aus Konkretes Beispiel: ggT(72,270) = 18 270 : 72 = 3 54 R 72 : 54 = 1 18 R 54 : 18 = 3 0 R Übungen: 1.1. Formuliere verbal einen Algorithmus, mit dem Sekunden in Stunden, Minuten und Sekunden umgerechnet werden können. 1.2. Formuliere verbal einen Algorithmus, mit der die Summe jeder dritten ganzen Zahl, angefangen mit i=2 berechnet werden kann, und zwar für alle Werte von i kleiner als 100 (2+5+8+...) Manuel Egger C-Skriptum HTL-Villach Abteilung EDV und Organisation 1.3. Formuliere verbal einen Algorithmus, mit dem 3 Zahlen eingelesen werden können und der prüft, ob die Zahlen aufsteigend sortiert sind (es darf angenommen werden, daß die drei Zahlen verschieden sind). 1.4. Formuliere verbal einen Algorithmus, der prüft wie oft ein bestimmter Buchstabe in einem gegebenen Wort vorkommt. 1.5. Formuliere verbal einen Algorithmus, der prüft, ob eine bestimmte Zahl eine Primzahl ist. 1.2. Struktogramme Struktogramme dienen zur graphischen Darstellung von Algorithmen. Vorteile: übersichtlich, zwingen zu strukturierten Algorithmen Das Struktogramm ist vor der Erstellung eines Programms anzufertigen, da nicht gewährleistet ist, daß zu einem fertigen unstrukturierten Programm nachträglich überhaupt ein Struktogramm existiert. Die Struktogramme wurden von NASSI-SHNIDERMAN erfunden und bestehen aus einzelnen Strukturblöcken, die das Top-Down Prinzip widerspiegeln. Jeder Strukturblock hat einen Eingang (Oberkante) und einen Ausgang (Unterkante). Der Steuerfluß läuft immer von oben nach unten. Wir unterscheiden: Elementarblock (einzelne Anweisung) Beschreibung der Aktion Modul- oder Prozedurblock Ein Modulblock beschreibt einen öfters benötigten Algorithmus oder einen Teil eines Algorithmus. Modulname Modulbeschreibung Datenbeschreibung Strukturblock ... ... Strukturblock Manuel Egger C-Skriptum HTL-Villach Abteilung EDV und Organisation Auswahlblock für ja/nein Entscheidungen Bedingung ja nein Strukturblock Strukturblock Selektionsblock (Mehrfachauswahl) Fallabfrage Fall 1 SB Fall 2 SB Fall3 SB Fall4 sonst SB SB SB ... Strukturblock Der "sonst"-Teil kann auch entfallen. Iterationsblock (Schleifenblock) mit Eingangsbedingung führe aus solange Bedingung gilt Strukturblock Zunächst wird die Eingangsbedingung ausgewertet. Ist sie erfüllt, so wird der Strukturblock abgearbeitet, nachher wieder die Bedingung geprüft. Unter Umständen wird der Strukturblock überhaupt nicht ausgeführt. Manuel Egger C-Skriptum HTL-Villach Abteilung EDV und Organisation Iterationsblock (Schleifenblock) mit Ausgangsbedingung Strukturblock wiederhole solange Bedingung gilt Zunächst wird der Strukturblock abgearbeitet, dann die Bedingung geprüft. Ist sie gültig, wird der Strukturblock erneut ausgeführt usw.. Der Strukturblock wird also sicher einmal ausgeführt. Iterationsblock (Schleifenblock) mit Abbruchsbedingung Strukturblock 1 Abbruchsbedingung Strukturblock 2 Ist die Abbruchsbedingung erfüllt, wird der Iterationsblock verlassen. Eingangsbedingung Strukturblock Strukturblock Abbruchsbedingung Abbruchsbedingung Strukturblock Strukturblock Manuel Egger C-Skriptum HTL-Villach Abteilung EDV und Organisation Ausgangsbedingung Regeln für Struktogramme: 1. 2. 3. Ein Struktogramm ist ein Zweipol (eine Eingangs- und eine Ausgangskante) Jeder einzelne Strukturblock ist ein Zweipol Ein neuer Strukturblock muß an einen bereits bestehenden angefügt werden, indem die gesamte Ausgangskante des alten Blocks mit der gesamten Eingangskante des neuen Blocks zusammengelegt wird. (Strukturblöcke können einander nicht überlappen, sondern sind abgeschlossene Einheiten). Beispiel 1.3: Struktogramm zum Euklidischen Algorithmus Ggt zweier Zahlen V1.0 Lese a und b q = a/b (ganzzahlig) r = a - b*q solange (r>0) a = b b = r q = a/b (ganzzahlig) r = a - b*q Schreibe "GGT = " b Ende Übungen: Zu folgenden Problemstellungen sind Struktogramme zu entwikeln: 1.6. a) b) Von einem Kreis wird der Radius eingelesen. Fläche und Umfang sind zu berechnen. Entwickle ein Struktogramm mit linearem Ablauf für eine einmalige Berechnung. Während der einmaligen Berechnung soll abgefragt werden, ob der eingegebenen Radius positiv war. Manuel Egger C-Skriptum HTL-Villach Abteilung EDV und Organisation c) Die Berechnung soll mehrmals hintereinander erfolgen; wird ein Radius kleiner oder gleich Null eingegeben, so soll der Algorithmus abbrechen. 1.7. - 1.11. Entwickle Struktogramme zu den Übungen 1.1. - 1.5 Manuel Egger C-Skriptum HTL-Villach Abteilung EDV und Organisation