124
1 Ingenieurinformatik Einführung in die Programmiersprache C 2 Das Modul „Ingenieurinformatik“ wird in den Bachelorstudiengängen Maschinenbau, Fahrzeugtechnik, Luft-und Raumfahrt angeboten Teil 1: Grundlagen der Programmierung - Einführung in die Grundlagen der Programmiersprache C - Umfang insgesamt: drei Semesterwochenstunden (3 SWS), davon 2 SWS seminaristischer Unterricht („Vorlesung“) und 1 SWS Rechnerübung („Praktikum“, 6 Termine) - Die regelmäßige Bearbeitung von Programmieraufgaben am eigenen Rechner zu Hause ist unbedingt notwendig, um den Stoff zu verstehen und die Prüfung mit Erfolg zu bestehen. - Schriftliche (Teil-)Prüfung (60 Minuten) Teil 2: Numerik für Ingenieure - Einführung in die Arbeit mit MATLAB und Simulink - Umfang insgesamt: zwei Semesterwochenstunden (2 SWS), davon 1 SWS seminaristischer Unterricht („Vorlesung“) und 1 SWS Rechnerübung („Praktikum“, 6 Termine) - Schriftliche (Teil-)Prüfung (60 Minuten)

Programmiersprache C Ingenieurinformatik

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmiersprache C Ingenieurinformatik

1

Ing

en

ieu

rinfo

rma

tik

Ein

füh

run

g in

die

Pro

gra

mm

iersp

rach

e C

2

Da

s Mo

du

l „In

ge

nie

urin

form

atik

“ w

ird in

de

n B

ach

elo

rstud

ien

ng

en

Ma

schin

en

ba

u, Fa

hrze

ug

tech

nik

, Luft-

un

d R

au

mfa

hrt a

ng

eb

ote

n

•Te

il 1: G

run

dla

ge

n d

er P

rog

ram

mie

run

g

−E

infü

hru

ng in

die

Gru

nd

lagen

de

r Pro

gramm

iersp

rache

C−

Um

fang in

sgesam

t: dre

i Sem

este

rwo

che

nstu

nd

en

(3 SW

S),d

avon

2 SW

S sem

inaristisch

er U

nte

rricht („V

orle

sun

g“)u

nd

1 SW

S Re

chn

erü

bu

ng („P

raktikum

“, 6 Te

rmin

e)

−D

ie re

gelm

äßige

Be

arbe

itun

g von

Pro

gramm

ierau

fgabe

n am

eige

ne

n R

ech

ne

r zu H

ause

ist un

be

din

gt no

twe

nd

ig, u

m d

en

Stoff zu

verste

he

n u

nd

die

Prü

fun

g mit E

rfolg zu

be

steh

en

.−

Schriftlich

e (Te

il-)Prü

fun

g (60

Min

ute

n)

•Te

il 2: N

um

erik

für In

ge

nie

ure

−E

infü

hru

ng in

die

Arb

eit m

it MA

TLAB

un

d Sim

ulin

k−

Um

fang in

sgesam

t: zwe

i Sem

este

rwo

che

nstu

nd

en

(2 SW

S),d

avon

1 SW

S sem

inaristisch

er U

nte

rricht („V

orle

sun

g“)u

nd

1 SW

S Re

chn

erü

bu

ng („P

raktikum

“, 6 Te

rmin

e)

−Sch

riftliche

(Teil-)P

rüfu

ng (6

0 M

inu

ten

)

Page 2: Programmiersprache C Ingenieurinformatik

3

Ach

tun

g: A

bh

än

gig

da

vo

n, w

an

n S

ie Ih

r Stu

diu

m b

eg

on

ne

n h

ab

en

,

ssen

Sie

sich e

ntw

ed

er zu

de

n Te

ilprü

fun

ge

n „

Pro

gra

mm

ieru

ng

“ u

nd

„N

um

erik

für In

ge

nie

ure

“ se

pa

rat a

nm

eld

en

(Va

rian

te 1

) od

er fü

r die

Ge

sam

tprü

fun

g „

Ing

en

ieu

rinfo

rma

tik“ (V

aria

nte

2).

Va

rian

te 1

(Teilp

rüfu

ng

en

„P

rog

ram

mie

run

g“ u

nd

„N

um

erik

“):

−Je

de

Teilp

rüfu

ng m

uss m

ind

este

ns m

it de

r No

te 4

.0 b

estan

de

n w

erd

en

.−

Die

Teilp

rüfu

nge

n d

ürfe

n in

un

tersch

ied

liche

n Se

me

stern

gesch

rieb

en

w

erd

en

.−

Die

En

dn

ote

ergib

t sich au

s de

n N

ote

n d

er Te

ilprü

fun

gen

„Pro

gramm

ieru

ng“

un

d „N

um

erik fü

r Inge

nie

ure

“ im V

erh

ältnis 6

0:4

0 ge

wich

tet.

Va

rian

te 2

(Ge

sam

tprü

fun

g „

Ing

en

ieu

rinfo

rma

tik“):

−B

eid

e P

rüfu

ngste

ile m

üsse

n im

selb

en

Sem

este

r gesch

rieb

en

we

rde

n.

−A

us d

en

Pu

nkte

n, d

ie in

„Pro

gramm

ieru

ng“ u

nd

„Nu

me

rik für In

gen

ieu

re“

erre

icht w

urd

en

wird

ein

e G

esam

tpu

nktzah

l erm

ittelt. D

abe

i we

rde

n d

ie

be

ide

n P

rüfu

ngste

ile im

Ve

rhältn

is 60

:40

gew

ichte

t. Die

En

dn

ote

ergib

t sich

aus d

er G

esam

tpu

nktzah

l.−

Es m

uss also

nich

t jed

er P

rüfu

ngste

il sep

arat „be

stand

en

“ we

rde

n.

4

De

r Re

chn

er a

ls We

rkze

ug

Be

ispie

le:

Textverarb

eitu

ng

, CA

D-Syste

me

, Simu

lation

, Date

n-

ban

ken

, Inte

rne

t, FEM

-Be

rech

nu

nge

n, P

roje

ktplan

un

g�

De

r Inge

nie

ur n

utzt In

form

ation

stech

nik

De

r Re

chn

er a

ls Pro

jek

tbe

stan

dte

il

Be

ispie

le:

Au

tom

atisieru

ng vo

n M

aschin

en

un

d A

nlage

n,

Fahrze

uge

lektro

nik, Le

ittech

nik

�D

er In

gen

ieu

r de

finie

rt An

ford

eru

nge

n an

die

In

form

ation

stech

nik („A

uftrag

geb

er“)

De

r Re

chn

er a

ls En

twick

lun

gso

bje

kt

Be

ispie

le:

En

twicklu

ng in

tellige

nte

r Masch

ine

n (z. B

. für d

ieP

rod

uktio

n ab

er au

ch als P

rod

ukte

), En

twicklu

ng vo

n

Me

sstech

nik (z. B

. zur V

ersu

chsau

swe

rtun

g)�

De

r Inge

nie

ur e

ntw

ickelt In

form

ation

stech

nik

Wo

zu In

ge

nie

urin

form

atik

? Ich

stud

iere

do

ch M

asch

ine

nb

au

,

Fah

rzeu

gte

chn

ik o

de

r Luft-

un

d R

au

mfa

hrt!

Page 3: Programmiersprache C Ingenieurinformatik

5

Ein

füh

run

g in

die

Pro

gra

mm

iersp

rach

e C

1.

Ein

leitu

ng

2.

Za

hle

nsy

stem

e, D

arste

llun

g v

on

Info

rma

tion

en

De

zimal-, D

ual-, H

exade

zimalsyste

m, In

tege

r-u

nd

Fließ

kom

mazah

len

3.

Me

in e

rstes C

-Pro

gra

mm

Co

mp

iler u

nd

Linke

r, Be

ispie

le e

infach

er C

-Pro

gramm

e

4.

Ko

ntro

llstruk

ture

n

Be

feh

lsseq

ue

nze

n, V

erzw

eigu

nge

n, Sch

leife

n, Sp

run

ganw

eisu

nge

n

5.

Na

me

n, D

ate

nty

pe

n, O

pe

rato

ren

Nam

en

, Schlü

sselw

örte

r, Date

ntyp

en

, Ko

nstan

ten

, Op

erato

ren

6.

Fu

nk

tion

en

De

klaration

un

d D

efin

ition

von

Fun

ktion

en

, lokale

/glob

ale V

ariable

n

7.

Ve

kto

ren

un

d Z

eich

en

ke

tten

Ve

ktore

n u

nd

Matrize

n, e

infach

e So

rtierve

rfahre

n, Ze

iche

nke

tten

8.

Ad

resse

n u

nd

Ze

ige

r

An

we

nd

un

g von

Zeige

rn u

nd

Zeige

rarithm

etik

6

Leh

rbü

che

r zur P

rog

ram

mie

rspra

che

C

•G

erd

vele

r, Die

trich Sch

wo

chIn

form

atik

für In

ge

nie

ure

un

d N

atu

rwisse

nsch

aftle

r (Bd

. 1 u

nd

2)

Vie

we

g-Ve

rlag (sieh

e au

ch: w

ww

.sprin

gerlin

k.de

)

•B

rian K

ern

ighan

, De

nn

is Ritch

ieP

rog

ram

mie

ren

in C

Han

ser Fach

bu

ch, 2

. Au

sgabe

, 19

90

•B

ev

or S

ie e

in te

ure

s Bu

ch k

au

fen

:

Ge

me

insam

mit Ih

ne

n le

rne

n M

illion

en

Stud

iere

nd

e ü

be

rall auf

de

r We

lt die

selb

en

Info

rmatik-G

run

dlage

n. Sie

find

en

im In

tern

et

(Go

ogle

, Wikip

ed

ia…) alle

s, was Sie

zum

Lern

en

be

tigen

.Su

che

n Sie

auch

nach

en

glische

n B

egriffe

n!

Sk

ripte

(Fach

scha

ft)

•V

orle

sun

gsfolie

n, alte

Klau

sure

n

Page 4: Programmiersprache C Ingenieurinformatik

7

Ka

pite

l 1

Ein

leitu

ng

8

1. E

inle

itun

g

1. E

inle

itun

g

Wa

s ist Info

rma

tik?

Info

rmatik

ist die

Wisse

nsch

aft v

on

de

r syste

ma

tische

n V

era

r-

be

itun

gv

on

Info

rma

tion

en

, insb

eso

nd

ere

de

r auto

matisch

en

V

erarb

eitu

ng m

it Hilfe

von

Re

che

nan

lagen

. Histo

risch h

at sich d

ie

Info

rmatik als W

issen

scha

ft au

s de

r Ma

the

ma

tik e

ntw

icke

lt, w

ähre

nd

die

En

twicklu

ng d

er e

rsten

Re

che

nan

lagen

ihre

Ursp

rün

ge

in d

er E

lektro

tech

nik u

nd

Nach

richte

nte

chn

ik hat.

De

nn

och

stelle

n C

om

pu

ter n

ur e

in W

erk

zeu

g u

nd

Me

diu

m d

er

Info

rmatik d

ar, um

die

the

ore

tische

n K

on

zep

te p

raktisch u

mzu

-se

tzen

. De

r nie

de

rländ

ische

Info

rmatike

r Edsge

rW

ybe

Dijkstra

form

ulie

rte: „In

de

r Info

rmatik ge

ht e

s gen

auso

we

nig u

m C

om

pu

ter

wie

in d

er A

stron

om

ie u

m Te

lesko

pe

.“

(Qu

elle

: Wikip

ed

ia)

Page 5: Programmiersprache C Ingenieurinformatik

9

1. E

inle

itun

g

1. E

inle

itun

g

1. Te

ilge

bie

t: Th

eo

retisch

e In

form

atik

Form

ale Sp

rache

n u

nd

Au

tom

aten

the

orie

(Eige

nsch

aften

ein

es

abstrakte

n R

ech

ne

rs), Algo

rithm

en

(Sortie

ren

), Be

rech

en

barke

it, K

rypto

graph

ie

2. Te

ilge

bie

t: Tech

nisch

e In

form

atik

Au

fbau

un

d Stru

ktur d

er C

om

pu

terh

ardw

are, R

ech

ne

rarchite

ktur,

Mikro

pro

zesso

ren

, Re

chn

ern

etzw

erke

un

d R

ech

ne

rkom

mu

nikatio

n

3. Te

ilge

bie

t: Pra

ktisch

e In

form

atik

Pro

gramm

iersp

rache

n, Ü

be

rsetze

r (Co

mp

iler), So

ftware

en

gine

erin

g, B

etrie

bssyste

me

, verte

ilte Syste

me

, Date

nb

anke

n

4. Te

ilge

bie

t: An

ge

wa

nd

te In

form

atik

An

we

nd

un

g de

r Info

rmatik in

and

ere

n W

issen

schafte

n,

CA

x(C

om

pu

ter A

ide

d) Syste

me

, z. B. C

AD

(De

sign), C

AE

(En

gine

erin

g),W

irtschaftsin

form

atik, Me

dizin

info

rmatik...

Page 6: Programmiersprache C Ingenieurinformatik

1

Ka

pite

l 2

Zahle

nsyste

me

,D

arstellu

ng vo

n In

form

ation

en

2

Ein

Co

mp

ute

r spe

iche

rt un

d ve

rarbe

itet m

eh

r od

er w

en

iger gro

ße

In

form

ation

sme

nge

n, je

nach

An

we

nd

un

g un

d Le

istun

gsfähigke

it.

Die

Pro

gramm

ieru

ng d

erartige

r Re

chn

er se

tzt Ke

nn

tnisse

üb

er d

ie

Darste

llun

g de

r Info

rmatio

ne

n vo

raus!

2. Za

hle

nsyste

me

, Da

rstellu

ng vo

n In

form

ation

en

2. Zah

len

system

e

Spe

iche

r

Pro

zesso

r

Einga

be

date

n

Pro

gram

me

Au

sgab

ed

aten

Page 7: Programmiersprache C Ingenieurinformatik

3

2. Za

hle

nsyste

me

, Da

rstellu

ng vo

n In

form

ation

en

2. Zah

len

system

e

We

gen

de

r in C

om

pu

tern

verw

en

de

ten

Bau

ele

me

nte

we

rde

n alle

In

form

ation

en

bin

är (du

al) darge

stellt.

Info

rmatio

nse

lem

en

tR

ea

lisieru

ng

Scha

lter

Festp

latte

Spe

iche

r (RA

M)

CD

-RO

M, D

VD

offe

n / ge

schlo

ssen

Ma

gne

tfeld

„ein

“ / „au

s“

Spa

nn

un

g ein

/ au

s

Re

flexion

/ kein

e R

efl.

4

Glie

de

run

g

2. Zah

len

system

e

Ka

pite

l 2 –

Zah

len

system

e

2.1

Da

rstellu

ng p

ositive

r gan

zer Za

hle

n2

.2U

mre

chn

un

g zwisch

en

Zah

len

system

en

2.3

Re

chn

en

im D

ua

lsystem

2.4

Da

rstellu

ng n

egative

r gan

zer Za

hle

n2

.5D

arste

llun

g geb

roch

en

er Za

hle

n2

.6Ü

bu

ngsa

ufga

be

n

Page 8: Programmiersprache C Ingenieurinformatik

5

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Zahle

n w

erd

en

im täglich

en

Leb

en

im D

ezim

alsyste

md

argeste

llt. D

as gilt erst re

cht fü

r ganze

Zahle

n. D

as De

zimalsyste

m ist e

in

Stelle

nw

ertsyste

m(au

ch „p

olya

disch

es

Zah

len

system

“).

Be

ispie

l:15

32

= 2

·1+

3·1

0+

5·1

00

+ 1

·10

00

= 2

·10

0+

3·1

01

+ 5

·10

2+

1·1

03

2 · 1

00

+3

· 10

1

+5

· 10

2

+1

· 10

3

Basis =

10

6

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Für d

ie D

arstellu

ng gan

zer Zah

len

in Ste

llen

we

rtsystem

en

giltgan

z allgem

ein

(z. B. im

De

zimalsyste

m m

it de

r Basis b

= 1

0):

X =

a0 ·b

0+

a1 ·b

1+

a2 ·b

2+

… +

an ·b

n

Od

er kü

rzer:

X =

ai ·b

ii =

0, 1

, …

ai∈

{0, 1

, 2, …

, b-1

}

Zur E

rinn

eru

ng:

b0

= 1

Σ

Page 9: Programmiersprache C Ingenieurinformatik

7

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Im Zu

samm

en

han

g mit D

igitalrech

ne

rn sin

d d

rei Ste

llen

we

rt-syste

me

be

son

de

rs rele

vant:

-D

as D

ezim

alsyste

m-

Da

s Du

alsyste

m (B

inä

rsystem

)-

Da

s Hexa

de

zima

lsystem

Die

Be

de

utu

nge

n d

er e

rsten

be

ide

n Syste

me

liege

n au

f de

r Han

d.

Das H

exad

ezim

alsystem

wird

oft fü

r ein

e ve

rkürzte

Darste

llun

g von

B

inärzah

len

gen

utzt, w

eil sich

jew

eils vie

r be

nach

barte

Bin

ärziffern

zu

ein

er e

inze

lne

n H

exad

ezim

alziffer zu

samm

en

fassen

lassen

.

Mit d

er D

arstellu

ng vo

n B

inär-

un

d H

exad

ezim

alzahle

n m

uss d

er

Pro

gramm

iere

r eb

en

so ve

rtraut se

in, w

ie m

it de

r Um

rech

nu

ng vo

n

Zahle

n zw

ische

n d

iese

n Ste

llen

we

rtsystem

en

.

8

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Das

Du

alsyste

m (B

inä

rsystem

) be

sitzt folge

nd

e E

igen

schafte

n:

Be

ispie

l: 10

11

2=

1·2

0+

1·2

1+

0·2

2+

1·2

3

= 1

10

+ 2

10

+ 0

10

+ 8

10

= 1

11

0

Basis

2

Me

nge

de

r Ziffern

{0, 1

}

Stelle

nw

erte

Po

ten

zen

von

2

20

21

22

23

24

…1

10

21

04

10

81

01

61

0…

Page 10: Programmiersprache C Ingenieurinformatik

9

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Da in

nu

r ein

em

Bit ke

ine

sinn

volle

Info

rmatio

nsm

en

ge ge

spe

iche

rt w

erd

en

kann

, arbe

itet m

an m

it Gru

pp

en

von

me

hre

ren

/viele

n B

its:

-E

ine

Gru

pp

e vo

n 8

Bits n

en

nt m

an e

inB

yte-

Ein

e G

rup

pe

von

2 B

ytes n

en

nt m

an e

inW

ort (W

ord

)-

Ein

e G

rup

pe

von

4 B

ytes n

en

nt m

an e

inD

op

pe

lwo

rt (Lon

gwo

rd)

-1

02

4 B

ytes n

en

nt m

an e

inK

ilob

yte (1

KB

, mit gro

ße

m „K

“)-

10

24

Kilo

byte

s ne

nn

t man

ein

Me

gab

yte-

10

24

Me

gabyte

ne

nn

t man

ein

Giga

byte

-1

02

4 G

igabyte

ne

nn

t man

ein

Tera

byte

-1

KB

= 2

10

Byte

s=

1 0

24

Byte

s-

1 M

B=

22

0B

ytes

= 1

04

8 5

76

Byte

s-

1 G

B=

23

0B

ytes

= 1

07

3 7

41

82

4 B

ytes

-1

TB=

24

0B

ytes

= 1

09

9 5

11

62

7 7

76

Byte

s

10

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Mit 8

Bits (o

de

r ein

em

Byte

), von

de

ne

n je

de

s Bit zw

ei

Zustän

de

(1/0

) ann

eh

me

n kan

n, lasse

n sich

25

6 ve

rschie

-d

en

eK

om

bin

ation

en

bild

en

:

00

00

00

00

00

00

00

01

00

00

00

10

00

00

00

11

00

00

01

00

00

00

01

01

00

00

01

10

⋅⋅⋅

11

11

11

10

11

11

11

11

Page 11: Programmiersprache C Ingenieurinformatik

11

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Be

ispie

le:

12

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Das

Hexa

de

zima

lsystem

be

sitzt folge

nd

e E

igen

schafte

n:

Be

ispie

l: AFFE

16

= 1

4·1

60

+ 1

5·1

61

+ 1

5·1

62

+ 1

0·1

63

= 1

41

0+

24

01

0+

38

40

10

+ 4

09

60

10

= 4

50

54

10

Basis

16

Me

nge

de

r Ziffern

{0, 1

, 2, 3

, 4, 5

, 6, 7

, 8, 9

, A, B

, C, D

, E, F}

A b

is F be

sitzen

die

de

zimale

n N

en

nw

erte

zeh

n b

is fün

fzeh

n!

Stelle

nw

erte

Po

ten

zen

von

16

16

01

61

16

21

63

…1

10

16

10

25

61

04

09

61

0…

Page 12: Programmiersprache C Ingenieurinformatik

13

2.1

. Da

rstellu

ng p

ositive

r gan

zer Za

hle

n

2. Zah

len

system

e

Be

ispie

l:

Spe

iche

rbe

legu

ng am

PC

I-Bu

s be

i Inte

l-PC

, 3

2-B

it-Ad

resse

Win

do

ws V

ista:•

Re

chtsklick au

f „Co

mp

ute

r“, •

Eigen

schafte

n,

•G

eräte

-Man

ager,

•Syste

mge

räte,

•P

CI-B

us

00

0D

FFFF1

6=

00

00

00

00

00

00

11

01

11

11

11

11

11

11

11

11

2

14

Glie

de

run

g

2. Zah

len

system

e

Ka

pite

l 2 –

Zah

len

system

e

2.1

Da

rstellu

ng p

ositive

r gan

zer Za

hle

n2

.2U

mre

chn

un

g zwisch

en

Zah

len

system

en

2.3

Re

chn

en

im D

ua

lsystem

2.4

Da

rstellu

ng n

egative

r gan

zer Za

hle

n2

.5D

arste

llun

g geb

roch

en

er Za

hle

n2

.6Ü

bu

ngsa

ufga

be

n

Page 13: Programmiersprache C Ingenieurinformatik

15

2.2

. Um

rech

nu

ng zw

ische

n Za

hle

nsyste

me

n

2. Zah

len

system

e

Zwisch

en

de

n h

ier re

levan

ten

Stelle

nw

ertsyste

me

n D

ezim

al, Bin

är u

nd

He

xade

zimal gib

t es se

chs U

mre

chn

un

gsverfa

hre

n, d

ie au

f de

n

folge

nd

en

Folie

n vo

rgeste

llt we

rde

n:

a)B

inär

�D

ezim

alb

)H

exad

ezim

al �

De

zimal

c)D

ezim

al �

Bin

ärd

)D

ezim

al �

He

xade

zimal

e)

Bin

är �

He

xade

zimal

f)H

exad

ezim

al �

Bin

är

16

2.2

.1. U

mre

chn

un

g Bin

är ��� �

De

zima

l

2. Zah

len

system

e

Me

tho

de

:Su

mm

e d

er Zw

eie

rpo

ten

zen

bild

en

,d

ab

ei a

m b

este

n „vo

n re

chts“ b

egin

ne

n

Be

ispie

l 1:

10

11

12

= 1

·20

+ 1

·21

+ 1

·22

+ 0

·23

+ 1

·24

= 1

+ 2

+ 4

+ 1

6=

23

10

Be

ispie

l 2:

11

00

11

2=

1·2

0+

1·2

1+

0·2

2+

0·2

3+

1·2

4+

1·2

5

= 1

+ 2

+ 1

6 +

32

= 5

11

0

Page 14: Programmiersprache C Ingenieurinformatik

17

2.2

.1. U

mre

chn

un

g Bin

är ��� �

De

zima

l

2. Zah

len

system

e

Hilfsta

be

lle:

Zwe

ierp

ote

nze

n

2n

2 0

48

4 0

96

8 1

92

16

38

43

2 7

68

65

53

61

31

07

22

62

14

41

04

8 5

76

16

77

7 2

16

4 2

94

96

7 2

96

2n1248

16

32

64

12

82

56

51

21

02

4

n012345678910

n11

12

13

14

15

16

17

18

20

24

32

18

2.2

.2. U

mre

chn

un

g Hexa

de

zima

l ��� �D

ezim

al

2. Zah

len

system

e

Me

tho

de

:Su

mm

e d

er Se

chze

hn

erp

ote

nze

n b

ilde

n,

da

be

i am

be

sten

„von

rech

ts“ be

ginn

en

Be

ispie

l 1:

1E

31

6=

3·1

60

+ 1

4·1

61

+ 1

·16

2

= 3

+ 2

24

+ 2

56

= 4

83

10

Be

ispie

l 2:

FFFF1

6=

15

·16

0+

15

·16

1+

15

·16

2+

15

·16

3

= 1

5 +

24

0 +

38

40

+ 6

14

40

= 6

55

35

10

Page 15: Programmiersprache C Ingenieurinformatik

19

2.2

.2. U

mre

chn

un

g Hexa

de

zima

l ��� �D

ezim

al

2. Zah

len

system

e

Hilfsta

be

lle:

Sech

zeh

ne

rpo

ten

zen

16

n11

62

56

4 0

96

65

53

61

04

8 5

76

16

77

7 2

16

26

8 4

35

45

64

29

4 9

67

29

6

n012345678

20

2.2

.3. U

mre

chn

un

g De

zima

l ��� �B

inä

r

2. Zah

len

system

e

Me

tho

de

:Fo

rtgese

tzte D

ivision

du

rch zw

ei

Die

um

zuw

and

eln

de

De

zimalzah

l wird

fortlau

fen

d d

urch

zwe

i divi-

die

rt, bis n

ull e

rreich

t wird

. Die

dab

ei au

ftrete

nd

en

Divisio

nsre

ste–

in u

mge

keh

rter R

eih

en

folge

–e

rgeb

en

die

gesu

chte

Bin

ärzahl.

Be

ispie

l:2

23

: 2=

11

1R

est 1

11

1: 2

= 5

5R

est 1

55

: 2=

27

Re

st 12

7: 2

= 1

3R

est 1

13

: 2=

6R

est 1

6: 2

= 3

Re

st 03

: 2=

1R

est 1

1: 2

= 0

Re

st 1

Die

en

tspre

che

nd

e B

inärzah

l laute

t: 1 1

0 1

1 1

1 1

Page 16: Programmiersprache C Ingenieurinformatik

21

2.2

.4. U

mre

chn

un

g De

zima

l ��� �H

exad

ezim

al

2. Zah

len

system

e

Me

tho

de

:Fo

rtgese

tzte D

ivision

du

rch 1

6

Die

De

zimalzah

l wird

fortlau

fen

d d

urch

16

divid

iert, b

is nu

ll erre

icht

wird

. Die

dab

ei au

ftrete

nd

en

Divisio

nsre

ste –

in u

mge

keh

rter

Re

ihe

nfo

lge –

erge

be

n d

ie ge

such

te H

exad

ezim

alzahl.

Be

ispie

l:4

43

: 16

= 2

7R

est 1

12

7: 1

6=

1R

est 1

11

