14.03.2015 Views

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Mensagem();<br />

}<br />

void Mensagem (void)<br />

{<br />

printf ("Ola! Eu estou vivo.\n");<br />

}<br />

Usan<strong>do</strong> nossos conhecimentos de funções, podemos agora eliminar de vez aquela irritante mensagem de aviso que o<br />

compila<strong>do</strong>r tem nos <strong>da</strong><strong>do</strong>, muitas vezes, desde o início <strong>do</strong> nosso curso! Se quisermos que a função retorne algo,<br />

devemos usar a declaração return. Se não quisermos, basta declarar a função como ten<strong>do</strong> tipo-de-retorno void.<br />

Devemos lembrar agora que a função main() é uma função e como tal devemos tratá-la. O compila<strong>do</strong>r acha que a<br />

função main() deve retornar um inteiro. Isto pode ser interessante se quisermos que o sistema operacional receba um<br />

valor de retorno <strong>da</strong> função main(). Se assim o quisermos, devemos nos lembrar <strong>da</strong> seguinte convenção: se o programa<br />

retornar zero, significa que ele terminou normalmente, e, se o programa retornar um valor diferente de zero, significa<br />

que o programa teve um termino anormal. Se não estivermos interessa<strong>do</strong>s neste tipo de coisa, basta declarar a função<br />

main como retornan<strong>do</strong> void.<br />

As duas funções main() abaixo são váli<strong>da</strong>s e não geram mensagens de aviso:<br />

main (void)<br />

{<br />

....<br />

return 0;<br />

}<br />

void main (void)<br />

{<br />

....<br />

}<br />

Pronto. Estamos livres <strong>da</strong>quelas mensagens de aviso.<br />

7.5 - Arquivos-Cabeçalhos<br />

Arquivos-cabeçalhos são aqueles que temos man<strong>da</strong><strong>do</strong> o compila<strong>do</strong>r incluir no início de nossos exemplos e que<br />

sempre terminam em .h. Já vimos exemplos como stdio.h, conio.h, string.h. Eles, na ver<strong>da</strong>de, não possuem os<br />

códigos completos <strong>da</strong>s funções. Eles só contêm protótipos de funções. É o que basta. O compila<strong>do</strong>r lê estes protótipos<br />

e, basea<strong>do</strong> nas informações lá conti<strong>da</strong>s, gera o código correto. O corpo <strong>da</strong>s funções cujos protótipos estão no arquivocabeçalho,<br />

no caso <strong>da</strong>s funções <strong>do</strong> próprio C, já estão compila<strong>da</strong>s e normalmente são incluí<strong>da</strong>s no programa no<br />

instante <strong>da</strong> "linkagem". Este é o instante em que to<strong>da</strong>s as referências a funções cujos códigos não estão nos nossos<br />

arquivos fontes são resolvi<strong>da</strong>s, buscan<strong>do</strong> este código nos arquivos de bibliotecas.<br />

Se você criar algumas funções que queira aproveitar em vários programas futuros, ou módulos de programas, você<br />

pode escrever arquivos-cabeçalhos e incluí-los também.<br />

Suponha que a função 'int EPar(int a)', <strong>do</strong> segun<strong>do</strong> exemplo <strong>da</strong> página c720.html seja importante em vários<br />

programas, e desejemos declará-la num módulo separa<strong>do</strong>. No arquivo de cabeçalho chama<strong>do</strong> por exemplo de<br />

'funcao.h' teremos a seguinte declaração:<br />

int EPar(int a);<br />

O código <strong>da</strong> função será escrito num arquivo a parte. Vamos chamá -lo de 'funcao.c'. Neste arquivo teremos a<br />

definição <strong>da</strong> função:<br />

int EPar (int a)<br />

{<br />

if (a%2) /* Verifica se a e divisivel por <strong>do</strong>is */<br />

return 0;<br />

else<br />

return 1;<br />

}<br />

Por fim, no arquivo <strong>do</strong> programa principal teremos o programa principal. Vamos chamar este arquivo aqui de<br />

'princip.c'.<br />

#include <br />

#include "funcao.h"<br />

main ()<br />

{<br />

Pág. 50

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!