Einführung in die Imperative Programmierung 1 - 5 Public

Einführung in die Imperative Programmierung 1 - 5

Marco Urso
Course by Marco Urso, updated more than 1 year ago Contributors

Description

Einführung in die Informatik. Grundlagen. Programmierkonzepte. Pascal

Module Information

No tags specified

Context

1.1 Informatik: Systematische Verarbeitung Informationen Computer Computer:  Algorhytmus: Folge von Anweisungen, schrittweise Abarbeitung Anweisung des Algorhytmus: Instruktionen Ausführung des Logarhytmus:  Ausführung des Logyrhytmus: Programmiersprache: Algorythemen in einer Sprache, die der Computer versteht.  Programm: Algorythmus in Programmiersprache. Geschwindgikeit: Speicher: Speicher muss adressiert sein. Fehler: Liegen meißt am Programm.
Show less
No tags specified

Context

Lernziele:   1. Problembeschreibung Problemspezifikation abgrenzen. Einzelne Teil Problemspezifikation erläutern 2. Algorythmus Programm voneinander abgrenzen 3. Maschinensprache, Assemblersprache und Programmiersprache erläutern abgrenzen  4. das prozedurale imperative und das objektorientierte Programmparadigma kennen und vom  deklarativen Programmierparadigma abgrenzen.  5. Funktion Steuerwerk Rechenwerk erklären abgrenzen Speichertypen 6. Anwendungssoftware vom Betriebssystem abgrenzen. Hauptaufgaben Betriebssystem.   2.1 Problem und Algorythmus Problem enthält relevante Tatbestände legt fest was getan wird. Eine präzisierte und formalisierte Problembeschreibung ist eine Problemspezifikation Problemspezifikation sollte enthalten Eingabe, Vorbedingung, Ausgabe, Nachbedingung Aus der Problemspezifikation erhalten wir die Problembeschreibung indem wir das eigentliche  Lösungsverfahren ergänzen. Algorithmus unter Verfahren angegeben.  Beispiel 2.1.2 > Definition Algorythmus Algorithmus: Menge von Regeln Verfahren aus Eingabegrößen Ausgabegrößen herleiten  wobei folgende Bedingungen erfüllt sein müssen.  Finitheit: Verfahren muss in endlichen Text vollständig beschrieben sein.  Effektivität: Jeder einzelne Schritt des Verfahrens muss ausführbar sein.  Terminierung: Das Verfahren kommt in endlich vielen Schritte  Determinierheit: Der Ablauf des Verfahrens ist zu jedem Punkt fest vorgeschrieben.    Funktion muss berechnbar sein. 2.2 Programmiersprache Regeln denen ein Programm gehrochen muss bestimmt von Programmiersprache Syntax: Regeln auch durch Syntax. Vokabular, Regeln über Aufbau. Semantik: Präzisiert Bedeutung erlaubter Anweisungen. (Auswirkung etc.) Programmdarstellung: Keine Toleranz für Fehler. Maschinensprach: Binärsprache. Maschinenprogramm: Programm in Maschinensprache, kann direkt ausgeführt werdne.  Übersetzer: Übersetzt Anweisungen in Maschinensprache Assemblersprache: Der Befehl einer Assemblersprache wird meist eins zu eins auf einen Maschinenbefehl abgebildet. Praktisch gleiche primitiven Operationen wie Maschinenprogramme. Höhere Programmiersprachen: Befehle, die für den Menschen versändlicher sind. Compiler: Übersetzt höhere Programmiersprache in Maschinensprache.  Problemorientierte Programmiersprachen. 2.3 > Korrektheit: Nachweis für Korrektheit des Aglorithmus in Ermittlung eines Lösungswegs enthalten. Korrektheitsbeweis: Nachweise, dass der Algorithmus für jede Eingabe, welche die Nachbedingung erfüllt, terminiert und Ausgabe die Nachbedingung erfüllt. (Vor u Nachbedingungen in Problemspezifikation). Algorithmus muss hinreichend formal beschrieben sein.  Algorithmen in natürlicher Sprache können nicht bewiesen werden, das geht aber über eine Programmiersprache mit formal definierter  Syntax und Semantik.  Große Programme ermöglichen nicht immer einen Korrektheitsbeweiß. Testen kommt zum Zuge. Dokumentation:  2.4 Programmierparadigmen (Paradigma grundlegendes Prinzip) Imperatives Programmierparadigma: Programm Lösungsweg in Form eines Algorithmus vorgeben.   Es wird angegeben, wie ein Problem zu lösen ist. Konzept von Neumann Achitektur. Sprungbefehele geben dem starren Geflecht Flexibilität.  Befehle verarbeiten Daten, die im Speicher abgelegt sind.  Variable: Logischer Speicherplatz, der einen Wert enthält.  Die wichtigsten Ausprägungen des imperativen Programmierparadigmas sind die prozedurale, imperative, und die objektorientierte imperative Programmierung.  Prozedurale Imperative Programmierung: Befehle, Daten werden separat behandelt.  Prozedur: Zentrale Strukturierungsprodukt. Prozedur Zusammenfassung on Unterprogrammen aktiviert durch einen Befehl (Aufruf). Befehle im Vordergrund. Zentrale Strukturierungskonstrukt Prozedur. Prozedur fasst logisch zusammengehörende Befehle zu einem Unter- programm zusammen, das durch einen Befehl aktiviert wird. Strukturierungsform Befehle, nicht Daten. C, COBOL, FORTRAN, Pascal, PL/I .   In Objektorietierte Programmierung werden zusammengehörende Befehle und Daten zu Objekt zusammengefasst. Objekt repräsentiert oft Dinge aus der realen Welt. Prozedurale imperative Befehlsfolge auf Objekte aufgeteilt. In Objektorientierte Programmierung Daren im Vordergrund.  Ermöglich Modularisierung. C++,C#, Java, Smalltalk. Imperative programmierparadigma, wie ein Problem zu lösen ist.  Deklaratives Programmparadigma nimmt Problem entgegen und findet selbst eine Lösung.  Logische und funktionale Programmierung. Logische Programmierung. Der Computer versucht eine Behauptung mit dem vorhandenen Wissen zu beweisen. PROLOG Funktionale Programmierung: Benutzt mathematische Funktionen zur Fomulierung von Programmen. Argumente und Resultate von Funktionen können selbst wieder Funktionen sein. Lisp, Scheme 2.5.1 Rechnerarchitektur Steuerwerk Steuerwerk folgende Aufgaben: Laden der Anweisungen  Decodierung der Befehle  Interpretation der Befehle Versorgung der an der Ausführung der Befehle beteiligten Funktionseinheiten mit den nötigen Steuersignalen   Befehlsregister: Operationsteil, Adressteil. Operationsteil im Decodierer entschlüsselt.  Befehlszählregister: Speichert Adresse des nächsten auszuführenden Befehls. + 1. Sprungbefehle Adresse kopiert Mikroprogrammeinheit: Docdiert Informationen Operationscode Folge Signale Befehlsausführung. Kann fest oder variabel gestaltet sein.   Rechenwerk Aritmetische und logische Verknüpfungen werden durchgeführt. Auch ALU. Operanden werden dem Rechenwerk vom Steuerwerk zugeführt.  Zentraleinheit, CPU-Prozessor: Steuerwerk + Rechenwerk Speicher Aufbewahren von Daten und Programmen. Binärer Speicher kleinste Einheit 1 Bit. 8 Bit nötig für ein Zeichen. Byte. Adresse: Identifikator im Speicher für eine Speicherzelle (1 Byte überlicherweise). 4-8 Speicherzellen Speicherwort oder Wort.  Externe Speicher (Hintergrund und Sekundärspeicher)  Ram, Zyklischer Zugriff, sequentieller Zugriff. Von Neumann Prinzipien > S.25
Show less
No tags specified

