57
Grundlagen der Informatik für Wissenschaftliche Anwendungen Dr.-Ing. Eike Schallehn OvG Universität Magdeburg Fakultät für Informatik Institut für Technische und Betriebliche Informationssysteme 2018

Grundlagen der Informatik für Wissenschaftliche Anwendungen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Grundlagen der Informatikfür Wissenschaftliche Anwendungen

Dr.-Ing. Eike Schallehn

OvG Universität MagdeburgFakultät für Informatik

Institut für Technische und Betriebliche Informationssysteme

2018

Organisatorisches zuVorlesung und Übung

Zum Inhalt (Planung) . . .

1 Einführung InformatikInformatik als WissenschaftBereiche der InformatikGeschichte der Informatik

2 Programmierung für wissenschaftliche AnwendungGrundlagen und Arten von ProgrammiersprachenWissenschaftliche Programmierung mit MatlabGrundlagen: Funktionen, Variablen, Felder, MatrizenKontrollstrukturen (Schleifen, Verzweigungen, etc.)Interaktion und Visualisierung

3 ModellierungModellierung von Daten und Verhalten (UML, Alternativen)Grundlagen Objektorientierung (OO in Matlab)Modellbildung und Simulation (Matlab/Simulink)

4 Problemlösungsstrategien (mit Beispielen in Matlab)Optimierung/AlgorithmenmusterEigenschaften von AlgorithmenDatenstrukturenKünstliche Intelligenz

Zugrundeliegende Literatur

Programmieren mit MATLABVon: Ulrich SteinCarl Hanser Verlag, 5. Auflage (2015)ISBN: 978-3446442993Grundlagen der Informatik für IngenieureEinführung in die Programmierung mit C / C++Von: Paul, Georg / Hollatz, Meike / Jesko, Dirk / Mähne,TorstenB.G. Teubner VerlagISBN: 3-519-00428-3Einführung in die Informatik für Naturwissenschaftlerund IngenieureLevi, Paul / Rembold, UlrichHanser Fachbuchverlag; Auflage: 4., aktualis. u. überarb.A. (Januar 2003)ISBN: 978-3446219328

Zum Ablauf . . .

Alle Infos unterhttp://gif.cs.uni-magdeburg.de/EC/

Anmeldung zur VorlesungAnmeldung zu ÜbungsgruppenFolien der VorlesungAufgaben zu ÜbungenEinreichung der Lösung zu Übungsaufgaben

Veranstaltung besteht aus:

Wöchentliche VorlesungWöchentliche ÜbungenSchriftliche Klausur am Ende des Sommersemesters

Prüfungen

Zweistündige (Bearbeitungszeit 120 Minuten) schriftlichePrüfung in der vorlesungsfreien Zeit am Ende desSommersemstersInhaltlich abgedeckt durch Vorlesung und ÜbungZuvor genannte Prüfungsvoraussetzung notwendigeBedingung für ZulassungKeine Hilfsmittel erlaubt!

Alles klar?

Teil I

Einführung

Überblick

1 Was ist Informatik?

2 Bereiche der Informatik

3 Kurzvorstellung MATLAB

4 Geschichte der Informatik

Was ist Informatik?

Informatik= ?

Computer als Arbeitsmittel

„In der Informatik geht es genauso wenig umComputer wie in der Astronomie um Teleskope.“

Edsger Wybe Dijkstra

Der Begriff Informatik

Kunstwort aus den 60ernInformatik→ Information + Technik oderInformatik→ Information + Mathematik oderInformatik→ Information + Automatik...

Definition (Informatik)Informatik ist die Wissenschaft von der systematischen undautomatischen Verarbeitung von Informationen, insbesonderemit Hilfe von Computern.

Im Englischen: Computer Science + Information Science

Bereiche der Informatik

Theoretische Informatik

Theoretische und mathematische Modelle der Informationsverarbeitung:

Entscheidbarkeit und Komplexität von Problemen, Eigenschaften von

Berechnungsmodellen und Sprachen

Praktische Informatik

Techniken der Programmierung und

