Funções scanf e printf
Produzido por Gustavo BarbosaTeoria
Introdução
Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?
Nós já conhecemos a estrutura de um programa codificado na linguagem C e os seus recursos básicos para o armazenamento de dados. Tendo isso como base, nesse tópico nós iremos falar sobre duas funções específicas extremamente importantes, que são: scanf e printf.
Mas por que elas são tão importantes?
Pois é através delas que nós conseguimos fornecer dados para um programa realizar o seu processamento, e, quando o mesmo for finalizado, visualizarmos as alterações feitas.
Entrada e saída de dados
A entrada de um programa nada mais é do que a maneira com que um dado é inserido nesse programa para ser processado, já a saída de um programa é para onde esses dados vão após serem processados.
Nesse momento, um programa (editor de texto) está recebendo como entrada cada letrinha que teclo no meu teclado e processando esses caracteres para formar esse texto, exibindo-o formatado no meu monitor. Dessa forma, nós podemos afirmar que o meu teclado é o dispositivo de entrada dos dados desse programa, enquanto o meu monitor é o dispositivo de saída dele.
Esse cenário que nós acabamos de descrever é um dos mais básicos da programação, mas por quê?
Porque é aquele que nós mais utilizamos quando estamos aprendendo a programar, onde o dispositivo de entrada é o teclado e o de saída o monitor.
Mas é importante lembrar que não existe só um jeito de obter e exibir dados de um programa, aqui embaixo estão alguns exemplos de como isso pode acontecer:
- Em uma chamada, o microfone é o dispositivo de entrada que processa a sua voz e a emite no alto-falando (dispositivo de saída) do outro lado da conversa;
- Em um carro, o sensor de velocidade é o dispositivo de entrada para um programa que processa os sinais de velocidade e os exibe em forma de números no painel digital do carro, que por sua vez é o dispositivo de saída;
- No ônibus, o nosso cartão magnético é outro mecanismo de entrada para um programa que processa os dados embutidos no cartão e os exibe no monitor da catraca após o débito no saldo, nesse exemplo o monitor da catraca é os dispositivos de saída.
Viu como podemos pensar em inúmeros exemplos?
Biblioteca stdio
Você lembra o que é uma biblioteca?
Caso tenha se esquecido, uma biblioteca nada mais é do que um monte de códigos prontinhos para uso. No caso da biblioteca stdio, esses códigos tratam a entrada e saída de dados de um programa.
Uma coisa que devemos saber é que esses códigos prontos são disponibilizados através de funções, que nós só iremos ver nos últimos tópicos. Então, considere nesse momento que uma função é o nome que nós damos para uma funcionalidade, essa que é disponibilizada pela biblioteca.
Tendo isso em mente, o que nós podemos fazer com a biblioteca stdio?
Abaixo estão as principais funções presentes nessa biblioteca:
- scanf(): função responsável por ler um dado do teclado e imediatamente atribuí-lo a uma variável;
- printf(): função responsável por imprimir algo na tela, pode ser um texto ou o conteúdo de uma variável ou constante.
Incluindo uma biblioteca
Para nós utilizarmos a biblioteca stdio precisamos incluir um arquivo que fala para o nosso programa todas as funções que aquela biblioteca disponibiliza, nós chamamos esse arquivo de cabeçalho.
Tá bom Guga, mas onde incluímos esse arquivo?
Simples! No espaço que nós reservamos para a inclusão de bibliotecas quando definimos a anatomia de um programa, olha ela aqui:
E essa inclusão é feita da seguinte forma:
Basicamente, nós digitamos o comando de inclusão #include e entre os sinais de menor e maior digitamos o nome da biblioteca que queremos incluir seguido de .h, que é a extensão para arquivos header (cabeçalho).
Prontinho, a biblioteca foi incluída e agora nós podemos usar as funções que ela disponibiliza em nosso programa.
Função scanf
A função scanf é utilizada para ler algum dado digitado pelo usuário. Ou seja, sempre que esse comando for usado, o programa irá pausar e esperar a entrada de um dado via teclado, que quando inserido será armazenado em uma variável.
Para ficar mais fácil de visualizar, dá uma olhadinha nesse trecho de código:
Nele, nós declaramos uma variável numero e a inicializamos com o valor 0. Em seguida, um comando scanf é executado (linha 05).
O que isso significa?
Que o programa nesse momento está pausado e esperando algum dado do tipo int como entrada, que ao ser digitado será armazenado na variável numero.
Com esse exemplo, podemos explicar agora como o comando scanf é configurado. A primeira coisa que nós fazemos é digitar scanf, em seguida e entre parênteses digitamos entre aspas duplas a abreviação do tipo do dado esperado. Por fim, separado por vírgula, informamos o local que esse dado será armazenado antecedido do operador & (e comercial).
Nós temos as seguintes abreviações de tipos:
- %d para o tipo int;
- %f para o tipo float e para a variação double;
- %c para o tipo char;
- %lld para a variação long long int.
Vamos para mais um exemplo:
E se agora nós precisássemos ler como entrada um dado do tipo char?
Nós digitaríamos scanf e entre parênteses e aspas duplas colocaríamos a abreviação do tipo char, que é: %c. Além disso, separado por vírgula e antecipado do operador &, colocaríamos o local em que esse dado, que no caso do exemplo é a variável caractere.
De maneira geral, a utilização da função scanf é feita da seguinte forma:
Função printf
A função printf é utilizada para imprimir alguma informação na tela. Isso pode ser feito de três forma diferentes:
- Apenas texto;
- Apenas variáveis ou constantes;
- Texto com dados de variáveis ou constantes.
A primeira forma, consiste em apenas digitar o comando printf e entre parênteses e aspas duplas escrever aquilo que deverá ser impresso, por exemplo:
Igualzinho como fizemos quando desenvolvemos o nosso primeiro programa!
Vale ressaltar que o \n não é obrigatório, ele apenas sinaliza para o programa que naquele ponto da impressão uma linha deve ser pulada (quebra de linha). Isso ajuda a imprimir coisas mais organizadas.
A segunda forma, consiste em imprimir só os dados que estão armazenados em variáveis ou constantes, olha como podemos fazer isso:
Nessa forma de impressão, lembre-se do comando scanf em que a única diferença é a não utilização do operador & (e comercial). Basicamente, nós temos que escrever o comando printf e entre parênteses e aspas duplas colocarmos a abreviação do tipo da variável que será impressa. Por fim, separado por vírgula, escrevemos o nome da variável.
No terceiro e último caso, temos o misto entre as duas formas:
Onde escrevemos aquilo que queremos imprimir e adicionamos a abreviação dos tipos apenas onde dados armazenados por variáveis ou constantes deverão ser impressos. No caso do exemplo, como duas abreviações de tipo foram referenciadas, após o fechamento das aspas duplas e separado por vírgula uma lista das variáveis que foram referenciadas (nesse caso duas) também separadas por vírgula deve ser seguida.
Que tal resolvermos alguns exercícios de fixação agora? É uma ótima forma de não deixar esse novo conhecimento cair no esquecimento (até rimou).