www.samueldiasneto.com: Linguagem C - básico

Pesquisar em todo o site
Se esta página lhe ajudar, considere fazer uma doação

Alô mundo !

Vamos escrever nosso programa Alô mundo em C.

Se você estiver usando o Linux abra qualquer editor de textos, pode ser o vi, o emacs, o gedit, etc.....e digite o código abaixo:

#include <stdio.h>

int main()
  {
     printf("Alô mundo!");
     return(0);
  }

Grave o programa com o nome de alo.c.

Para compilar o programa digite o seguinte na linha de comando:

$ gcc alo.c -o alo

Para executar o programa:

$ alo

Lembre-se que para executar o programa:
1. Ele deve estar no PATH
2. Você deve ter permissão de execução para o arquivo.

 

Se você estiver usando o Windows abra seu compilador favorito, digite e salve o código. Depois compile o código.

Ao executar o arquivo será exibida a mensagem Alo mundo!

 

Vamos analisar o código do programa:

#include <stdio.h>

Esta linha usa a diretiva #include para inserir o arquivo de cabeçalho stdio.h no seu programa. Os arquivos de cabeçalho são arquivos que contém definições, macros e funções que são muito utilizadas em todos os programas. Normalmente todo compilador C já vem com muitos arquivos de cabeçalho, mas você também pode escrever os seus. Os arquivos de cabeçalho tem a extensão .h

 

int main()

Esta linha indica a definição da função main. Um programa em C é formado por várias funções. Quando o programa é executado main é a primeira função a ser chamada, assim todo programa deve ter uma função main.

 

{

As chaves delimitam um bloco de comandos.

 

printf("Alo mundo!");

A função printf exibe o conteúdo do seu argumento na tela. No caso a mensagem Alo mundo !. Esta função faz parte do arquivo de cabeçalho stdio.h por isso ele foi incluído no programa.

O comando é terminado com um ; (ponto-e-vírgula). Todo comando em C deve terminar com ;

 

return(0);

Este comando indica que a função main retorna 0 (zero).

 

}

A última chave fecha o bloco de comandos da função main.

 

Se você não entendeu algum dos conceitos ditos acima não se preocupe, apenas aceite e no futuro você entenderá o porque disso tudo.


Tipos de dados

A linguagem C possui quatro tipos básicos de dados:


Constantes

Para definir uma constante usa-se a diretiva #define. Abaixo segue um exemplo do seu uso:

#include <stdio.h>
#define IDADE 34

int main()
  {
    printf("Sua idade é %d anos",IDADE);
    return(0);
  }

No exemplo acima, toda ocorrência da constante IDADE no código do programa será substituída pelo valor inteiro 34. É importante observar que entre #define e IDADE deve haver apenas um espaço, e entre IDADE e 34 também só deve haver um espaço.


Variáveis

As variáveis devem ser declaradas antes de ser usadas. Para declarar uma variável basta digitar seu tipo, seguido de espaço e de seu nome. Não esqueça o ponto-e-vírgula encerrando o comando.Exemplo:

int idade;
float nota;

As variáveis devem ser declaradas no início da função. Exemplo:

#include <stdio.h>

int main()
  {
    int idade;
    float nota1, nota2,nota3, nota4;

    printf("idade = %d",idade);
    return(0);
  }

Observe no exemplo acima que é permitido declarar mais de uma variável na mesma linha.


Nomeando constantes e variáveis

Para nomear as constantes e variáveis siga as seguintes regras:

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

Por conveção os nomes das constantes devem ser em letras maiúsculas e os nomes das variáveis em letras minúsculas.


Operadores aritméticos

OPERADOR OPERAÇÃO
+ soma
- subtração
* multiplicação
/ divisão
% módulo (resto da divisão inteira)

Operadores relacionais

OPERADOR SIGNIFICADO
> maior que
> = maior ou igual a
< menor que
< = menor ou igual a
= = igual a
! = diferente de

Operadores lógicos

OPERADOR SIGNIFICADO
&& e
|| ou

Comando de atribuição

