Programmiersprachen 1 – Zusammenfassung

Werbung
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
06.01.2001
=== Das Prinzip der Datenverarbeitung: EVA (Eingabe – Verarbeitung – Ausgabe) ===
1. Begrifferklärungen:
Aktuelle Parameter
Aktuelle Parameter versorgen die Schnittstellen von Prozeduren und Funktionen
beim Aufruf mit Werten/Variablen.
Anweisungsteil
Hier stehen im Programm Folgen von Anweisungen.
Array-Datentyp
Arrays fassen eine feste Anzahl von Elementen eines anderen Datentyps zu
einem neunen Datentypen zusammen. Die einzelnen Elemente können über
Indizes angesprochen werden.
Assemblersprachen
Textuelle Bezeichnung für Maschinenbefehle (mnemotechnische Bezeichner ).
Ein Assemblerbefehl entspricht einem Maschinenbefehl, muss aber übersetzt
werden.
Aufzählungstypen
Benutzerdefinierter ordinaler Datentyp. Aufzählung aller Werte in der
Typendeklaration, die eine Variable dieses Typs annehmen kann.
Ausdruck
Ein Ausdruck beschreibt, welche Operatoren auf welche Operanden angewendet
werden soll. Sie werden durch Kombination von beliebig vielen Operatoren und
Operanden gebildet. Jede (korrekte) Auswertung führt zu einem Ergebniswert.
Bedingte Anweisung
Bedingte Anweisungen setzten sich aus Anweisungsfolgen zusammen, von
denen keine oder eine bestimmte ausgeführt wird. Die Auswahl der evtl.
ausgeführten Anweisungsfolge wird durch Bedingungen gesteuert. (If und Case)
Codierung
Datenumwandlung von einer zur anderen Darstellungsform nach festen
Vorschriften.
Compiler
Spezielles Programm zum übersetzten und ggf. prüfen des Quellprogramms.
Compiler-Befehle
Compiler-Befehle steuern die Arbeitsweise des Compilers.
Compilieren
Übersetzung eines Programms von einer höheren Programmiersprache in
elementare Rechneranweisungen (Maschinensprache).
Datentyp
Datentypen machen Daten unterschiedlicher Art (Wertebereiche etc.) für
Programme unterscheidbar.
Deklarationsteil
Hier werden im Programm Variablen, Konstanten etc. deklariert.
Einfache Anweisung
Kleinste, isoliert ausführbare Einheit eines Programms (Zuweisung,
Prozeduranweisung, Goto-Anweisung).
Formale Parameter
Formale Parameter dienen als Schnittstelle von Prozeduren und Funktionen und
werden in der Parameterliste der Prozeduren und Funktionen deklariert.
Fundamentaler Datentyp ?
Generischer Datentyp
?
Iteration
Wiederholung von Aktionen durch z. B. repeat-until-Schleifen.
Kommentare
Kommentare sind die interne Dokumentation eines Programms in natürlicher
Sprache.
Seite 1 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
06.01.2001
Konstanten
Konstanten sind benannte Datenobjekte. Der Wert der Konstanten wird
Übersetzungszeit der Programms ermittelt und festgelegt. Sie sind zur Laufzeit
des Programms nicht veränderbar.
Linken
Verknüpfen eines übersetzten Programms mit zusätzlich notwendigen
Programmbestandteilen.
Maschinensprache
Binär codierte Sprachelemente direkt durch den Prozessor ausführbar.
Nichtterminalsymbol
Syntaktische Einheit, die nicht direkt in den Zeichenfolgen einer Sprache
auftreten dürfen und durch Regeln weiter abgeleitet werden müssen. Sie
beschreiben größere Strukturen im syntaktischen Aufbau von Texten der
Sprache.
Objektprogramm
Übersetztes, compiliertes Programm in maschinenausführbarer Form.
Ordinale Datentypen
Beschreiben eine geordnete, endliche Menge von Werten (Boolean, Integer,
Char,...).
Pragmatik
Regeln zur praktischen Anwendung der Sprachkonstrukte.
Programme
Sinnvolle Folgen von Befehlen an die Hardware.
Programmkopf
Gibt dem Programm einen Namen.
Prozeduranweisung
Prozeduranweisungen führen zur Ausführung der Prozedur (Prozeduraufruf)
Quellprogramm
Für den Menschen lesbares Programm, das aus Befehlen einer (höheren)
Programmiersprache besteht.
Reelle Datentypen
Keine Ordinaltypen, da die Begrenzung von Ganzzahltypen durch ein
Gleitkomma aufgehoben wird (Single, Real, Extended...).
Selektion
Eine Auswahl an Aktionen.
Semantik
Semantik beschreibt die Bedeutung von (syntaktisch korrekten) Zeichenketten.
Sie kann nur teilweise vom Compiler geprüft werden
Sequenz
Eine Folge von Aktionen.
Signifikante Stellen
Bei Gleitkommadatentypen wird nur die Anzahl an signifikanten Stellen als
genaues Ergebnis gespeichert. Alle dahinter liegenden Stellen können
Ungenauigkeiten beinhalten.
Strukturierte Anweisung Strukturierte Anweisungen sind Verbund- und bedingte Anweisungen etc.
Strukturierter Datentyp
Dies sind unter anderem ein- und zweidimensionale Arrays oder Datensatztypen.
Strukturierung
Abgrenzung von Einheiten (Modularisierung) und Ordnung der Einheiten.
Syntax
Regeln zum korrekten Aufbau von Programmtexten.
Teilbereichstypen
Benutzerdefinierter ordinaler Datentyp, der die Einschränkung des
Wertebereichs des ordinalen Basistyps durch Schranken in Form von Konstanten
realisiert.
Terminalsymbol
Syntaktische Einheit, die direkt in den Zeichenfolgen einer Sprache auftreten
dürfen und nicht mehr weiter durch Regeln abgeleitet werden müssen.
Seite 2 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
06.01.2001
Typendeklaration
Vereinbarung von neuen Bezeichnern für einen Datentypen. Nutzung um
Bezeichner für neue benutzerdefinierte Datentypen zu vereinbaren oder (sehr
selten) um sprechendere Namen für vordefinierte Datentypen zu vergeben. Es
besteht die Möglichkeit zur exakten Anpassung der Wertebereiche von
Variablen.
Unit
Units sind separate Quelltexteinheiten mit jeweils eigener Datei und können
separat kompiliert werden.
Uses-Klausel
Gibt an, welche anderen Dateien (Units) Programmteile enthalten, die mitbenutzt
werden sollen.
Verbundanweisung
Eine Verbundanweisung (zusammengesetzte Anweisung) fasst eine beliebige
Anzahl von Anweisungen zusammen (Begin ... End). Sie gilt Syntaktisch als
eine Anweisung.
2. Definitionen:
Aufzählung festgelegter Definitionen von Fachbegriffen.
Algorithmus
Ein Algorithmus ist eine präzise, endliche Beschreibung eines allgemeinen
Verfahrens unter Verwendung endlich vieler ausführbarer elementarer
Verarbeitungsschritte.
Programmiersprachen Eine Programmiersprache ist eine zur Abfassung von Programmen geschaffene
Sprache (DIN 44300).
3. Abkürzungen:
Gebräuchliche Abkürzungen im Umgang mit PS.
ASCII
American Standard Code of
Information Interchange
BASIC
Beginners All purpose
Symbolic Instruction Code
Bit
Binary Digit
BNF
Backus-Naur-Form
PAP
Programmablaufplan
4. Wertebereiche und Größen:
Angaben zu festgelegten Größen und Umrechneinheiten.
ASCII-Code
ANSI-Code
1 Byte
1 Kilobyte
1 Megabyte
8 Bit
16 Bit
8 Bit
1024 Byte
1024 Kilobyte
Seite 3 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
06.01.2001
FH-Wedel
Angaben zu vordefinierten Datentypen.
Datentyp:
Wertebereich:
Speicherbedarf:
signifikante Stellen:
Cardinal* (16 Bit)
Integer (16 Bit)
Cardinal* (32 Bit)
Integer* (32 Bit)
ShortInt
Byte
SmallInt*
Word
LongInt
Char
AnsiChar
WideChar
Real, Real48*
Single
Double
Extended
0..65535
-32768..32767
0..4294967295
-2147483648..2147483647
-128..127
0..255
-32768..32767
0..65535
-2147483648..2147483647
16 Bit ohne Vorzeichen
16 Bit mit Vorzeichen
32 Bit ohne Vorzeichen
32 Bit mit Vorzeichen
8 Bit mit Vorzeichen
8 Bit ohne Vorzeichen
16 Bit mit Vorzeichen
16 Bit ohne Vorzeichen
32 Bit mit Vorzeichen
8 Bit
8 Bit
16 Bit
6 Byte
4 Byte
8 Byte
10 Byte
11-12
7-8
15-16
19-20
2.9 * 10-39 .. 1.7 * 1038
1.5 * 10-45 .. 3.4 * 1038
5.0 * 10-324 .. 1.7 * 10308
3.4 * 10-4951 .. 1.7 * 104932
*) in TurboPascal nicht verfügbar
5. Aussagen und Erklärungen:
Algorithmen:
Ein Algorithmus ist eine präzise, endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung
endlich vieler ausführbarer elementarer Verarbeitungsschritte.
Grundstrukturen von Algorithmen: Sequenz, Selektion, Iteration
Struktogramme:
+
Aktion
Sequenz
realisiert durch:
-
Alternative oder
bed. Anweisung
(nur + Zweig)
(If-Anweisung)
1
2
-
Mehrfach-Auswahl
Iteration
mit Eintrittsbed.
Iteration
Mit Abbruchbed.
(Case-Anweisung)
(While-Do)
(Repeat-Until)
Programmiersprachen:
Aspekte von (Programmier-)Sprachen: Syntax, Semantik, Pragmatik
Der Compiler kann nur Programme übersetzten, die aus syntaktisch absolut korrekten Zeichenfolgen
bestehen.
Syntax besteht aus einer Menge von terminalen- und nichtterminalen Symbolen sowie Regeln.
Seite 4 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
06.01.2001
FH-Wedel
Syntax von Programmiersprachen:
Darstellung von Syntaktischen Regeln durch Syntaxdiagramme und Backus-Naur-Form.
Bezeichnung:
Backus-Naur-Form:
Terminales Symbol
A oder “A“
Nichtterminales Symbol
<A>
Sequenz
a<B>c
Syntaxdiagramm:
A
A
a
z
Regel
<z> ::= <x>A
Alternativen
<a>|<b>|<c>
c
B
x
A
a
b
c
Option
b
[<a>]<b>
a
Iteration (Wiederholung)
x
<x>{<y>}* B
y
B
1
Iteration mit Option
x
*
<x>{<y>} B
B
0
y
Datentypen:
1. Unterscheidung:
Einfache Datentypen: Jeder Wert ist atomar
Strukturierte Datentypen: Jeder Wert ist aus Werten anderer (einfacher) Datentypen zusammengesetzt.
2. Unterscheidung:
Vordefinierte Datentypen: Von der Programmiersprache zur Verfügung gestellt.
Benutzerdefinierte Datentypen: Durch Programmierer zusätzlich geschaffen.
Weiter Unterscheidungsmerkmale: ordinale und reelle Datentypen, sowie generischen und
fundamentalen Datentypen.
Seite 5 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
06.01.2001
Ordinale Datentypen:
1. Ganze Zahlen:
I. Binäre arithmetische Operatoren:
+
*
div
mod
Addition
Subtraktion
Multiplikation
ganzzahlige Division
Rest der ganzzahligen Division
II. Unäre Operatoren:
+
-
positives Vorzeichen
negatives Vorzeichen
2. Boolesche Werte:
Ordnung der Werte:
Werte belegen 1 Byte
False < True
I. Binäre boolesche Operatoren:
and
or
xor
Liefert true nur wenn beide Operanden true sind.
Liefert true wenn mindestens einer der Operanden true ist.
Liefert true wenn beide Operanden verschieden sind.
II. Unäre boolesche Operatoren:
not
Negation true wird zu false und false wird zu true
3. Zeichen:
Zeichen sind Ordinale Datentypen. Char ist generisch. AnsiChar und WideChar sind fundamental.
Erzeugung von Zeichen mittels Ordinalwert: #65 oder Chr (65) jeweils für ein ‚A’ (ASCII-Werte)
UpCase
Funktion zum wandeln von Klein- in Großbuchstaben.
Funktionen für Ordinaltypen:
Diese Funktionen sind in Pascal vordefiniert und funktionieren bei jedem ordinalen Datentypen:
ord
pred
succ
low
high
liefert Ordinalzahl
liefert den Vorgängerwert (Ordinalzahl)
liefert den Nachfolgerwert (Ordinalzahl)
liefert kleinsten Wert (Ordinalzahl)
liefert höchsten Wert (Ordinalzahl)
String-Typ:
String-Typen beschreiben Wertebereiche für Zeichenfolgen dynamischer Länge. In TurboPascal gibt es
sogenannte „kurze“ String-Typen mit einer maximalen Länge von 255 Zeichen. Durch explizite Angabe
von Zeichen (<255) kann die Maximallänge reduziert werden.
I. Binäre Operatoren:
+
Stringverknüpfung 'ab' + 'cd' = 'abcd'
II. Relationale Operatoren:
= , < , <= , > , >= , <>
Die Rangfolge zweier String-Werte beim Vergleich wird durch die
Wertigkeit der Zeichen an übereinstimmenden Positionen bestimmt.
III. Vordefinierte Prozeduren und Funktionen zur Bearbeitung von Strings:
S – (Ausgangs) String Index – Startposition Count – Anzahl Zeichen Source – einzufügender S. Substring – zu suchender S.
Seite 6 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
Concat
Copy
Delete
Insert
Length
Pos
06.01.2001
Funktion zur Verbindung von Strings.
Concate (S1, S2, ..., Sn)
Funktion zum kopieren von Zeichen aus Strings.
Copy (S, Index, Count)
Prozedur zum löschen von Zeichen aus Strings.
Delete (S, Index, Count)
Prozedur zum einfügen von Strings in Strings.
Insert (Source, S, Index)
Funktion zum ermitteln der aktuellen dynamischen Länge.
Length (S)
Funktion durchsucht String nach Teilstring.
Pos (Substring, S)
- Ergebnis ist die Position des ersten Zeichens in String.
- Ergebnis ist 0, wenn Substring nicht im String enthalten.
IV. Prozeduren zum Umwandeln von Strings in Zahlen und umgekehrt:
Str
Val
Wandelt den arithmetischen Ausdruck X in String S um.
Eine Formatierung ist Möglich.
Str (X, S)
Wandelt einen String S in die Zahl V um wenn der String
die Form eines zulässigen Zahlenformates (Integer)
aufweist. Ansonsten wird die Position des ersten
unzulässigen Zeichens in Code zurückgeliefert.
Val (S, V, Code)
Reelle Datentypen:
Darstellung der Zahl durch 4 ganzzahlige Werte: Vorzeichen (s), Mantisse (m), Basis (b), Exponent (e).
Wert der Zahl ergibt sich aus : s * m * be
Basis b implizit für alle reellen Werte festgelegt.
Binäre arithmetische Operationen:
+
*
/
Addition
Subtraktion
Multiplikation
Division
Vordefinierte arithmetische Funktionen für Reelle Zahlen:
jeweils anzuhängen (x) und „von x“
abs Betrag
sqr Quadrat
sqrt Quadratwurzel
sin
Sinus (Ergebnis im Bogenmaß)
cos Cosinus
arctan Arcustangens
exp ex
ln
natürlicher Logarithmus
int
ganzzahliger Anteil
frac Nachkommastellen
Vordefinierte Funktionen zum Umwandeln einer Gleitkommazahl in eine ganze Zahl:
round (x) Wandlung durch runden zur nächstliegenden,
ganzen Zahl. Wenn die reelle Zahl genau in der
Mitte liegt, wird die Zahl mit dem größeren
Absolutwert zurückgegeben.
trunc (x)
Wandlung durch abschneiden der Nachkommastellen.
Seite 7 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
06.01.2001
FH-Wedel
Benutzerdefinierte ordinale Datentypen:
1. Aufzählungstypen:
Aufzählung aller Werte, die eine Variable dieses Typs annehmen kann. Die
Werte müssen Bezeichner sein!
type
Grundfarben = (rot, gelb, gruen);
Beispiele:
var
Zustand : (an, aus);
Nutzung der Standardfunktionen für Ordinaltypen (succ, pred, ord...).
2. Teilbereichstypen:
Einschränkung des Wertebereichs der ordinalen Basistyps. Zu beachten ist,
dass die Schranken in Form von Konstanten angegeben werden und dass die
unter Schranke nicht größer als die obere ist.
type
Lottozahlen = 1..49
Beispiel:
Es können auch Konstanten aus benutzerdefinierte Aufzählungstypen
gewählt werde, solange sie vor dem Teilbereichstypen deklariert wurden.
type
Farben = (rot, gelb, blau, weiss, gruen);
Farbauswahl = gelb..weiss;
Beispiel:
Strukturierte Datentypen:
1. Array-Datentyp:
Arrays fassen eine feste Anzahl von Elementen eines anderen Datentyps zu
einem neuen Datentypen zusammen. Die einzelnen Elemente können über
Indizes lesend und schreibend angesprochen werden. Zur Deklaration
müssen die Wertebereiche der Indizes und der Basistyp der Elemente
angegeben werden.
type
Zahlenvektor = array [1..50] of integer;
Messwerte = array [byte] of real;
Beispiele als Typ:
Beispiele als Variable: var
Anzahl_Noten : array [0..15] of integer;
Messungen : array [0..100] of Messwerte;
Beispiele für Zuweisung:
Anzahl_Noten[15] := 1;
Anzahl_Noten[0] := Anzahl_Noten[8] + 1;
2. Mehrdimensionale Arrays:
Beispiel:
oder:
type
TKalender = array [1..12] of array [1..31]
of boolean;
type
TKalender = array [1..12, 1..31] of boolean;
Beispiel für Zuweisung:
TKalender[5, 30] := true;
Typendeklaration:
Die Typendeklaration wird durch das Schlüsselwort Type eingeleitet. Für <Typ> können vordefinierte
Typenbezeichner oder benutzerdefinierte Datentypen beschrieben werden.
Typendeklaration
Beispiele:
=
Bezeichner
type
Typ
Wochentage = 1..7;
Kleinbuchstaben = 'a'..'z';
Stueckzahl = byte;
Name = String [10];
Seite 8 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
06.01.2001
FH-Wedel
Variablendeklaration:
Begriffe in Bezug auf Variablen:
Name
Datentyp
Ort
Wert Intern
Wert Extern
Bezeichner der die Variable repräsentiert.
Art der Daten (Wertebereich), Speicherbedarf.
Adresse im Speicher (erstes belegtes Byte).
Bitfolge, die an der Speicheradresse zu finden ist.
Nach Regeln des Typs interpretierte Bitfolge.
Die Variablendeklaration wird durch das Schlüsselwort Var eingeleitet.
var
Beispiele:
Name : String [10];
Operatoren:
1. Arithmetische Operatoren: Binäre und Unäre
2. Logische Operatoren (Boolesche Operatoren)
Beide Operanden Boolesch = Übliche, logische Verknüpfung.
Beide Operanden Ganzzahlwerte = Verknüpfung der einzelnen Bits der Operanden.
3. Relationale Operatoren (Vergleichsoperatoren)
Operanden müssen kompatibel sein. Zahlen nur mit Zahlen, Zeichen nur mit Zeichen vergleichen etc.
Reihenfolge der Auswertung:
Klammern werden immer zuerst ausgeführt. Steht ein Operand zwischen zwei Operatoren
unterschiedlichen Rangs, ist er immer an den höherrangigen gebunden. Haben die Operatoren den
gleichen Rang, ist der Operand an den links von ihm stehenden gebunden. Auswertung erfolgt bei
gleichrangigen Operatoren von link nach rechts.
Rangfolge der Operatoren:
Operatoren:
not, + , * , / , div, mod, and
+ , - , or, xor
= , < , <= , > , >= , <>
Priorität:
1.
2.
3.
4.
Kategorie:
unäre Operatoren
multiplikative Operatoren
additive Operatoren
relationale Operatoren
Anweisungen:
1. Einfache Anweisungen:
Zuweisung
Prozeduranweisung
Goto-Anweisung (nicht zu benutzen!)
2. Strukturierte Anweisung: Verbundanweisung:
Begin ... End
bedingte Anweisung:
If-Then
bedingte Anweisung
If-Then-Else
Alternative
Case
Mehrfachauswahl
Wiederholungsanweisung:
Repeat-Anweisung
While-Anweisung
For-Anweisung
with-Anweisung
exeption-Anweisung
Seite 9 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
06.01.2001
Kommentare:
Natürlichsprachliche Erläuterungen zu Deklarationen und Anweisungen sowie größeren
Programmeinheiten. Kommentare werden vom Compiler nicht übersetzt. Die Kommentierung existier
unabhängig von den Inhalten des Programms. Somit sind Inkonsistenzen möglich!
Kommentare so wenig wie möglich, aber sooft wie nötig einsetzten. Die Kommentierung sollte parallel
zur Programmierung stattfinden.
Der Compiler übersetzt keine Texte die in (*...*)-Klammer und {}-Klammern (mit Ausnahme von
Compilerbefehlen in der Form {$...} ) stehen.
Compiler-Befehle:
Sind auch als Compiler-Direktiven bezeichnet. Diese Befehle können überall dort stehen, wo
Kommentare zulässig sind.
Aufbau der Compilerbefehle: - Öffnender Kommentarbegrenzer {
- $-Zeichen
- Befehlsname (Buchstabe oder auch lange Bezeichner)
- eventuelle Parameter
- Schließender Kommentarbegrenzer }
1. Schalterbefehle:
Aktivieren oder deaktivieren bestimmte Funktionen des
Compilers. Als Parameter sind nur das Plus- und Minuszeichen
vorgesehen.
I. Globale Befehle:
Beeinflussen den gesamten Compiliervorgang. Sie müssen vor
dem Deklarationsteil des Programms oder der Unit stehen.
{$D+}
Debuggerinformationen erstellen
II. Lokale Befehle:
Beeinflussen den Compiliervorgang nur bis zum nächsten Auftreten des Schalters im Programmtext. Mehrere Befehle können
zusammengefasst werden indem man Einzelbefehle durch
Kommata trennt. Keine Leerzeichen!
{$R+}
Lokaler Schalter für Wertebereichsprüfung
{$I+}
Auslösen von Exceptions bei E/A-Fehlern
2. Parameterbefehle:
Übergeben dem Compiler Parameter, die den Compiliervorgang
beeinflussen. Vor dem Parameter muss ein Leerzeichen stehen.
{$I Dateiname}
Einbinden von externen Programmdateien
{$L Dateiname}
Einbinden von Objektdateien (z. B. Assembler)
{$C Attribut...} Festlegen der Attribute von Code-Segmenten
Strukturierung von Programmen:
Strukturierung durch Prozeduren und Funktionen (Blöcke), Units oder Objekten, Kommentierung, etc.
1. Prozeduren:
Prozeduren fassen Anweisungen unter einem Namen zusammen und müssen deklariert werden. Der
Aufruf einer Prozedur erfolgt als Anweisung durch Nennung des Prozedurnamens (meinst mit
Parameterliste)
Prozedurkopf:
procedure <name> ( <parameterliste> );
Seite 10 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
06.01.2001
2. Funktionen:
Funktionen fassen Anweisungen unter einem Namen zusammen und liefern einen Wert als Ergebnis
(Funktionswert) zurück. Deklaration notwenig.
Funktionskopf:
function <name> ( <parameterliste> ) : ergebnistyp
Gemeinsamkeiten:
Deklaration besteht aus Kopf und Rumpf. Der Datenaustausch mit der Umgebung erfolgt über
Parameter. Alle im Deklarationsteil vereinbarten Variablen, Konstanten, Prozeduren etc. sind nur lokal
gültig. Die Deklaration muss vor dem Aufruf stehen. Der Aufruf erfolgt über den Namen mit
Parameterliste und kann beliebig oft mit unterschiedlichen Parametern erfolgen. Die Aufrufe können
auch geschachtelt erfolgen.
Unterschiede:
Prozeduren fassen eine Folge von Aktionen zusammen, Funktionen liefern hingegen einen Wert.
Prozeduren werden durch Nennung des Prozedurnamens mit aktuellen Parameter als Anweisung
aufgerufen. Funktionen durch Nennung des Funktionsnamen mit aktuellen Parametern als Teil eines
Ausdrucks.
Rekursion:
Prinzip der Selbstreferenz: In einer Definition eines Objektes wird Bezug genommen auf das zu
definierende Objekt.
Rekursive Lösungen sind häufig kürzer und eleganter als iterative jedoch meist auch weniger effizient, da
da bei jedem rekursiven Aufruf Speicherplatz reserviert und bei Verlassen wieder freigegeben wird. Der
Rekursive Abstieg ist somit durch Speicherplatz begrenzt.
1. Direkte Rekursion:
A ruft A auf
2. Indirekte Rekursion:
A ruft B auf. B ruft C auf. C ruft wieder A auf.
Achtung! Ohne wirksame Abbruchbedingung ergibt sich ein „endloser“ rekursiver Abstieg und führt zu
einem Laufzeitfehler „Stack Overflow“.
Parameter:
1. Unterscheidung:
Formale Parameter:
Festlegung der Anzahl und Art der Parameter bei der Deklaration.
Aktuelle Parameter:
Belegung der Parameterpositionen mit Werten bei Aufruf.
2. Unterscheidung:
Werteparameter:
(call by value)
Variablenparameter:
Dienen in der Prozedur nur als Eingabeparameter und entsprechen einer
lokalen Variablen innerhalb der Prozedur. Als aktuelle Parameter sind auch
Ausdrücke zulässig.
procedure ausgabe (zeile : cardinal);
Dienen in der Prozedur als Ein- und Ausgabeparameter. Es wird nicht der
Seite 11 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
FH-Wedel
06.01.2001
(call by reference)
Wert sondern die Speicheradresse des aktuellen Parameters übergeben.
Daher entsprechen Variablenparameter einer globalen Variablen. Es sind
als aktuelle Parameter keine Ausdrücke zulässig.
procedure ausgabe (var zeile : cardinal);
Konstantenparameter:
Dienen ausschließlich als Eingabeparameter und sind unveränderlich. Die
formalen Parameter entsprechen innerhalb der Prozedur einer lokalen
Variablen. Als aktuelle Parameter sind auch Ausdrücke zulässig.
Ausgabeparameter
Units:
Units enthalten Deklarationen von Programmteilen, wie Variablen, Prozeduren oder Funktionen. In
speziellen Fällen auch ausführbare Anweisungsfolgen. Units können von Programmen oder anderen Units
zur dortigen Verwendung importiert werden.
Units bestehen aus maximal 4 Abschnitten:
Interface-Abschnitt
Enthält Deklarationen von Programmelementen (für Prozeduren
und Funktionen nur den Kopf der Deklaration. Programmelemente im Interface können in Programmen und anderen Units
verwendet werden.
interface
Implementations-Abschnitt
Inhalte sind außerhalb der Unit nicht sichtbar. Dieser Teil enthält
die Blöcke zu den im Interface genannten Prozeduren und
Funktionen und auch weitere, die nur in der Unit benötig werden
(lokale Prozeduren und Funktionen).
implementation
Initializations-Abschnitt
Enthält Anweisungen zur Initialisierung der Unit, z.B. Init. von
Variablen oder öffnen von Dateien. Diese Anweisungen werden
bei der ersten Benutzung ausgeführt.
initialization
nur ObjectPascal
Finilizations-Abschnitt
nur ObjectPascal
Enthält Anweisungen, die bei Beendigung des Programms ausgeführt werde. Wesentlicher Gegenstand ist die Freigabe von
Ressourcen, wie z. B. Dateien, Speicher etc.
finalization
Interface und Implementation sind obligatorisch, Initialization und Finilization sind optional. Jeder
Abschnitt wird durch das entsprechende Schlüsselwort eingeleitet. Jeder Abschnitt endet mit dem Begin
des nächsten Abschnittes (mit dem entsprechenden Schlüsselwort).
Seite 12 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
06.01.2001
FH-Wedel
6. Wichtige Syntax
case-Anweisung
case
of
Ausdruck
Alternative
end
;
else-Teil
Bezeichner
Buchstabe
Buchstabe
Unterstrich
Ziffer
Unterstrich
Ausdruck
einfacher Ausdruck
=
einfacher Ausdruck
<
<=
>
>=
<>
Term
Faktor
einfacher Ausdruck
Term
*
+
/
-
div
or
mod
xor
and
...
Seite 13 von 14
v1.8
Programmiersprachen 1 – Zusammenfassung
Nico S. Beck
06.01.2001
FH-Wedel
Faktor
Variablenreferenz
Vorzeichenlose Konstante
(
Ausdruck
not
)
Faktor
Ausdruck
Faktor
Funktionsaufruf
...
Seite 14 von 14
v1.8
Herunterladen