1 / 40

Programmierkurs Java

Programmierkurs Java. Vorlesung 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

mirra
Télécharger la présentation

Programmierkurs Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmierkurs Java Vorlesung am FB Informatik der Universität Oldenburg Vorlesung 2 Dietrich Boles

  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. 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. Programmierung / Algorithmus / Motivation Arbeitsanleitungen: • Kochrezepte • Bastelanleitungen • Partituren • Spielregeln Aufbau: • Menge von Anweisungen Charakteristika: • Anweisungssequenzen • bedingte Anweisungen • Anweisungsschleifen • Zutaten / Voraussetzungen • „schwammige“ Formulierungen

  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. 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. Programmierung / Algorithmus / Formulierung Programmablaufpläne / Flußdiagramme:

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

  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. 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. Programmiersprachen / Klassifikation Anwender: • Anfänger • Experten Paradigmen: • imperativ • funktional • prädikativ • regelbasiert • objektorientiert Abstrahierungsgrad: • maschinennah • problemorientiert Komplexität: • problemspezifisch • „general-purpose“

  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 Token- folge Quell- programm Ableitungs- baum Ziel- programm Lexikalische Analyse (Scanner) Syntaktische Analyse (Parser) Semantische Analyse/ Codegenerierung

  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 ; PASCAL while n > 0 do n := n-1;

  14. 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

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

  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. 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. 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. Programmiersprachen / Syntaxdiagramme S a b D D c Syntaktisch korrekt oder nicht ? • abababccc • ababcccabab • aba • ccccccc • abDc • bababac • ababcdcd • ABABABc

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

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

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

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

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

  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. 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. 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. 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. Programmentwicklung / Compilation

  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. Computer / Hardware Von-Neumann-Rechnerarchitektur:

  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. Computer / Software

  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. 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 0 1 2 3 10

  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. 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. Aussagenlogik / Eigenschaften von Aussagen • Kommutativgesetz • Assoziativgesetz • Distributivgesetz • Priorität: ( ! > && > || ) • Assoziativität: (!: rechts; &&, ||: links) • Tautologie: P || !P (immer true) • Widerspruch: P && !P (immer false)

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

More Related