21
Introdução à Programação em Linguagem C Rodolfo Riyoei Goya http://rgoya.sites.uol.com.br [email protected]

Linguagem C (Parte 2)

Embed Size (px)

Citation preview

Page 1: Linguagem C (Parte 2)

Introdução à Programação em Linguagem C

Rodolfo Riyoei Goya

http://rgoya.sites.uol.com.br

[email protected]

Page 2: Linguagem C (Parte 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.14Linguagem CRodolfo Goya 2

Page 3: Linguagem C (Parte 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

Page 4: Linguagem C (Parte 2)

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 );

Page 5: Linguagem C (Parte 2)

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 );

Page 6: Linguagem C (Parte 2)

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 );

Page 7: Linguagem C (Parte 2)

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();

Page 8: Linguagem C (Parte 2)

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();

Page 9: Linguagem C (Parte 2)

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 );

Page 10: Linguagem C (Parte 2)

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]

Page 11: Linguagem C (Parte 2)

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.

Page 12: Linguagem C (Parte 2)

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.

Page 13: Linguagem C (Parte 2)

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)

Page 14: Linguagem C (Parte 2)

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)

Page 15: Linguagem C (Parte 2)

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’

Page 16: Linguagem C (Parte 2)

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

Page 17: Linguagem C (Parte 2)

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.

Page 18: Linguagem C (Parte 2)

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)

Page 19: Linguagem C (Parte 2)

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 );

Page 20: Linguagem C (Parte 2)

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

Page 21: Linguagem C (Parte 2)

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