der Universität Oldenburg

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Imperative Programmierung
der Universität Oldenburg
Fast Fourier Transformation
der Universität Oldenburg
Programmierung: Einführung
Claudio Moraga; Gisbert Dittrich
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Zimmermann
Zusammenfassung der Vorwoche
Imperative Programmierung -Entwicklungswerkzeuge
Objektorientierte Programmierung
Imperative Programmierung
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Syntax der Aussagenlogik
Verifizieren versus Berechnen
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
Java- Syntax.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Fakten, Regeln und Anfragen
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Beispiele für Ausdrucksalgebren
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
? Was ist Informatik? Was ist Informatik? Alexander Lange
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Wiederholte Programmausführung
Analyse von Ablaufdiagrammen
Kompetenz -, Lern - und Prüfungsbereiche Anforderungsbereiche
Programmieren in C Einführung
Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Frühjahrs-/Sommersemester 2013
Johann Baron von Neumann
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Informatik Formale Sprachen 1.2 Grammatiken formaler Sprachen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mensch – Maschine - Kommunikation
7. Formale Sprachen und Grammatiken
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
 Sortigkeit oder Arität
 Präsentation transkript:

der Universität Oldenburg Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität Oldenburg Vorlesung 2 Dietrich Boles

Gliederung von Vorlesung 2 Programmierung Terminologie Algorithmen Programme Programmiersprachen Klassifikation Abstraktionsebenen Syntaxdiagramme Backus-Naur-Form Programmentwicklung Entwicklungsphasen Entwicklungswerkzeuge Compilation Computer Arbeitsweise Hardware Software Speicher Aussagenlogik Aussagen Eigenschaften von Aussagen

Programmierung / Terminologie Programmierung: Erstellung von Computerprogrammen Softwareentwicklung: Methoden zum Lösen von Problemen mit dem Computer Algorithmus: Arbeitsanleitung für einen Computer Programmiersprache: computerverständliche Notation zur Formulierung von Algorithmen Programm: in einer Programmiersprache formulierter Algorithmus „Programmieren im Kleinen“: Lösen kleiner Probleme „Programmieren im Großen“: Lösen komplexer Probleme Softwareengineering: Vorgehensmodelle, Entwicklungsmethoden, Entwicklungsumgebungen, Projekt-, Qualitäts- und Konfigurationsmanagement

Programmierung / Algorithmus / Motivation Arbeitsanleitungen: Kochrezepte Bastelanleitungen Partituren Spielregeln Aufbau: Menge von Anweisungen Charakteristika: Anweisungssequenzen bedingte Anweisungen Anweisungsschleifen Zutaten / Voraussetzungen „schwammige“ Formulierungen

Programmierung / Algorithmus / Definition Arbeitsanleitung zum Lösen eines Problems bzw. einer Aufgabe, die so präzise formuliert ist, daß sie von einem Computer ausgeführt werden kann Formulierung von Algorithmen: Umgangssprachlich Programmiersprache Programmablaufpläne Struktogramme Ausführung von Algorithmen: durch einen Prozessor (Mensch / Computer) Prozeß Computer: schnell zuverlässig hohe Speicherfähigkeit

Programmierung / Algorithmus / Formulierung Beispiel: Berechnung der Summe aller Zahlen von 1 bis n Umgangssprachliche Formulierung: Addiere für eine vorgegebene natürliche Zahl n die Zahlen von 1 bis n. Dies ist das Resultat. Programmiersprache: int n = readInt(); int erg = 0; int i = 0; while (i <= n) { erg = erg + i; i = i + 1; } printInt(erg);

Programmierung / Algorithmus / Formulierung Programmablaufpläne / Flußdiagramme:

Programmierung / Algorithmus / Formulierung Struktogramme / Nassi-Shneiderman-Diagramme:

