Programmiergrundlagen in Pascal Flashcards

1
Q

Aus welchen Basis-Bausteinen besteht ein Pascal-Programm?

A

program heading [Programmkopf]

block -> declaration part [Deklarations-/Vereinbarungsteil]; statement part [Anweisungsteil]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wie ist der Deklarationsteil gegliedert?

A

constant definition part
type definition part
variable declaration part
procedure and function declaration part

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie ist der Anwendungsteil aufgebaut?

A

“begin” am Anfang, “end;” am Ende. Dazwischen statements [Anweisungen], getrennt durch “;”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welche Spezialsymbole kennt Pascal?

A
\+   -   *   /
.   ,   :   ;
=  <>  <    >=
\:=  ..  ^  '
(  )  [  ]  {  }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie lautet die Erstazdarstellung für [ ] ?

A

(. .)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie lautet die Ersatzdarstellung für { } ?

A

(* *)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welches Symbol ersetzt ^ ?

A

Einen Pfeil nach oben. Kann auch @ geschrieben werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche Schlüsselwörter kennt Pascal? Warum muss ich das wissen?

A
program  begin  end
const  type  var
array  of  record  function  procedure
and  not  or  div  mod
if  then  else for  to  downto
do  while  repeat  until
nil
(case  file  goto  label  packed  set  with)
Werden im handgeschriebenen Programm unterstrichen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welche Zeichengruppen unterscheidet Pascal?

A

Buchstaben (letters), Ziffern (digits), Spezialsymbole (special symbols), Schlüsselwörter (reserved words)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie ist ein zulässiger Bezeichner (identifier) aufgebaut? Wie sollte er gewählt werden.

A
  • beginnt mit einem Buchstaben; kann von weiteren Buchstaben oder Ziffern gefolgt werden
  • wenn möglich “sprechende” Bezeichner wählen
  • verschiedene Bezeichner sollten sich innerhalb der ersten 8 Zeichen unterscheiden
  • bei Bezeichnern unterscheidet Pascal nicht zwischen Groß- und Kleinbuchstaben
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wie sieht der Programmkopf im geschriebenen Program aus?

A

program identifier;
ODER
program identifier (identifier);
ODER
program identifier (identifier, identifier);

identifier in der Klammer i.d.R. input und/oder output (Standardein- und -ausgabe)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was gilt als Trennsmbol?

A
  • Leerzeichen (blank)
  • Zeilenende (eol)
  • Spezialsymbole
  • Kommentar
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist ein Standardbezeichner?

A

Ein in der Programmiersprache vordefinierter Bezeichner für Standardfunktionen, Standardtypen, etc.
Beispiele: writeln, output, char, integer,…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche Zahlenarten kennt Pascal?

A
  • integer (ganze Zahl)
  • real (kann jeden integer-Wert, Werte außerhalb der Integergrenzen (maxint) sowie Zahlen mit Fraktionsanteil darstellen)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie werden real-Zahlen dargestellt?

A
  • Festpunktdarstellung (0.0; 0.873; -74.1; 73.36789)

