Você está na página 1de 5

A ULA 4

P RIMEIROS PROGRAMAS

Nesta aula aprenderemos a codificar nossos primeiros programas na linguagem C.

4.1 Digitando

Abra o seu Emacs, pressione C-x C-f , digite em seguida um nome para seu primeiro
programa, como por exemplo primeiro.c, e então digite o seguinte código.

Programa 4.1: Primeiro programa.

1 #include <stdio.h>
2 int main(void)
3 {
4 printf("Programar é bacana!\n");
5 return 0;
6 }

Depois de ter digitado o programa, pressione as teclas C-x C-s para salvá-lo em um
diretório adequado da sua área de trabalho.
Na linguagem C, letras minúsculas e maiúsculas são diferentes. Além disso, em progra-
mas na linguagem C não há distinção de onde você inicia a digitação das suas linhas e, assim,
usamos essa característica a nosso favor, adicionando espaços em algumas linhas do programa
para facilitar sua leitura. Essa adição de espaços em uma linha é chamada indentação ou tabu-
lação. No Emacs, você pode usar a tecla Tab para adicionar indentações de forma adequada.
Veremos que a indentação é uma prática de programação muito importante.

4.2 Compilando e executando

Abra um terminal onde possa digitar comandos, solicitando ao sistema operacional que os
execute. Então, compile o programa 4.1 com o compilador gcc:

prompt$ gcc primeiro.c


prompt$

34
4.3 O LHANDO O PRIMEIRO PROGRAMA MAIS DE PERTO 35

Depois disso, o programa executável a.out estará disponível para execução no mesmo
diretório. Então é só digitar a.out (ou ./a.out) na linha de comando do terminal para ver o
resultado da execução:

prompt$ a.out
Programar é bacana!
prompt$

O nome a.out é um nome padrão que o compilador gcc dá aos arquivos executáveis resul-
tantes de uma compilação. Em geral, atribuímos um nome mais significativo a um programa
executável, como por exemplo o mesmo nome do programa na linguagem C, mas sem a sua
extensão. No exemplo acima, o programa executável associado tem o nome primeiro. O
compilador gcc pode gerar um executável dessa forma como segue:

prompt$ gcc primeiro.c -o primeiro


prompt$

4.3 Olhando o primeiro programa mais de perto

A primeira linha do nosso primeiro programa

#include <stdio.h>

será muito provavelmente incluída em todo programa que você fará na linguagem C. Essa
linha fornece informações ao compilador sobre a função de saída de dados de nome printf ,
que é usada depois no programa.
A segunda linha do programa

int main(void)

informa ao compilador onde o programa inicia de fato. Em particular, essa linha indica que
main , do inglês principal, é o início do programa principal e, mais que isso, que esse trecho do
programa é na verdade uma função da linguagem C que não recebe valores de entrada ( void )
e devolve um valor inteiro ( int ). Esses conceitos de função, parâmetros de entrada de uma
função e valor de saída serão elucidados oportunamente. Por enquanto, devemos memorizar
que essa linha indica o início de nosso programa.
A próxima linha contém o símbolo abre-chave { que estabelece o início do bloco de co-
mandos do programa. Em seguida, a próxima linha contém uma chamada à função printf :

printf("Programar é bacana!\n");

Essa função tem um único argumento ou parâmetro, que é a seqüência de símbolos da tabela
ASCII printf("Programar é bacana!\n"); . Note que todos os símbolos dessa seqüên-
cia são mostrados na saída, a menos de \n , que tem um significado especial quando sua
impressão é solicitada por printf : saltar para a próxima linha. A função printf é uma

DCT UFMS
4.4 P RÓXIMO PROGRAMA 36

rotina da biblioteca stdio.h da linguagem C que mostra o seu argumento na saída padrão,
que geralmente é o monitor.
Depois disso, adicionamos a linha

return 0;

que termina a execução do programa. Finalmente o símbolo fecha-chave } indica o final do


bloco de comandos do programa.

4.4 Próximo programa

Vamos digitar um próximo programa.

Programa 4.2: Segundo programa.

1 #include <stdio.h>
2 int main(void)
3 {
4 int num1, num2, soma;
5 num1 = 25;
6 num2 = 30;
7 soma = num1 + num2;
8 printf("A soma de %d e %d é %d\n", num1, num2, soma);
9 return 0;
10 }

Este exemplo é ligeiramente diferente do primeiro e introduz algumas novidades. Agora, a


