Linguagem C: Entrada e Saída de Dados
Links relacionados: Programação em C
Função printf()
- Função de I/O, que permite escrever no dispositivo padrão (tela).
- A expressão de controle pode conter caracteres que serão exibidos na tela e os códigos de formatação que indicam o formato em que os argumentos devem ser impressos. Cada argumento deve ser separado por vírgula.
Sintaxe:
printf (“expressão de controle“, argumentos);
Caracteres Especiais:
\n : nova linha \t : tab \b : retrocesso \" : aspas \\ : barra \f : salta formulário \0 : nulo
Formato do argumento:
%d : inteiro (decimal) %e : notação científica %f : float (ponto flutuante) %o : octal %u : decimal sem sinal %x : hexadecimal %lf : double %c : caractere simples %s : string (cadeia de caracteres) %p : ponteiro
Exemplo 01
1#include <stdio.h>
2
3int main() {
4 printf("Este é o número dois: %d\n", 2);
5 printf("%s está a %d milhões de milhas do sol.\n", "Vênus", 67);
6}
Exemplo 02
1#include <stdio.h>
2
3// Observe que neste exemplo as variáveis não foram inicializadas
4
5int main() {
6 int i, j;
7 float x;
8 char c;
9 printf("%d ", i);
10 printf("%d %f ", j, x);
11 printf("%c\n", c);
12}
Exemplo 03
1#include <stdio.h>
2
3int main() {
4 // Observe que ele completa com espaços
5 printf("%2d\n",350);
6 printf("%4d\n",350);
7 printf("%6d\n",350);
8
9 /*
10 O primeiro número se refere a quantidade total de números
11 e o segundo é referente à precisão, casas depois da vírgula
12 */
13 printf("%2.2f\n", 123.332234);
14 printf("%10.4f\n", 123.332234);
15 printf("%15.6f\n", 123.332234);
16}
Exemplo 04
1#include <stdio.h>
2
3// Este exemplo mostra uma saída formatada estilo tabela
4
5int main() {
6 float v1, v2, t;
7 printf("%10s %10s %10s\n", "Valor 1", "Valor 2", "Total");
8 v1 = 8.0;
9 v2 = 95.3;
10 t = v1 + v2;
11 printf("%10.2f %10.2f %10.2f\n", v1, v2, t);
12 v1 = 843.0;
13 v2 = 1500.55;
14 t = v1 + v2;
15 printf("%10.2f %10.2f %10.2f\n", v1, v2, t);
16}
Exemplo 05
1#include <stdio.h>
2
3int main() {
4 // Completando com zeros à esquerda
5 printf("%04d\n", 21);
6 printf("%06d\n", 21);
7 printf("%6.4d\n", 21);
8 printf("%6.0d\n", 21);
9}
Exemplo 06
1#include <stdio.h>
2
3int main() {
4 // Imprimindo caracteres
5 // posição ASCII, char, exadecimal, octal
6 printf("%d %c %x %o\n", 'A', 'A', 'A', 'A');
7 printf("%c %c %c %c\n", 'A', 65, 0x41, 0101);
8}
Observação: A tabela ASCII possui 256 códigos de 0 a 255, se imprimirmos em formato caractere um número maior que 255, será impresso o resto da divisão do número por 256; se o número for 3393 será impresso A pois o resto de 3393 por 256 é 65.
Função scanf()
É uma função de I/O implementada em todos os compiladores C. Ela é o complemento de printf() e nos permite ler dados formatados da entrada padrão(teclado).
Sintaxe:
scanf(“expressão de controle”, argumentos);
A lista de argumentos deve consistir nos endereços das variáveis. C oferece um operador para tipos básicos chamado operador de endereço e referenciando pelo símbolo "&" que retorna o endereço do operando.
Operador de endereço &: A memória do computador é dividida em bytes, e são numerados de 0 até o limite da memória. Estas posições são chamadas de endereços. Toda variável ocupa uma certa localização na memória, e seu endereço é o primeiro byte ocupado por ela.
Exemplo 01
1#include <stdio.h>
2
3int main() {
4 int num;
5
6 // Lendo um número inteiro
7 printf("Digite um número: ");
8 scanf("%d", &num);
9
10 // Imprime na tela o valor do número, \n indica nova linha
11 printf("O número é %d\n", num);
12
13 // Imprime o local da memória onde a informação está armazenada (ponteiro)
14 printf("O endereço é %p\n", &num);
15 return 0;
16}
Exemplo 02
1#include <stdio.h>
2
3int main() {
4 int i, j;
5 float x;
6 char c;
7 char nome[30];
8
9 // Lendo um número inteiro
10 printf("inteiro i: ");
11 scanf("%d", &i);
12
13 // Lendo um número inteiro e em sequencia um float
14 printf("inteiro j e float x: ");
15 scanf("%d %f", &j, &x);
16
17 // Lendo um caracter, testar com o %c
18 printf("char c: ");
19 scanf("%s", &c);
20
21 // Lendo uma string, testar com uma string com mais de uma palavra
22 printf("string nome: ");
23 scanf("%s", nome);
24
25 // Mostrando as informações
26 printf("i = %d, j = %d, x = %f, c = %c, nome = %s", i, j, x, c, nome);
27 return 0;
28}
|
Exemplo 03
1#include <stdio.h>
2
3int main() {
4 float n1, n2, n3, media;
5
6 // Lê as notas. Digitar as três em sequẽncia dando espaço entre uma e outra
7 printf("Entre com as notas 1, 2 e 3: ");
8 scanf("%f %f %f", &n1, &n2, &n3);
9
10 // Calcula a média das notas
11 media = (n1 + n2 + n3) / 3;
12
13 // Imprime o resultado com apenas duas casas decimais
14 printf("Média: %.2f\n", media);
15}
Exemplo 04
|
1#include <stdio.h>
2
3int main() {
4 char nome[100];
5 printf("Entre com o nome: ");
6 // Le uma entrada de uma string contendo espaços também
7 scanf("%[^\n]s", nome);
8 // Limpa o buffer pra não dar problema com o ENTER
9 setbuf(stdin, NULL);
10 printf("O nome é %s.\n", nome);
11}
Função getchar()
- Função original de entrada de caractere dos sistemas baseados em UNIX.
- Armazena a entrada até que ENTER seja pressionada.
Exemplo
1#include <stdio.h>
2
3int main() {
4 char ch;
5 ch = getchar();
6 printf("%c\n",ch);
7 return 0;
8}
Função putchar()
- Escreve na tela o argumento do seu caractere na posição corrente.
Exemplo
1#include <stdio.h>
2
3void main() {
4 char c;
5 printf("digite uma letra : ");
6 c = getchar();
7 putchar(c);
8 putchar('\n');
9}
Observação: Há inúmeras outras funções de manipulação de char complementares, tais como isalpha(), isupper(), islower(), isdigit(), isespace(), toupper(), tolower().
Exercícios
Exercício 1
Construa um programa que tendo como entrada dois pontos quaisquer do plano P(x1,y1) e Q(x2,y2), imprima a distância entre eles.
A fórmula da distância é:
√((x2-x1)^2+(y2-y1)^2)
Resolução
1#include <stdio.h>
2#include <math.h>
3
4int main() {
5 float x1, y1, x2, y2;
6 float distancia;
7 printf ("Digite o valor de x1: ");
8 scanf ("%f", &x1);
9 printf ("Digite o valor de y1: ");
10 scanf ("%f", &y1);
11 printf ("Digite o valor de x2: ");
12 scanf ("%f", &x2);
13 printf ("Digite o valor de y2: ");
14 scanf ("%f", &y2);
15 distancia = sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2));
16 printf ("A distancia entre os pontos P1 e P2 e’ %.2f\n", distancia);
17}
Observação: Para compilar, linkar a biblioteca math.h com o parâmetro -lm conforme exemplo abaixo
gcc exercicio01.c -o ex01 -lm
Exercício 02
Faça um programa em C que mostre o resultado das seguintes expressões:
a) (-(-9) + sqrt((-9) * (-9) - 4 * 3 * 6)) / (2 * 3)
b) ((pow(3, 2) == 9) && (acos(0) == 0)) || (4 % 8 == 3)
Exercício 03
Escreva programas em C para converter uma temperatura dada em graus Fahrenheit para graus Celsius.
Exercício 04
Escreva programas em C para calcular o IMC (Índice de Massa Corpórea) a partir da entrada de dados pelo usuário.