: 16

= 0

Re

st 1

Die

en

tspre

che

nd

e H

exad

ezim

alzahl lau

tet: 1

B B

Hilfsta

be

lle:

Ziffern

A…

F im H

exad

ezim

alsyste

m

AB

CD

EF

10

11

12

13

14

15

22

2. Zah

len

system

e

2.2

.4. U

mre

chn

un

g De

zima

l ��� �H

exad

ezim

al

n · 1

6

16

32

48

64

80

96

11

21

28

n12345678

Hilfsta

be

lle:

Vie

lfach

e vo

n 1

6

n · 1

6

14

41

60

17

61

92

20

82

24

24

02

56

n910

11

12

13

14

15

16

Page 17: Programmiersprache C Ingenieurinformatik

23

2.2

.5. U

mre

chn

un

g Bin

är��� �

Hexa

de

zima

l

2. Zah

len

system

e

Me

tho

de

:4

er-G

rup

pe

n vo

n B

inä

rzah

len

bild

en

Die

um

zuw

and

eln

de

Bin

ärzahl w

ird vo

n re

chts n

ach lin

ks in 4

er-

nd

el vo

n B

inärziffe

rn gru

pp

iert. A

nsch

ließ

en

d w

erd

en

die

nd

el

in d

ie e

ntsp

rech

en

de

n H

exad

ezim

alziffern

um

gew

and

elt.

Be

ispie

l:1

01

01

11

11

11

11

11

0

AF

FE

Hilfsta

be

lle:

4e

r-Bü

nd

el vo

n B

inä

rziffern

un

d H

exad

ezima

lziffern

00

00

00

01

00

10

00

11

01

00

01

01

01

10

01

11

01

23

45

67

10

00

10

01

10

10

10

11

11

00

11

01

11

10

11

11

89

AB

CD

EF

24

2.2

.6. U

mre

chn

un

g Hexa

de

zima

l ��� �B

inä

r

2. Zah

len

system

e

Me

tho

de

:H

exad

ezim

al in

4e

r-Bü

nd

el vo

n B

inä

rziffern

„au

flöse

n“

Die

um

zuw

and

eln

de

He

xade

zimalzah

l wird

Ziffer fü

r Ziffer in

4e

r-B

ün

de

l von

Bin

ärziffern

„aufge

löst“.

Be

ispie

l:3

7A

F

00

11

01

11

10

10

11

11

Füh

ren

de

Nu

llen

zu B

egin

n d

er B

inärzah

l kön

ne

n w

egge

lassen

w

erd

en

:

37

AF

16

= 1

1 0

11

1 1

01

0 1

11

12

Page 18: Programmiersprache C Ingenieurinformatik

25

Glie

de

run

g

2. Zah

len

system

e

Ka

pite

l 2 –

Zah

len

system

e

2.1

Da

rstellu

ng p

ositive

r gan

zer Za

hle

n2

.2U

mre

chn

un

g zwisch

en

Zah

len

system

en

2.3

Re

chn

en

im D

ua

lsystem

2.4

Da

rstellu

ng n

egative

r gan

zer Za

hle

n2

.5D

arste

llun

g geb

roch

en

er Za

hle

n2

.6Ü

bu

ngsa

ufga

be

n

26

2.3

. Re

chn

en

im D

ua

lsystem

2. Zah

len

system

e

Ad

ditio

n im

De

zima

l-u

nd

im B

inä

rsystem

•W

as mu

ss man

wisse

n, u

m e

ine

Ad

ditio

n im

De

zimalsyste

m

du

rfüh

ren

zu kö

nn

en

?

•W

elch

e V

orte

ile b

iete

t das B

inärsyste

m ge

gen

üb

er d

em

D

ezim

alsystem

be

i de

r Du

rchfü

hru

ng vo

n B

ere

chn

un

gen

?

Ad

ditio

n im

De

zimalsyste

m:

1.2

34

.56

7+

2.3

45

.67

8

3.5

80

.24

5 11

11

11

00

01

01

11

00

+ 1

00

1 1

01

1

11

00

11

11

01

11

11

Ad

ditio

n im

Bin

ärsystem

:

Ko

ntro

lle: 3

16

41

0+

15

51

0=

33

19

10�

Page 19: Programmiersprache C Ingenieurinformatik

27

2.3

. Re

chn

en

im D

ua

lsystem

2. Zah

len

system

e

Ad

ditio

nstafe

l für D

ezim

alzahle

n:

Du

alzahle

n:

+0

12

34

56

78

9

00

12

34

56

78

9

12

34

56

78

910

24

56

78

910

11

36

78

910

11

12

48

910

11

12

13

510

11

12

13

14

612

13

14

15

714

15

16

816

17

918

55

Re

geln

!

+0

1

00

1

110

Nu

r 3 R

ege

ln!

28

2.3

. Re

chn

en

im D

ua

lsystem

2. Zah

len

system

e

Üb

erla

uf u

nd

„Ca

rryFla

g“

Be

i de

r Ad

ditio

n kan

n e

s zum

Üb

erla

uf ko

mm

en

, falls für d

as E

rgeb

nis e

in b

egre

nzte

r Spe

iche

rplatz zu

r Ve

rfügu

ng ste

ht!

De

r Pro

zesso

r me

rkt sich d

iese

s Ere

ignis d

urch

Setze

n e

ine

s spe

-zie

llen

Status-B

its („Ca

rryFla

g“). Die

ses B

it kann

im w

eite

ren

Pro

-gram

mve

rlauf ab

gefragt w

erd

en

, falls auf d

en

Üb

erlau

f reagie

rt w

erd

en

mu

ss.

Be

ispie

l:A

dd

ition

von

zwe

i 8-B

it-Zah

len

, für d

as Erge

bn

is steh

t e

be

nfa

lls ein

Spe

iche

rplatz vo

n 8

Bit zu

r Ve

rfügu

ng

10

11

00

10

+1

10

0 1

10

0

(1)

01

11

11

10

Ca

rryFla

g

Page 20: Programmiersprache C Ingenieurinformatik

29

Glie

de

run

g

2. Zah

len

system

e

Ka

pite

l 2 –

Zah

len

system

e

2.1

Da

rstellu

ng p

ositive

r gan

zer Za

hle

n2

.2U

mre

chn

un

g zwisch

en

Zah

len

system

en

2.3

Re

chn

en

im D

ua

lsystem

2.4

Da

rstellu

ng n

egative

r gan

zer Za

hle

n2

.5D

arste

llun

g geb

roch

en

er Za

hle

n2

.6Ü

bu

ngsa

ufga

be

n

30

2.4

. Da

rstellu

ng n

egative

r gan

zer Za

hle

n

2. Zah

len

system

e

Mit d

en

verfü

gbare

n B

its (zum

Be

ispie

l ein

em

Re

gister im

P

roze

ssor) m

üsse

n n

eb

en

de

m B

etra

g de

r Zah

l auch

das

Vo

rzeich

en

abge

spe

iche

rt we

rde

n.

•A

nn

ahm

e: 4

-Bit-R

egiste

r

We

lche

Na

chte

ile b

esitzt d

iese

s Ve

rfah

ren

?

32

10

..

..

Erster A

nsatz:

•B

it 3 ist d

as Vo

rzeich

en

-Bit:

Bit 3

= 0

en

tsprich

t +B

it 3 =

1 e

ntsp

richt –

•B

it 0 -

Bit 2

spe

iche

rn d

en

Be

trag de

r Zahl

•B

eisp

iel:

00

10

10

10

+2-2

Page 21: Programmiersprache C Ingenieurinformatik

31

2.4

. Da

rstellu

ng n

egative

r gan

zer Za

hle

n

2. Zah

len

system

e

Dezim

alzahl

2er-

Komple

ment

Dezim

alzahl

2er-

Komple

ment

0

0 0

0 0

1

0 0

0 1

-

1

1 1

1 1

2

0 0

1 0

-

2

1 1

1 0

3

0 0

1 1

-

3

1 1

0 1

4

0 1

0 0

-

4

1 1

0 0

5

0 1

0 1

-

5

1 0

1 1

6

0 1

1 0

-

6

1 0

1 0

7

0 1

1 1

-

7

1 0

0 1

- 8

1

0 0

0

Darste

llbare

r Zahle

nb

ere

ich b

eim

sog. „2

er-K

om

ple

me

nt“: -8

... +7

Fast alle P

roze

ssore

n ve

rwe

nd

en

die

se D

arstellu

ng –

mit m

eh

r als 4 B

its!

Zwe

iter

An

satz:

32

2.4

. Da

rstellu

ng n

egative

r gan

zer Za

hle

n

2. Zah

len

system

e

Eigen

schafte

n d

er 2

er-K

om

ple

me

ntd

arste

llun

g

a)P

ositive

Zahle

n:

chstw

ertige

s Bit =

0h

ier B

it 3 (typ

isch B

it 7, 1

5...)

Ne

gative Zah

len

:h

öch

stwe

rtiges B

it = 1

b)

Wie

wird

für e

ine

po

sitive Zah

l die

Darste

llun

g de

r zuge

rigen

ne

gativen

Zahl b

ere

chn

et?

An

two

rt: 2e

r-Ko

mp

lem

en

t

1.)

Bild

e b

itwe

ises K

om

ple

me

nt (0

�1

un

d 1�

0) –

„Ein

erko

mp

lem

en

t“

2.)

Ad

die

re an

schlie

ße

nd

1 zu

m E

ine

rkom

ple

me

nt

c)U

mke

hru

ng: W

ie w

ird au

s ein

er n

egative

n Zah

l die

zuge

rige p

ositive

Zah

l be

rech

ne

t?A

ntw

ort: Eb

en

falls mit d

em

2e

r-Ko

mp

lem

en

t!

d)

Be

kann

te R

ech

en

rege

ln au

s de

m D

ualsyste

m b

leib

en

erh

alten

e)

z + (-z) =

0

–Ü

be

rtrag (Carry

Flag) wird

igno

riert

f)Su

btraktio

n w

ird au

f Ad

ditio

n zu

rückge

füh

rt –sie

he

d)

g)M

öglich

e B

ere

ichsü

be

rschre

itun

g be

achte

n!

Page 22: Programmiersprache C Ingenieurinformatik

33

2.4

. Da

rstellu

ng n

egative

r gan

zer Za

hle

n

2. Zah

len

system

e

0000

0001

0010

0011

0100

0110

0111

0101

1111

1110

1100

1001

1000

1011

11011010

Und

erflow

Ove

rflow

+3

-3

Re

gisterlä

nge

4 B

it,Za

hle

nkre

is

34

2.4

. Da

rstellu

ng n

egative

r gan

zer Za

hle

n

2. Zah

len

system

e

Allge

me

in (fü

r ein

e R

egiste

rlän

ge vo

n n

Bit): -2

n-1

…+

2n

-1-

1

n =

16

: -32

76

8…

+3

27

67

n =

32

: -21

47

48

36

48

…+

21

47

48

36

47

n =

64

: -9,2

2*

10

18

...+

9,2

2*

10

18

02

7F

FE

81

Zahle

nbereic

h: -1

28

… +

12

7

80

Re

gisterlä

nge

8 B

it,Za

hle

nkre

is

Page 23: Programmiersprache C Ingenieurinformatik

35

Glie

de

run

g

2. Zah

len

system

e

Ka

pite

l 2 –

Zah

len

system

e

2.1

Da

rstellu

ng p

ositive

r gan

zer Za

hle

n2

.2U

mre

chn

un

g zwisch

en

Zah

len

system

en

2.3

Re

chn

en

im D

ua

lsystem

2.4

Da

rstellu

ng n

egative

r gan

zer Za

hle

n2

.5D

arste

llun

g geb

roch

en

er Za

hle

n2

.6Ü

bu

ngsa

ufga

be

n

36

2.5

. Da

rstellu

ng ge

bro

che

ne

r Zah

len

2. Zah

len

system

e

Zahle

n m

it Nach

kom

maste

llen

we

rde

n in

ein

em

Re

chn

er vö

llig and

ers

darge

stellt als gan

ze Zah

len

un

d au

ch vö

llig and

ers ve

rarbe

itet! D

ie Zah

len

w

erd

en

zue

rst in e

ine

Stand

ardfo

rm (h

alblo

garithm

isch) ge

brach

t:

37

,62

5 =

+0

,37

62

10

2=

Bex

(+1

00

10

1,1

01

)2=

(+1

,00

10

11

01

×2

10

1)2

Im R

egiste

r we

rde

n V

orze

iche

n, M

antisse

un

d Exp

on

en

tab

gesp

eich

ert.

Die

Basis ist ste

ts 2 u

nd

wird

de

shalb

nich

t gesp

eich

ert.

Vo

rzeich

en

: Es ist n

ur e

in B

it no

twe

nd

ig, 0 ↔

po

sitiv un

d 1

↔n

egativ.

Die

verb

leib

en

de

n B

its im R

egiste

r mü

ssen

sich M

antisse

un

d Exp

on

en

tte

ilen

. Ist die

Man

tisse zu

lang, d

ann

wird

sie ab

gesch

nitte

n.

Be

i Zahle

n kle

ine

r als 1 m

öch

te m

an n

egative

Exp

on

en

ten

verm

eid

en

.

(+0

,37

5)1

0=

(+0

,01

1)2

= ( +

1,1

×2

-10)2

De

shalb

add

iert m

an zu

m E

xpo

ne

nte

n ste

ts ein

e fe

ste Zah

l („bias“).

se

7e

6e

5e

4e

3e

2e

1e

0m

1m

2m

3m

4m

21

m2

2m

23

Page 24: Programmiersprache C Ingenieurinformatik

37

2.5

. Da

rstellu

ng ge

bro

che

ne

r Zah

len

2. Zah

len

system

e

(+1

00

10

1,1

01

)2=

(+1

,00

10

11

01

×2

10

1)2

32

Bit:

10

1

Expo

ne

nt 8

Bits

(bias

= 1

27

) +

01

11

11

11

(bias)

un

dM

antisse

23

Bits

10

00

01

00

64

Bit:

Expo

ne

nt 1

1 B

its(b

ias=

10

23

) un

d M

antisse

52

Bits

Ko

nse

qu

en

zen

de

r Gle

itkom

mad

arstellu

ng:

groß

er Zah

len

be

reich

darste

llbar (se

hr kle

ine

/groß

e Zah

len

)

Zahle

n w

erd

en

me

ist nich

t exakt darge

stellt, d

a die

Man

tisse

abge

schn

itten

wird

(be

i 32

Bit w

erd

en

nu

r die

erste

n 7

füh

ren

de

n

De

zimalste

llen

gesp

eich

ert, b

ei 6

4 B

it die

erste

n 1

5) �

Ru

nd

un

gsfeh

ler!

Re

che

no

pe

ration

en

dau

ern

länge

r als Op

eratio

ne

n m

it ganze

n Zah

len

.

se

7e

6e

5e

4e

3e

2e

1e

0m

1m

2m

3m

4m

21

m2

2m

23

01

00

00

10

0…

00

10

11

01

00

++----

38

2.5

. Da

rstellu

ng ge

bro

che

ne

r Zah

len

2. Zah

len

system

e

Be

im P

rogram

mie

ren

wird

du

rch d

en

Typ e

ine

r Variab

len

festge

legt, o

b

ein

e Zah

l als Gle

itkom

mazah

l, als ganze

Zahl m

it VZ o

de

r als ganze

Zahl

oh

ne

VZ ge

spe

iche

rt wird

. Be

ispie

lein

de

rP

rogram

mie

rsprach

e C

:

•G

anze

Zahle

n m

it Vo

rzeich

en

short

n;

16

-Bit

(Be

reich

: -32

76

8 …

+3

27

67

)int

i;

32

-Bit

long

long

j;

64

-Bit

•G

anze

Zahle

n o

hn

e V

orze

iche

nunsigned

short

u;

16

-Bit

(Be

reich

: 0 …

+6

55

35

)

•G

leitko

mm

azahle

nfloat

x;

32

-Bit

(„ein

fache

Ge

nau

igkeit“)

double y;

64

-Bit

(„do

pp

elte

Ge

nau

igkeit“)

Ve

rgleich

bare

Variab

len

type

n gib

t es au

ch in

and

ere

n P

rogram

mie

r-sp

rache

n w

ie Java o

de

r Visu

al Basic.

Page 25: Programmiersprache C Ingenieurinformatik

39

Glie

de

run

g

2. Zah

len

system

e

Ka

pite

l 2 –

Zah

len

system

e

2.1

Da

rstellu

ng p

ositive

r gan

zer Za

hle

n2

.2U

mre

chn

un

g zwisch

en

Zah

len

system

en

2.3

Re

chn

en

im D

ua

lsystem

2.4

Da

rstellu

ng n

egative

r gan

zer Za

hle

n2

.5D

arste

llun

g geb

roch

en

er Za

hle

n2

.6Ü

bu

ngsa

ufga

be

n

40

2.6

. Üb

un

gsau

fgab

en

2. Zah

len

system

e

1.

We

lche

n D

ezim

alzahle

n e

ntsp

rech

en

die

folge

nd

en

vier Zah

len

10

10

11

00

2E

31

6F7

16

38

16

wo

be

i es sich

jew

eils

um

2e

r-Ko

mp

lem

en

tdarste

llun

gen

mit 8

Bit h

an-

de

lt? (E3

16

ist die

Hexd

arstellu

ng

ein

er B

inärzah

l:E

31

6=

11

10

00

11

2 )

2.

Wie

laute

t die

2e

r-Ko

mp

lem

en

tarstellu

ng (d

ual, h

ex) de

r De

zimalzah

-le

n-1

3u

nd

-43

, we

nn

8-

bzw

. 16

-Bit-R

egiste

r verw

en

de

tw

erd

en

?

3.

Ein

e G

leitko

mm

azahl w

ird in

de

r 32

-Bit-D

arstellu

ng ab

gesp

eich

ert. W

ie

groß

ist die

be

tragsmäß

ig größ

te b

zw. kle

inste

Gle

itkom

mazah

l, die

d

argeste

llt we

rde

n kan

n? (A

lle Zah

len

, die

klein

er sin

d, w

erd

en

als0

.0 ge

spe

iche

rt.)

4.

Wie

viele

füh

ren

de

De

zimalste

llen

we

rde

n m

aximal ab

gesp

eich

ert?

Üb

erle

gen

Sie sich

hie

rzu, w

ie d

ie Zah

l 1.0

abge

spe

iche

rt wird

. Wie

lau

tet d

ie kle

inste

Zahl grö

ße

r als 1.0

, die

no

ch ge

spe

iche

rt we

rde

n

kann

? Hie

raus e

rgibt sich

die

An

zahl d

er fü

hre

nd

en

Stelle

n, d

ie m

it3

2 B

it gesp

eich

ert w

erd

en

kön

ne

n.

Page 26: Programmiersprache C Ingenieurinformatik

1

Ka

pite

l 3

„Me

in e

rstes C

-Pro

gra

mm

2

Glie

de

run

g

3. „M

ein

erste

s C-P

rog

ram

m“

Ka

pite

l 3 –

„Me

in e

rstes C

-Pro

gra

mm

3.1

Ein

leitu

ng

3.2

Me

in e

rstes C

-Pro

gra

mm

3.3

Zu

sam

me

nfa

ssun

g

Page 27: Programmiersprache C Ingenieurinformatik

3

3. „M

ein

erste

s C-P

rog

ram

m“

3. „M

ein

erste

s C-P

rog

ram

m“

Problem

Algorithm

usQ

uell-program

m

Maschinen-

programm

Lösung

•M

ittelwert für M

esswerte berechnen

•DGL lösen und grafisch darstellen

•Bestellung im

Internet•Navigationssystem

Programmiersprache

C, C

++, C

#, J

avaFortran, B

asicÜbersetzen

Com

pilieren

Testen

Ausführen

x=x+17;

y=sqrt(x);

. . .

0110111101011011

0100011101011111

1111010111011011

. . .

4

3. „M

ein

erste

s C-P

rog

ram

m“

3. „M

ein

erste

s C-P

rog

ram

m“

Alg

orith

mu

s,Lö

sun

gsw

eg

:•

Me

tho

de

(Ko

chre

zep

t) zur Lö

sun

g e

ine

s Pro

ble

ms, d

ie e

ind

eu

tigist, a

us

ele

me

nta

r au

sfüh

rba

ren

Sch

ritten

be

steh

t un

d d

ie e

nd

lichist.

•E

ine

Ve

rarb

eitu

ng

svorsch

rift, die

so p

räzise

form

ulie

rt ist, da

ss sie vo

n e

ine

m

me

cha

nisch

od

er e

lektro

nisch

arb

eite

nd

en

Ge

rät a

usg

efü

hrt w

erd

en

kan

n.

(Info

rma

tik-D

ud

en

)

Pro

gra

mm

: •

Ein

e F

olg

e vo

n A

nw

eisu

ng

en

, du

rch d

ie d

ie V

era

rbe

itun

g vo

n D

ate

n in

ein

em

Co

mp

ute

r ge

steu

ert w

ird.

•Fo

rmu

lieru

ng

ein

es A

lgo

rithm

us u

nd

de

r zug

eh

örig

en

Da

ten

.

Pro

gra

mm

iersp

rach

e:

•E

ine

Sp

rach

e zu

r Fo

rmu

lieru

ng

von

Alg

orith

me

n u

nd

Da

ten

struktu

ren

(d. h

. Pro

gra

mm

en

) in e

ine

r für d

en

Co

mp

ute

r ge

eig

ne

ten

Fo

rm (S

chn

itt-

stelle

zwisch

en

Be

nu

tzer u

nd

Co

mp

ute

r).

•E

s mü

ssen

Sy

nta

xu

nd

Se

ma

ntik

ein

er P

rog

ram

mie

rspra

che

ein

de

utig

de

finie

rt sein

, da

mit m

an

prü

fen

kan

n, w

elch

e Z

eich

en

folg

en

als P

rog

ram

m

zug

ela

ssen

sind

(Sy

nta

x) un

d w

as sie

au

f de

m R

ech

ne

r be

wirke

n (S

em

an

tik).

Page 28: Programmiersprache C Ingenieurinformatik

5

20

00

19

95

19

90

19

85

19

80

19

75

19

70

19

65

19

60

C+

+

C

AD

A

BC

PL

ALG

OL6

8

ALG

OL6

0

Pa

scal

CO

BO

L

FO

RT

RA

N

BA

SIC

FO

RT

RA

N7

7

FO

RT

RA

N9

0

Jav

a

C#

Sm

allta

lk

PR

OLO

G

LISP

6

3.1

. Ein

leitu

ng

3. „M

ein

erste

s C-P

rog

ram

m“

Dennis R

itchie(standing) and

Ken T

hompson begin

portingUNIX

tothe

PDP-

11

Dennis R

itchie"E

rfinder" von C(* 9

. Septem

ber 1941 in B

ronxville, N

ew Y

ork

; † a

m 1

2. O

kto

ber 2

011)

Page 29: Programmiersprache C Ingenieurinformatik

7

3.1

. Ein

leitu

ng

3. „M

ein

erste

s C-P

rog

ram

m“

Wa

rum

Pro

gra

mm

ieru

ng

in C

…?

C w

ird in

de

r Pra

xis se

hr h

äu

fig v

erw

en

de

t:

•P

rog

ram

mie

run

g vo

n S

teu

erg

erä

ten

(Em

be

dd

ed

Syste

ms)

zum

Be

ispie

lin

Fah

rzeu

ge

n, H

an

dys, R

ob

ote

rn

•Syste

mp

rog

ram

mie

run

g

C e

rmö

glich

t da

s Erste

llen

seh

r effizie

nte

r Pro

gra

mm

e:

•W

en

ig S

pe

iche

rpla

tzverb

rau

ch

•S

chn

ell –

vie

le A

nw

en

du

ng

en

in S

teu

erg

erä

ten

sind

zeitk

ritisch

C u

nte

rstützt e

ine

Vie

lzah

l vo

n M

ikro

pro

zesso

ren

un

d S

teu

erg

erä

ten

:

•E

s gib

t C-C

om

pile

r für d

ie e

ntsp

rech

en

de

Ha

rdw

are

un

d e

ine

Vie

lzah

l von

Hilfsm

ittel, u

m d

ie P

rog

ram

mie

run

g zu

un

terstü

tzen

, zum

Be

ispie

l:

•P

rog

ram

mb

iblio

the

ken

(fertig

e P

rog

ram

me

für D

GL, M

atrize

n, S

tatistik

, FE

M)

•C

od

eg

en

erie

run

g m

it MA

TLA

Bfü

r versch

ied

en

ste S

teu

erg

erä

te

Be

trieb

ssyste

me

we

rde

n h

äu

fig in

C p

rog

ram

mie

rt, zum

Be

ispie

l Linu

x.

Vie

le E

lem

en

te v

on

C fin

de

n sich

au

ch in

an

de

ren

Pro

gra

mm

iersp

rach

en

,

zum

Be

ispie

l in C

++

, Jav

a, V

isua

l Ba

sic un

d C

#.

8

Glie

de

run

g

3. „M

ein

erste

s C-P

rog

ram

m“

Ka

pite

l 3 –

„Me

in e

rstes C

-Pro

gra

mm

3.1

Ein

leitu

ng

3.2

Me

in e

rstes C

-Pro

gra

mm

3.3

Zu

sam

me

nfa

ssun

g

Page 30: Programmiersprache C Ingenieurinformatik

9

3.2

. Me

in e

rstes C

-Pro

gra

mm

3. „M

ein

erste

s C-P

rog

ram

m“

Au

fga

be

:

Sch

reib

e e

in C

-Pro

gra

mm

, da

s die

zwe

i Za

hle

n 3

un

d 4

ad

die

rt

un

d d

as d

as E

rge

bn

is am

Bild

schirm

au

sgib

t.

Zie

l:

•W

elch

e S

chritte

ssen

am

Re

chn

er d

urch

ge

füh

rt we

rde

n, u

m

ein

Pro

gra

mm

zu e

rstelle

n, zu

üb

erse

tzen

un

d a

uszu

füh

ren

?

•W

ie sie

ht d

as P

rog

ram

m fü

r die

ses P

rob

lem

au

s?

•W

ie sie

ht e

in ty

pisch

es C

-Pro

gra

mm

au

s?

•D

an

ach

soll d

as P

rog

ram

m n

och

verb

esse

rt we

rde

n.

10

3. „M

ein

erste

s C-P

rog

ram

m“

3.2

. Me

in e

rstes C

-Pro

gra

mm

Es m

üsse

n 3

Sch

ritte d

urch

ge

füh

rt we

rde

n:

1.

C-Q

ue

lltext m

ittels E

dito

r ein

ge

be

n u

nd

spe

iche

rn(addition.c

).

2.

Da

s Pro

gra

mm

in M

asch

ine

spra

che

üb

erse

tzen

(addition.exe

).

3.

Jetzt ka

nn

da

s Pro

gra

mm

ge

starte

t we

rde

n.

Page 31: Programmiersprache C Ingenieurinformatik

11

3. „M

ein

erste

s C-P

rog

ram

m“

3.2

. Me

in e

rstes C

-Pro

gra

mm

Ein

e P

rog

ram

mie

rum