primeira linha após a linha que contém o nome da função main apresenta uma declaração de
variáveis. Três variáveis do tipo inteiro são declaradas: num1 , num2 e soma . Isso significa
que, durante a execução desse programa, três compartimentos de memória são reservados pelo
computador para armazenamento de informações que, neste caso, são números inteiros. Além
disso, a cada compartimento é associado um nome: num1 , num2 e soma . Esses comparti-
mentos de memória são também conhecidos como variáveis, já que seu conteúdo pode variar
durante a execução de um programa.
Depois disso, na próxima linha do nosso programa temos uma atribuição do valor do tipo
inteiro 25 para a variável num1 . Observe então que o símbolo de atribuição da linguagem C
é = . Na linha seguinte, uma outra atribuição é realizada, do número 30 para a variável num2 .
Na próxima linha temos uma atribuição para a variável soma . No entanto, note que não temos
mais um número no lado direito da expressão de atribuição, mas sim a expressão aritmética
num1 + num2 . Neste caso, durante a execução dessa linha do programa, o computador con-
sulta o conteúdo das variáveis num1 e num2 , realiza a operação de adição com os dois valores
obtidos dessas variáveis e, após isso, atribui o resultado à variável soma . No nosso exemplo,
o resultado da expressão aritmética 25 + 30, ou seja, o valor 55, será atribuído à variável soma .
A linha seguinte de nosso programa contém uma chamada à função printf , mas agora com

DCT UFMS
4.5 D OCUMENTAÇÃO 37

quatro argumentos: o primeiro é agora uma cadeia de caracteres de formatação, contendo não
apenas caracteres a serem impressos na saída, mas símbolos especiais, iniciados com % , conhe-
cidos como conversores de tipo da linguagem C. Neste caso, os símbolos %d permitem que
um número inteiro seja mostrado na saída. Note que três conversores %d estão contidos na
seqüência de símbolos de saída e, a cada um deles e na ordem como são apresentados está as-
sociado uma das variáveis num1 , num2 e soma , que são os argumentos restantes da função
printf .

4.5 Documentação

Uma boa documentação de um programa, conforme [4], significa inserir comentários apro-
priados no código de modo a explicar o que cada uma das funções que compõem o programa
faz. A documentação de uma função é um pequeno manual que dá instruções precisas e com-
pletas sobre o uso da função.
Comentários são então introduzidos em programas com o objetivo de documentá-los e de
incrementar a sua legibilidade. O(a) programador(a) é responsável por manter seus códigos le-
gíveis e bem documentados para que, no futuro, possa retomá-los e compreendê-los sem muito
esforço e sem desperdício de tempo. Na linguagem C padrão, os comentários são envolvi-
dos pelos símbolos /* e */ . Um comentário é completamente ignorado quando encontrado
pelo compilador e, portanto, não faz diferença alguma no programa executável produzido pelo
compilador da linguagem.
A seguir, mostramos nosso último programa desta aula com comentários explicativos adi-
cionados nos pontos onde são realmente necessários.

Programa 4.3: Segundo programa com comentários explicativos.

1 #include <stdio.h>
2 /* Esta função faz a adição de dois números inteiros fixos
3 e mostra o resultado da operação na saída. */
4 int main(void)
5 {
6 int num1, num2, soma;
7 num1 = 25;
8 num2 = 30;
9 soma = num1 + num2;
10 printf("A soma de %d e %d é %d\n", num1, num2, soma);
11 return 0;
12 }

Ainda conforme [4], uma boa documentação não se preocupa em explicar como uma função
faz o que faz, mas sim o que ela faz de fato, informando quais são os valores de entrada da
função, quais são os valores de saída e quais as relações que esses valores que entram e saem
da função e as transformações pela função realizadas.

DCT UFMS
4.5 D OCUMENTAÇÃO 38

Exercícios
4.1 Escreva uma programa na linguagem C que escreva a seguinte mensagem na saída pa-
drão:

a) Comentários na linguagem C iniciam com /* e terminam com */


b) Letras minúsculas e maiúsculas são diferentes na linguagem C
c) A palavra chave main indica o início do programa na linguagem C
d) Os símbolos { e } envolvem um bloco de comandos na linguagem C
e) Todos os comandos na linguagem C devem terminar com um ponto e vírgula

4.2 Qual é a saída esperada para o programa 4.4?

Programa 4.4: Programa do exercício 4.2.

1 #include <stdio.h>
2 int main(void)
3 {
4 printf("Alô! ");
5 printf("Alô! ");
6 printf("Tem alguém aí?");
7 printf("\n");
8 return 0;
9 }

4.3 Escreva um programa na linguagem C que subtraia 14 de 73 e mostre o resultado na saída


padrão com uma mensagem apropriada.

4.4 Verifique se o programa 4.5 está correto. Em caso negativo, liste os erros de digitação que
você encontrou.

Programa 4.5: Programa do exercício 4.4.

1 include <stdio.h>
2 /* computa a soma de dois números
3 Int main(void)
4 {
5 int resultado;
6 resultado = 13 + 22 - 7
7 printf("O resultado da operação é %d\n" resultado);
8 return 0;
9 }

DCT UFMS