Context

Lernziele:  Den grundlegenden Aufbau einfacher Pascalprogramme kennen. Struktur und Bedeutung einfacher Pascal Programme erläutern können. Erste einfache Programmrichtlinien zur erhöhrung der Lesbarkeit von Pasal bennen können. Struktur Pascal Programme: program - program heading - block - .> S. 31 Declaration Part - Statement Part Vereinbarungsteil werden Daten beschrieben und benannt im Anweisungsteil die  auszuführenden Operationen ausgegeben. Bezeichner: Beginnt mit Buchstabe. Pascal nicht CS 3.4 Zahlen Integer Zahlen: ganze Zahl maxint, maximaler Wert (8 16 32 etc. bit) Maxint vorzeichen und 2^7,15 etc. Zahl muss im Maxint Bereich liegen.  Real Zahlen: Gleitpunktdarstellung > S.37 Festpunktdarstellung > S.38 3.5 Beschreibung der Daten Pascal Deklarations Anweisungstel Deklaration erklärt bezeichner B > S.39 Jeder Teil kann weggelassen werden. Reihenfolge wichtig. Konstanten, Typen, definiert Variablen, Prozeduren, deklariert Konstanten, Typen deiniert 3.5.1 Datentypen Datentype definiert Menge von Werten mit ausführbaren Operationen. Typisierte Programmiersprache -Typ bestimmt Werte und Operationen für Datenobjekt -=== 1 Typ -Objekt erfordert Operanden bestimmten Types ergebnis bestimmten Typs Pascal Typen: integer, real, char, boolean: Unstrukturierte Dateitypen Integer: + - * div mod Intervall der ganzen Zahlen dyadische Infixoperatoren zwischen zwei Operanden notiert. Standardfunktionen Ergebnis Integer succ (x) Nachfolger X pred(x) Vorgänger Beispiel >S.42 Datentyp real Teilmenge der reelen Zahlen, die man als real darstellen kann. Reele Zahlen: + - * / abs (X) sqr(x) sin(x) cos(x) artcan(x) exp(x) ln(x) sqrt(x) >S.42 abs sqr liefert integer und real werte je nach Fütterung  Datentyp char  Alle darstellbaren Zahlen des Pascal Zeichensatzes, Steuerzeichen  Wertebereich char unterliegt Ordnung     ord (c) Ordinalzahl chr(i) Zeichen mit Ordinalzahl i Resultat hängt von Verschlüsselungsart ab. Oft ASCII Siehe Beispiel > S. 43 Datentyp boolean true false and or not = gleich <> ungleich < kleiner > größer <= >= für char wird die Ordinalzahl herangezogen false < true odd(x) true für gerade  Wertebereiche Disjunkt 6 != 6.0!='6' string char zeichenkette <=255 Zeichen nicht vordefiniert wird bereitgestellt 3.5.2 Definition Konstanten > S. 46   3.5.3 Deklaration von Variablen Variabeldeklaration Grafik > 49 3.6 Beschreibung der Aktionen Sequentielle Ausführung. 3.6.1 Einfache Anweisung  Leere Anweisung Einfachste Anweisung Zuweisung, Wertzuweisung wichtigste einfache Zuweisung := selber Datentyp außer Typ: Real Ausdruck: Integer Höchste Prio 1. not                         2. * / div mod and Punktoperatoren                         3. +- or Strichoperatoren Niedrigste Prio 4 = <> < <= >=   Vergleichsoperatoren Im Gegensatz zu Turbopascal wertet Pascal alles aus, dh.  nach einem or can das Programm über einen undefinierten Begriff stolpern. Sequenz: Zusammengesetzte Anweisung durch Semikolon getrennt begin A1;A2...; end 3.6.2 Standard ein und Ausgabe read readin Eingabe write writein Ausgabe eoln Zeilenende eof Eingabeende   read (x1,xn) Tastatureingabe   write (A) wobei A x x:b x:b:k  sein kann.  write kann Ausgabe sein.  x entweder char integer real boolean oder string b integer Ausdruck positiv minimale Feldbreite. Zeichen die X bei Ausgabe belegen soll. kein B standartwet von 1 für für chart, länge string für string und abhängig von Implementierung  für integer, real, boolean.  K wenn x vom Typ real ist. Bestimmt Anzahl Nachkommastellen.  if else Felher, falsch gesetztes Semikolon (nach then) oder nach else.  fehlen von begin und end beim else Zweig.   EVA Eingabe Verarbeitung Ausgabe 3.7 Selbstdefinierbare Datentypen type type definition ; > Grafik 68 Simple type: die 4 Standard Typen Aufzählungstyp Typname = (Name1, Name2, NameN) (n genügt) Auf Aufzählungstypen can ord angewendet werden type tFarbe = (rot, gruen, blau, gelb, rosa, braun); ord (rot) ergibt 0 ebenso pred und succ 3.7.2 Ausschnittstypen Definiert Wertebereich eines definierten Grundtyps. integer, char, Aufzählungstypen Auf Grundtyp zulässige Operationen und Standardfunktionen werden für Abschnittstypen übernommen. 3.8 Programmierstil 3.8.1 Bezeichnerwahl Muß Regel 1 KnotenAnzahl Regel 2 Konstantenbezeichner nur Großbuchstaben. Typenbezeichner beginnen mit t Variablen: Substantive, Bezeichner Funktionen prozeduren: Verben,  Zustandsvariablen, Boolsche Funktionen: Adjektive, Adverben Abkürzungen:  -Im Kontext verständlich oder allgemeinverständlich -allgemeinen Sprachgebrauch verwenden, fv -häufig gebrauchte Namen können kürzer als seltene sein -Muss enträtselbar und aussprechbar sein.  -Wortanfänge wichtiger, Konsonanten wichtiger 3.8.2 Layout Jede Anweisung neue Zeile Muß 3 Begin End eigene Zeile  Redundante Klammern können Lesbarkeit erhöhen Schlüsselwörter hervorheben Kommentare Muß 4 Einrückungen Anweisungen zwischen begin und end um 2-4 Einrücken Muß 5   Bei Kontrollanweisungen das abschließende End mit Kommentar mit Bezug auf Kontrollanweisung versehen Definitions deklaration durch Leerzeilen gegliedert. Leerzeile alle 10 Anweisugen 3.8.3 Kommentare Muß 6 -Kommentare sofort -Dürfen Programmstruktur nicht verdecken -Programmkopf beschreibt welche Aufgabe gelöst wird -evt. Konstanten Datentypen daten und Variablem erläutern Komplexe Ausdrücke, Anweisungen werden kommentiert.  bei Kontrollstruktur bei end auf Kontrollstruktur verweisen müssen zusätzliche Informationen liefern
Show less
No tags specified