ge

bu

ng

ist ein

Hilfsm

ittel, u

m P

rog

ram

me

zu e

rstelle

n, zu

verw

alte

n, zu

teste

n u

nd

au

szufü

hre

n.

12

3.2

. Me

in e

rstes C

-Pro

gra

mm

3. „M

ein

erste

s C-P

rog

ram

m“

Be

ka

nn

te P

rog

ram

mie

rum

ge

bu

ng

en

:

Qt C

rea

tor:

•h

ttp://w

ww

.qt.io

•K

oste

nlo

ser D

ow

nlo

ad

im In

tern

et (Lize

nz: G

PL)

•F

ür W

ind

ow

s, Ma

c OS

X u

nd

Linu

x verfü

gb

ar

•W

ird im

Pra

ktiku

m ve

rwe

nd

et, zu

Ha

use

insta

lliere

n!

Micro

soft V

isua

l Stu

dio

:

•K

oste

nlo

se C

om

mu

nity

-Ed

ition

•F

ür M

icroso

ft Win

do

ws ve

rfüg

ba

r

•h

ttps://w

ww

.visu

alstu

dio

.com

/de

/vs/co

mm

un

ity/

C-P

rog

ram

me

, die

mit e

ine

r die

ser P

rog

ram

mie

rum

ge

bu

ng

en

erste

llt

we

rde

n, la

ufe

n a

uch

un

ter a

nd

ere

n U

mg

eb

un

ge

n, w

en

n m

an

sich a

n

die

im IS

O/IE

C 9

89

9-S

tan

da

rd b

esch

rieb

en

en

Re

ge

ln h

ält. In

spe

zielle

n

Um

ge

bu

ng

en

, z. B. P

rog

ram

mie

run

g vo

n S

teu

erg

erä

ten

, steh

en

nich

t

alle

Fu

nktio

ne

n zu

r Ve

rfüg

un

g. B

eisp

iel: B

ildsch

irm-A

usg

ab

eb

efe

hle

Page 32: Programmiersprache C Ingenieurinformatik

13

3.2

. Me

in e

rstes C

-Pro

gra

mm

3. „M

ein

erste

s C-P

rog

ram

m“

#include <stdio.h>

intmain(void)

{

intz1,z2,sum;

z1 = 3;

z2 = 4;

/∗∗∗ ∗berechne die Summe

∗∗∗ ∗/

sum= z1 + z2;

printf("Zahl1 %d Zahl2 %d\n",z1,z2);

printf("Summe%d\n",sum);

return0;

}

Varia

ble

nd

efin

ition

z1, z

2 u

nd

su

mh

eiß

en

Varia

ble

n•

Sp

eic

herp

latz

reserv

iere

n•

Date

nty

p fe

stle

gen

(int

-In

teg

er)

Wertz

uw

eis

un

gW

ert in

Sp

eic

herz

elle

sch

reib

en

Arith

metis

ch

er A

usd

ruck

Wert d

er re

ch

ten

Seite

bere

ch

nen

u

nd

dan

n d

er lin

ken

Seite

zu

weis

en

prin

tf: A

usg

ab

e a

m B

ildsch

irm

Inh

alt v

on

" . . . " au

sg

eb

en

%d

: Fo

rmate

lem

en

t -d

ezim

ale

Au

sg

ab

e\n

: Ste

uerz

eic

hen

-n

eu

e Z

eile

beg

inn

en1

4

3.2

. Me

in e

rstes C

-Pro

gra

mm

3. „M

ein

erste

s C-P

rog

ram

m“

addition.c

addition.exe

Befe

hl1

Befe

hl2

Befe

hl3

. . .

. . .

3

47

z1

z2

su

m

2. M

as

ch

ine

nb

efe

hle

na

ch

ein

an

de

r ab

arb

eite

n

1. P

rog

ram

m in

de

n

Ha

up

tsp

eic

he

r lad

en

Va

riab

len

les

en

un

d v

erä

nd

ern

Au

sg

ab

e

Festp

latte

Hau

pts

peic

her

Pro

zesso

r

Ab

lau

f im R

ech

ne

r:

Page 33: Programmiersprache C Ingenieurinformatik

15

3.2

. Me

in e

rstes C

-Pro

gra

mm

3. „M

ein

erste

s C-P

rog

ram

m“

#include <stdio.h> /* k2addit1.c */

intmain (void)

{

intz1, z2, summe;

printf("Erste Zahl eingeben:\n");

scanf("%d",&z1);

printf("Zweite Zahl eingeben:\n");

scanf("%d",&z2);

/∗∗∗ ∗berechne die Summe

∗∗∗ ∗/

summe = z1 + z2;

printf("Zahl1 %d Zahl2 %d\n",z1,z2);

printf("Summe: %d \n",summe);

return 0;

}

scan

fd

as P

rog

ram

m w

arte

t so

lan

ge,

bis

ein

e E

ing

ab

e e

rfolg

t ist,

inte

rpre

tiert d

ie E

ing

ab

e a

ls

gan

ze Z

ah

l ( %d

) un

d s

peic

hert

das E

rgeb

nis

in d

er S

peic

her-

zelle

für z

1 ( &

z1) a

b.

16

3. „M

ein

erste

s C-P

rog

ram

m“

3.2

. Me

in e

rstes C

-Pro

gra

mm

#include <stdio.h> /* k2addit2.c */

intmain(void)

{

floatz1, z2, sum;

printf("Erste Zahl eingeben :\n");

scanf("%f", &z1);

printf("Zweite Zahl eingeben :\n");

scanf("%f", &z2);

sum= z1 + z2;

printf("Zahl1:%f Zahl2:%f\n",z1,z2);

if(sum< 0.0)

{

printf("Ergebnis ist negativ!");

}else

{

printf("Summe: %f \n",sum);

printf("Ergebnis ist positiv!");

}return 0;

}

if-

els

e-

Ko

ntro

llstru

ktu

rw

en

n d

ie B

ed

ing

un

g e

rfüllt

ist, d

an

n n

ur d

en

ers

ten

Teil

au

sfü

hre

n a

nso

nste

n n

ur d

en

zw

eite

n T

eil (A

ltern

ativ

e)

su

m<

0

Bed

ing

un

g –

en

twed

er

wah

r (erfü

llt) od

er fa

lsch

%f

Fo

rmate

lem

en

t für e

ine

Flie

ßko

mm

an

zah

l

float

Sp

eic

herp

latz

für e

ine F

ließ

-ko

mm

azah

l reserv

iere

n

Page 34: Programmiersprache C Ingenieurinformatik

17

Glie

de

run

g

3. „M

ein

erste

s C-P

rog

ram

m“

Ka

pite

l 3 –

„Me

in e

rstes C

-Pro

gra

mm

3.1

Ein

leitu

ng

3.2

Me

in e

rstes C

-Pro

gra

mm

3.3

Zu

sam

me

nfa

ssun

g

18

3.3

. Zu

sam

me

nfa

ssun

g

3. „M

ein

erste

s C-P

rog

ram

m“

a)

Stru

ktu

r ein

es e

infa

che

n C

-Pro

gra

mm

s

#in

clu

de

<std

io.h

>P

räp

rozesso

ran

weis

un

g

int

main

(vo

id)

Fu

nktio

nsko

pf

{D

efin

ition

en

....F

un

ktio

nsru

mp

f F

un

ktio

nA

nw

eis

un

gen

....}

Ein

C-P

rog

ram

m b

este

ht m

ind

este

ns

au

s de

r Fu

nktio

n m

ain

(Ha

up

tpro

gra

mm

).

Ein

e F

un

ktio

nb

este

ht a

us:

•F

un

ktio

nsko

pf

–m

ain

ist de

r Na

me

de

r Fu

nktio

n

•F

un

ktio

nsru

mp

f

De

r Fu

nk

tion

srum

pf

be

gin

nt m

it {u

nd

en

de

t mit }

un

d e

nth

ält:

•D

efin

ition

von

Va

riab

len

•A

nw

eisu

ng

en

–zu

m B

eisp

iel a

rithm

etisch

e A

usd

rücke

, We

rtzuw

eisu

ng

en

•K

om

me

nta

re –

be

gin

ne

n m

it /∗∗∗ ∗

un

d e

nd

en

mit ∗∗∗ ∗

/

Page 35: Programmiersprache C Ingenieurinformatik

19

3.3

. Zu

sam

me

nfa

ssun

g

3. „M

ein

erste

s C-P

rog

ram

m“

b)

De

finitio

n v

on

Va

riab

len

int

z;G

an

ze Z

ah

l mit

Vo

rzeich

en

floa

tx

, y;

Flie

ßko

mm

aza

hl

Die

An

we

isun

g

int

z;

de

finie

rt ein

e V

aria

ble

vom

Typ

Inte

ge

r (ga

nze

Za

hl m

it Vo

rzeich

en

).

•B

ei d

er V

aria

ble

nd

efin

ition

wird

ein

Da

ten

typ

wird

festg

ele

gt,

hie

r: Inte

ge

r

•S

pe

iche

rpla

tz wird

rese

rvie

rt, um

de

n W

ert e

ine

r ga

nze

n Z

ah

l spe

iche

rn

zu kö

nn

en

(für e

ine

Inte

ge

r-Va

riab

le ty

pisch

erw

eise

4 B

yte

s)

•z ka

nn

nu

r ga

nze

Za

hle

n sp

eich

ern

, kein

e G

leitko

mm

aza

hle

n

•z ist d

er N

am

e d

er V

aria

ble

n

•D

er V

aria

ble

nn

am

e ist fre

i wä

hlb

ar, m

uss a

be

r ein

de

utig

sein

•In

ha

lt de

r Sp

eich

erze

lle (W

ert) ist u

nte

r de

m N

am

en

z an

spre

chb

ar

z

20

3.3

. Zu

sam

me

nfa

ssun

g

3. „M

ein

erste

s C-P

rog

ram

m“

c)A

nw

eisu

ng

en

z = 1

7;

sum

= z1

+ z2

;

Be

ide

An

we

isun

ge

n sin

d W

ertzu

we

isun

ge

n. D

er O

pe

rato

r =ist d

er

Zu

we

isun

gso

pe

rato

r( =

ist kein

ma

the

ma

tische

s Gle

ichh

eitsze

iche

n !!!).

Be

de

utu

ng

vo

n =

1.

Be

rech

ne

zue

rst de

n W

ert d

er re

chte

n S

eite

2.

We

ise d

an

ach

da

s Erg

eb

nis d

er lin

ken

Se

ite zu

Be

ispie

l:

z = z +

5;

Erk

läru

ng

:

1.

Ho

le d

en

aktu

elle

n W

ert a

us d

er S

pe

iche

rzelle

z

(„ho

le d

en

aktu

elle

nW

ert d

er V

aria

ble

n z“)

2.

Ad

die

re zu

die

sem

We

rt 5 h

inzu

3.

Sp

eich

ere

da

na

ch d

as E

rge

bn

is in d

er S

pe

iche

rzelle

z

De

r alte

We

rt vo

n z w

ird ü

be

rschrie

be

n u

nd

ist da

mit v

erlo

ren

.

Page 36: Programmiersprache C Ingenieurinformatik

21

3.3

. Zu

sam

me

nfa

ssun

g

3. „M

ein

erste

s C-P

rog

ram

m“

d)

Op

era

tore

n

+ -

∗∗∗ ∗/ %

A

rithm

etisch

e O

pe

rato

ren

<>

Re

latio

na

le O

pe

rato

ren

=Z

uw

eisu

ng

sop

era

tor

&A

dre

ssop

era

tor

e)

Sch

lüsse

lwö

rter –

rese

rvie

rte W

örte

r

int

, floa

t, if, e

lsesin

dS

chlü

sselw

örte

rd

er

Sp

rach

eC

. Sch

lüsse

lwö

rter h

ab

en

ein

e sp

ezie

lle B

ed

eu

tun

g in

ein

er P

rog

ram

mie

rspra

che

un

d d

ürfe

n n

icht a

ls

Na

me

n fü

r Va

riab

len

od

er F

un

ktio

ne

n ve

rwe

nd

et w

erd

en

.

f)K

on

trollstru

ktu

r

if( B

ed

ing

un

g )

{/* A

nw

eis

un

gen

, falls

Bed

ing

un

g w

ah

r */}els

e{

/* An

weis

un

gen

,fa

lls B

ed

ing

un

g fa

lsch

*/

}

22

3.3

. Zu

sam

me

nfa

ssun

g

3. „M

ein

erste

s C-P

rog

ram

m“

g)

Ein

-u

nd

Au

sga

be

Au

sga

be

am

Bild

schirm

mit p

rintf:

prin

tf("...");Te

xt " ... " am

Bild

schirm

au

sge

be

n

prin

