ENTRADA E SAÍDA DE DADOS
O objetivo desta aula é introduzir duas funções básicas da biblioteca de entrada e saída padrão do C (stdio.h): printf e scanf. Essas duas funções serão utilizadas recorrentemente durante todo o semestre, de modo que seu entendimento é muito importante.Além disso, essa aula trás o conceito de variável, imprescindível para a manipulação de números em C.
Partindo do programa da aula passada: #include <stdio.h>
int main(void) {
printf("Bem vindos a Processos Numericos!!\n"); system("PAUSE");
return 0; }
Programa 1 Um programa simples utilizando printf.
Nesse programa percebemos como é fácil imprimir textos em C.
Você pode ainda não saber, mas a expressão entre aspas duplas dentro da função printf é chamada string de caracteres, ou simplesmente string. Vamos aprender mais sobre strings no decorrer da disciplina. Pela saída do programa, apresentado na Figura 1, é possível notar o “pedaço” \n da string é omitido.
Figura 1 Resultado do programa compilado.
\n é um caractere de controle, e sua função é quebrar uma linha no terminal. Por exemplo, tente compilar novamente o programa substituindo a string original por printf("Bem vindos \na Processos \nNumericos!!\n"); e observe o resultado.
Exercício 1: Substitua printf por Printf e tente recompilar o programa. O que ocorre?
Explicação: C é dita uma linguagem case sensitive, i.e., ela é sensível a caixa utilizada (maiúsculas/minúsculas). O que ocorreu foi que o compilador não reconheceu a função Printf, gerando um erro de compilação. Nunca se esqueça disso na hora de escrever um programa.
Declarando e imprimindo variáveis
Sempre que se deseja operar com números em C, variáveis devem ser utilizadas.
Diferentemente do que ocorre em algumas linguagens, em C essas variáveis devem ser declaradas. Especificamente, em C as variáveis devem ser declaradas no início de um bloco de código. Um bloco de código é delimitado por chaves. Observe o exemplo:
#include <stdio.h> int main(void) {
int numero; //assim uma variável é criada
numero = 83; //o valor 83 é atribuído a variável
printf("Imprimindo um numero qualquer: %d\n", numero); system("PAUSE");
return 0; }
Programa 2 Escrevendo números.
Observe que uma variável foi declarada na primeira linha do bloco dentro da função main. Em C, é necessário declarar o tipo da variável, através do uso de uma palavra chave (no caso do programa foi declarada uma variável com o nome número do tipo int). Aprenderemos mais sobre os tipos de armazenamento mais adiante. Por hora é importante lembrar que a definição de variáveis segue sempre a mesma regra, i.e.:
tipo_da_variável nome_da_variável; É possível ainda inicializar a variável antes de utilizá-la. Declarando-a:
tipo_da_variável nome_da_variável = valor_inicial_da_variável; Dessa forma, uma variável é criada com o valor inicial informado. Compile o seguinte programa:
#include <stdio.h> int main(void) {
int numero = 83;
printf("Imprimindo numero: %d\n", numero); numero = 20;
printf("Imprimindo novamente: %d\n", numero); system("PAUSE");
return 0; }
Programa 3 Escrevendo números 2.
Saída de Dados: Mais sobre printf
Atente agora que o que está dentro dos parênteses da função printf do Programa 1 é diferente do que é visto no Programa 2 e Programa 3. A diferença não está somente na string. Agora são adicionados outros parâmetros a função. A string utilizada em printf é chamada de
string de controle. A string de controle pode conter os chamados comandos de formatos. Esses
comandos de formatos são delimitados pelo símbolo de porcentagem %. Existem muitos comandos de formato em C.
Tabela 1 Comandos de formato (retirado de SCHILDT, H. C., "C: Completo e Total")
Não se preocupe nessa aula com os comandos de formato. Eles serão mais bem entendidos enquanto aprendermos mais sobre tipos de dados.
É muito importante que o código de formato corresponda ao tipo especificado pela variável. Por exemplo, no caso do Programa 2 e Programa 3 foi declarada uma variável do tipo int. Logo, utilizou-se o código %d para imprimi-la no terminal, uma vez que se deseja imprimir um numero inteiro. Para exemplificar a importância do correto uso dos códigos na função printf compile o seguinte programa:
#include <stdio.h> int main(void) {
int qualquer_nome = 65;
printf("Imprimindo variavel: %d\n", qualquer_nome); qualquer_nome = 65;
printf("Imprimindo variavel novamente: %c\n", qualquer_nome); system("PAUSE");
return 0; }
Programa 4 Exemplo de Códigos de Comando.
letra/símbolo e número possui um equivalente numérico (lembre-se que para o computador tudo são números). Essa equivalência número-caractere pode ser facilmente obtida de uma tabela, a tabela ASCII (American Standard Code for Information Interchange) apresentada abaixo.
Tabela 2 Tabela ASCII. (http://www.asciitable.com/)
Portanto, o correto uso dos códigos de formato é muito importante. Quando se informa o código de formato %c, o compilador busca o caractere que equivale ao número 65 em decimal na tabela ASCII.
Por fim, pode-se ainda imprimir várias variáveis diferentes em um mesmo comando. Observe o exemplo: #include <stdio.h> int main(void) { int n1 = 10; int n2 = 25;
printf("Imprimindo varias variaveis: n1 = %d e n2 = %d\n", n1, n2); //as variáveis são associadas na ordem que aparecem!
system("PAUSE"); return 0;
}
A função printf relaciona os códigos na ordem em que as variáveis são apresentadas após a string de controle. Assim, de uma forma simplificada, podemos escrever um padrão para a função printf, assim como fizemos para a declaração de variáveis:
printf(string_de_controle, variáveis);
É bom lembrar que, na definição acima, as variáveis podem ser várias (separadas por vírgulas), bem como podem nem existir (ver Programa 1).
Entrada de Dados: A função scanf
Já vimos como imprimimos strings e números simples na tela. Agora, veremos como números são lidos em C.
Assim como existe uma função de saída de dados no C (printf) existe uma função semelhante que realiza a leitura de dados. Essa função – com nome sugestivo – é chamada de scanf. Segue um exemplo simples:
#include <stdio.h> int main(void) {
int num = 0;
printf("Digite um numero: "); //aqui eu informo ao usuário do programa o que fazer
scanf("%d", &num);//scanf faz a leitura dos dados do teclado, só aqui o dado é lido
printf("O numero digitado foi %d\n", num); system("PAUSE");
return 0; }
Programa 6 Utilizando scanf.
Note que a string de controle em scanf informa ao compilador o tipo da variável lida. Assim, o computador lê o número e assim que a tecla enter for pressionada retorna o número para a variável num.
Exercício 2: Digite um caractere ao invés de um número quando solicitado e observe o que ocorre.
Explicação: Como a entrada não foi um inteiro (especificado por %d), a função não foi executada, assim a variável não sofreu alteração.
Exercício 3: Faça um programa que leia dois números do teclado e os imprima na tela. Não se esqueça de informar ao usuário do programa o que fazer.
Exercício 4: Faça um programa que leia dois números do teclado e imprima sua soma na tela. Não se esqueça de informar ao usuário do programa o que fazer.