Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

Ähnliche Dokumente
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Einführung in die Programmierung mit Java

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Übersicht: Inhalt und Ziele. Kapitel 1: Einführung und Grundbegriffe. Was ist Informatik? Teilgebiete der Informatik

III.1 Prinzipien der funktionalen Programmierung - 1 -

Abschnitt 1: Einführung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Institut für Programmierung und Reaktive Systeme. Java 1. Markus Reschke

Vorkurs Informatik WiSe 16/17

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -

II.1.1. Erste Schritte - 1 -

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Programme erstellen in Java

Vorkurs Informatik WiSe 17/18

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

II.1.1. Erste Schritte - 1 -

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprache. Emily & rica

Grundlagen der Modellierung und Programmierung, Übung

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

II.1.1. Erste Schritte - 1 -

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Grundlagen der Programmierung UE

Informatik I - Einstiegskurs

Vorkurs Informatik WiSe 15/16

Von der Programmiersprache WHILE zum ersten Einstieg in Java

Einführung in die Programmierung Wintersemester 2016/17

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Grundlagen der Programmierung UE

Algorithmen und Datenstrukturen

Einführung in die Programmierung

Teil I. Konzepte imperativer Programmierung in Java

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

1 Programmiersprachen 1.1 1

Einführung in die Programmierung

Informatik Vorkurs Sommersemester 2015

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

II.1.1. Erste Schritte - 1 -

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Einführung in die Programmierung 1

Praktische Informatik I

Kapitel 1. Einführung. Skript zur Vorlesung Einführung in die Programmierung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmierkurs. Manfred Jackel

Java: Eine kurze Einführung an Beispielen

2 Eine einfache Programmiersprache

Einstieg in die Informatik mit Java

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

Programmieren lernen mit Perl

JAVA als erste Programmiersprache Semesterkurs

Inhalt. Einführung in die Strukturierte Programmierung 15

Computeranwendung und Programmierung (CuP)

Algorithmen versus Programmiersprachen

Software-Entwicklung

Java I Vorlesung 1 Einführung in Java

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Definitionen/Vorarbeit zum Thema Java

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

2 Eine einfache Programmiersprache

2. Einführung. Informatik II für Verkehrsingenieure

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Einstieg in die Informatik mit Java

Einführung in die Programmierung. (K-)II/Wb17

2. Programmierung in C

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Fortgeschrittene Programmierungsmethoden

Klassenvariablen, Klassenmethoden

2 Eine einfache Programmiersprache

2.2 Syntax, Semantik und Simulation

Einführung in die Informatik Turing Machines

Grundlegende Sortieralgorithmen

3. Grundlegende Sprachkonstruktionen imperativer Programme

Funktionale Programmiersprachen

Computergrundlagen Turingmaschinen und Programmierung

Transkript:

1 Kapitel 1

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

3 Informatik ist ein Kunstwort, das in den 60ziger Jahren in Frankreich kreiert wurde, entstanden aus Information + Mathematik englisch: Computer Science neuerdings auch: Informatics bedeutet Wissenschaft der maschinengestützten Informationsverarbeitung Informatik

4 Teilgebiete der Informatik Praktische Informatik Programmierung und Software-Entwicklung Datenbanksysteme Betriebssysteme, Middleware für verteilte Systeme Theoretische Informatik Formale Sprachen Syntax und Semantik von Programmiersprachen Algorithmen und Komplexität Technische Informatik Rechenanlagen und Rechnernetze Informatik und Gesellschaft Auswirkungen der Informatik auf die Gesellschaft (Datensicherheit, Allgegenwärtigkeit von Rechnern, soziale Netzwerke, )

5 Aufbau eines Computers (von Neumann Modell) Die meisten heute benutzten Computer entsprechen der Von-Neumann-Architektur. Prozessor (Rechenwerk (ALU), Steuerwerk) Speicher für Programmbefehle und Daten (Hauptspeicher, Festplatten, ) Ein- und Ausgabegeräte (Tastatur, Bildschirm, )

6 Programm Programmierung und Software-Entwicklung Beschreibung von Datenstrukturen und Algorithmen in einer dem Computer verständlichen Sprache (Programmiersprache) Programmierung Problem Datenstrukturen und Algorithmen Programm Problemlösung Codierung Software-Entwicklung Systematische Konstruktion von Programmen und komplexen Softwaresystemen ( Systemarchitektur)

7 Zentraler Begriff: Algorithmus Algorithmus (nach Al-Khwarizmi, um 800) Allgemeines Verfahren zur Lösung eines Problems, das durch eine eindeutige Vorschrift so genau festgelegt ist, dass man es anwenden kann, ohne es verstanden zu haben. Eigenschaften: Jeder Schritt ist eindeutig festgelegt und berechenbar. Das Verfahren liefert nach endlich vielen Schritten eine Lösung (es terminiert). Beispiele: Modellbau: Montageanleitung Küche: Kochrezept Informatik: Such- und Sortieralgorithmen Al'Khwarizmi 790-840 Author von Hisab al-jabr w'al-muqabala

