FUNDAMENTOS PRÁTICOS

 

 

Histórico da Linguagem de Programação C
 

A linguagem de programação denominada C foi criada em 1972 por Dennis Ritchie no centro de Pesquisas da Bell Laboratories. Sua primeira utilização marcante foi a reescrita do Sistema Operacional UNIX, que até então era escrito na linguagem Assembly.

 

Em meados da década de 70 o sistema operacional UNIX deixou o laboratório para ser utilizado nas universidades. Foi o suficiente para que o sucesso da linguagem atingisse grandes proporções na área de informática. Por volta do ano de 1980, já existiam várias versões de compiladores C disponíveis no mercado. Com isso a linguagem C não estava mais restrita somente ao ambiente operacional UNIX, mas já era utilizado por outros sistemas operacionais.

 

A linguagem C é uma ferramenta de propósito geral, constituindo-se ainda em uma ferramenta poderosa no desenvolvimento de programas em diversos paradigmas de programação. No entanto é mais utilizada na construção de compiladores, analisadores léxicos, bancos de dados, editores de texto, entre outras aplicações. Veja a seguir alguns exemplos de aplicações desenvolvidas com esta linguagem:

 
Sistema Operacional

UNIX

Banco de dados

dBase III, IV e Access

Planilhas eletrônicas Excel
Aplicações gráficas Efeitos Especiais em filmes como: Star Trek e Star Wars

 

A Linguagem C é de alto nível, pois seus programas são elaborados por meio de instruções próximas a linguagem de comunicação usada pelo ser humano (comunicação natural), mas pode ser considerada de nível intermediário. Essa classificação também considera a possibilidade que esta linguagem tem de efetuar a codificação mais próxima da linguagem de máquina ou binária (baixo nível), otimizando alguns programas que precisam de manipulações e acessos muito específicos e dinâmicos. Observe a seguir as indicações relativas ao nível de classificação para algumas linguagens:

 

 
Linguagem "Case Sensitive"
 

A Linguagem C é "Case Sensitive", ou seja, as letras maiúsculas e minúsculas são manipuladas como símbolos completamente diferentes. Suponha a necessidade de armazenamento da idade, em anos, de uma pessoa. Para isso será necessário criar uma variável no bloco de declarações deste programa, sendo nele incluída a seguinte instrução:

 
inteiro IDADE;
 

Por meio desta declaração foi criada uma única variável, com o tipo de dado inteiro, que recebeu o nome de identificação IDADE. Esta variável seria completamente diferente de outra que se chamasse idade ou iDaDe, pois as letras que compõem o seu nome estão diferentemente definidas em letras maiúsculas e minúsculas. Sendo assim, estas três variáveis poderiam ser declaradas em um mesmo programa, não ocasionando nenhum tipo de erro de compilação, pois elas são completamente diferentes. Mas este tipo de declaração não é aconselhada porque pode dificultar a compreensão do programador sobre a ação realizada pelo código proposto.

 
inteiro IDADE,idade,iDaDe;
 

As palavras reservadas nesta linguagem são escritas sempre em letras minúsculas, o que pode ocasionar erros, caso este cuidado não seja observado. Por exemplo, a declaração da variável IDADE não seria possível porque o tipo de dado especificado não existe.

 
INTEIRO IDADE;
 

O tipo de dado inteiro é descrito por meio da palavra reservada inteiro, descrita corretamente em minúsculo, sendo a grafia proposta no exemplo anterior muito diferente da reconhecida por esta linguagem.

 

 

Palavras Reservadas
 

Uma palavra reservada, em uma linguagem de programação, já possui um significado definido na linguagem, não podendo ser utilizada para criação de outros objetos, tais como variáveis, constantes ou subprogramas, pois não permitirá a correta execução da tarefa solicitada ao computador.

 