tf("...%d

...", z);Te

xt " ... " un

d a

ktu

elle

n W

ert vo

n z a

usg

eb

en

Ein

lese

nvo

n d

er Ta

statu

r mit sca

nf:

scan

f("%d

", &z);

Form

atie

run

gsze

iche

n(„P

latzh

alte

r“fü

r Va

riab

len

):

%d

:E

in-/A

usg

ab

e g

an

zer Z

ah

len

in d

er D

ezim

ald

arste

llun

g

%f

:E

in-/A

usg

ab

e vo

n G

leitko

mm

aza

hle

n

Ste

ue

rzeich

en

:

\n:

Ze

ilen

um

bru

ch („b

eg

inn

e e

ine

ne

ue

Ze

ile“)

h)

So

nstig

es

•C

un

tersch

eid

et zw

ische

n G

roß

-u

nd

Kle

insch

reib

un

g

zah

l1≠

ZA

HL1

≠Z

ah

l1(d

rei ve

rschie

de

ne

Na

me

n!)

•S

em

ikolo

n ;

ken

nze

ichn

et d

as E

nd

e vo

n D

efin

ition

en

un

d A

nw

eisu

ng

en

(ein

e n

eu

e Z

eile

alle

ine

be

de

ute

t nich

t da

s En

de

ein

er A

nw

eisu

ng

!)

Page 37: Programmiersprache C Ingenieurinformatik

23

3.3

. Zu

sam

me

nfa

ssun

g

3. „M

ein

erste

s C-P

rog

ram

m“

#include < stdio.h

>

intmain ( void )

{

intz1,

z2, sum

;

z1 = 3 ; z2 = 4 ;

/∗∗∗ ∗berechne die Summe

∗∗∗ ∗/

sum= z1

+ z2 ;

printf("Zahl1:%d Zahl2:%d\n",

z1,

z2 ) ;

printf(

"Summe: %d\n"

, sum) ;

return 0 ;

}

#include <stdio.h>

intmain(void)

{

intz1,z2,sum;

z1 = 3;

z2 = 4;

/∗∗∗ ∗berechne die Summe

∗∗∗ ∗/

sum= z1 + z2;

printf("Zahl1:%d Zahl2:%d\n",

z1,z2);

printf("Summe: %d\n",sum);

return 0;

}

Page 38: Programmiersprache C Ingenieurinformatik

1

Ka

pite

l 4

Struktu

rierte

Pro

gramm

ieru

ng

un

d K

on

trollstru

kture

n

2

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

Page 39: Programmiersprache C Ingenieurinformatik

3

Pro

ble

m:

•D

GL u

nd

An

fan

gsw

erte

ge

ge

be

n

•D

ie Lö

sun

g d

er D

GL so

ll gra

fisch d

arg

este

llt we

rde

n.

Pro

ble

m:

•D

GL u

nd

An

fan

gsw

erte

ge

ge

be

n

•D

ie Lö

sun

g d

er D

GL so

ll gra

fisch d

arg

este

llt we

rde

n.

4.1

. Struktu

rierte

Pro

gram

mie

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

ab

y

x

y0

y0 '

22

2''

yy

xy

y⋅

+⋅

=⋅

ω

Wie

kom

mt m

an

zu e

ine

r Lösu

ng?

4

4.1

. Struktu

rierte

Pro

gram

mie

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Lösu

ngsm

eth

od

e:

Struktu

rierte

Pro

gram

mie

run

g

•S

chrittw

eise

Ve

rfein

eru

ng

de

s Pro

ble

ms

•N

ur 3

ein

fach

e K

on

trollstru

ktu

ren

Lösu

ngsm

eth

od

e:

Struktu

rierte

Pro

gram

mie

run

g

•S

chrittw

eise

Ve

rfein

eru

ng

de

s Pro

ble

ms

•N

ur 3

ein

fach

e K

on

trollstru

ktu

ren

Be

i de

r schrittw

eise

n V

erfe

ine

run

g wird

ein

e A

ufg

ab

e so

lan

ge

in

kle

ine

re/e

infa

che

re Te

ilau

fga

be

n ze

rleg

t, bis d

iese

so e

infa

ch sin

d,

da

ss ein

e C

od

ieru

ng

erfo

lge

n ka

nn

.

Be

i de

r gra

fische

n D

arste

llun

g d

iese

r Me

tho

de

du

rch S

trukto

gra

mm

e

wird

jed

e Te

ilau

fga

be

du

rch e

ine

n so

g. S

truktu

rblo

ck d

arg

este

llt. Ein

Stru

ktu

rblo

ck b

esitzt fo

lge

nd

e E

ige

nsch

afte

n:

•E

r erfü

llt ein

e k

lar d

efin

ierte

Au

fga

be

•Je

de

r Stru

ktu

rblo

ck b

esitzt e

ine

n E

ing

an

g (vo

n o

be

n) u

nd

ein

en

Au

sga

ng

(na

ch u

nte

n)

Page 40: Programmiersprache C Ingenieurinformatik

5

4.1

. Struktu

rierte

Pro

gram

mie

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Die

Re

ihe

nfo

lge

, in d

er d

ie e

inze

lne

n Te

ilau

fga

be

n b

ea

rbe

itet

we

rde

n, w

ird d

urch

Ko

ntro

llstruktu

ren

festg

ele

gt.

Die

Re

ihe

nfo

lge

, in d

er d

ie e

inze

lne

n Te

ilau

fga

be

n b

ea

rbe

itet

we

rde

n, w

ird d

urch

Ko

ntro

llstruktu

ren

festg

ele

gt.

Be

i de

r struktu

rierte

n P

rog

ram

mie

run

g w

erd

en

nu

r dre

i ein

fach

e

Ko

ntro

llstruktu

ren

zug

ela

ssen

:

•Fo

lge(S

eq

ue

nz)

•A

ltern

ative(V

erzw

eig

un

g, A

usw

ah

l od

er S

ele

ktio

n)

•W

ied

erh

olu

ng

(Sch

leife

, Itera

tion

)

Ha

t ma

n e

in P

rob

lem

schrittw

eise

verfe

ine

rt un

d sich

au

f die

dre

i

ge

na

nn

ten

Ko

ntro

llstruktu

ren

be

schrä

nkt, d

an

n ist d

ie C

od

ieru

ng

ein

fach

un

d d

ie e

ntste

he

nd

en

Pro

gra

mm

e sin

d e

rfah

run

gsg

em

äß

gu

t

lesb

ar, w

artu

ng

sfreu

nd

lich, le

icht zu

teste

n u

nd

we

nig

feh

lera

nfä

llig.

Zu

r gra

fische

n D

arste

llun

g d

er M

eth

od

e d

er stru

ktu

rierte

n P

rog

ram

-

mie

run

gw

erd

en

sog

en

an

nte

Nassi-Sh

ne

ide

rman

n-D

iagramm

eo

de

r

Strukto

gramm

e(D

IN 6

62

61

) verw

en

de

t.

6

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

Page 41: Programmiersprache C Ingenieurinformatik

7

4.2

. Folge

-Se

qu

en

z

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Pro

ble

m:

Sch

reib

e e

in P

rog

ram

m, d

as zw

ei g

an

ze Z

ah

len

ein

liest. D

as

Pro

gra

mm

soll d

ie S

um

me

de

r ein

ge

ge

be

ne

n Z

ah

len

be

rech

ne

n.

Die

Za

hle

n so

llen

am

Bild

schirm

au

sge

ge

be

n w

erd

en

, eb

en

so d

er

We

rt de

r Su

mm

e.

Ve

rwe

nd

ete

Va

riab

len

:

z1:

erste

ein

ge

lese

ne

Za

hl

z2:

zwe

ite e

ing

ele

sen

e Z

ah

l

sum

:S

um

me

de

r ein

ge

lese

ne

n Z

ah

len

Pro

ble

m:

Sch

reib

e e

in P

rog

ram

m, d

as zw

ei g

an

ze Z

ah

len

ein

liest. D

as

Pro

gra

mm

soll d

ie S

um

me

de

r ein

ge

ge

be

ne

n Z

ah

len

be

rech

ne

n.

Die

Za

hle

n so

llen

am

Bild

schirm

au

sge

ge

be

n w

erd

en

, eb

en

so d

er

We

rt de

r Su

mm

e.

Ve

rwe

nd

ete

Va

riab

len

:

z1:

erste

ein

ge

lese

ne

Za

hl

z2:

zwe

ite e

ing

ele

sen

e Z

ah

l

sum

:S

um

me

de

r ein

ge

lese

ne

n Z

ah

len

8

4.2

. Folge

-Se

qu

en

z

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

#include<stdio.h>

intmain(void)

{

intz1, z2, sum;

printf("Erste Zahl eingeben:\n");

scanf("%d", &z1);

printf("Zweite Zahl eingeben:\n");

scanf("%d", &z2);

/∗∗∗ ∗berechne die Summe

∗∗∗ ∗/

sum= z1 + z2;

printf("Zahl 1: %d Zahl2: %d\n", z1, z2);

printf("Summe: %d \n", sum);

return0;

}

Page 42: Programmiersprache C Ingenieurinformatik

9

Die

Lösu

ng

ein

es Te

ilpro

ble

ms (z. B

. ein

e e

inze

lne

An

we

isun

g)

wird

im S

trukto

gra

mm

du

rche

in R

ech

teck

gra

fisch d

arg

este

llt:

Folge

, Seq

ue

nz:

Be

de

utu

ng:

•D

ie e

inze

lne

nStru

kturb

löcke

(Teilp

rob

lem

e) w

erd

en

na

che

ina

n-

de

r ab

ge

arb

eite

t

•Im

C-P

rog

ram

m: A

nw

eisu

ng

en

we

rde

nn

ach

ein

an

de

r ge

schrie

be

n

4.2

. Folge

-Se

qu

en

z

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Teilp

rob

lem

Teilp

rob

lem

1

Teilp

rob

lem

2

. . . .

10

4.2

. Folge

-Se

qu

en

z

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Zahl z1

ein

lese

n

Zahl z1

ausge

be

n

UN

IX-SH

ELLC

PASC

AL

read

z1scan

f("%d

", &z1

);re

adln

(z1);

ech

o "Zah

l = " $

z1p

rintf("Zah

l=%

d",z1

);w

riteln

('Zahl=

', z1);

Ein Stru

ktogra

mm

kan

nin

be

lieb

ige Sp

rach

en

üb

erse

tzt we

rde

n!

Pro

ble

m:

Es so

ll ein

e Z

ah

l ein

ge

lese

n u

nd

de

r We

rt zur K

on

trolle

wie

de

r

au

sge

ge

be

n w

erd

en

.

Ve

rwe

nd

ete

Variab

le:

z1: e

ing

ele

sen

e Z

ah

l

Strukto

gramm

:

Page 43: Programmiersprache C Ingenieurinformatik

11

4.2

. Folge

-Se

qu

en

z

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Be

i kom

plexe

ren

Pro

ble

me

n:

•E

in S

truktu

rblo

cke

ntsp

richt v

iele

n A

nw

eisu

ng

en

•S

truktu

rblo

ck w

ied

eru

m in

Teilp

rob

lem

e ze

rleg

en

•H

iera

rchie

von

Stru

kto

gra

mm

en

Be

ispie

l:

10

Me

sswe

rte e

inle

sen

un

d so

rtiert w

ied

er a

usg

eb

en

Üb

ersich

ts-Strukto

gram

m (G

rob

struktu

r):

10

Za

hle

n e

inle

sen

–T

P1

Za

hle

n d

er G

röß

e n

ach

sortie

ren

–T

P2

10

Za

hle

n a

usg

eb

en

–T

P3

12

. . . .

. . . .

Ve

rfein

eru

ng

(Fein

struktu

r):

Stru

kto

gra

mm

e fü

r ein

zeln

e Te

ilpro

ble

me

Strukto

gram

m fü

r TP

1:

Ein

lese

alg

orith

mu

s

Strukto

gram

m fü

r TP

2:

So

rtiera

lgo

rithm

us

4.2

. Folge

-Se

qu

en

z

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

. . . .

. . . .

Page 44: Programmiersprache C Ingenieurinformatik

13

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

14

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Pro

ble

m:

Schreibe ein P

rogramm

, das zwei G

leitkomm

azahlen einliest. D

as Program

m soll die S

umm

e der eingegebenen Z

ahlen berechnen. Die Z

ahlen sollen am B

ildschirm

ausgegeben werden, ebenso der W

ert der Sum

me aber

nur, wenn dieser positiv oder null ist. E

s soll eine Meldung

ausgegeben werden, ob das E

rgebnis positiv oder negativ ist. A

m E

nde soll eine Meldung erscheinen, dass das

Program

m beendet w

urde.

Varia

ble

n:

z1, z2 und sum-

Typ float

Pro

ble

m:

Schreibe ein P

rogramm

, das zwei G

leitkomm

azahlen einliest. D

as Program

m soll die S

umm

e der eingegebenen Z

ahlen berechnen. Die Z

ahlen sollen am B

ildschirm

ausgegeben werden, ebenso der W

ert der Sum

me aber

nur, wenn dieser positiv oder null ist. E

s soll eine Meldung

ausgegeben werden, ob das E

rgebnis positiv oder negativ ist. A

m E

nde soll eine Meldung erscheinen, dass das

Program

m beendet w

urde.

Varia

ble

n:

z1, z2 und sum-

Typ float

Page 45: Programmiersprache C Ingenieurinformatik

15

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

#include <stdio.h>

int

main(void)

{

float

z1, z2, sum;

printf("Erste Zahl eingeben:\n");

scanf("%f", &z1);

printf("Zweite Zahl eingeben:\n");

scanf("%f", &z2);

sum

= z1 + z2;

printf("Zahl1: %f Zahl2: %f\n", z1, z2);

if(sum

< 0.0)

{

printf("Ergebnis ist negativ!");

}else

{

printf("Summe: %f\n", sum);

printf("Ergebnis ist positiv oder null!");

}printf("Ende des Programms");

return

0;

}

16

4.3

. Ve

rzwe

igun

g -A

ltern

ative

3. V

erzw

eig

un

ge

n (if-e

lse-A

nw

eisu

ng

), prin

tfu

nd

scan

f

Be

din

gun

g?Ja

!N

ein

!

Teilp

rob

lem

1

…..

Teilp

rob

lem

2

…..

Ko

ntro

llstruktu

r: ein

fach

e V

erzw

eigu

ng

Be

de

utu

ng:

•Ist d

ie B

ed

ing

un

g e

rfüllt, w

ird Te

ilpro

ble

m1

be

arb

eite

t,

an

de

rnfa

lls Teilp

rob

lem

2

•G

en

au

ein

es d

er b

eid

en

Teilp

rob

lem

e w

ird b

ea

rbe

itet

Page 46: Programmiersprache C Ingenieurinformatik

17

4.3

. Ve

rzwe

igun

g -A

ltern

ative

3. V

erzw

eig

un

ge

n (if-e

lse-A

nw

eisu

ng

), prin

tfu

nd

scan

f

Um

setzu

ng e

ine

r ein

fach

en

Ve

rzwe

igun

g in C

:

if( Bedingung )

Anweisungsblock_1

else

Anweisungsblock_2

Be

din

gun

g•

Die

Be

din

gu

ng

mu

ss so fo

rmu

liert se

in, d

ass sie

en

twe

de

r erfü

llt

(„wa

hr“) o

de

r nich

t erfü

llt („falsch

“) ist

•B

eisp

iele

für B

ed

ing

un

ge

n sin

d: (x >

1), (2

*x <

10

), (x ==

y), (x !=

y)

•A

chtu

ng

: (x = 5

) ist kein

e B

ed

ing

un

g, so

nd

ern

ein

e Z

uw

eisu

ng

!

An

we

isun

gsblo

ck:•

Se

qu

en

z von

An

we

isun

ge

n, e

ing

esch

losse

n vo

n { }

•H

inte

r de

n e

inze

lne

n A

nw

eisu

ng

en

im A

nw

eisu

ng

sblo

ck ste

he

n

Strich

pu

nkte

, nich

t ab

er h

inte

r de

n g

esch

we

iften

Kla

mm

ern

{ }

•E

nth

ält

ein

An

we

isun

gsb

lock

led

iglich

ein

e e

inze

lne

An

we

isun

g,

kön

ne

n d

ie g

esch

we

iften

Kla

mm

ern

{ } en

tfalle

n

18

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Beis

pie

l 1:

•E

s soll das Maxim

um von zw

ei Zahlen bestim

mt w

erden(V

ariablen: z1, z2 und max)

•Teilaufgabe

A: S

truktogramm

erstellen

•Teilaufgabe B

: C-Q

uelltext erstellen

Beis

pie

l 1:

•E

s soll das Maxim

um von zw

ei Zahlen bestim

mt w

erden(V

ariablen: z1, z2 und max)

•Teilaufgabe

A: S

truktogramm

erstellen

•Teilaufgabe B

: C-Q

uelltext erstellen

Beis

pie

l 2:

•C

-Quelltext

zumS

truktogramm

erstellen

•V

ariablen: z1, z2,cnt1

und cnt2

Beis

pie

l 2:

•C

-Quelltext

zumS

truktogramm

erstellen

•V

ariablen: z1, z2,cnt1

und cnt2

z1 >

z2?

Ja!

Ne

in!

cnt1

um

ein

se

rhö

he

n

cnt1

au

sgeb

en

cnt2

um

ein

se

rhö

he

n

cnt2

au

sgeb

en

Page 47: Programmiersprache C Ingenieurinformatik

19

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Beis

pie

l 3:

•E

s soll das Maxim

um von drei Z

ahlen bestimm

t werden

(Variablen: z1, z2, z3 und m

ax)

•Teilaufgabe

A: S

truktogramm

erstellen

•Teilaufgabe B

: C-Q

uelltext erstellen

Tip

p:

•S

ie können das Problem

mit „verschachtelten“

if-else-Anw

eisungen lösen:

•F

ragen Sie m

it einer if-else-Anw

eisung zunächst die erste B

edingung ab; falls diese (nicht) erfüllt ist, fragen Sie m

it einer zw

eiten –verschachtelten –

if-else-Anw

eisung die zweite

Bedingung ab.

Beis

pie

l 3:

•E

s soll das Maxim

um von drei Z

ahlen bestimm

t werden

(Variablen: z1, z2, z3 und m

ax)

•Teilaufgabe

A: S

truktogramm

erstellen

•Teilaufgabe B

: C-Q

uelltext erstellen

Tip

p:

•S

ie können das Problem

mit „verschachtelten“

if-else-Anw

eisungen lösen:

•F

ragen Sie m

it einer if-else-Anw

eisung zunächst die erste B

edingung ab; falls diese (nicht) erfüllt ist, fragen Sie m

it einer zw

eiten –verschachtelten –

if-else-Anw

eisung die zweite

Bedingung ab.

20

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Be

din

gun

g?Ja

!N

ein

!

Teilp

rob

lem

1

Ko

ntro

llstruktu

r: be

din

gte A

nw

eisu

ng

Be

de

utu

ng:

•Ist d

ie B

ed

ing

un

g e

rfüllt, w

ird Te

ilpro

ble

m1

be

arb

eite

t

•A

nd

ern

falls e

rfolg

t „kein

e A

nw

eisu

ng

“ (lee

re A

nw

eisu

ng

)

•E

ntsp

richt e

ine

r if-An

we

isun

g o

hn

e „e

lse“

Page 48: Programmiersprache C Ingenieurinformatik

21

Um

setzu

ng e

ine

r be

din

gten

An

we

isun

g in C

:

if

( Bedingung )

Anweisungsblock

Be

ispie

l:

Um

setzu

ng n

ach

C:

if ( x > y )

{

x = x + 1;

y = y -1;

}printf("x = %d", x);

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

fallsx >

y ?

ja n

ein

erh

öh

e x u

m 1

ern

ied

rige y u

m 1

Au

sgabe

von

x

22

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Beis

pie

l 4 („

Bo

dy M

ass

Ind

ex“):

•N

ach Eingabe von K

örpergröße l (in M

etern) und Kör-

permasse

m (in K

ilogramm

) soll der „Body M

assIndex“

berechnet und ausgegeben werden: bm

i= m

/ l 2

•Z

usätzlich soll ermitteltw

erden, in welche der folgenden

vier Kategorien der berechnete B

MI fällt:

BM

I≤ 19 �

Untergew

icht, ansonsten:B

MI≤ 25 �

Norm

algewicht, ansonsten:

BM

I≤ 30 �

leichtes Übergew

icht, ansonsten:B

MI >

30 �Ü

bergewicht.

•E

rstellen Sie zunächst ein S

truktogramm

und dann den C

-Quelltext des P

rogramm

s!

Beis

pie

l 4 („

Bo

dy M

ass

Ind

ex“):

•N

ach Eingabe von K

örpergröße l (in M

etern) und Kör-

permasse

m (in K

ilogramm

) soll der „Body M

assIndex“

berechnet und ausgegeben werden: bm

i= m

/ l 2

•Z

usätzlich soll ermitteltw

erden, in welche der folgenden

vier Kategorien der berechnete B

MI fällt:

BM

I≤ 19 �

Untergew

icht, ansonsten:B

MI≤ 25 �

Norm

algewicht, ansonsten:

BM

I≤ 30 �

leichtes Übergew

icht, ansonsten:B

MI >

30 �Ü

bergewicht.

•E

rstellen Sie zunächst ein S

truktogramm

und dann den C

-Quelltext des P

rogramm

s!

Page 49: Programmiersprache C Ingenieurinformatik

23

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

4.3

. Ve

rzwe

igun

g -A

ltern

ative#include <stdio.h> /* Beispiel

4a: BODY MASS INDEX */

int

main(void)

{

float

l, m, bmi;

printf("Groesse

in Metern: "); scanf("%f", &l);

printf("Koerpermasse

in kg: "); scanf("%f", &m);

bmi

= m / (l*l);

printf("BMI: %f\n", bmi);

if(bmi

<= 19)

{

printf("Untergewicht\n");

}else

{

if(bmi

<= 25)

{

printf("Normalgewicht\n");

}else

{

if(bmi

<= 30)

printf("Leichtes Uebergewicht\n");

else

printf("Uebergewicht\n");

}

}return

0;

}

24

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ge

scha

chte

lte if-e

lse-A

nw

eisu

ng

en

sind

oft u

be

rsichtlich

, we

nn

vie

le

Be

din

gu

ng

en

/Fälle

üb

erp

rüft w

erd

en

ssen

–A

usw

eg: M

eh

rfachalte

rnative

if( Bedingung_1 )

Anweisungsblock_1

elseif

( Bedingung_2 )

Anweisungsblock_2

elseif. . . .

else if ( Bedingung_n)

Anweisungsblock_n

else

Anweisungsblock_x

Be

de

utu

ng :

•B

ed

ing

un

ge

n w

erd

en

na

che

ina

nd

er g

ep

rüft

•D

ieje

nig

e A

nw

eisu

ng

, be

i de

r die

Be

din

gu

ng

erstm

als erfü

lltist, w

ird

au

sge

füh

rt –a

lle a

nd

ere

n n

icht

•Ist ke

ine

Be

din

gu

ng

erfü

llt, wird

die

An

we

isun

g n

ach

letzte

m e

lsea

usg

efü

hrt

•Le

tztes e

lseka

nn

ab

er a

uch

en

tfalle

n –

en

tsprich

t de

r lee

ren

An

we

isun

g

Page 50: Programmiersprache C Ingenieurinformatik

25

4.3

. Ve

rzwe

igun

g -A

ltern

ative

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

#include <stdio.h> /* Beispiel

4b: BODY MASS INDEX */

int

main(void)

{

float

l, m, bmi;

printf("Groesse

in Metern: "); scanf("%f", &l);

printf("Koerpermasse

in kg: "); scanf("%f", &m);

bmi

= m / (l*l);

printf("BMI: %f\n", bmi);

if(bmi

<= 19)

printf("Untergewicht\n");

else

if(bmi

<= 25)

printf("Normalgewicht\n");

else

if(bmi

<= 30)

printf("Leichtes Uebergewicht\n");

else

printf("Uebergewicht\n");

return

0;

}

26

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

Page 51: Programmiersprache C Ingenieurinformatik

27

4.4

. Be

din

gun

gen

un

d lo

gische

Ve

rknü

pfu

nge

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Fu

nktio

nO

pera

tore

n

arith

metis

ch

+ -

∗∗∗ ∗/ %

++

--

rela

tion

al

> >= < <= == !=

log

isch

&&

&&

&&

&&

|| !

bito

rien

tiert

&&& &|

∧∧∧ ∧∼∼∼ ∼

<< >>

zeig

ero

rien

tiert

&&& &∗∗∗ ∗

->

zu

weis

en

d= += -=

∗∗∗ ∗= /= %=

&&& &=

∧∧∧ ∧= |= <<= >>=

so

nstig

e,

( typ

e )

( )[ ]

siz

eo

f?:

.

Op

erato

ren

na

ch Fu

nktio

ne

n ge

ord

ne

t:

Be

din

gu

ng

en

(zum

Be

ispie

l in if-e

lse-A

nw

eisu

ng

en

) we

rde

n m

it

relatio

na

len

Op

erato

ren

ge

bild

et u

nd

mit lo

gische

n O

pe

ratore

n

verk

pft.

28

4.4

. Be

din

gun

gen

un

d lo

gische

Ve

rknü

pfu

nge

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Be

ispie

le fü

r Ve

rknü

pfu

nge

n vo

n lo

gische

n B

ed

ingu

nge

n:

1.M

axim

um

von

3 Z

ah

len

z1, z2

un

d z3

be

stimm

en

un

d d

er V

aria

ble

n

ma

xzu

we

isen

.

2.B

ere

ichsp

rüfu

ng

: Lieg

t z im B

ere

ich1

00

0 ≤

z ≤ 2

00

0?

3.B

ere

ichsp

rüfu

ng

: Lieg

t z imB

ere

ich 1

<z <

9 u

nd

ist zug

leich

z ≠ 5

?

4.B

od

y M

ass

Ind

ex: Ist 1

9 ≤

BM

I < 2

5 (N

orm

alg

ew

icht)?

5.F

ind

en

Sie

ein

e e

infa

che

reD

arste

llun

g fü

r: „if( !(z1

<=

z2) )“

Be

ispie

le fü

r Ve

rknü

pfu

nge

n vo

n lo

gische

n B

ed

ingu

nge

n:

1.M

axim

um

von

3 Z

ah

len

z1, z2

un

d z3

be

stimm

en

un

d d

er V

aria

ble

n

ma

xzu

we

isen

.

2.B

ere

ichsp

rüfu

ng

: Lieg

t z im B

ere

ich1

00

0 ≤

z ≤ 2

00

0?

3.B

ere

ichsp

rüfu

ng

: Lieg

t z imB

ere

ich 1

<z <

9 u

nd

ist zug

leich

z ≠ 5

?

4.B

od

y M

ass

Ind

ex: Ist 1

9 ≤

BM

I < 2

5 (N

orm

alg

ew

icht)?

5.F

ind

en

Sie

ein

e e

infa

che

reD

arste

llun

g fü

r: „if( !(z1

<=

z2) )“

Page 52: Programmiersprache C Ingenieurinformatik

29

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

30

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Pro

ble

m:

Es

soll d

ie S

um

me

de

r Qu

ad

rate

von

1 b

is n b

ere

chn

et w

erd

en

.

(Da

zu e

xistiert zw

ar a

uch

ein

e g

esch

losse

ne

Form

el, d

iese

soll

alle

rdin

gs n

icht b

en

utzt w

erd

en

!)

Be

rech

ne

:

Pro

ble

m:

Es

soll d

ie S

um

me

de

r Qu

ad

rate

von

1 b

is n b

ere

chn

et w

erd

en

.

(Da

zu e

xistiert zw

ar a

uch

ein

e g

esch

losse

ne

Form

el, d

iese

soll

alle

rdin

gs n

icht b

en

utzt w

erd

en

!)

Be

rech

ne

:

∑=

=+

++

+=

n

1i

22

22

2i

n3

21

su

mK

De

r Re

chn

er ke

nn

t alle

rdin

gs w

ed

er e

in S

um

me

nsy

mb

ol, n

och

ein

„…“. M

an

mu

ss de

m R

ech

ne

r da

he

r ge

na

u vo

rschre

ibe

n, w

as

er b

ere

chn

en

soll –

jed

en

ein

zeln

en

Sch

ritt!

Page 53: Programmiersprache C Ingenieurinformatik

31

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Algo

rithm

us:

•V

aria

ble

sum

au

f 0 se

tzen

•Z

äh

lvaria

ble

i au

f 1 se

tzen

•B

ere

chn

e q

ua

dra

t=

i ∗i

•A

dd

iere

qu

ad

rat

zu su

m

•E

rhö

he

i um

1

•P

rüfe

, ob

i kle

ine

r gle

ich n

ist; falls ja

, Ve

rfah

ren

wie

de

rho

len

Algo

rithm

us:

•V

aria

ble

sum

au

f 0 se

tzen

•Z

äh

lvaria

ble

i au

f 1 se

tzen

•B

ere

chn

e q

ua

dra

t=

i ∗i

•A

dd

iere

qu

ad

rat

zu su

m

•E

rhö

he

i um

1

•P

rüfe

, ob

i kle

ine

r gle

ich n

ist; falls ja

, Ve

rfah

ren

wie

de

rho

len

Va

riab

len

:

i:

hle

rvaria

ble

n:

En

dw

ert

qu

ad

rat

:B

ere

chn

et in

jed

em

Du

rchla

uf d

as Q

ua

dra

t von

i

sum

:D

ie b

ere

chn

ete

Qu

ad

ratsu

mm

e

32

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

setze sum gleich 0

setze i gleich 1

i <= n ?

quadrat gleich i * i

sum gleich sum plus quadrat

erhöhe i um 1

Ausgabe von n und sum

ja

nein

Page 54: Programmiersprache C Ingenieurinformatik

33

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

#include<stdio.h> /* Version 1: */

intmain(void) /* Abweisende Schleife */

{

inti, n, quadrat, sum;

n = 5;

sum= 0;

i = 1;

while(i <= n)

{

quadrat= i * i;

sum= sum+ quadrat;

i = i + 1;

}printf("Quadratsumme bis %d = %d\n", n, sum);

return0;

}

34

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ko

ntro

llstruktu

r: ab

we

isen

de

Schle

ife

Be

de

utu

ng:

Au

sfüh

run

gsb

ed

ing

un

g p

rüfe

n

•Ist B

ed

ing

un

g e

rfüllt, d

an

n:

-S

truktu

rblo

ck in

ne

rha

lb d

er

Sch

leife

au

sfüh

ren

-D

an

ach

ern

eu

t prü

fen

•Ist B

ed

ing

un

g n

icht e

rfüllt, d

an

n:

-S

chle

ife ve

rlasse

n

-N

äch

sten

Stru

ktu

rblo

ck n

ach

de

r Sch

leife

au

sfüh

ren

Au

sfüh

run

gsbe

din

gun

g

Struktu

rblo

ck /Stru

ktogra

mm

Um

setzu

ng in

C:

while( Ausführungsbedingung )

Anweisungsblock

Page 55: Programmiersprache C Ingenieurinformatik

35

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Nic

hta

bw

eis

en

de

Sc

hle

ife:

Bei einer a

bw

eis

en

den

Sch

leife

ist die Bedingungsprüfung

am A

nfang. Daher ist es ggf.m

öglich, dass die Schleife

überhaupt nicht durchlaufen wird –

die Schleife w

ird kom

plett übersprungen.

Bei m

anchen Problem

en ist es zweckm

äßiger, die B

edin-gungsprüfung

erst am E

nde eines Durchlaufs zu m

achen. D

ie Schleife w

ird dann auchbei einer nicht erfüllten B

edin-gung

wen

igste

ns e

inm

aldurchlaufen

�nachfolgende

Bedingungsprüfung oder n

ich

tab

weis

en

de S

ch

leife

.

Nic

hta

bw

eis

en

de

Sc

hle

ife:

Bei einer a

bw

eis

en

den

Sch

leife

ist die Bedingungsprüfung

am A

nfang. Daher ist es ggf.m

öglich, dass die Schleife

überhaupt nicht durchlaufen wird –

die Schleife w

ird kom

plett übersprungen.

Bei m

anchen Problem

en ist es zweckm

äßiger, die B

edin-gungsprüfung

erst am E

nde eines Durchlaufs zu m

achen. D

ie Schleife w

ird dann auchbei einer nicht erfüllten B

edin-gung

wen

igste

ns e

inm

aldurchlaufen

�nachfolgende

Bedingungsprüfung oder n

ich

tab

weis

en

de S

ch

leife

.

36

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

#include<stdio.h> /* Version 2: */

intmain(void) /* Nichtabweisende Schleife */

{

inti, n, quadrat, sum;

n = 5;

sum= 0;

i = 1;

do

{

quadrat= i * i;

sum= sum+ quadrat;

i = i + 1;

}while(i <= n);

printf("Quadratsumme bis %d = %d\n", n, sum);

return0;

}

Page 56: Programmiersprache C Ingenieurinformatik

37

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ko

ntro

llstruktu

r: nich

tab

we

isen

de

Schle

ife

Be

de

utu

ng:

1)

Stru

ktu

rblo

ck a

usfü

hre

n

2)

Au

sfüh

run

gsb

ed

ing

un

g p

rüfe

n:

•Ist B

ed

ing

un

g e

rfüllt, S

truktu

r-

blo

ck e

rne

ut a

usfü

hre

n (w

eite

r

mit S

chritt 1

)

•Ist B

ed

ing

un

g n

icht e

rfüllt, S

chle

ife

verla

ssen

un

d m

it erste

m S

truktu

r-

blo

ck n

ach

de

r Sch

leife

fortse

tzen

Au

sfüh

run

gsbe

din

gun

g

Struktu

rblo

ck /Stru

ktogra

mm

Um

setzu

ng in

C:

do

Anweisungsblock

while( Ausführungsbedingung );

38

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Pro

ble

m:

Es so

ll ein

e g

an

ze Z

ah

l x ein

ge

lese

n w

erd

en

. Die

Ein

ga

be

ist so

lan

ge

zu w

ied

erh

ole

n, b

is die

ein

ge

ge

be

ne

Za

hl im

Za

hle

nb

ere

ich

50

≤ x <

10

0 lie

gt.

1)

Erste

llen

Sie

ein

Stru

kto

gra

mm

zur Lö

sun

g d

iese

r Au

fga

be

!

2)

Erste

llen

Sie

ein

en

tspre

che

nd

es

C-P

rog

ram

m!

Pro

ble

m:

Es so

ll ein

e g

an

ze Z

ah

l x ein

ge

lese

n w

erd

en

. Die

Ein

ga

be

ist so

lan

ge

zu w

ied

erh

ole

n, b

is die

ein

ge

ge

be

ne

Za

hl im

Za

hle

nb

ere

ich

50

≤ x <

10

0 lie

gt.

1)

Erste

llen

Sie

ein

Stru

kto

gra

mm

zur Lö

sun

g d

iese

r Au

fga

be

!

2)

Erste

llen

Sie

ein

en

tspre

che

nd

es

C-P

rog

ram

m!

Page 57: Programmiersprache C Ingenieurinformatik

39

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

#include<stdio.h>

intmain(void)

{

inti;

i = 1;

while(i <= 10)

{

printf("%d\n", i);

i = i + 1;

}return0;

}

Be

ob

ach

tun

g:

In Z

äh

lschle

ifen

find

en

sich o

ft die

folg

en

de

n d

rei K

om

po

ne

nte

n:

Initia

lisieru

ng

, Au

sfüh

run

gsbe

din

gun

g, V

erä

nd

eru

ngssch

ritt

Be

ob

ach

tun

g:

In Z

äh

lschle

ifen

find

en

sich o

ft die

folg

en

de

n d

rei K

om

po

ne

nte

n:

Initia

lisieru

ng

, Au

sfüh

run

gsbe

din

gun

g, V

erä

nd

eru

ngssch

ritt

Initia

lisieru

ng

(ein

ma

lig, vo

r Be

gin

n

de

r Sch

leife

)

Au

sfüh

run

gsbe

din

gun

g(w

ird vo

r jed

em

Du

rchla

uf

de

r Sch

leife

ge

prü

ft)

Ve

rän

de

run

gsschritt

(wird

na

ch je

de

m D

urch

-

lau

f au

sge

füh

rt)

40

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ko

ntro

llstruktu

r: Zäh

lschle

ife

Be

de

utu

ng:

•D

ie Z

äh

lschle

ife ist e

ine

So

nd

er-

form

de

r ab

we

isen

de

n S

chle

ife

•S

ie b

iete

t ein

e ko

mp

akte

re S

chre

ib-

we

ise fü

r die

Ein

zelko

mp

on

en

ten

Initia

lisieru

ng

, Au

sfüh

run

gsbe

din

-gu

ng

un

d V

erä

nd

eru

ngssch

ritt

Um

setzu

ng in

C:

for(initialisierung; bedingung; veränderung)

Anweisungsblock

Initia

lisieru

ng ;

Au

sfüh

run

gsbe

din

gun

g ;V

erä

nd

eru

ngssch

ritt

Struktu

rblo

ck /Stru

ktogra

mm

Page 58: Programmiersprache C Ingenieurinformatik

41

4.5

. Wie

de

rho

lun

gen

-Sch

leife

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Pro

ble

m:

Be

rech

ne

die

folg

en

de

Su

mm

e fü

r ein

ge

ge

be

ne

s n:

Pro

ble

m:

Be

rech

ne

die

folg

en

de

Su

mm

e fü

r ein

ge

ge

be

ne

s n:

n 1

3 1

2 1

1 1sum

++

++

=K

Um

setzu

ng in

C:

float sum; int i; int n = 5;

sum = 0.0;

for(i = 1; i <= n; i = i + 1)

{

sum = sum + 1.0 / i ;

}

42

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

Page 59: Programmiersprache C Ingenieurinformatik

43

4.6

. Me

hrfa

cha

usw

ah

l

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Pro

ble

m:

Sch

reib

e e

in P

rog

ram

m, d

as e

ine

n R

ad

ius r e

inlie

st un

d w

ah

lwe

ise

de

n K

reisu

mfa

ng

, die

Kre

isfläch

e o

de

r da

s Ku

ge

lvolu

me

n b

ere

ch-

ne

tu

nd

au

sgib

t.

Va

riab

len

:a

usw

ah

l:

1 =

Kre

isum

fan

g

:2

= K

reisflä

che

Typ

int

:3

= K

ug

elvo

lum

en

an

de

re W

erte

sind

un

ltig

r:

Ra

diu

sTy

p flo

at

erg

:E

rge

bn

isTy

p flo

at

Pro

ble

m:

Sch

reib

e e

in P

rog

ram

m, d

as e

ine

n R

ad

ius r e

inlie

st un

d w

ah

lwe

ise

de

n K

reisu

mfa

ng

, die

Kre

isfläch

e o

de

r da

s Ku

ge

lvolu

me

n b

ere

ch-

ne

tu

nd

au

sgib

t.

Va

riab

len

:a

usw

ah

l:

1 =

Kre

isum

fan

g

:2

= K

reisflä

che

Typ

int

:3

= K

ug

elvo

lum

en

an

de

re W

erte

sind

un

ltig

r:

Ra

diu

sTy

p flo

at

erg

:E

rge

bn

isTy

p flo

at

44

4.6

. Me

hrfa

cha

usw

ah

l

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

#include

<stdio.h> /* Mehrfachauswahl: Kreis, Kugel berechnen */

int

main(void)

{

int

wahl; float

r, erg;

printf("Umfang(1)-Flaeche(2)-Volumen(3)?"); scanf("%d", &wahl);

printf("Radius ?\n"); scanf("%f", &r);

switch(wahl)

{case

1: erg

= 2.0*3.14*r;

printf("Umfang = %f", erg);

break;

case

2: erg

= 3.14*r*r;

printf("Flaeche

= %f", erg);

break;

case

3: erg

= 4.0/3.0*3.14*r*r*r;

printf("Volumen = %f", erg);

break;

default: printf("Auswahl falsch");

}printf("\nProgrammende!");

return

0;

}

Page 60: Programmiersprache C Ingenieurinformatik

45

4.6

. Me

hrfa

cha

usw

ah

l

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ko

ntro

llstruktu

r: Me

hrfa

cha

usw

ah

l

Ko

nsta

nte

1K

on

stan

te 2

Ko

nsta

nte

nSo

nst

Struktu

r-b

lock 1

Struktu

r-b

lock 2

Struktu

r-b

lock n

Struktu

r-b

lock „x“

Au

swa

hla

usd

ruck

Be

de

utu

ng

:

1)A

uswahlausdruck (F

allabfrage) auswerten –

ergibt einen Integerwert

2)S

trukturblock ausführen, bei dem die K

onstante mit dem

Wert des

Ausw

ahlausdrucks übereinstimm

t3)

Tritt keiner der aufgeführten F

älle ein, „Sonst-B

lock“ausführen

Der „S

onst-Block“ kann entfallen; dann erfolgt keine A

ktion, wenn der

Ausw

ahlausdruck mit keiner K

onstanten übereinstimm

t

Ac

htu

ng

: Ko

ns

tan

te1

, Ko

ns

tan

te2

... mü

ss

en

Inte

ge

r-Ko

ns

tan

ten

se

in,

als

o k

ein

e G

leitk

om

ma

za

hle

n u

nd

au

ch

ke

ine

Va

riab

len

!

46

4.6

. Me

hrfa

cha

usw

ah

l

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Um

setzu

ng in

C:

switch( Auswahlausdruck )