Entwicklung von Lösungen zur

Informationsverarbeitung (Software):

Programmiersprachen, Algorithmen,

Datenstrukturen, Betriebssysteme,

Datenbanken, etc.

Technische Informatik

Struktur, Aufbau und Funktionsweise

von Computern (Hardware): Elektro-

und Schalttechnik, Speicher,

Prozessoren, Bussysteme, Schnittstellen

und Peripherie

Angewandte Informatik

Entwicklung und Verwendung von speziellen Informationsverarbeitungslösungen für

bestimmte Anwendungen: Ingenieurinformatik, Wirtschaftsinformatik,

Geoinformatik, Bioinformatik, Medieninformatik, etc.

Was ist MATLAB?

MATrix LABoratorySpezialsoftware für numerische und symbolischeMathematikStark ausgerichtet auf Arbeit mit Feldern und MatrizenUmfasst eigene ProgrammierspracheBedeutung in zahlreichen wissenschaftlichen undingenieurtechnischen AnwendungsfeldernErweiterung Simulink häufig Grundlage für Simulation inIngenieuranwendungen

MATLAB Entwicklungsumgebung

MATLAB als Programmiersprache

Vollständige Programmiersprache

Zahlreiche vordefinierte Bibliotheken für mathematischeFunktionen und NutzerinteraktionEinfaches Typsystem, das, wo immer möglich, Typenautomatisch impliziertObjektorientierung als erweitertes ModellierungskonzeptunterstütztKopplung mit anderen Programmiersprachen möglichIntertpretierte, d.h. zur Laufzeit übersetzte, Skriptsprache

Hello World-Programm:disp(’Hello, World!’);

Geschichte der Informatik

Entwicklung von Informationstechnik und Durchdringungdes Alltags seit der 2. Hälfte des 20 JahrhundertsexplosionsartigInformationsgesellschaft

Zunehmende Bedeutung und Wert von InformationenSchnelle Entwicklung von Technologien zur Verarbeitungund Kommunikation

Historische Wurzeln der Informatik reichen zum Teilerheblich weiter Zurück

„Rechenautomaten“„programmierbare Maschinen“Grundlagen aus Mathematik, Elektrotechnik, Linguistik,Kodierungs- und Informationstheorie

Seit ’50er Jahren:Relativ schnelle Folge von RechnergenerationenImmer mehr Anwendungen der Informationstechnik inWirtschaft und Privatbereich

Geschichte der Informatik /1

1100 v. Chr.: erste mechanische Rechenhilfen inIndien/China, z.B. bis heute benutzter Abakus auf Basisdes DezimalsystemsBeschreibung von reproduzierbaren Rechenverfahren,z.B. größter gemeinsamer Teiler durch Euklid (300 v. Chr).Al-Chwarizmi (820) beschreibt Grundlagen vonRechenvorschriften, die nach ihm als Algorithmenbezeichnet werdenIm 17. Jh.: Erste mechanische Rechenautomaten vonWilhelm Schickard (1623), Blaise Pascal (1641) undGottfried Wilhelm Leibniz (1673)

Geschichte der Informatik /2

Abbildung: Blaise Pascals Pascaline

Geschichte der Informatik /3

Gottfried Wilhelm Leibniz beschreibt 1679 erstmalsDualsystem (Binärsystem), welches heute Grundlage fürelektronische Rechner (Speicher, Prozessoren) ist

1110 = 142 10

0 x 2

+ 1 x 2

+ 1 x 2

+ 1 x 2

4 x 10

+ 1 x 10

0

1

2

3

0

1

Entwicklung erster mechanischer, programmgesteuerteMaschinen durch Joseph-Marie Jacquard (1805,Webstühle) und Charles Babbage (1822, mathematischeBerechnungen) und Hollerith (1886, Lochkartensysteme,z.B. für Wahlmaschinen)

Geschichte der Informatik /4