A Linguagem C possui 32 palavras reservadas, de acordo com o padrão definido pela American National Standards Institute (ANSI). Acompanhe a grafia correta de cada uma delas na relação apresentada a seguir :

 
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

 

 

O Corpo Principal dos Programa em C
 

Um programa em C é formado por no mínimo um subprograma, sendo este obrigatório para a criação de um programa. Este subprograma consiste de uma função específica, sendo a única a possuir um nome já definido - main (principal). É por meio dela que um programa é executado, e sua ausência não caracteriza a existência de um programa em C, mas um código escrito na linguagem C que não pode ser executado. Para a execução do mesmo é necessária a elaboração da função principal.

 

Outros subprogramas podem ser desenvolvidos pelo programador, atendendo as necessidades que este tenha no desenvolvimento do seu programa, mas entre estes subprogramas um será a função principal. Somente ela possui um nome já definido (main), tendo todos os outros subprogramas seus nomes especificados pelo programador, respeitando sempre as regras de fornecimento de nomes aos identificadores.

 
Comentários
 

A utilização de comentários na elaboração de programas permite uma compreensão mais rápida das tarefas realizadas pelo programa, principalmente quando são desenvolvidos códigos extensos. Em C, os comentários começam com /* e terminam com */, mantendo-se todas as linhas existentes entre este início (/*) e fim (*/) de comentário como informações que não serão usadas pelo compilador, mas que auxiliam na correta compreensão do programador. O uso de // também insere um comentário no programa, sendo este iniciado a partir do código (//) e se estendendo até o final da linha onde ele se encontra, por exemplo:

 
    /* 
      SÍNTESE
        Objetivo: Saudar o usuário
        Entrada: Nenhuma
        Saída: Mensagem de saudação
    */ 
    
    #include <stdio.h>  // instrução da linguagem C 
    
    void main (void)   // instrução da linguagem C
    {
    
      // DECLARAÇÕES
     
      // INSTRUÇÕES
    
         printf("Olá usuário!!!");      // instrução da linguagem C
    
    } 

 

Início de blocos
 

Assim como na elaboração do algoritmo, os programas em C também são desenvolvidos por meio de alguns blocos lógicos principais (síntese, declarações, instruções), sendo todos eles destinados a uma organização coerente na codificação desejada. Respeitando esta organização, será elaborado um código eficiente por um programador organizado que não tem dificuldades na manipulação e manutenção dos seus programas.

 
SÍNTESE: Este bloco representa um resumo lógico do que o programa deverá fazer. A confecção do mesmo identifica três informações relevantes que sintetizam as atividades do programa, sendo elas: OBJETIVO (objetivo que este programa atende); ENTRADA (as entradas de dados necessárias para atender este objetivo); SAÍDA (os dados de saída após o processamento das entradas).

 

A construção da síntese deve ser cuidadosa, pois ela é exatamente o algoritmo, ou melhor, a síntese dele.
 
DECLARAÇÕES: A criação dos recursos manipulados pelo programa será efetuada neste bloco e contribuirá com a organização no desenvolvimento do programa, pois facilitará a compreensão no uso de cada recurso. Os recursos aqui citados consistem das variáveis, constantes e subprogramas.
 
INSTRUÇÕES: Neste bloco são descritas as ações a serem realizadas por um programa que busca atingir o objetivo almejado pelo programador que o elaborou. As instruções ou comandos estão neste bloco.

 

Na construção dos algoritmos as palavras reservadas início e fim representam o começo e o término deste bloco. Cada instrução também é encerrada por meio de uma pontuação específica, sendo normalmente utilizado o ponto e vírgula (;).

 

O desenvolvimento dos programas em C possuem as mesmas regras, porém a grafia ou os símbolos são diferentes. O bloco é iniciado pelo símbolo de abertura de chaves ({) e encerrado pelo fechamento da mesma (}), enquanto cada instrução é terminada também pelo ponto e vírgula (;).
 