Programmierung / Algorithmus / Eigenschaften theoretisch: Eindeutigkeit Parametrisierbarkeit Finitheit Ausführbarkeit Terminierung Determiniertheit Determinismus praxisrelevant: korrekt vollständig effizient (Zeit) sparsam (Speicher) erweiterbar wiederverwendbar portabel verständlich

Programmierung / Programme Programm: ein in einer Programmiersprache formulierter Algorithmus Programmieren: Erstellen von Programmen Programmierer: Entwickler von Programmen Programmcode, Quellcode, Sourcecode: Programmbeschreibung ausführbares Programm: Programm in maschinenverständlicher Form Programmaufruf: Ausführung eines ausführbaren Programms

Programmiersprachen / Klassifikation Anwender: Anfänger Experten Paradigmen: imperativ funktional prädikativ regelbasiert objektorientiert Abstrahierungsgrad: maschinennah problemorientiert Komplexität: problemspezifisch „general-purpose“

Programmiersprachen / Abstraktionsebenen Lexikalik: gültige Zeichen und Wörter der Sprache Syntax: korrekter Aufbau von Sätzen der Sprache Semantik: Bedeutung von Sätzen der Sprachen Pragmatik: Einsatzbereich einer Sprache Quell- programm Token- folge Ableitungs- baum Ziel- programm Lexikalische Analyse (Scanner) Syntaktische Analyse (Parser) Semantische Analyse/ Codegenerierung

Programmiersprachen / Lexikalische Analyse Entfernung von Trennzeichen und Kommentaren Erkennung von Token (Zeichen, die bedeutungsmäßig zusammengehören): Schlüsselwörter Konstanten Bezeichner Symbole Zeichenketten ... Grundbaustein: endlicher Automat Beschreibung: reguläre Ausdrücke while n > do := n - 1 ; PASCAL while n > 0 do n := n-1;

Programmiersprachen / Syntaktische Analyse Überführung einer Tokenfolge in Ableitungsbaum Untersuchung auf syntaktische Korrektheit Beschreibung: kontextfreie Grammatiken Darstellung: Syntaxdiagramme, BNF Zuweisung Variable := Ausdruck n := 3 + i + n Term Term Konstante Variable 3 i

Programmiersprachen / Semantische Analyse Überprüfung des Ableitungsbaums auf Fehler (kontextsensitive Zusatzbedingungen) Vorbereitung der Codeerzeugung Nutzung einer Symboltabelle attributierte Syntaxbäume

Programmiersprachen / Syntaxdiagramme Technik zur graphischen Darstellung kontextfreier Grammatiken Elemente: Knoten Ellipsen (Token, Terminale) Rechtecke (Nichtterminale) Kanten knotenverbindende Pfeile eintretender Pfeil (Eingangskante) austretender Pfeil (Ausgangskante) Interpretation: Durchläuft man ein Syntaxdiagramm von der Eingangs- zur Ausgangskante entlang den Pfeilen, dann ist die Folge der Knoteninhalte, die dabei „aufgesammelt“ werden, aus dem Syntaxdiagramm ableitbar.

Programmiersprachen / Syntaxdiagramme Syntaktisch korrekt: Schlangen Delphine Schlangen Elephanten Pinguine Delphine Schlangen Elephanten Pinguine Affen Delphine Schlangen Elephanten Pinguine Elephanten Pinguine Delphine Syntaktisch nicht korrekt: Elephanten Delphine Schlangen Pinguine Schlangen Elephanten Affen Delphine Schlangen Pinguine Schlangen Delphine

Programmiersprachen / Syntaxdiagramme Definition: Jedes Syntaxdiagramm (SD) besitzt eine Bezeichnung Elemente eines Syntaxdiagramms sind Knoten (Ellipsen, Rechtecke) und Kanten (Pfeile) Rechtecke enthalten die Bezeichnung eines (anderen) Syntaxdiagramms Ellipsen enthalten Token in jeden Knoten führt genau ein Pfeil hinein aus jedem Knoten führt genau ein Pfeil hinaus Pfeile dürfen sich aufspalten bzw. zusammengezogen werden jedes SD besitzt genau eine eintretende Kante (kein Ausgangsknoten) jedes SD besitzt genau eine austretende Kante (kein Eingangsknoten)