George Boole entwickelt 1854 Boolsche Logik undAlgebra, welche grundlegende logische Operatorenumfasst und damit Grundlage für Funktionsweise vonheutigen Prozessoren ist1936 entwickelt Alan Turing theoretische Turingmaschineund schafft Grundlagen der Theoretischen InformatikEntwicklung erster elektronischer Rechenmaschinen durchKonrad Zuse (1941), Howard Hathaway Aiken (1944)sowie J. Presper Eckert und John W. Mauchly (1946)

Abbildung: ENIAC - Electronic Numerical Integrator and Computer

Geschichte der Informatik /5

John von Neumann entwirft grundlegendeVon-Neumann-Architektur als bis heute aktuelle Referenzfür Aufbau von speicherprogrammierbarenRechnersystemen

Rechenwerk Steuerwerk

Zentrale Vearbeitungseinheit

Bus

Ein-/Ausgabe Speicherwerk

Erstes Computerspiel: Spacewar (1962)Unix als Mehrbenutzer-/Multitasking-Betriebssystem(1969)Arpanet mit TCP/IP Grundlage für heutiges Internet (1969)Grundlagen des World Wide Web: HTML und erster WebBrowser (1990)

Zusammenfassung: Geschichte der Informatik

Wurzeln der InformatikAlgorithmenRechentechnikMathematische Grundlagen

reichen weit zurückSeit 1950 sprunghafte EntwicklungAber: trotz stetiger Neuerungen Grundlagen heutigerTechnik seit Jahrzehnten relativ stabilInformatik ist nicht so schnelllebig, wie man vielleicht denkt

Teil II

Programmierung mit MATLAB

Überblick

1 Grundlagen der Programmierung

2 MATLAB als Programmiersprache

3 Grundlagen: Variablen, Datentypen, Vektoren

4 Funktionen in MATLAB

5 Kontrollstrukturen

6 Nutzerinteraktion und Visualisierung

Programmentwicklung: Problem

Programm muss vonMenschen geschrieben

werden und auch für andereMenschen verständlich sein

Programm muss vomProzessor ohne

Mehrdeutigkeiten undeffizient ausgeführt werden

können

Programmentwicklung: Lösung

MATLABx = input(’x = ’);if (x>0)fprintf(’Positiv.\n’);endif (x==42)fprintf(’Zahl 42. \n’);end

Programmierer verfasstProgramm in sogenannter

Hochsprache

Machine Code AssemblerFA CLI33C0 XOR AX,AX8ED0 MOV SS,AXBC007C MOV SP,7C008BF4 MOV SI,SP50 PUSH AX07 POP ES50 PUSH AX1F POP DSFB STI...

Für die Ausführung durch denProzessor wird das Programmauf eine dem Prozessor eigeneMaschinensprache umgesetzt

Hochsprache vs. Maschinensprache

Programm wird in sogenannten HochsprachengeschriebenFür die Ausführung durch den Prozessor wird dasProgramm auf eine dem Prozessor eigeneMaschinensprache umgesetztZwei Möglichkeiten:Compilierung von Programmen: spezielles Programm

(Compiler ) übersetzt Programm vor derAusführung in Maschinensprache einesgegebenen Prozessors

Interpretation von Programmen: spezielles Programm(Interpreter ) setzt Programmbefehle währendder Ausführungszeit auf Prozessorbefehleum

Compiler vs. Interpreter

CompilerAllgemein schnellere AusführungUrsprünglicher Code in der Regel nicht mehrrekonstruierbar→ Schutz des QuelltextesBreiter Einsatz für Programmierung von Betriebssystemen,Anwendungsprogrammen, etc.C, C++, Pascal/Delphi, FORTRAN und zahlreiche weitere

InterpreterLangsamere Ausführung wegen Aufwand für ÜbersetzungLaufzeitfehler durch Syntaxfehler möglichQuelltext des Programmes bleibt sichtbar: kein Schutz,aber offen für beliebige Anpassungen durch dritteAber: plattformunabhängige Programme (überall woInterpreter läuft)Einsatz als Skriptsprachen zur Ausführungssteuerung, undim Web etc.MATLAB, Perl, PHP, JavaScript, Python und viele andere

