Programação Computacional
Aula 8: Entrada e Saída pelo Console
Profa. Madeleine Medrano
[email protected]
Objetivo

Apresentar conceitos básicos de entrada e saída de
dados para que os exemplos e exercícios iniciais
possam ser construídos.

Um programa que não fornece resultados nem pede
valores para operar não deve ter grande utilidade.

A entrada de dados será feita pelo teclado e a saída
poderá ser vista na tela do computador
Roteiro

Introdução

Biblioteca Padrão

Saída – A função printf

Entrada – A função scanf

Lendo e Imprimindo Caracteres
Funções getchar e putchar





Lendo e Imprimindo Cadeias de Caracteres
Funções printf e scanf
Lendo e Imprimindo Cadeias de Caracteres
Com Funções gets e puts
Introdução







Em C, quando um programa se inicia, normalmente três fluxos ou
arquivos de dados são abertos para operações de entrada e
saída, um para imprimir mensagens de erro ou diagnóstico.
O fluxo de entrada (entrada padrão) está conectado ao teclado
( standard input abreviadas, stdin)
O fluxo de saída (saída padrão) e o de mensagens de erro, para
serem visualizados estão conectados ao monitor.
( standard output abreviadas, stdout)
O fluxo de erros é chamado de saída padrão de erros
( standard error output abreviadas, stderr)
Biblioteca Padrão

Na linguagem C não existem comandos de entrada e saída.

As operações de entrada e saída são executadas com auxilio de
variáveis, macros e funções especiais.

Para termos acesso à biblioteca que contem estas ferramentas o
programa deve conter a declaração

A diretiva #include instrui o compilador a ler o arquivo indicado entre ‘<’
e ‘>’ e processá-lo como se ele fosse parte do arquivo original e seu
conteúdo estivesse no ponto onde a diretiva foi escrita.
Saída – A função printf

A função printf faz com que dados sejam escritos na saída
padrão, que normalmente é a tela do computador.

O protótipo da função é:

Onde os argumentos arg1, arg2 ....... São impressos de acordo
com o formato indicado pela cadeia de caracteres que compõe
controle.
A função retorna o número de caracteres impressos, não
incluindo o nulo em vetores de caracteres.
No caso de um erro de saída um valor negativo é retornado.


Exemplo da função printf
Códigos de Conversão para
escrita de dados
Saída – A função printf

Entre o caractere % e o código de conversão podem ser
inseridos caracteres que alteram o formato.

A seguir são mostrados a ordem de inserção destes caracteres e
seu significado

Modificadores: usados logo após o caractere %
‘-’, ‘+’ , ‘#’ , ‘0’ ,

Largura: especifica o tamanho mínimo do campo onde o
argumento será impresso, 8 espaços são reservados para
imprimir o resultados
Saída – A função printf
Precisão: este numero tem diferentes significados dependendo
do código usado.

Caracteres: especifica o número máximo de caracteres de uma cadeia de
caracteres a serem impressos.

Ponto flutuante: no caso do formato (e, E, f) é o numero de dígitos a serem
impressos a direita do ponto, ou seja numero de casa decimais.

Inteiros: no formato de inteiros (d,i,o,u,x,X) a precisão especificou o número
máximo de dígitos a serem impressos.
Comprimento: Modifica os formatos da seguinte maneira%
L é modificado para long double, h para tipo short int, l indica
que o dado é do tipo long int.
Saída – A função printf
Saída – A função printf
Entrada – A função scanf

A função scanf pode ser utilizada para entrada de dados a partir
do teclado e seu protótipo é:

Uma diferença fundamental que existe entre esta função e a
função printf está nos argumentos que vêm depois do controle

No caso de scanf os argumentos são os endereços das variáveis
que irão receber os valores lidos e não, como em printf, as
próprias variáveis.
A indicação que estamos referenciando um endereço e não a
variável se faz pelo operador &. Por exemplo, o comando espera
que dois valores inteiros sejam digitados no teclado.

Entrada – A função scanf
Lendo e Imprimindo Caracteres

Funções getchar e putchar

