quinta-feira, 14 de fevereiro de 2008

Anatomia do programa em C.

No tópico "C - Meu primeiro programa!" apresentei um programa simples que dizia "Estou vivo....!" para quem mexia com ele!
Vamos entender o seu funcionamento.



001:  #include <stdio.h>
002:
003:  int main(int argc, char *argv[])
004:  {
005:    printf("Estou vivo....!");
006:    return 0;
007:  }



Quando você executa um programa no sistema operacional, dentre aquele amontoado de código de máquina, existe um especial, que indica onde o sistema operacional deverá iniciar a execução do programa.
A linguagem C marca esse ponto com a função main, a qual pode ser vista na linha 3. A palavra reservada int que precede o main é o tipo de retorno da função. Isso indica que o main deverá retornar um valor inteiro. Veja na linha 6 o que está acontecendo... O main retorna para o sistema operacional o valor 0 por meio da palavra reservada return.
Voltando a linha 3, após o main, estão presentes os argumentos da função. Esses argumentos aparecem entre parênteses e são separados por vírgulas. Existirá um momento oportuno onde mostrarei como esses argumentos podem ser explorados.
Na linha 4, é aberta uma chave que marca o início da função main. Na linha 7 a chave que fecha, marca o fim da função.
Na realidade as chaves marcam um bloco de comandos, nesse caso um bloco de comandos
da função main, e elas existirão aos montes em seus programas. Acostume-se a elas e lembre-se que para cada chave aberta deverá existir uma fechada.
A única linha que faz algo realmente sensível é a 5, a qual contém a chamada a função printf. Veja que o argumento da função printf "Estou vivo....!" é o que vemos quando executamos o programa. Altere o argumento para "Estou corrompendo o seu sistema de arquivos...", compile e execute o programa novamente. Pode executar... Será muito, muito divertido!
O que aconteceu? Seu sistema foi corrompido? Não! Claro que não! Você está produzindo somente mensagens que o programa fornece ao usuário.
A função printf faz parde da biblioteca stdio.h. stdio vem de standard input/output e é nessa biblioteca que estão declaradas as funções de entrada e saída padrões do C. Para ter acesso a a elas, utilizamos a diretiva #include apresentada na linha 1.
Acho que estendemos demais nesse tópico. Para finalizá-lo você é capaz de responder as seguintes perguntas?

1. Qual o comando que exibe mensagens aos usuários?
2. Em qual biblioteca estão localizadas as funções de entrada de dados?
3. O que pode significar função main (main function)?
4. Quando você usará os argumentos da função main?
5. A função main retorna sempre zero?
6. A mensagem que um programa fornece reflete fielmente o que está sendo executado por ele?

2 comentários:

Unknown disse...

muito bom, estou aprendendo muito com os seus posts, continue!!

Johann disse...

1. Qual o comando que exibe mensagens aos usuários?

printf

2. Em qual biblioteca estão localizadas as funções de entrada de dados?

stdio.h

3. O que pode significar função main (main function)?

O inicio do programa

4. Quando você usará os argumentos da função main?

Em momento oportuno...

5. A função main retorna sempre zero?

Nao, retorna sempre inteiros.

6. A mensagem que um programa fornece reflete fielmente o que está sendo executado por ele?

Não, existe diversos outros comandos sendo executados e variaveis sendo alocadas.