28
SSC0101 - ICC1 – Teórica Introdução à Ciência da Computação I Modularização de Programas Parte I Prof. Vanderlei Bonato: [email protected] Prof. Claudio Fabiano Motta Toledo: [email protected]

Modularização de Programas Parte I [email protected]/images/6/6a/Aula11_Modularização_de_ProgramasP1... · 3 9 27 81 243 729 2187 ... A função deverá somar todos

Embed Size (px)

Citation preview

SS

C01

01 -

ICC

1 –

Teó

rica

Intr

oduç

ão à

Ciê

ncia

da

Com

puta

ção

I

Mod

ular

izaç

ãode

Pro

gram

asP

arte

I

Pro

f. V

ande

rleiB

onat

o: v

bona

to@

icm

c.us

p.br

Pro

f.C

laud

ioF

abia

no M

otta

Tol

edo:

cla

udio

@ic

mc.

usp.

br

27/4

/201

12

Sum

ário

•M

odul

ariz

ação

de p

rogr

amas

•S

ub-r

otin

as e

m a

lgor

itmos

•F

unçõ

es e

m li

ngua

gem

C–

Ret

urn

–V

oid

•D

ecla

raçõ

es d

e F

unçõ

es

Mod

ular

izaç

ãode

pro

gram

as

•D

ivis

ão d

o pr

ogra

ma

em s

ub-r

otin

as (

proc

edim

ento

s) e

fu

nçõe

s bu

scan

do m

elho

rar

seu

dese

mpe

nho

e fa

cilit

ar

sua

man

uten

ção.

•E

ssas

sub

-rot

inas

e fu

nçõe

s co

ntêm

inst

ruçõ

es

espe

cífic

as q

ue p

odem

ser

exe

cuta

das

vária

s ve

zes

pelo

pro

gram

a pr

inci

pal.

•S

ub-r

otin

a ou

pro

cedi

men

to n

ão r

etor

na v

alor

par

a o

prog

ram

a pr

inci

pal a

o fin

al d

a ex

ecuç

ão.

•F

unçõ

es r

etor

nam

um

val

or p

ara

o pr

ogra

ma

prin

cipa

l ao

fina

l da

exec

ução

.

Sub

-Rot

inas

em

Alg

oritm

os

•S

UB

-RO

TIN

A <

nom

e_ro

tina>

(<lis

ta_p

aram

etro

s>)

......

.F

IM_S

UB

_RO

TIN

A<

nom

e_ro

tina>

•S

UB

-RO

TIN

A <

nom

e_ro

tina>

(<lis

ta_p

aram

etro

s>)

......

.R

ET

OR

NE

<va

lor>

FIM

_SU

B_R

OT

INA

<no

me_

rotin

a>

27/4

/201

14

Sub

-Rot

inas

em

Alg

oritm

os•

Exe

mpl

o:A

LGO

RIT

MO

DE

CLA

RE

sal

,aum

NU

RIC

OLE

IA s

al

aum

←ca

lcul

o(sa

l)sa

l ←sa

l +au

mF

IM_A

LGO

RIT

MO

SU

B-R

OT

INA

cal

culo

(sal

NU

RIC

O)

DE

CLA

RE

perc

, val

or N

UM

ÉR

ICO

LEIA

perc

valo

r ←

sal*

per/

100

RE

TO

RN

E v

alor

FIM

_SU

B_R

OT

INA

cal

culo

27/4

/201

15

Fun

ções

em

ling

uage

m C

27/4

/201

16

<tip

o_re

torn

ado>

<no

me_

funç

ão>

(<lis

ta_d

os_p

aram

etos

>)

{<

decl

araç

ões>

<in

stru

ções

>}

Exe

mpl

o:in

t fac

toria

l(in

tn)

/* c

abeç

alho

da

funç

ão*/

{

/* in

ício

do

corp

o da

funç

ão*/

inti

,pro

duct

= 1

;

for

(i=2;

i<=

n; +

+i)

prod

uct*

= i;

retu

rn p

rodu

ct;

}

Ret

urn

•A

s fu

nçõe

s re

torn

am u

m r

esul

tado

que

dev

e se

r do

mes

mo

tipo

para

o q

ual a

funç

ão fo

i dec

lara

da.

<tip

o_re

torn

ado

> <

nom

e_fu

nção

>(<

lista

_dos

_par

amet

os>

)

int

fact

oria

l(in

tn);

•O

com

ando

retu

rné

resp

onsá

vel p

or e

ncer

rar

a ex

ecuç

ão d

a fu

nção

e r

etor

nar

o va

lor

daqu

ele

tipo.

retu

rnpr

oduc

t;

27/4

/201

17

Ret

urn

•S

e um

tipo

não

ées

peci

ficad

o pa

ra u

ma

funç

ão,

o tip

oin

tse

ráo

defa

ult.

27/4

/201

18

int a

ll_ad

d(in

ta,i

ntb)

{in

tc;

....

retu

rn(a

+b+

c);

}