Compiler vs. Interpreter /2

In letzten Jahren Mischformen populär, wie z.B. Java (Sun)und .NET (Microsoft)

Compiler übersetzt Programme in „maschinennahen“, aberplattformunabhängigen CodeLaufzeitumgebung (JRE bei Java, CLR bei .NET)übernimmt letzten Schritt der Umsetzung

Zum Teil auch Compiler für interpretierte Sprachenvorhanden

Technisch unproblematischDient der Steigerung der Performance und/oder demSchutz der QuelltexteCompiler auch für MATLAB-Programme

Algorithmen

Aber: was genau macht das Programm?Rückblick:

Definition (Informatik)Informatik ist die Wissenschaft von der systematischen undautomatischen Verarbeitung von Informationen, insbesonderemit Hilfe von Computern.

Die „systematische und automatische Verarbeitung“ wirddurch den Begriff Algorithmus präzisiert.

Definition (Algorithmus)Ein Algorithmus ist eine eindeutige Beschreibung eines inmehreren Schritten durchzuführenden Vorgangs zur Lösungeiner bestimmten Klasse von Problemen.

Algorithmusbeispiel: Kuchen Backen

Problem: Kuchen BackenAlgoritmus: BackrezeptInput: Eier, Mehl, ...Output: Kuchen

1. Zutaten vermengen2. Teig kneten3. Teig in Backform4. Backform in Backofen5. Kuchen 1h backen6. Kuchen entnehmen

Vom Problem zur Lösung

Algorithmus

Problemanalyse

Programm inHochsprache

Programmierung

Programm inMaschinen-

Sprache

Übersetzung

Prozess mitAusgabe des

Resultats

AusführungDurch Prozessor

Von der Entwicklung biszur Ausführung

von Programmen

Ergebnis

Arbeitsschritt

Die MATLAB Entwicklungsumgebung

Grafische Nutzungsschnittstelle fürInteraktives Lösen mathematischer ProblemeVerwaltung von Daten in Variablen und DateienGrafische Ausgabe von Funktionsdiagrammen (Plots)Bearbeitung und Ausführung von ProgrammenErweiterungen der Funktionalität

Die MATLAB Entwicklungsumgebung

Die MATLAB Entwicklungsumgebung: Aufbau

Hauptfenster:Befehlsfenster (Command Window): interaktive Eingabeeinzelner BefehleEditor: Erstellen und Ausführen von Programmen,gespeichert als .m-Dateien

Weitere Fenster:Dateibrowser (Current Folder): Überblick über Programmeund andere DateienBefehlshistorie (Command History): zuletzt eingegebeneBefehleArbeitsumgebung (Workspace): Belegung, Typ undSpeichergröße aktuell genutzter Variablen

Fenster können durch nach Bedarf angeordnet odergeschlossen werden

MATLAB als Programmiersprache

MATLAB ist eine interpretierte Programmiersprache:Programme werden zu Laufzeit übersetzt

MATLAB ist eine imperative Programmiersprache: einAlgorithmus ist dargestellt als Sequenz vonhintereinander auszuführenden Befehlen

MATLAB ist eine prozedurale Programmiersprache: zurStrukturierung des Quelltextes kann derGesamtalgorithmus in inhaltlichzusammenhängende und durch Aufrufverwendbare Prozeduren (Funktionen) zerlegtwerden

MATLAB ist eine objekt-orientierte Programmiersprache: zurweiteren Strukturierung können Daten vonObjekten sowie die zugehörige Funktionalität alsMethoden in Klassen zusammengefasst werden

MATLAB als Programmiersprache: Grundlagen

Variablen halten Werte von Zahlen, Vektoren, Matrizen,Zeichenketten und komplexeren ObjektenOperatoren können Werte berechnen und VariablenverändernZahlreiche vordefinierte FunktionenFunktionen können auch vom Nutzer als Teil einesProgramms definiert werdenAusdrücke setzen sich aus Variablen, Operatoren undFunktionsaufrufen zusammenProgramm besteht aus Sequenz von AusdrückenAußerdem: Programmablauf über Steueranweisung

