Unidade A - Introdução à linguagem

Processo de compilação de um programa

O processo de compilação de um programa na linguagem C é simples e envolve uma sequência de passos. A seguir, é apresentado um fluxograma indicando tais passos (Figura A.1).

O Pré-processador realiza a análise léxica, procurando interpretar diretivas especiais, comentários do programa, entre outros detalhes a fim de que o programa objeto seja gerado (AHO; LAM; SETHI; ULLMAN, 2008).

Depois de realizada a etapa pelo pré-processador, o Compilador irá analisar o código gerado pelo pré-processador e transformar o código para a linguagem Assembly, efetuando a análise sintática e semântica dos dados.

O Montador Asssembler verifica o código e compila-o para código de máquina, produzindo, assim, o código objeto. O código objeto é geralmente armazenado em arquivos com a extensão .o .

Por fim, o LinkEditor faz a ligação com as bibliotecas externas, colocando as ligações e o código objeto em um único arquivo executável. Esse arquivo estará pronto para a execução e terá a extensão .exe.

 

O que é uma diretiva?
Segundo Schildt (1997), diretiva do pré-processador é uma instrução do compilador colocada no código fonte, inicia pelo símbolo #. As principais diretivas utilizadas em C e definidas pelo padrão ANSI são:
#if  #ifdef  #ifndef
#else  #elif  #endif
#include  #define  #undef

 

Instalação do Compilador DevC++

A primeira atividade a fazer antes de desenvolver programas usando a linguagem C é instalar um compilador. Para esta disciplina utilizaremos o ambiente de programação DevC++, disponível para download em http://www.bloodshed.net/devcpp.html. A opção por esse ambiente foi feita pelas seguintes razões:

Passos para a instalação:

  1. Fazer o download do programa DevC++.
  2. Após baixar o programa, clique duas vezes sobre o ícone cujo nome corresponde a devcpp4992.exe. Se o arquivo executado foi baixado corretamente, você verá a seguinte tela.

  3. Clique no botão de OK e em seguida aparecerá a tela de escolha do idioma.

  4. É disparado então o procedimento de instalação. Será exibida uma janela com a licença de utilização do ambiente. Não se preocupe com isso, o software é livre e a licença diz exatamente isso. Leia a licença (se quiser) e clique no botão "Aceito", indicando que concorda com os termos.

  5. A próxima tela solicita que você escolha quais os componentes do DevC++ que você quer utilizar. Por padrão, deixe todos marcados.

  6. Clicando no botão “Seguinte” aparecerá a tela para que você escolha o diretório onde o compilador deverá ser instalado. É aconselhável deixar no diretório sugerido.

  7. Em seguida, após clicar em “Instalar”, aparecerá a tela de instalação.

  8. Após a instalação clique em terminar e o software será executado.

Utilização do DevC++

  1. Ao entrar no ambiente, você verá uma tela que é apresentada abaixo. O primeiro passo é criar um projeto. Clique no botão indicado para criar um novo projeto (menu "Arquivo-Novo -> Projeto").

  2. Aparecerá a seguinte tela, solicitando o tipo de projeto. Clique na opção "Console application" (como indicado na figura abaixo), clique em Projeto C e, a seguir, no botão "OK".

  3. A tela seguinte solicita o nome do projeto. Digite um nome adequado para ele e clique em "Salvar”.

  4. Após salvar o projeto, aparecerá uma tela com um trecho de código C permitindo que você inicie o seu trabalho. Salve o trecho de código com a extensão .c  e bom trabalho.

Utilizando variáveis e estruturas de controle

As estruturas de controle ou estruturas lógicas são designadas em: sequenciais, de decisão e de repetição. Porém, antes de iniciar com essas estruturas, veremos como devemos utilizar e escrever uma variável.

O uso de Variáveis

Variável pode ser definida como tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante. E quando trabalhamos com computadores teremos uma grande quantidade de informações que serão tratadas. Assim, essas informações a serem processadas tendem a ser variáveis (LÓGICA..., 2011).

Todo dado a ser armazenado na memória de um computador deve ser previamente identificado, ou seja, primeiro é necessário saber qual o seu tipo para depois fazer o seu armazenamento adequado. Estando armazenado o dado desejado, ele poderá ser utilizado e manipulado a qualquer momento.

Nome de Variáveis

Uma variável é formada por uma letra, “_“ (underline), ou então, por uma letra seguida de outras letras ou dígitos. Não é permitido o uso de espaços em branco ou de qualquer outro caractere, que não seja letra ou dígito, na formação de um identificador.