Na linguagem C o comando de atribuição é o sinal de igualdade ( = ). Assim, a expressão:nome = samuel; atribui o valor "samuel" a variável "nome". Da mesma forma a expressão: nota = 7.68; atribui o valor "7.68" a variável "nota".


Saída de dados

A saída de dados é proporcionada pela função printf. Ela faz parte do arquivo de cabeçalho stdio.h, assim este arquivo deve ser incluído no programa para a utilização desta função.

Exemplo da utilização de printf:

#include <stdio.h>

int main()
  {
    int nr;
    char letra;

    nr = 5;
    letra = 's';

    printf("O valor de nr é %d\n",nr);
    printf("O valor de letra é %c\n",letra);

    return(0);
  }
Observe que para exibir as variáveis utiliza-se os especificadores de formato %d e %c. O caracter de escape \n provoca o avanço para a próxima linha. Após a vírgula estão os argumentos que substituirão os especificadores de formato. Estes argumentos são posicionais.

Os especificadores de formato básicos são:

%d  => int
%c => char
%f => float

Entrada de dados

A entrada de dados é feita com a função scanf. Sua sintaxe é:

scanf("EF",&VARIÁVEL);

onde EF é um especificador de formato e VARIÁVEL é variável onde o dado entrado será armazenado.

Exemplo:

#include <stdio.h> 

int main()
  {
    int nr;
    char letra[2];
    
    printf("Entre com o valor do número :");
    scanf("%d",&nr);
    printf("Entre com a letra :");
    scanf("%s",&letra);
    printf("O número é %d e a letra é %s\n",nr,letra);
    return(0);
  }


Inserindo comentários

Para inserir comentários em seu código basta colocá-los entre os sinais   /*   e   */

Exemplo:

/* Utilizando a função scanf() para entrada de dados */

#include <stdio.h> 

int main()
  {
    int nr;
    char letra[2];
    printf("Entre com o valor do número :");
    scanf("%d",&nr);
    printf("Entre com a letra :");
    /* O especificador de formato %s é usado com strings */  
    scanf("%s",&letra);
    printf("O número é %d e a letra é %s\n",nr,letra);
    return(0);
  }


Bloco de instruções

Todo bloco de instruções em C deve ser delimitado por chaves   {     }   .

Exemplo:

#include <stdio.h>

/* o conteúdo de main() é um bloco de instruções
 * por isso está entre chaves */
int main()
  {
   int idade;
   printf("Entre com a idade :");
   scanf("%d",&idade);
   /* outro bloco de instruções por isso está entre chaves */ 
   if(idade > 21)
     {
       printf("Você já é de maior !!!\n");
       printf("Você tem que arrumar um emprego !!!\n");
     }
   else
     printf("Você é de menor !!!\n");
   return(0);
  }


Desvio condicional

O desvio condicional é uma estrutura de fluxo onde o programa analisa uma condição e:

Em C esta estrutura é representada pelo comando if, cuja sintaxe é:

if (CONDICÃO)
  COMANDOS1
else
  COMANDOS2

Se CONDIÇÃO for verdadeira, COMANDOS1 serão executados, caso contrário, COMANDOS2 serão executados.

É importante saber como a linguagem C representa um valor verdadeiro ou falso. Para a linguagem C qualquer valor diferente de zero é verdadeiro e o valor zero é considerado falso. Assim, a análise: if (1) é verdadeira. E a análise: if (0) é falsa. Este conceito é muito usado na linguagem C pois muitas funções retornam valores inteiros.

Exemplo do uso de if:

#include <stdio.h>

int main()
  {
    int idade;

    printf("Entre com sua idade :");
    scanf("%d",&idade);

    if(idade > 21)
      printf("Você é de maior !!!\n");
    else
      {
        printf("Você é de menor !!!\n");
        printf("Tem que amadurecer !!!\n");
      }
    return(0);
  }
Observe que se o comando é único não há necessidade das chaves para delimitar o bloco de instruções.

Múltipla escolha

A estrutura de múltipla escolha é implementada pelo comando switch. Sua sintaxe é:

switch (VARIÁVEL)
   {
      case VALOR1: COMANDO1;
                          break;
      case VALOR2: COMANDO2;
                          break;
      .........................................................
      .........................................................
      default: COMANDO;
                      break;
  }

 O entendimento é o seguinte: a VARIÁVEL é comparada com cada VALOR especificado nos cases.  Se um VALOR igual a VARIÁVEL for encontrado, o referido COMANDO é executado. Se não houver nenhuma correspondência com os valores dos cases, o comando de default é executado.

O comando break deve existir pois, sem ele, os comandos abaixo são executados independente do teste.

Exemplo:

#include <stdio.h>

int main()
  {
    int opcao;

    printf("1. Pesquisar\n");
    printf("2. Comprar\n");
    printf("3. Sair\n");

    printf("Entre com sua opção :");
    scanf("%d",&opcao);

    printf("\n");

    switch (opcao)
      {
        case 1: printf("Você escolheu a opção 1. Pesquisar.\n");
                break;
        case 2: printf("Você escolheu a opção 2. Comprar.\n");
                break;
        case 3: printf("Você escolheu a opção 3. Sair.\n");
                break;
        default:printf("Você não escolheu nenhuma das três opções.\n");
                break;
      }    

    return(0);
  }


Repetição com teste no início

Esta estrutura é representada pelo comando while, cuja sintaxe é:

while (CONDIÇÃO)
    COMANDOS;

A CONDIÇÃO é avaliada e, caso seja verdadeira, os COMANDOS são executados. Então, a CONDIÇÃO é avaliada novamente e, caso seja verdadeira, os COMANDOS são executados de novo. Isto se repete até que a avaliação da CONDIÇÃO resulte em falso.

A característica importante deste tipo de construção é que, caso a CONDIÇÃO seja avaliada como falsa já na primeira vez, os COMANDOS não serão executados nenhuma vez.

Exemplo:

#include <stdio.h>

int main()
  {
    int nr;

    printf("Digite um número : (-1 para sair)");
    scanf("%d",&nr);

    while (nr != -1)
      {
         printf("Você digitou %d\n",nr);
         printf("Digite outro número (-1 para sair) :");
         scanf("%d",&nr);
      };
    printf("Você digitou -1 para sair.\n");
    return(0);
  }


Repetição com teste no final

Esta estrutura é implementada com o comando do. Sua sintaxe é:

do
  COMANDOS
while (CONDICÃO);
 
Os COMANDOS são executados e depois a CONDIÇÃO é avaliada. Caso, seja verdadeira os COMANDOS são executados novamente e a CONDIÇÃO novamente é avaliada. Este ciclo continua até que a CONDIÇÃO seja falsa.

A característica importante deste tipo de construção é que os  COMANDOS são executados pelo menos uma vez, independente da CONDIÇÃO.

Observe o código do exemplo da seção anterior usando do:

#include <stdio.h>

int main()
  {
    int nr;

    printf("Digite um número : (-1 para sair)");
    scanf("%d",&nr);

    do
      {
         printf("Você digitou %d\n",nr);
         printf("Digite outro número (-1 para sair) :");
         scanf("%d",&nr);
      }
    while (nr != -1);

    printf("Você digitou -1 para sair.\n");
    return(0);
  }

Observe que o código não funciona corretamente. Digite -1 logo de início para encerrar o programa e, mesmo assim as instruções do laço do são executadas. O que não ocorre no código do exemplo da seção anterior.


Repetição com variável de controle

Esta estrutura é implementada pelo comando for, cuja sintaxe é:

for(INICIALIZAÇÃO;CONDIÇÃO;INCREMENTO)
  COMANDOS;

o entendimento é o seguinte:

Exemplo:

#include 

int main()
  {
    int contador;
 
    printf("Exibindo os números de 1 até 50\n");
 
    for(contador=1;contador < 51;contador = contador + 1)
      {
        printf("%d ",contador);
      }
   
    printf("\n");
   
    return(0);
  } 
 

 

Se esta página lhe ajudou, considere fazer uma doação