Context

Nach diesem Kapitel sollten Sie 1. die drei Wiederholungsanweisungen von Pascal kennen und wissen, in welcher Situation welche Schleifenart sinnvollerweise zu verwenden ist, 2. eine gegebene Wiederholungsanweisung in eine andere, bedeutungsgleiche Wiederholungsanweisung umformen können, 3. die Anwendungsbereiche der strukturierten Datentypen Feld (array) und Verbund (record) kennen, 4. mit Hilfe strukturierter Datentypen von Pascal problemadäquate, selbstdefinierte Datentypen festlegen und die darauf zulässigen Operationen anwenden können, 5. eine Funktion deklarieren und aufrufen können, 6. die Begriffe .„formaler Parameter.“, .„aktueller Parameter.“ und .„lokale Variable .“ kennen, 7. einfache Programme schreiben können, die ein übersichtliches Layout, sinnvolle Kommentierung sowie wohlüberlegte Datentypen und Kontrollstrukturen verwenden.   4. Programmierkonzepte orientiert an Pascal (Teil2) 4.1 Wiederholungsanweisungen 4.1.1 for-Anweisung, die while-Anweisung und die repeat-Anweisung. Schleife, Schleifenrumpf, Schleifenbedingung. for Schleife Fig. S. 81 Die for-Schleife, auch Laufanweisung genannt, wird verwendet, wenn die Anzahl der Schleifendurchläufe vor dem Eintritt in die Schleife bekannt ist. Nach Beendigung der for-Schleife ist der Wert der Kontrollvariablen nicht mehr definiert. Es dürfen deshalb im weiteren Verlauf des Programms keine Annahmen über ihren Wert gemacht werden. 4.1.2 Die while-Schleife wird verwendet, wenn die Anzahl der Schleifendurchläufe vor dem Eintritt in die Schleife nicht bekannt ist. Fig. S. 86 Die Schleifenbedingung muß eine Variable enthalten, deren Wert sich bei der Bearbeitung des Schleifenrumpfes ändert. Andernfalls haben wir eine Endlosschleife programmiert, und die Programmbearbeitung bricht nicht ab 4.1.3 Repeat Schleife see fig. 89 Abbruchkriteriums repeat-Schleife  Gegensatz zur while-Schleife nicht vor, sondern nach Schleifenrumpf mehreren Anweisungen besteht, brauchen wir diese nicht mittels begin und end zu einer zusammengesetzten Anweisung zu klammern, Die  while-Schleife while expression do statement läßt sich stets schreiben als if expression then repeat statement until not expression Umgekehrt läßt sich jede repeat-Schleife durch eine while-Schleife mit derselben Bedeutung ersetzen: repeat statement until expression ist äquivalent zu statement; while not expression do begin statement end Die repeat-Schleife ist zu wählen, wenn unabhängig von der Schleifenbedingung stets mindestens ein Schleifendurchlauf erfolgen soll. Hängt bereits der erste Schleifendurchlauf von der Erfüllung der Schleifenbedingung ab, so ist die while- Schleife die geeignete Wahl. Die for-Schleife ist gewöhnlich das geeignete Schleifenkonstrukt, wenn die Anzahl der Schleifendurchläufe vor Eintritt in die Schleife bekannt ist. Ist das Ende der input-Datei erreicht (und damit eof = true), dürfen keinen weiteren read-Befehle mehr für die input-Datei erfolgen. Führt das Programm einen weiteren read-Befehl aus, so erfolgt meist ein Programmabbruch.   4.2 Strukturierte Datentypen 4.2.1 Der array-Typ Array Fig. S. 95 Siehe Beispiel top s.96 Bereichsüberschreitung Wenn Sie versuchen, dieses Programm so abzuändern, daß es auch für andere Feldgrößen benutzt werden kann, werden Sie feststellen, daß nicht nur die Typdefinition, sondern auch die Anfangs- bzw. Endwerte der for-Schleifen angepaßt werden müssen. Günstiger ist es, die Grenzen eines Feldes als Konstanten zu definieren und diese in den Operationen, die auf dem Feld arbeiten, konsequent einzusetzen. Wir werden fortan so verfahren. Feldgrenzen dynamisch festlegen zu können, Mehrdimensionale Arrays > S. 105 4.2.2  Feld festgelegte Anzahl typgleicher Komponente > fig. S. 109 Komponente Verbund zugreifen Verbund Name, Punkt, Bezeichner. Derart ausgewählte record Komponente selektierte Variable Schachtelung möglich (> S.110) (revisit B. 4.2.2.2) 4.3 Funktionen   Pascal stellt nicht nur Standardfunktionen bereit, sondern bietet auch die Möglichkeit, daß der Programmierer Funktionen selbst vereinbart. In der Funktionsverein- barung wird festgelegt, wie die Funktion heißt, wie sie aufgerufen wird und wie sie ihren Funktionswert berechnet. Funktionsdeklarationen erfolgen in Pascal im Anschluß an Konstanten.–, Typen.–, und Variablenvereinbarungen: >S. 117 >S. 118 Bsp. 4.3.1 Die Liste der aktuellen Parameter in einem Funktionsaufruf muß mit der Liste der formalen Parameter nach folgenden Regeln übereinstimmen: - Die Zahl der Parameter in beiden Listen muß gleich sein. - Die Typen des formalen und entsprechenden aktuellen Parameters, der an derselben Position der Parameterliste steht, müssen identisch sein. Ein Funktionsaufruf ist ein Ausdruck und kann daher überall verwendet werden, wo Ausdrücke erlaubt sind. Wir betonen, daß dem Funktionsbezeichner zwar mehrmals ein Wert zugewiesen werden kann, aber auf diesen Wert innerhalb der Funktion nicht lesend zugegriffen werden darf. Er kann also z.B. nicht als lokale Variable verwendet werden. Für jeden Parameter einer selbstdeklarierten Funktion sowie für das Ergebnis kann nur jeweils genau ein Typ verwendet werden.   Muß Regeln, S. 128 4.4.3 Kommentare
Show less

