Baixe o app para aproveitar ainda mais
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
Compartilhar