Para ler e escrever caracteres do teclado as funções de entrada e saída
mais simples são getchar e putchar, que estão na biblioteca stdio.h e
cujos protótipos são os seguintes:

Apesar da função getchar retornar um parâmetro inteiro é possível
atribuir este valor a uma variável do tipo char porque o código do
caractere esta armazenado no byte ordem mais baixa.

O mesmo acontece com a função putchar que recebe um inteiro, mas
somente o byte de ordem mais baixa é passado para a tela do
computador.
Exemplo de uso de getchar e
putchar
Exemplo de uso de getchar e
putchar
Lendo e Imprimindo Cadeias de
Caracteres





Uma cadeia de caracteres (string) em C é um vetor de
caracteres.
Os Vetores são conjuntos de caracteres em que cada um deles
pode ser acessado independentemente dos outros por meio de
um endereço.
Para usar cadeias é preciso primeiro definir um espaço para
armazená-las.
Para isto é preciso declarar o nome, o tamanho e o tipo de vetor.
Quando definir o tamanho do vetor de caracteres, observar que
toda cadeia em C termina com o caractere NULL(‘\0’). que é
automaticamente inserido pelo compilador. Portanto o vetor
nome deve ser definido com um espaço a mais.
Lendo e Imprimindo cadeias
com scanf e printf

O programa mostra como ler e imprimir uma cadeia usando os
comandos scanf e printf respectivamente.

Quando se usa scanf para ler uma cadeia deve-se empregar o código
de conversão %s.

Este comando não lê o nome todo, mas encerra a leitura dos caracteres
quando encontra um caractere espaço (ou branco).

Mas como ler para um vetor um nome inteiro, ou uma cadeia que
contenha brancos? Para isto deve-se usar a função gets que será nosso
próximo assunto.
Lendo e Imprimindo cadeias
com scanf e printf
Lendo e Imprimindo cadeias
com gets e puts

Direferente do comando scanf a função gets lê toda a cadeia até
que a tecla <enter> seja digitada.

No vetor são colocados todos os códigos dos caracteres lidos
executando-se o da tecla <enter>, que não é armazenado sendo
substituído pelo código NULL.

O comando que substitui o scanf é gets(nome). O protótipo da
função gets é o seguinte:
Lendo e Imprimindo cadeias
com gets e puts

A função gets retorna str caso nenhum erro ocorra.

Caso o final do arquivo seja encontrado antes de qualquer
caractere ser lido, o vetor permanece inalterado e um ponteiro
nulo é retornado.

Caso um erro ocorra durante a leitura, o conteúdo do array fica
indeterminado e novamente um ponteiro nulo é retornado.
A função puts tem o seguinte protótipo:

Lendo e Imprimindo cadeias
com gets e puts

Ela imprime a cadeia apontando por str.

O programa é semelhante ao exemplo anterior com as
funções printf substituídas por puts.

Observe que a impressão sempre termina e passa
para a próxima linha.

A função puts retorna um valor positivo caso nenhum
erro ocorra. Em caso de erro é retornado um valor
negativo.
Exemplo da função gets e puts
A função fgets

A função gets pode abrir porta para invasões de computadores
pelo fato dela não controlar o número de caracteres lidos de
stdin.

Apesar do usuário definir um tamanho máximo para o vetor que
irá armazenar os caracteres a função ignora o limite e continua
lendo valores até que o usuário digite o caractere <enter>

Para evita este problema recomenda-se o emprego da função
fgets cujo protótipo é
A função fgets

A Função fgets lê no Maximo um
caractere a menos que o numero de
caracteres especificados no parâmetro
tam a partir do fluxo de entrada de
dados.
Atividades

Escreva um programa que declare variáveis do tipo int, char, float
inicializa-as, e imprima os seus valores.

Escreva um programa que leia 3 números reais e imprima a
média aritmética destes números.

Faça um programa que utilize a função gets para ler duas
cadeias de tamanho até 20 e em seguida às escreva na linha de
baixo, uma ao lado da outra e separadas por “/-/”;
Fim da apresentação

Obrigada pela atenção
Download

baixar slides