Buscar

Trabalhando com Caracteres em C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Caracteres
Aula 9
Bárbara Purkott Cezar
1Faculdade de Computação
Universidade Federal de Mato Grosso do Sul
Algoritmos e Programação
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 1 / 18
Conteúdo da aula
1 Introdução
2 Representação gráfica
3 Constantes e variáveis
4 Expressões com caracteres
5 Exercícios
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 2 / 18
Introdução
I o tipo caractere é um tipo primitivo com o qual podemos trabalhar
com um conjunto pequeno e previsível de valores
I na linguagem C existem dois tipos de caracteres: caractere com
sinal e caractere sem sinal
I esses dois tipos são apenas interpretações diferentes do conjunto
de todas as sequências de 8 bits, sendo que essa diferença é
irrelevante na prática
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 3 / 18
Introdução
I o tipo caractere é um tipo primitivo com o qual podemos trabalhar
com um conjunto pequeno e previsível de valores
I na linguagem C existem dois tipos de caracteres: caractere com
sinal e caractere sem sinal
I esses dois tipos são apenas interpretações diferentes do conjunto
de todas as sequências de 8 bits, sendo que essa diferença é
irrelevante na prática
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 3 / 18
Introdução
I o tipo caractere é um tipo primitivo com o qual podemos trabalhar
com um conjunto pequeno e previsível de valores
I na linguagem C existem dois tipos de caracteres: caractere com
sinal e caractere sem sinal
I esses dois tipos são apenas interpretações diferentes do conjunto
de todas as sequências de 8 bits, sendo que essa diferença é
irrelevante na prática
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 3 / 18
Representação gráfica
I em todas as linguagens de programação de alto nível incluindo a
linguagem C, cada caractere é armazenado em um único byte na
memória do computador, ou seja, em 8 bits
I um caractere sem sinal é um número do conjunto
{0, 1, . . . , 254, 255} e um caractere com sinal é um número do
conjunto {−128, . . . ,−1, 0, 1, . . . , 127}
I um caractere é uma sequência de 8 bits, dentre as 256
sequências de 8 bits possíveis
I a impressão de um caractere na saída padrão é a sua
representação como um símbolo gráfico
I por exemplo, o símbolo gráfico do caractere 97 é a
I alguns caracteres têm representações gráficas especiais, como o
caractere 10 que é representado por uma mudança de linha
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 4 / 18
Representação gráfica
I em todas as linguagens de programação de alto nível incluindo a
linguagem C, cada caractere é armazenado em um único byte na
memória do computador, ou seja, em 8 bits
I um caractere sem sinal é um número do conjunto
{0, 1, . . . , 254, 255} e um caractere com sinal é um número do
conjunto {−128, . . . ,−1, 0, 1, . . . , 127}
I um caractere é uma sequência de 8 bits, dentre as 256
sequências de 8 bits possíveis
I a impressão de um caractere na saída padrão é a sua
representação como um símbolo gráfico
I por exemplo, o símbolo gráfico do caractere 97 é a
I alguns caracteres têm representações gráficas especiais, como o
caractere 10 que é representado por uma mudança de linha
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 4 / 18
Representação gráfica
I em todas as linguagens de programação de alto nível incluindo a
linguagem C, cada caractere é armazenado em um único byte na
memória do computador, ou seja, em 8 bits
I um caractere sem sinal é um número do conjunto
{0, 1, . . . , 254, 255} e um caractere com sinal é um número do
conjunto {−128, . . . ,−1, 0, 1, . . . , 127}
I um caractere é uma sequência de 8 bits, dentre as 256
sequências de 8 bits possíveis
I a impressão de um caractere na saída padrão é a sua
representação como um símbolo gráfico
I por exemplo, o símbolo gráfico do caractere 97 é a
I alguns caracteres têm representações gráficas especiais, como o
caractere 10 que é representado por uma mudança de linha
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 4 / 18
Representação gráfica
I em todas as linguagens de programação de alto nível incluindo a
linguagem C, cada caractere é armazenado em um único byte na
memória do computador, ou seja, em 8 bits
I um caractere sem sinal é um número do conjunto
{0, 1, . . . , 254, 255} e um caractere com sinal é um número do
conjunto {−128, . . . ,−1, 0, 1, . . . , 127}
I um caractere é uma sequência de 8 bits, dentre as 256
sequências de 8 bits possíveis
I a impressão de um caractere na saída padrão é a sua
representação como um símbolo gráfico
I por exemplo, o símbolo gráfico do caractere 97 é a
I alguns caracteres têm representações gráficas especiais, como o
caractere 10 que é representado por uma mudança de linha
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 4 / 18
Representação gráfica
I em todas as linguagens de programação de alto nível incluindo a
linguagem C, cada caractere é armazenado em um único byte na
memória do computador, ou seja, em 8 bits
I um caractere sem sinal é um número do conjunto
{0, 1, . . . , 254, 255} e um caractere com sinal é um número do
conjunto {−128, . . . ,−1, 0, 1, . . . , 127}
I um caractere é uma sequência de 8 bits, dentre as 256
sequências de 8 bits possíveis
I a impressão de um caractere na saída padrão é a sua
representação como um símbolo gráfico
I por exemplo, o símbolo gráfico do caractere 97 é a
I alguns caracteres têm representações gráficas especiais, como o
caractere 10 que é representado por uma mudança de linha
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 4 / 18
Representação gráfica
I em todas as linguagens de programação de alto nível incluindo a
linguagem C, cada caractere é armazenado em um único byte na
memória do computador, ou seja, em 8 bits
I um caractere sem sinal é um número do conjunto
{0, 1, . . . , 254, 255} e um caractere com sinal é um número do
conjunto {−128, . . . ,−1, 0, 1, . . . , 127}
I um caractere é uma sequência de 8 bits, dentre as 256
sequências de 8 bits possíveis
I a impressão de um caractere na saída padrão é a sua
representação como um símbolo gráfico
I por exemplo, o símbolo gráfico do caractere 97 é a
I alguns caracteres têm representações gráficas especiais, como o
caractere 10 que é representado por uma mudança de linha
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 4 / 18
Representação gráfica
I os símbolos gráficos dos caracteres 0 a 127 , de 7 bits, foram
codificados e padronizados pelo Código Padrão Americano para
Troca de Informações (do inglês American Standard Code for
Information Interchange), conhecida como tabela ASCII
I a tabela ASCII possui limitações e foi estendida em outras tabelas
como UNICODE e ISO 8859-1
I dos 128 caracteres padronizados da tabela ASCII e de seus
símbolos gráficos correspondentes, 33 deles são não-imprimíveis
e os restantes 95 são imprimíveis
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 5 / 18
Representação gráfica
I os símbolos gráficos dos caracteres 0 a 127 , de 7 bits, foram
codificados e padronizados pelo Código Padrão Americano para
Troca de Informações (do inglês American Standard Code for
Information Interchange), conhecida como tabela ASCII
I a tabela ASCII possui limitações e foi estendida em outras tabelas
como UNICODE e ISO 8859-1
I dos 128 caracteres padronizados da tabela ASCII e de seus
símbolos gráficos correspondentes, 33 deles são não-imprimíveis
e os restantes 95 são imprimíveis
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 5 / 18
Representação gráfica
I os símbolos gráficos dos caracteres 0 a 127 , de 7 bits, foram
codificados e padronizados pelo Código Padrão Americano para
Trocade Informações (do inglês American Standard Code for
Information Interchange), conhecida como tabela ASCII
I a tabela ASCII possui limitações e foi estendida em outras tabelas
como UNICODE e ISO 8859-1
I dos 128 caracteres padronizados da tabela ASCII e de seus
símbolos gráficos correspondentes, 33 deles são não-imprimíveis
e os restantes 95 são imprimíveis
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 5 / 18
Representação gráfica
Bin Dec Significado
0000 0000 00 Nulo
0000 0111 07 Campainha
0000 1001 09 Tabulação horizontal
0000 1010 10 Mudança de linha
0000 1011 11 Tabulação vertical
0000 1100 12 Quebra de página
0000 1101 13 Retorno do carro/cursor
0111 1111 127 Delete
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 6 / 18
Representação gráfica
Bin Dec Sim Bin Dec Sim Bin Dec Sim
0010 0000 32 0100 0000 64 @ 0110 0000 96 ‘
0010 0001 33 ! 0100 0001 65 A 0110 0001 97 a
0010 0010 34 " 0100 0010 66 B 0110 0010 98 b
0010 0011 35 # 0100 0011 67 C 0110 0011 99 c
0010 0100 36 $ 0100 0100 68 D 0110 0100 100 d
0010 0101 37 % 0100 0101 69 E 0110 0101 101 e
0010 0110 38 & 0100 0110 70 F 0110 0110 102 f
0010 0111 39 ' 0100 0111 71 G 0110 0111 103 g
0010 1000 40 ( 0100 1000 72 H 0110 1000 104 h
0010 1001 41 ) 0100 1001 73 I 0110 1001 105 i
0010 1010 42 * 0100 1010 74 J 0110 1010 106 j
0010 1011 43 + 0100 1011 75 K 0110 1011 107 k
0010 1100 44 , 0100 1100 76 L 0110 1100 108 l
0010 1101 45 - 0100 1101 77 M 0110 1101 109 m
0010 1110 46 . 0100 1110 78 N 0110 1110 110 n
0010 1111 47 / 0100 1111 79 O 0110 1111 111 o
0011 0000 48 0 0101 0000 80 P 0111 0000 112 p
0011 0001 49 1 0101 0001 81 Q 0111 0001 113 q
0011 0010 50 2 0101 0010 82 R 0111 0010 114 r
0011 0011 51 3 0101 0011 83 S 0111 0011 115 s
0011 0100 52 4 0101 0100 84 T 0111 0100 116 t
0011 0101 53 5 0101 0101 85 U 0111 0101 117 u
0011 0110 54 6 0101 0110 86 V 0111 0110 118 v
0011 0111 55 7 0101 0111 87 W 0111 0111 119 w
0011 1000 56 8 0101 1000 88 X 0111 1000 120 x
0011 1001 57 9 0101 1001 89 Y 0111 1001 121 y
0011 1010 58 : 0101 1010 90 Z 0111 1010 122 z
0011 1011 59 ; 0101 1011 91 [ 0111 1011 123 {
0011 1100 60 < 0101 1100 92 \ 0111 1100 124 |
0011 1101 61 = 0101 1101 93 ] 0111 1101 125 }
0011 1110 62 > 0101 1110 94 ^ 0111 1110 126 ~
0011 1111 63 ? 0101 1111 95 _
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 7 / 18
Representação gráfica
I A única diferença entre os caracteres com sinal e sem sinal é a
seguinte: os caracteres com sinal, quando dispostos em ordem
crescente, apresentam-se de tal forma que as letras acentuadas
precedem as não-acentuadas; os caracteres sem sinal, ao
contrário, em ordem crescente apresentam-se de forma que as
letras não-acentuadas precedem as acentuadas
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 8 / 18
Constantes e variáveis
char c, d, e;
unsigned char f, g, h;
c = 122;
d = 59;
e = 51;
c = 'z';
d = ';';
e = '3';
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 9 / 18
Constantes e variáveis
caractere constante símbolo gráfico
0 '\0' caractere nulo
9 '\t' tabulação horizontal
10 '\n' mudança de linha
11 '\v' tabulação vertical
12 '\f' quebra de página
13 '\r' retorno do carro/cursor
32 ' ' espaço
55 '7' 7
92 '\\' \
97 'a' a
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 10 / 18
Constantes e variáveis
I na linguagem C, um branco (do inglês whitespace) é definido
como sendo um caractere que é uma tabulação horizontal, uma
mudança de linha, uma tabulação vertical, uma quebra de página,
um retorno de carro/cursor e um espaço
I ou seja, os caracteres 9, 10, 11, 12, 13 e 32 são brancos e as
constantes correspondentes são '\t' , '\n' , '\v' , '\f' ,
'\r' e ' '
I a função scanf , e outras da linguagem C, trata todos os brancos
como se fossem ' '
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 11 / 18
Constantes e variáveis
I na linguagem C, um branco (do inglês whitespace) é definido
como sendo um caractere que é uma tabulação horizontal, uma
mudança de linha, uma tabulação vertical, uma quebra de página,
um retorno de carro/cursor e um espaço
I ou seja, os caracteres 9, 10, 11, 12, 13 e 32 são brancos e as
constantes correspondentes são '\t' , '\n' , '\v' , '\f' ,
'\r' e ' '
I a função scanf , e outras da linguagem C, trata todos os brancos
como se fossem ' '
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 11 / 18
Constantes e variáveis
I na linguagem C, um branco (do inglês whitespace) é definido
como sendo um caractere que é uma tabulação horizontal, uma
mudança de linha, uma tabulação vertical, uma quebra de página,
um retorno de carro/cursor e um espaço
I ou seja, os caracteres 9, 10, 11, 12, 13 e 32 são brancos e as
constantes correspondentes são '\t' , '\n' , '\v' , '\f' ,
'\r' e ' '
I a função scanf , e outras da linguagem C, trata todos os brancos
como se fossem ' '
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 11 / 18
Constantes e variáveis
I para imprimir um caractere na saída padrão com a função
printf devemos usar o especificador de conversão de tipo
caractere %c na sequência de caracteres de formatação
I para ler um caractere a partir da entrada padrão com a função
scanf também devemos usar o mesmo especificador de
conversão de tipo caractere %c na sequência de caracteres de
formatação
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 12 / 18
Constantes e variáveis
I para imprimir um caractere na saída padrão com a função
printf devemos usar o especificador de conversão de tipo
caractere %c na sequência de caracteres de formatação
I para ler um caractere a partir da entrada padrão com a função
scanf também devemos usar o mesmo especificador de
conversão de tipo caractere %c na sequência de caracteres de
formatação
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 12 / 18
Constantes e variáveis
#include <stdio.h>
int main(void)
{
char c;
c = 'a';
printf("%c\n", c);
c = 97;
printf("%c\n", c);
printf("Informe um caractere: ");
scanf("%c", &c);
printf("%c = %d\n", c, c);
return 0;
}
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 13 / 18
Expressões com caracteres
I como caracteres são implementados como números inteiros em
um byte, as expressões envolvendo caracteres herdam todas as
propriedades das expressões envolvendo números inteiros
I as operações aritméticas envolvendo variáveis do tipo
unsigned char e char são executadas em aritmética int
I Exemplos:
unsigned char x, y, z;
x = 240;
y = 65;
z = x + y;
unsigned char x;
char c;
x = 256;
c = 136;
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 14 / 18
Expressões com caracteres
I como caracteres são implementados como números inteiros em
um byte, as expressões envolvendo caracteres herdam todas as
propriedades das expressões envolvendo números inteiros
I as operações aritméticas envolvendo variáveis do tipo
unsigned char e char são executadas em aritmética int
I Exemplos:
unsigned char x, y, z;
x = 240;
y = 65;
z = x + y;
unsigned char x;
char c;
x = 256;
c = 136;
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 14 / 18
Expressões com caracteres
I como caracteres são implementados como números inteiros em
um byte, as expressões envolvendo caracteres herdam todas as
propriedades das expressões envolvendo números inteiros
I as operações aritméticas envolvendo variáveis do tipo
unsigned char e char são executadas em aritmética int
I Exemplos:
unsigned char x, y, z;
x = 240;
y = 65;
z = x + y;
unsigned char x;
char c;
x = 256;
c = 136;
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 14 / 18
Expressões com caracteres
I Expressões relacionais podem naturalmente envolver caracteres...
char c;
c = 'a';
if ('a'<= c && c <= 'z')
c = c - ' ';
printf("%c = %d\n", c, c);
if (65 <= c && c < 122)
c = c + 1;
printf("%c = %d\n", c, c);
...
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 15 / 18
Exercícios
1. Verifique se o programa abaixo está correto.
#include <stdio.h>
int main(void)
{
char c;
for (c = 0; c < 128; c++)
printf(".");
printf("\ntchau!\n");
return 0;
}
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 16 / 18
Exercícios
2. Escreva um programa que imprima todas as letras minúsculas e
todas as letras maiúsculas do alfabeto.
3. Escreva um programa que traduz um número de telefone
alfabético de 8 dígitos em um número de telefone na forma
numérica. Suponha que a entrada é sempre dada em caracteres
maiúsculos.
Exemplo:
Se a entrada é URGENCIA a saída deve ser 87436242 . Se a
entrada é 1111FOGO a saída deve ser 11113646 .
Se você não possui um telefone, então as letras que
correspondem às teclas são as seguintes: 2=ABC, 3=DEF,
4=GHI, 5=JKL, 6=MNO, 7=PQRS, 8=TUV e 9=WXYZ.
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 17 / 18
Exercícios
2. Escreva um programa que imprima todas as letras minúsculas e
todas as letras maiúsculas do alfabeto.
3. Escreva um programa que traduz um número de telefone
alfabético de 8 dígitos em um número de telefone na forma
numérica. Suponha que a entrada é sempre dada em caracteres
maiúsculos.
Exemplo:
Se a entrada é URGENCIA a saída deve ser 87436242 . Se a
entrada é 1111FOGO a saída deve ser 11113646 .
Se você não possui um telefone, então as letras que
correspondem às teclas são as seguintes: 2=ABC, 3=DEF,
4=GHI, 5=JKL, 6=MNO, 7=PQRS, 8=TUV e 9=WXYZ.
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 17 / 18
Exercícios
4. Scrabble é um jogo de palavras em que os jogadores formam
palavras usando pequenos quadrados que contêm uma letra e
um valor. O valor varia de uma letra para outra, baseado na sua
raridade. Os valores são os seguintes: AEILNORSTU=1, DG=2,
BCMP=3, FHVWY=4, K=5, JX=8 e QZ=10.
Escreva um programa que receba uma palavra e compute o seu
valor, somando os valores de suas letras. Seu programa não deve
fazer distinção entre letras maiúsculas e minúsculas.
Exemplo:
Se a palavra de entrada é programa a saída tem de ser 13 .
5. Escreva um programa que receba dois números inteiros a e b e
um caractere op, tal que op pode ser um dos cinco operadores
aritméticos disponíveis na linguagem C ( + , - , * , / , % ),
realize a operação a op b e mostre o resultado na saída.
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 18 / 18
Exercícios
4. Scrabble é um jogo de palavras em que os jogadores formam
palavras usando pequenos quadrados que contêm uma letra e
um valor. O valor varia de uma letra para outra, baseado na sua
raridade. Os valores são os seguintes: AEILNORSTU=1, DG=2,
BCMP=3, FHVWY=4, K=5, JX=8 e QZ=10.
Escreva um programa que receba uma palavra e compute o seu
valor, somando os valores de suas letras. Seu programa não deve
fazer distinção entre letras maiúsculas e minúsculas.
Exemplo:
Se a palavra de entrada é programa a saída tem de ser 13 .
5. Escreva um programa que receba dois números inteiros a e b e
um caractere op, tal que op pode ser um dos cinco operadores
aritméticos disponíveis na linguagem C ( + , - , * , / , % ),
realize a operação a op b e mostre o resultado na saída.
Viduani Martinez (FACOM) Caracteres Algoritmos e Programação 18 / 18
	Introdução
	Representação gráfica
	Constantes e variáveis
	Expressões com caracteres
	Exercícios

Outros materiais