all_

add(

inta

,int

b){

intc

;...

.re

turn

(a+

b+c)

;}

⇔ ⇔⇔⇔

Ret

urn

27/4

/201

19

•O

val

or r

etor

nado

éco

nver

tido,

se

nece

ssár

io,

para

o ti

po r

etor

nand

o pe

la fu

nção

float

add

(in

ta,i

ntb)

{in

tsom

a;so

ma

= a

+b;

retu

rnso

ma;

}

Ret

urn

•R

ecom

enda

-se

limita

r a

funç

ão p

ara

que

tenh

a um

úni

core

turn

visa

ndo

faci

litar

a

com

pree

nsão

da

funç

ão.

•T

odav

ia, o

uso

de

mai

s qu

e um

retu

rnta

mbé

m

pode

torn

ar o

cód

igo

mai

s le

gíve

l.

•D

esta

form

a, a

qua

ntid

ade

dere

turn

em u

ma

funç

ão d

eve

faci

litar

o e

nten

dim

ento

e a

m

anut

ençã

o do

cód

igo.

27/4

/201

110

Ret

urn

27/4

/201

111

Voi

d

•A

s su

b-ro

tinas

na

lingu

agem

C p

odem

ser

en

cara

das

toda

s co

mo

funç

ões.

•A

pal

avra

res

erva

davo

idna

dec

lara

ção

de u

ma

sub-

rotin

a in

dica

que

se

trat

a de

um

a fu

nção

qu

e nã

o re

torn

a va

lor.

•O

uso

de

void

no lu

gar

de u

ma

lista

de

parâ

met

ros

indi

ca q

ue a

funç

ão n

ão u

tiliz

a ar

gum

ento

s (li

sta

de p

arâm

etro

s).

27/4

/201

112

Voi

d

•E

xem

plos

:vo

id n

adaf

az(v

oid)

{ }

void

wrt

_end

ereç

o(vo

id){

prin

tf(“%

s\n%

s\n%

s\n%

s\n%

s\n\

n”,

“**

****

****

****

****

****

****

”,“

***

S

AN

TA

CLA

US

*”,

“**

* N

OR

TH

PO

LE

*”,

“**

* E

AR

TH

*”

,“

****

****

****

****

****

****

**”)

;} 27

/4/2

011

13

Voi

d•

Os

trec

hos

abai

xo s

ão e

quiv

alen

tes:

void

func

() ⇔

void

func

(voi

d)

•A

dec

lara

ção

abai

xo, c

onsi

dera

ndo

a lin

guag

em C

tr

adic

iona

l, si

gnifi

ca q

ue o

núm

ero

de a

rgum

ento

s da

fu

nção

não

éco

nhec

ido.

int f

unc(

);

•Is

so o

corr

e pe

lo fa

to d

evo

idnã

o se

r um

a pa

lavr

a re

serv

ada

na li

ngua

gem

C tr

adic

iona

l.

27/4

/201

114

Dec

lara

ções

de

funç

ões

27/4

/201

115

•E

xem

plos

:flo

at fu

nc(x

, y)

/* C

tra

dici

onal

*/

intx

,flo

aty;

{...

<co

rpo_

da_f

unçã

o>...

}

float

func

(intx

,flo

aty)

