Você está na página 1de 12

$OJRULWPRVH3URJUDPDomR

Autoria: Jeanne Dobgenski

Tema 05
Funes

7HPD
Funes
Autoria: Jeanne Dobgenski
Como citar esse documento:
DOBGENSKI, Jeanne. Algoritmos e Programao: Funes. Caderno de Atividades. Valinhos: Anhanguera Educacional, 2014.

ndice

CONVITELEITURA PORDENTRODOTEMA
Pg. 3 Pg. 3

ACOMPANHENAWEB
Pg. 13 Pg. 14

Pg. 18 Pg. 19

Pg. 19 Pg. 20

 $QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGLFDGD HP OtQJXD
SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
CONVITELEITURA
Para o desenvolvimento de software, o conceito de modularizao tem ampla abrangncia e vrias aplicaes,
mas um objetivo comum sempre destacado: facilitar o entendimento de um sistema computacional. Dentre os vrios
tipos de modularizao, a organizao de cdigo fonte em Linguagem C pode ser feita com funes e tambm com o
uso de arquivos diversos. Neste tema apresentado o uso de funes, mostrando que estas podem ser utilizadas para
efetuar operaes com o retorno de um nico valor, ou sem retorno de valor, ou, ainda, alterando o valor de variveis
do programa. Existe muito sobre funes para ser aprendido e aplicado em programao. Elas so parte fundamental
de um bom cdigo computacional. Portanto, atente-se ao texto e aproveite o momento para conhecer mais sobre a
linguagem de programao C, desenvolvendo sua capacidade de implementar programas computacionais.

PORDENTRODOTEMA
Funes

Um mdulo pode ser considerado uma unidade de um todo que composto de outras unidades semelhantes.
Visualize um exemplo simples: um sof modular composto de pequenas unidades que, unidas, formam o sof no formato
e na quantidade de lugares desejados. Se considerar que um programa computacional o todo mencionado, como seria
possvel modulariz-lo? Ou seja, como transformar o todo em algumas (ou muitas) unidades que se complementam e,
juntas, formam o todo inicial? Isso pode ser feito por meio de funes.

'HQHVH IXQomR FRPR XP FRQMXQWR GH LQVWUXo}HV HVWDEHOHFLGDV SDUD FXPSULU XPD WDUHID SDUWLFXODU DV TXDLV VmR
agrupadas numa unidade que possui um nome para referenci-la (MIZRAHI, 2007, p. 110).

Relembre o que voc tem estudado at agora nessa disciplina. Voc j trabalhou com funes; lembra-se de quais? A
mais importante e fundamental em linguagem C a funo main() (principal) que deve existir em todos os programas

PORDENTRODOTEMA
computacionais desenvolvidos nessa linguagem, pois nela esto as instrues e, inclusive, outras funes que sero
executadas no programa. Outras funes j usadas so a printf() e scanf(): a primeira imprime informao e a segunda
a l. Veja que, uma vez conhecida a sintaxe de uso da funo printf(), por exemplo, no h necessidade de conhecer as
instrues internas dessa funo, pois se o objetivo imprimir um texto e/ou o contedo de uma varivel, usa-se essa
funo fornecida pela linguagem C (e que est na biblioteca padro stdio.h) sem existir a necessidade de implementar
XPDQRYDIXQomRTXHUHDOL]HDPHVPDWDUHIDGHLPSULPLUDOJRQDWHOD2XVHMDXPDIXQomRHIHWXDXPDWDUHIDHVSHFtFD
e, quando bem implementada, poder ser reutilizada num outro programa computacional. Essa prtica pode levar o
desenvolvedor a criar a sua prpria biblioteca de funes.