Observe o exemplo a seguir:

 
    /* 
      SÍNTESE
        Objetivo: Saudar o usuário
        Entrada: Nenhuma
        Saída: Mensagem de saudação
    */ 
    
    #include <stdio.h>  // instrução da linguagem C 
    
    void main (void)   // instrução da linguagem C
    {
    
      // DECLARAÇÕES
     
      // INSTRUÇÕES
    
         printf("Olá usuário!!!");      //instrução da linguagem C
         printf("Seja bem vindo ao Curso de C");
    }
 
Tipos de dados
 

Ao se declarar um objeto (constante, variável, função) é necessário identificar qual o tipo de informação que ele manipulará , pois é através dessa declaração que o computador poderá verificar a existência e a disponibilidade de espaço suficiente para que o programa possa ser executado com sucesso.

 

A Linguagem C possui cinco tipos de dados escalares, sendo eles determinantes nas possibilidades de manipulação de informações efetuadas pelo computador que estiver executando o programa em C.

 

 
Tipo Sintaxe em C Tamanho(byte) Faixa
Caracter char 1 0 a 255
Inteiro int 2 -32768 a 32767
Real float 4 3.4E-38 a 3.4E38
  double 8 1.7E-308 a 1.7E308
Não Definido void 0 Sem valor
 

Observe a correta sintaxe na criação de algumas variáveis e constantes em C.

 
    const int taxa = 15; // cria uma constante do tipo inteiro.
    
    char letra; // cria a variável LETRA que armazena um único caracter.
    
    int valor; // cria uma variável inteira com certa capacidade de armazenamento 
    
    float salario;  // variável real com certa precisáo (3.4*10-38 à 3.4*1038) 
    
    double pi;    // variável real com grande precisão (1.7*10-308 à 1.7*10308 ) 
    
 
Modificadores dos Tipos de Dados
 

A mudança nas propriedades relacionadas ao armazenamento de dados em C, podem ocorrer por meio dos modificadores. Eles são aplicados a alguns dos tipos de dados escalares da linguagem. Na relação a seguir são apresentados os quatro modificadores existentes na Linguagem C padrão ANSI.

 
  • long
  • short
  • signed
  • unsigned
 

Os modificadores não podem ser aplicados a qualquer tipo, por exemplo: em float não se pode aplicar nenhum deles (não tem efeito algum), enquanto que o int aceita qualquer um dos quatro.

 

O uso dos modificadores long e short contribui com o aumento ou redução do espaço de armazenamento do dado na memória. O unsigned permite a manipulação dos valores sem sinal, ou seja, só os valores positivos.

 
Criação ou Declaração de Variável e Constantes
 

As variáveis e constantes em C podem possuir qualquer nome desejado pelo programador, desde que estes nomes respeitem as regras de criação dos identificadores, como esclarecido anteriormente.

 

Para se utilizar variáveis ou constantes em C é necessária a declaração de cada uma delas, respeitando as regras de organização e sintaxe da linguagem. A forma geral de declaração destes dois recursos são apresentadas abaixo:

 

Forma geral para variável:

<tipo de dado> <nome da variável>;

 

Forma Geral para constante

const <tipo de dado> <nome da constante> = <valor atribuído a constante>;

 
 

No exemplo abaixo é possível ver a criação de uma constante na linguagem computacional denominada C:

 
    /* 
       SÍNTESE
         Objetivo: Declarar uma constante e duas variáveis
         Entrada: Nenhuma
         Saída: Nenhuma
    */
    
    #include <stdio.h>  // instrução da linguagem C
    
    void main (void)   // instrução da linguagem C
    {
       //DECLARAÇÕES
          const int tudo = 100;  // declaração da constante inteira TUDO
          char letra;  // declaração da variável caracter chamada LETRA
          float salario;  // declaração de uma variável do tipo real

       //INSTRUÇÕES
    
           /* instruções a serem executadas pelo programa */
    }      