Berechenbarkeit 8 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. Gödelscher Unvollständigkeitssatz (1931): In der Arithmetik gibt es Aussagen, die weder formal bewiesen noch widerlegt werden können.

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 9

10 Bubble Sort in Java static void bubblesort(double[] a){ for (int outer = a.length - 1; outer > 0; outer--) { for (int inner = 0; inner < outer; inner++) { if (a[inner] > a[inner + 1]) { // tausche a[inner] und a[inner + 1] int temp = a[inner]; a[inner] = a[inner + 1]; a[inner + 1] = temp;

11 Höhere Programmiersprachen Formale Sprachen, in denen Algorithmen und Datenstrukturen möglichst verständlich beschrieben werden können. Beispiel: Bubble Sort in Java Programme in höheren Sprachen werden automatisch, durch Compiler (Übersetzer) genannte Programme, in Maschinencode übersetzt. Programm in höherer P Programmiersprache Maschinen- P Programm Compiler

Arten höherer Progammiersprachen Imperative Sprachen typisch: Variable, Anweisungen (Befehle), Schleifen (Iteration) Beispiele: Fortran, Algol, Pascal, Modula, C, 12 Funktionale Sprachen typisch: Ausdrücke, Funktionsauswertung, rekursive Funktionen Beispiele: Lisp, SML, Haskell, Objektorientierte Sprachen typisch: wie imperative Sprachen + Klassen, Objekte, Vererbung Beispiele: Simula, Smalltalk, C++, C#, Java, Logische Sprachen typisch: Fakten, Regeln, logische Deduktion von neuen Fakten Beispiele: Prolog, Mercury,

13 Entwicklunggeschichte von Java 1960 Algol 60 Lisp Simula 67 1970 Pascal C 1980 Modula 2 Eiffel Smalltalk ML 1990 Modula 3 2004, 2006 2011, 2014 C++ Java Java 5, Java 6 Java 7, Java 8

14 Charakteristika von Java Imperativ Objektorientiert: Klassenkonzept, strenge Typisierung Unabhängig von Plattform: Durch Übersetzung in Bytecode; 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 15 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

16 Syntaktische Struktur eines (sehr) einfachen Java-Programms public class <Klassenname> { public static void main(string[] args) { <Anweisungen> Folgendes Beispiel-Programm gibt den Text Hallo! aus: public class Hallo { public static void main(string[] args) { System.out.println("Hallo!");

17 Methodenaufruf Methodenaufruf allgemein: object.methodname(parameters); //bei statischen Methoden: class.methodname(parameters); Beispiel: System.out.println("Hallo!");

18 Anstelle von Leerzeichen und Formatierung public class Hallo { public static void main(string[] args) { System.out.println("Hallo!"); hätten wir auch schreiben können public class Hallo { public static void main(string[] args ) {System.out.println("Hallo!"); Meist folgt man bestimmten Konventionen für die Formatierung.

19 Übersetzung von Java-Programmen Übersetzung in Bytecode (für die Java Virtual Machine (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. Hallo.java Hallo.class public class Hallo {...... Quellprogramm als Textdatei Hallo.java Compiler javac Bytecode als Datei Hallo.class

20 Ausführung von Java-Programmen Die Datei mit dem Bytecode wird der JVM übergeben und von der JVM ausgeführt. Hallo.class... Bytecode als Datei Hallo.class Java Virtual Machine java Ergebnisausgabe (von Hallo auf Bildschirm) Einführung

21 Übersetzung und Ausführung von Hallo.java Übersetzung von Hallo.java: C:> javac Hallo.java Unter Windows (falls Systemvariable zum Auffinden von javac nicht gesetzt sind): C:> "C:\Program Files (x86)\java\jdk1.7.0\bin\javac" Hallo.java Ausführung von Hallo.class: C:> java Hallo Gibt auf Bildschirm aus: Hallo!

22 Korrektheit von Programmen Syntaktische Korrektheit: Ein Programm ist syntaktisch korrekt, wenn es gemäß den (syntaktischen) Regeln der Programmiersprache geschrieben ist. 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. Bemerkung: 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.

23 Kommentare in Programmen 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. C. A. R. Hoare: Hints on Programming Language Design (1973)

24 Kommentare in Java-Programmen Durch // bla bla wird eine Zeile oder ein Rest einer Zeile zum Kommentar. Mehrere Zeilen können folgendermaßen auskommentiert werden: /* bla bla bla */

25 Die Klasse Hallo dokumentiert /* Diese Klasse dient zum Anzeigen des Strings "Hallo!" auf dem Bildschirm */ public class Hallo { /* * Die Methode main gibt aus "Hallo!" */ public static void main(string[] args) { System.out.println("Hallo!");