Considere o caso de programas computacionais distintos que realizem, em algum momento, a multiplicao de um
vetor por outro. A diferena de um programa para outro est no contedo dos vetores e na quantidade de elementos que
SRVVXHP$QDODVRSHUDo}HVPDWHPiWLFDVHQYROYLGDVQHVVHFiOFXORVmRDVPHVPDVQmR"(QWmRVHSRUH[HPSOR
for desenvolvida uma funo que multiplique dois vetores de dimenses quaisquer de tipo de dados real, ela poder ser
utilizada em todo programa computacional que precise dessa operao.

Sobre modularizao de algoritmos, pode-se dizer que:

 Sempre possvel dividir problemas grandes e complicados em problemas menores e de soluo mais simples
(subalgoritmos ou funes).

 A utilizao de subalgoritmos importante para:

Subdividir algoritmos complexos.

Estruturar algoritmos.

Modularizar sistemas.

 Diferentes partes dos programas podem ser independentes de forma que possam ser escritas e testadas
separadamente.

 7UHFKRV GR SURJUDPD SRGHP VHU HVFULWRV D P GH VHUHP UHXWLOL]DGRV YiULDV YH]HV QR PHVPR SURJUDPD RX HP
outros.

 Permite-se que programas complexos possam ser montados a partir de unidades menores j prontas e testadas.


PORDENTRODOTEMA
Para usufruir de tantos benefcios que a modularizao de programas oferece, importante compreender que a funo
principal (main() em C) deve ser uma coletnea estruturada e ordenada de subalgoritmos/funes, e no conter todo o
cdigo do programa.

Ento, relembre, do Tema 1, como a sintaxe geral de uma funo (Tabela 5.1).

Tabela 5.1 Sintaxe de uma funo em C


tipo nome_da_funcao(declarao dos parmetros)

declarao de variveis;

instruo_2;

instruo_3;

................

instruo_n;

return valor_var_tipo;

}
Fonte: desenvolvido pela autora.

Essa sintaxe vale para quando o desenvolvedor quiser criar sua prpria funo em C. Suponha, por exemplo, a criao
de uma funo que calcule o valor percentual entre duas variveis reais (x e y). O cdigo apresentado na Tabela 5.2
mostra uma possvel soluo.