{

caseKonstante_1: Anweisungen_1

break;

caseKonstante_2: Anweisungen_2

break;

. . . .

caseKonstante_n: Anweisungen_n

break;

default

: Anweisungen_x

}

Ach

tun

g:

An

die

ser S

telle

sind

led

iglich

Inte

ge

r-Ko

nsta

nte

n e

rlau

bt

(ke

ine

Va

riab

len

, au

ch k

ein

e

Be

reich

e)!

Page 61: Programmiersprache C Ingenieurinformatik

47

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

48

4.7

. Spru

nga

nw

eisu

nge

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Spru

nga

nw

eisu

nge

nb

ew

irken

, da

ss da

s Pro

gra

mm

an

ein

er

an

de

ren

Ste

lle fo

rtge

setzt w

ird, sie

un

terb

rech

en

de

n lin

ea

ren

Ab

lau

f de

Pro

gra

mm

s.

Ein

Be

ispie

l für e

ine

Sp

run

ga

nw

eisu

ng

, die

bre

ak-A

nw

eisu

ng

,

find

et sich

im B

eisp

iel zu

r Me

hrfa

cha

usw

ah

l („Kre

is, Ku

ge

l

be

rech

ne

n“)

•D

ie b

rea

k-A

nw

eisu

ng

verlä

sst de

n B

ere

ich d

er sw

itch-ca

se-

An

we

isun

g u

nd

setzt d

ie P

rog

ram

mu

sfüh

run

g m

it de

r erste

n

na

chfo

lge

nd

en

An

we

isun

g fo

rt.

•W

ird b

rea

k ve

rge

ssen

, da

nn

we

rde

n d

ie n

ach

folg

en

de

n ca

se-

Blö

cke e

be

nfa

lls au

sge

füh

rt!

Page 62: Programmiersprache C Ingenieurinformatik

49

4.7

. Spru

nga

nw

eisu

nge

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Die

bre

ak

-An

we

isun

g w

ird a

be

r nich

t nu

r in sw

itch-ca

se-

An

we

isun

ge

n e

ing

ese

tzt, son

de

rn a

uch

be

i de

r Pro

gra

mm

ieru

ng

von

Sch

leife

n:

Wirku

ng d

er b

rea

k-An

we

isun

g:

•D

ie a

ktu

elle

for-, w

hile

-, do

-wh

ile-S

chle

ife b

zw. sw

itch-

An

we

isun

g w

ird so

fort ve

rlasse

n

•D

ie P

rog

ram

ma

usfü

hru

ng

wird

un

mitte

lba

r na

ch d

em

verla

ssen

en

Blo

ck (S

chle

ife/A

nw

eisu

ng

) fortg

ese

tzt

•B

ea

chte

: Nu

r die

inn

erste

Sch

leife

wird

verla

ssen

!

50

4.7

. Spru

nga

nw

eisu

nge

n

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

inti, j, k;

Anweisungen ...

for(j = 0; j < 100; j++)

{

Anweisungen ...

if(j == (k + 23))

break;

Anweisungen ...

for(i = 0; i < 50; i++)

{

Anweisungen ...

if(i== k)

break;

Anweisungen ...

}Anweisungen ...

}Anweisungen ...

Be

ispie

l:

Ve

rscha

chte

lte S

chle

ifen

un

d b

rea

k

Page 63: Programmiersprache C Ingenieurinformatik

51

Glie

de

run

g

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Ka

pite

l 4 –

Struktu

rierte

Pro

gram

mie

run

gu

nd

Ko

ntro

llstruktu

ren

4.1

Struktu

rierte

Pro

gram

mie

run

g 4

.2Fo

lge -

Seq

ue

nz

4.3

Ve

rzwe

igun

g -A

ltern

ative4

.4B

ed

ingu

nge

n u

nd

logisch

e V

erkn

üp

fun

gen

4.5

Wie

de

rho

lun

gen

-Sch

leife

n4

.6M

eh

rfach

au

swa

hl

4.7

Spru

nga

nw

eisu

nge

n4

.8B

eisp

iele

52

4.8

. Be

ispie

le

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Be

ispie

l 1:

•W

en

n e

ine

(äu

ße

re) S

chle

ife w

ied

eru

m e

ine

(inn

ere

) Sch

leife

en

thä

lt, sprich

t ma

n vo

n ve

rscha

chte

lten

Sch

leife

n.

•In

jed

em

ein

zeln

en

Du

rchla

uf d

er ä

ere

n S

chle

ife w

ird d

ie

kom

ple

tte in

ne

re S

chle

ife a

bg

ea

rbe

itet.

#include<stdio.h>

intmain(void)

{

inti, j;

for(i = 1; i < 6; i = i + 1)

{

for(j = 1; j < 6; j = j + 1)

{

printf("i%d/j%d \t", i, j);

}printf("\n");

}return0;

}

Page 64: Programmiersprache C Ingenieurinformatik

53

4.8

. Be

ispie

le

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Be

ispie

l 2:

•E

rmitte

ln S

ie, o

b d

ie Z

iffern

sum

me

(Qu

ersu

mm

e) e

ine

r ga

nze

n

Za

hl g

era

de

od

er u

ng

era

de

ist.

•Fo

rde

rn S

ie d

en

An

we

nd

er zu

r Ein

ga

be

de

r Za

hl a

uf. G

eb

en

Sie

die

Za

hl zu

r Ko

ntro

lle a

us. G

eb

en

Sie

die

Zw

ische

nw

erte

de

r

Qu

ersu

mm

en

bild

un

g a

us.

•N

ach

de

m S

ie a

usg

eg

eb

en

ha

be

n, o

b d

ie Q

ue

rsum

me

ge

rad

e

od

er u

ng

era

de

ist, verla

ng

en

Sie

na

ch e

ine

r ne

ue

n Z

ah

l. Du

rch

Ein

ga

be

ein

er 0

soll Ih

r Pro

gra

mm

ab

ge

bro

che

n w

erd

en

.

•E

rstelle

n S

ie zu

chst e

in S

trukto

gra

mm

. Sch

reib

en

Sie

an

-

schlie

ße

nd

da

s zug

eh

örig

e C

-Pro

gra

mm

.

An

we

nd

un

g z

um

Be

isp

iel b

ei P

rüfs

um

me

n: P

rüfe

n, o

b e

ine

vie

r-ste

llige

Artik

eln

um

me

r gü

ltig is

t od

er n

ich

t. Da

zu

wird

ein

e z

usä

tzlic

he

S

telle

hin

zu

ge

füg

t, so

da

ss d

ie Q

ue

rsu

mm

e d

urc

h 1

0 te

ilba

r ist.

12331 4

2716 4

2718

54

4.8

. Be

ispie

le

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

Teilp

rob

lem

e:

•Z

ah

l ein

lese

n u

nd

wie

de

r au

sge

be

n

•Q

ue

rsum

me

bild

en

•P

rüfe

n, o

b Q

ue

rsum

me

ge

rad

e o

de

r un

ge

rad

e ist

•E

rge

bn

is au

sge

be

n

•N

eu

e Z

ah

l ein

lese

n u

nd

wie

de

r au

sge

be

n

•A

bb

ruch

be

din

gu

ng

prü

fen

�A

bb

ruch

bzw

. Wie

de

rho

lun

g

Qu

ersu

mm

e b

ilde

n:

46

13

�1

4

alle

Ziffe

rn a

dd

iere

n –

ab

er w

ie b

eko

mm

t ma

n d

ie Z

iffern

?

letzte

Ziffe

r:R

est b

ei D

ivisio

n d

urch

10

(Mo

du

lo-O

pe

rato

r!)

ne

ue

Za

hl:

alte

Za

hl / 1

0 (In

teg

er-D

ivisio

n, R

est a

bsch

ne

ide

n!)

Qu

ersu

mm

e ge

rad

e o

de

r un

gera

de

:q

ue

rsum

me

% 2

==

0, g

era

de

==

1, u

ng

era

de

Va

riab

len

: za

hl (e

ing

ele

sen

e Z

iffer), q

sum

me

(Qu

ersu

mm

e), lziffe

r(le

tzte Z

iffer)

Page 65: Programmiersprache C Ingenieurinformatik

55

4. S

truktu

rierte

Pro

gra

mm

ieru

ng

un

d K

on

trollstru

kture

n

4.8

. Be

ispie

le

Strukto

gram

m

Page 66: Programmiersprache C Ingenieurinformatik

1

Ka

pite

l 5

Da

ten

typ

en

un

d O

pe

rato

ren

2

Glie

de

run

g

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ka

pite

l 5 –

Da

ten

typ

en

un

d

Op

era

tore

n

5.1

Ele

me

nta

re D

ate

nty

pe

n

5.2

Sy

mb

olisch

e K

on

stan

ten

5.3

Ty

pu

mw

an

dlu

ng

en

5.4

Op

era

tore

n

Page 67: Programmiersprache C Ingenieurinformatik

3

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ele

me

nta

re D

ate

nty

pe

n(in

t, floa

tu

sw.) sin

d b

ere

its in d

er S

pra

che

vorg

eg

eb

en

un

d e

s gib

t Op

era

tion

en

für d

iese

Da

ten

typ

en

.

Zu

sam

me

ng

ese

tzte D

ate

nty

pe

n w

erd

en

vom

Pro

gra

mm

iere

r

de

finie

rt, zum

Be

ispie

l:

•u

m ko

mp

lexe

Za

hle

n d

arzu

stelle

n

(Ko

mb

ina

tion

zwe

ier flo

at-Z

ah

len

�A

dd

ition

ist kom

plizie

rter),

•u

m e

ine

n S

tud

en

ten

zu b

esch

reib

en

(setzt sich

eb

en

falls a

us e

lem

en

tare

n D

ate

nty

pe

n zu

sam

me

n).

Eig

en

scha

ften

ein

es D

ate

nty

ps:

•W

erte

be

reich

, Na

chko

mm

aste

llen

(be

i Gle

itkom

ma

zah

len

)

•S

pe

iche

rpla

tzbe

da

rf

•In

tern

e D

arste

llun

g / S

pe

iche

run

g

•G

ültig

e O

pe

ratio

ne

n

4

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ga

nze

Za

hle

n m

it Vo

rzeich

en

(a):

Page 68: Programmiersprache C Ingenieurinformatik

5

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ga

nze

Za

hle

n m

it Vo

rzeich

en

(b):

Ne

be

n d

em

Da

ten

typ

int

gib

t es w

eite

re Ty

pe

n zu

r Da

rstellu

ng

vorze

iche

nb

eh

afte

ter g

an

ze Z

ah

len

. Die

se d

ecke

n u

nte

rschie

dlich

e

We

rteb

ere

iche

ab

(Ko

mp

rom

iss: Sp

eich

erp

latz/W

erte

be

reich

/

Re

che

nze

it):

sho

rtshorti;

int

inti;

lon

glongi;

lon

glo

ng

longlongi;

Za

hle

nb

ere

ich b

ei n

Bit:

n =

16

, 32

, 64

-2

, 4, 8

By

tes S

pe

iche

rpla

tz

po

sitive Z

ah

len

:h

öch

stwe

rtige

s Bit 0

ne

ga

tive Z

ah

len

:h

öch

stwe

rtige

s Bit 1

1)

2(

...)

2(

1n

1n

−+

−−

6

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ga

nze

Za

hle

n m

it Vo

rzeich

en

(c):

Grö

ße

in B

yte

sLin

ux

/GC

CLC

C-W

IN3

2V

isua

l C+

+

sho

rt2

22

int

44

4

lon

g4

44

lon

g lo

ng

88

8

Grö

ße

in B

yte

sW

erte

be

reich

2 B

yte

/ 16

Bit

-32

.76

8 …

+3

2.7

67

4 B

yte

/ 32

Bit

-2.1

47

.48

3.6

48

… +

2.1

47

.48

3.6

47

8 B

yte

/ 64

Bit

-9,2

×1

01

8…

+9

,2 ×

10

18

Page 69: Programmiersprache C Ingenieurinformatik

7

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Vo

rzeich

en

lose

ga

nze

Za

hle

n (a

):

8

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Vo

rzeich

en

lose

ga

nze

Za

hle

n (b

):

un

sign

ed

sho

rtunsignedshorti;

un

sign

ed

int

unsignedinti;

un

sign

ed

lon

gunsignedlongi;

un

sign

ed

lon

glo

ng

unsignedlonglongi;

#include<stdio.h>

intmain(void)

{

unsignedshort

s = -1;

unsignedint

i = -1;

unsignedlonglongl = -1;

printf("%d, %x \n", sizeof(s), s);

printf("%d, %x \n", sizeof(i), i);

printf("%d, %llx\n", sizeof(l), l);

return0;

}

Wie la

utet d

ieA

usg

ab

e dieses

Pro

gra

mm

s…?

Page 70: Programmiersprache C Ingenieurinformatik

9

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Vo

rzeich

en

lose

ga

nze

Za

hle

n (c):

Grö

ße

in B

yte

sLin

ux

/GC

CLC

C-W

IN3

2V

isua

l C+

+

un

sign

ed

sho

rt2

22

un

sign

ed

int

44

4

un

sign

ed

lon

g4

44

un

sign

ed

lon

g lo

ng

88

8

Grö

ße

in B

yte

sW

erte

be

reich

2 B

yte

/ 16

Bit

0 …

65

.53

5

4 B

yte

/ 32

Bit

0 …

4.2

94

.96

7.2

95

8 B

yte

/ 64

Bit

0 …

18

,4×

10

18

10

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Flie

ßko

mm

aza

hle

n, G

leitko

mm

aza

hle

n (a

):

Flie

ßko

mm

aza

hle

n w

erd

en

be

tigt fü

r:

•S

eh

r gro

ße

un

d se

hr k

lein

e Z

ah

len

•Z

ah

len

mit N

ach

kom

ma

stelle

n

Flie

ßko

mm

aza

hle

n w

erd

en

llig a

nd

ers b

eh

an

de

lt als g

an

ze

Za

hle

n. F

ür je

de

Flie

ßko

mm

aza

hl w

erd

en

32

od

er 6

4 B

it Sp

ei-

che

rpla

tzb

en

ötig

t. Ein

e F

ließ

kom

ma

zah

l wird

da

be

i als K

om

bi-

na

tion

von

Vo

rzeich

en

, Ex

po

ne

nt u

nd

Ma

ntisse

ge

spe

iche

rt.

Ty

pe

n:

float

ein

fach

e G

en

au

igke

it(4

By

te / 3

2 B

it)

Za

hle

nb

ere

ich (je

we

ils po

s./ne

g.)

1,2

×1

0-3

8…

3,4

×1

0+

38

double

do

pp

elte

Ge

na

uig

keit

(8 B

yte

/ 64

Bit)

Za

hle

nb

ere

ich (je

we

ils po

s./ne

g.)

2,2

×1

0-3

08

… 1

,8 ×

10

+3

08

Page 71: Programmiersprache C Ingenieurinformatik

11

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Flie

ßko

mm

aza

hle

n, G

leitko

mm

aza

hle

n (b

):

#include<stdio.h>

intmain(void)

{

float

f = 1.1234567890123456789;

doubled = 1.1234567890123456789;

printf("%.20f\n%.20f\n", f, d);

return0;

} Be

i de

r Arb

eit m

it Flie

ßko

mm

aza

hle

n ist d

ere

n b

eg

ren

zte G

en

au

ig-

ke

itzu

be

ach

ten

! Be

im D

ate

nty

p flo

at

we

rde

n 6

-7 sig

nifik

an

te

Ste

llen

be

rücksich

tigt, b

ei d

ou

ble

sind

es 1

5-1

6 S

telle

n.

12

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Flie

ßko

mm

aza

hle

n, G

leitko

mm

aza

hle

n (c):

/* 7.000.000 x 1/7 berechnen */

#include<stdio.h>

intmain(void)

{

float

f = 1.0 / 7.0, fsum= 0;

doubled = 1.0 / 7.0, dsum= 0;

longl;

for(l = 1; l <= 7000000; l = l + 1)

{

fsum= fsum+ f;

dsum= dsum+ d;

}printf("%f\n", fsum);

printf("%f\n", dsum);

return0;

}

Ach

tun

g: R

un

du

ng

sfehler

kön

nen

sich a

ufsu

mm

ieren!

Page 72: Programmiersprache C Ingenieurinformatik

13

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Bu

chsta

be

n, Z

iffern

, So

nd

erze

iche

n…

(a):

Um

ein

zeln

e Z

eich

en

zu sp

eich

ern

gib

t es e

ine

n e

ige

ne

n D

ate

nty

p

cha

rm

it ein

er G

röß

e vo

n 8

Bit (1

By

te). Z

ur B

ea

rbe

itun

g vo

n

Bu

chsta

be

n, Z

iffern

un

d S

on

de

rzeich

en

wird

da

be

i in d

er R

eg

el e

in

erw

eite

rter A

SC

II-Co

de

be

nu

tzt (z. B. IS

O-La

tin1

).

#include<stdio.h>

intmain(void)

{

charc;

c = 'C';

c = c -2;

printf("%c hat ASCII-Code %d\n", c, c);

return0;

}

De

finitio

n e

ine

r cha

r-Va

riab

len

Zeich

en

kon

stan

ten

we

rde

n m

it ein

fa-

che

nA

nfü

hru

ng

szeich

en

ge

schrie

be

n

Mit Ze

iche

n (b

zw. d

ere

n A

SCII-

Co

de

) kan

n m

an

au

ch re

chn

en

Da

s Form

ate

lem

en

t („Pla

tzha

lter“)

zur A

usg

ab

e e

ine

s Zeich

en

s ist %c

14

5.1

. Ele

me

nta

re D

ate

nty

pe

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Bu

chsta

be

n, Z

iffern

, So

nd

erze

iche

n…

(b):

chary = 5; /* ASCII-Code Steuerzeichen "ENQ" */

printf("y = %d", y);

printf("y = %c", y);

y = '5'; /* y bekommt den Wert 53 */

printf("y = %d", y);

printf("y = %c", y);

Au

sga

be:

y = 5

y =

Au

sga

be:

y = 53

y = 5

Be

ispie

le:

1) P

rüfe

n, o

b ch

ar-V

aria

ble

gle

ich 'j'

ist

2) P

rüfe

n, o

b ch

ar-V

aria

ble

gle

ich 'j'

od

er 'J'

ist

3) P

rüfe

n, o

b ch

ar-V

aria

ble

Gro

ßb

uch

stab

en

en

thä

lt

Page 73: Programmiersprache C Ingenieurinformatik

15

Glie

de

run

g

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ka

pite

l 5 –

Da

ten

typ

en

un

d

Op

era

tore

n

5.1

Ele

me

nta

re D

ate

nty

pe

n

5.2

Sy

mb

olisch

e K

on

stan

ten

5.3

Ty

pu

mw

an

dlu

ng

en

5.4

Op

era

tore

n

16

5.2

. Sy

mb

olisch

e K

on

stan

ten

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Sy

mb

olisch

e K

on

stan

ten

sind

Ko

nsta

nte

n, d

ie e

ine

n N

am

en

be

-

sitzen

. Me

ist we

rde

n sie

am

Pro

gra

mm

an

fan

g d

efin

iert; d

ies ist

alle

rdin

gs n

icht zw

ing

en

d e

rford

erlich

.

•D

ie A

nw

eisu

ng

#d

efin

ed

efin

iert e

ine

sym

bo

lische

Ko

nsta

nte

(ge

folg

t von

Na

me

un

d W

ert d

er K

on

stan

ten

)

•Sy

mb

olisch

e K

on

stan

ten

ssen

au

f jed

en

Fall vo

r de

r erste

n

Ve

rwe

nd

un

g d

efin

iert w

erd

en

.

•K

on

ven

tion

: Na

me

n in

Gro

ßb

uch

stab

en

schre

ibe

n

Be

ispie

le:

#definePI 3.14159265

#defineBAUTEIL_EINZELPREIS 10.0

#defineBEARBEITER "Tom"

Page 74: Programmiersprache C Ingenieurinformatik

17

#include<stdio.h>

#definePI 3.14159265

intmain(void)

{

intwahl; floatr, erg;

printf("Umfang(1)-Flaeche(2)-Volumen(3)?"); scanf("%d", &wahl);

printf("Radius ?\n"); scanf("%f", &r);

switch(wahl)

{case1: erg= 2.0*PI*r;

printf("Umfang = %f", erg);

break;

case2: erg= PI*r*r;

printf("Flaeche= %f", erg);

break;

case3: erg= 4.0/3.0*PI*r*r*r;

printf("Volumen = %f", erg);

break;

default: printf("Auswahl falsch");

}return0;

}

5.2

. Sy

mb

olisch

e K

on

stan

ten

5. D

ate

nty

pe

n u

nd

Op

era

tore

n Symb

olisch

e Ko

nsta

nten

erh

öh

en d

ie Lesba

rkeit ein

es Pro

gra

mm

s. Sie erleich

tern a

erdem

n

ach

träg

liche Ä

nd

erun

-g

en d

es Qu

elltextes.

18

5.2

. Sy

mb

olisch

e K

on

stan

ten

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Sy

mb

olisch

e K

on

stan

ten

we

rde

n h

äu

fig in

Inclu

de

-Da

teie

n

(He

ad

er-D

ate

ien

) au

fge

listet. S

olch

e D

ate

ien

kön

ne

n le

icht vo

n

an

de

ren

Pro

gra

mm

en

(we

iter-)ve

rwe

nd

et w

erd

en

. Vie

le In

clud

e-

Da

teie

n w

erd

en

scho

n vo

m C

om

pile

r-He

rstelle

r mitg

elie

fert.

Be

ispie

l: Au

sschn

itt au

s de

r Inclu

de

-Da

tei m

ath

.h

…/* Usefulconstants. */

#defineM_E

2.7182818284590452354

#defineM_LN2 0.69314718055994530942

#defineM_LN10 2.30258509299404568402

#defineM_PI

3.14159265358979323846

#defineM_PI_2 1.57079632679489661923

Page 75: Programmiersprache C Ingenieurinformatik

19

5.2

. Sy

mb

olisch

e K

on

stan

ten

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

#define_USE_MATH_DEFINES

#include<math.h>

#include<stdio.h>

intmain(void)

{

printf("%f \n", M_PI);

printf("%f \n", M_E);

return

0;

}

Der In

ha

lt der D

atei m

ath

.hw

ird g

elesen, w

enn

da

s C-

Pro

gra

mm

com

piliert

wird

.

Alle K

on

stan

ten in

der D

atei

ma

th.h

kön

nen

jetzt im P

ro-

gra

mm

verwen

det w

erden

.

Fehlt d

iese Defin

ition

, werd

en

bei m

an

chen

Co

mp

ilern d

ie K

on

stan

ten M

_P

I, M_

E (usw

.) n

icht erka

nn

t!

20

Glie

de

run

g

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ka

pite

l 5 –

Da

ten

typ

en

un

d

Op

era

tore

n

5.1

Ele

me

nta

re D

ate

nty

pe

n

5.2

Sy

mb

olisch

e K

on

stan

ten

5.3

Ty

pu

mw

an

dlu

ng

en

5.4

Op

era

tore

n

Page 76: Programmiersprache C Ingenieurinformatik

21

5.3

. Ty

pu

mw

an

dlu

ng

en

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Im R

ech

ne

r we

rde

n g

an

ze Z

ah

len

un

d F

ließ

kom

ma

zah

len

llig

un

tersch

ied

lich v

era

rbe

itet.

•D

arf m

an

ein

fach

ein

er F

ließ

kom

ma

varia

ble

n d

en

We

rt ein

er

Inte

ge

r-Va

riab

len

zuw

eise

n?

•Ist d

as U

mg

eke

hrte

eb

en

falls m

ög

lich?

•W

as p

assie

rt mit d

en

Na

chko

mm

aste

llen

ein

er F

ließ

kom

ma

zah

l,

we

nn

ma

n sie

ein

er In

teg

er-Z

ah

l zuw

eist?

•W

elch

e a

nd

ere

n P

rob

lem

e kö

nn

en

au

ftrete

n?

cha

rch

ar

sho

rtsh

ort

int

floa

t

lon

gd

ou

ble

Um

wa

nd

lun

g ist p

rob

lem

atisch

,

Info

rma

tion

sve

rlust m

ög

lich!

Um

wa

nd

lun

g ist u

np

rob

lem

atisch

22

5.3

. Ty

pu

mw

an

dlu

ng

en

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Imp

lizite T

yp

um

wa

nd

lun

g:

Be

i de

r imp

liziten

Typ

um

wa

nd

lun

g w

ird d

ie U

mw

an

dlu

ng

vom

Pro

gra

mm

iere

r nich

t „au

sdrü

cklich

verla

ng

t“. Sie

wird

vom

Co

mp

iler a

uto

ma

tisch a

nh

an

d d

er D

ate

nty

pe

n vo

n V

aria

ble

n

un

d A

usd

rücke

n e

rkan

nt u

nd

„imp

lizit“ du

rchg

efü

hrt

inti1, i2;

doubled1, d2, d3, d4;

i1 = 3;

d1 = i1 / 4;

d2

= i1 / 4.0;

d3 = 7.6;

d4 = 3.5;

i2

= d3 + d4;

Welch

e Werte h

ab

en d

ie Va

riab

lenjew

eils na

ch d

er Zuw

eisun

g?

Page 77: Programmiersprache C Ingenieurinformatik

23

5.3

. Ty

pu

mw

an

dlu

ng

en

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ex

plizite

Ty

pu

mw

an

dlu

ng

:

An

de

rs als b

ei d

er im

plizite

n Ty

pu

mw

an

dlu

ng

wird

die

exp

lizite

Typ

um

wa

nd

lun

g im

Qu

ellte

xt an

ge

ge

be

n. E

s gilt fo

lge

nd

e S

yn

tax:

(gewünschter Typ)Ausdruck

inti1, i2, i3;

doubled1, d2, d3, d4;

i1 = 3;

d1 = (double)i1 / 4;

d2= i1 / (double)4;

d3= (double)(i1 / 4);

d4 = 1.75;

i2= (int)(d4 + d4);

i3= (int)d4 + (int)d4;

Welch

e Werte h

ab

en d

ie Va

riab

lenjew

eils na

ch d

er Zuw

eisun

g?

24

Glie

de

run

g

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Ka

pite

l 5 –

Da

ten

typ

en

un

d

Op

era

tore

n

5.1

Ele

me

nta

re D

ate

nty

pe

n

5.2

Sy

mb

olisch

e K

on

stan

ten

5.3

Ty

pu

mw

an

dlu

ng

en

5.4

Op

era

tore

n

Page 78: Programmiersprache C Ingenieurinformatik

25

5.4

. Op

era

tore

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Fu

nktio

nO

pera

tore

n

arith

metis

ch

+ -

∗∗∗ ∗/ %

++

--

rela

tion

al

> >= < <= == !=

log

isch

&&

&&

&&

&&

|| !

bito

rien

tiert

&&& &|

∧∧∧ ∧∼∼∼ ∼

<< >>

zeig

ero

rien

tiert

&&& &∗∗∗ ∗

->

zu

weis

en

d=

+= -=

∗∗∗ ∗= /= %=

