O material dessa página deverá servir como apoio à disciplina de Introdução a Linguagem de Programação (2COP005), e está sujeito a constantes modificações.
Exemplo de template (modelo) padrão para ser usando nas implementações de C:
#include <stdlib.h>
#include <stdio.h>
int main()
{
// Seu código vai aqui!
// ...
system("pause");
}
As bibliotecas stdlib.h e stdio.h contém funções importantes em C que serão utilizadas ao longo do curso. Sempre as inclua no início dos seus programas.
Todo programa escrito em C deve conter a função main, que é o ponto de entrada do seu programa. Sem esta função, o compilador não sabe por onde iniciar e irá gerar um erro.
A função system("pause") serve para parar a execução do seu programa. Isso impede que a janela se feche sem que você consiga ver o resultado. Note que irá aparecer a frase "Press any key to continue ..." ou "Pressione qualquer tecla para continuar ...".
Especificadores de formato:
Códigos especiais:
Exemplo de programa que cria, atribui e imprime na tela o valor de 3 variáveis de tipos diferentes:
#include <stdlib.h>
#include <stdio.h>
int main()
{
// Criação de variáveis de diversos tipos
int x;
float y;
char z;
// Atribuição
x = 100;
y = 98.125;
z = 'R';
// Impressão
printf("Variavel tipo inteiro: %d \n",x);
printf("Variavel tipo ponto-flutuante: %f \n",y);
printf("Variavel tipo caractere: %c \n",z);
system("pause");
}
Assim como no printf, o primeiro argumento do scanf é uma string de formato. Nesta string são usados os mesmos especificadores de formato da função printf. Já os outros argumentos referem-se a ponteiros, e por isso deve-se utilizar "&" antes de cada um.
Abaixo segue um exemplo de programa para a leitura de valores inteiros:
#include <stdlib.h>
#include <stdio.h>
int main()
{
// Criação de variáveis
int a, b, r;
// Leitura de valores
printf("Entre com um valor inteiro: ");
scanf("%d",&a);
printf("Entre com outro valor inteiro: ");
scanf("%d",&b);
// Resultado da leitura
printf("Inteiro a recebeu %d, e inteiro b recebeu %d\n",a,b);
// Operação com os resultados
r = a + b;
printf("A soma de a + b resulta em %d",r);
system("pause");
}
Quando o scanf é usado duas vezes seguidas com o especificador %c (para variáveis tipo char), a segunda leitura apenas captura o ENTER pressionado pelo usuário no intuito de confirmar a entrada anterior. Assim, se o usuário pressionou a tecla "d" seguida de ENTER, no primeiro scanf a variável será associada a "d", e no segundo scanf, a "\n". Para um melhor entendimento, execute o exemplo abaixo:
#include <stdlib.h>
#include <stdio.h>
int main()
{
char a, b;
printf("Entre com o primeiro caractere: ");
scanf("%c",&a);
printf("Entre com o segundo caractere: ");
scanf("%c",&b);
printf("Caractere a: %c\nCaractere b: %c",a,b);
printf("Fim");
}
EXPLICAÇÃO DA SAÍDA: Note pelo exemplo que, ao digitar "e" e pressionar enter, o caractere "e" é corretamente adicionado a variável a, porém a quebra de linha (ou "\n") proveniente do ENTER é instantaneamente associada a variável b. Isso pode ser comprovado através das impressões por printf que se seguem. Perceba que a string "Caractere a: e" é escrita na mesma posição onde deveria ser lida a segunda entrada do usuário. Além disso, a string "Caractere b: " é impressa na linha subsequente, seguido de "Fim" uma linha depois. Entretanto, note que não existe no código um "\n" entre essas duas strings, o que indica que "b" foi associado a uma quebra de linha.
Para contornar essa situação, utilize a função getchar() logo abaixo do scanf, como no exemplo:
#include <stdlib.h>
#include <stdio.h>
int main()
{
char a, b;
printf("Entre com o primeiro caractere: ");
scanf("%c",&a);
getchar();
printf("Entre com o segundo caractere: ");
scanf("%c",&b);
getchar();
printf("Caractere a: %c\nCaractere b: %c",a,b);
printf("Fim");
}
A função getchar() consome o "\n" que é digitado pelo usuário quando pressiona ENTER.