Informatik 01 - Einführung und Grundbegriffe

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

Zentraler Begriff: Algorithmus Definition

• Allgemeines Verfahren zur Lösung einer Klasse von Problemen, das durch eine eindeutige Vorschrift so genau festgelegt ist, dass man es anwenden kann, ohne es verstanden zu haben.

Teilgebiete der Informatik Informatik und Gesellschaft

• Auswirkungen der Informatik auf die Gesellschaft (Rationalisierung, Datensicherheit, soziale Netzwerke, ...)

Ziele

• Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler ... • Einordnung von Java • Ein einfaches Java-Programm erstellen, übersetzen und ausführen • Java-Programme dokumentieren

Teilgebiete der Informatik Theoretische Informatik

• Formale Sprachen • Syntax und Semantik von Programmiersprachen • Algorithmen und Komplexität

Arten höherer Progammiersprachen Logische Sprachen

typisch: Fakten, Regeln, logische Deduktion von neuen Fakten Beispiele: Prolog, Mercury, ...

Arten höherer Progammiersprachen Imperative Sprachen

typisch: Variable, Anweisungen (Befehle), Schleifen (Iteration) Beispiele: Fortran, Algol, Pascal, Modula, C, ...

Arten höherer Progammiersprachen Objektorientierte Sprachen

typisch: wie imperative Sprachen + Klassen, Objekte, Vererbung Beispiele: Simula, Smalltalk, C++, C#, Java, ...

Arten höherer Progammiersprachen Funktionale Sprachen

typisch: Ausdrücke, Funktionsauswertung, rekursive Funktionen Beispiele: Lisp, SML, Haskell, ...

Übersetzung von Java-Programmen

Übersetzung in Bytecode (= Maschinencode für die JVM) • aus einer Textdatei mit Endung „.java" erzeugt der Compiler javac eine Datei mit gleichem Namen, aber Endung „.class" • diese enthält den Bytecode für die JVM

Kommentare in Programmen C. A. R. Hoare: Hints on Programming Language Design (1973)

„The view that documentation is something that is added to a program after it has been commissioned seems to be wrong in principle, and counterproductive in practice. Instead, documentation must be regarded as an integral part of the process of design and coding."

Zentraler Begriff: Algorithmus Eigenschaften

• Jeder Schritt ist eindeutig festgelegt und berechenbar. • Das Verfahren liefert nach endlich vielen Schritten eine Lösung.

Zentraler Begriff: Algorithmus Beispiele

• Modellbau: Montageanleitung • Küche: Kochrezept • Informatik: Such- und Sortieralgorithmen

Teilgebiete der Informatik Praktische Informatik

• Programmierung und Software-Entwicklung • Datenbanksysteme • Betriebssysteme, Middleware für verteilte Systeme

Teilgebiete der Informatik Technische Informatik

• Rechenanlagen und Rechnernetze

Charakteristika von Java

• Imperativ • Objektorientiert: Klassenkonzept, strenge Typisierung • Unabhängig von Plattform: Durch Übersetzung in Virtuelle Maschine (JVM); z.B. für Web-Anwendungen (mit Applets) • Unterstützt parallele Ausführungen (Nebenläufigkeit) • Besitzt eine reichhaltige Klassenbibliothek (API, "Application Programming Interface") zur Wiederverwendung von Programmen

Grober Aufbau eines Java Programms

• Java Programme bestehen aus einer Menge von Klassen. • Eine Klasse besteht aus → Attributen: Beschreiben charakteristische Merkmale der Objekte dieser Klasse → Methoden: Beschreiben Operationen in Form von Algorithmen

Programmierung und Software-Entwicklung Programm

Beschreibung von Datenstrukturen und Algorithmen in einer „dem Computer verständlichen" Sprache (Programmiersprache)

Höhere Programmiersprachen

• Formale Sprachen, in denen Algorithmen und Datenstrukturen möglichst verständlich beschrieben werden können. • Programme in höheren Sprachen werden automatisch, durch Compiler (Übersetzer) genannte Programme, in Maschinencode übersetzt.

Korrektheit von Programmen Semantische Korrektheit

Ein Programm ist semantisch korrekt, wenn bei der Ausführung des Programms die gewünschte Wirkung erzielt wird Beachte: Syntaktisch korrekte Programme sind häufig semantisch nicht korrekt.

Korrektheit von Programmen Syntaktische Korrektheit

Ein Programm ist syntaktisch korrekt, wenn es gemäß den (syntaktischen) Regeln der Programmiersprache geschrieben ist.

Berechenbarkeit

Es gibt verschiedene äquivalente Definitionen der Berechenbarkeit, z.B.: • Ein Problem ist berechenbar, wenn es durch eine Turing-Maschine berechnet werden kann (Alan Turing: 1912 - 1954). • Ein Problem ist berechenbar, wenn es durch eine partiell-rekursive Funktion berechnet werden kann. • Ein Problem ist berechenbar, wenn es durch ein While-Programm berechnet werden kann. Beachte: Nicht alle Probleme sind berechenbar! Beispiel „Halteproblem": Bestimme ob ein x-beliebiges Programm für eine x-beliebige Eingabe terminiert.

Zentraler Begriff: Algorithmus Beispiel: Sortieren einer Liste

Gegeben: Eine Liste von Elementen, die geordnet werden können. Gesucht: Liste mit denselben Elementen in aufsteigender Reihenfolge angeordnet Algorithmus: z.B. Sortieren durch Vertauschen („Bubble Sort"): Falls die Liste leer ist: fertig. Ansonsten: Sei „outer" ein Zeiger auf das letzte Element der Liste. Solange „outer" nicht auf das erste Element zeigt: 1. Sei „inner" ein Zeiger auf das erste Element der Liste. Solange „inner < outer": 1.1 Vertausche Elemente an den Positionen „inner" und „inner+1", wenn sie in falscher Reihenfolge stehen. 1.2 Rücke mit „inner" eine Position vorwärts. 2. Rücke mit „outer" eine Position rückwärts. Beispiel: Sortiere die Liste 5, 33, 12, 13, 8, 1

Gödelscher Unvollständigkeitssatz (1931)

In der Arithmetik gibt es Aussagen, die weder formal bewiesen noch widerlegt werden können

Informatik - Begriff

Information + Mathematik Englisch: Computer Science bedeutet: Wissenschaft der maschinengestützten Informationsverarbeitung

Korrektheit von Programmen Empirie

Man spricht von • normaler Software bei bis zu 25 Fehlern pro 1000 LOC (lines of code), also 2,5% Defektniveau, • guter Software bei bis zu 2 Fehlern pro 1000 LOC (lines of code), also 0,2% Defektniveau.

Erzeugung der Dokumentation

Mit dem Befehl → javadoc Hallo.java wird automatisch eine Beschreibung der Klasse Hallo erzeugt und in die Datei → Hallo.html geschrieben.

Programmierung und Software-Entwicklung Software-Entwicklung

Systematische Konstruktion von Programmen und komplexen Softwaresystemen (→ Systemarchitektur)

Leerzeichen und Formatierung

Völlig irrelevant, man befolgt aber bestimmte Konventionen und Formatierungen


Set pelajaran terkait

AP Computer Science Final Exam Questions

View Set

Chapter 12 Gene Expression EZ Test

View Set

Data Structures Final True/ False

View Set

Mod 7 DHCPv4 HW Homework in Homework

View Set

M9 Life Insurance and Investment-linked policies - Chapter 6 Participating Life Insurance Policies

View Set