&&& &=

∧∧∧ ∧= |= <<= >>=

so

nstig

e,

( typ

e )

( )[ ]

siz

eo

f?:

.

Op

era

tore

n n

ach

Fu

nk

tion

en

ge

ord

ne

t:

26

5.4

. Op

era

tore

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Arith

me

tische

Op

era

tore

n:

+ -

* /

Ad

ditio

n, S

ub

traktio

n, M

ultip

likatio

n, D

ivisio

n

%M

od

ulo

-Op

era

tor (R

est e

ine

r Inte

ge

r-Div

ision

)

++

--In

kre

me

nt-, D

ek

rem

en

t-Op

era

tore

n (W

ert e

ine

r

Va

riab

len

um

1 e

rhö

he

n, e

rnie

drig

en

)

Ink

rem

en

t-Op

era

tore

n kö

nn

en

als P

räfix-

(++

a) o

de

r als P

ostfix-

Op

era

tore

n (a

++

) an

ge

we

nd

et w

erd

en

. We

lche

r Un

tersch

ied

be

steh

t zwisch

en

be

ide

n V

aria

nte

n?

int

x, y, zahl;

zahl = 5;

++zahl;

zahl++;

x= ++zahl;

y= zahl++;

Welch

e Werte h

ab

en d

ie Va

riab

lenjew

eils na

ch d

er Au

sfüh

run

g d

ieserP

rog

ram

mzeilen

?

Page 79: Programmiersprache C Ingenieurinformatik

27

5.4

. Op

era

tore

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Re

latio

na

le O

pe

rato

ren

:

> >

= <

= <

grö

ße

r, grö

ße

r/gle

ich, k

lein

er/g

leich

, kle

ine

r

==

V

erg

leich

au

f Gle

ichh

eit

!=V

erg

leich

au

f Un

gle

ichh

eit

Log

ische

Op

era

tore

n:

&&

||

Un

d-

bzw

. Od

er-V

erk

pfu

ng

!N

ega

tion

if( (x >= 10) && (x <= 20) )

printf("x im Bereich 10...20");

if( !(x == y) )

printf("x nicht gleich y");

28

5.4

. Op

era

tore

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Zu

we

isen

de

Op

era

tore

n:

=Z

uw

eisu

ng

sop

era

tor (ke

ine

ma

th. G

leich

he

it)

+=

-=

Ku

rzschre

ibw

eise

n fü

r Ad

ditio

n, S

ub

traktio

n

*=

/=K

urzsch

reib

we

isen

für M

ultip

likatio

n, D

ivisio

n

%=

Ku

rzschre

ibw

eise

für M

od

ulo

-Op

era

tor

zahl += 10

zahl = zahl + 10

zahl %= 10

zahl = zahl % 10

Ink

rem

en

tieru

ng

ein

er In

teg

er-Z

ah

l:

zahl = zahl + 1

zahl += 1

zahl++

++zahl

Page 80: Programmiersprache C Ingenieurinformatik

29

5.4

. Op

era

tore

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

So

nstig

e O

pe

rato

ren

:

,A

ufzä

hlu

ng

sop

era

tor zu

r Ve

rkettu

ng

von

Va

riab

len

od

er A

usd

rücke

n, z. B

. in e

ine

r for-A

nw

eisu

ng

sizeo

f()D

iese

r „Op

era

tor“ lie

fert d

ie G

röß

e (in

By

tes) e

ine

r

Va

riab

len

od

er e

ine

s Da

ten

typ

s.

inta, b;

for(k=0, j=2; k<=100; k++, i+=7)

...

i = sizeof(short);

longl;

i = sizeof(l);

sizeof(sh

ort)

��� �2

sizeof(l)

��� �4

30

5.4

. Op

era

tore

n

5. D

ate

nty

pe

n u

nd

Op

era

tore

n

Op

erato

renn

ach

Prio

rität

geo

rdn

et

Page 81: Programmiersprache C Ingenieurinformatik

1

Ka

pite

l 6

Fun

ktion

en

2

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

Page 82: Programmiersprache C Ingenieurinformatik

3

6.1

. Einle

itun

g

6. Fu

nktio

ne

n

Fun

ktion

en

we

rde

n ve

rwe

nd

et, u

m

•Te

ilaufgab

en

zu b

earb

eite

n, d

ie h

äufig vo

rkom

me

n,

•gro

ße

Pro

gramm

e in

klein

e, ü

be

rsichtlich

e Te

ile zu

un

terte

ilen

.

C-P

rogram

me

be

steh

en

min

de

sten

s aus e

ine

r ein

zeln

en

Fun

ktion

,d

er Fu

nktio

n m

ain

. Mit d

iese

r Fun

ktion

be

ginn

t die

Au

sfüh

run

gd

es P

rogram

ms.

Be

ispie

l:B

ere

chn

e y =

xn

für vo

rgege

be

ne

x un

d n

y = 1.0

for(i= 1; i<= n; i++)

{

y = y

∗∗∗ ∗x;

}

Sollte

die

se P

ote

nz ö

fters

be

rech

ne

t we

rde

n, m

üsste

die

ser P

rogram

mte

il ständ

igw

ied

erh

olt w

erd

en

!

4

6.1

. Einle

itun

g

6. Fu

nktio

ne

n

#include <stdio.h>

float

power(float

x, int

k);

intmain(void)

{

float

x1, x2, z, t;

int

n = 4;

x1 = 3.0;

z = power(x1, n);

x2 = 3.75;

t = power(x2, 5);

return

0;

}

floatpower(float

x, int

k)

{

int

i;

float

y;

y = 1.0;

for

(i

= 1; i

<= k; i++)

{

y = y

∗∗∗ ∗x;

}return

y;

}

Au

slageru

ng d

er Te

ilaufgab

e „P

ote

nz b

ere

chn

en

“ in e

ine

Fun

ktion

:

•E

ingab

e: W

erte

von

Basis (x) u

nd

Exp

on

en

t (n)

•A

usgab

e: W

ert d

er n

-ten

Po

ten

z

Page 83: Programmiersprache C Ingenieurinformatik

5

6.1

. Einle

itun

g

6. Fu

nktio

ne

n

Date

na

usta

usch

zwisch

en

Ha

up

tpro

gram

m u

nd

Fun

ktion

:

x1 = 3.0;

n = 4;

z = power(x1, n);

…t = power(3.75, 5);

:

6

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

Page 84: Programmiersprache C Ingenieurinformatik

7

6.2

. Üb

erga

be

pa

ram

ete

r be

im Fu

nktio

nsa

ufru

f

6. Fu

nktio

ne

n

Beim

Sta

rt des P

rog

ram

ms p

assie

rt Fo

lgen

des:

•E

s w

ird im

mer z

uers

t die

Funktio

n m

ain

aufg

eru

fen.

•D

ie Z

eile

n in

main

werd

en d

er R

eih

e n

ach a

bgearb

eite

t.

•In

der Z

eile

z = power(x1,n);

wird

die

Funktio

n m

ain

verla

ssen. E

s w

ird S

peic

herp

latz

für d

ie lo

kale

n V

aria

ble

n x

und k

der F

unktio

n p

ow

er b

ere

itgeste

llt;dann w

erd

en d

ie

Werte

ko

pie

rt von x

1 n

ach x

bzw

. von n

nach k

.

•D

ie F

unktio

n p

ow

er w

ird a

bgearb

eite

t.

•B

ei d

er A

nw

eis

ung returny;

wird

die

Funktio

n p

ow

er

verla

ssen u

nd d

er W

ert v

on y

wird

der lin

ken S

eite

beim

Funktio

nsaufru

f (hie

r z) z

ugew

iesen.

•S

chlie

ßlic

h w

ird d

ie F

unktio

n m

ain

fortg

esetz

t.

8

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

Page 85: Programmiersprache C Ingenieurinformatik

9

Au

fba

u e

ine

r Fun

ktion

sde

finitio

n:

float power (float x, intk)

{

. . .

}

6.3

. Au

fba

u e

ine

r Fun

ktion

6. Fu

nktio

ne

n

Fun

ktion

stypR

ückgab

etyp

Date

ntyp

de

s Ergeb

nisse

s

Nam

e d

er

Fun

ktion

An

we

isun

gen

, die

von

die

ser Fu

nktio

nau

sgefü

hrt w

erd

en

Fun

ktion

sparam

ete

rP

arame

terliste

Eingab

ew

erte

10

6.3

. Au

fba

u e

ine

r Fun

ktion

6. Fu

nktio

ne

n

Fun

ktion

sna

me

:•

Es ge

lten

die

gleich

en

Re

geln

wie

für V

ariable

nn

ame

n.

•D

er N

am

e e

ine

r Fu

nktio

n so

llte e

twa

s mit d

er A

ufg

ab

e zu

tun

ha

be

n,

die

vo

n d

er F

un

ktio

ne

rled

igt w

ird!

Fun

ktion

spa

ram

ete

r:•

Fun

ktion

sparam

ete

r sind

die

jen

igen

We

rte, d

ie d

ie Fu

nktio

n vo

n

auß

en

(vom

aufru

fen

de

n P

rogram

m) b

en

ötigt.

•D

aten

type

n, N

ame

n, R

eih

en

folge

festle

gen

–fo

rma

le P

ara

me

ter.

•z = power(x1,n);

–x1

un

d n

he

iße

na

ktue

lle P

ara

me

ter.

•E

rst be

im Fu

nktio

nsau

fruf (w

ähre

nd

de

r Laufze

it de

s Pro

gramm

s) w

ird Sp

eich

erp

latz für d

ie P

arame

ter re

servie

rt.•

Param

ete

r dü

rfen

nu

r inn

erh

alb d

er Fu

nktio

n ve

rwe

nd

et w

erd

en

(so

g. loka

le V

aria

ble

n).

•vo

id(„n

ichts, le

er“),falls ke

ine

Au

frufp

arame

ter vo

rhan

de

n sin

d.

Page 86: Programmiersprache C Ingenieurinformatik

11

6.3

. Au

fba

u e

ine

r Fun

ktion

6. Fu

nktio

ne

n

Fun

ktion

styp, R

ückga

be

we

rt de

r Fun

ktion

:•

Fun

ktion

styp u

nd

Date

ntyp

de

s Rü

ckgabe

we

rts, de

r in d

er re

turn

-A

nw

eisu

ng

zurü

ckgege

be

n w

ird, m

üsse

n ü

be

rein

stimm

en

.•

Alle

Date

ntyp

en

sind

erlau

bt.

•Fu

nktio

nstyp

void

wird

für Fu

nktio

ne

n o

hn

e R

ückgab

ew

ert

verw

en

de

t.

ckspru

ng, re

turn

-An

we

isun

g:•

Mit d

er re

turn

-An

we

isun

g wird

die

Fun

ktion

verlasse

n –

es e

rfolgt

ein

ckspru

ng zu

m au

frufe

nd

en

Pro

gramm

.•

Be

ispie

le: r

eturny;

returny*y + 3.16;

•M

eh

rere

retu

rn-A

nw

eisu

nge

n in

ein

er Fu

nktio

n m

öglich

.•

ckspru

ng e

rfolgt e

be

nfalls, w

en

n d

as Fun

ktion

sen

de

erre

icht w

ird

(nu

r sinn

voll, falls Fu

nktio

nstyp

void

verw

en

de

t wird

).•

In d

er Fu

nktio

n m

ainb

ew

irkt die

retu

rn-A

nw

eisu

ng d

as Pro

gramm

-e

nd

e; d

er W

ert kan

n vo

m B

etrie

bssyste

m au

sgew

erte

t we

rde

n.

12

6.3

. Au

fba

u e

ine

r Fun

ktion

6. Fu

nktio

ne

n

De

klaratio

n:

•Je

de

Fun

ktion

mu

ss vor ih

rer V

erw

en

du

ng d

ekla

riert

we

rde

n.

•D

er so

g. Fun

ktion

spro

totyp

legt d

ie Sch

nittste

lle zu

m A

ufru

fd

er Fu

nktio

n fe

st (Nam

e d

er Fu

nktio

n; D

aten

type

n, A

nzah

l un

d

Re

ihe

nfo

lge d

er Ü

be

rgabe

param

ete

r).•

Die

Fun

ktion

sde

klaration

(bzw

. de

r Fun

ktion

spro

totyp

) sieh

t aus

wie

die

erste

Zeile

de

r Fun

ktion

sde

finitio

n –

sie w

ird alle

rdin

gs mit

ein

em

Sem

ikolo

n ab

gesch

losse

n.

•B

eisp

iel: f

loatpower(floatx, intk);

Fun

ktion

ma

in:

•D

ie Fu

nktio

n m

ainw

ird b

eim

Start de

s Pro

gramm

s auto

matisch

au

fgeru

fen

.•

ltige V

ariante

n (lt. C

-Stand

ard):

intmain(void)

intmain(intargc, char*argv[])

Page 87: Programmiersprache C Ingenieurinformatik

13

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

14

6.4

. Einfa

che

Be

ispie

le

6. Fu

nktio

ne

n

Be

ispie

l 1: M

inim

um

von

2 ga

nze

n Za

hle

n b

estim

me

n

•A

ufru

fparam

ete

r:zw

ei In

tege

rzahle

n•

ckgabe

we

rt:In

tege

rzahl

•Fu

nktio

nsp

roto

typ:intimin(inta, intb);

#include <stdio.h>

intimin(inta, intb);

intmain(void)

{

inti, j, k;

i= 3;

j = 7;

k = imin(i, j);

printf("Min = %d\n", k);

k = imin(i, 234);

printf("Min = %d\n", k);

return0;

}

Au

fruf d

er Fu

nktio

n im

in

De

klaration

von

imin

(Fun

ktion

spro

totyp

)

Page 88: Programmiersprache C Ingenieurinformatik

15

6.4

. Einfa

che

Be

ispie

le

6. Fu

nktio

ne

n

Be

ispie

l 3: M

inim

um

von

2 ga

nze

n Za

hle

n,ke

in R

ückga

be

we

rt

•D

ie Fu

nktio

n so

lldas M

inim

um

erm

itteln

un

d au

ch au

sgeb

en

•A

ufru

fparam

ete

r:zw

ei In

tege

rzahle

n•

ckgabe

we

rt:vo

id•

Fun

ktion

spro

totyp

:voidimin(inta, intb);

Be

ispie

l 2: M

inim

um

von

zwe

i Fließ

kom

ma

zah

len

•A

ufru

fparam

ete

r:zw

ei Flie

ßko

mm

azahle

n (flo

ato

de

r do

ub

le)

•R

ückgab

ew

ert:

Fließ

kom

mazah

l•

Fun

ktion

spro

totyp

:floatimin(floata, floatb);

od

er: d

ouble imin(double a, double b);

16

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

Page 89: Programmiersprache C Ingenieurinformatik

17

6.5

. Tasch

en

rech

ne

r

6. Fu

nktio

ne

n

Au

fgabe

:E

s soll e

in e

infach

er Tasch

en

rech

ne

r mit zw

ei Fu

nktio

ne

n e

rstellt w

erd

en

. D

er Tasch

en

rech

ne

r kann

zwe

i Inte

gerzah

len

mu

ltiplizie

ren

un

d e

ine

Zahl,

die

de

zimal e

inge

geb

en

wu

rde

, in h

exade

zimale

r Form

wie

de

r ausge

be

n.

Schre

ibe

n Sie

ein

C-P

rogram

m, d

as folge

nd

e A

ufgab

en

erfü

llt: De

r An

we

n-

de

r wird

aufge

ford

ert e

ine

Tasche

nre

chn

erfu

nktio

n au

szuw

ähle

n. N

ach

de

r Au

sfüh

run

g die

ser Fu

nktio

n kan

n e

ine

we

itere

Fun

ktion

ausge

wäh

lt o

de

r das P

rogram

m b

ee

nd

et

we

rde

n.

Einfacher Taschenrechner

(0) Beenden

(1) Multiplikation

(2) Hexadezimalzahl

Bitte wählen Sie: _

Multiplikation

Erste Zahl: _

Zweite Zahl: _

Produkt _ * _ = _

Hexadezimalzahl

Geben Sie eine Dezimalzahl ein: _

Dezimal _ entspricht _ Hexadezimal

18

6.5

. Tasch

en

rech

ne

r

6. Fu

nktio

ne

n

Stru

ktu

rierte

Pro

gra

mm

ieru

ng

•S

chrittw

eis

e V

erfe

ineru

ng

•G

röß

ere

s P

roble

m in

kle

inere

Teilp

roble

me z

erle

gen

•Teilp

roble

me g

egebenenfa

lls w

ieder z

erle

gen

•F

unktio

nen h

elfe

n, g

röß

ere

Pro

ble

me z

u z

erle

gen; je

de

Funktio

n b

earb

eite

t ein

defin

ierte

s, e

infa

ches T

eilp

roble

m

•B

eschrä

nkung a

uf 3

ein

fache K

ontro

llstru

ktu

ren:

1)

Fo

lge

anweisung1;

anweisung2;

2)

Alte

rna

tive

ifelse

switch

3)

Wie

de

rho

lun

gwhile

do while

for

Page 90: Programmiersprache C Ingenieurinformatik

19

6.5

. Tasch

en

rech

ne

r

6. Fu

nktio

ne

n

Teila

ufga

be

n

1)

Ein

gabe

auffo

rde

run

g anze

igen

, Fun

ktion

ausw

ähle

n (1

od

er 2

)E

inge

geb

en

e Zah

l prü

fen

,gege

be

ne

nfalls E

ingab

e w

ied

erh

ole

n�

Fun

ktion

: au

swa

hl

2)

Zwe

i Zahle

n e

inle

sen

M

ultip

likation

du

rchfü

hre

n, P

rod

ukt au

sgeb

en

�Fu

nktio

n: m

ultip

likation

3)

Au

fford

eru

ng zu

r Ein

gabe

ein

er Zah

lD

ezim

alzahl e

inle

sen

, hexad

ezim

al ausge

be

n�

Fun

ktion

: hexd

arste

llun

g

4)

Hau

ptp

rogram

m, A

blau

fsteu

eru

ng

Fun

ktion

ausw

ahlau

frufe

n, gib

t Inte

gerw

ert

zurü

ckG

ew

ählte

Fun

ktion

ausfü

hre

n, ggf. P

rogram

m b

ee

nd

en

ausw

ahle

rne

ut au

frufe

n�

Fun

ktion

: ma

in

20

#include<stdio.h>

intauswahl(void); /* Funktionsdeklarationen */

voidhexdarstellung(void);

voidmultiplikation(void);

intmain(void) /* Hauptprogramm */

{

intwahl;

do

{

wahl= auswahl();

switch(wahl)

{case

1: multiplikation(); break;

case

2: hexdarstellung(); break;

}

}while(wahl!= 0); /* Beenden durch Eingabe von 0 */

return0;

}

6.5

. Tasch

en

rech

ne

r

6. Fu

nktio

ne

n

Ha

up

tpro

gram

m d

es Ta

sche

nre

chn

ers:

Page 91: Programmiersprache C Ingenieurinformatik

21

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

22

6.6

. Stan

da

rdfu

nktio

ne

n

6. Fu

nktio

ne

n

Be

im P

rogram

mie

ren

gibt e

s ein

e R

eih

e vo

n Stan

dard

aufgab

en

, d

ie im

me

r wie

de

r auftre

ten

:

•B

ere

chn

un

g de

r Qu

adratw

urze

l

•n

-teP

ote

nz e

ine

r Zahl b

ere

chn

en

•trigo

no

me

trische

Fun

ktion

en

•E

in-

un

d A

usgab

e

Hie

rfür e

xistiere

n b

ere

its fertige

Stan

da

rdfu

nktio

ne

n–

no

rmie

rt im

AN

SI-Stand

ard. Sie

sind

in p

raktisch alle

n P

rogram

mie

rum

-ge

bu

nge

nvo

rhan

de

n.

Au

f de

n fo

lgen

de

n Fo

lien

we

rde

n ve

rschie

de

ne

Gru

pp

en

von

Stan

dard

fun

ktion

en

vorge

stellt (vie

le w

eite

re B

eisp

iele

find

en

sich

im In

tern

et o

de

r in d

er O

nlin

e-H

ilfe).

Page 92: Programmiersprache C Ingenieurinformatik

23

6.6

. Stan

da

rdfu

nktio

ne

n

6. Fu

nktio

ne

n

Qu

ad

ratw

urze

l double sqrt(double x)

Po

ten

zfun

ktio

ndouble pow(double x,double y)

Exp

on

en

tialfu

nk

tion

double exp(double x)

Na

türlich

er Lo

garith

mu

sdouble log(double x)

Loga

rithm

us

zur

Ba

sis 10

double log10(double x)

Ab

solu

ter B

etra

gdouble fabs(double x)

Sin

us

double sin(double x)

Ko

sinu

sdouble cos(double x)

Tan

gen

sdouble tan(double x)

Arcu

sS

inu

sdouble asin(double x)

Arcu

s Ko

sinu

sdouble acos(double x)

Arcu

s Tan

gen

sdouble atan(double x)

Sin

us H

yp

erb

olicu

sdouble sinh(double x)

Ko

sinu

s Hy

pe

rbo

licus

double cosh(double x)

Tan

gen

sH

yp

erb

olicu

sdouble tanh(double x)

xy

=

yx

Math

em

atische

Stan

da

rdfu

nktio

ne

n:#include<math.h>

24

6.6

. Stan

da

rdfu

nktio

ne

n

6. Fu

nktio

ne

n

/* math.h--Definitions for the

math floating point package. */

double cos(double x);

double sin(double x);

double tan(double x);

double tanh(double x);

double fabs(double x);

double acos(double x);

double asin(double x);

double cosh(double x);

double sinh(double x);

double exp(double x);

double pow(double base, double power);

double sqrt(double x);

#defineM_E

2.7182818284590452354

#defineM_PI

3.14159265358979323846

. . .

Au

sschn

itt au

s de

r He

ad

er-D

atei m

ath.h

:

Page 93: Programmiersprache C Ingenieurinformatik

25

6.6

. Stan

da

rdfu

nktio

ne

n

6. Fu

nktio

ne

n

Ve

rarb

eitu

ng vo

n Ze

iche

n:#include<ctype.h>

intisalnum(intc);

Ist c ein

Bu

chstab

e o

de

r ein

e Ziffe

r

intisalpha(intc);

Ist c ein

Bu

chstab

e?

int iscntrl(int c);

Ist c ein

Steu

erze

iche

n?

int isdigit(int c);

Ist c ein

e Ziffe

r?

int isgraph(int c);

Ist c ein

dru

ckbare

s Zeich

en

(auß

er Le

erze

iche

n)?

int islower(int c);

Ist c ein

Kle

inb

uch

stabe

?

int tolower(int c);

Um

wan

dlu

ng

von

c in e

ine

n K

lein

bu

chstab

en

int toupper(int c);

Um

wan

dlu

ng vo

n c in

ein

en

Gro

ßb

uch

stabe

n

int isprint(int c);

Ist c ein

dru

ckbare

s Zeich

en

?

int ispunct(int c);

Ist c ein

Inte

rpu

nktio

nsze

iche

n?

int isspace(int c);

Ist c ein

Lee

rzeich

en

/Tabu

latur/Ze

ilen

um

bru

ch?

int isupper(int c);

Ist c ein

Gro

ßb

uch

stabe

?

intisxdigit(intc);

Ist c ein

e H

exadezim

alziffer?

26

6.6

. Stan

da

rdfu

nktio

ne

n

6. Fu

nktio

ne

n

Ein-

un

d A

usga

be

:#include<stdio.h>

printf, scanf

–A

usgab

e au

f Bild

schirm

fprintf, fscanf

–E

in-/A

usgab

e m

it Date

ien

getchar

–E

inze

lne

s Zeich

en

ein

lese

n

„Stan

da

rd-Lib

rary“, V

ersch

ied

en

es:

#include<stdlib.h>

rand

–In

tege

r-Zufallszah

l zwisch

en

0 u

nd

RA

ND

_M

AX

abs, labs

–A

bso

lute

r Be

trag von

Inte

ger-

un

d Lo

ng-V

ariable

n(ve

rgl. fabs

aus m

ath.h

für D

ou

ble

-Variab

len

)

Ve

rarb

eitu

ng vo

n D

atum

, Uh

rzeit:

#include<time.h>

Arb

eit m

it Zeich

en

kette

n:#include<string.h>

Page 94: Programmiersprache C Ingenieurinformatik

27

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

28

6.7

. Loka

le u

nd

glob

ale

Va

riab

len

6. Fu

nktio

ne

n

#include<stdio.h>

intimin(inti, intk);

intmain(void)

{

inti, j, k;

i = 3; j = 7;

k = imin(i, j);

printf("Min = %d\n", k);

k = imin(i, 234);

printf("Min = %d\n", k);

return0;

}

intimin(inti, intk)

{

intj;

if(i < k)

j = i;

elsej = k;

returnj;

}

Was p

assiert, w

en

n w

ir de

n Fu

nktio

nsp

arame

tern

un

d d

er V

ariable

n

in d

er Fu

nktio

n im

ind

ie N

ame

n i, k u

nd

j geb

en

(Ach

tun

g: In d

er

Fun

ktion

ma

ingib

t es e

be

nfalls V

ariable

n i, j u

nd

k…)?

Ist das e

rlaub

t? (��� �Ja

!) Be

lege

n d

ie V

ariable

n d

ie gle

iche

n Sp

eich

er-

zelle

n, ko

mm

t es zu

„Üb

ersch

ne

idu

nge

n“? (��� �

Ne

in!)

Page 95: Programmiersprache C Ingenieurinformatik

29

6.7

. Loka

le u

nd

glob

ale

Va

riab

len

6. Fu

nktio

ne

n

Lo

kale

Varia

ble

n:

•Lokale

Varia

ble

n w

erd

en im

Kopf e

iner F

unktio

n (w

ie d

ie

Varia

ble

n i u

nd k

bei d

er F

unktio

n im

in) o

der in

nerh

alb

ein

er

Funktio

n d

efin

iert (w

ie d

ie V

aria

ble

j in d

er F

unktio

n im

inoder

die

Varia

ble

n i, j, k

und n

in d

er F

unktio

n m

ain

).

•S

ie d

ürfe

n b

zw

. können n

icht v

on a

ndere

n F

unktio

nen v

er-

wendet w

erd

en.

•N

ur w

ähre

nd e

ine F

unktio

n b

earb

eite

t wird

, ist S

peic

herp

latz

für d

ie lo

kale

n V

aria

ble

n d

er F

unktio

n re

serv

iert; n

ach B

een-

dig

ung

der F

unktio

n g

ibt e

s d

iese V

aria

ble

n n

icht m

ehr.

•Lokale

Varia

ble

n, d

ie d

en g

leic

hen N

am

en b

esitz

en, a

ber in

unte

rschie

dlic

hen F

unktio

nen d

efin

iert s

ind, h

aben n

ichts

mit-

ein

ander z

u tu

n (w

ie d

ie z

wei V

aria

ble

n j in

den F

unktio

nen

main

und im

in); s

ie h

aben n

ur z

ufä

llig d

en g

leic

hen N

am

en.

30

6.7

. Loka

le u

nd