- nicht Normalisierte Gleitpunktdarstellung (0E0; 8.73E+02; 741E-1; 0.7336789E2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wie werden Konstanten definiert und benannt?

A
const
IDENTIFIER = value (integer, real, 'char', 'string');
ODER
IDENTIFIER = (+-) [anderer constant identifier];

Bezeichner von Konstanten werden komplett groß geschrieben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Wie werden Variablen deklariert?

A

var
identifier : type;
ODER
identifier, identifier : type;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Was wird im Vereinbarungsteil definiert? Was deklariert? Was ist der Unterschied?

A

Konstanten und Typen werden definiert, d.h. sie werden benannt.
Variablen und Prozeduren werden deklariert. Neben der Benennung wird ihnen z.B. bereits Speicherplatz reserviert etc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Welche Standarddatentypen kennt Pascal?

A
  • integer- und
  • real-Zahlen,
  • char,
  • boolean;

string kann als vordefiniert angenommen werden, ist es aber eigentlich in Standardpascal nicht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Welche Standardoperationen und Standardfunktionen können auf integer angewendet werden?

A

Operationen:
+, -, *
div (ganzzahlige Division), mod (Restbildung)

Funktionen:
abs(x) (Absolutbetrag), sqr(x) (Quadrat)
succ(x) (=x+1), pred(x) (=x-1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Welche Standardoperationen und Standardfunktionen können auf real angewendet werden?

A

Operationen:
+, -, *, /

Funktionen:
abs(x) (Absolutbetrag), sqr(x) (Quadrat), sqrt(x) (Wurzel),
sin(x) (Sinus), cos(x) (Cosinus), arctan(x) (Arcustangens),
exp(x) (Exponentialfunktion e^x), ln(x) (nat. Logarithmus)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Welche Standardfunktionen können auf char angewendet werden?

A

ord(c) (Ordinalzahl des Zeichens c)
chr(i) (Zeichen mit der Ordinalzahl i)
chr(ord(c)) = c; ord(chr(i)) = i;
pred(c) (Vorgänger), succ(c) (Nachfolger)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Welche Standardoperationen und Standardfunktionen welrden als boolean ausgewertet?

A

boolesche Operatoren:
and, or, not

Vergleichsoperatoren:
=, <>, , >=

Funktion:
odd(x) (true für x : integer ungerade)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Prioritäten von Operationen

A
Klasse 1:
not
Klasse 2 (Punktoperatoren):
*  /  div  mod  and
Klasse 3 (Strichoperatoren):
\+  -  or
Klasse 4 (Vergleichsoperatoren):
=  <>  <    >=
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Was ist ein string? Wie wird er definiert?
ein array von char string[integer constant] -> integer constant gibt maximale Länge des string an
26
Datentyp?
definiert eine Menge von Werten mit auf diese Menge ausführbaren Operationen
27
Was ist eine typisierte Programmierspreche?
- jede Konstante / Variable (Datenobjekt) wird eindeutig einem Datentyp zugeordnet - der Datentyp bestimmt die Werte, die ein Objekt annehmen und die Operationen, die auf es angewendet werden können - jede Operation fordert Operanden eines bestimmten Typs und erzeut Ergebnisse eines bestimmten Typs
28
Was ist der Unterschied zwischen einer Konstante und einer Variable?
Konstante: bekommt bei der Definition einen Wert zugewiesen, der sich in der Programmausführung nicht ändert Variable: bekommt erst während der Programmausführung einen Wert zugewiesen, der sich im weiteren Programmverlauf ändern kann
29
Was sind einfache Anweisungen?
- leere Anweisung - assignment statement [(Wert-)Zuweisung] (variable identifier := expression) - compound statement [zusammengesetzte Anweisung] (begin statement; statement; statement end) - special statement [spezielle Anweisung] (z.B. read, writeln, etc.)
30
Was sind strukturierte Anweisungen?
- bedingte Anweisung (if condition then statement (else statement)) - Laufanweisung (for identifier := expression [to; downto] expression do statement) - while-Schleife (while expression do statement) - repeat-Schleife (repeat statement [; statement; ...; statement] until expression)
31
Sequenz
Aufeinanderfolge von Anweisungen, die jeweils durch ein Semikolon getrennt sind
32
Welche Datentypen können mit read() eingelesen werden?
char, integer oder real
33
Welche Datentypen können mit write() ausgegeben werden?
char, integer, real, boolean oder string
34
In welcher Form können Daten mit write() ausgegeben werden?
x -> "normale" Ausgabe x: b -> b legt die minimale Feldbreite fest; umfasst x weniger Zeichen, werden vorne Leerzeichen angefügt x: b:k -> nur real; k gibt die maximale Anzahl an Nachkommastellen an, auf die ggf. gerundet wird
35
Wie sollten bedingte Anweisungen i.d.R. geschachtelt werden? Warum?
Nur den else-Zweig schachteln, um Zuordnung verschiedener else-Zweife zu den then-Zweigen zu vereinfachen und dangling else zu vermeiden.
36
Wie werden einfache Datentypen selbst definiert?
type identifier = type Bezeichner beginnt mit t (tBezeichner).
37
Wie wird ein Aufzählungstyp (enumerated type) definiert?
type identifier = (identifier, identifier, ...) Beispiel: tFarbe = (rot, gelb, gruen, blau); Aufzählungstypen dürfen nicht aus Werten anderer Datentypen bestehen.
38
Wie wird ein Ausschnittstyp (subrange type) definiert?
type identifier = constant..constant Beispiel tPositiveZahl = 1..maxint; tEinstellig = 0..9;
39
Wann werden die einzelnen Schleifenarten sinnvoll eingesetzt?
repeat-Schleife: Schleife soll unabhängig von den Eingangswerten einmal durchlaufen werden while-Schleife: Schleife soll für bestimmte Werte nicht durchlaufen werden for-Schleife: die Anzahl der Schleifendurchläufe steht vor Eintritt in die Schleife fest
40
strukturierte Datentypen
Möglichkeit, bei Bedarf mehrere Werte (gleichen oder unterschiedlichen Typs) in einem Objekt zusammenzufassen
41
Arten von strukturierten Datentypen
- Feldtyp (array) | - Verbundtyp (record)
42
Wie wird ein (eindimensionaler) Feldtyp definiert?
array[index type] of component type Indextyp muss endlich und kann Aufzählungs-, Ausschnittstyp, char, boolean sein. Komponententyp ist beliebig.
43
Wie wird ein mehdimensionaler Feldtyp definiert?
array[index type, index type] of component type Beispiel tMatrix = array[tZeile, tSpalte] of integer;
44
Wie wird ein Verbundtyp definiert?
``` record field identifier, field identifier : type; field identifier : type end ``` Komponententypen sind beliebig.
45
Wie wird auf eine Komponente eines Verbunds zugegriffen?
Beispiel: ``` Zeit = record Stunde : 0..23; Minute : 0..59; Sekunde : 0..59 end; ``` write('Es ist ', Zeit.Stunde, ' Uhr, ', Zeit.Minute, ' Minuten und ', Zeit.Sekunde, ' Sekunden.');
46
Bereichsüberschreitung
Tritt bei dem Versuch, ein Feldelement mit einem Indexwert anzusprechen, der nicht existiert. Beispiel: Zwerg = array[1..7] of tZwerg Zwerg[8].Name := 'Riese'; => Bereichsüberschreitung
47
indizierte Variable
einzelne Komponente eines Feldtyps
48
selektierte Variable
aufgerufene Komponente eines Verbundtyps
49
eof
Tastenkombination d (UNIX) bzw. z (MS-DOS) Prüfung z.B. if eof then { Eingabeende }
50
Funktionskopf
``` function identifier : result type; ODER function identifier (identifier, identifier : type; identifier : type) : result type; ```
51
Funktions- / Prozedurrumpf
Vereinbarungsteil (lokale Konstanten-, Typen-, Variablen-, Funktionsvereinbarungen) Anweisungsteil
52
Prozedurkopf
procedure identifier; ODER procedure identifier (identifier : type; var identifier, identifier : type; var identifier : type);
53
Funktionsaufruf
identifier(aktuelle Parameter) Ein Funktionsaufruf ist Teil eines Ausdrucks. (if identifier(aktuelle Parameter) then... x := identifier(aktuelle Parameter); etc.)
54
aktueller Parameter
Wert, mit dem ein formaler Parameter beim Aufruf besetzt wird
55
formaler Parameter
Im Funktions- / Prozedurkopf deklarierte / definierte Parameter
56
Prozeduraufruf
identifier(aktuelle Parameter); Ein Prozeduraufruf ist ein eigenständiger Befehl.
57
in-Parameter
inIdentifier : type; - lokale Konstante - wird über Parameterliste übergeben und im Rahmen der Funktion / Prozedur nicht geändert - Parameter in Funktionen sind immer in-Parameter
58
out-Parameter
var outIdentifier : type; - wird nicht zur Berechnung innerhalb der Prozedur benutzt - bekommt einen Wert zugewiesen, der nach Prozedurausführung nach außen "abgeliefert" wird - eigentlich gibt es in Pascal keine echten out-Parameter
59
inout-Parameter
var ioIdentifier : type; - wird über Parameterliste eingelesen - wird während Prozedurausführung verändert - gibt nach Prozedurausführung den geänderten Wert zurück
60
Wertübergabe (call-by-value)
in-Parameter
61
Referenzübergabe (call-by-reference)
io-Parameter; tatsächlich auch out-Parameter Voranstellung von "var" -> var-Parameter
62
Wann ist eine Konstante / Variable lokal?
Ein Objekt ist lokal zu dem Block, in dem er vereinbart wird. Er kann von äußeren Blöcken nicht angesprochen werden.
63
Wann ist eine Konstante / Variable global?
Ein Objekt ist global zu allen dem Block, in dem es vereinbart ist, lokalen Blöcken.
64
Gültigkeitsbereich
Bereich, in dem ein Objekt angesprochen werden kann, also der Block, in dem es vereinbart ist, sowie in ihm geschachtelte Blöcke
65
Schachtelung
Deklaration einer Prozedur in einer Prozedur
66
Namenskonflikt
- ein bereits vergebener Bezeichner wird in einem inneren Block neu belegt - sollte in jedem Fall vermieden werden In diesem Fall gilt jeweils die in der Struktur am nächsten an einem inneren Block gelegene Vereinbarung.
67
statische Blockstruktur
Die sich aus den verschiedenen Blöcken durch Aneinanderreihung und Schachtelung ergebende, am (statischen) Programmtext ablesbare, Struktur eines Programms.
68
dynamische Blockstruktur
Ergibt sich auf den (dynamischen) Prozeduraufrufen während der Laufzeit. Jede neu aufgerufene Prozedur erzeugt einen neuen Block in dem Block, aus dem sie aufgerufen wird. Abhängig von Eingabedaten (da der Prozeduraufruf u.U. über Abfragen erfolgt).
69
Existenz, Lebensdauer
Eine Variable existiert, solange der Block, zu dem sie lokal ist, ausgeführt wird. Lebensdauer <> Gültigkeitsbereich
70
Seiteneffekt
Schwierig zu kontrollierende und daher schnell zu Fehlern führende Effekte auf die Programmfunktion durch Prozeduren / Funktionen. Zu vermeiden. Entstehen durch: - Modifikation globaler Variablen - Änderungs- oder Ausgangsparameter in Funktionen