Bedingte Ausführung/VerzweigungenProgrammschleifen

Variablen

Variable ist (wie aus der Mathematik gewohnt) einName/Platzhalter für einen veränderlichen Wert» x = 7;» y = 3.1415926;» z = ’Hello!’;

Werte können Zahlen, logische Werte, Zeichen/-ketten,Vektoren, Matrizen und komplexere oder nutzerdefinierteKonstrukte sein

Datentypen

Dienen der Festlegung, welche Arten von Werten genutztwerden können, wie sie gespeichert, verarbeitet und interpretiertwerdenGrundlegende Klassen von Datentypen

Numerische Datentypen: ganze Zahlen (Integer) undFließkommazahlen (Floating Point)Textdatentypen: Zeichen (Character), Zeichenketten(String)Logische Datentypen (Logical), meist zweiwertigeBool’schen Logik mit Werten Wahr oder Falsch

Für numerische Daten in der Regel Unterklassen verfügbar jenach Anforderungen bzgl. Speicherverbrauch,Datenbereichsgröße und GenauigkeitTypkonstruktoren wie Felder, Strukturen, Klassen, etc. erlaubenZusammensetzen komplexerer Typen, z.B. für Mediendaten(Bilder, Audio, Video) oder anwendungsspezifische Daten

Grundlegende Datentypen in MATLAB /1

double für beliebige FließkommazahlenWird kein Typ für eine numerische Variableangegeben, ist der Typ automatisch doubleVerwendet 8 Byte, Werte zwischen 3.4 ∗ 1038

und −3.4 ∗ 1038

Präzision bis ca 15 DezimalstellenAlternative: single mit 4 ByteKodierung entsprechend IEEE Standard forFloating-Point Arithmetic (IEEE 754)

int32 für ganze Zahlen4 Byte (32 Bit), Wertebereich von −231 und231 − 1Alternativen: int8, int16, int64 bzw. ohneVorzeichen (unsigned) uint8, uint16,uint32, uint64

Grundlegende Datentypen in MATLAB /2

char für Zeichen und ZeichenkettenUnicode: 2 Bytes pro ZeichenFelder für ZeichenkttenAutomatischer Typ bei Zuweisung mitHochkommas» s = ’Das ist eine Zeichenkette.’;

Alternative: string als Datentyp mitzusätzlichen Funktionen auf textuelle Daten

logical für logische WerteZweiwertige Logik: Werte 0 (false) oder 1(true)Erlauben logische Verknüpfungen: and, or,not, xor, etc.

Datentypen Konvertieren oder Festlegen

Spezielle Funktionen mit Namen der Datentypen erlaubenTypkonvertierung bzw. Typzuweisung bei ErzeugungKönnen bei der Variablendeklaration verwendet werden» y = int8(5)y = 5

Vorsicht: Typkonvertierung kann zu Präzisionsverlust» i = int32(3.1415)i = 3

oder Fehlern führen» y = uint32(-5)y = 0

Datentypen Anzeigen

Anzeige aktueller Variablen mit Datentypen whos

» x = 7;» y = 3.1415926;» z = ’Hello!’;» whosVariables in the current scope:

Attr Name Size Bytes Class

x 1x1 8 doubley 1x1 8 doublez 1x6 6 char

oder mit» whos <variablenname>

für einzelne VariableHilfe zu Datentypen mit help datatypes

Der Zuweisungsopeator =

Zuweisung: Variable auf der linken Seite erhält Wert desevaluierten Ausdrucks auf der rechten SeiteErlaubt z.B.» x = x + 4;

Nicht als Gleichung zu verstehenZu lesen als „der neue Wert von x ergibt sich aus dem altenWert von x plus 4“

Weitere wichtige Operatoren

Standardisierte Rechenoperatoren wie +,−, ∗,÷ etc.Existieren als skalare Operatoren für Einzelwerte (z.B. .∗)oder für alle spezielle Vektoren- oder Matrizenoperationen(einfach ∗)Auch definiert als (überladbare) Funktionen z.B. plus()

