Programação Imperativa

Aula 5

Sumário


Área de um círculo

Numa das primeiras aulas fizemos um programa para calcular a área de um círculo mas escrevemos as instruções em Português. Agora vamos escrever esse mesmo programa em C.

        #include <stdio.h>

        main()
        {
           float area, raio;

           printf("Introduza o raio: ");
           scanf("%f", &raio);
           area = 3.14159 * raio * raio;
           printf("A área de um círculo de raio %f é %f\n", raio, area );
        }

Este programa também podia ser escrito sem a variável area. Ficaria assim:

        #include <stdio.h>

        main()
        {
           float raio;

           printf("Introduza o raio: ");
           scanf("%f", &raio);
           printf("A área de um círculo de raio %f é %f\n", raio, 3.14159 * raio * raio );
        }

e também podia ser escrito assim:

        #include <stdio.h>

        #define PI  3.14159

        main()
        {
           float raio;

           printf("Introduza o raio: ");
           scanf("%f", &raio);
           printf("A área de um círculo de raio %f é %f\n", raio, PI * raio * raio );
        }

Neste caso, o nome PI foi definido como sinónimo de 3.14159. Este programa faz exactamente a mesma coisa que o programa anterior, mas é melhor porque é mais legível. A legibilidade é muito importante porque faz com que os programas fiquem mais fáceis de alterar. Isto é especialmente importante quando os programas são grandes (existem programas com milhares de linhas).

Reparem que o valor de PI não pode ser alterado durante a execução do programa. Se tivéssemos declarado PI como variável, poderíamos alterar o seu valor fazendo coisas do estilo:

        main()
        {
           float PI, raio;

           ...
           PI = 7.45;
           area = PI * raio * raio;
           ...
        }

Obviamente que isso seria um absurdo. PI não é uma variável, PI é uma constante cujo valor é aproximadamente igual a 3.14159... Tudo o que é constante deve ser definido como tal utilizando a directiva #define.

Na matemática costumamos usar uma só letra para os nomes de variáveis (ex: x, y, z). Em C, as variáveis podem ter nomes como area ou raio. Os nomes das variáveis em C devem começar obrigatoriamente por uma letra ou um sublinhado e podem ser seguidos por qualquer combinação de letras, sublinhados ou dígitos 0-9. De seguida apresento uma lista com exemplos de nomes de variáveis válidos:

       area
       area_do_circulo
       x
       maria53
       _valor
       AnToNIO

Estilo de programação

Existem diversos factores que contribuem para a qualidade de um programa e alguns desses factores são muitas vezes ignorados por programadores principiantes. Um bom programa deve,

  1. funcionar do modo esperado
  2. ser legível

O ponto 1 diz que se um programa é suposto calcular a área de um círculo, então deve fazer isso de modo correcto. Por exemplo, o programa não pode dizer que a área de um círculo de raio 1 é 4.

O ponto 2 é mais delicado e é aquele que é normalmente ignorado pelos principiantes. Apesar de um programa funcionar do modo esperado isso não significa que o programa é bom (lembrem-se disto nos testes e trabalhos). Um bom programa tem de ser compreendido facilmente olhando para o código. Isso implica dar bons nomes às variáveis e usar uma indentação adequada. Para melhor ilustrar este aspecto, nada melhor que um exemplo. De seguida apresenta-se um conjunto de programas para calcular a área de um círculo. Todos funcionam correctamente mas a qualidade vai do bom até ao péssimo.

Versão 1 (bom)

        #include <stdio.h>

        #define PI  3.14159

        main()
        {
           float raio, area;

           printf("Introduza o raio: ");
           scanf("%f", &raio);
           area = PI * raio * raio;
           printf("A área de um círculo de raio %f é %f\n", raio, area );
        }

Versão 2 (menos bom)

        #include <stdio.h>

        main()
        {
           float raio, area;

           printf("Introduza o raio: ");
           scanf("%f", &raio);
           area = 3.14159 * raio * raio;
           printf("A área de um círculo de raio %f é %f\n", raio, area );
        }

Versão 3 (mau nome para as variáveis)

        #include <stdio.h>

        main()
        {
           float x,y;

           printf("Introduza o raio: ");
           scanf("%f", &x);
           y = 3.14159 * x * x;
           printf("A área de um círculo de raio %f é %f\n", x, y );
        }

Versão 4 (má indentação)

        #include <stdio.h>

        main()
        {
           float x,y;

         printf("Introduza o raio: ");
           scanf("%f", &x);
               y = 3.14159 * x * x;
           printf("A área de um círculo de raio %f é %f\n", x, y );}

Versão 5 (mete medo ao susto!)

        #include <stdio.h> main()    {
           float x,y;

         printf("Introduza o raio: ");
           scanf("%f", &x);  y = 3.14159 
         * x * x;
           printf("A área de um círculo de raio %f é %f\n", 
         x, y );}