Tabela 5.2([HPSORGHGHQLomRGHXPDIXQomRHP/LQJXDJHP&

PORDENTRODOTEMA

RDWSRUFHQWDJHP RDW[RDW\

RDWS 

LI \ 

S   [\ 

return (p);

Fonte: desenvolvido pela autora.

9HULTXHTXHQDIXQomRDSUHVHQWDGDRWLSRGDIXQomRpUHDO RDWSRUFHQWDJHP TXHVLJQLFDTXHRUHWRUQRGDIXQomR


ser um valor real. Os parmetros dessa funo so dois valores reais, chamados internamente de x e y. Os valores
assumidos destes no so conhecidos nesse momento. Ento esses dois valores sero informados quando a funo
for utilizada no programa (veja na Tabela 5.3). Isso chamado de passagem de valor, ou seja, um (ou mais) valor
LQIRUPDGRSDUDDIXQomRDPGHTXHHODRXWLOL]HQRVFiOFXORVHRXSURFHGLPHQWRVTXHUHDOL]DUiLQWHUQDPHQWH1HVVD
VLWXDomRDIXQomRQmRDOWHUDHVVHYDORUQDYDULiYHORULJLQDOHODQDYHUGDGHDSHQDVXVDDLQIRUPDomR9HULTXHDLQGD
que foi criada dentro da funo uma varivel local real p com valor inicial zero. Lembre-se de que as variveis locais
so vlidas somente onde esto declaradas. Isso implica que, aps o trmino da execuo da funo, as posies
de memria utilizadas para armazenar os valores das variveis locais tornam-se disponveis outra vez, pois elas so
GHVWUXtGDVOLEHUDGDVDSyVDQDOL]DomRGDIXQomR ` 6LJQLFDWDPEpPTXHTXDQGRDIXQomRIRUH[HFXWDGDQRYDPHQWH
DVYDULiYHLVORFDLVVHUmRUHGHQLGDVHRVVHXVYDORUHVLQLFLDOPHQWHHVWDUmRLQGHQLGRV$SUy[LPDLQVWUXomRGDIXQomR
SRUFHQWDJHP pXPWHVWHDIXQomRYHULFDVHRYDORUSDVVDGRSDUD\pGLIHUHQWHGH]HURVHHVVHWHVWHIRUYHUGDGHLUR
ento calculada a porcentagem de x em relao a y, cujo resultado armazenado em p. Veja que, se o valor passado
para y for zero, ento a porcentagem de qualquer nmero em relao a zero zero; logo, nenhuma operao ser
HIHWXDGDFRPS3RUPDIXQomRUHWRUQDRYDORUFRQWLGRHPS9HULTXHTXHSpXPDYDULiYHOUHDOFRQGLomRIXQGDPHQWDO
SRLVDIXQomRIRLGHQLGDSDUDUHWRUQDUXPYDORUUHDO

PORDENTRODOTEMA
Observe na Tabela 5.3 a utilizao da funo porcentagem() numa funo principal.

Tabela 5.3 Exemplo de chamada de funo na main().

int main()

RDW a, b, perc;

D E 

SHUF SRUFHQWDJHP DE 

printf("%6.2f representa %6.2f %% de %6.2f.\n", a, perc, b);

return (0);

Fonte: desenvolvido pela autora.

Na funo principal so declaradas trs variveis reais, sendo que perc receber o retorno da funo, ou seja, o percentual
que a representa em relao a b. Na chamada da funo porcentagem, passado o valor de a para x que est no
FyGLJRLQWHUQRGDIXQomRHGHIRUPDDQiORJDGHESDUD\(QWmRDRHVFUHYHUSHUF SRUFHQWDJHP DE VXEHQWHQGH
VHTXHSHUF SRUFHQWDJHP  &RQVLGHUDQGRVHTXHQRFyGLJRGDIXQomRSRUFHQWDJHP [ H\ RWHVWHVHUi
YHUGDGHLURHS    ORJRRUHWRUQRGDIXQomRpTXHVHUiDUPD]HQDGRHPSHUFGHQWURGHPDLQ $
sada na tela do computador ser: 10 representa 200% de 5.

Se os cdigos das Tabelas 5.2 e 5.3 forem escritos em um arquivo e processados por um compilador C, obtm-se o
resultado esperado. No entanto, a ordem em que so escritas as funes porcentagem() e main() em um arquivo pode
provocar um erro de compilao. Por exemplo, ao escrever a funo main() antes da funo porcentagem(), obtm-

PORDENTRODOTEMA
se um erro de compilao. Realmente, ao se apresentar ao compilador a funo main() que faz referncia ao uso da
funo porcentagem() ainda no compilada, o compilador interrompe o processamento por no ter como resolver o
embarao criado. A soluo adotada, na maioria dos casos, respeitar a ordem das funes conforme a hierarquia de
UHODFLRQDPHQWRHQWUHHODV DVIXQo}HVTXHXVDPRXWUDVIXQo}HVDSDUHFHPDRQDOGDOLVWDJHP 

Essa soluo, embora seja fcil implementar, impe uma regra de escrita das funes que pode se tornar enfadonha
ao pensar em sistemas com algumas centenas de funes e alguns milhares de linhas. A pergunta que se faz para
esse problema : ser que, no momento em que o compilador processar a funo main(), no possvel inform-lo de
que a funo porcentagem() existe e que em breve ele vai encontr-la no cdigo fonte? A resposta para essa pergunta,
felizmente, sim. Para resolver esse problema de uma forma que no seja necessrio se preocupar com a ordem das
funes, precisa-se do domnio dos conceitos de GHQLomR e GHFODUDomR de itens de uma linguagem de programao.

Na Tabela 5.4, mostra-se o problema proposto com a funo main() escrita antes da funo porcentagem(). No entanto,
observe no incio do programa que h uma linha de cdigo com o cabealho da funo porcentagem() seguida de um
ponto e vrgula. A essa linha, associa-se a ideia de declarar ao compilador que a funo porcentagem() existe, embora
seu cdigo (corpo da funo) ainda no seja apresentado. Note que a GHFODUDomR da funo traz todas as informaes
de que o compilador precisa para interpretar a chamada existente na funo main(). A declarao da funo apresenta
o nome da funo, sua lista de parmetros e o tipo de retorno, permitindo ao compilador checar a sintaxe de escrita e a
compatibilidade de tipos existentes na chamada da funo porcentagem() dentro de main().


PORDENTRODOTEMA
Tabela 5.4 Programa completo usando a funo porcentagem()
 3URJUDPDFRPSXWDFLRQDOTXHGHFODUDXPDIXQomRSRUFHQWDJHP
HID]XVRGHODQDIXQomRSULQFLSDO 

#include<stdio.h>

RDWSRUFHQWDJHP RDW[RDW\ 

int main()
{
RDWDESHUF
D E 
SHUF SRUFHQWDJHP DE 
printf("%6.2f representa %6.2f %% de %6.2f\n", a, perc, b);
return (0);
}

RDWSRUFHQWDJHP RDW[RDW\
{
RDWS 
LI \
S   [\ 
return (p);
}

Fonte: desenvolvido pela autora.

'H IRUPD VLPSOLFDGD SRGHVH HQWHQGHU FRPR FRQFHLWR GH GHFODUDomR GH XPD IXQomR D DWLWXGH GH DSUHVHQWDU DR
FRPSLODGRURFDEHoDOKRGDIXQomR$GHQLomRGHXPDIXQomRSHGHDGHVFULomRGRVHXFRUSRRXVHMDRFyGLJRTXH
GHQHRTXHDIXQomRUHDOL]DHPWHUPRVGHFRPDQGRVGDOLQJXDJHP

2XWUDTXHVWmRLPSRUWDQWHDVHUREVHUYDGDpTXHXPDIXQomRTXHWHQKDXPWLSRGHQLGRFRPRLQWRDWGRXEOHFKDU
UHWRUQDUiXPYDORUDSHQDVSRUPHLRGHUHWXUQ 8PDIXQomRGHQLGDFRPRYRLGQmRUHWRUQDUiYDORUPDVH[HFXWDUiDV

PORDENTRODOTEMA
instrues realizando alguma atividade que no necessite, necessariamente, retornar valor. Um exemplo desse tipo de
aplicao a impresso de informaes na tela. Veja a funo apresentada na Tabela 5.5.

Tabela 5.5 Funo que imprime os valores de um vetor de inteiros


  )XQomR DX[LOLDU TXH LPSULPH RV YDORUHV LQWHLURV GH XP YHWRU GH
WDPDQKRTXDOTXHUDSUHVHQWDQGRRVQXPDOLQKD 

void imprime_vetor(int tam, int vet[])

int i;

IRU L LWDPL

printf(%d , vet[i]);

} // end funcao
Fonte: desenvolvido pela autora.

Essa funo no retorna valor, mas executa as instrues para imprimir o contedo de um vetor na tela. Observe que
essa funo poder ser usada por qualquer programa, em razo de sua implementao ser bem genrica.

Lembra-se de que o valor de uma varivel armazenado numa posio de memria, certo? Quando executada
alguma operao que altera o valor de uma varivel, o que ocorre de fato que esse valor foi alterado na posio de
memria que ocupa. Quando os valores so passados por valor numa funo, eles so copiados para os parmetros da


PORDENTRODOTEMA
funo e se forem alterados, apenas as cpias so afetadas, deixando as variveis originais com seus valores intactos.
No entanto, h outra forma de passar valor para uma funo, chamada de passagem por referncia. Nesse caso, o
endereo de memria da varivel original passado para a funo e toda a alterao que for efetuada com a varivel
QDIXQomRpIHLWDQRHQGHUHoRGHPHPyULDGDYDULiYHORULJLQDOPRGLFDQGRVHXYDORU(VVHWLSRGHIXQomRWHPPXLWD
utilidade, pois pode alterar o valor de vrias variveis (retornando, sem o uso de return, muitos valores diferentes).

Na Tabela 5.6 apresentado um programa que chama uma funo troca() que muda os valores de duas variveis, ou
seja, a funo troca altera os valores das variveis originais que so passadas nessa funo.

Tabela 5.6 Funo que imprime os valores de um vetor de inteiros


 3URJUDPDFRPSXWDFLRQDOTXHGHFODUDXPDIXQomRWURFDHID]XVR
dela na funo principal alterando o contedo das variveis passadas
FRPRSDUkPHWURVSDUDHVVDIXQomR 
#include<stdio.h>
YRLGWURFD RDW [RDW \ 
int main()
{
RDWDE
D 
E 
SULQWI 9DORUHVLQLFLDLVGHD IHE I?QDE 
troca(&a, &b);
SULQWI 9DORUHVQDLVGHD IHE I?QDE 
}

YRLGWURFD RDW [RDW \


{
RDWWHPS

  WHPS  [   DUPD]HQD R YDORU TXH HVWi HP [ QXPD YDULiYHO
temporria
 [  \FRORFD\HP[
 \ WHPSFRORFD[HP\
}



PORDENTRODOTEMA
Fonte: adaptado de Schildt (1996, p. 141).

A principal diferena a ser observada na passagem por referncia que a funo recebe o endereo da varivel para
alterar o contedo que est nesse endereo. Por isso, na chamada da funo troca, os parmetros so passados usando-
se & antes da varivel, para indicar o endereo que ela ocupa na memria, assim como ocorre com o scanf(). O scanf()
l um dado e o armazena numa varivel, no ? Ento, para isso ele precisa saber o endereo de memria que a varivel
ocupa para l colocar o dado lido. Na funo troca algo semelhante ocorre. So informados os endereos de memria de
DHEGHQLGRVQDIXQomRPDLQ SDUDTXHRVFRQWH~GRVDUPD]HQDGRVVHMDPHQFRQWUDGRVHDOWHUDGRV,QWHUQDPHQWH
na funo troca, os parmetros x e y que receberam os endereos de memria de a e b, respectivamente, agora
SUHFLVDPXVDURFRQWH~GRTXHHVWiGHQWURGHVVHHQGHUHoR,VVRpIHLWRFRPRXVRGH RXVHMDVHIRULPSUHVVRQD
WHOD R FRQWH~GR GH [ DSHQDV DSDUHFHUi XP HQGHUHoR GH PHPyULD H VH IRU LPSUHVVR [ DSDUHFHUi R FRQWH~GR
DUPD]HQDGRQHVVHHQGHUHoR IDoDHVVDYHULFDomR 3RULVVRSDUDHIHWXDUFiOFXORVFRPRVYDORUHVDUPD]HQDGRVGHYH
VHXVDUR DQWHVGDYDULiYHOTXHFRQWpPXPHQGHUHoRGHPHPyULD

Outra informao importante a de que quando um array (vetor ou matriz) usado como argumento de uma funo,
ou seja, passado para uma funo, apenas o endereo passado em vez de uma cpia inteira ser criada. Ento,
SDUDHVVHWLSRGHYDULiYHODSDVVDJHPVHUiVHPSUHSRUUHIHUrQFLDRTXHVLJQLFDTXHVHDOJXPDDOWHUDomRIRUIHLWDQR
SDUkPHWURFRUUHVSRQGHQWHDPRGLFDomRVHUiHIHWXDGDQRHQGHUHoRGHPHPyULDFRQVHTXHQWHPHQWHQRDUUD\RULJLQDO

A leitura do Livro-Texto da disciplina fundamental para consolidar o seu aprendizado. Existe muito mais a ser aprendido
sobre funes. Dedique-se sua instruo!


ACOMPANHENAWEB
Tutorial sobre funes

 Acesse este bom tutorial sobre funes apresentado pelos professores W. Celes e J. L. Rangel.
Disponvel em: <http://www.ic.unicamp.br/~ra069320/PED/MC102/1s2008/Apostilas/Cap04.pdf>. Acesso em: 1
jul. 2014.

)XQo}HVGLVSRQLELOL]DGRSHORGHSDUWDPHQWRGH&LrQFLDGD&RPSXWDomR
 Leia um bom material sobre funes disponibilizado pelo departamento de Cincia da
Computao, Instituto de Cincias Exatas da Universidade Federal de Minas Gerais.
Disponvel em: <http://homepages.dcc.ufmg.br/~rodolfo/aedsi-2-10/Funcoes/funcoes.html>. Acesso em: 1 jul.
2014.

3URJUDPDomRHP&

 Veja esta apresentao que trata de programao em C, disponibilizada pelo prof. Vanini do
Instituto de Computao da UNICAMP.
Disponvel em: <http://www.ic.unicamp.br/~vanini/mc202/apresentacoes/aula2.pdf>. Acesso em: 1 jun. 2014.

8PDLQWURGXomRjVIXQo}HVHPOLQJXDJHP&

 Assista aula 28 da srie que apresenta uma introduo s funes em linguagem C.


Disponvel em: KWWSVZZZ\RXWXEHFRPZDWFK"Y <TUJ0HR!. Acesso em: 2 jun. 2014.

Tempo: 09:56.



AGORAASUAVEZ
Instrues:
Agora, chegou a sua vez de exercitar seu aprendizado. A seguir, voc encontrar algumas questes de mltipla
escolha e dissertativas. Leia cuidadosamente os enunciados e atente-se para o que est sendo pedido.
4XHVWmR

Calcule o valor de sada dos elementos da matriz C dado pelo cdigo a seguir e considere os valores das matrizes A e B para
efetuar o clculo.

IRU L LL

IRU M MM

&>L@>M@ %>L@>M@$>M@>L@

A B
1 4 7 1 4 7
2 5 8 2 5 8
3 6 9 3 6 9


AGORAASUAVEZ
4XHVWmR

&ODVVLTXHDVVHJXLQWHVDUPDo}HVHPYHUGDGHLUDV 9 RXIDOVDV ) HGHSRLVDVVLQDOHDDOWHUQDWLYDTXHFRUUHVSRQGHjVHTXrQFLD


correta de indicaes.

I A passagem por valor copia o valor de um argumento no parmetro formal da funo, e as alteraes feitas nos parmetros
da funo no tem nenhum efeito nas variveis originais usadas para cham-la.

II Na passagem por referncia, o endereo de um argumento copiado no parmetro. Dentro da funo, o endereo usado
SDUDDFHVVDURDUJXPHQWRUHDOXWLOL]DGRQDFKDPDGD,VVRVLJQLFDTXHDOWHUDo}HVIHLWDVQRSDUkPHWURDIHWDPDYDULiYHORULJLQDO
usada para chamar a funo.

III Um array, quando passado como argumento para uma funo, sempre passado por referncia, ou seja, seu endereo de
memria informado e qualquer alterao no parmetro que o recebe afetar o valor original do vetor.

a) V, F, V.

b) V, F, F.

c) F, V, F.

d) F, F, V.

e) V, V, V.



AGORAASUAVEZ
4XHVWmR
$QDLVHDIXQomRDVHJXLUHPDUTXHDDWHUQDWLYDTXHDSUHVHQWDDUHVSRVWDFRUUHWD
void operacao_com_matrizes()
{
int i, j, k;
IRDW$>@>@%>@>@&>@>@
HBPDWUL] $ 
HBPDWUL] % 
IRU L LL
IRU M MM
IRU N NN
&>L@>M@ $>L@>N@ %>N@>M@
imprime_matriz(3, 3, C);
} // end funcao
&RQVLGHUDQGRDHLWXUDGH$H%FRPRVGDGRVDVHJXLUTXDRYDRUGDPDWUL]&"

A B C
1 4 7 1 4 7
2 5 8 2 5 8
3 6 9 3 6 9


AGORAASUAVEZ
a)

30 66 102
36 81 126
42 96 150
b)

C
30 36 42
66 81 96
102 126 150

c)

C
102 66 30
126 81 36
150 96 42

d)

C
42 36 30
96 81 66
150 126 102

e)

C
30 102 66
36 126 81
42 150 96



AGORAASUAVEZ
4XHVWmR

Implemente um programa em C que tenha uma funo que inicialize um vetor de inteiros com o valor 1 em todas as posies e
que tenha outra funo que imprima o contedo de um vetor. A funo principal deve declarar o vetor com o tamanho 10, chamar
DIXQomRGHLPSUHVVmRGRYHWRUFKDPDUDIXQomRGHLQLFLDOL]DomRHSRUPFKDPDUQRYDPHQWHDIXQomRGHLPSUHVVmRGRYHWRU

4XHVWmR

Implemente um programa em C que tenha uma funo que calcule o quadrado de um nmero inteiro. A funo principal dever
imprimir o valor e o seu quadrado

FINALIZANDO
Neste tema foi introduzido o conceito de funes em programao considerando-as um conjunto de instrues
estabelecidas para cumprir uma tarefa particular, sendo agrupadas numa unidade que possui um nome para referenci-
las.

As funes podem retornar um nico valor por meio de return(), podem no retornar valor (funes do tipo void) e podem
alterar os valores de variveis que sejam passadas por referncia numa funo.

Alm disso, importante compreender que o uso de funes modulariza o programa, torna-o mais simples de ser
operado e entendido, alm de possibilitar a reutilizao de funes em outros programas computacionais.


REFERNCIAS
CELES, W.; RANGEL, J. L. Funes. Instituto de Computao. UNICAMP. Disponvel em: <http://www.ic.unicamp.br/~ra069320/
PED/MC102/1s2008/Apostilas/Cap04.pdf>. Acesso em: 1 jul. 2014.
DE ALUNO PARA ALUNO. Programar em C Introduo Funes Aula 28. Vdeo. Disponvel em: <https://www.youtube.com/
ZDWFK"Y <TUJ0HR!. Acesso em: 2 de jul. 2014.
DEPARTAMENTO DE CINCIA DA COMPUTAO. Algoritmos e Estruturas de Dados I Funes. Instituto de Cincias Exatas
da Universidade Federal de Minas Gerais. Disponvel em: <http://homepages.dcc.ufmg.br/~rodolfo/aedsi-2-10/Funcoes/funcoes.
html>. Acesso em 01 jul de 2014.
MIZRAHI, Victorine Viviane. Treinamento em Linguagem C. 1. ed. So Paulo: Pearson, 2007. Livro-Texto 192.
PIVA JUNIOR, Dilermando; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de M.; BIANCHI, Francisco. Algoritmos e
Programao de Computadores. Rio de Janeiro: Elsevier, 2012. Livro-Texto 633.
SCHILDT, Herbert. C, completo e total. So Paulo: Makron Books, 1996.
VANINI, Fernando. Estrutura de um Programa. Apresentao. Instituto de Computao da UNICAMP. Disponvel em: <http://
www.ic.unicamp.br/~vanini/mc202/apresentacoes/aula2.pdf>. Acesso em 01 jun. de 2014.

GLOSSRIO
'HQLomRDGHQLomRGHXPDIXQomRFRQVLVWHQDGHVFULomRGRVHXFRUSRRXVHMDRFyGLJRTXHGHQHRTXHDIXQomR
realiza em termos de comandos da linguagem.

'HFODUDomRGHIRUPDVLPSOLFDGDSRGHVHHQWHQGHUFRPRFRQFHLWRGHGHFODUDomRGHXPDIXQomRDDWLWXGHGHDSUH-
sentar ao compilador o cabealho da funo.

Parmetro: em programao, parmetro de uma funo o nome da varivel (com um tipo associado) que receber
um valor do argumento passado quando a funo chamada.


GLOSSRIO
Passagem por valor: mtodo que copia o valor de um argumento no parmetro formal da funo. Assim, as alteraes
feitas nos parmetros da funo no tm nenhum efeito nas variveis usadas para cham-la (SCHILDT, 1996, p. 140).

Passagem por referncia: a segunda forma de passar argumentos para uma funo. Neste mtodo, o endereo de
um argumento copiado no parmetro. Dentro da funo o endereo usado para acessar o argumento real utilizado
QDFKDPDGD,VVRVLJQLFDTXHDOWHUDo}HVIHLWDVQRSDUkPHWURDIHWDPDYDULiYHOXVDGDSDUDFKDPDUDIXQomR 6&+,/'7
1996, p. 140).

GABARITO
4XHVWmR

Resposta:
C
0 2 4
-2 0 2
-4 -2 0
4XHVWmR

Resposta: Alternativa E.

4XHVWmR

Resposta: Alternativa A.

4XHVWmR
Resposta: Uma possvel soluo.


 3URJUDPDFRPSXWDFLRQDOTXHGHFODUDDVIXQo}HVGHLQLFLDOL]DomRGHXPYHWRUGHLQWHLURVHRXWUDTXHLPSULPHRFRQWH-
~GRGHXPYHWRUGHLQWHLURV(VVDVIXQo}HVVmRFKDPDGDVQDIXQomRSULQFLSDO 
#include<stdio.h>
void imprime_vetor(int tam, int vet[]);
void inicializa_vetor_unitario(int tam, int vet[]);
int main()
{
LQWW 
int vetor[t];
imprime_vetor(t, vetor);
inicializa_vetor_unitario(t, vetor);
imprime_vetor(t, vetor);
return (0);
}
 )XQomRDX[LOLDUTXHLPSULPHRVYDORUHVLQWHLURVGHXPYHWRUGHWDPDQKRTXDOTXHUDSUHVHQWDQGRRVQXPDOLQKD 
void imprime_vetor(int tam, int vet[])
{
int i;
IRU L LWDPL
printf(%d , vet[i]); // impresso dos elementos sem pular linha
SULQWI ?Q SXODXPDOLQKDDRQDOGDLPSUHVVmR
} // end funcao



 )XQomRDX[LOLDUTXHLQLFLDOL]DXPYHWRUGHLQWHLURVFRPRYDORUHPWRGDVDVSRVLo}HVVHQGRRYHWRUGHWDPDQKR
TXDOTXHU 
void inicializa_vetor_unitario(int tam, int vet[])
{
int i;
IRU L LWDPL
YHW>L@ 
} // end funcao
4XHVWmR
Resposta: Uma possvel soluo
 3URJUDPDFRPSXWDFLRQDOTXHFDOFXODHDSUHVHQWDRTXDGUDGRGHXPQ~PHURLQWHLUR 

#include <stdio.h>

int sqr(int x);

void main()
{
LQWW 

printf(%d %d, sqr(t), t);


}

 )XQomRTXHFDOFXODHUHWRUQDRYDORUGRTXDGUDGRGHXPQ~PHURLQWHLUR 

int sqr(int x)
{
[ [ [
return(x);
} // end funcao



Você também pode gostar