Vergleichsoperatoren wie == (Gleicheit), ∼=(Ungleichheit), <=, >=, >,< etc.

Ergebnis der Auswertung ist logischer Wert

Logische Operatoren AND (& oder &&), OR (| oder ||) undNOT (∼)Weitere Operatoren für Matrizen und Mengen sowienutzerdefinierte Operatoren

Hilfsfunktionen für Numerische Werte

floor() rundet ab auf nächst kleineren Ganzzahlwert(Abschneiden des Nachkommaanteils)ceil() rundet auf auf nächst größeren Ganzzahlwertround() rundet zum näherliegenden Ganzzahlwert

Vektoren

Tupel von Fließkommazahlen unterschiedlicherDimensionalitätIn der Programmierung auch als Feld (Array) bezeichnetSpaltenvektor (n ∗ 1-Matrix)» v = [1 ; 2 ; 3]v =123

Zeilenvektor (1 ∗ n-Matrix) (mit Kommas oder Leerzeichen)» u = [1 , 2 , 3]u =1 2 3

Vektoren /2

Neben der Belegung mit literalen Werten auchHilfsfunktionen vorhandenVorbelegung mit Nullwerten» v = zeros(1,5)v =0 0 0 0 0

Vorbelegung mit Zahlenbereich» v = 1:4v =1 2 3 4

Array von bestimmtem Datentyp durch Kombination mitTypkonvertierungsfunktion» v = int8(1:5)v =1 2 3 4 5

Vektoren /3

Vorbelegung mit Zufallswerten (double zwischen 0 und 1)» x = rand(1,3)x =0.2774 0.4344 0.3503

Vorbelegung mit zufälligen ganzen Zahlen (doublezwischen 1 und 10)» x = randi(10,1,3)x =2 9 1

Vorbelegung mit zufälligen ganzen Zahlen (zwischen 0 und100)» x = randi([0, 100], 1, 3)x =65 100 68

Vektoren /4

Transposition von Vektoren mit ’ (Umwandlung von Zeilen-in Spaltenvektoren und umgekehrt)» x = [1, 2, 3]x =1 2 3» x’ans =123

Vektoren /5

Verknüpfung von Vektoren» x = [1, 2, 3];» y = [4, 5, 6];» [x,y]ans =1 2 3 4 5 6

Euklid’sche Norm eines Vektors» norm( [3 , 4] )ans =5

Matrizen /1

Matrizen von Fließkommazahlen unterschiedlicherDimensionalität» m = [ 1, 5 ; 7, 2]m =1 57 2

Zahlreiche Funktionen zur Definition vorhanden, z.B.» m = zeros(3,3)m =0 0 00 0 00 0 0

zeros(3) erzeugt dieselbe Matrix (bei einem Parameterimmer quadratisch)

Matrizen /2

Erzeugung einer Identitätsmatrix» x = eye(3)x =1 0 00 1 00 0 1

Erzeugung einer Matrix 2 ∗ 2 mit zufälligen Wertenzwischen 1 und 10» x = randi(10,2,2)x =2 105 4

Matrizen /3

Transponieren einer Matrix mit ’» x’ans =2 510 4

Dimensionalität einer Matrix» size (x)ans =2 2

det() für die Determinante einer quadratischen Matrix

Arbeit mit Matrizen

MATLAB erlaubt einfache Programmierung mit MatrizenViele Funktionen nehmen Matrizen als ParameterOperatoren auf Matrizen definierte

Zahlreiche Funktionen und Operationen direkt imSprachumfang unterstützt

matrix1 = [1 1 1; 0 1 1; 0 0 1];disp(matrix1);matrix2 = [1 2 3; 4 5 6; 7 8 9];disp(matrix2);disp(matrix1 * matrix2);

Operationen auf Matrizen

Manche Operationen können aufganze Matrix ∗ oder auf Komponenten .∗ ausgeführt werden» m = [ 1, 5 ; 7, 2];» m * mans =36 1521 39

» m .* mans =1 2549 4