Estrutura de um programa

 

Um programa em C possui características que devem ser obedecidas, pois um erro de sintaxe ou semântica resulta na falha de cumprimento do objetivo almejado pelo programa.

 

Na continuação da aprendizagem sobre a programação estruturada, todos os códigos, ou programas em C, deverão ser elaborados respeitando a estrutura de desenvolvimento de programas em três grandes blocos, sendo eles:

 
  • SÍNTESE;
  • DECLARAÇÕES;
  • INSTRUÇÕES.
 

O exemplo a seguir mostra a organização destas estruturas em um algoritmo simples, descrito respeitando as regras do português estruturado.

 
    algoritmo nomeAlgoritmo;
    
    //Síntese
       //Objetivo: exemplificar a estrutura padrão de um programa escrito em C
       //Entrada: nenhuma
       //Saída: mensagem de sucesso no primeiro programa 
    principal
	//Declarações
        
    
        //Instruções
    
        escreva("Esse é o meu primeiro programa!!");
    
    fimPrincipal

 

A transformação deste algoritmo em um programa em C é apresentada na sequência. Observe que as estruturas se mantém, apesar de conterem alguns simples detalhes importantes que as diferenciam.

 
    /*SÍNTESE
        Objetivo: exemplificar a estrutura padrão de um programa escrito em C 
        Entrada: nenhuma
        Saída: mensagem de sucesso no primeiro programa
    */
    
    #include <stdio.h>   // inclusão da biblioteca padrão de entrada e saída
    
    void main (void)       // inicio do programa - função main()
    {
       // abertura do bloco principal da função main()
        
       // DECLARAÇÕES
    
              /* declarações das variáveis e constantes */
    
       // INSTRUÇÕES
    
        printf("Esse é o meu primeiro programa!!"); // função de escrita na tela
    
        getch();                          // força uma parada para leitura
        
    }                          // final da função main(), logo fim do programa 
    
 

