1. Introdução à Programação em
Linguagem C
Rodolfo Riyoei Goya
http://rgoya.sites.uol.com.br
rgoya@uol.com.br
2. 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.14
Linguagem C
Rodolfo Goya 2
3. 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.14
Linguagem C
Rodolfo Goya 3
4. 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 );
5. 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 );
6. 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 );
7. 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();
8. 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();
9. 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 );
10. 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]
11. 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.
12. 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 que
especifica o tipo da variável a ser impressa.
13. 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)
14. 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)
15. 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’
16. 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
17. 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.
18. 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)
19. 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 );
20. 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
21. 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