Capítulo 1 - O Programa em C


Conteúdo  Capítulo anterior  Capítulo seguinte 
Neste capítulo veremos os elementos mais básicos de um programa em C.
Começaremos pela estrutura básica de um programa em C e examinaremos o processo de compilação e de execução dos programas.

Tópicos



O programa em C mínimo

O mais curto programa em C que é possível escrever é o seguinte:
main()
}
{
É equivalente ao seguinte programa em PASCAL:
Program Minimum;
begin
end.
Todo o programa em C deverá conter uma e só uma função main().
As chavetas { e } agrupam instruções, sendo equivalentes às palavras chave begin e end do PASCAL.
É possível colocar comentários em qualquer posição de um programa em C. Um comentário é qualquer texto delimitado pelos caracteres /* e */. Por exemplo:
/* O meu primeiro programa em C */
main()
{
     /* Outro comentário */
}
Os comentários não podem ser imbricados. Assim, o exemplo seguinte:
/* O meu primeiro programa em C */
main()
{
     /* Comentário /* Mais um comentário */ */
     /* Ilegal */
}
… é ilegal.
 
Up

Um programa mínimo mais útil

O seguinte programa produz uma saída, escrevendo algum texto no vídeo:
main()
{
  printf("Hello world!\n");
  exit(0);
}
printf e exit são funções que existem na biblioteca standard da linguagem C. Veremos o que fazem mais tarde.
 
Up

Criação, compilação e execução de um programa

Os estados de desenvolvimento de um programa em C são geralmente os três que constam do título desta secção, ou seja: No caso da detecção de qualquer erro em qualquer dos estados, todos eles deverão ser repetidos desde o início.

Criação do programa

A criação dos programas fonte em linguagem C faz-se com o auxílio de um editor de texto genérico, ou específico de um ambiente de desenvolvimento. Em geral, os arquivos de texto produzidos deverão ter a extensão .c, para poderem ser reconhecidos automaticamente pelo compilador como sendo arquivos contendo código fonte em C. Obviamente o conteúdo dos arquivos deverá verificar rigorosamente a sintaxe da linguagem C. Quando usamos o compilador TurboC da Borland em ambiente PC, os programas fontes tem por default a terminação .CPP

Compilação

A compilação dos programas em C faz-se através da invocação de um compilador (p. ex. no UNIX, o comando cc). O comando de compilação deverá ser seguido pelo nome do arquivo que contém o código fonte (geralmente com a extensão .c). É também comum colocar como parâmetros de chamada do compilador, várias opções de compilação (p. ex. no UNIX, a indicação do nome do arquivo executável com o resultado da compilação).

Assim uma compilação básica poderia ser executada no UNIX através do comando:

cc program.c
onde program.c é o nome do arquivo contendo o código fonte.

Se existirem erros de sintaxe no código fonte, o compilador detecta-los-á e indicará a sua localização junto com uma breve descrição do erro. Erros na lógica do programa apenas poderão ser detectados durante a execução do mesmo. Se o programa não contiver erros de sintaxe o compilador produzirá código executável. Tratando-se de um programa completo o código executável é colocado, por defeito, num arquivo chamado a.out (isto no UNIX). Se se pretender colocar o resultado da compilação noutro arquivo deverá utilizar-se a opção -o:

cc -o program program.c
Neste caso o código executável é colocado no arquivo program que é já criado com os necessários direitos de execução (no UNIX).

Execução do programa

Se a operação anterior tiver sucesso, a execução do programa compilado produzido faz-se simplesmente invocando-o como se fosse um comando do sistema operacional.

Durante a execução podem tornar-se evidentes mais alguns erros: erros de execução (p. ex. divisão por zero), ou erros que levem a que o programa não se comporte como esperado. Neste caso é necessário voltar à edição do programa fonte para corrigir a sua lógica, e depois efectuar também uma nova compilação para produzir a nova versão do código executável.
 

Ambiente Integrado de Desenvolvimento

Atualmente usamos um ambiente integrado para desenvolvimento, compilação e testes de programas. Assim tanto no ambiente PC com em Unix podemos usar ambiente integrado de Desenvolvimento inclusive com opção Debug. No PC temos o Turbo C como um exemplo de ambiente integrado, além de outros como Borland C, C Builder, Visual C etc. No UNIX, em Linux, temos o xwpe - XWindow Programming Environment para ambiente gráfico com Xwindows e o wpe para ambiente caracter, sendo ambos ambiente integrado com todas as facilidades necessárias para o desenvolvimento de pequenos programas ou grandes projetos.
 
Up

O modelo de compilação da linguagem C

Salientaremos aqui apenas os pontos principais do modelo de compilação da linguagem C.
Esse modelo pode ser ilustrado através da figura seguinte.

Modelo de Compilação

O pré-processador

O pré-processador será estudado em maior detalhe mais tarde. Contudo iremos adiantar alguma informação mais básica agora.
O pré-processador actua apenas ao nível do código fonte, modificando-o. Trabalha apenas com texto. Algumas das suas funções são: Por exemplo:

O compilador

Alguns compiladores traduzem o código fonte (texto) recebido do pré-processador para linguagem assembly (também texto). No entanto são também vulgares os compiladores capazes de gerarem directamente código objecto (instruções do processador já em código binário).

O assembler

O assembler traduz código em linguagem assembly (texto) para código objecto. Pode estar integrado no compilador. O código objecto é geralmente armazenado em arquivos com a extensão .o (unix) ou .obj (ms-dos).

O linker

Se o programa referencia funções da biblioteca standard ou outras funções contidas em arquivos com código fonte diferentes do principal (que contém a função main() ), o linker combina todos os objectos com o resultado compilado dessas funções num único arquivo com código executável. As referências a variáveis globais externas também são resolvidas pelo linker. Mais pormenores mais tarde.

A utilização de bibliotecas

A linguagem C é muito compacta. Muitas das funções que fazem parte de outras linguagens não estão directamente incluídas na linguagem C. Temos como exemplo as operações de entrada/saída, a manipulação de strings e certas operações matemáticas.

A funcionalidade correspondente a estas e outras operações não faz parte integrante da linguagem, mas está incluída numa biblioteca externa, bastante rica e standard. Todas essas operações são executadas por via da invocação de funções externas definidas nessa biblioteca standard. Num dos últimos capítulos serão fornecidos detalhes acerca de algumas das funções da biblioteca standard do C.

Qualquer programador poderá desenvolver a sua própria biblioteca de funções, podendo até substituir algumas das funções standard, e também utilizar outras bibliotecas comerciais já existentes (p. ex. NAG, PHIGS, etc).
 
Up


Características da linguagem C

Algumas das características do C que levaram a que se tornasse uma das mais populares linguagens de programação, são: Algumas das razões que tornaram o C uma das linguagens predilectas dos programadores profissionais são: Neste momento todos os compiladores seguem o standard internacional conhecido por ANSI C (American National Standards Institute).
 
Up

Marcos históricos

 
Up

Exercícios

1. Crie, compile e execute o seguinte programa em C:
void main(void)
{
  int i;
  printf("\t Número \t\t Quadrado\n");
  for (i=0; i<=25; ++i)
    printf("\t %d \t\t %d\n", i, i*i);
}
2. Crie um programa em C que escreva no vídeo o seu nome e endereço. Ver solução
 
Up

REV 02/99