Algoritmos e Lógica de Programação Linguagem C Entrada e Saída de dados Reinaldo Gomes reinaldo@cefet-al.br Linguagem de Programação C 1
Fluxo de Saída Padrão Saída Formatada: printf ( <stdio.h>) Tem a função de imprimir o conteúdo do seu argumento na tela do computador td Possui uma String de Controle de Formato, que descreve o formato da saída. %[flags][width][.prec] [L,h] type_ch Flags: controla o alinhamento de saída, sinais numéricos, preenchimentos com zero Width: Número mínimo de caracteres a imprimir (preenchendo com zeros ou brancos); Prec: Para cadeias de caracteres estabelece o máximo de caracteres a imprimir; para numéricos float ou double, indica o número de dígitos após o ponto decimal; para numéricos inteiros ou longos indica o número mínimo de dígitos a serem apresentados, preenchendo com 0 s. type_ch: Caracter indicador do tipo de argumento Linguagem de Programação C Strings de Controle %c caractere %d inteiro %e número em notação científica %f ponto flutuante %o octal %x hexadecimal %s string (cadeia de caracteres) %lf double 2
Fluxo de Saída Padrão printf() Formato geral: printf( SCF, argumentos); printf( O valor de x eh: %d, 2); printf( com a nota %d, fiquei com media %f, 3, 8.5);... Retorno printf() devolve o número total de bytes impressos em caso de sucesso ou EOF em caso de falha int i = 0; i = printf( LP1: aula %d, 5); // i recebe o valor 11 printf Imprimindo inteiros: São números que não possuem casa decimal (parte fracionária). 3
printf Imprimindo inteiros: Exemplos printf Aplicando: Faça um programa que leia os primeiros 16 números inteiros Decimal, octal e hexa 4
printf Imprimindo números reais (ponto flutuante): Números que possuem parte fracionária, ou seja, casas decimais printf Imprimindo números reais (ponto flutuante): Exemplos 5
printf Aplicando... Faça um programa que calcule e imprima o comprimento e a área de uma circunferência; Notação exponencial; Raio = 32.56cm e Pi = 3.14 (const) printf Imprimindo Strings e Caracteres: Char é diferente de String g( (não existe em C); String é um conjunto (vetor) de caracteres, com terminador nulo ( \0 ); Declaração: Char = ` // 1 caracter entre aspas simples Especificador de Conversão = %c. printf( %c, a ) String = // cadeia entre aspas duplas Especificador de Conversão = %s. printf( %s, String de teste ) 6
printf Imprimindo Strings e Caracteres: Exemplos printf Imprimindo Strings e Caracteres: Outros especificadores de conversão 7
printf Aplicando... Faça um programa que imprima os números de 1 a 10,dizendo se é par ou ímpar. Ao final, imprima a quantidade de caracteres que foram impressos printf Imprimindo Largura de Campo: Tamanho do campo; Inicialmente alinhado a direita. Exemplos 8
printf Imprimindo com o ponto de precisão printf Imprimindo sinalizadores (flags) Imediatamente a direita de um % 9
printf Imprimindo sinalizadores (flags) Imediatamente a direita de um % printf Utilizando literais e caracteres de controle \n nova linha \r volta ao início da linha atual \t tabulação horizontal(tab) \b volta uma posição sem apagar \a beep (alerta sonoro) \ aspas simples \ aspas \\ barra invertida %% Caractere de porcentagem \0 null 10
printf putchar Saída de caracteres: putchar #include <stdio.h> int putchar(int c); Escreve um caracter na saída padrão. Exemplos putchar( a ); putchar( \b ); putchar( b ); putchar( \7 ); Retorno putchar() devolve o próprio caracter em caso de sucesso ou EOF em caso de falha 11
Fluxo de Entrada Padrão Entrada Formatada: scanf #include <stdio.h> int scanf(const char *formato[, end1,...]); formato possui como em printf, sequências de formatação que são iniciadas por %, que vão indicar os campos a serem lidos; Caracteres brancos (, \t, \t, \n ), dentro da SCF, indicarão que todos os caracteres brancos na entrada devem ser descartados até que um caracter não branco seja encontrado; Para cada seqüência de formatação deve existir um endereço na lista de argumentos; Fluxo de Entrada Padrão Sequências de formatação têm o seguinte formato geral %[*][width][h l L]type_ch * : suprime a associação (descarta) o próximo campo do tipo especificado em type_ch width: Estabelece o número máximo de caracteres lidos para o campo h l L: Modificador do tipo default do argumento. h = int Curto l = long int para type_ch = d l = double para type_ch = f L = double longo para type_ch = f type_ch: Caracter indicador de tipo de argumento 12
scanf Lendo Inteiros scanf Lendo Inteiros 13
scanf Lendo Ponto Flutuante Exemplos scanf Lendo Caracteres Lendo Strings 14
scanf Lendo com Conjunto de Varredura Apenas lê caracteres pré-informados (leitura de strings) Lendo com Conjunto de Varredura Invertido: scanf Outros Exemplos Tamanho de Campo: Lê a quantidade especificada de caracteres 15
scanf Aplicando... Faça um programa que leia os três lados de um triângulo e diga se é um triângulo equilátero. gets Entrada de strings: gets #include <stdio.h> char *gets(char *s); Lê uma string da entrada padrão. Caracteres são lidos até que um new-line (ASCII 13) seja lido ( \0 ) Exemplo char str1[21]; gets(str1); t(t1) printf( %20s \n, str1); Retorno gets() devolve um apontador para s em caso de sucesso ou NULL em caso de falha 16
getch Entrada de caracteres: getch #include <stdio.h> int getch(void); Lê um único caractere da entrada padrão. Não ecoa na tela o caractere lido. Exemplo char ch; while ((ch = getch())!= 27) putchar(ch); Retorno getch() devolve o caractere lido pelo teclado getche Entrada de caracteres: getche #include <stdio.h> int getche(void); Lê um único caractere da entrada padrão e ecoa na tela. Exemplo char ch; while ((ch = getche())!= 27); Retorno getche() devolve o caractere lido pelo teclado 17
getchar Entrada de caracteres: getchar #include <stdio.h> int getchar(void); Lê um único caracter da entrada padrão. Aguarda até que seja digitado um new-line. Exemplo char ch; ch = getchar(); /* Digite 123<Enter> */ putchar(ch); putchar(getchar()); putchar(getchar()); putchar(getchar()); // o ultimo eh o \n Retorno getchar() devolve o caracter escrito em caso de sucesso ou EOF em caso de fim de arquivo ou de uma falha Entrada e Saída Básica Exemplos 18
Entrada e Saída Básica Exemplos Retorno scanf() devolve o número de campos convertidos com sucesso ou EOF em caso de encontrar um final de arquivo Entrada e Saída Básica Observações Além destas rotinas estudadas há várias outras funções de E/S na biblioteca C padrão que serão exploradas quando trabalharmos com arquivos. Embora estas rotinas sejam utilizadas para ler da entrada e escrever na saída padrão, é possível utilizálas para tratar arquivos, desde que se faça o redirecionamento da entrada ou saída padrão para o arquivo desejado: 19
Algoritmos e Lógica de Programação Linguagem C Entrada e Saída de dados Reinaldo Gomes reinaldo@cefet-al.br 20