/* A

NS

I C t

radi

cion

al *

/

{...

<co

rpo_

da_f

unçã

o>...

}

Dec

lara

ções

de

funç

ões

•E

xem

plo:

a c

ham

ada

test

e(1)

ser

áex

ecut

ada

da

mes

ma

form

a na

s fu

nçõe

s de

clar

adas

aba

ixo?

27/4

/201

116

intt

este

(x)

doub

lex;

{...} in

ttes

te(d

oubl

ex)

{...}

Dec

lara

ções

de

funç

ões

•A

s de

clar

açõe

s de

funç

ões

são

gera

das

de

vária

s fo

rmas

par

a o

com

pila

dor:

–Q

uand

o a

funç

ão é

invo

cada

–Q

uand

o a

funç

ão é

defin

ida

–Q

uand

o a

funç

ão é

expl

icita

men

te d

ecla

rada

–Q

uand

o o

prot

ótip

o da

funç

ão é

decl

arad

o

27/4

/201

117

Dec

lara

ções

de

funç

ões

•U

m p

rotó

tipo

da fu

nção

indi

ca a

o co

mpi

lado

r o

núm

ero

e o

tipo

de a

rgum

ento

s qu

e de

vem

ser

pas

sado

s pa

ra a

fu

nção

e o

tipo

de

valo

r qu

e de

ve s

er r

etor

nado

pel

a fu

nção

.

<tip

o_re

torn

ado

> <

nom

e_fu

nção

>(<

lista

_dos

_par

amet

os>

);

•A

list

a do

s pa

râm

etro

s ap

rese

nta

os ti

pos

sepa

rado

s po

r ví

rgul

a, o

nde

os id

entif

icad

ores

são

opc

iona

is.

float

func

(int,

float

); ⇔

float

func

(intx

, flo

at y

);

27/4

/201

118

Dec

lara

ções

de

funç

ões

•S

e um

a fu

nção

, por

exe

mpl

o,fu

nc(x

) é

cham

ada

ante

s de

sua

dec

lara

ção,

def

iniç

ão o

u pr

otót

ipo,

o

com

pila

dor

assu

me

a de

clar

ação

aba

ixo

com

ode

faul

tin

t fun

c();

•A

mai

oria

dos

com

pila

dore

s pr

ecis

a co

nhec

er o

s tip

os d

e re

torn

o e

os p

arâm

etro

s, a

ntes

que

o

prog

ram

a pr

inci

pal f

aça

uma

cham

ada

àsu

b-ro

tina.

27/4

/201

119

Dec

lara

ções

de

funç

ões

•P

rogr

amas

mai

ores

teria

m g

rand

e qu

antid

ade

de

linha

s in

icia

lmen

te d

edic

adas

às

funç

ões

e pr

oced

imen

tos

até

se c

hega

r à

funç

ãom

ain(

).

•A

lém

dis

so, f

icar

ia c

ada

vez

mai

s di

fícil

man

ter

as

funç

ões

na o

rdem

cor

reta

de

acor

do c

om s

ua

cham

ada

pelo

pro

gram

a pr

inci

pal.

•A

ling

uage

m C

per

mite

que

pro

tótip

os d

e fu

nçõe

s se

jam

dec

lara

dos

ante

s do

pro

gram

a pr

inci

pal.

27/4

/201

120

Dec

lara

ção

de fu

nçõe

s

27/4

/201

121

Dec

lara

ções

de

funç

ões

void

prn

_hea

ding

(voi

d){

prin

tf(“\

n:::

A T

AB

LE O

F P

OW

ER

S ::

:\n\n

”);

} void

prn

_tbl

_of_

pow

ers(

intn

){

inti

,j;fo

r(i=

1; i<

=n;

++

i){fo

r(j=

1; j<

=n;

++

j)if(

i==

j)pr

intf(

“%ld

”,po

wer

(i,j))

;el

se prin

tf(“%

9ld”

,pow

er(i,

j));

putc

har(

‘\n’);

}} 27

/4/2

011

22

void

pow

er(in

tm,i

ntn)

{in

ti;

long

pro

duct

= 1

;

for(

i=1;

i<=

n; +

+i){

prod

uct*

=m

;

retu

rn p

rodu

ct;

}

Dec

lara

ções

de

funç

ões

27/4

/201

123

Dec

lara

ções

de

funç

ões

•E

xem

plos

1 e

2: S

aída

27/4

/201

124

::: A

TA

BLE

OF

PO

WE

RS

::::

11

11

11

1

24

816

3264

128

39

2781

243

729

2187

......

..

Exe

rcíc

io I

•U

sand

o al

gorit

mo,

crie

um

a su

b-ro

tina

que

rece

ba tr

ês n

úmer

os in

teiro

s a,

be

cse

ndo

am

aior

que

1. A

funç

ão d

ever

áso

mar

todo

s os

in

teiro

s en

tre

be

cqu

e se

jam

div

isív

eis

por

a (in

clus

ive

be

c) e

ret

orna

r o

resu

ltado

par

a a

funç

ão p

rinci

pal.

27/4

/201

125

Exe

rcíc

io II

•C

rie u

m c

ódig

o us

ando

ling

uage

m C

par

a im

prim

ir os

val

ores

da

funç

ão f(

x) n

o in

terv

alo

[0,3

] . O

val

or d

e x

deve

per

corr

er o

inte

rval

o co

m p

asso

s de

tam

anho

0.1

. Um

a fu

nção

de

verá

ser

impl

emen

tada

par

a re

torn

ar o

s va

lore

s de

f(x)

. Os

valo

res

de a

, b e

c s

ão r

eais

e

deve

m s

er p

assa

dos

àfu

nção

via

par

âmet

ros.

f(x)

= a

x2+

bx+

c.

27/4

/201

126

27/4

/201

127

Ref

erên

cias

Asc

enci

oA

FG

, Cam

pos

EA

V. F

unda

men

tos

de p

rogr

amaç

ão d

e co

mpu

tado

res.

São

Pau

lo :

Pea

rson

Pre

ntic

eH

all,

2006

. 385

p.

Kel

ley,

A.;

Poh

l, I.,

A B

ook

onC

:pro

gram

min

gin

C. 4

ªE

diçã

o.

Mas

sach

uset

ts:P

ears

on, 2

010,

726

p.

Ker

nigh

an, B

.W.;

Ritc

hie,

D.M

. C, A

Lin

guag

em d

e P

rogr

amaç

ão:

padr

ão A

NS

I. 2ª

Edi

ção.

Rio

de

Jane

iro: C

ampu

s, 1

989,

290

p.

FIM

Aul

a 11