Você está na página 1de 4

Na linha 10, temos uma diretiva para informar ao compilador que

especificações externas serão utilizadas. No nosso caso particular, tais


especificações se encontram na biblioteca stdio. Uma diretiva precisa
começar com uma cerquilha (#) bem no início de uma linha. Na diretiva em
questão, a cerquilha é seguida pela "palavra reservada" include. As
informações necessárias para o processo de compilação encontram-se em
um arquivo de extensão .h (para indicar que se trata de um "header file")
em um diretório conhecido pelo compilador (isto é, pelo programa que
converte código fonte em código objeto). O nome de tal arquivo é delimitado
pelos símbolos menor (<) e maior (>).
9:
10:#include <stdio.h>
Na linha 11 temos a diretiva define que informa que toda a ocorrência no
código do primeiro elemento depois do define deve ser substituída antes de
iniciar o processo de compilação pelo elemento que se segue. No nosso
caso particular, isto significa substituir toda a ocorrência de N, no código,
pela representação simbólica do número dez ("constante simbólica" 10). Na
prática, isto quer dizer que N é uma "constante literal" cujo valor é dez.
Qual é a vantagem de usar uma constante literal? Ao escrevermos um código
em termos de uma constante literal, se quisermos alterar o valor da
constante só precisamos efetuar a mudança na respectiva diretiva define.
No caso de uso de uma constante simbólica, nós teríamos que percorrer todo
o código e verificar as constantes literais para saber se alguma alteração
procede ou não. É, portanto, mais elegante e facilita a manutenção do código
se empregarmos constantes literais cujos valores possam, eventualmente,
mudar.

O que se segue a um // até o final de uma linha de código é um comentário


e, portanto, ignorado pelo compilador. Comentários, como já dito, servem
para conferir uma maior legibilidade ao código às pessoas que,
eventualmente, se debruçarem sobre o mesmo.

11:#define N 10 // definição da constante N


Na linha 13, inicia-se a declaração da "função principal" (no nosso caso, o
código só contém a função principal) com o seu "cabeçalho". O "corpo" da
função é delimitado pelas chaves { e } nas linhas 14 e 54,
respectivamente.
12:
13:int main(void)
14:{
Nas linhas 15 e 17, são declaradas as variáveis utilizadas na função
principal. No nosso caso particular, todas elas são do "tipo" int, isto é, são
variáveis associadas a valores inteiros. As variáveis i e numero são
declaradas sem valor inicial enquanto que as variáveis positivos, negativos e
nulos são declaradas com valor inicial igual a zero.
15: int
16: i, numero,
17: positivos = 0, negativos = 0, nulos = 0; // contadores
Na linha 21, a função printf( ) da biblioteca stdio escreve a mensagem
Entre com 10 números inteiros.
na janela do programa e muda o cursor para a linha de baixo. Os
caracteres %d indicam o local em que será inserido um valor inteiro na
base 10. No caso particular, o valor específico a ser inserido é o valor da
constante literal N, isto é, o %d será substituído por 10, pois N corresponde
ao valor dez,
18:
19: /* Analise dos dados com o objetivo de verificar
20: o número de valores em cada categoria. */
21: printf("Entre com %d numeros inteiros.\n", N);
Na linha 22 temos um comando que controla a repetição da execução dos
comandos no bloco entre as linhas 23 e 44. Ao final de cada ciclo de
execução do bloco de código entre a linha 23 e a linha 44 é incrementada em
uma unidade. A expressão i = i + 1 deve ser lida como: some 1 ao valor
associado a i e estabeleça uma nova associação entre i e o resultado da
soma efetuada. O símbolo = não representa uma relação de igualdade, mas
indica uma "atribuição". O resultado da expressão do lado direito é atribuído
(associado) à variável do lado esquerdo. De forma abreviada, "i recebe o
valor de i + 1". No início do primeiro ciclo i vai valer 1, no segundo 2 e
assim sucessivamente enquanto i for menor ou igual a 10.
22: for (i = 1; i <= N; i = i + 1)
23: {
No primeiro ciclo, a função printf( ) da biblioteca stdio vai escrever
1)
no início da nova linha na janela de execução do programa. No segundo
ciclo, ao invés de 1 será escrito 2 antes do parêntese e assim
sucessivamente. A indicação %3d deve ser lida como: "use um campo de
três posições para escrever o valor decimal". Se o decimal requer menos de
três posições para ser escrito, então ele é alinhado com a lado direito do
campo e precedido por um ou dois espaços em branco dependendo dos
dígitos a serem efetivamente escritos. Na linha 25, temos a
função scanf( ) da stdio. Ela aguarda o usuário digitar algo e pressionar a
tecla Enter. Uma vez sinalizada o final da digitação com o Enter, ela tenta
converter o digitado supostamente em formato decimal em um valor e o
associa à variável numero. De forma sintética, a linha 25 poderia ser lida
como "leia um inteiro em formato decimal e associe o seu valor a numero.
24: printf("%3d) ", i);
25: scanf("%d", &numero);
A seguir vem um comando condicional if. Se a condição numero > 0 for
verdadeira, então é executado o bloco entre as chaves { e } nas linhas 27 e
31 e depois o fluxo da execução é desviado para a linha 44 em que a
chave } indica o fim do bloco controlado pelo comando for na linha 22. Os
comandos nas linhas 29 e 30 são, portanto, subordinadas ao comando if da
linha 26 e, para indicar tal condição ao leitor humano, é feito um
deslocamento da margem dos dois comandos mais para a direita. A boa
prática de deslocamentos da margem para indicar a estrutura de
subordinação é chamada, no jargão técnico, de "indentação".

Se a condição numero > 0 do comando if na linha 26 for falsa, então a


execução segue após o else da linha 32 que é um novo comando if que se
estende da linha 33 à linha 43.

O que ocorre de fato no comando if que se inicia na linha 26? Se o último


valor lido (e associado a numero) for maior do que zero, então o usuário é
informado sobre tal fato, o valor associado à variável positivos é
incrementado em uma unidade e uma nova associação é estabelecida entre
a variável positivos e o resultado do incremento. De forma abreviada
dizemos que "positivos foi incrementado em uma unidade". Neste ponto, a
execução do if é terminada. Se o valor associado à variável numero não
for maior do que zero, então o fluxo é desviado para o comando depois
do else da linha 32, isto é, para o if mais interno que se inicia na linha 33.
Segue, então, a execução com um teste para verificar se o valor da
variável numero é menor do que zero. Em caso afirmativo, o usuário é
informado sobre tal fato e, a seguir, a variável "negativos é incrementada
em uma unidade" (linhas 36 e 37). Se as condições da linha 26 e da linha 33
forem falsas (isto é, o valor associado à variável numero não é positivo nem
negativo), então é informado que o valor lido é zero e a variável "nulos é
incrementada em uma unidade". Em suma, o comando if com início na linha
26 faz a contabilidade de números positivos, negativos e nulos lidos.
26: if (numero > 0)
27: {
28: // numero > 0
29: printf("O numero %d 'e maior que zero\n", numero);
30: positivos = positivos + 1;
31: }
32: else // numero <= 0
O comando if, que se estende da linha 33 até a linha 43, é um comando
subordinado ao comando if que se inicia na linha 26. Ele só é executado se
a condição numero > 0, na linha 26, for falsa. Se a condição do if
subordinado (numero < 0) for verdadeira, então os comandos nas linhas 36 e
37 serão executados. Em caso contrário, isto é, tanto a condição numero >
0 como a condição numero < 0 forem falsas, então os comandos nas linhas
41 e 42 são executadas. Nesta situação, o valor associado a numero só
pode ser igual a zero.
33: if (numero < 0)
34: {
35: // numero < 0
36: printf("O numero %d 'e menor que zero\n",
numero);
37: negativos = negativos + 1;
38: }
39: else // numero = 0
40: {
41: printf("O numero %d 'e igual a zero\n", numero);
42: nulos = nulos + 1;
43: }
44: }
45:
Uma vez terminada a execução do comando for que se estende da linha 22
até a linha 44, os resultados da contabilidade de números positivos,
negativos e nulos são apresentadas ao usuário do programa. O símbolo \
n resulta em uma mudança de linha na saída de informações na janela do
programa. Um \n\n, portanto, tem o efeito de mudar de linha na janela do
programa duas vezes.
46: /* Apresentação dos resultados. */
47: printf("\n\n");
48: printf("Na sequencia de %d numeros temos:\n", N);
49: printf(" - Numeros positivos: %d\n", positivos);
50: printf(" - Numeros negativos: %d\n", negativos);
51: printf(" - Numeros nulos: %d\n", nulos);
52:
O comando return na função main( ) causa o término da execução do
programa. Se o valor retornado for zero, então isto indica que a execução
terminou em condições normais.
53: return 0;
54:}

Você também pode gostar