ATENÇÃO: Material em construção!

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.

Material da disciplina

Slides

Template padrão

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 ...".

Impressão de tipo usando printf()

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");
}
Variavel tipo inteiro: 100 Variavel tipo ponto-flutuante: 98.125000 Variavel tipo caractere: R

Leitura de entradas usando scanf

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");

}
Entre com um valor inteiro: 10 Entre com outro valor inteiro: 20 Inteiro a recebeu 10, e inteiro b recebeu 20 A soma de a + b resulta em 30
Observe que, dentro do scanf, usa-se &a ao invés de simplesmente a.

Caso particular para leitura de caracteres

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");

}
Entre com o primeiro caractere: e Entre com o segundo caractere: Caractere a: e Caractere b: 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");

}
Entre com o primeiro caractere: e Entre com o segundo caractere: d Caractere a: e Caractere b: dFim

A função getchar() consome o "\n" que é digitado pelo usuário quando pressiona ENTER.