Programação Imperativa

Aula 4

Sumário

Esta é a primeira aula de programação em C. Vamos abordar dos seguintes tópicos:


O meu primeiro programa em C

O seguinte programa está escrito na linguagem de Programação C.

       #include <stdio.h>

        main()
        {
           printf("Este é o meu primeiro programa em C.\n");
        }

Ao ser executado, o programa vai escrever o seguinte no ecrã:

        Este é o meu primeiro programa em C.

Explicação do programa.

O início da execução de todos os programas em C começa depois da palavra,

         main()

As duas chavetas, { e }, assinalam o início e o fim do programa. O objectivo da declaração,

         #include <stdio.h>

é permitir o uso da instrução printf a qual permite escrever para o ecrã. Praticamente todos os programas em C tem esta linha no inicio do programa. O texto a ser impresso pelo printf() deve ser escrito entre aspas. Este programa só tem uma instrução,

         printf("Este é o meu primeiro programa em C.\n");

O printf() vai escrever no ecrã tudo o que aparece entre aspas, exceptuado alguns caracteres especiais tais como o \n e %. O \n significa o caracter newline e indica ao computador para mudar de linha. Isto é, o programa escreve no ecrã,

         Este é o meu primeiro programa em C.

e o cursor fica colocado no início da linha seguinte.


O meu segundo programa

O programa seguinte é diferente do primeiro mas ambos produzem exactamente o mesmo output.

        #include <stdio.h>

        main()
        {
           printf("Este é o");
           printf(" meu primeiro");
           printf(" programa em C.");
           printf("\n");
        }

Reparem que todas as instruções terminam com ponto e vírgula (;)

Outro aspecto importante é que as palavras-chave, tais como main e printf são escritas em minúsculas.


Programa para somar 2 números

O programa seguinte pede ao utilizador para introduzir dois números e apresenta no ecrã a respectiva soma.

        #include <stdio.h>

        main()
        {
           int a, b, s;

           printf("Introduza um número:\n");
           scanf("%d", &a);
           printf("Introduza outro número:\n");
           scanf("%d", &b);
           s = a + b;
           printf("A soma de %d com %d dá %d\n", a, b, s);
        }

Ao ser executado, o programa vai fazer o seguinte (o que aparece em bold é escrito pelo utilizador):

        Introduza um número:
        7
        Introduza outro número:
        18
        A soma de 7 com 18 dá 25

Explicação do programa.

Tal como nos exemplos anteriores, o programa começa a ser executado depois da palavra main(). O programa começa por declarar três variáveis do tipo inteiro:

        int a, b, s;

Podem pensar numa variável como se fosse uma caixa que pode ter um valor lá dentro.

As variáveis correspondem a localizações na memória do computador. Cada variável tem um tipo de dados associado. No exemplo acima, as 3 variáveis são do tipo inteiro. Isso é especificado com a palavra int no início da declaração das variáveis. Ao declararmos uma variável do tipo int, estamos a dizer ao computador que o conteúdo da variável vai ser um valor inteiro (por exemplo, 75).

Depois da declaração das variáveis, o programa tem 6 instruções, que são executadas sequencialmente uma após outra. A primeira instrução é um printf tal e qual como vimos na aula passada. Depois do primeiro printf vem a instrução:

        scanf("%d", &a);

O scanf() é a instrução que permite que o utilizador introduza dados através do teclado. A instrução tem um aspecto feio, mas não se assustem.

O scanf() tem 2 argumentos (2 partes) separados por uma vírgula. O primeiro argumento aparece entre aspas, e especifica o tipo de variável que vem a seguir. No exemplo temos "%d", que corresponde ao tipo de dados inteiro. O segundo argumento (&a) especifica a variável na qual se vai guardar a informação introduzida pelo utilizador (para já podem ignorar o significado do sinal &, mas lembrem-se que sempre que utilizarem o scanf devem escrever &x, onde x é o nome da variável onde querem guardar a informação introduzida).

Quando a instrução scanf() é executada, o computador fica à espera que o utilizador introduza qualquer coisa através do teclado. Aquilo que o utilizador introduzir vai passar a ser o valor da variável especificada no scanf. No nosso exemplo, se o utilizador introduzir o número 7 o estado das variáveis passa a ser:

A instruções 3 e 4 são semelhantes às duas primeiras. Se o utilizador introduzir o número 18 o estado das variáveis passa a ser:

A quinta instrução é uma instrução de atribuição:

       s = a + b;

Neste tipo de instrução, aquilo que está no lado esquerdo do sinal de igual é sempre uma variável. Aquilo que está do lado direito do sinal de igual é uma expressão. Ao encontrar este tipo de instrução, o computador efectua o cálculo da expressão do lado direito (a + b), e coloca o resultado dentro da variável que está no lado esquerdo (s). Por isso é que se chama uma instrução de atribuição, está-se a atribuir à variável s o valor de a + b.

A última instrução do programa é:

       printf("A soma de %d com %d dá %d\n", a, b, s);

Esta instrução de printf() tem um formato ligeiramente diferente daquele que vimos nos exemplos anteriores. O primeiro argumento do printf é:

       "A soma de %d com %d dá %d\n"

Reparem que existem 3 sinais de %d. Esses %d são uma espécie de buracos que serão substituídos pelos valores de a, b, e s, respectivamente.

Se os valores de a, b, e s forem 7, 18, e 25, a instrução:

       printf("A soma de %d com %d dá %d\n", a, b, s);

iria escrever no ecrã:

       A soma de 7 com 18 dá 25

e a instrução:

       printf("A soma de %d com %d dá %d\n", b, a, s);

iria escrever no ecrã:

        A soma de 18 com 7 dá 25

O programa acima soma 2 números inteiros. Se o utilizador introduzir um número real, por exemplo 3.7, o programa não vai ter o comportamento esperado. De seguida, apresenta-se um programa que soma 2 números reais. A única diferença é que as variáveis são declaradas como float e todos os %d são substituídos por %f.

        #include <stdio.h>

        main()
        {
           float a, b, s;

           printf("Introduza um número:\n");
           scanf("%f", &a);
           printf("Introduza outro número: "\n);
           scanf("%f", &b);
           s = a + b;
           printf("A soma de %f e %f é %f\n", a, b, s);
        }