Com a elaboração do algoritmo, seguido de sua tradução para a linguagem C, é possível identificar algumas descrições diferentes que são muito importantes para o programa em C. Acompanhe com atenção alguns cuidados importantes na elaboração de um programa fonte nesta linguagem:

 
  • No início do programa o pré-processador deve ser acionado, por meio do código #, para incluir alguma biblioteca que seja necessária ao código, ou programa proposto;
  • O bloco de instrução é iniciado pela abertura de uma chave ( { - Início) e encerrado pelo fechamento da chave (} - Fim);
  • Um programa em C sempre terá ao menos um subprograma, a função main, pois é a partir dele que tudo é executado;
  • Toda instrução termina com um ponto e vírgula (;);
  • Os comentários a serem inseridos no programa fonte são antecedidos pelos códigos (// - comentário até o final da linha) ou entre /* e */ que insere um comentários a partir do /* até o seu final no símbolo */.
 

No exemplo anterior foi possível acompanhar a elaboração de um algoritmo e sua tradução para a linguagem C, onde ambos estão respeitando as regras de sintática, semântica e a organização na descrição do programa.

 

INTRODUÇÃO BÁSICA ÀS ENTRADAS E SAÍDAS

 

A expressão ENTRADA significa, para a área de programação, todos os dados que serão informados ao computador através dos dispositivos de entrada acoplados a ele (teclado, mouse, scanner, etc.). Existe porém um dispositivo padrão para a leitura de dados na Linguagem C, o teclado, que sempre é acionado para ler valor(es) quando não existe nenhuma especificação. A SAÍDA representa todo dado que é passado do computador para o usuário por meio dos respectivos dispositivos (monitor, impressora, caixas acústicas, discos, etc.). Da mesma forma, esta linguagem também possui um dispositivo padrão de saída, sendo ele o monitor.

 
Quando o usuário digita algum dado no teclado do computador, ele está fornecendo informações para o mesmo, através do dispositivo de entrada padrão. Com isso o computador poderá usar estes dados para processar as informações desejadas, apresentando os resultados obtidos ao usuário.

 

Esta apresentação acontecerá através de um dispositivo de saída, podendo ser o próprio monitor de vídeo, dispositivo padrão de saída em C, caso nenhum outro seja especificado pelo usuário.
 

Conhecendo a importância da comunicação do computador com seus usuários, assim como dos usuários para com o computador, será esclarecida a seguir as instruções em C que possibilitam a entrada e saída de dados no computador

 

 

Instrução de Saída
 

A primeira instrução a ser apresentada consiste de uma função, ou seja, de um subprograma existente na biblioteca stdio.h existente em todos os compiladores da Linguagem C que respeitam o padrão ANSI.

 
# Função printf()
 

Esta função é responsável pela apresentação de dados no dispositivo padrão de saída da Linguagem C. Por se tratar de uma função, esta instrução não é uma palavra reservada da linguagem, mas sua utilização como nome de um outro recurso no programa (variável, constante, subprograma) pode dificultar a compreensão e manipulação do mesmo. A representação da forma geral desta função é mostrada a seguir:

 
printf("<expressão de controle>", lista de argumentos);
 

A expressão de controle é obrigatória e sempre estará entre aspas ("). Ela controla tudo que será apresentado ao usuário, usando de códigos especiais para apresentar dados de qualquer tipo, além de algumas orientações sobre o posicionamento da informação na tela. Para mostrar dados de qualquer tipo são utilizados os códigos precedidos do símbolo percentual (%), enquanto que as orientações na tela tem um código com o precedente com a barra invertida (\).

 

Na expressão de controle são inseridos os códigos correspondentes a apresentação desejada, consistindo assim na máscara que controlará a apresentação das informações ao usuário. Nesta máscara são definidos os tipos de dados a serem apresentados, além de qual a posição na expressão de controle que eles serão mostrados no monitor.

 

Cada código % deve referenciar um valor ou recurso (variável, constante, subprograma) especificado na lista de argumentos do printf. Esta lista é iniciada após a expressão de controle, sendo separada por vírgula (,). A vírgula também separa os diferentes elementos existentes nessa lista que são correspondentes a cada código percentual existente na expressão de controle.

 

Existem vários códigos % que referem-se a diferentes tipos de dados que podem ser manipulados, mas os relacionados a seguir serão suficientes para a aprendizagem inicial nesta linguagem de programação.

 
Código Significado
%d Inteiro
%f Real(float)
%c Caracter
%s String
%o Octal
%x Hexadecimal
%lf Real grande(double)
%% Mostra um %
 

A seguir, observe alguns exemplos que usam esta função de saída:

 
printf("Testar"); //apresenta somente a string da expressão de controle
printf("Tem %d valores",valor); //apresenta o valor inteiro na posição %d
printf("Valor = %f e o caracter de sexo de uma pessoa %c", 23.5, 'M'); //apresenta o valor real(float) na posição %f
printf("%s é legal","Maria"); // Apresenta o nome na posição do %s
 
# Função scanf()
 

Esta função faz a leitura dos dados informados pelo usuário. Ela possui a mesma organização da printf, mas fazendo a leitura dos dados, por isso sua manipulação ocorre sobre os dispositivos de entrada de dados, sendo o teclado acionado por esta função. Observe a representação da forma geral desta função:

 
scanf("<expressão de controle>", lista de argumentos);
 

Observe os exemplos de leitura de dados do usuário.

 
scanf("%d",&numero); //armazena um valor inteiro no endereço de NUMERO
scanf("%f%c",&valor, &sexo); // armazena um valor real e outro caracter
 

A leitura de um dado deve ser armazenada em uma variável, pois o valor informado poderá ser usado na realização de algum processamento do programa. Para que ele fique disponível para o programa é necessário, primeiro, a declaração da variável, que deve ter o tipo de dado coerente com a leitura desejada.

 

A leitura do dado deve ser armazenada no endereço de memória que o computador alocou para a variável declarada. Por isso o operador & é utilizado nesta função, armazenando o valor informado pelo usuário no correto endereço de memória onde tal variável foi criada pelo computador.

 

Analise o que algoritmo a seguir faz.

 
    algoritmo informacoesPessoais;
    
    //Síntese
       //Objetivo: ler e escrever dados
       //Entrada: uma idade, um salário e a letra inicial do sexo de uma pessoa
       //Saída: a idade, o salário e o sexo informado pelo usuário
    //Declarações         
           inteiro idade;
           real salario;
           caracter sexo;
    //Instruções
           escreva("Informe a idade: ");
	   leia(idade);
	   escreva("Informe o salário: ");
	   leia(salario);
	   escreva("Informe M para masculino ou F para feminino: ");
	   leiaCaracter(sexo);
	   escreva("Sua idade =  ", idade," e seu salário = ",salario);
	   escreval("A letra inicial do seu sexo = ",sexo);
fimPrincipal
 

Agora, observe a tradução do algoritmo em um programa em C.

 
    /*
      SÍNTESE
        Objetivo: ler e escrever dados 
        Entrada: uma idade, um salário e a letra inicial do sexo de uma pessoa
        Saída: a idade, o salário e o sexo informado pelo usuário
    */
    
    #include <stdio.h>  
    #include <conio.h>
    void main (void)       
    {
      //DECLARAÇÕES
           int idade;
           float salario;
           char sexo;
      //INSTRUÇÕES
          printf("Informe a idade: ");         
          scanf("%d",&idade);                                              
          printf("Informe o salário: ");            
          scanf("%f",&salario);                                     
          printf("Informe M para masculino ou F para feminino: ");            
          sexo = getch();
          printf("\nSua idade = %d e seu salário = %f ", idade, salario);
          printf("\nA letra inicial do seu sexo = %c",sexo);
          getch();    
    }              

 

As duas últimas instruções printf possuem um código de barra invertida, que controla o posicionamento na tela. Especificamente o código \n leva o cursor para a próxima linha. Este cursor identifica a posição onde serão apresentados os valores de saída desejados.

 
# Função getche()
 

Esta função faz a leitura imediata de um caractere do teclado, não utilizando a memória temporária (buffer) para armazená-lo. Ela permite ainda que o caractere pressionado seja mostrado na tela. Veja no exemplo a seguir a leitura de um caractere por meio desta função, sendo ele armazenado na variável LETRA.

 
    void main ()    // início do corpo da função principal
    {
      //DECLARAÇÕES 
         char letra;
    
      //INSTRUÇÕES
         letra = getche();    // retorna o valor lido e o atribui a LETRA  
    }
 
# Função getchar()
 

A leitura de um único caractere também é realizada por esta função, mas ela usa o buffer para efetuar esta leitura, sendo necessário pressionar a tecla ENTER após digitar a tecla desejada. A tecla digitada permanece na memória temporária (buffer) até que o ENTER seja pressionado, o que solicitará ao computador a cópia dos dados do buffer para a memória principal, memória esta que o computador utiliza para manipular os dados enquanto são processados. Observe a sintaxe similar da getchar() com as outras funções que fazem a leitura de um único caractere.

 
    void main ()    // início do corpo da função principal
    {
      //DECLARAÇÕES 
         char tecla;
      //INSTRUÇÕES
         tecla = getchar();    /* retorna o valor lido na variável TECLA
    }                              usando o buffer */           
 
Operadores Lógicos e Relacionais
 

Os operadores relacionais são usados para identificar o relacionamento existente entre dados, contribuindo muito com o processamento a ser efetuado por um programa.

 

O resultado da aplicação de um operador relacional sempre será lógico, ou seja, VERDADEIRO ou FALSO.

 

Na Linguagem C esses operadores respeitam a sintaxe apresentada na tabela a seguir:

 
Operador em Algoritmo Operador em C Significado da Operação
> > Maior do que
>= >= Maior ou igual a
< < Menor do que
<= <= Menor ou igual a
== == Igual a
!= != Diferente de
 

Observe a seguir alguns exemplos na aplicação dos operadores relacionais

 
Exemplo em Algoritmo Sintaxe do exemplo em C

valor == 0  // verifica se VALOR é igual a zero

max > 1 // verifica se MAX é maior que um

letra != 'A' // verifica se LETRA é diferente de 'A'

valor == 0

max > 1

letra!= 'A'

 

Os operadores lógicos de conjunção (e), disjunção (ou) e negação (nao) também possuem uma sintaxe diferente na Linguagem C. Observe na relação a seguir a sintaxe de cada um deles que permitem a elaboração de expressões relacionais mais complexas e abrangentes.

 
Operador lógico em Algoritmo Operador lógico em C
e &&
ou ||
nao !
 

Acompanhe na sequência a revisão das operações lógicas efetuadas sobre as tabelas verdades representadas a seguir. Suponha que os valores atribuídos as variáveis A e B sejam os representados por V (verdadeiro) e F (falso).

 
Operador E lógico em C
A B A && B
V V V
V F F
F V F
F F F

 

O exemplo a seguir mostra as operaçães relacionais na expressão proposta e seu resultado.

 
((5 > 5) || ((2 != 3) && (1 < 3))) => o resultado desta expressão é Verdadeiro
 

Sempre deve haver cuidado com a análise da expressão proposta, pois os parênteses interferem diretamente no resultado final, modificam a ordem da sequência alcançada por cada expressão, pois eles alteram a precedência das operações (prioridades), por exemplo:

 
3 + 5 * 2 = 13 mas com o uso dos parênteses pode-se ter que (3+5) * 2 = 16
 
Operador de atribuição
 

O operador de atribuição é utilizado para atribuir um valor a uma variável ou constante, somente na sua declaração, pois no decorrer do programa a constante não recebe nenhum outro valor. Este operador sempre armazena o valor, ou o resultado da expressão, que está a direita do símbolo de atribuição (um sinal igual =), armazenando este valor, ou resultado da expressão, na variável que está a sua esquerda.

 
Operadores Aritméticos
 

Os operadores aritméticos em C possuem a sua sintaxe especificada por meio dos símbolos identificados a seguir:

 
 

A operação de divisão de inteiros (div do algoritmo) em C acontece sempre que dois valores inteiros são divididos (/), como pode ser visto na comparação a seguir:

 
5 / 2 = 2 enquanto que 5.0 / 2 = 2.5
 

Os resultados destas operações são apresentados pela linguagem C, quando forem solicitados dessa forma. Por isso deve ter cuidado com as operações de divisão a serem solicitadas no programa, pois o resultado sempre estará relacionado a sintaxe e a lógica desejada na elaboração da expressão.

 

Acompanhe o algoritmo que efetua uma operação aritmética.

 
    algoritmo nomeAlgoritmo;
	
    //Síntese
       //Objetivo: Somar duas variáveis.
       //Entrada: Nenhuma.
       //Saída: Resultado da soma.
    principal   
    //Declarações
         inteiro valor_1,valor_2,resultado;
    //Instruções
         valor_1 = 35;
         valor_2 = 42;
         resultado = valor_1 + valor_2;
         escreva ("Total = ",resultado);
    fimPrincipal
 

Acompanhe agora a tradução deste algoritmo para o programa computacional em C.

 
    /*
      SÍNTESE
        Objetivo: Somar duas variáveis. 
        Entrada: Nenhuma.
        Saída: Resultado da soma.
    */
    
    #include <stdio.h>  
    #include <conio.h>
    void main (void)       
    {
      //DECLARAÇÕES
           int valor_1,valor_2,resultado;  //Declarações das variáveis
      //INSTRUÇÕES
          valor_1 = 35;
          valor_2 = 42
          resultado = valor_1 + valor_2;
          printf("Total = %d",resultado);   
    }       

Veja o resultado apresentado no monitor de vídeo do computador que está executando este programa.

 
 
Incremento e decremento
 

Os operadores de incremento ou decremento podem ser escritos de uma forma mais simplificada na Linguagem C. O incremento representa um simples contador que acrescenta um ao valor da variável inteira utilizada na expressão. Por exemplo:

 
contador = contador + 1;     equivale a contador++;
 

Estes operadores podem ser descritos de duas formas diferentes:

 
  • Pré-fixados (++contador)
  • Pós-fixados (contador++)
 

Estas diferenças são significativas, por isso acompanhe com atenção os exemplos a seguir:

 

Supondo os valores de x = 10; e y = 0;

 
  • Pré-incremento (pré-fixado)
 
y = ++x; equivale a x = x+1; primeiro x é incrementado de 1.
y = x; depois x é atribuído a y.
 

Seus valores finais, após as operações acima seriam de x e y igual a 11

 
  • Pós-incremento (pós-fixado)
 
y = x++; equivale a y = x; primeiro x é atribuído a y.
x = x+1; depois x é incrementado de 1.
 

Iniciando com os menos valores propostos acima, os valores finais para as operações de pós-incremento seriam de x igual a 11 e y igual a 10.

 

As mesma lógica envolve os operadores de decremento em C:

 
  • Pré-decremento
 
y = --x; equivale a x = x-1; primeiro x é decrementado de 1.
y = x; depois x é atribuído a y.
 

Seus respectivos valores finais são: x = 9 e y = 9.

 
  • Pós-decremento
 
y = x--; equivale a y = x; primeiro x é atribuído a y.
x = x -1; depois x é decrementado de 1.
 

Com os mesmos valores iniciais, x é encerrado com 9 e y com 10.

 
Operações de Atribuição Simplificadas
 

A forma como as operações de atribuição são descritas em uma expressão também podem ser simplificadas na Linguagem C, porém isso deve ser compreendido corretamente, pois esta representação pode tornar-se um complicador na compreensão das expressões.

 
Expressão Convencional Expressão Equivalente em C
x = x + y; x += y;
x = x - y; x -= y;
x = x * y; x *= y;
x = x / y; x /= y;
x = x % y; x %= y;
 
    /*
       SÍNTESE
           Objetivo: somar duas variáveis
           Entrada: valor das variaveis
           Síída: resultado da soma
    */
    
    #include <stdio.h>  
    #include <conio.h>
    
    void main( )
    {
      //DECLARAÇÕES
            int  numero_1, numero_2;
      //INSTRUÇÕES
            printf ("Informe o primeiro valor: ");
            scanf("%d",&numero_1);
            printf ("\nInforme o segundo valor: ");
            scanf("%d",&numero_2);
            numero_1 += numero_2;   /*equivalente a expressão
                                        numero_1=numero_1+numero_2 */
            printf ("\nValor 1 = %3d e Valor 2 = %3d", numero_1, numero_2);
            getch();    /* aguarda ser informada uma tecla
                             para encerrar o programa */
    }
 

Supondo que o usuário do programa digitou os valores 13 e 5, respectivamente, sendo a execução do programa demonstrada na representação do monitor de vídeo a seguir:

 
 

Atividade de Fixação

 

No intuito de fixar a aprendizagem iniciada por meio deste módulo e verificar como seu entendimento sobre este conteúdo está, estão sendo sugeridos alguns exercícios de fixação para serem resolvidos. Clique no link de exercícios ao lado, pois será por meio dele iniciada a lista de exercícios sobre os conteúdos estudados até este momento nesta disciplina.