Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität."—  Präsentation transkript:

1 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität Oldenburg Vorlesung 2 Dietrich Boles

2 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 2 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

3 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 3 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

4 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 4 Programmierung / Algorithmus / Motivation Arbeitsanleitungen: –Kochrezepte –Bastelanleitungen –Partituren –Spielregeln Aufbau: –Menge von Anweisungen Charakteristika: –Anweisungssequenzen –bedingte Anweisungen –Anweisungsschleifen –Zutaten / Voraussetzungen –schwammige Formulierungen

5 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 5 Programmierung / Algorithmus / Definition 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

6 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 6 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);

7 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 7 Programmierung / Algorithmus / Formulierung Programmablaufpläne / Flußdiagramme:

8 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 8 Programmierung / Algorithmus / Formulierung Struktogramme / Nassi-Shneiderman-Diagramme:

9 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 9 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

10 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 10 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

11 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 11 Programmiersprachen / Klassifikation Anwender: –Anfänger –Experten Paradigmen: –imperativ –funktional –prädikativ –regelbasiert –objektorientiert Abstrahierungsgrad: –maschinennah –problemorientiert Komplexität: –problemspezifisch –general-purpose

12 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 12 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

13 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 13 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 > 0 do n := n-1; while n > 0 do n := n - 1 ; PASCAL

14 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 14 Programmiersprachen / Syntaktische Analyse Überführung einer Tokenfolge in Ableitungsbaum Untersuchung auf syntaktische Korrektheit Beschreibung: kontextfreie Grammatiken Darstellung: Syntaxdiagramme, BNF n := 3 + i Zuweisung Variable:= Ausdruck Term Konstante Variable 3 + i n

15 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 15 Programmiersprachen / Semantische Analyse Überprüfung des Ableitungsbaums auf Fehler (kontextsensitive Zusatzbedingungen) Vorbereitung der Codeerzeugung Nutzung einer Symboltabelle attributierte Syntaxbäume

16 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 16 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.

17 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 17 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

18 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 18 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)

19 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 19 Programmiersprachen / Syntaxdiagramme ab D S c D Syntaktisch korrekt oder nicht ? abababccc ababcccabab aba ccccccc abDc bababac ababcdcd ABABABc

20 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 20 Programmiersprachen / Syntaxdiagramme ab S S Syntaktisch korrekt oder nicht ? aSb aab aaabbb abbbbbbb aaabbbaaa L (S) = ?

21 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 21 Programmiersprachen / Syntaxdiagramme L = {a (b c) d } | n ist natürliche Zahl oder Null; i ist natürliche Zahl} 2 ni

22 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 22 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

23 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 23 Programmiersprachen / BNF BNF: ::= Schlangen ::= Pinguine | Delphine ::= Elephanten | Affen | e

24 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 24 Programmiersprachen / BNF EBNF: ::= Schlangen {Pinguine } Delphine ::= Elephanten | Affen | e

25 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 25 Programmentwicklung / Entwicklungsphasen DokumentationDokumentation Problem Programm Implementierung AnalyseEntwurf Test

26 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 26 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) –Fragestellungen / Tätigkeiten: 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

27 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 27 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! –Fragestellungen / Tätigkeiten: Korrektheit Vollständigkeit Debugging –Teststrategien: andere Personen testen lassen Testmengen konstruieren (Randfälle/Grenzwerte finden) nach Fehlerbeseitigung erneut testen

28 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 28 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

29 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 29 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

30 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 30 Programmentwicklung / Compilation

31 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 31 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:

32 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 32 Computer / Hardware Von-Neumann-Rechnerarchitektur:

33 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 33 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

34 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 34 Computer / Software

35 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 35 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 –...

36 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 36 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*2 + 0*2 * 1*2 + 1*2 =

37 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 37 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:

38 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 38 Aussagenlogik / Aussagen Syntax von Aussagen: !P P && Q P || Q P || (!Q) (P || (!Q && P) P || !Q && R P || !(Q && R) (P || Q) && R

39 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 39 Aussagenlogik / Eigenschaften von Aussagen Kommutativgesetz Assoziativgesetz Distributivgesetz Priorität:( ! > && > || ) Assoziativität:( ! : rechts; &&, || : links) Tautologie: P || !P (immer true) Widerspruch: P && !P (immer false)

40 Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 40 Aussagenlogik / Eigenschaften von Aussagen zu zeigen: !P && !Q !(P || Q)


Herunterladen ppt "Programmierkurs Java WS 98/99 Vorlesung 2 Dietrich Boles 28/10/98Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität."

Ähnliche Präsentationen


Google-Anzeigen