Programmiersprachen / Syntaxdiagramme b D D c Syntaktisch korrekt oder nicht ? abababccc ababcccabab aba ccccccc abDc bababac ababcdcd ABABABc

Programmiersprachen / Syntaxdiagramme b Syntaktisch korrekt oder nicht ? aSb aab aaabbb abbbbbbb aaabbbaaa L (S) = ?

Programmiersprachen / Syntaxdiagramme L = {a (b c) d } | n ist natürliche Zahl oder Null; i ist natürliche Zahl} 2

Programmiersprachen / BNF Backus-Naur-Form: Technik zur textuellen Darstellung kontextfreier Grammatiken Verwendung von Ersetzungsregeln (Produktionen) besitzen linke und rechte Seite linke Seite: Nichtterminalsymbol Nichtterminalsymbol: durch < > gekennzeichnet Alternativen: durch | gekennzeichnet e (Epsilon): leere Alternative EBNF: Erweiterung der BNF (Abkürzungsmöglichkeiten) [...] bedeutet: Symbole in Klammern können auch wegfallen {...} bedeutet: Symbole in Klammern können beliebig oft wiederholt werden

Programmiersprachen / BNF <Zoo> ::= „Schlangen“ <Säugetiere-und-mehr> <Säugetiere-und-mehr> ::= <Säugetiere> „Pinguine“ | <Säugetiere> „Delphine“ <Säugetiere> ::= „Elephanten“ | „Affen“ | e

Programmiersprachen / BNF EBNF: <Zoo> ::= „Schlangen“ <Säugetiere> {„Pinguine“ <Säugetiere>} „Delphine“ <Säugetiere> ::= „Elephanten“ | „Affen“ | e

Programmentwicklung / Entwicklungsphasen Problem Analyse D o k u m e n t a i Entwurf Implementierung Test Programm

Programmentwicklung / Entwicklungsphasen Analyse: Untersuchung des Problems und des Problemumfelds Diskussion mit anderen Personen Fragestellungen / Tätigkeiten: Problemstellung exakt und vollständig gegebene Initialzustände und Eingabeparameter gewünschte Endzustände und Ausgabewerte Randbedingungen, Constraints Entwurf: Entwicklung des Algorithmus kreativer Prozeß (Auffassungsgabe, Intelligenz, Erfahrung) existierende Lösungen für vergleichbare Probleme allgemeinere Probleme rekursive Aufteilung des Problems in Teilprobleme Durchführung des Entwurfsprozeß für Teilprobleme Zusammensetzen der Lösungen der Teilprobleme zur Lösung des Gesamtproblems

Programmentwicklung / Entwicklungsphasen Implementierung: Übertragung des Entwurfs in eine Programmiersprache Fragestellungen / Tätigkeiten: Editieren Compilieren Test: Überprüfung des Programms auf logische und technische Fehler man kann nur die Existenz von Fehlern nachweisen, nicht die Abwesenheit! Korrektheit Vollständigkeit Debugging Teststrategien: andere Personen testen lassen Testmengen konstruieren (Randfälle/Grenzwerte finden) nach Fehlerbeseitigung erneut testen

Programmentwicklung / Entwicklungsphasen Dokumentation: Exakte Problemstellung Beschreibung der generellen Lösungsidee Beschreibung des Algorithmus Programmcode Beschreibung der Testmengen Protokolle der Testläufe aufgetretene Probleme alternative Lösungsansätze Weitere Tätigkeiten: Effizienzverbesserung Wartung Portierung

