Engenharia

Disponível somente no TrabalhosFeitos
  • Páginas : 17 (4144 palavras )
  • Download(s) : 0
  • Publicado : 23 de janeiro de 2013
Ler documento completo
Amostra do texto
6. Cadeia de caracteres
W. Celes e J. L. Rangel

6.1. Caracteres
Efetivamente, a linguagem C não oferece um tipo caractere. Os caracteres são representados por códigos numéricos. A linguagem oferece o tipo char, que pode armazenar valores inteiros “pequenos”: um char tem tamanho de 1 byte, 8 bits, e sua versão com sinal pode representar valores que variam de –128 a 127. Como os códigos associadosaos caracteres estão dentro desse intervalo, usamos o tipo char para representar caracteres1. A correspondência entre os caracteres e seus códigos numéricos é feita por uma tabela de códigos. Em geral, usa-se a tabela ASCII, mas diferentes máquinas podem usar diferentes códigos. Contudo, se desejamos escrever códigos portáteis, isto é, que possam ser compilados e executados em máquinasdiferentes, devemos evitar o uso explícito dos códigos referentes a uma determinada tabela, como será discutido nos exemplos subseqüentes. Como ilustração, mostramos a seguir os códigos associados a alguns caracteres segundo a tabela ASCII. Alguns caracteres que podem ser impressos (sp representa o branco, ou espaço): 0 30 40 50 60 70 80 90 100 110 120
( 2 < F P Z d n x

1
) 3 = G Q [ e o y

2
sp * 4 > H R\ f p z

3
! + 5 ? I S ] g q {

4
" , 6 @ J T ^ h r |

5
# 7 A K U _ i S }

6
$ . 8 B L V ` j t ~

7
% / 9 C M W a k u

8
& 0 : D N X b l v

9
' 1 ; E O Y c m w

Alguns caracteres de controle: 0 7 8 9 10 13 127
1

nul bel bs ht nl cr del

null: nulo bell: campainha backspace: voltar e apagar um caractere tab ou tabulação horizontal newline ou line feed: mudança de linha carriage return: volta aoinício da linha delete: apagar um caractere

Alguns alfabetos precisam de maior representatividade. O alfabeto chinês, por exemplo, tem mais de 256 caracteres, não sendo suficiente o tipo char (alguns compiladores oferecem o tipo wchar, para estes casos).
6-1

Estruturas de Dados –PUC-Rio

Em C, a diferença entre caracteres e inteiros é feita apenas através da maneira pela qual são tratados. Porexemplo, podemos imprimir o mesmo valor de duas formas diferentes usando formatos diferentes. Vamos analisar o fragmento de código abaixo:
char c = 97; printf("%d %c\n",c,c);

Considerando a codificação de caracteres via tabela ASCII, a variável c, que foi inicializada com o valor 97, representa o caractere a. A função printf imprime o conteúdo da variável c usando dois formatos distintos: com oespecificador de formato para inteiro, %d, será impresso o valor do código numérico, 97; com o formato de caractere, %c, será impresso o caractere associado ao código, a letra a. Conforme mencionamos, devemos evitar o uso explícito de códigos de caracteres. Para tanto, a linguagem C permite a escrita de constantes caracteres. Uma constante caractere é escrita envolvendo o caractere com aspassimples. Assim, a expressão 'a' representa uma constante caractere e resulta no valor numérico associado ao caractere a. Podemos, então, reescrever o fragmento de código acima sem particularizar a tabela ASCII.
char c = 'a'; printf("%d %c\n", c, c);

Além de agregar portabilidade e clareza ao código, o uso de constantes caracteres nos livra de conhecermos os códigos associados a cada caractere.Independente da tabela de códigos numéricos utilizada, garante-se que os dígitos são codificados em seqüência. Deste modo, se o dígito zero tem código 48, o dígito um tem obrigatoriamente código 49, e assim por diante. As letras minúsculas e as letras maiúsculas também formam dois grupos de códigos seqüenciais. O exemplo a seguir tira proveito desta seqüência dos códigos de caracteres. Exemplo. Suponhamosque queremos escrever uma função para testar se um caractere c é um dígito (um dos caracteres entre '0' e '9'). Esta função pode ter o protótipo:
int digito(char c);

e ter como resultado 1 (verdadeiro) se c for um dígito, e 0 (falso) se não for. A implementação desta função pode ser dada por:
int digito(char c) { if ((c>='0')&&(c<='9')) return 1; else return 0; }

Estruturas de Dados –PUC-Rio...
tracking img