Conf. dr. Iulian Intorsureanu A.S.E., Abteilung Wirtschaftsinformatik Allgemeine Informatik Thema 2: Grundlagen der Problemlösung mit Hilfe der Computer Inhalt: 1. Programm und Programmierung 2. Algorithmen 3. Programmiersprachen 4. Flußdiagramme und Pseudocode 5. Die Effizienz der Algorithmen 1. Programm und Programmierung Programm = vollständige Anweisung zur Lösung einer Aufgabe mit dem Rechner. INPUT PROGRAMM Eingabedaten OUTPUT Ausgabedaten Black box - Ansicht Programmierung = der Vorgang der Erstellung von Programmen. 2/14 1 1. Programm und Programmierung (fortgesetzt) Phasen der Programmierung (i.w.S.): 1. 2. 3. 4. Analyse Datenstrukturierung Algorithmenentwurf und -darstellung Übersetzung in eine Programmierssprache (Programmieren i.e.S., Codierung) 5. Testen und Fehlerbeseitigung 3/14 2. Algorithmen Algorithmus = eine endliche Menge eindeutiger und ausführbarer Schritte zur Lösung eines Problems. Eigenschaften: Allgemeinheit Endlichkeit Eindeutigkeit Deterministik Darstellung in verschiedenen Notationen: Flußdiagramm, Pseudocode, Struktogramm u.s.w. 4/14 2 3. Programmiersprachen Programmiersprache = künstliche Sprache mit präziser Syntax zum Abfassen von Programmen. Typen: Maschinenorientierte PS (assembly language) Problemorientierte PS : • Prozedurale (algorithmische) PS, inkl. objektorientierte PS: Basic, Pascal, C/C++, Java • Nichtprozedurale (deskriptive) PS: SQL PS für künstliche Intelligenz (Lisp, Prolog) Merkmale: Arbeitsgeschwindigkeit Portabilität 5/14 4. Flußdiagramm (auch: Programmablaufplan): Symbole Start, Stopp START a, b, c x1, x2 S=a+b+c Datenein- und ausgabe Datenbearbeitung b<0 Entscheidung 1 Verknüpfung Pfeilen 6/14 3 Grundstrukturen Sequenz Π (S1, S2) Entscheidung Δ (B, S1 ,S2) NEIN S1 Wiederholung Ω ( B, S) JA B JA B S2 S2 S1 S NEIN Δ’(B, S1) NEIN B Ω’( B, S) S JA S1 B NEIN JA 7/14 Beispiel 1: Gleichung 2en Grades (Flussdiagramm) ax2 + bx + c = 0; 2 START Nein a,b,c Nein Ja a=0 Die Gleichung ist nicht 2en Grades ! 1 ∆= Eingabedaten: a,b,c Ausgabedaten: x1, x2 Keine reelle Wurzel ! ∆ >= 0 Ja Nein X1= -b/(2*a) X2 = X1 ∆ > 0 Ja X1= (-b+ √∆)/(2*a) X2= (-b- √∆)/(2*a) X1, X2 1 b2-4*a*c STOP 2 8/14 4 Pseudocode-Notation • Anfang / Ende: program Programmname ... end Programmname • Entscheidung / Verzweigung if Bedingung then S1 else S2 end if • Wiederholung / Schleife: Ω: while Bedingung do S Ω‘: repeat S until Bedingung 9/14 Beispiel 1: Gleichung 2en Grades (Pseudocode) Program Gleichung2 input a,b,c if a=0 then display “Die Gleichung ist nicht 2en Grades !“ else delta = b*b – 4*a*c if delta >= 0 then if delta > 0 then X1=(-b - sqrt(delta))/(2*a) X2=(-b + sqrt(delta))/(2*a) else X1= -b/(2*a); X2 = X1 end if end if display X1, X2 end if; end program 10/14 5 Beispiel 2: Bearbeitung von Vektoren (Flussdiagramm) Vektor mit n Elemente: X=( X(1), X(2), … , X(n) ) START n, X(i); i=1..n Initialisierung S=0 i=1 i<=n Nein Ja S=S+X(i) i=i+1 Summe: S Bearbeitung (Kernteil) Ausgabe STOP 11/14 Beispiel 2: Bearbeitung von Vektoren (Pseudocode) Program SummeV input n; X(i) i=1..n S = 0 i = 1 while i<=n do S = S + X(i) i = i + 1; display S end program 12/14 6 Beispiel 2: Bearbeitung von Vektoren (Pseudocode) Program SummeV-2 input n; X(i) i=1..n S = 0 For i=1 to n do S = S + X(i) Next display S end program 13/14 5. Die Effizienz der Algorithmen • Effizienz = Verwendung “weniger” RechenRessourcen (Zeit, Speicherplatz) • Die Laufzeit der Algorithmen ist geschätzt, abhängig von der Größe der Eingabedaten • Beispiel: Potenzbildung xn • Die Laufzeit ist von der Anzahl der Schritte abhängig (Multiplikation, Addition, Vergleich ...) • Die Funktion S(n) – Schrittzahl des Algorithmus im schlechtesten Fall (obere Grenzen) • S(n) gibt die Zeitkomplexität des Algorithmus 14/14 7