4. Einstieg: Sprachkonstrukte und allgemeiner Programmaufbau
Ziele dieser Einheit:
- Kennen lernen elementarer Bestandteile konventioneller Programmiersprachen,
- Zusammensetzung dieser Bestandteile zur Bildung einfacher Programme,
- Berücksichtigung potentieller Fehlerquellen in
Programmen.
4.1 Programmstruktur
Programm
Programm
include-Anweisung Variablendefinition
Main-Funktion
4.2 Include-Anweisung, Variablendefinition (Deklaration)
Datentyp (DT)
int float double
char
Bezeichner Datentyp
; ,
Variablendefinition
Include-Anweisung (Preprocessor-Anweisung)
#include <stdio.h>
Bemerkung: Die eckigen Klammern werden üblicherweise zur
Kennzeichnung von Nicht-Terminalen benutzt; hier allerdings nicht!
- Variablen identifizieren Speicherstellen.
- bestehen aus einem Namen (bzw. Bezeichner), Stelle/Adresse im Speicher und Inhalt
- Sie treten definierend bzw. angewandt im Programm auf:
definierend: Typ VarName;
angewandt: VarName = ...
Beispiele : int zahl;
int zahl1, zahl2;
double geldbetrag;
zahl1=10; zahl2=20;
…
zahl=0; …
Unser erstes C-Programm
#include <stdio.h> /*Standard Ein-/Ausgabe*/
/* Hauptprogramm */
void main() /* void: kein Ergebnis-DT*/
{ /* Beginn */
/* Ausgabe von Hallo, Welt! */
printf("Hallo, Welt! \n");
/* „printf“ : Funktion „print formatted “ */
/* „\n“ : „escape sequence“ - newline */
} /* Ende */
- Variablen identifizieren Speicherstellen.
- bestehen aus einem Namen (bzw. Bezeichner), Stelle/Adresse im Speicher und Inhalt
- Sie treten definierend bzw. angewandt im Programm auf:
definierend: Typ VarName;
angewandt: VarName = ...
Beispiele : int zahl;
int zahl1, zahl2;
double geldbetrag;
zahl1=10; zahl2=20;
…
zahl=0; …
Anweisung ;
Zusammengesetzte Anweisung (compound statement)
{ }
Beispiel: void main ( int argc, char* argv[] ) {
int zhl;
int quadrat = zhl*zhl;
printf ("%d",quadrat);
}
Main-Funktion
Parameterliste
( )
Zusammengesetzte Anweisung int main
void
void main () {
{ /* Hier rechne ich sinus */
. }
. . } .
.
{ /*... cosinus ...*/
. . } .
} {
{ ...
} { ...
} { ...
}
4.3 Blockstruktur der Programme, „blockorientierte“
Sprachen
} .
Anweisung
Schreibanweisung
Vergleich (Bedingte Anweisung) Leseanweisung
Zuweisung
Zusammengesetzte Anweisung
...
4.4 Allgemeine Darstellung der Anweisungen
;
printf("Hallo, Welt! \n");
Beispiele:
Schreibanweisung:
Leseanweisung:
Zuweisung:
Zusammengesetze Anweisung:
Vergleich (Bedingte Anweisung):
scanf( " %d", &zhl1);
zhl = 100;
{
int zhl;
int quadrat = zhl*zhl;
printf ("%d",quadrat);
}
if ( ... ) ...;
else
...;
Schreib- und Leseanweisung näher betrachtet
Schreibanweisungen
printf("Zahl eingeben \n");
/* druckt die konstante Zeichenkette (Literal) „Zahl …“ aus */
printf("%s", "hey");
/* druckt die Zeichenkette (string) „hey“ aus */
printf("%c%c%c",'h','e','y');
/* druckt sukzessiv die Einzelzeichen (character) „h“, „e“, „y“ aus */
int zhl;
printf("Die Zahl \n%d ist positiv", zhl);
/* Ausgb: „Die Zahl “, neue Zeile, Ausgb: der aktuelle Wert von zhl */
/* (decimal integer), letzte Ausgb: „ ist positiv.“ */
Leseanweisungen
int zhl, zhl1, zhl2; char ch;
scanf("%d", &zhl);
/* liest die ganze Zahl (decimal integer) „zhl“ ein */
scanf(" %c%d%d", &ch, &zhl1, &zhl2);
/* liest das Zeichen „ch“ und ganze Zahlen „zhl1“ und „zhl2“ ein */
guthaben =
Beispiele: guthaben = 50; /* Geschenk G´mutter */
zhl1 = 3;
zhl2 = 4;
zhl1 = zhl1 + zhl2;
...
zhl2 = zhl1 + zhl2;
gesch_tante = 100;
/*neues*/
ergibt sich aus
4.5 (Wert-)Zuweisung („Ergibt-sich-Anweisung“)
Variable = Ausdruck
(Bezeichner)
ergibt sich aus
guthaben + gesch_tante;
/*altes*/
else printf(“negative Zahl“);
...
int zhl;
scanf(“%d“, &zhl);
if (zhl > 0)
printf(“positive Zahl“);
...
4.6 Selektion der nächsten Anweisung durch Vergleich
Aufgabe: Schreibe ein C-Programm, das eine Zahl zhl einliest und ausgibt, ob sie positiv oder negativ ist.
Richtig SO?
Programmablaufplan :
BEGINzhl
zhl > 0
?
zhl positiv
zhl negativ
END
lies zhl ein
Ausgabe
J N
Selektion