Linguagem C (Parte 2)
-
Upload
daniel-barao -
Category
Engineering
-
view
161 -
download
0
Transcript of Linguagem C (Parte 2)
Introdução à Programação em Linguagem C
Rodolfo Riyoei Goya
http://rgoya.sites.uol.com.br
Modelo Abstrato de Programação
� Elementos Estruturais� Dados de Tipo Simples
� Dados em Estruturas Homogêneas
� Dados em Estruturas Heterogêneas
� Elementos Algorítmicos� Declaração
� Comandos de Entrada/Saída
� Comandos de Expressão
� Comandos de Decisão
� Comandos de Iteração
16.02.14Linguagem CRodolfo Goya 2
Comandos Básicos de Entrada/Saída
� Fazem a “comunicação” entre o programa e o mundo exterior, através dos dispositivos de entrada padrão (stdin) e saída padrão (stdout)
� Comandos básicos:� Saída de Caracter: putchar(), putc(), putch()
� Entrada de Caracter: getchar(), getc(), getch(), getche()
� Saída Formatada: printf()
� Entrada Formatada: scanf()
16.02.14Linguagem CRodolfo Goya 3
putchar()
� Envia um caracter para o dispositivo de saída padrão (stdout)
� Biblioteca stdio.h
� Equivalente a putc( char, stdout )
� Converte um valor de 8 bits segundo a tabela ASCII
� Pode enviar valores de constantes e variáveis:#include <stdio.h>
.
char c = ‘?’, d = 49;
putchar( c );
putchar( d );
putchar( 65 );
putc( ‘A’, stdout );
putch()
� Envia um caracter para o dispositivo de saída padrão (stdout - console)
� Biblioteca conio.h
� Converte um valor de 8 bits segundo a tabela ASCII
� Pode enviar valores de constantes e variáveis:#include <conio.h>
char c = ‘?’, d = 49;
putch( c );
putch( d );
putch( 65 );
putc( ‘A’, stdout );
getchar()
� Recebe um caracter do dispositivo de entrada padrão (stdin - console) ecoando o caracter recebido. Aguarda “Enter” para finalizar.
� Biblioteca stdio.h
� Equivalente a getc( stdin )
� Converte um valor de 8 bits segundo a tabela ASCII#include <stdio.h>
.
char c, d;
c = getchar();
d = getc( stdin );
getche()
� Recebe um caracter do dispositivo de entrada padrão (stdin - console) ecoando o caracter recebido. Não aguarda “Enter” para finalizar.
� Biblioteca conio.h
� Converte um valor de 8 bits segundo a tabela ASCII#include <conio.h>
.
char c;
c = getche();
getch()
� Recebe um caracter do dispositivo de entrada padrão (stdin - console) sem ecoar o caracter recebido. Não aguarda “Enter” para finalizar.
� Biblioteca conio.h
� Converte um valor de 8 bits segundo a tabela ASCII#include <conio.h>
.
char c, d;
c = getch();
d = getch();
printf()
� Exibe uma saída formatada para o dispositivo de saída padrão (stdout)
� Biblioteca stdio.h
� Exemplo#include <stdio.h>
.
int i = 10;
printf( “Este programa é bacana.” );
printf( “O valor de i é: %d”, i );
printf()
� Os marcadores iniciados com ‘%’ são substituídos por variáveis ou expressões listados em seguida no comando printf
� A ordem que os marcadores aparecem define a ordem das variáveis/expressões usadas para substituí-los.
� O formato geral dos marcadores é:� %[Flags][Largura].[Precisão][Tamanho][Tipo]
printf() - Marcadores
� %[Flags][Largura].[Precisão][Tamanho][Tipo]� Flags (Opcional): Um ou mais dentre os caracteres -, +, # ou 0
especificando a justificação do número e o uso ou não de sinal e do ponto decimal no valor impresso.
� Largura (Opcional): Um número que especifica quantos caracteres, no mínimo, devem ser utilizados na impressão.
� Precisão (Opcional): Um número que especifica quantos caracteres, no máximo, devem ser utilizados na impressão.
printf() - Marcadores
� %[Flags][Largura].[Precisão][Tamanho][Tipo]� Tamanho (Opcional): Um caracter que modifica o campo Tipo que vem
a seguir.
� Se for um h antes de um tipo d, i, o, x, X ou u especifica que o argumentoé de tipo short.
� Se for um l antes de um tipo d, i, o, x, X ou u especifica que o argumento é de tipo long.
� Se for um ll antes de um tipo d, i, o, x, X ou u especifica que o argumento é de tipo long long (64 bits).
� Se for um l antes de um tipo e, E, f, g, G especifica que o argumento é de tipo double.
� Se for um L antes de um tipo e, E, f, g, G especifica que o argumento é de tipo long double.
� Tipo (Obrigatório): O ítem mais importante desta lista. Uma letra queespecifica o tipo da variável a ser impressa.
printf() – Tipo
Tipo Tipo de Dado Descrição
%d int Inteiro
%u unsigned Inteiro (sem sinal)
%ld long Inteiro long
%lu unsigned long Inteiro long (sem sinal)
%hd short Inteiro short
%hu unsigned short Inteiro short (sem sinal)
%lld long long Inteiro long long
%llu unsigned long long Inteiro long long (sem sinal)
printf() – Tipo
Tipo Tipo de Dado Descrição
%% Caracter ‘%’
%c char Caracter
%o octal Octal (sem sinal)
%x hexadecimal Hexadecimal com letras minúsculas (sem sinal)
%X hexadecimal Hexadecimal com letras maiúsculas (sem sinal)
printf() – Tipo
Tipo Tipo de Dado Descrição
%e double ou float Ponto flutuante em notação científica
%E double ou float Ponto flutuante em notação científica (usando E)
%f double ou float Ponto flutuante na forma (sinal)(dígitos).(dígitos)
%g double ou float Escolhe dentre f ou e o que produz a saída mais compacta.
%G double ou float Idem ao g (usando F ou E).
%Le long double Ponto flutuante em notação científica
%Lf long double Ponto flutuante na forma (sinal)(dígitos).(dígitos)
%Lg long double Escolhe dentre f ou e o que produz a saída mais compacta.
%s char[] Imprime uma cadeia de caracteres até encontrar ‘\0’
printf() – Flag
Flag Significado Default
- Valor impresso justificado para a esquerda
dentro de um campo grande o bastante para
contê-lo
Justificado para a direita
+ Se a impressão for de um número será
impresso ‘+’ ou ‘-’ de acordo com o sinal do
número
Um sinal ‘-’ é impresso para
valores negativos
0 Os números são preenchidos com zeros a
esquerda
Os números são preenchidos
com espaços em branco
printf() – Precisão
Tipo Significado de precisão Default
c Ignorada. Só um caracter é impresso.
d u i
l ll o
x X
Especifica o número mínimo de dígitos a ser impresso. Se o
número ocupar menos dígitos que o especificado é preenchido
com brancos ou zeros (depende do flag usado). Se o número
ocupar mais dígitos ele é impresso mesmo assim (nunca é
truncado).
Se não for especificada ou se for
zero ou apenas um ponto decimal
sem um número depois dele, o
valor default será 1.
e E
Le
LE
Número de dígitos a serem impressos depois do ponto
decimal. Se especificado 0, não imprime nem o ponto
decimal.
6 dígitos.
F
LF
Número de dígitos a serem impressos depois do ponto
decimal. Se especificado 0, não imprime nem o ponto
decimal.
6 dígitos.
g G
Lg
LG
Especifica o número de algarismos significativos a serem
impressos.
Todos os algarismos
significativos
s O número total de caracteres impresso. Preenche com brancos
se for menor e trunca se for maior.
Todo o string.
scanf()
� Recebe entrada formatada no dispositivo de entrada padrão (stdin)
� Biblioteca stdio.h
� Usa os mesmos marcadores que o printf()
� Admite múltiplas entradas por comando, inclusive com marcadores de conversão diferentes
� Exige o operador ‘&’ antes dos nomes das variáveis (exceto quando se tratam de variáveis de tipo strings)
scanf() - Exemplo
� Exemplo#include <stdio.h>
.
int i, j;
float x;
char nome[20];
scanf( “%d”, &i );
scanf( “%d %f”, &j, &x );
scanf( “%s”, nome );
Redirecionamento
� A entrada/saída pode ser redirecionada
� A entrada padrão (stdin) pode ser redirecionada pelo comando freopen() para vir de um arquivo. Por exemplo:� freopen( "in.txt", "r", stdin );
� Neste caso, toda entrada virá do arquivo in.txt
� A saida padrão (stdout) pode ser redirecionada pelo comando freopen() para ser enviada a um arquivo. Por exemplo:� freopen( "out.txt", "w", stdout );
� Neste caso, toda saída irá para o arquivo out.txt
Conclusões
� A comunicação é parte essencial de qualquer programa.
� Pode ser interativa (com o usuário) ou com entrada e saída através de arquivos (também denominada de “batch”)
� Os comandos de entrada/saída em linguagem C permitem a comunicação direta na forma de caracteres codificados em ASCII ou executando a conversão desses caracteres de/para números inteiros, em ponto flutuante, hexadecimal e octal
� O comando printf() permite um controle fino do formato em que a saída será impressa