Introdução à Programação em
Linguagem C
Rodolfo Riyoei Goya
http://rgoya.sites.uol.com.br
rgoya@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.14
Linguagem C
Rodolfo 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.14
Linguagem C
Rodolfo 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 que
especifica 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

Linguagem C (Parte 2)

  • 1.
    Introdução à Programaçãoem Linguagem C Rodolfo Riyoei Goya http://rgoya.sites.uol.com.br rgoya@uol.com.br
  • 2.
    Modelo Abstrato deProgramaçã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 Fazema “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 caracterpara 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 caracterpara 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 caracterdo 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 caracterdo 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 caracterdo 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ídaformatada 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 iniciadoscom ‘%’ 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 TipoTipo 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 TipoTipo 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 TipoTipo 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 FlagSignificado 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 TipoSignificado 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 formatadano 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 podeser 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