modularização de programas parte i...
TRANSCRIPT
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
MÉ
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
MÉ
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
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
çõ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
•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.