Italo Info


Leitura e escrita

Como vimos nas aulas anteriores, para imprimir na tela do MS-DOS, basta chamar a função printf que depende da biblioteca que tem como arquivo de cabeçalho "stdio.h".

Assim como a função printf que é utilizada para escrita na tela do MS-DOS, existe, também, a função scanf que permite a leitura de dados digitados na tela do MS-DOS através do teclado.

A função scanf assim como a printf recebe um parâmetro string (texto entre aspas duplas) e uma ou mais variáveis. Atenção ao tipo da variável. Se o desejado é ler um valor inteiro, o primeiro parâmetro da função scanf deve ser "%d". Do mesmo modo, para leitura de valores, float, char ou string, o primeiro parâmetro da função scanf deve ser, respectivamente, "%f" para leitura de floats "%c" para leitura de caracteres.

Atenção: na chamada da função scanf, o primeiro parâmetro deve ser compatível com o tipo da(s) variável(is) colocada(s) a partir do segundo parâmetro.

Observe o exemplo abaixo:

scanf("%d", &n);

No exemplo acima é utilizada a função scanf para ler uma variável do tipo inteiro. Preste atenção a compatibilidade entre os tipos. O primeiro parâmetro especifica que tipo de dado deve ser lido (Nesse caso inteiro) e o segundo parâmetro é uma variável do tipo inteiro. Preste atenção que a variável inteira é precedida de &. Mais adiante será mostrada a razão para a necessidade desse & precedendo a variável a ser lida através do comando scanf.

Outro exemplo

#include <stdio.h> int main() { int n1, n2, soma, pot; printf("Informe um numero: "); scanf("%d",&n1); printf("Informe outro numero: "); scanf("%d",&n2); soma=n1+n2; printf("\nSoma = %d", n1+n2); printf("\nSoma = %d", soma); return 0; }

Observe o programa acima. São declaradas três variáveis inteiras. Logo após, é mostrada uma mensagem na tela do MS-DOS que solicita ao usuário do programa que informe um número e depois outro número. Preste atenção a os parâmetros da função scanf. Dois números são lidos e armazenados, respectivamente, nas variáveis n1 e n2. Depois disso, a soma dos valores lidos é armazenada na variável soma e o resultado da soma é mostrada de dois modos direrentes. Nos dois casos o valor da soma é o mesmo.

Agora, vejamos outro exemplo de formatação e escrita na tela de um número de ponto flutuante:

#include <stdio.h> int main() { float num = 2.567103; printf("\nDuas casas decimais....: %.2f",num); printf("\nQuatro casas decimais..: %.4f",num); printf("\nSeis casas decimais....: %.6f",num); printf("\n\nDeslocamento de 10.....: %10.2f",num); printf("\nDeslocamento de 10.....: %10.4f",num); printf("\nDeslocamento de 10.....: %10.6f",num); return 0; }

No exemplo acima, primeiro, o número é impresso 3 vezes, sendo que, na primeira impressão, o numero armazenado na variável num é impresso com 2 casas decimais. Na segunda impressão, o numero é impresso com 4 casas decimais e na terceira, com 6 casas decimais. Depois, é o número é impresso mais 3 vezes, sendo que, com um deslocamento de 10 espaços. Compile e rode esse programa acima para observar o resultado.

Abaixo um exemplo de programa que solicita que o usuário informe dois valores, armazene os valores em duas variáveis, mostre os valores e, após, inverte os valores fazendo a variável(1) ter o valor da variável(2) e a variável(2) ter o valor da variável(1). Para tanto é utilizada uma variável auxiliar, veja a seguir:

#include <stdio.h> int main() { int a, b, aux; printf( "Informe o primeiro numero: " ); scanf("%d",&a); printf( "Informe o segundo numero: " ); scanf("%d",&b); printf( "\nNumeros informados: %d %d", a, b ); aux = a; a = b; b = aux; printf( "\nNumeros invertidos: %d %d", a, b ); return 0; }

Exercícios

Use a função scanf para leitura!

1) Faça um programa que leia um número e imprima o número sucessor e o número antecessor. Ex: Se o número informado for 10, o sucessor é 11 e o antecessor é 9.

2) Faça um programa que leia os o raio de um círculo e mostre, com base no raio, a área do círculo. Dica: Use a constante M_PI da biblioteca "math.h" ou defina uma constante PI com o valor 3.14159.

Fórmula da área do círculo: A = PI * R^2, onde * é o sinal de multiplicação e ^ é o sinal de potênciação.

3) Faça um programa que leia três números e imprima a média aritmética entre eles.

4) Faça um programa que leia um número real e um valor de desconto. Depois, o programa deve calcular e mostrar o valor informado com desconto. Abaixo exemplo de saída:

Informe um número (R$): 50.5
Informe o desconto (%): 10.0

O número com desconto (R$): 45.45

5) Faça um programa que leia três números inteiros e informe quantos deles são pares.

6) Observe o programa abaixo:

#include <stdio.h> int main() { float n, parte_decimal, parte_fracionaria; printf( "Informe um numero real: " ); scanf( "%f", &n ); parte_decimal = (int)n; parte_fracionaria = n - parte_decimal; printf( "\nParte decimal: %.2f", parte_decimal ); printf( "\nParte fracionaria: %.2f", parte_fracionaria ); return 0; }
Compile e execute o programa acima no Dev-C++ e informe como número, por exemplo, 2.34 e, então, observe o resultado e tente entender o que o programa faz.

Chegamos ao final de mais uma aula, passe para a próxima...