glob

ale

Va

riab

len

6. Fu

nktio

ne

n

#include<stdio.h>

voidimin(inta, intb);

intk;

intmain(void)

{

inti = 3, j = 7;

imin(i, j);

printf("Min = %d\n", k);

k= 17; imin(k, 234);

printf("Min = %d\n", k);

return0;

}voidimin(inta, intb)

{

if(a < b)

k= a;

elsek= b;

}

Be

ispie

l für e

ine

glob

aleV

ariable

: k ist sow

oh

l ind

er Fu

nktio

n m

ainals

auch

in im

insich

tbar!

We

lche

Au

sgab

e lie

fert

die

ses P

rogra

mm

?

Page 96: Programmiersprache C Ingenieurinformatik

31

6.7

. Loka

le u

nd

glob

ale

Va

riab

len

6. Fu

nktio

ne

n

Glo

bale

Varia

ble

n:

•G

lobale

Varia

ble

n w

erd

en a

erh

alb

von F

unktio

nen, m

eis

t

am

Pro

gra

mm

anfa

ng d

efin

iert.

•S

ie e

xis

tiere

n w

ähre

nd d

er g

esam

ten P

rogra

mm

laufz

eit,

d. h

. es s

ind w

ähre

nd d

er g

esam

ten P

rogra

mm

laufz

eit

Speic

herz

elle

n fü

r die

glo

bale

n V

aria

ble

n re

serv

iert.

•S

ie d

ürfe

n v

on a

llen F

unktio

nen v

erw

endet w

erd

en, a

er

es g

ibt in

nerh

alb

ein

er F

unktio

n e

ine lo

kale

Varia

ble

mit

dem

gle

ichen N

am

en –

lokale

Varia

ble

hat V

orra

ng; in

die

sem

Fall k

ann d

ie F

unktio

n n

icht a

uf d

ie g

lobale

Varia

ble

zugre

ifen (d

ie g

lobale

Varia

ble

ist „u

nsic

htb

ar“).

•Typis

che A

nw

endung g

lobale

r Varia

ble

n: In

form

atio

nsaus-

tausch z

wis

chen F

unktio

nen; s

pezie

ll zur g

leic

hzeitig

en

R

ückg

ab

e m

eh

rere

r Werte

aus e

iner F

unktio

n.

32

Glie

de

run

g

6. Fu

nktio

ne

n

Ka

pite

l 6 –

Fun

ktion

en

6.1

Einle

itun

g6

.2Ü

be

rgab

ep

ara

me

ter b

eim

Fun

ktion

sau

fruf

6.3

Au

fba

u e

ine

r Fun

ktion

6

.4Ein

fach

e B

eisp

iele

6.5

Be

ispie

l: Tasch

en

rech

ne

r6

.6Sta

nd

ard

fun

ktion

en

6.7

Loka

le u

nd

glob

ale

Va

riab

len

6.8

An

we

nd

un

g glob

ale

r Va

riab

len

Page 97: Programmiersprache C Ingenieurinformatik

33

6.8

. An

we

nd

un

g glob

ale

r Va

riab

len

6. Fu

nktio

ne

n

Au

fgab

e:

Erste

llen

Sie e

in P

rogram

m zu

r Lösu

ng q

uad

ratische

r Gle

ichu

nge

n

mit d

er p

q-Fo

rme

l. Löse

n Sie

die

qu

adratisch

e G

leich

un

g in e

ine

r Fu

nktio

n intqsolve(double p, double q)

un

d ge

be

n

Sie b

eid

e N

ullste

llen

in d

en

glob

alen

Variab

len

x1 u

nd

x2 zu

rück.

Die

Fun

ktion

qso

lvegib

t in ih

rem

Inte

ger-R

ückgab

ew

ert e

ine

1

zurü

ck, falls die

Gle

ichu

ng ge

löst w

erd

en

kon

nte

, and

ern

falls ein

e 0

.

q2 p

2 px

0q

px

x

2

1,2

2

±

−=

=+

+

34

6.8

. An

we

nd

un

g glob

ale

r Va

riab

len

6. Fu

nktio

ne

n

#include<stdio.h>

#include<math.h>

doublex1, x2;

intqsolve(doublep, doubleq);

intmain(void)

{

doublep, q;

printf(" 2 \n");

printf(" x + px + q = 0\n\n");

printf("p eingeben: "); scanf("%lf", &p);

printf("q eingeben: "); scanf("%lf", &q);

if(qsolve(p, q) != 0)

printf("Nullstellen: %f, %f\n", x1, x2);

else

printf("Keine Nullstellen!\n");

return0;

} Hau

ptp

rog

ram

m m

it Au

fruf d

er F

un

ktio

n q

so

lve:

Page 98: Programmiersprache C Ingenieurinformatik

1

Ka

pite

l 7

Zu

sam

me

ng

ese

tzte D

ate

nty

pe

n,

Ve

kto

ren

, Ze

iche

nk

ette

n

2

Glie

de

run

g

7. Zu

samm

en

gese

tzte D

aten

type

n

Ka

pite

l 7 –

Zu

sam

me

ng

ese

tzte D

ate

nty

pe

n

7.1

Ve

kto

ren

7.2

So

rtiere

n e

ine

s Ve

kto

rs

7.3

Me

hrd

ime

nsio

na

le Fe

lde

r

7.4

Um

ga

ng

mit e

in-/zw

eid

ime

nsio

na

len

Feld

ern

7.5

Ze

iche

nk

ette

n, S

tring

s

Page 99: Programmiersprache C Ingenieurinformatik

3

7.1

. Ve

kto

ren

7. Zu

samm

en

gese

tzte D

aten

type

n

Au

fga

be

:

Es so

ll ein

Pro

gramm

zur V

ersu

chsau

swe

rtun

g erste

llt we

rde

n:

•B

is zu 1

00

Me

sswe

rte e

inle

sen

•M

essw

erte

zur K

on

trolle

wie

de

r ausge

be

n

•M

ittelw

ert u

nd

Maxim

um

be

rech

ne

n

Es w

erd

en

dazu

10

0 V

ariable

n vo

m Typ

float o

de

r do

ub

le b

en

ötigt.

Es w

äre m

öglich

–ab

er se

hr u

mstän

dlich

–zu

die

sem

Zwe

ck 10

0

versch

ied

en

e V

ariable

n zu

de

finie

ren

.

(Wa

s wü

rde

be

i ein

er E

rwe

iteru

ng

au

f 10

00

We

rte p

assie

ren

?)

Ein

fach

er: D

efin

ition

ein

es V

ek

tors m

it 10

0 E

lem

en

ten

4

De

finitio

n e

ine

s Ve

kto

rs:

double x[100];

•R

ese

rviert 1

00

Spe

iche

rplätze

vom

Typ d

ou

ble

•D

ie A

nzah

l de

r Ele

me

nte

sollte

als In

teg

er-K

on

stan

tean

gege

be

n

we

rde

n, Fo

lgen

de

s ist in älte

ren

Varian

ten

von

C so

wie

in C

++

n

icht e

rlau

bt:

float

x[dim];

•D

ie e

inze

lne

n E

lem

en

te d

es V

ekto

rs liege

n im

Hau

ptsp

eich

er in

au

fein

and

erfo

lgen

de

n Sp

eich

erze

llen

•float x[4] = {2.0, 4.0, 0.0, 1.2};

int z[3] = {1, 5, 10};

int z[] = {1, 5, 10};

7.1

. Ve

kto

ren

7. Zu

samm

en

gese

tzte D

aten

type

n

An

zah

l de

r Ele

me

nte

Na

me

Da

ten

typ

De

finitio

n u

nd

Initia

lisieru

ng

zug

leich

!

Feh

ler: „d

im“ ist ke

ine

Ko

nsta

nte

Page 100: Programmiersprache C Ingenieurinformatik

5

7.1

. Ve

kto

ren

7. Zu

samm

en

gese

tzte D

aten

type

n

Zu

griff a

uf e

inze

lne

Ele

me

nte

:

x[0] = 5.5;

Zuw

eisu

ng an

Ele

me

nt N

r. 0x[1] = y;

Zuw

eisu

ng an

Ele

me

nt N

r. 1x[k] = y;

(k+1

)-tes

Ele

me

nt d

es V

ekto

rs, k mu

ss

Inte

gervariab

leo

de

r -kon

stante

sein

Ein

ein

zeln

es E

lem

en

t x[k] de

s Ve

ktors kan

n w

ie e

ine

no

rmale

d

ou

ble

-Variab

le ve

rwe

nd

et w

erd

en

:

x[k] = x[3];

printf("Sechster Wert im Vektor: %f", x[5]);

if (x[i] > x[i+1])

printf("Groesser!\n");

Be

ach

te:

•In

de

x läuft vo

n 0

bis 9

9 (u

nd

nich

t etw

a von

1 b

is 10

0)

•In

de

x darf n

icht zu

groß

we

rde

n; x[3

91

] wird

vom

Co

mp

iler

nich

t erkan

nt!

6

7.1

. Ve

kto

ren

7. Zu

samm

en

gese

tzte D

aten

type

n

Teila

ufg

ab

en

/Fu

nk

tion

en

:

1)int einlesen(void)

-Zu

näch

st An

zahl d

er vo

rhan

de

ne

n M

essw

erte

abfrage

n-

Me

sswe

rte d

er R

eih

e n

ach e

inle

sen

, Ele

me

nte

x[0] b

is x[zahl-1

] be

lege

n-

Au

frufp

arame

ter: ke

ine

(void

)-

ckgabe

we

rt: An

zahl (in

t)

2)void ausgeben(int n)

-A

ufru

fparam

ete

r: n –

Zahl d

er e

inge

lese

ne

n M

essw

erte

-Fu

nktio

n m

uss w

issen

, wie

vie

le E

lem

en

te v

on

x tatsä

chlich

Me

sswe

rte sin

d

-R

ückgab

ew

ert: ke

ine

r (void

)

3)double mittelwert(int n)

-A

ufru

fparam

ete

r: n –

Zahl d

er e

inge

lese

ne

n M

essw

erte

-R

ückgab

ew

ert: M

ittelw

ert (d

ou

ble

)

4)double maximum(int n)

-A

ufru

fparam

ete

r: n –

Zahl d

er e

inge

lese

ne

n M

essw

erte

-R

ückgab

ew

ert: M

aximu

m (d

ou

ble

)

Page 101: Programmiersprache C Ingenieurinformatik

7

7.1

. Ve

kto

ren

7. Zu

samm

en

gese

tzte D

aten

type

n

#include <stdio.h>

#defineSIZE 100

inteinlesen(void);

voidausgeben(intn);

doublemittelwert(intn);

doublemaximum(intn);

doublex[SIZE];

intmain(void)

{

doublexmit, xmax; intanzahl;

anzahl = einlesen(); /* Messwerte eingeben */

ausgeben(anzahl); /* Messwerte ausgeben */

xmit = mittelwert(anzahl); /* Mittelwert berechnen */

xmax = maximum(anzahl); /* Maximum berechnen */

printf("Mittelwert = %f\n", xmit);

printf("Maximalwert = %f\n", xmax);

return0;

}

Ha

up

tpro

gra

mm

,

Fu

nk

tionmain

De

finitio

n e

ine

s Ve

kto

rs

mit 1

00

do

ub

le-E

lem

en

ten

8

7.1

. Ve

kto

ren

7. Zu

samm

en

gese

tzte D

aten

type

n

/*Es werden alle n Messwertein demVektorx[]

durchsucht; das Maximum wird zurückgegeben */

doublemaximum(intn)

{

doublemax;

inti;

max = x[0];

for(i=1; i<n; i++)

{

if(x[i] > max)

max = x[i];

}returnmax;

} Be

ispie

l: Fun

ktion

ma

xim

um

zur E

rmittlu

ng d

es m

ax. Me

sswe

rts.

Glo

ba

ler V

ek

tor x

[10

0] m

it Me

sswe

rten

,

Fu

nk

tion

spa

ram

ete

r n (A

nza

hl M

essw

erte

),

lok

ale

Va

riab

len

ma

x (M

ax

imu

m), i (Z

äh

ler)

Initia

lisieru

ng

: ma

x =

x[0

]

r alle

i vo

n 1

bis e

insch

ließ

lich (n

-1)…

x[i] >

ma

x?

JaN

ein

ma

x =

x[i]

ckg

ab

ew

ert d

er F

un

ktio

n: m

ax

Wa

s pa

ssiert b

ei n

==

0…

?

Page 102: Programmiersprache C Ingenieurinformatik

9

7.1

. Ve

kto

ren

7. Zu

samm

en

gese

tzte D

aten

type

n

Au

fga

be

:

•E

rstelle

n Sie

die

Strukto

gramm

e u

nd

C-Q

ue

lltexte

de

r feh

len

de

n

Fun

ktion

en

einlesen

, ausgeben

un

d mittelwert

!

•Ü

be

rsetze

n Sie

das G

esam

tpro

gramm

un

d te

sten

Sie e

s!

•W

as kön

nte

no

ch ve

rbe

ssert w

erd

en

? (Zum

Be

ispie

l die

Ein

gabe

d

er M

essw

erte

: Nich

t erst d

ie A

nzah

l ein

geb

en

un

d d

anach

alle

Me

sswe

rte, so

nd

ern

dire

kt alle M

essw

erte

ein

geb

en

un

d d

urch

E

ingab

e vo

n -1

be

en

de

n. D

as Pro

gramm

kann

dan

n d

ie A

nzah

l au

tom

atisch e

rmitte

ln…

)

•G

eb

en

Sie d

ie M

essw

erte

nich

t üb

er d

ie Tastatu

r ein

, son

de

rn

spe

iche

rn Sie

die

We

rte zu

näch

st in e

ine

r Textd

atei. R

ufe

n Sie

d

ann

Ihr P

rogram

m ü

be

r die

DO

S-Ein

gabe

auffo

rde

run

g auf u

nd

le

sen

Sie d

ie M

essw

erte

pe

r Ein

gabe

um

len

kun

g ein

!

10

Glie

de

run

g

7. Zu

samm

en

gese

tzte D

aten

type

n

Ka

pite

l 7 –

Zu

sam

me

ng

ese

tzte D

ate

nty

pe

n

7.1

Ve

kto

ren

7.2

So

rtiere

n e

ine

s Ve

kto

rs

7.3

Me

hrd

ime

nsio

na

le Fe

lde

r

7.4

Um

ga

ng

mit e

in-/zw

eid

ime

nsio

na

len

Feld

ern

7.5

Ze

iche

nk

ette

n, S

tring

s

Page 103: Programmiersprache C Ingenieurinformatik

11

7.2

. So

rtiere

n e

ine

s Ve

kto

rs

7. Zu

samm

en

gese

tzte D

aten

type

n

Au

fga

be

:

Erw

eite

rn Sie

das M

essw

ertp

rogram

mw

ie fo

lgt:

Nach

de

m E

inle

sen

de

r Me

sswe

rte so

llen

die

se zu

näch

st sortie

rt u

nd

erst d

anach

ausge

geb

en

we

rde

n!

•Sch

reib

en

Sie d

azu e

ine

Fun

ktion

void sortiere(int n)

•D

ie E

lem

en

te vo

n x m

üsse

n so

um

geo

rdn

et w

erd

en

, dass gilt:

x[0

] ≤x

[1] ≤

x[2

] ≤... ≤

x[n

-1]

(für alle

n E

lem

en

te)

•V

erw

en

de

n Sie

zum

Sortie

ren

kein

en

zwe

iten

(Hilfs-)V

ekto

r, so

nd

ern

füh

ren

Sie d

ie So

rtieru

ng d

irekt au

f de

n E

lem

en

ten

de

s Ve

ktors x[] d

urch

!

12

7.2

. So

rtiere

n e

ine

s Ve

kto

rs

7. Zu

samm

en

gese

tzte D

aten

type

n

Ide

e:

So

rtieru

ng

de

s V

ek

tors

mitte

ls „

Bu

bb

le-S

ort“

Ers

ter D

urc

hla

uf:

( 51

4 2

8 ) �

( 15

4 2

8 ) D

ie e

rste

nzw

ei E

lem

en

te v

erg

leic

he

n, ta

usch

en

( 1 5

42

8 ) �

( 1 4

52

8 )

( 1 4

52

8 ) �

( 1 4

25

8 )

( 1 4

2 5

8) �

( 1 4

2 5

8) R

eih

en

folg

e s

timm

t sch

on

, nic

ht ta

usch

en

Zw

eite

r Du

rch

lau

f:( 1

42

5 8

) �( 1

42

5 8

)

( 1 4

25

8 ) �

( 1 2

45

8 ) E

lem

en

teta

usch

en

( 1 2

45

8 ) �

( 1 2

45

8 )

( 1 2

4 5

8) �

( 1 2

4 5

8)

Dritte

r Du

rch

lau

f:( 1

24

5 8

) �( 1

24

5 8

) Im d

ritten

Du

rch

lau

fw

erd

en

ke

ine

Ele

me

nte

( 1 2

45

8 ) �

( 1 2

45

8 ) m

eh

r ve

rtau

sch

t;d

er A

lgo

rithm

us e

rke

nn

t, da

ss

( 1 2

45

8 ) �

( 1 2

45

8 ) d

er V

ekto

r jetz

t so

rtiert is

t un

d s

top

pt

( 1 2

4 5

8) �

( 1 2

4 5

8)

Die

rot m

ark

ierte

n

Ele

me

nte

we

rde

n

ve

rglich

en

un

d

gg

f. ve

rtau

scht

Page 104: Programmiersprache C Ingenieurinformatik

13

7.2

. So

rtiere

n e

ine

s Ve

kto

rs

7. Zu

samm

en

gese

tzte D

aten

type

n

voidsortiere(intn) /* x[] mittels Bubble-Sort sortieren */

{

inti; double

hilf; char

sortiert;

do

/* Schleife wiederholen, bis Vektor sortiert ist */

{

sortiert = 'j'; /* Annahme, x[] ist sortiert */

for(i = 1; i < n; i++)

{

if(x[i] < x[i-1])

{

hilf = x[i]; /* x[i], x[i-1] tauschen */

x[i] = x[i-1];

x[i-1] = hilf;

sortiert = 'n'; /* ...war nicht sortiert */

}

}

}while(sortiert == 'n');

}

Imp

lem

en

tieru

ng

de

s

Bu

bb

le-S

ort-A

lgo

rithm

us

14

Glie

de

run

g

7. Zu

samm

en

gese

tzte D

aten

type

n

Ka

pite

l 7 –

Zu

sam

me

ng

ese

tzte D

ate

nty

pe

n

7.1

Ve

kto

ren

7.2

So

rtiere

n e

ine

s Ve

kto

rs

7.3

Me

hrd

ime

nsio

na

le Fe

lde

r

7.4

Um

ga

ng

mit e

in-/zw

eid

ime

nsio

na

len

Feld

ern

7.5

Ze

iche

nk

ette

n, S

tring

s

Page 105: Programmiersprache C Ingenieurinformatik

15

7.3

. Me

hrd

ime

nsio

na

le Fe

lde

r

7. Zu

samm

en

gese

tzte D

aten

type

n

Pro

ble

m:

Es so

ll ein

C-P

rogram

m zu

m R

ech

ne

n m

it (2-, 3

-, me

hrd

ime

n-

sion

alen

) Matrize

n e

rstellt w

erd

en

. Bislan

g sind

abe

r nu

r e

ind

ime

nsio

nale

Ve

ktore

n b

ekan

nt.

An

we

nd

un

g von

Matrize

n: Lin

eare

Gle

ichu

ngssyste

me

, Finite

-E

lem

en

te-M

eth

od

e (se

hr gro

ße

Matrize

n!), D

reh

imp

uls/Träg-

he

itsmatrix, M

athe

matik/ G

eo

me

trie/C

om

pu

tergrafik u

sw.

(als M

atrix

)

Ein

e M

atrix be

sitzt Zeile

n u

nd

Spalte

n �

im C

-Pro

gramm

wird

e

ine

Date

nstru

ktur fü

r zwe

i-/me

hrd

ime

nsio

nale

Feld

er b

en

ötigt.

11

x4

x2

17

x8

x7

21

21

=⋅

+⋅

=⋅

+⋅

=

11

17

x x

42

87

2 1

16

7.3

. Me

hrd

ime

nsio

na

le Fe

lde

r

7. Zu

samm

en

gese

tzte D

aten

type

n

De

finitio

n e

ine

s zwe

idim

en

sion

ale

n Fe

lde

s:

double a[3][3];

Zugriff au

f ein

zeln

e E

lem

en

te:

a[0][0] = 5.5;

a[0][1] = 1.5;

a[1][0] = 0.5;

a[i][k] = 1.7;

mit

0 ≤

i < 3

un

d0

≤ k

<3

(i un

d k

sind

Va

riab

len

vo

m T

yp

Inte

ge

r)

Za

hl d

er Z

eile

nN

am

eD

ate

nty

pZ

ah

l de

r Sp

alte

n

Page 106: Programmiersprache C Ingenieurinformatik

17

7.3

. Me

hrd

ime

nsio

na

le Fe

lde

r

7. Zu

samm

en

gese

tzte D

aten

type

n

Ele

me

nte

in M

atrixform

:

An

ord

nu

ng im

Hau

ptsp

eich

er:

Die

Ma

trix w

ird ze

ilen

we

ise

im H

au

ptsp

eich

er a

bg

ele

gt!

18

7.3

. Me

hrd

ime

nsio

na

le Fe

lde

r

7. Zu

samm

en

gese

tzte D

aten

type

n

Be

ispie

le:

1)double b[2][3];

(nich

t qu

adratisch

–2

Zeile

n, 3

Spalte

n)

2)

De

finitio

n u

nd

gleich

zeitige

Initialisie

run

g:double b[2][3] = { {2.0,4.0,0.0}, {2.2,4.2,1.2} };

3)#define ZEILEN 1000

#define SPALTEN 500

double d[ZEILEN][SPALTEN];

4)double temp[10][10][10];

3-d

ime

nsio

na

les F

eld

–zu

m B

eisp

ielTe

mp

era

turfe

ld im

Ra

um

:

Jed

em

Gitte

rpu

nkt im

Ra

um

wird

ein

e Te

mp

era

tur zu

ge

ord

ne

t

5)double v[100][100][200][3];

(4 d

ime

nsio

nale

s Feld

)

Jed

em

Gitte

rpu

nkt im

Ra

um

we

rde

n 3

We

rte zu

ge

ord

ne

t –

z. B.

dre

i Ge

schw

ind

igke

itskom

po

ne

nte

n in

ein

em

Strö

mu

ng

sfeld

:

v[2][4][7][0]

vx

am P

un

kt x=2

, y=4

, z=7

v[2][4][7][1]

vy

am P

un

kt x=2

, y=4

, z=7

10

0 ×

10

0 ×

20

0 ×

3 =

6 ×

10

6E

lem

en

teSp

eich

erp

latzbe

darf 6

×1

06

×8

Byte

= 4

8 M

B

Ze

ilen

-u

nd

Sp

alte

na

nza

hl

sollte

n m

it Ko

nsta

nte

n

an

ge

ge

be

n w

erd

en

!

Page 107: Programmiersprache C Ingenieurinformatik

19

Glie

de

run

g

7. Zu

samm

en

gese

tzte D

aten

type

n

Ka

pite

l 7 –

Zu

sam

me

ng

ese

tzte D

ate

nty

pe

n

7.1

Ve

kto

ren

7.2

So

rtiere

n e

ine

s Ve

kto

rs

7.3

Me

hrd

ime

nsio

na

le Fe

lde

r

7.4

Um

ga

ng

mit e

in-/zw

eid

ime

nsio

na

len

Feld

ern

7.5

Ze

iche

nk

ette

n, S

tring

s

20

7.4

. Um

ga

ng

mit e

in-/zw

eid

ime

nsio

na

len

Feld

ern

7. Zu

samm

en

gese

tzte D

aten

type

n

Be

ispie

l 1: A

lle E

lem

en

te d

er M

atrix a auf 0

setze

n

Be

ispie

l 2: Zw

ei M

atrizen

add

iere

n: c =

a + b

Be

ispie

l 3: P

rüfe

n, o

b M

atrix a symm

etrisch

ist(sy

mm

etrisch

e M

atrize

n sin

d „

gu

tartig

“, sie h

ab

en

ree

lle

Eig

en

we

rte u

nd

N lin

ea

r un

ab

ng

ige

Eig

en

ve

kto

ren

…)

Be

ispie

l 4: M

atrix mit V

ekto

r mu

ltiplizie

ren

: y = a ×

x

Be

ispie

l 5: M

ultip

likation

von

zwe

i Matrize

n: c =

a ×b

#define N 10

double a[N][N], b[N][N], c[N][N];

double x[N], y[N];

Page 108: Programmiersprache C Ingenieurinformatik

21

Glie

de

run

g

7. Zu

samm

en

gese

tzte D

aten

type

n

Ka

pite

l 7 –

Zu

sam

me

ng

ese

tzte D

ate

nty

pe

n

7.1

Ve

kto

ren

7.2

So

rtiere

n e

ine

s Ve

kto

rs

7.3

Me

hrd

ime

nsio

na

le Fe

lde

r

7.4

Um

ga

ng

mit e

in-/zw

eid

ime

nsio

na

len

Feld

ern

7.5

Ze

iche

nk

ette

n, S

tring

s

22

7.5

. Ze

iche

nke

tten

, Strin

gs

7. Zu

samm

en

gese

tzte D

aten

type

n

Fra

ge

:

Wie

we

rde

n Ze

iche

nke

tten

(„Strings“) in

de

r Pro

gramm

iersp

rache

C

abge

spe

iche

rt un

d ve

rarbe

itet?

Erste

r An

satz:

char-V

ekto

r verw

en

de

n

charwort[5] = { 'H','a','l','l','o'};

inti;

for(i = 0; i < 5; ++i)

printf("%c", wort[i]);

Na

chte

ile:

•In

itialisieru

ng, A

usgab

e ist u

mstän

dlich

–vie

l Schre

ibarb

eit

•B

ei d

er B

earb

eitu

ng (z. B

. Au

sgabe

mitte

ls prin

tf), mu

ss man

sich m

erke

n, w

ie vie

le B

uch

stabe

n d

as Wo

rt be

sitzt.

Page 109: Programmiersprache C Ingenieurinformatik

23

7.5

. Ze

iche

nke

tten

, Strin

gs

7. Zu

samm

en

gese

tzte D

aten

type

n

s[0]

H72

0100 1000

s[1]

a97

0110 0001

s[2]

l108

0110 1100

s[3]

l108

0110 1100

s[4]

o111

0110 1111

s[5]

\0

00000 0000

rter w

erd

en

als Zeich

en

kette

n („Strin

gs“) abge

spe

iche

rt. Strings

be

sitzen

ein

ige B

eso

nd

erh

eite

n b

ezü

glich In

itialisieru

ng, Län

geu

nd

En

de

ken

nu

ng, sin

d ab

er im

We

sen

tliche

n n

orm

ale ch

ar-Ve

ktore

n:

char s[]="Hallo";

•E

rzeu

gt un

d in

itialisiert d

en

char-V

ekto

r s

•B