Programmentwicklung / Entwicklungswerkzeuge Editore: Manipulation des Programmcodes Compiler: Transformation eines Quellprogramms in ein Zielprogramm Interpreter: inkrementelle Abarbeitung des Quellcodes Debugger: Erkennung von Laufzeitfehlern Dokumentationshilfen: Erstellung von Teilen der Dokumentation Laufzeitsystem: Hilfsprogramme bei der Programmausführung Programmbibliotheken: Sammlungen fertiggestellter Programme

Programmentwicklung / Compilation

Computer Gerät zur automatischen Verarbeitung von Daten Computer setzen sich zusammen aus Hardware (physikalische Geräte; Zentraleinheit plus periphere Geräte) Software (Programme) Arbeitsweise:

Computer / Hardware Von-Neumann-Rechnerarchitektur:

Computer / Hardware Von-Neumann-Prinzipien: Computer besteht aus fünf Funktionseinheiten Unabhängigkeit von zu bearbeitenden Problemen Steuerung mit Hilfe von Programmen Programme und Daten werden im Speicher abgelegt Binäre Codierung aller Daten Unterteilung des Speichers in gleichgroße Zellen aufeinanderfolgende Befehle in aufeinanderfolgenden Zellen (sequentieller) Zugriff durch Steuerwerk (via Befehlsadresse) Sprungbefehle arithmetische Befehle (Addition, Multiplikation, ...) logische Befehle (Negation, Konjunktion, Vergleiche, ...) Transportbefehle Schiebeoperationen Ein-/Ausgabebefehle

Computer / Software

Computer / Software Betriebssystem: Menge aller Programme, die den Betrieb eines Computer bewältigt: Prozeßverwaltung Speicherverwaltung Dateiverwaltung Geräteverwaltung ... Festplatte: billiger Hintergrundspeicher Dateien: logische Behälter zum Speichern von Daten Verzeichnisse: Hilfsmittel für eine übersichtliche Strukturierung von Dateien Window-System: Aufteilung des Bildschirm in unabhängige „Windows“ Window-Manager: Verwalter von „Windows“ Anlegen Verschieben Vergrößern

Computer / Speicher Speicher: Aufbewahrung von Programmen und Daten 1 Bit: kleinstes Speicherelement (2 Zustände: 0 und 1) 1 Byte: 8 Bit (2 Zustände) Speicherzelle 1 Wort: 4 oder 8 Speicherzellen mathematische Grundlage: Dualsystem 2 anstelle von 10 Ziffern (Dezimalsystem) Operationen (Addition, Multiplikation, ...) wie gewohnt Umrechung: 8 18 : 2 = 9 R 0 9 : 2 = 4 R 1 4 : 2 = 2 R 0 2 : 2 = 1 R 0 1 : 2 = 0 R 1 1101 = 1*2 + 0*2 * 1*2 + 1*2 13 2 1 2 3 10

Aussagenlogik / Aussagen Aussage (boolescher Ausdruck): Satz, dem eindeutig ein Wahrheitswert wahr (true, T) oder falsch (false, F) zugeordnet werden kann „Ein Tisch ist ein Möbelstück“ „Geh nach Hause“ (keine Aussage) Verknüpfung von Aussagen durch Operatoren: Negation („!“) Konjunktion („&&“) Disjunktion („||“) Wahrheitstafeln:

Aussagenlogik / Aussagen Syntax von Aussagen: !P P && Q P || Q P || (!Q) (P || (!Q && P) P || !Q && R P || !(Q && R) (P || Q) && R

Aussagenlogik / Eigenschaften von Aussagen Kommutativgesetz Assoziativgesetz Distributivgesetz Priorität: ( ! > && > || ) Assoziativität: (!: rechts; &&, ||: links) Tautologie: P || !P (immer true) Widerspruch: P && !P (immer false)

Aussagenlogik / Eigenschaften von Aussagen zu zeigen: !P && !Q <=> !(P || Q)