• Keine Ergebnisse gefunden

4. Einstieg: Sprachkonstrukte und allgemeiner Programmaufbau

N/A
N/A
Protected

Academic year: 2022

Aktie "4. Einstieg: Sprachkonstrukte und allgemeiner Programmaufbau"

Copied!
25
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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.

(2)

4.1 Programmstruktur

Programm

Programm

include-Anweisung Variablendefinition

Main-Funktion

(3)

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!

(4)

- 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;

(5)

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 */

(6)

- 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;

(7)

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

(8)

void main () {

{ /* Hier rechne ich sinus */

. }

. . } .

.

{ /*... cosinus ...*/

. . } .

} {

{ ...

} { ...

} { ...

}

4.3 Blockstruktur der Programme, „blockorientierte“

Sprachen

} .

(9)

Anweisung

Schreibanweisung

Vergleich (Bedingte Anweisung) Leseanweisung

Zuweisung

Zusammengesetzte Anweisung

...

4.4 Allgemeine Darstellung der Anweisungen

;

(10)

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

...;

(11)

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 */

(12)

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*/

(13)

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?

(14)

Programmablaufplan :

BEGIN

zhl

zhl > 0

?

zhl positiv

zhl negativ

END

lies zhl ein

Ausgabe

J N

Selektion

(15)

J N N

zhl = 0?

zhl negativ J

lies zhl ein BEGIN

zhl

zhl > 0?

zhl positiv

END zhl = 0

Der korrigierte Programmablaufplan:

Ausgabe

Vergleiche

(16)

#include <stdio.h>

void main() {

int zhl;

scanf("%d", &zhl);

if (zhl > 0)

printf("positive Zahl");

else {

if (zhl == 0)

printf("Zahl 0");

else printf("negative Zahl");

} }

Das korrigierte Programm:

(17)

4.7 Syntax von Vergleich

Bedingung

Anweisung 1

Anweisung 2 if

else ;

;

( )

Bedingte Anweisung (Binäre Entscheidung)

(18)

Bedingung

Zusammengesetzte Bedingung

Bedingung

||

(

!

&&

)

Ausdruck < Ausdruck

!=

>=

>

==

<=

(19)

4.8 Ausdrücke

Boolescher Ausdruck Einfacher Ausdruck

Einfacher Ausdruck

!=

>=

>

==

<=

<

(nach George Boole)

(20)

einfacher (arithmetischer) Ausdruck

Präfix-Operation

Term +

- + -

Infix-Operation

Kontextsensitive (umgebungsabhängige) Interpretation der Operationen + und - .

(21)

Faktor

Term

%

/

Faktor *

(22)

Faktor

indirekt rekursive Definition „einfacher Ausdruck“

vorzeichenlose Konstante

Bezeichner einfacher Ausdruck

( )

(23)

Bezeichner für eine Konstante

INTEGER -Zahl

REAL -Zahl

Vorzeichenlose Konstante

(24)

Beispiele für Ausdrücke:

arithmetische Ausdrücke

2, 2 * 3, 2 * 1, 50 % 2 a, 2 + a, 7 * b

(a + b) * (c / d) % (e * 2 + f)

boolescher Ausdruck

a<5, a+b >= -10,

!(((a > b) || (c >= 10)) && ((a + 2) > 5))

(25)

4.9 C-spezifische Syntax gängiger Zuweisungsoperatoren

- viele binäre Operatoren haben entsprechenden Zuweisungsoperator:

+=, -=, *=, /= usw.

- <Ausdruck1> <Operator>= <Ausdruck2>

ist äquivalent zu

<Ausdruck1> = (<Ausdruck1>) <Operator> (<Ausdruck2>)

- Beispiele:

x += 2; => x = x + 2;

x *= y + 1; => x = x * (y + 1);

/* Klammerung beachten! */

Referenzen

ÄHNLICHE DOKUMENTE

Womit aber gleichzeitig auch deutlich gesagt wird, daß zumindest einige der 12 Millionen Patienten jähr- lich, welche die Heilpraktiker für sich in Anspruch nehmen, eben

veraltete Strukturen, die dem heuti- gen Krankheits- und Leistungsspek- trum nicht angepaßt seien, die man- gelhafte Personalbemessung im Pfle- gebereich wie auch bei den Arztstel-

Die Mindestabstandsregelung im Spielfeldzugang muss zu allen Zeitpunkten (Aufwärmen, Betreten des Spielfeldes, in der Halbzeit, nach dem Spiel) eingehalten werden. Liga) sind

übermitteln, werden nur so lange gespeichert, um den jeweiligen Zweck der Erhebung erfüllen zu können. Die in diesem Zusammenhang anfallenden Daten werden gelöscht, sobald

Basis der Auswertung waren hier alle dokumentierten therapeutischen Einzelkon- takte mit denjenigen Patienten, für die im Lauf des Untersuchungszeitraums eine Betreuung

Deutlich wird aber, dass Elektrizität (eigentlich die elektrische Ladung) übertragen werden kann durch elektrisch geladene Körper.. Ebenso deutlich wird, dass Elektrizität

Ein im Vordergrund laufender Prozess kann mit „Strg-z“ angehalten werden (Signal STOP). Es kann natürlich nur ein Prozess im Vordergrund laufen, aber beliebig viele können

Für die Positionen (a) und (b) sind bewertende Unterscheidungen zwischen Techniken weltbildstörend. Sie sprechen lieber pauschal von &#34;der Technik&#34; und stempeln