3.5

No tags specified

Context

Nach diesem Kapitel sollten Sie 1. eine Prozedur deklarieren und aufrufen können, 2. die wesentlichen Vorteile von Prozeduren und Funktionen kennen, 3. die Unterschiede (in Syntax und Semantik) zwischen Prozeduren und Funktionen nennen können, 4. die Realisierung einer Aufgabe als Funktion oder Prozedur begründen können, 5. das Parameterkonzept von ParaPascal beherrschen, die Wirkung der unterschiedlichen Übergabearten (in, out und inout) beschreiben und problembezogen einsetzen können, 6. die Umsetzung des allgemeineren Parameterkonzeptes von ParaPascal in das Parameterkonzept von Standard-Pascal angeben können, 7. die Wirkung der Übergabearten von Standard-Pascal (Wertübergabe, Referenzübergabe) kennen und problembezogen einsetzen können, 8. das Konzept der statischen und dynamischen Blockstruktur kennen sowie die damit zusammenhängenden Begriffe (Schachtelung, Gültigkeitsbereich, globale und lokale Variablen, Lebensdauer bzw. Existenz) verstanden haben, 9. die Begriffe Namenskonflikt und Seiteneffekt kennen, deren Auswirkungen erläutern können und wissen, wie man sie vermeidet, 10. durch Einhaltung von Layoutregeln und geeignete Bezeichnerwahl Prozeduren und Funktionen übersichtlich und verständlich formulieren können, 11. das Zeigerkonzept von Pascal verstanden haben, 12. grundlegende Operationen auf linearen Listen kennen und programmtechnisch   5.1 Prozeduren 5.1.1 Prozeduren und Parameterübergabe Prozedur, Prozedurdeklaration:  Eine Prozedur (procedure) ist einer Funktion sehr ähnlich. Eine Prozedurdeklaration unterscheidet sich von einer Funktionsdeklaration zunächst einmal durch das Schlüsselwort procedure (an Stelle von function) und durch das Fehlen des Ergebnistyps. Prozeduraufruf: Angabe Prozedurname Liste Parameter Parameterübergabe: Um unterscheiden Schlüsselwörter  Eingangsparameter: Schlüsselwort in. Lokale Konstante. Formale und aktuelle Parameter können durch Funktion nicht  verändert werden. Formaler Parameter und aktueller Parameter können nicht  verändert werden.  out Parameter: Durch vorangestelltes Out charackterisiert. Lokale Variabel deren Wert nicht abgefragt aver verändert werden kann.   Referenzparameters :sondern es wird der Verweis (Referenz) auf den aktuellen Parameter an den formalen Parameter übergeben. Technisch gesehen können wir uns einen Verweis vorstellen als die Adresse der Speicherzelle bzw. des Speicherbereichs, in dem der aktuelle Parameter abgelegt ist. Die Konsequenz ist, daß jede Änderung des formalen Parameters zu- gleich eine Änderung des aktuellen Parameters bedeutet, so daß nach Abarbeitung der Prozedur der letzte Wert des formalen Parameters zugleich der Wert des aktu- ellen Parameters ist. Wegen des Schlüsselwortes var sprechen wir auch von var-Parametern. ! Übersetzung Procedure Parapascal Standard Pascale Fig.>S.150 Gültigkeitsbereich und Lebensdauer fallen oft nicht zusammen. Dieinteger-Va- riable j aus Beispiel 5.2.2, die lokal zum Programm P deklariert ist, lebt während des gesamten Programmablaufs, ist aber in der Prozedur R nicht gültig, da hier eine lokale real-Variable mit demselben Bezeichner deklariert ist.
Show less
No tags specified
Show full summary Hide full summary