inäre

Nu

ll als En

de

ken

nu

ng,

bin

äre N

ull ≠

ASC

II-Zeich

en

'0'!

•A

nzah

l Ele

me

nte

:B

uch

stabe

nzah

l + 1

•Län

ge d

es V

ekto

rs wird

vom

Co

mp

iler

be

rech

ne

t –ü

be

r rech

te Se

ite b

estim

mt

•B

inäre

Nu

ll wird

als En

de

ken

nu

ng an

geh

ängt

Ein

Strin

g ist e

in ch

ar-V

ek

tor m

it ein

er b

inä

ren

Nu

ll zur E

nd

ek

en

nu

ng24

7.5

. Ze

iche

nke

tten

, Strin

gs

7. Zu

samm

en

gese

tzte D

aten

type

n

Be

ispie

l 1:

Zeich

en

'o' in

"Hallo

" du

rch 'e

' erse

tzen

(�"H

alle")

Be

ispie

l 2:

Au

sgabe

ein

es Strin

gs mitte

ls prin

tf

Be

ispie

l 3:

Ein

lese

n e

ine

s Strings vo

n d

er Tastatu

r

Be

ispie

l 4:

Kle

in-

in G

roß

bu

chstab

en

um

wan

de

ln

Be

ispie

l 5:

He

ade

rdate

i string.h

mit vie

len

Fun

ktion

en

zur

Arb

eit m

it Zeich

en

kette

n

Page 110: Programmiersprache C Ingenieurinformatik

25

7.5

. Ze

iche

nke

tten

, Strin

gs

7. Zu

samm

en

gese

tzte D

aten

type

n

#include <stdio.h>

#include <ctype.h>

intmain(void)

{

inti = 0;

intdiff = 'a'-'A';

chars[] = "Das ist ein Test!";

while(s[i] != 0)

{

if('a'<=s[i] && s[i]<='z')

s[i] = s[i] -diff;

++i;

}printf("%s", s);

return0;

}

Be

ispie

l 4:K

lein

-in

Gro

ßb

uch

stab

en

um

wa

nd

eln

:

26

7.5

. Ze

iche

nke

tten

, Strin

gs

7. Zu

samm

en

gese

tzte D

aten

type

n

Be

ispie

l 5: H

ea

de

rda

tei strin

g.h

•int strlen(str);

–G

ibt d

ie Län

ge e

ine

s Strings zu

rück, zäh

lt Zeich

en

bis zu

r En

de

ken

nu

ng

i = strlen("Hallo");

gibt 5

zurü

ck

(Mit b

inäre

r Nu

ll be

tigt de

r String 6

Ele

me

nte

im ch

ar-Ve

ktor!)

•int strcmp(str1, str2);

–G

ibt 0

zurü

ck, we

nn

be

ide

Zeich

en

kette

n gle

ich sin

d

–E

rgeb

nis ist >

0, w

en

n str1

lexikalisch grö

ße

r ist als str2

–E

rgeb

nis ist <

0, w

en

n str1

lexikalisch kle

ine

r ist als str2"z">"a" "ab"<"abc" "ad"<"af" "ac">"abc"

•V

iele

we

itere

Fu

nk

tion

en

–K

op

iere

n, A

nh

änge

n, U

nte

rteile

n vo

n Ze

iche

nke

tten

,Su

che

n in

Zeich

en

kette

n u

sw.

–V

ergl. O

nlin

e-H

ilfe zu

string.h

!

Page 111: Programmiersprache C Ingenieurinformatik

1

Ka

pite

l 8

Ad

resse

n u

nd

Zeige

r

2

Glie

de

run

g

8. A

dre

ssen

un

d Ze

iger

Ka

pite

l 8 –

Ad

resse

n u

nd

Zeige

r

8.1

De

finitio

n8

.2Ein

fach

e B

eisp

iele

8.3

Zeige

rarith

me

tik un

d V

ekto

ren

8.4

Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r8

.5M

essw

ertp

rogra

mm

, zwe

i Me

ssreih

en

8.6

Zeige

rarith

me

tik in V

ekto

rschre

ibw

eise

Page 112: Programmiersprache C Ingenieurinformatik

3

8.1

. De

finitio

n

8. A

dre

ssen

un

d Ze

iger

Au

fba

u d

es H

au

ptsp

eich

ers:

•D

er H

aup

tspe

iche

r be

steh

t aus e

ine

r lange

n Se

qu

en

z von

Sp

eich

erze

llen

(jew

eils e

in B

yte gro

ß)

•Je

de

Spe

iche

rzelle

be

sitzt ein

e e

ind

eu

tige N

um

me

r/Ad

resse

•E

ine

Variab

le in

ein

em

C-P

rogram

m b

ele

gt en

tspre

che

nd

ihre

s Typ

s ein

e fe

ste A

nzah

l von

Byte

s

Be

ispie

l: Variab

len

i, j vom

Typ „sh

ort“

•D

ie A

dre

ssen

de

r Va

riab

len

sind

nich

t

ab

solu

t festg

ele

gt –

sie ä

nd

ern

sich zu

m

Be

ispie

l be

im P

rog

ram

mn

eu

start

•D

er P

rog

ram

mie

rer h

at ke

ine

n E

influ

ss

da

rau

f, in w

elch

en

Sp

eich

erze

llen

die

Va

riab

len

lieg

en

4

8.1

. De

finitio

n

8. A

dre

ssen

un

d Ze

iger

Bish

er w

urd

e au

f de

n H

aup

tspe

iche

r (ind

irekt) ü

be

r Variab

len

zu-

gegriffe

n. N

un

folgt d

er (d

irekte

) Zugriff au

f be

stimm

te A

dre

ssen

:

•„Sch

reib

de

n W

ert 1

23

in d

ie in

t-Variab

le an

Ad

resse

10

00

!“„Lie

s de

n W

ert d

er sh

ort-V

ariable

n an

Ad

resse

10

04

!“

•N

ur d

ie K

om

bin

ation

von

Ad

resse

+ V

ariable

ntyp

ide

ntifizie

rt die

Sp

eich

erze

llen

ein

er V

ariable

n e

ind

eu

tig

•U

nte

r de

r „Ad

resse

ein

er V

ariable

n i“ ve

rsteh

en

wir d

ie A

dre

sse

de

r erste

n Sp

eich

erze

lle, w

o d

er W

ert vo

n i ge

spe

iche

rt ist

•U

m d

ie V

aria

ble

i au

f 45

34

zu se

tzen

, ha

be

n w

ir

bish

er d

ie Z

uw

eisu

ng

„i=4534;

“ verw

en

de

t

•N

un

we

rde

n w

ir dire

kt a

uf d

en

Ha

up

tspe

iche

r

zug

reife

n: „Sch

reib d

en W

ert 45

34

in d

iesh

ort-V

aria

ble a

n A

dresse 4

68

!“

Page 113: Programmiersprache C Ingenieurinformatik

5

8.1

. De

finitio

n

8. A

dre

ssen

un

d Ze

iger

Frage

n:

•W

ie e

rhä

lt ma

n d

ie A

dre

sse e

ine

r Va

riab

len

?

•W

ie ka

nn

ma

n e

ine

Ad

resse

zwisch

en

spe

iche

rn?

•W

ie lie

st/be

schre

ibt m

an

ein

e V

aria

ble

, de

ren

Ad

resse

be

kan

nt ist?

•W

elch

e V

orte

ile b

ring

t de

r dire

kte

Zu

griff a

uf d

en

Ha

up

tspe

iche

r?

6

shorti, j;

i = 4534;

j = 2233;

/* i hat den Wert 4534 */

/* &i hat den Wert 468 */

/* Der Typ von i ist short */

/* Der Typ von &i ist "Zeiger auf short" */

8.1

. De

finitio

n

8. A

dre

ssen

un

d Ze

iger

Wie

erh

ält m

an

die

Ad

resse

ein

er V

aria

ble

n?

•Ist i d

er N

ame

ein

er V

ariable

n, so

ist &i d

ie A

dre

sse d

er V

ariable

n

•D

er O

pe

rator &

ist de

r sog. „A

dre

ssop

erato

r“

•E

ine

Ad

resse

ist grun

dsätzlich

ein

e gan

ze Zah

l. Ein

e A

dre

sse ist

allerd

ings ke

ine

no

rmale

sho

rt-o

de

r int-Zah

l, man

sprich

t viel-

me

hr vo

n so

gen

ann

ten

„Zeige

rn“

Page 114: Programmiersprache C Ingenieurinformatik

7

Wie

kan

n m

an

ein

e A

dre

sse zw

ische

nsp

eich

ern

?

•Zu

m A

bsp

eich

ern

de

r Ad

resse

ein

er sh

ort-V

ariable

n b

en

ötigt m

ane

ine

Variab

le vo

m Typ

„Zeige

r auf sh

ort“, e

ine

sog. Ze

igervariab

le

•D

efin

ition

ein

er Ze

igervariab

len

(en

gl. „Po

inte

r“):

short *z;

au

f welch

en D

aten

typN

am

e der V

aria

blen

z ist Zeigerva

riab

le

•z „ze

igt auf“ e

ine

Variab

le vo

m Typ

sho

rt

•D

ie A

dre

sse d

er V

aria

ble

n i w

ird in

de

r Ze

ige

rva

riab

len

z ge

spe

iche

rt:

z = &i; /* z erhält Adresse von i zugewiesen */

•D

irekt n

ach

de

r De

finitio

n e

nth

ält z zu

chst e

ine

n zu

fällig

en

We

rt,

na

ch d

er Z

uw

eisu

ng

„zeig

t z au

f die

Va

riab

le i“

•Z

eig

erv

aria

ble

n sin

d w

ie a

nd

ere

Va

riab

len

: Sie

be

sitzen

ein

en

Na

me

n

un

d e

ine

n W

ert u

nd

kön

ne

n d

urch

Op

era

tore

n v

erä

nd

ert w

erd

en

8.1

. De

finitio

n

8. A

dre

ssen

un

d Ze

iger

8

8.1

. De

finitio

n

8. A

dre

ssen

un

d Ze

iger

Wie

liest/b

esch

reib

t ma

n e

ine

Va

riab

le, d

ere

n A

dre

sse b

eka

nn

t ist?

•U

m au

f ein

e V

ariable

zuzu

greife

n, d

ere

n A

dre

sse b

ekan

nt ist,

verw

en

de

t man

de

n O

pe

rator *

(sog. „In

ha

ltsop

erato

r“):

*z = 17;

��� �D

ie Zeigerva

riab

le z „zeigt a

uf“ ein

e bestim

mte V

aria

ble –

schreib

in d

iese Va

riab

le den

Wert 1

7!

j = *z;

�D

ie Zeigerva

riab

le z „zeigt a

uf“ ein

e bestim

mte V

aria

ble –

lies den

Wert d

ieser Va

riab

len u

nd

speich

ere ihn

in d

er Va

riab

len j!

Bea

chte:

De

r Op

era

tor *

be

sitzt versch

ied

en

e B

ed

eu

tun

ge

n:

•M

ultip

likatio

nso

pe

rato

r (x1 = 3 * y1;

)•

De

finitio

n e

ine

r Ze

ige

rvaria

ble

n (int*ptr;

)•

Inh

altso

pe

rato

r(y = *ptr;

)

��� �D

ie kon

krete Bed

eutu

ng

ergib

t sich jew

eils au

s dem

Zusa

mm

enh

an

g!

Page 115: Programmiersprache C Ingenieurinformatik

9

Glie

de

run

g

8. A

dre

ssen

un

d Ze

iger

Ka

pite

l 8 –

Ad

resse

n u

nd

Zeige

r

8.1

De

finitio

n8

.2Ein

fach

e B

eisp

iele

8.3

Zeige

rarith

me

tik un

d V

ekto

ren

8.4

Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r8

.5M

essw

ertp

rogra

mm

, zwe

i Me

ssreih

en

8.6

Zeige

rarith

me

tik in V

ekto

rschre

ibw

eise

10

8.2

. Einfa

che

Be

ispie

le

8. A

dre

ssen

un

d Ze

iger

Be

ispie

l 1:

Fun

ktion

„po

we

r“ zur B

ere

chn

un

g von

Po

ten

zen

; R

ückgab

e d

es E

rgeb

nisse

s mitte

ls Zeige

r (un

d n

icht p

er „re

turn

“ o

de

r üb

er e

ine

glob

ale V

ariable

)

#include<stdio.h>

voidpower(floatbasis, intexp, float*pErg);

intmain(void)

{

floatx1, x2, y; intn;

x1 = 3.0; n = 4;

power(x1, n, &y); printf("%f\n", y);

x2 = 3.75;

power(x2, 5, &y); printf("%f\n", y);

return0;

}

Page 116: Programmiersprache C Ingenieurinformatik

11

8.2

. Einfa

che

Be

ispie

le

8. A

dre

ssen

un

d Ze

iger

Be

ispie

l 2:

Fun

ktion

„qso

lve“ zu

m Lö

sen

qu

adratisch

er G

leich

un

-ge

n, R

ückgab

e b

eid

er

Nu

llstelle

n m

ittels Ze

iger (statt ü

be

r glob

ale

Variab

len

)

#include<stdio.h>

#include<math.h>

intqsolve(doublep, double q, double *x1, double *x2);

intmain(void)

{

double p, q, null1, null2;

printf("p eingeben: "); scanf("%lf", &p);

printf("q eingeben: "); scanf("%lf", &q);

if(qsolve(p, q, &null1, &null2) != 0)

printf("Nullstellen: %f, %f\n", null1, null2);

else

printf("Keine Nullstellen!\n");

return0;

}

12

8.2

. Einfa

che

Be

ispie

le

8. A

dre

ssen

un

d Ze

iger

Be

ispie

l 3:

Das fo

lgen

de

Pro

gramm

kann

oh

ne

Feh

ler ü

be

rsetzt w

erd

en

.N

ach d

em

Pro

gramm

start passie

rt allerd

ings Fo

lgen

de

s:

•M

anch

mal stü

rzt das P

rogram

m ab

•M

anch

mal arb

eite

t es sch

ein

bar ko

rrekt

•M

anch

mal w

ird e

in falsch

er W

ert au

sgege

be

n

#include<stdio.h>

intmain(void)

{

int*z;

*z = 5;

printf("*z = %d", *z);

return0;

}

Wo

liegt d

as P

rob

lem?

Page 117: Programmiersprache C Ingenieurinformatik

13

Glie

de

run

g

8. A

dre

ssen

un

d Ze

iger

Ka

pite

l 8 –

Ad

resse

n u

nd

Zeige

r

8.1

De

finitio

n8

.2Ein

fach

e B

eisp

iele

8.3

Zeige

rarith

me

tik un

d V

ekto

ren

8.4

Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r8

.5M

essw

ertp

rogra

mm

, zwe

i Me

ssreih

en

8.6

Zeige

rarith

me

tik in V

ekto

rschre

ibw

eise

14

8.3

. Zeige

rarith

me

tik un

d V

ekto

ren

8. A

dre

ssen

un

d Ze

iger

Zeige

rarith

me

tik: Fü

r Zeige

r gelte

n e

igen

e R

ech

en

rege

ln, d

ie vo

n d

en

arithm

eti-

sche

nR

ech

en

rege

ln fü

r „no

rmale

“ ganze

Zahle

n ab

we

iche

n.

12

3

23

4

11

1

99

9

X[0]

X[1]

X[2]

X[3]

1100

1101

1102

1103

1104

1105

1106

1107

shortx[4];

short*z1, *z2, *z3, *z4;

inti = 3;

1098

1099

/* Nach folgender Anweisung zeigt */

/* z4 vor den Beginndes Vektors */

/* x (Adresse 1098) –Vorsicht!! */

z4 = z1 –1;

z1 = &x[0]; /* z1 zeigt auf x[0] */

z2 = z1 + 1; /* z2 zeigt auf x[1] */

z3 = z1 + i; /* z3 zeigt auf x[i] */

Page 118: Programmiersprache C Ingenieurinformatik

15

8.3

. Zeige

rarith

me

tik un

d V

ekto

ren

8. A

dre

ssen

un

d Ze

iger

Die

Zeige

rarithm

etik ist b

ei d

er A

rbe

it mit V

ekto

ren

be

son

de

rs p

raktisch. So

lassen

sich se

hr e

infach

Ve

ktore

n „d

urch

laufe

n“:

inti, x[100];

int*ptr;

for(i = 0; i < 100; ++i)

{

/* Zeiger auf i-tesVektorelement: */

ptr= &x[0] + i;

/* Ausgabe des i-tenVektorelements: */

printf("%d\n", *ptr);

}

22

Be

ispie

l: Im V

ekto

r x solle

n d

ie Q

uad

ratzahle

n vo

n 0

2b

is 99

2

gesp

eich

ert w

erd

en

.

16

Glie

de

run

g

8. A

dre

ssen

un

d Ze

iger

Ka

pite

l 8 –

Ad

resse

n u

nd

Zeige

r

8.1

De

finitio

n8

.2Ein

fach

e B

eisp

iele

8.3

Zeige

rarith

me

tik un

d V

ekto

ren

8.4

Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r8

.5M

essw

ertp

rogra

mm

, zwe

i Me

ssreih

en

8.6

Zeige

rarith

me

tik in V

ekto

rschre

ibw

eise

Page 119: Programmiersprache C Ingenieurinformatik

17

doublepower(doublea, intk);

int

main(void)

{

double

x, z; int

n;

x = 3.0; n = 4;

z = power(x, n);

...}doublepower(doublea, intk)

{

int

i; double

y = 1.0;

for(i = 1; i <= k; i++)

y = y * a;

return

y;

}

8.4

. Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r

8. A

dre

ssen

un

d Ze

iger

Wird

ein

e „n

orm

ale“ V

ariable

als Param

ete

r an e

ine

Fun

ktion

üb

erge

be

n,

dan

n w

ird ste

ts de

r We

rt de

r Variab

len

üb

erge

be

n. D

er W

ert d

er V

aria-b

len

wird

be

im A

ufru

f in e

ine

n lo

kalen

Param

ete

r de

r Fun

ktion

kop

iert.

18

8.4

. Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r

8. A

dre

ssen

un

d Ze

iger

Pro

ble

m:

Die

Fun

ktion

„qu

adrat“ so

ll die

erste

n n

Ele

me

nte

ein

es V

ekto

rs, d

er als P

arame

ter ü

be

rgeb

en

wird

, mit Q

uad

ratzahle

n b

ele

gen

Bei d

er Üb

erga

be ein

es Vekto

rs a

n ein

e Fun

ktion

re es zu

au

fwen

dig

, den

gesa

mten

Vek-

tor

mit a

ll seinen

Elemen

ten zu

ko

pieren

.

Ma

n ü

berg

ibt sta

ttdessen

einen

Zeig

er au

f da

s An

fan

gselem

ent.

Die a

ufg

erufen

e Fun

ktion

greift

da

nn

mittels Zeig

erarith

metik

au

f den

Orig

ina

l-Vekto

rzu

.

voidquadrat(int*ptr, intn);

intmain(void)

{

intx[100];

quadrat(&x[0], 50);

...}voidquadrat(int*ptr, intn)

{

inti;

for(i = 0; i < n; i++)

*(ptr+ i) = i * i;

}

Page 120: Programmiersprache C Ingenieurinformatik

19

Glie

de

run

g

8. A

dre

ssen

un

d Ze

iger

Ka

pite

l 8 –

Ad

resse

n u

nd

Zeige

r

8.1

De

finitio

n8

.2Ein

fach

e B

eisp

iele

8.3

Zeige

rarith

me

tik un

d V

ekto

ren

8.4

Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r8

.5M

essw

ertp

rogra

mm

, zwe

i Me

ssreih

en

8.6

Zeige

rarith

me

tik in V

ekto

rschre

ibw

eise

20

8.5

. Me

sswe

rtpro

gram

m, zw

ei M

essre

ihe

n

8. A

dre

ssen

un

d Ze

iger

Au

fgab

e:

Bislan

g verarb

eite

t das M

essw

ertp

rogram

me

ine

ein

-ze

lne

Me

ssreih

em

it max. 1

00

Me

sswe

rten

. Die

Me

ss-re

ihe

wird

in e

ine

m glo

bale

n V

ekto

r double x[100]

abge

spe

iche

rt.

Das P

rogram

m so

ll so e

rwe

itert w

erd

en

, dass e

ine

zwe

ite

Me

ssreih

em

it eb

en

falls max. 1

00

Me

sswe

rten

verw

altet

we

rde

n kan

n.

Page 121: Programmiersprache C Ingenieurinformatik

21

8.5

. Me

sswe

rtpro

gram

m, zw

ei M

essre

ihe

n

8. A

dre

ssen

un

d Ze

iger

#defineDIM 100

doublex[DIM], y[DIM];

doublemittelwertx(intn);

doublemittelwerty(intn);

intmain(void)

{

double xmittel, ymittel;

intanzahlx, anzahly;

anzahlx= einlesenx();

anzahly= einleseny();

xmittel= mittelwertx(anzahlx);

ymittel= mittelwerty(anzahly);

return0;

}

doublemittelwertx(intn)

{

inti; double z = 0.0;

for(i = 0; i < n; i++)

z = z + x[i];

returnz = z / (double)n;

}double mittelwerty(intn)

{

inti; double z = 0.0;

for(i = 0; i < n; i++)

z = z + y[i];

returnz / (double)n;

}

Va

rian

te 1: Zw

ei Vekto

ren x[1

00

], y[10

0] u

nd

sepa

rate Fu

nktio

nen

für

beid

e Vekto

ren. ��� �

Die Fu

nktio

nen

mittelw

ertx, mittelw

ertyu

ntersch

eiden

sich

nu

r in ein

em ein

zigen

Bu

chsta

ben

…!

22

8.5

. Me

sswe

rtpro

gram

m, zw

ei M

essre

ihe

n

8. A

dre

ssen

un

d Ze

iger

Va

rian

te 2: N

ur ein

e Fun

ktion

einlesen

, mittelw

ert, sortiere u

sw. D

er zu

bea

rbeiten

de V

ektor w

ird a

ls Pa

ram

eter an

die Fu

nktio

nen

üb

ergeb

en.

intmain(void)

{

doublex[SIZE], y[SIZE]; intanz1, anz2;

printf("Messreihe1 eingeben...\n"); anz1 = einlesen(&x[0]);

printf("Messreihe2 eingeben...\n"); anz2 = einlesen(&y[0]);

sortiere(&x[0], anz1); sortiere(&y[0], anz2);

printf("Messreihe1...\n"); ausgeben(&x[0], anz1);

printf("Messreihe2...\n"); ausgeben(&y[0], anz2);

printf("Mittelwert 1: %.2f\n", mittelwert(&x[0], anz1));

printf("Mittelwert 2: %.2f\n", mittelwert(&y[0], anz2));

printf("Maximum 1: %.2f\n", maximum(&x[0], anz1));

printf("Maximum 2: %.2f\n", maximum(&y[0], anz2));

return0;

}D

urch

die Ü

berg

ab

e als P

ara

meter kö

nn

en d

ie glo

ba

len

Va

riab

len d

ou

ble x[1

00

] un

d y[1

00

] vermied

en w

erden

!

Page 122: Programmiersprache C Ingenieurinformatik

23

8.5

. Me

sswe

rtpro

gram

m, zw

ei M

essre

ihe

n

8. A

dre

ssen

un

d Ze

iger

/* Alle n Messwerte ausgeben */

voidausgeben(double*mw, intn)

{

inti;

for(i = 0; i < n; ++i)

printf("\tMesswert%d: %.2f\n", i + 1, *(mw+i));

printf("\n");

}/* Maximalen Messwert ermitteln und zurueckgeben*/

doublemaximum(double*mw, intn)

{

doublemax; inti;

max= *(mw+0);

for(i = 1; i < n; i++)

if(*(mw+i) > max) max = *(mw+i);

returnmax;

}

Beisp

iel: Fun

ktion

en „a

usg

eben

“ u

nd

„ma

ximu

m“ m

it Vekto

r als

Fun

ktion

spa

ram

eter

24

Glie

de

run

g

8. A

dre

ssen

un

d Ze

iger

Ka

pite

l 8 –

Ad

resse

n u

nd

Zeige

r

8.1

De

finitio

n8

.2Ein

fach

e B

eisp

iele

8.3

Zeige

rarith

me

tik un

d V

ekto

ren

8.4

Ve

ktore

n a

ls Fun

ktion

spa

ram

ete

r8

.5M

essw

ertp

rogra

mm

, zwe

i Me

ssreih

en

8.6

Zeige

rarith

me

tik in V

ekto

rschre

ibw

eise

Page 123: Programmiersprache C Ingenieurinformatik

25

8.6

. Zeige

rarith

me

tik, Ve

ktorsch

reib

we

ise

8. A

dre

ssen

un

d Ze

iger

Ve

ktorsch

reib

we

ise:

Be

i de

r Arb

eit m

it Zeige

rvariable

n, sp

ezie

ll be

i Zeige

rarithm

etik im

Zu

samm

en

han

g mit V

ekto

ren

, kön

ne

n m

anch

e O

pe

ration

en

auch

an

de

rs gesch

rieb

en

we

rde

n (o

hn

e Ä

nd

eru

ng d

er Fu

nktio

n!):

voidfill_n(int*x, intn);

intmain(void)

{

intx[100];

fill_n(&x[0], 100);

return0;

}void fill_n(int*x, intn)

{

inti;

for(i = 0; i < n; ++i)

*(x+i) = i;

}

voidfill_n(intx[], intn);

intmain(void)

{

intx[100];

fill_n(x, 100);

return0;

}voidfill_n(intx[], int n)

{

inti;

for(i = 0; i < n; ++i)

x[i] = i;

}

26

8.6

. Zeige

rarith

me

tik, Ve

ktorsch

reib

we

ise

8. A

dre

ssen

un

d Ze

iger

Zusa

mm

en

fassu

ng:

intx[100];

&x[0]

od

er

xZe

iger au

f (bzw

. Ad

resse

von

) x[0]

&x[i]

od

er

x+i

Zeige

r auf (b

zw. A

dre

sse vo

n) x[i]

x[0]

od

er

*x

Inh

alt von

x[0], W

ert d

es A

nfan

gsele

me

nts

x[i]

od

er

*(x+i)

Inh

alt von

x[i], We

rt de

s i-ten

Ele

me

nts

voidfunc(int*feld);

voidfunc(intfeld[]);

Üb

ergab

e e

ine

s Zeige

rsan

ein

e Fu

nktio

n

Es ha

nd

elt sich w

irklich n

ur u

m versch

ieden

e Schreib

weisen

mit d

erselben

B

edeu

tun

g. In

sbeso

nd

ere bed

eutet d

ie Fun

ktion

sdekla

ratio

n in

der

letzten Zeile n

icht, d

ass h

ier ein ko

mp

letter Vekto

r üb

ergeb

en w

ird –

au

ch in

diesem

Fall h

an

delt es sich

um

die Ü

berg

ab

e eines Zeig

ers!

Page 124: Programmiersprache C Ingenieurinformatik

American Standard Code for Information Interchange (ASCII)

Quelle: Wikipedia (Artikel: „American Standard Code for Information Interchange“)