Kap. 1 Allgemeine Begriffe Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 1 1.1 Informatik Was ist Informatik ? Kunstwort, gebildet aus Information und Automatik Informatik (engl. Computer Science) ist die Wissenschaft von der systematischen Darstellung, Verarbeitung, Speicherung und Übertragung von Informationen. Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 2 Teilgebiete der Informatik Theoretische Informatik Praktische Informatik Technische Informatik Angewandte Informatik Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 3 Theoretische Informatik Formale Methoden Formale Sprachen Automatentheorie Machbarkeit (Berechenbarkeit, Komplexität) Analyse von Algorithmen Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 4 Praktische Informatik Betriebssysteme Programmiersprachen und Compilerbau Datenbanken, Rechnernetze Grafik/Multimedia Softwaretechnik Künstliche Intelligenz Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 5 Technische Informatik Hardwareentwicklung Rechnerarchitektur Schaltkreise VLSI-Entwurfswerkkzeuge Mikroprozessoren- und programmierung Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 6 Angewandte Informatik Verwendung der Methoden in anderen Wissensgebieten Ergonomie und Akzeptanz,... Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 7 1.2 Programmierung Ein Programm ist ein in einer Programmiersprache formulierter Algorithmus. -> Was ist eine Programmiersprache ? -> Was ist ein Algorithmus ? -> Was ist ein „gutes“ Programm ? Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 8 Programmiersprachen Beispiele : C++ Assembler Fortran SQL HTML Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 9 Programmiersprachen: C++ if ( durchmesser <= 0 ) // unzulässig { cout << " Durchmesser muss > 0 sein "; return 1; } else // Eingabedaten in Ordnung { flaeche=pow(durchmesser,2)*pi/4; widerstand= rho*laenge/flaeche; // Ausgabe cout << " Laenge \t" << laenge << " m" << endl; cout << " Durchmesser \t" << durchmesser <<" mm" << endl; cout << " Widerstand \t" <<widerstand <<" Ohm"<<endl; return 0; } Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 10 Programmiersprachen: Assembler ; 14 : 0007e 00083 00088 ; 15 : 0008d $L1646: ; 17 : 0008f 00094 00096 00099 0009a 0009d 0009e 000a3 000a6 000a9 000af ; 18 : 000b2 000b5 000b8 000bb cout << " Durchmesser muss > 0 sein "; OFFSET FLAT:??_C@_0BM@IBC@?5Durchmesser?5muss?5?$DO?50?5sein?5? 68 00 00 00 00 push b9 00 00 00 00 mov ecx, OFFSET FLAT:?cout@@3Vostream_withassign@@A e8 00 00 00 00 call ??6ostream@@QAEAAV0@PBD@Z ; ostream::operator<< else eb 65 jmp SHORT $L1648 flaeche=pow(durchmesser,2)*pi/4; 68 00 00 00 40 push 1073741824 ; 40000000H 6a 00 push 0 8b 55 e4 mov edx, DWORD PTR _durchmesser$[ebp+4] 52 push edx 8b 45 e0 mov eax, DWORD PTR _durchmesser$[ebp] 50 push eax e8 00 00 00 00 call _pow 83 c4 10 add esp, 16 ; 00000010H dc 4d f8 fmul QWORD PTR _pi$[ebp] dc 35 00 00 00 00 fdiv QWORD PTR __real@8@40018000000000000000 dd 5d d8 fstp QWORD PTR _flaeche$[ebp] widerstand= rho*laenge/flaeche; dd 45 f0 fld QWORD PTR _rho$[ebp] dc 4d e8 fmul QWORD PTR _laenge$[ebp] dc 75 d8 fdiv QWORD PTR _flaeche$[ebp] dd 5d d0 fstp QWORD PTR _widerstand$[ebp] Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 11 Programmiersprachen: Fortran * If ( durchmesser .LT. 0 ) Then unzulässig print *, ’ Durchmesser muss > 0 sein’ STOP 1 Else * Eingabedaten in Ordnung flaeche=durchmesser**2*pi/4; widerstand= rho*laenge/flaeche; Ausgabe print *, ’ Laenge =’,laenge,’ m’ print *, ’ Durchmesser= ’,durchmesser,’ mm’ print *, ’ Widerstand= ’,widerstand,’ Ohm’ STOP 0 * Endif Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 12 Weitere Programmiersprachen SQL: Datenbank HTML: Web ABAP: Sap Java: obhektorientiert ähnlich C++ …. Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 13 Algorithmus Ein Algorithmus ist eine Verarbeitungsvorschrift, die endlich und eindeutig beschrieben werden kann und bei der jede Anweisung in endlicher Zeit ausgeführt werden kann, um eine Klasse von Problemen zu lösen. Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 14 Kriterien für ein Programm Ein Programm ist ein in einer Programmiersprache formulierter Algorithmus. Beurteilungskriterien für ein Programm Was ist ein gutes Programm ? Sicht des Programmierers <-> Sicht des Benutzers Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 15 Programmierersicht Flexibilität Anpassung an neue Anforderungen durch Änderung bestehender Bausteine Versionsführung Adaptibilität Anpassung an neue Anforderungen durch Hinzunahme neuer Bausteine Portabilität Plattformunabhängig Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 16 Benutzersicht Benutzerfreundlichkeit Qualität Wirtschaftlichkeit Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 17 Benutzerfreundlichkeit verständliche Hilfefunktion kontextbezogene Hilfe verständliche Fehlermeldungen gut dokumentiert Übersichtlichkeit der graphischen Oberfläche standardisierte Oberfläche leicht erlernbar gut erinnerbar intuitiv zutreffende Namen/Bezeichnungen Brauchbarkeit Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 18 Wirtschaftliche Überlegungen Abwärts-Aufwärts-Kompatibilität Geschwindigkeit preiswert termingerecht Langlebigkeit ressourcensparend Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 19 Qualitätsmerkmale Keine Fehler/zuverlässig Korrekt : Ergebnis stimmt Robust : ungültige Eingaben abweisen Ausfallsicher : Erkennen von Störungen, unzulässigen Nutzern, unerwünschte Ausgaben Sicherheit (Datenschutz, Programmsicherheit) Stabilität Erweiterbarkeit Konfigurierbarkeit Skalierbarkeit Wartbarkeit Flexibler Einsatz Effektiv (->Ergebnis): die Anforderungen des Benutzers effektiv erfüllen Effizient(->Methode): keine Verschwendung von Ressourcen (Zeit/Speicher) Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 20 1.3 Ziele der Vorlesung Es ist nicht das Ziel dieser Vorlesung, Studenten zu Programmierexperten in C++ auszubilden. -> -> -> -> -> -> Grundlagen der Technik und Einschätzung der Möglichkeiten eines C++ Programms Gefühl für den Aufwand Kommunikation mit Spezialisten Strukturierung von Problemen Methodisches Vorgehen (u.a. Analyse/Entwurf/Entwicklung/Test/Dokumentation) Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 21 Identifizierung und Strukturierung Daten Funktionen Identifizierung Strukturierung Datenanalyse Datenmodell Funktionsanalyse Funktionsmodell Dr. Norbert Spangler / Grundlagen der Informatik } 09.10.2006 Objekt modell 22 Programmentwicklung Methodisches Vorgehen Vorgehensmodell für Programm-/Systementwicklung : Phasenmodell Modularisierung Daten und Funktionen (Objektorientierung) Programmaufbau (EVA) Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 23 1.4 Beispielprogramm Beispiel : Widerstand eines Kupferdrahts Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 24 Programmaufbau Das Programm besteht aus einer Folge von Anweisungen Deklarationen Kommentaren Der prinzipielle Aufbau ist : - Einleitender Kommentar Präprozessor-Direktiven Deklarationen (Speicherreservierung) Eingabe mit Plausibilitätskontrolle (E) Verarbeitung (V) Ausgabe (A) Dr. Norbert Spangler / Grundlagen der Informatik -> EVA-Prinzip 09.10.2006 25 1.5 Bestandteile von C++ Kommentare Elementare Typen (Klassen) Zahlen (ganze Zahlen/“Brüche“) – Zeichen – wahr/falsch Verknüpfung (Rechnen) mit den elementaren Typen + - * / ....... < <= ( >> << ) Elementare Befehle/Kontrollstrukturen = return if else Funktionen pow Ein-/Ausgabe cin cout ..... Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 26 Methoden der Strukturierung Programmaufbau E-V-A Verwendung von Funktionen Modellierung von Daten und Funktionen (Objektorientierung) Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 27 1.6 Prinzipieller Ablauf der Programmerstellung Analyse des Problems Programmentwurf (Methoden/Techniken) Programmeingabe (Editor) - programm.cpp Aufruf des Compilers (Präprozessor + Compiler) -> programm.obj Aufruf des Linker -> programm.exe Programmausführung/Test/Debug Dokumentation Programmeinführung Betrieb inkl. Wartung und Pflege Dr. Norbert Spangler / Grundlagen der Informatik 09.10.2006 28