Se utilizar palavras para compor o nome da variável utilize o “_” para separar as palavras.

 

O C é “case sensitive”, isto é, maiúsculas e minúsculas não são a mesma coisa. Significa que se declaramos uma variável chamada SOMA em maiúscula, essa mesma variável só existirá dessa forma. Caso alguma das letras tenha uma formação diferente, estaremos lidando com outra variável.

 

Funções de entrada e saída

As instruções são representadas pelo conjunto de palavras-chave (vocabulário) de uma determinada linguagem de programação, que tem por finalidade comandar em um computador o seu funcionamento e a forma como os dados armazenados deverão ser tratados. Em C, para realizarmos a entrada de um dado em um programa, utilizamos a função scanf e para a saída a função printf.

Função printf

A função printf exibe na tela do monitor um dado, uma string ou mesmo um endereço de memória. O primeiro argumento da função é uma string que especifica o formato da impressão. A estrutura básica da função printf() é dada a seguir:

printf ("String de controle", Lista de argumentos);

onde:

String de controle pode ser tanto de caracteres para serem impressos na tela como códigos de formato, que especificam como apresentar o restante dos argumentos. Além de especificar caracteres dentro do primeiro parâmetro, pode-se incluir especificadores de formato (quadro A3.1), que instruem printf() como imprimir os parâmetros indicados.

Código

Significado

%c

Exibe um caractere.

%d

Exibe um inteiro em formato decimal.

%i

Exibe um inteiro.

%e

Exibe um número em notação científica (com e minúsculo).

%E

Exibe um número em notação científica (com E maiúsculo).

%f

Exibe um ponto flutuante em formato decimal.

%g

Usa %e ou %f, o que for menor.

%G

O mesmo que %g, só que um E maiúsculo é usado se o formato %e for escolhido.

%o

Exibe um número em notação octal.

%s

Exibe uma string.

%u

Exibe um decimal sem sinal.

%x

Exibe um número em hexadecimal com letras minúsculas.

%X

Exibe um número em hexadecimal com letras maiúsculas.

%%

Exibe um sinal de %.

%p

Exibe um ponteiro.

Tabela A.1 - String de controle - Fonte: Schildt (1997).

Lista de argumentos pode ser o conteúdo das variáveis a serem impressos.

Exemplo do comando printf:

#include <stdio.h>
#include <stdlib.h>
         
int main(int argc, char *argv[])
{
    int idade = 30;
    float salario = 1820.50;
    char nome[3]="DEV";
    printf("Nome do usuario: %s idade: %d salario: %4.2f\n",
            nome,  idade, salario);/* será mostrado Nome do usuário:DEV idade:30 salario:1820.50*/

    printf("%d mais %d igual a %d\n", 1, 2, 1 + 2);/*será mostrado 1 mais 2 igual a 3*/
    
    system("PAUSE");   
    return 0;

}

Função scanf

A função scanf( ) é uma das funções de entrada de dados da Linguagem C, que pode ser usada para ler qualquer tipo de dado inserido por meio do teclado. A estrutura básica da função scanf é dada a seguir:

scanf ("String de controle", &Lista de argumentos);

onde:

String de controle: é uma string que especifica o formato da lista a ser lida.

Lista de argumentos: são os endereços das variáveis, onde os valores lidos serão armazenados. Deve ser precedido por &.

Exemplo do comando scanf

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   int a, b;
   double media;
   scanf ("%d %d", &a, &b); /* mostrará o prompt solicitando a digitação de dois valores, vamos digitar 2 espaço 2*/
   media = (a + b) / 2.0;
   printf ("A média de %d e %d é %f\n", a, b, media); ); /* mostrará A média de 2 e 2 é 2.000000*/

   system("PAUSE");    
   return 0;
}

Comentários

Os comentários servem principalmente para documentação do programa e são ignorados pelo compilador, portanto, não irão afetar o programa executável gerado.

Os comentários que envolvem mais de uma linha começam com os símbolos /* e se estendem até aparecerem os símbolos */.

Um comentário pode aparecer em qualquer ponto do programa, assim, temos também o símbolo // que corresponde ao comentário de somente uma linha

Exemplo de comentário:

#include <stdlib.h>

int main(int argc, char *argv[])
{
    //comentário de uma linha
   /* comentário
     de
     várias
    linhas
   */
   printf ("comentários");
   system("PAUSE");    
   return 0;

}