Prévia do material em texto
Apêndice A Tabela de precedência dos operadores Os operadores são apresentados em ordem decrescente de precedência, de cima para baixo. Fig. A.1 Tabela de precedência de operadores (parte 1 de 2). o e e [e Operador Tipo Associatividade 1 . resolução de escopo binário resolução de escopo unário esquerda para a direita O parênteses esquerda para a direita [] subscrito de array . seleção de membro via objeto -> seleção de membro via ponteiro ++ - pós-incremento unário pós-decremento unário typeid informação sobre tipo durante a execução dynainic_cast< tipo> coerção com verificação de tipo durante a execução staticcast< tipo> coerção com verificação de tipo durante a compilação reinterpretcast< tipo> coerção para conversões não-padrão constcast< tipo> retira o atributo const com coerção ++ pré-incremento unário direita para a esquerda - - pré-decremento unário + mais unário - menos unário ! negação lógica unária - complemento sobre bits unário tipo ) coerção ao estilo de C unário sizeof determina o tamanho em bytes & endereço * derreferencia new alocação dinâmica de memória new [3 alocação dinâmica de array delete desalocação dinâmica de memória dele te [3 desalocação dinâmica de array * ponteiro para membro via objeto esquerda para a direita ponteiro para membro via ponteiro * multiplicação esquerda para a direita / divisão % módulo (resto da divisão inteira) + adição esquerda para a direita - subtração 1036 C++ COMO PROGRAMAR « » < <= > > & A && II *- 1= &= «= »= deslocamento sobre bits para a esquerda deslocamento sobre bits para a direita relacional menor do que relacional menor do que ou igual a relacional maior do que relacional maior do que ou igual a relacional igual a relacional não igual a AND (E) sobre bits OR (OU) exclusivo sobre bits OR (OU) inclusivo sobre bits AND (E) lógico ___________________ OR (OU) lógico ___________________ condicional ternário atribuição atribuição com adição atribuição com subtração atribuição com multiplicação atribuição com divisão atribuição com módulo atribuição com AND sobre bits atribuição com OR exclusivo sobre bits atribuição com OR inclusivo sobre bits atribuição com deslocamento sobre bits para a esquerda atribuição com deslocamento sobre bits para a direita vírgula esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita Operador Tipo Associatividade 1 esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita direita para a esquerda direita para a esquerda Fig. A.1 Tabela de precedência de operadores (parte 2 de 2). Apêndice B Conjunto de caracteres ASCII Conjunto de Caracteres ASCII Fig. B.1 O conjunto de caracteres ASCII Os dígitos à esquerda da tabela são os dígitos da esquerda do equivalente decimal (0 a 127) do código do caractere e os dígitos do topo da tabela são os dígitos da direita do código do caractere. Por exemplo, o código do caractere “F” é 70 e o código do caractere “&“ é 38. O 1 2 3 4 5 6 7 8 9 O 2 3 4 5 6 7 8 9 1 O 11 12 flui soh stx etx eot enq ack bel bs ht ni vt ff cr so si die dcl dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us sp ‘ # $ % & ‘ ( ) * + , - . / O 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H 1 J K L M N O P Q R S T U V W X Y Z [ \ 3 ‘ ‘ a b e d e f g h i j k 1 m n o p q r s t u v w x y z { } dei Apêndice C Sistemas de numeração Objetivos • Compreender os conceitos básicos dos sistemas de numeração, tais como base, valor posiciona! e valor do símbolo. • Compreender como trabalhar com números representados nos sistemas de numeração binário, octa! e hexadecimal. • Ser capaz de abreviar números binários como números octais ou hexadecimais. • Ser capaz de converter números octais e hexadecimais em números binários. • Ser capaz de fazer conversões de números decimais para seus equivalentes binários, octais e hexadecimais e vice-versa. • Compreender a aritmética binária e como números binários negativos são representados usando a notação de complemento de dois. Aqui estão os únicos números ratificados. Wil!iam Shakespeare A natureza tem uma espécie de sistema coordenado aritmético-geométrico, pois ela possui todos os tipos de modelos. O que percebemos da natureza está em modelos, e todos os modelos da natureza são belos. Ocorre-me que o sistema daquela natureza deve ser uma beleza real, pois em química descobrimos que as associações são sempre em belos números inteiros - não há frações. Richard Buckminster Fu!!er 4 APÊNDICE C - SISTEMAS DE NUMERAÇÃO 1039 Visão Geral C.1 Introdução C.2 Abreviando números binários como números octais e hexadecimais C.3 Convertendo números octais e hexadecimais em números binários C.4 Convertendo do sistema binário, octal ou hexadecimal para o sistema decimal C.5 Convertendo do sistema decimal para o sistema binário, octal ou hexadecimal C.6 Números binários negativos: notação em complemento de dois Reswno . Terminologia Exetrícios de auto-revisão Respostas aos exercícios de auto-revisão • Ese,vícios C.1 Introdução Neste apêndice, apresentamos os principais sistemas de numeração que os programadores utilizam, especialmente quando estão trabalhando em projetos de software que exigem muita interação com hardware em “nível de máquina”. Projetos como esses incluem sistemas operacionais, software de redes de computadores, compiladores, sistemas de bancos de dados e aplicações que exigem alto desempenho. Quando escrevemos um inteiro como 227 ou -63 em um programa, assume-se que o número está no sistema de numeração decimal (base 10). Os dígitos no sistema de numeração decimal são 0, 1, 2, 3,4, 5, 6, 7, 8 e 9. O menor dígito é O e o maior dígito é 9 um a menos que a base 10. Internamente, os computadores usam o sistema de numeração binário (base 2). O sistema de numeração binário tem apenas dois dígitos, ou seja O e 1. Seu menor digito é O e seu maior digito é 1 - um a menos que a base 2. A Fig. C.l resume os dígitos usados nos sistemas de numeração binário, octal, decimal e hexadecimal. Como veremos, os números binários tendem a ser muito maiores do que seus equivalentes decimais. Os programadores que trabalham com linguagens de montagem (assemblers) e com linguagens de alto nível, que permitem que eles desçam ao “nível da máquina”, acham complicado trabalhar com números binários. Assim, dois outros sistemas de numeração - o sistema de numeração octal (base 8) e o sistema de numeração hexadecimal (base 16) - são populares, principalmente porque tornam conveniente a abreviação de números binários. No sistema de numeração octal, os dígitos variam de O a 7. Como tanto o sistema de numeração binário quanto o sistema octal possuem menos dígitos que o sistema decimal, seus dígitos são os mesmos que seus correspondentes do sistema decimal. O sistema hexadecimal apresenta um problema porque ele exige dezesseis dígitos - o menor dígito é O e o maior dígito tem valor equivalente a 15 (um a menos que a base 16). Por convenção, usamos as letras de A a F para representar os dígitos correspondentes aos valores decimais de 10 a 15. Desta forma, em hexadecimal podemos ter números como 876 consistindo apenas de dígitos semelhantes aos decimais, números como 8A55F consistindo em dígitos e letras, e números como FFE consistindo apenas em letras. Ocasionalmente, um número hexadecimal é grafado como uma palavra comum como FACE ou CADA - isso pode parecer estranho aos programadores acostumados a trabalhar com números. A Fig. C.2 resume cada um dos sistemas de numeração. Cada um desses sistemas de numeração usa a notação posicional - cada posição na qual é escrito um dígito possui um valor posicional diferente. Por exemplo, no número decimal 937 (o 9,o 3 e o 7 são chamados de valores dos símbolos ou valores dos algarismos), dizemos que o 7 é escrito na posição das unidades, o 3 é escrito na posição das dezenas e o é escrito na posição das centenas. Observe que cada uma dessas posições é uma potência da base (base 10) e que essas potências começam° DIgito binário Dígito octal Digito decimal Dígito Hexadecimal Fig. C.1 Dígitos dos sistemas de numeração binário, octal, decimal e hexadecimal (parte 1 de 2). 1040 C++ COMO PROGRAMAR Fig. C.1 Dígitos dos sistemas de numeração binário, octal, decimal e hexadecimal (parte 2 de 2). Dígito decimal 9 3 7 Nome da posição Centenas Dezenas Unidades Valor posicional 100 10 1 Valor posicional como uma potência da base 102 10’ 10° Fig. C.3 Valores posicionais no sistema de numeração decimal. Para números decimais maiores, as próximas posições à esquerda seriam a posição dos milhares ti u eievauo a terceira potência), aposição das dezenas de milhar (10 elevado à quarta potência), a posição das centenas de milhar (10 elevado à quinta potência), a posição dos milhões (10 elevado à sexta potência), a posição das dezenas de milhões (10 elevado à sétima potência) e assim por diante. No número binário 101, dizemos que o 1 da extremidade da direita está escrito na posição da unidade, o O está escrito na posição do dois e o 1 da extremidade esquerda está escrito na posição do quatro. Veja que cada uma dessas posições é uma potência da base (base 2) e que essas potências começam em O e aumentam de 1 em 1 à medida que nos movemos para a esquerda no número (Fig. C.4). Para números binários mais longos, as próximas posições à esquerda seriam a posição do oito (2 elevado à terceira potência), a posição do dezesseis (2 elevado à quarta potência), a posição do trinta e dois (2 elevado à quinta potência), aposição do sessenta e quatro (2 elevado à sexta potência) e assim por diante. No número octal 425, dizemos que o 5 está escrito na posição das unidades, 02 está escrito na posição do oito e o 4 está escrito na posição do sessenta e quatro. Veja que cada uma dessas posições é uma potência da base (base 8) e que essas potências começam em O e aumentam de 1 em 1 à medida que nos movemos para a esquerda no número (Fig. C.5). Dígito binário Dígito octal Digito decimal Dí gito Hexadecimal 4 4 4 5 5 5 6 6 6 7 7 8 9 7 8 9 A B C D E F (valor decimal (valor decimal (valor decimal (valor decimal (valor decimal (valor decimal 10) II) 12) 13) 14) 15) Atributo Binário Octal De cimal Hexadecimal Base 2 8 10 Menor dígito O O O Maior dígito 1 7 9 16 O F Fig. C.2 Comparação entre os sistemas de numeração binário, octal, decimal e hexadecimal. Valores posicionais no sistema de numeração decimal APÊNDICE C - SISTEMAS DE NUMERAÇÃO 1041 Para números octais mais longos, as próximas posições à esquerda seriam aposição do quinhentos e doze (8 elevado à terceira potência), a posição do quatro mil e noventa e seis (8 elevado à quarta potência), a posição do trinta e dois mil, setecentos e sessenta e oito (8 elevado à quinta potência) e assim por diante. No número hexadecimal 3DA, dizemos que o A está escrito na posição das unidades, o D está escrito na posição do dezesseis e o 3 está na posição do duzentos e cinqüenta e seis. Veja que cada uma dessas posições é uma potência da base (base 16) e que essas potências começam em O e aumentam de 1 em 1 à medida que nos movemos para a esquerda no número (Fig. C.6). Fig. C.6 Valores posicionais no sistema de numeração hexadecimal. Para números hexadecimais mais longos, as próximas posições seriam aposição do quatro mile noventa e seis (16 elevado à terceira potência), aposição do trinta e dois mil, setecentos e sessenta e oito (16 elevado à quarta potência) e assim por diante. C.2 Abreviando números binários como números octais e hexadecimais O principal uso dos números octais e hexadecimais em computação é abreviar representações binárias longas. A Fig. C.7 destaca o fato de que números binários longos podem ser expressos de uma forma concisa em sistemas de numeração com bases maiores do que a do sistema de numeração binário. Valores posicionais no sistema de numeração binário 1 Digito binário 1 O Nome da posição Quatro Dois Valor posicional 4 2 Valor posicional como uma potência da base (2) 22 2’ 1 Unidade 1 2° Fig. C.4 Valores posicionais no sistema de numeração binário. Valores posicionais no sistema de numeração octal 1 Dígito octal 4 2 Nome da posição Sessenta e quatro Oito Valor posicional 64 8 Valor posicional como uma potência da base (8) 82 81 5 Unidade 1 8° Fig. C.5 Valores posicionais no sistema de numeração octal. 1 Valores posicionais no sistema de numeração hexadecimal Dígito hexadecimal 3 D Nome da posição Duzentos e Dezesseis cinqüenta e seis Valor posicional 256 16 Valor posicional como uma potência da base (16) 162 161 A Unidade 1 16° 1042 C++ COMO PROGRAMAR Fig. C.7 Equivalentes decimais, binários, octais e hexadecimais. Um relacionamento particularmente importante com o sistema de numeração binário, que tanto o sistema de numeração octal quanto o hexadecimal possuem, é que suas bases (8 e 16, respectivamente) são potências da base do sistema de numeração binário (base 2). Examine o número binário com 12 dígitos a seguir e seus equivalentes em octal e hexadecimal. Veja se você pode determinar como esse relacionamento torna conveniente exprimir números binários como números octais e hexadecimais. A resposta vem após os números. Número binário Equivalente octal Equivalente hexadecimal 100011010001 4321 8D1 Para ver como o número binário é convertido facilmente em um número octal, simplesmente divida o número binário de 12 dígitos em grupos de três bits consecutivos cada um e escreva aqueles grupos sobre os dígitos correspondentes do número octal, como se segue 100 011 010 001 4 3 2 1 Observe que o dígito octal escrito sob cada grupo de três bits corresponde exatamente ao equivalente octal daquele número binário de 3 dígitos, de acordo com o que mostra a Fig. C.7. O mesmo tipo de relacionamento pode ser observado na conversão de números do sistema binário para o hexadecimal. Em particular, divida o número binário de 12 dígitos em grupos de quatro bits consecutivos cada um e escreva aqueles grupos sobre os dígitos correspondentes do número hexadecimal, como se segue 1000 1101 0001 8 0 1 Observe que o dígito hexadecimal que você escreveu sob cada grupo de quatro bits corresponde exatamente ao equivalente hexadecimal daquele número binário de quatro dígitos, como mostra a Fig. C.7. C.3 Convertendo números octais e hexadecimais em números binários Na seção anterior, vimos como converter números binários em seus equivalentes octais e hexadecimais, formando grupos de dígitos binários e simplesmente rescrevendo esses grupos como seus valores octais e hexadecimais equivalentes. Esse processo pode ser usado na ordem inversa para produzir o número binário equivalente a um número octal ou hexadecimal dado. Número decimal Representação binária Representação octal Representação hexadecimal O O O 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 APÊNDICE C - SISTEMAS DE NUMERAÇÃO 1043 Por exemplo, o número octal 653 é convertido em binário simplesmente escrevendo-se o 6 como seu número binário equivalente de 3 dígitos 110, o 5 como seu binário de 3 dígitos equivalente 101 e o 3 como seu binário de 3 dígitos equivalente 011 para formar o número binário de 9 dígitos 110101011. O número hexadecimal FAD5 é convertido em binário simplesmente escrevendo-se o F como seu número binário equivalente de 4 dígitos 1111,0 A como seu binário de 4 dígitos equivalente 1010, o D como seu binário de 4 dígitos equivalente 1101 e o 5 como seu binário de 4 dígitosequivalente 0101 para formar o número binário de 16 dígitos 111110101 1010101. C.4 Convertendo do sistema binário, octal ou hexadecimal para o sistema decimal Por estarmos acostumados a trabalhar em decimal, freqüentemente é útil converter um número binário, octal ou hexadecimal em decimal, para ter uma noção do que o número “realmente” vale. Nossos diagramas na Seção C. 1 expressam os valores posicionais em decimais. Para converter um número em decimal, a partir de outra base, multiplique o equivalente decimal de cada dígito por seu valor posicional e some esses produtos. Por exemplo, o número binário 110101 é convertido no decimal 53 de acordo com o que mostra a Fig. C.8. Fig. C.8 Convertendo um número binário em decimal. Para converter o octal 7614 no decimal 3980, aplicamos a mesma técnica, usando dessa vez os valores posicionais octais apropriados, como mostra a Fig. C.9. Para converter o hexadecimal AD3B no decimal 44347, aplicamos a mesma técnica, usando dessa vez os valores posicionais hexadecimais apropriados, como mostra a Fig. CIO. Fig. C.10 Convertendo um número hexadecimal em decimal. Convertendo um núm ero binário em decimal 1 Valores posicionais: 32 16 8 4 2 1 Valores dos algarismos: 1 1 O 1 O 1 Produtos: 1*32=32 1*1616 0*8=0 1*44 0*2=0 1*11 Soma: =32+16+0+ 4+ 0+153 Convertendo um número octal em decimal 1 ‘valores posicionais: 512 64 8 1 Valores dos algarismos: 7 6 1 4 Produtos: 7*5123584 6*64=384 1*8=8 4*14 Soma: = 3584 + 384 + 8 + 4 = 3980 Fig. C.9 Convertendo um número octal em decimal. Convertendo um número hexadecimal em decimal Valores posicionais: 4096 256 16 1 Valores dos algarismos: A D Produtos: A*4096=40960 D*256=3328 3 3*16=48 B B*1=11 Soma: = 40960 + 3328 + 48 + 11 = 44347 1044 C++ COMO PROGRAMAR C.5 Convertendo do sistema decimal para o sistema binário, octal ou hexadecimal As conversões das seções anteriores são conseqüências naturais das convenções da notação posicional. Converter do ______ sistema decimal para o sistema binário, octal ou hexadecimal também segue essas convenções. Suponhaque desejamos converter o número decimal 57 para o sistema binário. Começamos escrevendo os valores posicionais das colunas, da direita para a esquerda, até alcançarmos a coluna cujo valor posicional seja maior do que o número decimal. Não precisamos daquela coluna, portanto a descartamos. Assim, escrevemos inicialmente: Valores posicionais: 64 32 16 8 4 2 1 A seguir, descartamos a coluna com valor 64, restando: Valores posicionais: 32 16 8 4 2 1 A seguir, trabalhamos a partir da coluna da extremidade esquerda em direção à direita. Dividimos 57 por 32 e observamos que há uma vez 32 em 57, com resto 25, portanto escrevemos 1 na coluna 32. Dividimos 25 por 16 e observamos que há uma vez 16 em 25, com resto 9 e escrevemos 1 na coluna 16. Dividimos 9 por 8 e observamos que há uma vez 8 em 9, com resto 1. As duas próximas colunas produzem quocientes com resto zero quando divididas por seus valores posicionais, portanto escrevemos Os nas colunas 4 e 2. Finalmente, dividindo 1 por 1 obtemos 1, portanto escrevemos 1 na coluna 1. Isso leva a: Valores posicionais: 32 16 8 4 2 1 Valores dos algarismos: 1 1 1 O O 1 e assim o valor decimal 57 é equivalente ao binário 111001. Para converter o número decimal 103 para o sistema octal, começamos escrevendo os valores das colunas até alcançarmos a coluna cujo valor posicional seja maior do que o número decimal. Não precisamos dessa coluna, portanto a descartamos. Assim, escrevemos inicialmente: Valores posicionais: 512 64 8 1 A seguir, descartamos a coluna com valor 512, restando: Valores posicionais: 64 8 1 A seguir, trabalhamos a partir da coluna da extremidade esquerda em direção à direita. Dividimos 103 por 64 e observamos que há uma vez 64 em 103, com resto 39, portanto escrevemos 1 na coluna 64. Dividimos 39 por 8 e observamos que há quatro vezes 8 em 39, com resto 7 e escrevemos 4 na coluna 8. Finalmente, dividimos 7 por 1 e observamos que há sete vezes 1 em 7, não ficando resto algum, portanto escrevemos 7 na coluna 1. Isso leva a: Valores posicionais: 64 8 1 Valores dos algarismos: 1 4 7 e assim o valor decimal 103 é equivalente ao octal 147. Para converter o número decimal 375 para o sistema hexadecimal, começamos escrevendo os valores das colunas até alcançarmos a coluna cujo valor posicional seja maior do que o número decimal. Não precisamos dessa coluna, portanto a descartamos. Assim, escrevemos inicialmente: Valores posicionais: 4096 256 16 1 APÊNDICE C - SISTEMAS DE NUMERAÇÃO 1045 A seguir, descartamos a coluna com valor 4096, restando: Valores posicionais: 256 16 1 A seguir, trabalhamos a partir da coluna da extremidade esquerda em direção à direita. Dividimos 375 por 256 e observamos que há uma vez 256 em 375, com resto 119, portanto escrevemos 1 na coluna 256. Dividimos 119 por 16 e observamos que há sete vezes 16cm 119, com resto 7 e escrevemos 7 na coluna 16. Finalmente, dividimos 7 por 1 e observamos que há sete vezes 1 em 7, não ficando resto algum, portanto escrevemos 7 na coluna 1. Isso leva a: Valores posicionais: 256 16 1 Valores dos algarismos: 1 7 7 e assim o valor decimal 375 é equivalente ao hexadecimal 177. C.6 Números binários negativos: notação em complemento de dois A análise deste apêndice concentrou-se nos números positivos. Nesta seção, explicamos como os computadores representam números negativos usando a notação em complemento de dois. Em primeiro lugar, explicamos como é formado o complemento de dois de um número binário e depois mostramos por que ele representa o valor negativo de um determinado número binário. Considere um equipamento com inteiros de 32 bits. Suponha int valor = 13; A representação em 32 bits do valor é 00000000 00000000 00000000 00001101 Para formar o negativo de valor, formamos inicialmente o complemento de um, aplicando o operador de complemento sobre bits de C++ (-), que também é chamado de operador NOT sobre bits: complementoDeUmDeValor = ‘valor; Internamente, valor é agora valor com cada um de seus bits invertidos - os uns se tornam zeros e os zeros se tornam uns, como segue: valor: 00000000 00000000 00000000 00001101 ‘valor (i.e., complemento de um de valor): 11111111 11111111 11111111 11110010 Para formar o complemento de dois de valor, simplesmente adicionamos um ao complemento de um de valor. Assim, O complemento de dois de valor é: 11111111 11111111 11111111 11110011 Agora, se isso é realmente igual a -13, devemos ser capazes de adicionar o binário 13 a ele e obter o resultado 0. Vamos tentar fazer isso: 00000000 00000000 00000000 00001101 + 11111111 11111111 11111111 11110011 00000000 00000000 00000000 00000000 O bit transportado (vai um) da coluna da extremidade esquerda é descartado e realmente obtemos zero como resultado. Se adicionássemos o complemento de um de um número ao próprio número, o resultado seria todo Is. O 1046 C++ COMO PROGRAMAR segredo de obter um resultado todo em zeros é que o complemento de dois vale 1 a mais do que o complemento de um. A adição de 1 faz com que cada coluna resulte em zero, transportando o valor 1 para a próxima coluna. O valor é transportado para a esquerda, de uma coluna para outra, até que seja descartado do bit da extremidade esquerda e assim o número resultante fica todo consistindo em zeros. Na verdade, os computadores realizam uma subtração como x = a - valor; adicionando o complemento de dois de valor a a como se segue: x = a + (-‘valor + 1); Suponha que a é 27 e valor é 13, como antes. Se o complemento de dois de valor é realmente o negativo de valor, adicionar a a deve produzir o resultado 14. Vamos tentar fazer isso: a(i.e., 27) 00000000 00000000 00000000 00011011 +(-valor + 1) + 11111111 11111111 11111111 11110011 00000000 00000000 00000000 00001110 que é realmente igual a 14. Resumo Quando escrevemos um inteiro como 19 ou 227 ou -63 em um programa, o número é consideradoautomaticamente como estando no sistema de numeração decimal (base 10). Os dígitos no sistema de numeração decimal são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. O menor dígito é O e o maior dígito é 9-um a menos que a base 10. • Internamente, os computadores usam o sistema de numeração binário (base 2). O sistema de numeração binário tem apenas dois dígitos, que são O e 1. Seu menor dígito é O e seu maior dígito é 1 - um a menos que a base 2. • O sistema de numeração octal (base 8) e o sistema de numeração hexadecimal (base 16) se tornaram populares principalmente porque são convenientes para exprimir números binários de uma forma abreviada. • Os dígitos do sistema de numeração octal variam de 0 a 7. • O sistema de numeração hexadecimal apresenta um problema porque exige dezesseis dígitos - o menor dígito com valor 0 e o maior dígito com um valor equivalente a 15 em decimal (um a menos que a base 16). Por convenção, usamos as letras A a F para representar os dígitos hexadecimais correspondentes aos valores decimais 10 a 15. • Cada sistema de numeração usa notação posicional - cada posição na qual um dígito é escrito tem um valor posicional diferente. • Um relacionamento importante que tanto o sistema de numeração octal quanto o sistema de numeração hexadecimal possuem com o sistema binário é que as bases dos sistemas octal e hexadecimal (8 e 16, respectivamente) são potências da base do sistema de numeração binário (base 2). • Para converter um número octal em um número binário, simplesmente substitua cada dígito octal pelo binário equivalente de três dígitos. • Para converter um número hexadecimal em um número binário, simplesmente substitua cada dígito hexadecimal pelo binário equivalente de quatro dígitos. • Por estarmos acostumados a trabalhar com números decimais, freqüentemente é útil converter um número binário, octal ou hexadecimal em decimal para ter uma melhor noção do que o número “realmente” vale. • Para converter um número de outra base para um número decimal, multiplique o equivalente decimal de cada dígito por seu valor posicional e some esses produtos. Os computadores representam números negativos usando a notação em complemento de dois. APËNDICE C - SISTEMAS DE NUMERAÇÃO 1047 Para formar o negativo de um valor, forme inicialmente seu complemento de um aplicando o operador de complemento sobre bits de C++ (). Isso inverte os bits do valor. Para formar o complemento de dois de um valor, simplesmente adicione um ao complemento de um do valor. Terminologia base sistema de numeração hexadecimal conversões sistema de numeração na base 10 dígito sistema de numeração na base 16 notação em complemento de dois sistema de numeração na base 2 notação em complemento de um sistema de numeração na base 8 notação posicional sistema de numeração octal operador de complemento sobre bits valor do símbolo sistema de numeração binário valor negativo sistema de numeração decimal valor posicional Exercícios de auto-revisão C.1 As bases dos sistemas de numeração decimal, binário, octal e hexadecimal são ____________ ,__________ ,___________ e C.2 Em geral. as representações decimal, octal e hexadecimal de um determinado número binário contêm (mais/menos) dígitos do que o número binário. C.3 (Verdadeiro/Falso) Um motivo popular para o uso do sistema de numeração decimal é que ele forma uma notação conveniente para exprimir números binários de uma forma abreviada, simplesmente substituindo-se um dígito decimal por um grupo de quatro dígitos binários. C.4 A representação (octal/hexadecimalldecimal) de um valor binário muito grande é a mais concisa (das alternativas fornecidas). C.5 (Verdadeiro/Falso) O maior dígito em qualquer base vale um a mais que a base. C.6 (Verdadeiro/Falso) O menor dígito em qualquer base vale um a menos que a base. C.7 O valor posicional do dígito da extremidade direita de qualquer número nos sistemas binário, octal, decimal e hexadecimal é sempre C. O valor posicional do dígito à esquerda do dígito da extremidade direita nos sistemas binário, octal, decimal ou hexadecimal é sempre C.9 Preencha as lacunas na tabela a seguir com os valores posicionais das quatro posições da direita em cada um dos sistemas de numeração indicados. decimal 1000 100 10 1 hexadecimal 256 binário octal 512 8 C.1O Converta o binário 110101011000 para os sistemas octal e hexadecimal. C.I 1 Converta o hexadecimal FACE para o sistema binário. C.12 Converta o octal 7316 para o sistema binário. C.13 Converta o hexadecimal 4FEC para o sistema octal. (Sugestão: em primeiro lugar, converta 4FEC para o sistema binário e depois converta aquele número binário para o sistema octal). C.14 Converta o binário 1101110 para o sistema decimal. C.15 Converta o octal 317 para o sistema decimal. C.16 Converta o hexadecimal EFD4 para o sistema decimal. C.17 Converta o decimal 177 para os sistemas binário, octal e hexadecimal. 1048 C++ COMO PROGRAMAR C.18 Mostre a representação binária do decimal 417. Depois mostre os complementos de um e de dois de 417. C.19 Qual o resultado quando o complemento de um de um número é adicionado ao próprio número? Respostas aos exercícios de auto-revisão C.1 10. 2, 8, 16. C.2 Menos. C.3 Falso. C.4 1-lexadecimal. C.5 Falso o maior dígito em qualquer base vale um a menos que a base. C.6 Falso - o menor dígito em qualquer base é zero. C.7 1 (a base elevada à potência zero). C.8 A base do sistema de numeração. C.9 Preencha as lacunas na tabela a seguir com os valores posicionais das quatro posições da direita em cada um dos sistemas de numeração indicados. decimal 1000 100 10 hexadecimal 4096 256 16 binário 8 4 2 octal 512 64 8 C.1O Octal 6530; Hexadecimal D58. C.11 Binário 1111 1010 1100 1110. C.12 Binário 111 011 001 110. C.13 Binário0l00 111 111 101 100: 0cta147754. C.14 Decimal 2+4+8+32+64=110. C.15 Decimal 7+1*8+3*64=7+8+192=207. C.16 Decimal 4+13*16+15*256+14*4096=61396. C.l7 Decimal 177 para binário: 256 128 64 32 16 8 4 2 128 64 32 16 8 4 2 (1*128)+(0*64) +(1*32) + (1*16)+ (0*8) + (0*4)+(0*2)+(1*1) 10110001 para octal: 512 64 8 1 64 8 1 (2*64)+ (6*8) +(1*1) 261 para hexadecimal: 256 16 1 16 1 (11*16)+(1*1) (B*16) + (1*1) B1 C.18 Binário: 5122561286432168421 256 128 64 32 16 8 4 2 1 (1*256) + (1*128) + (0*64) + (1*32) + (0*16) + (0*8) + (0*4) + (0*2) + (1*1) 110100001 APÊNDICE C - SISTEMAS DE NUMERAÇÃO 1049 Complemento de um: 001011110 Complemento de dois: 001011111 Verificação: o número binário original + seu complemento de dois 110100001 001011111 000000000 C.19 Zero. Exercícios C.20 Algumas pessoas argumentam que muitos de nossos cálculos seriam mais fáceis no sistema de numeração de base 12 porque 12 é divisível por muito mais números do que 10 (para base 10). Qual o menor dígito na base 12? Qual pode ser o maior símbolo para o dígito da base 12? Quais os valores posicionais das quatro posições da direita de qualquer número no sistema de numeração da base 12? C.21 Como o maior valor de símbolo nos sistemas de numcração analisados se relaciona com o valor posicional do primeiro dígito à esquerda do dígito mais à direita de qualquer número nesses sistemas de numeração? C.22 Complete a tabela de valores posicionais a seguir para as quatro posições da direita em cada um dos sistemas de numeração indicados: decimal 1000 100 10 1 basefl . . . . 6 base 13 . . . 169 . . base3 27 . . C.23 Converta o binário 100101111010 em octal e em hexadecimal. C.24 Converta o hexadecimal 3A7D em binário. C.25 Converta o hexadecimal 765F em octal. (Sugestão: converta inicialmente 765F em binário e depois converta aquele número binário em octal.) C.26 Converta o binário 1011110 em decimal. C.27 Converta o octal 426 em decimal. C.28 Converta o hexadecimal FFFF em decimal. C.29 Converta o decimal 299 em binário, em octal e em hexadecimal. C.30 Mostre a representação binária do decimal 779. Depois mostre os complementos de um e de dois de 779. C.31 Qual o resultado da soma do complemento de dois de um númerocom o próprio número? C.32 Mostre o complemento de dois do valor inteiro -1 em um equipamento com inteiros de 32 bits. Apêndice D Recursos sobre C++ na Internet e na Web Este apêndice contém uma lista de recursos valiosos para C++ na Internet e na World Wide Web. Incluem FAQs (respostas a perguntas feitas freqüentemente), tutoriais, como obter o ANSI/ISO C++ padrão, informações sobre compiladores C++ populares e como obter compiladores gratuitamente, demos, livros, tutoriais, ferramentas de software, artigos, entrevistas, conferências, jornais e revistas, cursos on-line, grupos de notícias e recursos para carreira profissional. Para obter mais informações sobre o American National Standards Institute (ANSI) ou para adquirir documentos padrão, visite o ANSI em http: //www. ansi . org/. Di Recursos http://www.progsource.com/index. htinl The Programmer’s Source é uma grande fonte de informações sobre muitas linguagens de programação, inclusive C++. Você encontrará listas de ferramentas, compiladores, software, livros e outros recursos para c++. http: //www. intranet. ca/-sshah/booklist. html#C++ The Programmer’s Book List tem uma seção de livros sobre C++ com mais de 30 títulos. http: //www. genitor, comi resources . htm O site Developer Resources tem links para compiladores C++, ferramentas úteis de C++, código- fonte do CY C++ Users Journal e publicações. http: //www.possibility. com/Cpp/CppCodingStandard.html O site The C+ + Coding Standard tem uma grande quantidade de informações sobre a linguagem de programação C++ bem como uma grande lista de recursos sobre C++ na Web. http: //help-site. com/cpp . htm). Help-site.com fornece links para recursos sobre C++ naWeb. http: //www. glenmccl . com/tutor. htm Este site é uma boa referência para usuários com conhecimento de CIC++. Os tópicos são acompanhados por explicações detalhadas e exemplos de código. http: //www . prograinmersheaven. com/zone3/cat353/index . htm Este site oferece uma vasta coleção de bibliotecas para C++. Estas bibliotecas estão disponíveis para download gratuito. http: //www . prograinmersheaven. com/zone3/catl55/index . htm Este site oferece ferramentas e bibliotecas para CIC++. http: //w. programmersheaven. com/wwwboard/board3/wwwboard. asp Este quadro de mensagens permite aos usuários divulgar perguntas sobre programação em C++. Estas bibliotecas estão disponíveis para download gratuito. APÊNDICE D - RECURSOS SOBRE C++ NA INTERNET E NA WEB 1051 http: //www hal9k. com/ cug/ Este site oferece recursos, jornais, shareware,freeware, etc. http: //developer earthweb. com/directories/pages/dir. c . developmenttools htm Um site popular na Web para programadores, Developer.com oferece uma ampla lista de recursos para programadores usando C e C++. http: //www.devx.com DevX é um site abrangente com recursos para programadores. A seção oferece as últimas novidades, ferramentas e técnicas para diversas linguagens de programação. A seção C++ zone do site é dedicada a C++. D.2 Tutoriais http: //info desy . de/gna/html/cc/index html Este tutorial Introduction lo Object-Orientred Programming Using C++ está disponível para download ou você pode se registrar em um curso baseado na Web. Verifique os livros recomendados sobre programação orientada a objetos e a linguagem de programação C++. http: //uu-gna.mit. edu: 8001/uu-gna/text/cc/Tutorial/tutorial . html Este tutorial Introduction to Object-Oriented Programming Using C++ é dividido em 10 capítulos, cada um com um conjunto de exercícios e soluções para os exercícios. http: //www. icce. rug . nl/docs/cplusplus/cplusplus . html Este tutorial, escrito por um professor universitário, foi projetado para programadores de C que querem apreender C++. http: //www.rdw. tec.mn.us/ O Red Wing/Winona Technical Coliege oferece cursos de C++ on-line valendo créditos. http: //www. zdu. com/zdu/catalog/progranuning . htm A ZD Net University oferece vários cursos on-line relacionados com a linguagem de programação C++. http: //library. advanced. org/3074/ Este tutorial foi projetado para programadores de Pascal que querem aprender C++. ftp: //rtfm.mit. edu/pub/usenet/news . answers/C-faq/learn-c-cpp-today Este site tem uma lista de tutoriais sobre C++. Também contém informações sobre vários compiladores C++. http: //www. icce . rug . nh/docs/cplusplus/cplusplus . htm Um site para usuários que já conhecem C e querem aprender C++. http: //www. cprogranuning. com/tutorial/html Este site inclui um tutorial passo a passo que inclui exemplos de código. http://www.progranunersheaven.com/zone3/cat34/index. htm Este site contém uma lista de assuntos de tutoriais. Os níveis dos tutoriais variam desde principiantes até especialistas. D.3 FAQs http: //reality. sgi . com/austern/std-c++/faq . html Este é um site de FAQs dedicado a perguntas sobre C++ padrão ANSI/ISO, o projeto da linguagem de programação C++ e às últimas mudanças na linguagem. http: //www. trtnphrst. demon . co . uk/cpplibsl . html Este é um FAQ sobre as bibliotecas de C++. Você encontrará uma extensa lista de respostas às perguntas feitas freqtientemente sobre as bibliotecas padrão de C++. 1052 C++ COMO PROGRAMAR http: //pneuma phys ualberta. ca/-.burris/cpp htm O The Internet Link Exchange é um Outro grande recurso para informações sobre C++. Este site tem links para FAQs relacionados a comp. lang. c++ e as bibliotecas padrão de C++. http: //www.math.uio.no/nett/faq/C-faq/faq.html A lista comp. lang. e de perguntas feitas freqüentemente (FAQs) e respostas. http: //lglwww. epfl ch/’wo1f/c std. htm]. A lista de FAQs sobre o padrão ANSI/ISO para a linguagem de programação C. http: //www. cerfnet. com/-mpcline/C++-FAQs-Lite/ Este site tem muitas FAQs divididas em 35 categorias. http: //www. faqs org/faqs/by-newsgroup/comp/comp. lang. html Este site consiste em uma série de links para FAQs e tutoriais reunidos do grupo de notícias Comp Lang C++. http: //www. cerfnet. com/-mpc1ine/C++-FAQs-Lite/ Este é um site de FAQ com uma ampla gama de tópicos. Cada tópico inclui diversas perguntas com respostas. http: //www. eskimo. coin/-scs/C-faq/top html Esta lista de FAQ contém tópicos tais como ponteiros, alocação de memória e strings. DA Visual C-i-+ http://ehesworth.com/pv/languages/c/visualcpptutorial. htin Este é um bom tutorial para principiantes que estejam aprendendo o Microsoft Visual C++. O tutorial dá ao usuário uma visão geral sucinta de C+÷. D.5 comp.lang.c++ http: //weblab. research att. com/phoaks/comp/lang/c++/ resourcesO html UAU! Este site é um tremendo recurso de informações relacionadas com comp. lang. c++. O título da página, People Helping OneAnotherKnow Stuff, resume tudo que é este site. Você encontrará links para mais de 40 recursos adicionais de informações sobre C++. http: //www. r2m. com/windev/cpp-compiler html Este contém links para muitos sites relacionados com C++. http: //home istar. ca/-.stepanv/ Este site tem muitos links para sites com artigos e informações relacionados com a programação C++. Tópicos listados neste site incluem gráficos orientados a objetos, o padrão ANSI C++, a biblioteca padrão de gabaritos (STL), recursos sobre MFC e tutoriais. http: //kom. net/-’dbrick/newspage/cornp. lang. c++ html Visite este site para se conectar a grupos de notícias relacionados à hierarquia eomp lang c++. http: //www. austinlinks com/CPlusPlus/ O site da Quadralay Corporation tem links para recursos sobre C++, incluindo Visual C++/bibliotecas MFC, informações sobre programação em C++, recursos para carreiras profissional em C÷+ e uma lista de tutoriais e outras ferramentas on-line para ajudá-lo a aprender C++. http: /1db. csie ncu. edu. tw/-kant c/C/chapter2 21 . html Este site da Web tem a lista das funções da biblioteca padrão ANSI C. http: //wwwcnl . cem. ch/asd/geant/geant4yublic/codingstandards/ coding/coding2 . html Um recurso excelente e extenso sobre informações acerca do padrão C++ APÊNDICE D - RECURSOS SOBRE C++ NA INTERNET E NA WEB 1053http: //ibd. ar. com/ger/comp. lang. . html O Green Eggs Report lista mais de 100 URLs dentro de comp. lang . C++. http: //www. ts umu . se/-maxell/C++/ Este site fornece exemplos de código para algumas das classes C++. http: //www. quadralay. com/CPlusPlus/ Este é um grande recurso para informações sobre programação C++ , aprendizado de C++, carreiras em C++ e outras informações relacionadas com C++. http: //www. research. att. comi bs/homepage . htznl Esta é a homepage de Bjarne Stroutrup, criador da linguagem de programação C++. Ele fornece uma lista de recursos C++, FAQs e outras informações úteis sobre C++. http: //www. cygnus . coxn/misc/wp/draft/index . htxnl Este site tem a “minuta de trabalho” do padrão ANSI C++ em formato HTML (dezembro de 1996). http: //www . austinlinks . com/cPlusPlus/ Este site tem uma lista de recursos C++ incluindo livros sugeridos, recursos para carreira profissional, informações sobre a linguagem de programação C++ e links para sites com listas de recursos C++. ftp: //research. att. com/dist/c++std/WP/CD2/ Este site tem a minuta atual do padrão ANSI/ISO para C++. http: //ai kaist. ac . kr/ -ymkim/Program/c++ . html Este site oferece tutoriais, bibliotecas, compiladores populares, FAQs e grupos de notícias. http: //www. cyberdiem. com/vin/learn . html Learn C/C++ Today é o título deste site, que oferece diversos tutoriais avançados sobre CIC++. http: //www. trumphurst. com/cpplibsl . html A The C++ Libraries FAQ é compilada por programadores profissionais para o uso e benefício de outros programadores de C++. A biblioteca é atualizada regularmente e é uma boa fonte de informações atualizadas. http: //www. experts-exchange . com/comp/lang/cplusplus/ The Experts Exchange é um recurso gratuito para profissionais hi gh-tech que desejem compartilhar informações com seus colegas. Sócios podem afixar perguntas e respostas. http: //www. execpc. com/ -ht/vc . htm Este site é uma compilação de links sobre programação em C++ que incluem sites de informações genéricas, tutoriais, revistas e bibliotecas. http: //cplus . about. com/compute/cplus/ Este é o site About.com para as linguagens de programação CIC++. Você encontrará tutoriais, freeware/ shareware, dicionários, empregos, revistas e muitos outros itens relacionados. http: //pent2l infosys . tuwien . ac. at/cetus/ oocplusplus . htinl#oocylusylusgeneralnewsgroups Neste site você encontrará uma explicação geral sobre C++. Este site contém grupos de notícias. news : comp. lang. c++ Este é um grupo de notícias dedicado a questões sobre a linguagem orientada a objetos C++. http: //cuiwww. unige . ch/OSG/Vitek/Compilers/YearB6/msg00046 . html “O padrão C em máquinas segmentadas”. http: //www. csci . csusb . edu/dick/c++std/ Este site tem links para a minuta do padrão C++ ANSI/ISO e o grupo Usenet comp. std. c++ que fornece novas informações sobre o padrão. 1054 C++ COMO PROGRAMAR news : comp. lang. c++ . moderated Este é um grupo de notícias mais voltado a aspectos técnicos dedicado à linguagem C++. http: / /www . progsource . com/index. htxnl The Programmer’s Source é um grande recurso de informações sobre muitas linguagens de programação inclusive C++. Você encontrará listas de ferramentas, compiladores, software, 1ivros e outros recursos para C++. A lista de compiladores está organizada por plataforma. http: //www. cygnus . com/misc/gnu-win32/ O ambiente de desenvolvimento GNU está disponível isento de custo no site Cygnus na Web. http: //www. remcomp. com/lcc-win32/ Você pode fazer download do compilador LCC-Win32 para Windows 95/NT, sem custo, deste site da Web. http: //www . microsoft. com/visualc/ A homepage do Microsoft Visual C++ fornece informações sobre produtos, overviews, materiais suplementares e informações sobre como encomendar o compilador Visual C++. http://www.com/products/languages/watccpl. html Notícias e informações sobre o produto para o Watcom C/C++ versão 11.0 da Powersoft. Não pode ser feito download do compilador a partir deste site da Web. São fornecidas informações para aquisição. http://netserv.bor1and.com/bor1andcpp/cppcomp/turbocpp.htm1 O site na Web para o compilador Borland Turbo C++ Visual Edition para Windows. http: //www. symantec. com/scpp/fs scpp72 95. html Symantec C++ 7.5 para Windows 95 e Windows NT. http: //www .metrowerks . com/products/ Metrowerks CodeWarrior para Macintosh ou Windows. http: //www. faqs . org/faqs/by-newsgroup/comp/comp. compilers . html Este é um site que criou uma lista de FAQs gerados dentro do grupo de notícias comp. compilers. http: //www.ncf. carleton. ca/%7Ebg283/ Este é um compilador C++ para DOS chamado de Miracle C compiler. O compilador é grátis para download, mas o código-fonte não fica disponível enquanto você não pagar a taxa de registro. http: //www . borland. com/bcppbuilder/ Este é um link para o Borland C++ Builder5.5. Uma versão de linha de comando grátis está disponível para download. http: //www. compilers . net/ Compilers.net é um site projetado para ajudá-lo a encontrar compiladores. http: //sunset . backbone . olemiss . edu/%7Ebobcook/eC/ Este compilador C++ é projetado para usuários principiantes em C++ que queiram passar de Pascal para C++. http: //developer . intel . com/vtune/conipilers/cpp/ O copilador Intel C++. Plataformas suportadas são Windows 98, NT e 2000. http: //www. kai . com/Çplusplus/index . htxnJ. O compilador Kai C++ está disponível gratuitamente para um período de demonstração de 30 dias. 0.6 Compiladores APÊNDICE D - RECURSOS SOBRE NA INTERNET E NA WEB 1055 0.7 Ferramentas de desenvolvimento http: //www. quintessoft. comi A Quintessoft Engineering, mc. oferece o Code Navigator para C++, uma ferramenta de desenvolvimento em C++ para Windows 951NT. Você encontrará informações sobre o produto, comentários dos usuários, downloads gratuitos de edições de demonstração e informações de preços para o produto. D.8 Biblioteca padrão de gabaritos Tutoriais http: //www. cs brown . edu/people/jak/prograinming/stl-tutorial/ tutorial html Este tutorial sobre a STL está organizado em exemplos, filosofia, componentes e estendendo a STL. Você encontrará exemplos de código usando os componentes da STL, explicações e diagramas úteis. http: //web. ftech. net/honeyg/artic1es/eff stl htm Este tutorial sobre a STL oferece informações sobre os componentes da STL, contêineres, adaptadores de stream e iteradores, transformação e seleção de valores, filtragem e transformação de valores, e objetos. http: //www . xraylith wisc edu/-khan/software/stl/osexaniples/ examples htinl Este é um site útil para pessoas que estejam ainda aprendendo sobre a STL. Você encontrará uma introdução à STL e exemplos do ObjectSpace STL Tool Kit. Referências http: //www. sgi . com/Technology/STL/other resources . html Este site tem uma lista de muitos sites da Web relacionados com a STL e uma lista de livros sobre a STL recomendados. http: //www. cs . rpi edu/proects/STL/st1/st1 . html Esta é a homepage do Standard Template Library Online Reference do Rensselaer Polytechnic Tnstitute. Você encontrará explicações detalhadas sobre a STL, bem como links para outros recursos úteis para informações sobre a STL. http: //www. sgi com/Technology/STL/ O Silicon Graphics Standard Template Library Programmer’s Guide é um recurso útil para informações sobre a STL. Você pode fazer download da STL deste site e encontrar as informações mais recentes, documentação de projeto e links para outros recursos para a STL. http: //www. dinkumware comirefcpp . html Este site contém informação útil sobre a biblioteca C++ do padrão ANSI/ISO e contém extensa informação sobre a biblioteca padrão de gabaritos (STL). http: //www. roguewave com/products/xplatfortn/stdlib/ A página da Web da Rogue Wave Software’s Standard C++ Library. Você pode fazer download de artigos relacionados com a versão deles da biblioteca padrão de C++. FAQs ftp: //butler .hpl .hp. com/stl/stl. faq Este site de FTP é uma folhade FAQ para a STL mantida por Marian Corcoran, membro do comitê ANSI e uma especialista em C++. 1056 C++ COMO PROGRAMAR Artigos, livros e entrevistas http: //www. sgi com/Technology/STL/other resources html Este site relaciona muitos sites da Web relacionados com a STL e uma pequena lista de livros sobre a STL recomendados, http://www.byte.com/art/951O/sec12/art3. htzn O site da Bvte Magazine tem uma cópia de um artigo sobre a STL escrito por Alexander Stepanov. Stepanov, um dos criadores da biblioteca padrão de gabaritos. oferece informações sobre o uso da STL em programação genérica. http: //www. sgi com/Technology/STL/drdobbs-interview.html Uma entrevista com Alexander Stepanov que tem algumas informações interessantes sobre a criação da biblioteca padrão de gabaritos. Stepanov fala sobre como a STL foi conceituada, programação genérica, o acrônimo “STL” e mais. Padrão ANSI/ISO C++ http://www.ansi.org/ Você pode comprar uma cópia do documento padrão de C÷+ neste site. Software http: //www. cs rpi . edu/musser/stJ. html O site RPI STL inclui informação sobre como a STL difere de outras bibliotecas de C++ e como compilar programas que usam a STL, lista dos principais arquivos de #include da STL, exemplos de programas que usam a STL, classes contêíneres da STL e categorias de iteradores da STL. Ele também oferece uma lista de compiladores compatíveis com a STL, sites de FTP para código-fonte STL e materiais relacionados. http://www.inathcs.sisu.edu/facu1ty/horstman/safest1.htm1 Faça download do SAFESTL.ZIP. uma ferramenta projetada para encontrar erros em programas que usam a STL. http://www.objectspace.com/jgh Object Space oferece informação sobre o porte de C++ para Java. Você pode fazer download gratuito da classe portável Standards<ToolKit> deles. Os principais destaques do toolkit são contêineres, iteradores, algoritmos, alocadores, strings e exceções. http: //www. cs rpi edu/-wiseb/stl-borland htnil “Using the Standard Template Library with Borland C++ Este site é uma referência útil para pessoas que usam o compilador Borland C++. O autor tem seções sobre advertências e incompatibilidades. http: //msdn nicrosoft. com/visualc/ Esta é a homepage do Microsofi Visual C+ +. Aqui você pode encontrar as notícias mais recentes sobre o Visual C++, atualizações, recursos técnicos, exemplos e downloads. http: //www . borland. com/bcppbuilder/ Esta é a homepage do Borland C++ Builder. Aqui você pode encontrar uma variedade de recursos para C++, incluindo diversos grupos de notícias sobre C++, informações sobre as mais recentes melhorias do produto, FAQs e muitos outros recursos para programadores que usam o C++ Builder. Bibliografia (A192) Allison, C., “Text Processing 1,” The C Users Journal, Vol. 10, No. 10, October 1992, pp. 23-28. (A192a) Allison, C., “Text Processing II,” The C Users Journal, Vol. 10, No. 12, December 1992, pp. 73-77. (A193) Allison, C., “Code Capsules: A C++ Date Class, Part 1,” The C Users Journal, Vol. 11, No. 2, February 1993, pp. 123-131. (A194) Allison, C., “Conversions and Casts,” The C/C++ (Jsers Journal, Vol. 12, No. 9, September 1994, pp. 67-85. (Am95) Almarode, J., “Object Security,” Smalltalk Report, Vol. 5, No. 3 November/December 1995, pp. 15-17. (A n90) ANSI, American National Standardforlnformation Systems-Programming Language C (ANSI Document lar ANSI/ISO 9899: 1990), New York, NY: American National Standards Institute, 1990. iue (An94) American National Standard, Programming Language C++. (A aprovação e o trabalho técnico de de- de senvolvimento estão sendo conduzidos pelo Accredited Standards Committee X3, Information Technology e seu Technical Committee X3J16, Programming Language C++, respectivamente. Para maiores deta lhes entre em contato com X3 Secretariat, 1250 Eye Street, NW, Washington, DC 20005, EUA.) (An92) Anderson, A. E., and W. J. Heinze, C++ Programming and Fundamental Concepts, Englewood Cliffs, na NJ: Prentice Hali, 1992. (Ba92) Baker, L., C Mathematical Function Handbook, New York, NY: McGraw HilI, 1992. (Ba93) Bar-David, T., Object-Oriented Design for C++, Englewood Cliffs, NJ: Prentice Hail, 1993. (Be94) Beck, K., “Birds, Bees, and Browsers-Obvious Sources of Objects,” The Smalltalk Report, Vol. 3, No. 8 June l994,p. 13. (Be93a) Becker, P., Conversion Confusion, C++ Report, October 1993, pp. 26-28. (Be93) Becker, P., “Shrinking the Big Switch Statement,” Windows Tech Journal, Vol. 2, No. 5, May 1993, pp. 26-33. ue (Bd93) Berard, E. V., Essays on Object Oriented Software Engineering: Volume!, Englewood Cliffs, NJ: Prentice Hail, 1992. (Bi95) Binder, R. V., “State-Based Testing,” Object Magazine, Vol. 5, No. 4, August 1995, pp. 75-78. (Bi95a) Binder, R. V., “State-Based Testing: Sneak Paths and Conditional Transitions,” Object Magazine, Vol. 5, No. 6, October 1995, pp. 87-89. (B192) Blum,A., NeuralNetworksin C++:An Object-OrientedFrameworkforBuilding ConnectionistSystems, New York, NY: John Wiley & Sons, 1992. -+ (Bo91) Booch, G., Object-Oriented Design with Applications, Redwood City, CA: The Benjamin/Cummings Publishing Company, mc., 1991. (Bo94) Booch, G., Object-Oriented Analysis and Design, Second Edition, Reading, MA: Addison-Wesley Publishing Company, 1994. (Bo96) Booch, G., Object Solutions, Reading, MA: BenjaminlCummings, 1996. (Ca92) Cargill, T., Programming Style, Reading, MA: Addison-Wesley Publishing Company, 1992. (Ca95) Carroli, M. D., and M. A. Ellis, Designing and Coding Reusable C++, Reading, MA: Addison-Wesley Publishing Company, 1995. (Co95) Coplien, J. O., and D. C. Schmidt, Pattern Languages of Program Design, Reading, MA: AddisonWesley Publishing Company, 1995. 1058 BIBLIOGRAFIA (C++98) ANSI/ISO/IEC: International Standard: Programming Languages-C++. 1SO/IEC 14882:1998(E). Publicado pelo the American Nationai Standards Institute, New York, NY: 1998. (De90) Deitei, H. M., Operating Systems, Second Edition, Reading, MA: Addison-Wesley, 1990. (DeOO) Deitei, H. M., and P. J. Deitei, Java How to Program, Third Edition, Upper Saddle River, NJ: Prentice Hali, 2000. (DeOOa) Deitei, H. M., and P. J. Deitei, The Java Multimedia Cber Classroom, Third Edition, Upper Saddie River, NJ: Prentice Hali, 2000. (DeOi) Deitei, H. M., and P. J. Deitei, CHow to Program (Third Edition), Upper Saddle River, NJ: Prentice Haii, 2000. (Du9 1) Duncan, R., “inside C++: Friend and Virtual Functions, and Muitiple Inheritance,” PC Magazine, Vol. 10, No. 17, October 15, 1991, pp. 417-420. (Ei90) Eliis, M. A., and B. Stroustrup, TheAnnotated C++ Refrrence Manual, Reading, MA: Addison-Wesley, i990. (Em92) Embley, D. W.; B. D. Kurtz; and S. N. Woodfield, Object-Oriented SystemsAnalysis, Englewood Ciiffs, NJ: Yourdon Press, 1992. (En90) Entsminger, G., The Tao of Objects: A Beginner’s Guide to Object-Oriented Programming, Redwood City, CA: M&T Books, 1990. (F193) Fiamig, B., Practi cal Data Structures in C++, New York, NY: John Wiiey & Sons, 1993. (Ga95) Gamma, E,; R. Heim; R. Johnson; and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Reading, MA: Addison-Wesiey Pubiishing Company, 1995. (Ge89) Gehani, N., and W. D. Roome, The Concurrent C Programming Language, Summit, NJ: Silicon Press, 1989. (Gi92) Giancoia, A., and L. Baker, “Bit Arrays with C+÷,” The C Users Journal, Voi. 10, No. 7, Juiy, 1992, pp. 2 1-26. (G195) Giass, G., and B. Schuchert, The STL <Primer>, Upper Saddle River, NJ: Prentice Hali PTR, i995. (Go95) Gooch, T., “Obscure C++,” Inside Microsofi Visual C++, Voi. 6, No. ii, November 1995, pp. 13-15. (Ha90) Hansen, T. L., The C++ AnswerBook, Reading, MA: Addison-Wesiey, 1990. (He97) Henricson, M., and E. Nyquist, Industrial Strength C++: Rules and Recommendations, Upper Saddle River, NJ: Prentice Haii, 1997. (Ja93) Jacobson, 1., “Is Object Technoiogy Software’s Industrial Piatform?” !EEE Software Magazine, Vol, 10, No. 1, January 1993, pp. 24-30. (Ja89) Jaeschke, R., Portability and the C Language, Indianapolis, IN: Hayden Books, 1989.(Ke88) Kernighan, B. W., and D. M. Ritchie, The CProgramming Language (Second Edition), Englewood Ciiffs, NJ: Prentice Haii, 1988. (Kn92) Knight, A., “Encapsulation and Information Hiding’ The Smalltalk Report, Vol. i, No. 8, June 1992, pp. 19-20. (Ko90) Koenig, A., and B. Stroustrup, “Exception Handling for C++ (revisado),” Proceedings ofthe USENIX C++ Conference, San Francisco, CA, Aprii 1990. (Ko91) Koenig, A., “What is C++ Anyway?” Journal of Object-Oriented Prograinming, April/May 1991, pp. 48-52. (Ko94) Koenig, A., Impiicit Base Ciass Conversions,” C++ Report, Vol. 6, No. 5, June 1994, pp. 18-19. (Ko97) Koenig, A., and B. Moo, Ruminations on C++, Reading, MA: Addison-Wesiey, 1997. (Kr9 1) Kruse, R. L.; B. P. Leung; and C. L. Tondo, Data Structures and Program Design in C, Englewood Ciiffs, NJ: Prentice Haii, 1991. (Le92) Lejter, M.; 5. Meyers; and 5. P. Reiss, “Support for Maintaining Object-Oriented Programs,” ÍEEE Transactions on Software Engineering, Voi. 18, No. 12, December 1992, pp. 1045-1052. (Li91) Lippman, 5. B., C++ Primer (Second Edition), Reading, MA: Addison-Wesiey Publishing Company, 1991. (Lo93) Lorenz, M., Object-Oriented Software Deveiopment: A Practical Guide, Englewood Ciiffs, NJ: Prentice Hail, 1993. (Lo94) Lorenz, M., “A BriefLook at Inheritance Metrics,” The Smalltalk Report, Vol. 3, No. 8, June 1994, pp. 1, 4-5. (Ma93) Martin, J.. Principies of Object-Oriented Analysis and Design, Englewood Ciiffs, NJ: Prentice Hali, 1993. BIBLIOGRAFIA 1059 (Ma95) Martin, R. C., Designing Object-Oriented C++ Applications Using the Booch Method, Englewood Cliffs, NJ: Prentice 1-lali, 1995. (Ma93a) Matsche, J. J., “Object-Oriented Programming in Standard C,” Object Magazine, Vol. 2, No. 5, January/ February 1993, pp. 7 1-74. (Mc94) McCabe, T. J., and Á. H. Watson, “Combining Comprehension and Testing in Object-Oriented Development,” Object Magazine, Vol. 4, No. 1, May/April 1994, pp. 63-66. (Me88) Meyer, B., Object-OrientedSoftware Construction, C. A. R. Hoare Series Editor, Englewood Cliffs, NJ: Prentice Hali, 1988. (Me92) Meyer, B., Advances in Object-Oriented Software Engineering, Editado por D. Mandrioli e B. Meyer, Englewood Cliffs, NJ: Prentice Hail, 1992. (Me92a) Meyer, B., Eiffel: The Language, Englewood Cliffs, NJ: Prentice Hail, 1992. (Me92b) Meyers, S., Effective C++: 50 Specific Ways to Improve Your Programs and Designs, Reading, MA: Addison-Wesley Publishing Company, 1992. (Me95) Meyers, S., More Effective C++. 35 New Ways to Improve Your Programs and Designs, Reading, MÁ: Addison-Wesley Publishing Company, 1995. (Me95a) Meyers, 5., “Mastering User-Defined Conversion Functions,” C/C+÷ Users Journal, Vol. 13, No. 8, Augusi 1995, pp. 57-63. (Mu93) Murray, R., C++ Strategies and Tactics, Reading, MA: Addison-Wesley Publishing Company, 1993. (Mu94) Musser, D. R., and A. A. Stepanov, “Algorithm-Oriented Generic Libraries,” Software Practice and Experience, Vol. 24, No. 7, July 1994. (Mu96) Musser, D. R., and A. Saini, STL Tutorial and Reference Guide: C++ Programming with the Standard Template Librarv, Reading, MA: Addison-Wesley Publishing Company, 1996. (Ne95) Nelson, M., C++ Programmer’s Guide to the Standard Template Library, Foster City, CÁ: Programmers Press, 1995. (Ne920) Nerson, J. M., “Applying Object-Oriented Analysis and Design,” Communications ofthe ACM, Vol. 35, No. 9, September 1992, pp. 63-74. (Ni92) Nierstrasz, O.; S. Gibbs; and D. Tsichritzis, “Component-Oriented Software Development,” Communications oftheACM, Vol. 35, No. 9, September 1992, pp. 160-165. (P190) Pinson, L. J., and R. S. Wiener, Applications of Object-Oriented Programming, Reading, MA: AddisonWesley, 1990. (Pi93) Pittman, M., “Lessons Learned in Managing Object-Oriented Development,” IEEE Software Magazine, Vol. lO, No. 1, January 1993, pp. 43-53. (P192) Plauger, P. J., The Standard C Library, Englewood Cliffs, NJ: Prentice Hail, 1992. (P193) Plauger, D., “Making C++ Safe for Threads,” The C Users Journal, Vol. 11, No. 2, February 1993, pp. 58-62. (Po97) PohI, 1., C+ + Djstilled: A Concise ANSI/ISO Reference and Siyle Guide, Reading, MÁ: Addison-Wesley, 1997. (Po97a) PohI, 1., Object-Oriented Programming Using C++, Second Edition, Reading, MÁ: Áddison-Wesley Publishing Company, 1997. (Pr92) Press, W. H., et ai, Numerical Recipies in C, Second Edition, Cambridge, MÁ: Cambridge University Press, 1992. (Pr93) Prieto-Diaz, R., “Status Report: Software Reusability,” IEEE Software, Vol. 10, No. 3, May 1993, pp. 61- 66. (Pr92) Prince, T., “Tuning Up Math Functions,” The C Users Journal, Vol. 10, No. 12, December 1992. (Pr95) Prosise, J., “Wake Up and Smell the MFC: Using the Visual C++ Classes and Ápplications Framework,” Microsoft Systems Journal, Vol. lO, No. 6, June 1995, pp. 17-34. (Ra90) Rabinowitz, H., and C. Schaap, Portable C, Englewood Cliffs, NJ: Prentice Hali, 1990. (Re9 1) Reed, D. R., “Moving from C to C++,” Object Magazine, Vol. 1, No. 3, September/October 1991, pp. 46- 60. (Ri78) Ritchie. D. M.: S. C. Johnson: M. E. Lesk: and B. W. Kernighan. “UNIX Time-Sharing System: The C Programming Language,” The Beli System Technical Journal, Vol. 57, No. 6, Part 2, JuIy-Áugust 1978, pp. 1991-2019. (Ri84) Ritchie, D. M., “The UNIX System: The Evolution of the UNIX Time-Sharing System,” AT&T Beil Laboratories Technicaliournal, Vol. 63, No. 8, Part 2, October 1984, pp. 1577-1593. 1060 BIBLIOGRAFIA (Ro84) Rosler, L., “The UNIX System: The Evolution of C-Past and Future,” AT&T Laboratories Technical Journal, Vol. 63, No. 8, Part 2, October 1984, pp. 1685-1699. (Ro00) Robson, R., Using the STL: The C++ Standard Template Librarv, SpringerVerlag, 2000. (Ru92) Rubin, K. S., and A. Goldberg, “Object BehaviorAnalysis,” Communications of theACM, Vol. 35, No. 9, September 1992, pp. 48-62. (Ru91) Rumbaugh, J.; M. Blaha; W. Premerlani; F. Eddy; and W. Lorensen, Ohject-Oriented Modeling and Design, Englewood Cliffs, NJ: Prentice Hail, 1991. (Sa93) Saks, D., “Inheritance,” The C Users Journal, May 1993, pp. 8 1-89. (Sc99) Schildt, H., STL Programmingfrom the Ground Up, Osborne McGraw-HiIl, 1999. (Se92) Sedgwick, R., Algorithms in C++, Reading, MA: Addison-Wesley, 1992. (Se92a) Sessions, R., Class Construction in C and C++, Englewood Cliffs, NJ: Prentice Hali, 1992. (Sk93) SkelIy, C., “Pointer Power in C and C++,” The C Users Journal, Vol. li, No. 2, February 1993, pp. 93- 98. (Sm92) Smaer, S., and S. J. Melior, Object Lifecycles: Modeling the World in States, Englewood Cliffs, NJ: Yourdon Press, 1992. (Sm90) Smith, J. D.. Reusabilitv & Software Construction in C & C++, New York, NY: John Wiley & Sons, 1990. (Sn93) Snyder, A., “The Essence of Objects: Concepts and Terms,” IEEE Software Magazine, Vol. 10, No. 1, January 1993, pp. 31-42. (St95) Stepanov, A., and M. Lee, “The Standard Template Library,” Internet Distribution, Published at ftp: II butler.hpl.hp.com/stl, July 7, 1995. (St84) Stroustrup, B., “The UNIX System: Data Abstraction in C,”AT&TBeII Laboratories Technicaliournal, Vol. 63, No. 8, Part 2, October 1984, pp. 1701-1732. (St88) Stroustrup, B., “What is Object-Oriented Programming?” IEEE Software, Vol. 5, No. 3, May 1988, pp. 10-20. (St88a) Stroustrup, B., “Parameterized Types for C++, Proceedings ofthe USENÍX C++ Conference, Denver, CO, October 1988. (St9 1) Stroustrup, B., The C+ + Programming Language (Second Edition), Reading, MA: Addison-Wesley Series in Computer Science, 1991. (St93) Stroustrup, B., “Why Consider Language Extensions?: Maintaining a Delicate Balance:’ C++ Report, September 1993, pp. 44-51. (St94) Stroustrup, B., “Making a vector Fit for a Standard,” The C++ Report, October 1994. (St94a) Stroustrup, B., The Design Evolution of C++, Reading, MÁ: Addison-Wesley Publishing Company, 1994. (St97) Stroustrup, B., The C++ Programming Language, Third Edition, Reading, MA: Addison-Wesley Publishing Company, 1997. (Ta94) Taligent mc., Taligent ‘s Guide to Designing Programs: Well-Mannered Object-Oriented Design in C++, Reading, MÁ: Addison-Wesley Publishing Company, 1994. (Ta92) Taylor, D., Object-Oriented Information Systems, New York, NY: John Wiley & Sons, 1992. (To89) Tondo, C. L., and 5. E. Gimpel, The CAnswerBook, Englewood Cliffs, NJ: Prentice HaIl. 1989. (Ur92) Urlocker, Z., “Polymorphism Unbounded,” Windows Tech Journal, Vol. 1, No. 1, January 1992, pp. 11- 16. (Va95) Van Camp, K. E., “Dynamic Inheritance Using Filter Classes,” C/C++ Users Journal, Vol. 13, No. 6, June 1995, pp. 69-78. (Vi94) Vilot, M. J., “An Introduction to the Standard Template Library,” The C++ Report, Vol. 6, No. 8. October 1994. (Vo9 1) Voss, G., Object-Oriented Programming: An Introduction, Berkeley, CÁ: Osbourne McGraw-Hill, 1991. (Vo93) Voss, G., “Objects and Messages,” Windows Tech Journal, February 1993, pp. 15-16. (Wa94) Wang, B. L., and J. Wang, “Is a Deep Class Hierarchy Considered Harmful?” Object Magazine, Vol. 4, No. 7. November-December 1994, pp. 35-36. (We94) Weisfeld, M., “Án Álternative to Large Switch Statements,” The C Users Journal, Vol. 12, No. 4, April 1994, pp. 67-76. (We92) Weiskamp, K., and B. Flamig, The Complete C++ Primer, Second Edition, Orlando, FL: Ácademic Press, 1992. BIBLIOGRAFIA 1061 (Wi93) Wiebel, M., and S. Halladay, “Using OOP Techniques Instead of switch in C++,” The C Users Journal, Vol. 10, No. lO, October 1993, pp. 105-112. (Wi88) Wiener, R. S., and L. J. Pinson, An introduction to Object-Oriented Programming and C++, Reading, MA: Addison-Wesley, 1988. (Wi92) Wilde, N., and R. Huitt, “Maintenance Support for Object-Oriented Programs,” ÍEEE Transactions on Software Engineering, Vol. 18, No. 12, December 1992, pp. 1038-1044. (W193) Wilde, N.; P. Matthews; and R. Huitt, “Maintaining Object-Oriented Software,” IEEE Software Magazine, Vol. 10, No. 1, ianuary 1993, pp. 75-80. (Wi96) Wilson, G. V., and P. Lu, Parailel Programming Using C++, Cambridge, MA: MIT Press, 1996. (Wt93) Wilt, N., “Templates in C÷+,” The C Users Journal, May 1993, pp. 33-5 1. (Wi90) Wirfs-Brock, R.; B. Wilkerson; and L. Wiener, Designing Object-Oriented Software, Englewood Cliffs, Ni: Prentice Hail, 1990. (Wy92) Wyatt, B. B.; K. Kavi; and S. Hufnagel, “Parallelism in Object-Oriented Languages: A Survey,” IEEE Software, Vol. 9, No. 7, November 1992, pp. 56-66. (Ya93) Yamazaki, S.; K. Kajihara; M. Ito; and R. Yasuhara, “Object-Oriented Design of Telecommunication Software,” ÍEEE Software Magazine, Vol. 10, No. 1, January 1993, pp. 81-87. A Indice Símbolos - operador unário 125 (NOT lógico) 146-149, 1016-1017 ‘=77-78 = (operador de desigualdade) 77-78, 518-519, 1016-1017 # 67-68, 856 * operador do pré-processador 860-861 #* operador do pré-processador 860- 861 $ prompt da linha de comando do UNIX 868-869 % operador módulo 74-75, 348 % prompt 868-869 & (operador dc endereço) 321-324, 1016-1017 & e * operadores como inversos 323- 324 & em uma lista de parâmetros 226-227 & para declarar referência 224-225 && (operador AND lógico) 146-147, 219, 1016-1017 &= (operador AND sobre bits com atribuição) 986-987, 1016-1017 O em uma chamada de função 194- 196 (1 operador 194-196 * (operador de derreferência de ponteiro) 322-324 * operador 74-75 * * operador de exponenciação em BASIC 518-519 + operador 72-75 ++operador 125 ++ operador sobre um iterador 923-924 ++ operador de incremento unário 125 += operador 124-125. 518-519, 893- 894 * operador 1024-1026 .h arquivos de cabeçalho 199-201 / operador 74-75 /1 comentário de uma só linha 66-67 (operador unário de resolução de escopo) 228-229, 475-476, 1012- 1013, 1026 <(operador menor que) 77-78 «deslocamento à esquerda 72-73 «operador 66-68 <= (operador menor que ou igual a) 77- 78 = operador 72-75, 148-149 == (operador de igualdade) 77-78, 148- 149, 518-519 > (operador maior que) 77-78 -> (seleção de membro através de ponteiro) 1024-1025 -> operador 1025 >= (operador maior que ou igual a) 77- 78 » deslocamento à direita 73-74 ?: (operador condicional ternário) 105- 106, 219 \ seqüência de escape com caractere barra invertida 68-69 \“ seqüência de escape com caractere aspas 68-69 \a alarme 68-69 \n seqüência de escape (nova linha) 68- 69, 642-643 \r retorno do carro 68-69 \t68-69, 179-180 (operador OR exclusivo sobre bits) 1016-10 17 ‘= (operador OR exclusivo sobre bits com atribuição) 986-987, 1016-1017 1 119-120, 1016-1017 = (operador OR inclusivo sobre bits com atribuição) 986-987, 1016-1017 II (operador OR lógico) 146-148, 219, 1016- 1017 ‘\O’ 355-356 \n’ 354-355 Numéricos <numeric> 928-929, 968, 970 O ponteiro 773-774 OX 657-65 8 Ox 657-658 A a pilha está corrompida 708-709 a repetição termina 109-111 a STL em programação genérica 1000- 1001, 1055-1056 A tartaruga e a lebre 379-380 a UML 81-82,84 a.out 61-63 aberto 728-729 abordagem de blocos de construção 56- 57, 60-61 abort 478-479, 700-701, 704-705, 708-709, 713-7 14, 86 1-862, 875-876 abortar um programa 699-700 “abordagem de código que funciona” 50-51 “abortar” 115 “aridade” de um operador 518-519 “array inteligente” 272-273 abreviando expressões de atribuição 124-125 abreviaturas semelhantes ao inglês 55- 56 abrir um arquivo inexistente 732-733 abrir um arquivo para leitura 73 1-732 abrir um arquivo para saída 731-732 abstração 82-83 abstração de dados 5 1-52, 452, 479- 480, 524-525, 589-590 ação 50-51, 105-107, 109-110, 151-152, 236-237, 479-480 ação de sair 237-23 8 accumulate 929-930, 967-968, 990- 991 acessando membros union 880-881 Acessando os membros de um objeto através de cada tipo de handie para o objeto 407-408 acessibilidade de membros da classe base em classe derivada 577-578 acesso a função 413-414 acesso a membro através de um handie 407-408 acesso a membro de classe 406-407 acesso a membro de uma estrutura 406- 407. 808-809 acesso a membro private de uma classe 412 acesso a membros de dados e funções membro não-static 478 acesso à memória inválido 875-876 acesso a variável global 228-229 acesso aos dados do chamador 224-225 acesso detault para membros de struct é publie 412-413 acesso direto 762-763 acesso indexado 940-941 acesso public por default 808 acesso verificado 892-893 acionador (software) de dispositivo 611- 612 ações a serem executadas 100-101, 110- III acrescentar a saída a um outro string 358-359 acrescentar dados a um arquivo 730-732 acumulador 381 Ada 5 8-59 adaptador 950-951 adaptador de contêiner 919-920, 926- 927, 950-951 adaptador de função 989-990 adiamento indefinido 345-346 adição 53-54, 73-76 adicionar um inteiro a um ponteiro 338- 339 adicionar uma nova conta a um arquivo 746-747 adjacent_differerice 929-930, 985 adjacentfind 929-930, 985-986 adjustfield 662-665 adulteração 230-231 Adulteração para possibilitar ligação segura quanto ao tipo 231-232 advertência 68-69 ajuste da precisão 652-653 ajuste de indicadores 657-658 ajustes originais de formatos 663-664 algoritmo 100-101, 104-106. 110-111. 116, 124-125,760,917-918,918- 919, 927-928, 955 algoritmo de “preparar-se para ir trabalhar” 100-101 algoritmo de avaliação 803-805 algoritmo de avaliação de expressão pós-fixa 791-792 algoritmo de avaliação pos-fixo 799- 800, 803-805 algoritmo de conversão de infixa para pós-fixa 791-792, 799-800, 803-805 algoritmo de distribuição 348 algorilmo de embaralhamento 812-813 algoritmo de passagem única 925-926 algoritmo de seqüência não-mutante 928-929 algoritmo em pseudocódigo 116 algoritmo numérico 990-991 algoritmo padrão 927-928 Algoritmos básicos de classificação e pesquisa da Biblioteca Padrão 969 algoritmos da biblioteca padrão 200- 201 algoritmos da STL 680-68 1 algoritmos de classificação 969 algoritmos de procura 969 algoritmos de seqüência mutante 928- 929 algoritmos genéricos 928-929 algoritmos matemáticos 965-966 algoritmos numéricos 928-929 algoritmos separados de contêiner 928- 929 <algorithm> 199-201. 935-936 alias 226-227, 322-325, 907-908 alias para o nome de um objeto 428- 429 aliaspara um tipo 92 1-922 alinhamento 76 1-762, 809-8 10, 880- 881 alinhamento em limite 76 1-762 alinhamento na memória 809-8 lO, 880- 881 alocação de espaço 544-545 alocação de memória 200-201, 918-919 alocação de memória dinâmica 714-715 alocação dinâmica de memória 471, 473-474, 76 1-764, 877-878 alocação dinâmica de memória no estilo de C 877-878 alocador 918-9 19, 936 alocador default 9 18-919 alocador personalizado 918-919 alocar dinamicamente arrays de caracteres para armazenar strings 575-577 alocar dinamicamente um array de inteiros 53 1-532, 887-888 alocar e desalocar memória dinamicamente 420-421 alterando o fluxo de controle 144-145 ambiente 191 ambiente C++ 6 1-62 ambiente chamador 73 2-733 ambiente de desenvolvimento de programas 61-62 ambiente de desenvolvimento GNU 1054- 1055 ambiente de programação 190-191 ambiente de programação C++ 190 ambiente hospedeiro 874 ambiente multiusuário 778 ambigüidade 194 196 American National Standards Committee on Computers and Information Processing (X3) 56 American National Standards institute (ANSI) 50-51, 481-482 American Standard Code for Information Interchange 360-361 análise 84 análise de texto 390-391 Análise dos resultados de um exame 122- 123 análise e projeto estruturados de sistemas 59-60 and 1016-1017 AND lógico 1016-1017 AND lógico (&&) 146-147, 185-186, 816-817 AND sobre bits 1016-1017 AND sobre bits(&)8l4-815 AND sobre bits com atribuição 1016- 1017 andeq 1016-1017 aninhamento 104-106, 129-130, 155- 156 aninhamento de estruturas de controle 102-104, 120-121 ANSI 50-51, 56. 48 1-482 ANSI C 56, 65-66 ANSI/ISO 9899: 199056 any 986-987 aparência de blocos de construção 152- 153 apelido 322-325 aplicativos de acesso instantâneo 739- 740 aplicativos distribuídos cliente/servidor 54-55 append 893-894 apresentação de caracteres 199-201 aproximação de números em ponto flutuante 120-121 área indefinida na memória 810-811 argumento 190-193 argumento da referência 324-325 argumento de função 191-193 argumento de função default 4 19-420 argumento de linha de comando 871- 872 argumento de macro 857-858 argumento default 228-229, 4 17,420 argumento para uma macro 857-858 argumentos default com construtores 4 17,420 argumentos mais à direita (finais) 228- 229 argumentos na ordem correta 194-195 argumentos passados para construtores de objetos membro 460-461 argv[] 870-871 aritmética 63 aritmética de inteiros 516 aritmética de ponteiros 338-342, 933- 934 aritmética de ponteiros é dependente de máquina 338-339 1064 ÍNDICE aritmética de ponteiros sobre um array de caracteres 339-340 aritmética de ponto flutuante 516 armazenagem livre 714-715 ARPA 63-64 ARPAnet 63-64 arquivo 727-729, 735, 808 arquivo de acesso aleatório 727, 739- 742, 744-746 arquivo de acesso seqüencial 727, 729- 730, 733-734, 738-740 arquivo de cabeçalho 199-201 408-409, 411-412,583-584, 62 1-622, 857, 873-874, 928-931, 935-937, 941-944, 946, 949-955, 968, 970, 974-976 arquivo de cabeçalho <cassert> 861- 862,478-479 arquivo de cabeçalho <cctype> 200- 201, 329-330, 858-859, 825 arquivo de cabeçalho <csdtlib> 713- 714 arquivo de cabeçalho <csignal> 875- 876 arquivo de cabeçalho <cstdio> 858- 859 arquivo de cabeçalho <cstdlib> 478- 479, 874, 877-878 arquivo de cabeçalho <exception> 706-707 arquivo de cabeçalho <fstream> 728- 729 arquivo de cabeçalho <iomanip h> 119-120 arquivo de cabeçalho <iomanip> 857, 639-640, 65 1-652, 657-658 arquivo de cabeçalho <iostream> 67-68, 200-201, 639-640, 728-729, 857, l0l0-l0l2 arquivo de cabeçalho <iostreain. h> 139- 140 arquivo de cabeçalho <memory> 714- 715 arquivo de cabeçalho <new> 711-713 arquivo de cabeçalho <s tdexcept> 716-7 17 arquivo de cabeçalho de entrada/saída em streams <iostream> 67-68 arquivo de cabeçalho definido pelo programador 199-201 arquivo de contas a receber 727-729 arquivo de estoques 727-729 arquivo de folha de pagamento 727-729 arquivo de implementação 484-485 arquivo de n bytes 729-730 arquivo de texto 745-746 arquivo de transações 756 arquivo em disco 803 arquivo objeto 62 1-622 arquivo objeto pré-compilado 484-485 arquivo seqüencial 727-730, 734-735 arquivo-fonte 873-874 arquivos de cabeçalho 432-434 arquivos de cabeçalho da biblioteca padrão 199-201, 856 arquivos de cabeçalho de contêineres da biblioteca padrão 92 1-922 arquivos de cabeçalho no “estilo antigo” 199-200 arquivos de cabeçalho padrão 191-193 arquivos de código-fonte 408-409 arquivos-fonte múltiplos 408-409 array “bruto” 480-481 Array “inteligente”929-930 array 262-264, 33 1-332, 480-483, 762- 763 Array 9 17-918 array associativo 949-950 array automático 265-267 array baseado em ponteiro no estilo de C 955-956 array bidimensional 292-298, 3 12-313, 345-346, 760 array bidimensional deck 345-346 array de caracteres 273-274, 343-344, 355-356, 522-523, 904-905 array de caracteres como um string 274- 275 array de ponteiros para funções 387-388 array de strings 345-346 array de strings suit 345-346 array dinâmico 877-878 array local automático 276-277 array m por n 292-293 array multidimensional 294 array no estilo deC 9 19-920 array unidimensional 3 26-327, 329, 335-336 arrays baseados em ponteiros 262 arrays com múltiplos subscritos 292- 293, 295 arrays e funções 279-281 arrays passados por referência 282-283 arrays que conhecem seu tamanho 480- 481 arredondando 119-120 arredondar 192-193 árvore 482-483, 760-761, 780-781, 787- 788 árvore balanceada 787-788 árvore binária 760, 780-78 1, 784-785, 981, 983-984 árvore binária com duplicatas 793-794 árvore de pesquisa binária 780-781, 785-787, 793-794 ASCJI (American Standard Code for information Interchange) 139-140, 360-361, 645-646 aspas 67-69 aspas vazias (string nulo) 740-741 asserção 478-479 assert 478-479, 532-534, 543-544, 575-577,699-700,711-712, 861-862 <assert.h> 200-201 assign 892-893, 940-941 assinatura 198-199, 230-231, 546-547, 573,577-578,610-611,622,624-625 assinatura de uma função 198-199 assíncrono 697-698 associa da direita para a esquerda 81- 82, 126-127, 139-140 associa da esquerda para a direita 126- 127 associação l62-l63, 949-950 associações 83-84. 161-162 associações entre classes 162-163 associatividade 8 1-82, 148-149 associatividade da direita à esquerda 81-82 associatividade de operadores 75-76 associatividade não-alterada por sobrecarga 518-519 asterisco (*) 74-75, 184-185 at 893-894, 907-908, 929-930, 936, 986-987 AT&T 59-60 atender 299-300, 404-405, 412 atexit 874 ativações 302-304 atividade 237-238, 302-304 atof 829-830 atoi 801-805, 829-831 atol 829-830 ator 159-160 atribuição de array 480-481 atribuição de objetos de classes 413- 414,446-447 atribuição de ponteiro 340-34 1 atribuição de ponteiros para classe derivada a ponteiros para classe base 568-569 atribuição de string 891-892 atribuição de tring de caracteres a objetos string 543-544 atribuição de um objeto a outro 430-431 Atribuição de um objeto a outro com cópia default membro a membro 430-431 atribuição de uma estrutura a uma estrutura do mesmo tipo 808-809 atribuição de uma union a uma outra union do mesmo tipo 880-881 atribuição membro a membro 516-5 17 atribuição membro a membro default 5 16-5 17 atribuir novamente a uma referência 227-228 atribuir um iterador a outro 927 atribuiu o valor de 79-80 atributo 396, 400-401 atributo “const” 1023-1024 atributos 82-84, 161-162, 234-235, 298- 299, 366-367 atributos de classes 366 atributos de uma variável 208-209 atualizar registros no lugar 739-740 atualiLar um registro 757 áudio 639-640 auto 208-210 auto-atribuição 469-470, 534, 544-545 auto2tr 714-716 autodocumentação 70-71 automóvel 186, 188 auxflio à depuração 859-860 avaliação da esquerda para a direita 75- 77 avaliador pós-fixo 802-803, 805-806 avaliando expressões 774-775, 79 1-792 avaliando uma expressão pós-fixa 792- 793 avanço do formulário (‘ \f’) 825,827- 828 B B 56 Babbage, Charles 58-59 back 930-931, 936, 95 3-954 backinserter 974-976 badcast 716-717 bad_exception 716-717 badtypeid 7 16-717 badbit 645-646, 732-733 baralho 345-346 baralho simulado 345-346 barra (“1”) 236-237 barra de ativação 302-304 barra invertida (\) 67-68, 858-859 barra invertida seguida por zero (\O) 274-275 base de stream 65 1-652 base de uma pilha 774-775 base e 192-193 base especificada para um stream 661- 662 basefield 66 1-663, 665-666 BASIC 760-761, 796, 805-806 basicistringstreans 907-908 basicostringstreain 907-908 basicstring 890 BCPL 56 begin 906-907, 920-921, 923-924, 927-928, 933-934 BelI Laboratories 56-57 bibliografia 65-66 biblioteca de matemática 19 1-193, 200- 201 biblioteca de tratamento de sinais 875- 876 biblioteca de utilitários genéricos <cstdlib> 478-479, 829-830, 86 1-862, 874, 877-878 biblioteca padrão 190-191, 917-918 biblioteca padrão de C++ 190-191, 535- 536 biblioteca padrão de gabaritos (STL) 200-201, 480-481, 629-630, 680-681, 917-918, 1051-1052 bibliotecas 6 1-62 bibliotecas de classes 60-61, 135-136, 170, 190-191, 408-409, 431-432, 565-566, 583-584 bibliotecas de classes independentes de plataforma 918-919 bibliotecas padrão de classes 481-482 bibliotecas privadas 61,63 binário 181-182 binaryfunction 992 binarysearch 968, 970, 971 bit 66 1-662, 727, 808 bitand 1016-1017 bitor 1016-1017 <bitset> 200-201, 92 1-922 bits de estado 645-666 bitset 9 19-920, 985-988 bloco 194-196, 209-214, 421-422 bloco catch 700-705 bloco de construção aninhado 153-156 bloco de construção sobreposto 153-154 bloco de dados 83 8-839 bloco de memória 838-839, 878-879, 940-941 bloco é abandonado (saída do bloco) 209-2 10 bloco está ativo 209-2 10 bloco externo 211-212 bloco interno 211-212 bloco try 700-704, 706-707, 710-711 bloco try externo 706-707 bloco try que o inclui 704-705 blocos aninhados 211-212 “blocos de construção” 83-84 blocos de construção empilhados 153- 156 Boas práticas de programação 60-61, 64-65 Bohm,C. 101-103, 154-155 Booch, Grady 84 bool 436-437, 1004-1005 Borland C++ 61, 63, 230-23 1, 874 Borland C++Builder 1001-1002, 1056 branco 103-104, 184-185 hubble sort 283-284, 310-311,334-335, 349-350 Buhble sort com chamada por referência 334-335 bucket sort 317 buferização de saída 667-668 buffer é esvaziado 640-641 buffer é preenchido 640-641 Byron, Lord 58-59 byte 727-729, 813-8 14 c C & C++ Multimedia Cyber Classroom Third Edition 50-53 C 50-52, 54-56 C clássico 56 C How tu Program 5 1-52 ÍNDICE 1065 C tradicional 56 cstr 905-906 C++ How To Program 52-53 C++ 54-56, 65-66 cabeçalho catch 704-705 cabeçalho de função 194-196, 206-208, 222-223, 335-336 cabeçalho whiJ.e 138-139 cabeçalhos de colunas 263-264 cadeia de chamadas 698-699 caixa 96-97 caixa automático 159-160. 7 39-740 caixa do sistema 160 calcula o valor de 1 185-186 calcula o valor de p a partir da série infinita 185-186 calcula os rendimentos de um vendedor 178-179 Calculando a soma de dois inteiros lidos do teclado com cm e o operador de extração de stream 645-646 Calculando a soma dos elementos de um array 269-270 Calculando fatoriais com uma função recursiva 215-216 Calculando juros compostos com for 136-137 calcular recursivamente o valor mínimo em um array 220-221 cálculodamédia 110-111, 116 cálculos 74-75, 101-103 cálculos aritméticos 74-75 cálculos matemáticos 58-59, 190-191 cálculos monetários 135-136 calloc 877-878 caminhos de decisão 238 campainha 68-69 campo 727-729 campo de bits 813-814, 82 1-825 campo de bits como membro de uma estrutura 822-823 campo de bits sem nome 824-825 campo de bits sem nome com largura zero 824-825 campo de tipo 750-751 campos ajustados 660-661 campos de bits economizam espaço 824-825 campos maiores do que os valores sendo impressos 660-661 capacidade de um string 897, 899 capacity 932-933 captura todos os tipos de exceções 697- 698, 704-705 capturar todas as exceções de um certo tipo 697-698 caractere 354-355, 727, 808 caractere apóstrofe (‘) 354-355 caractere barra vertical (1) 119-120 caractere de escape 67-68 caractere de impressão, incluindo espaço 825 1066 ÍNDICE caractere de preenchimento 65 1-652, 654-655, 660-661 caractere delimitador 356-357, 361-362 caractere nova linha 141-142 caractere nulo (‘ \O ‘) 274-275, 329- 330, 344-345, 355-358, 362-363, 65 1-652, 760-761, 792-793 caractere nulo de término 274-276, 355- 358, 362-363, 905-906 caractere nulo de término, ‘O’, de um string 462-465 caractere sublinhado (_ ) 70-71 caractere til (-) 404-405, 420-421 caracteres de controle 827-828 caracteres de espaço em branco 80-81, 103-104, 141-142, 274-275, 825, 827-828, 856 caracteres de preenchimento 657-661 caracteres de teste 200-201 caracteres especiais 70-71, 354-355 caracteres representados como códigos numéricos 360-361 característica defriend é concedida, não obtida 465-466 característica defriend não é simétrica 465-466 característica defriend não é transitiva 465-466 características comuns 584-585, 595- 597 características comuns entre classes 366 carregador 61-62 carregando 61, 63 carregar 61. 63, 381 casamento aceitável para o tipo de uma exceção 705 case com comandos múltiplos l40- 141 caso de uso 159-160, 164-165, 366 caso default 137, 140-142, 203-204 caso(s) base 214, 218-220 <cassert> 200-201 cassino 199-201, 206-208 cassino de jogo 199-201 catalogando 431-432 catch (captura) qualquer exceção 705 catch (captura) todas as exceções 716-717 catch (captura) um objeto de classe base 705 catch (captura) uma exceção7l0-711 catch 700-701 catch (...) { throw; } 724-725 catch(. . .) 705-707,716-717 catch(exception e) 716-717 CC 61, 63 CD-ROM 52-53 ceil 192-193 CERN 64-65 cerr (erro padrão sem buifer) 63, 639- 641, 728-729 <cfloat> 200-201 chamada de função 190-191, 193-196 chamada de função aninhada 699-700, 702-704 chamada de função membro SI 6 chamada de função virtual 630- 632 chamada de função virtual ilustrada 631 chamada por referência 223-224, 278- 281, 325-326, 328-329, 33 1-332, 334-335, 430-431, 533-534 chamada por referência com ponteiros 225-226, 324-325 chamada por referência com referências 324-325 chamada por referência const 320, 325- 326 chamada por referência e desempenho 224-225 chamada por referência e segurança 224-225 chamada por referência simulada 279- 281. 331-332 chamada por valor 223-224, 278-279, 324-327, 329, 331-332, 430-431, 533-534, 810-811 chamada por valor por default 33 1-332 chamada recursiva 214, 218-219 chamada recursiva de função 774-775 chamadas de construtor 417,420 chamadas de função membro encadeadas 469-470 chamadas de função membro freqüentemente concisas 405-406 chamadas de função membro para objetos corist 452-453 chamadas de funções da biblioteca de matemática 248-249 chamadas dos destruidores em ordem inversa à das chamadas aos construtores 42 1-422, 577-579 chamador 190-191, 194-195 chamando funções por referência 324- 325 char 70-71, 138-139, 199-200, 813- 814, 904-905 char * 355-356 char ** 832-833 chave 913-914, 942-943 chave à direita ) 67-69, 72-73 chave à direita (}) de término de um bloco 211-212 chave à direita o) de término de uma definição de classe 411-412 chave à esquerda ({) 67-68, 70-7 1 chave de pesquisa 288-291, 942-943 chave de registro 727-729, 757 chaves ({ )) 68-69, 80-81, 107-109, 118-1l9, 140-141 chaves duplicadas 942-943, 947-948 chaves em uma estrutura do/while 143- 144 chaves únicas 942-943, 946, 948-949 chefe 190-191 chegada de mensagem pela rede 697- 698 Chinês 480-481 ciclo de execução de uma instrução 383-384 científica 662-663 cm (stream de entrada padrão) 63 cm 7 1-72, 639-641, 645-646, 728-729, 732-733 cm. clear 665-666 cm . eof 647-649, 665-666 cm. get 138-140, 648-649 cm . getline 356-357 cm. tie 667-668 circuito integrado de silício 50-SI círculo cheio com ponta de seta anexa236 clareza 50-51,64-65.71-72,271 class 190, 232-233, 396-397, 400- 401. 680-681, 727-729 classe 51-52, 56-57, 82-84, 155-156, 262. 857 classe abstrata 609-6 12, 622, 624-625, 629-630 classe adaptadora priority_queue 954-955 classe adaptadora stack 95 1-952 classe Array 525-526 classe base 564-568, 595-599, 610-611, 620-621 classe base abstrata 609-612, 615, 619- 620, 622, 624-625 classe base catch 705 classe base direta 577-579, 588-589 classe base Employee 611-612 classe base indireta 577-579, 588-589 classe base ios 639-640, 665-666 classe base private 577-579 classe base protected 577-579 classe base public 577-5 78, 705 classe ComnsissionWorker 566-567 classe Complex 448-449, 556-55 7 classe composta 584-585 classe contêiner4l3-414, 465-466, 482- 483, 680-681, 689-690,919-920 classe Date 449-450, 460-461, 546- 547 classe de armazenamento 208-209, 210- 211,420-421,872-873 classe de armazenamento automática 209-210, 262, 276-277 classe de armazenamento estática 209- 211 classe de auto-referência 760-763 classe de exceção 716-7 17 classe derivada 564-566, 5 77-579, 595- 597,610-611,615,619-620 a ÍNDICE 1067 classe derivada catch 705 classe Employee 460-462, 465, 566- 567,611-612 classe gabarito 680, 683-684, 890 classe Hugelnt 559-560 classe Hugelnteger 449-450 classe IntegerSet 514 classe ios 656-657, 665-666 classeiostream 640-641, 665-666, 1026- 1027 classe istream639-641, 647-649, 665-666, 728-729, 735, 740-741, 744-746, 750-751, 907-908, 1026- 1027 classe ieradora 462-465 classe mais derivada 1029-1030 classe Node 760-761 classe ostream 639-640 classe PhoneNumber 562 classe pilha 680 classe pilha de float 680 classe pilha de int 680 classe pilha de string 680 classe Point 570-572, 585 classe Polynomial 562 classe proxy 408-409, 482-485 classe Quadrilateral 565-566, 609-611) classe queue 482-48 3 classe Rational 448-449 classe RationaiNumber 562 classe Rectangle 449-450, 565-566, 609-610 classe SavingsAccount 514 classe string 452, 462-465, 481-482, 535-536 classe string da biblioteca padrão 199-201, 462-465, 890 classe ThreeDimensionalShape 609-610 classe TicTacToe 450 classe Time 400-401,449-450 classe TwoDimensionalShape 609- 610 classes 83-84, 396 classes base virtual 1004, 1026- 1029 classes concretas 609-6 12 classes contêiner ordenadas 531-532 classes contêineres da biblioteca padrão 919-920 classes de coleções 482-483 classes de exceção definidas pelo usuário 7l6-7l7 classes de exceção derivadas de uma classe base comum 711-712 classes de exceção padrão 716-717 classes de processamento de arquivos 64 1-642 classes de síream 728-729 classes genéricas 684-685 classes matemáticas 516 classes “pré-empacotadas” 190-191 classes proprietárias 583-584 classificação com árvore binária 786- 787, 806 classificação de uma árvore 786-7 87 classificação por seleção com recursividade 220-22!, 317 cláusula case 141-142 clear 937 cliente 40 1-402, 408-409, 484-485 cliente de uma classe 424-425, 478-479 cliente de uma fila 481-482 <climits> 200-201 clog (erro padrão com buifer) 639- 64!, 728-729 dose 733-734 <cmath> 191-193, 198-199, 200-201 COBOL (COmmon Business Oriented Language) 58-59 Code Navigator para C++ 1054-1055 CodeWarrior para Macintosh e Windows 1054-1055 código cliente 610-611 código de caractere 360-361 código de função não-modificável 406- 407 código de operação 38!, 798-799 código de operação da SML 381 código em ling uagem de máquina 137, 774-775 código legado 5 1-52, 328, 862-863, 868-869, 877-878 código legado em C 452, 856-85 8, 862- 863, 868-869, 877-878 código não-otimizado 803-805 código objeto 61-63, 408-409 código objeto de uma classe 408-409 código otimizado 804-805 código personalizado 192-193 código portável 56-57 código reentrante 406-407 código seqüência 608-609 código-fonte 408-409, 583-584 código-fonte de uma classe 408-409 coeficiente 562 coerção “para cima” 1029-1030 coerção 340-341. 573 coerção de argumentos 198-199 coerção explícita, 567-568 coerção ilegal 1005-1006 coerção no “estilo antigo” 1005-1006 coerções não-padrão 1008-1009 coerções padrão 1008-1009 colaboração 363-364 colaborações 234-235, 298-299, 363- 367, 432-434 colchetes 236-237 colchetes ([]) 263-264 colchetes angulares (<e >) 232-233, 680-681, 856 colocando strings em ordem alfabética 360-36! colocar em evidência as características comuns 584-585 “colocar em evidência” atributos e comportamentos comuns 584-585 colocar em zero indicadores designados 665-666 coluna 292-293 comando 65-68 comando break 140-142, 144-146, 186, 188, 706, 878-879 comando break em uma estrutura for 144-145 comando composto 107-110, 118-119, 194-196 comando continue 144-145, 186, 188 comando continue em uma estrutura for 145-146 comando de atribuição 72-73, 126 comando de saída compilado condicionalmente 859-860 comando de Simple 796 comando end de Simple 796, 798-799 comando executável 7 1-72 comando goto 101-103, 153-154, 211- 212, 878-879 comando goto em Simple 796-799 comando if/goto em Simple 796- 797, 800-802 comando incondicional goto em Simple 796-797 comando input de Simple 796 comando let em Simple 796, 799-80!. 805-806 comando print de Simple 796, 798- 799 comando rem em Simple 796, 798-799 comando return 66-69, 190-l9l, 194-197, 214, 324-325, 804-805 comando return em um tratador catch 706 comando Se em pseudocódigo 104-105 comando separado em várias linhas 80- 81 comando throw 706-707 comando using 1009-1010 comando vazio 108-109 comandos de Simple 796 comandos entre chaves 194-196 combinação de teclas que indica fim de arquivo 73 3-734, 868 combinando estruturas de controle de duas maneiras 149-150 comentário 66-67, 7 1-72, 803 comentário de uma única linha 66-67 comitê técnico X3J II 56 como o sistema deve ser construído 159- 160 comp.lang.c 1051-1052 1068 INDICE comp.lang.c++ 1051-1053 comparação de arrays 480-481 comparação de ponteiros 340-341 comparação de strings 893-894 comparações 284-285 comparando blocos de memória 838- 839 Comparando inicialização de arrays static e automática 276-277 comparando strings 356-357 comparando strings 893-894 comparando uniões 880-88 1 compare 895-896 compartilhamento de tempo 54-55, 58- 59 compartilhar os recursos de um computador 54-55 compilação condicional 856, 858-859 compilação do comando if/goto 799-800 compilador 55-56. 6 1-62, 68-69, 118- 119,774-775, 805-806 compilador Borland Turbo C++ Visual Edition for Windows 1054-1055 compilador gera instrução SML 799- 800 compilador LCC-Win32 para Windows 95/NT 1054-1055 compilador otimizador 137, 2 10-211. 452-453 compilador(es) C++ 61,63, 1050-1051 compiladores para C++ 1050 compilando 56, 760. 87 3-874 compilando um programa com múltiplos arquivos-fonte 872-873 compilar 61, 63, 408-409 compJ, 1016-1017 complemento de um 814-815, 819 complemento do construtor 420-421 complemento sobre bits 1016-1017 complexidade 564 complexidade de software 564 complexidade exponencial 2 19-220 componente 190, 43 1-432. 565-566, 917-918 componente reutilizável padronizado 565-566 componentes 59-60, 83-84 componentes de software reutilizáveis 56-57 componentes reutilizáveis 60-61, 431- 432, 565-566 comportamento 82-84, 160, 396. 400- 401, 404-405, 412, 480-481 comportamento inesperado 705 comportamento não-polimórfico 610- 611 comportamento polimórfico com referências 620-621 comportamentos public 40 1-402 composição 162-163, 406-407, 485- 487, 564-565, 584-585, 777 composição em vez de herança 605-606 comprimento de um string 274-275, 355-356, 895-896 comprimento de um .uh.tring 545-546 comprimento máximo de um string 897, 899 compromisso espaço-tempo 744-746 computação 52-53 computação cliente/servidor 54-55 computação conversacional 71-72 computação distribuída 54-55 computação interativa 71-72 computação pessoal 54-55 computação por ‘força bruta” 185-186 computador52-53 computador Apple 54-5 5 computador cliente 54-55 computador DEC PDP-7 56 computador pessoal 52-53,61,63 Computador Pessoal IBM 54-5 5, 654- 655 computadores isolados 64-65 comutação de pacotes 63-64 comutativo 519-520 concatenação 72-73, 544-545 concatenação de strings 89 1-892 concatenar 893-894 concatenar dois objetos lista encadeada 790-791 concatenar strings 544-545 concatenar strings literais 900-901 conceitos básicos de computadores 51- 52 condição 77-78, 103-106, 144-146, 236-237 condição de continuação do laço 128- 133, 142-145 condição de continuação do laço falha 2 19-220 condição de guarda 236-23 8 condição de término 2 15-216, 272-273 condição dependente 148-149 condição excepcional 141-142 condição mais à esquerda 148-149 condição simples 146-149 condições complexas 146-147 conectado ao dispositivo de entrada padrão 640-641 conectado ao dispositivo de erro padrão 640-641 conectado ao dispositivo de saída padrão 640-641 conectando um stream de saída a um stream de entrada 667-668 conexão em rede 639 conflito de escopos 1010-1011 conhece um 585 conjunto 412-414, 423-424, 446-447 conjunto de caracteres 96-97. 142-143. 360-361, 727-729 conjunto de caracteres ASCII 97-98. 354-355, 639 const 223-224, 226-227, 279-282, 324-325. 522-523, 857, 1007-1008 const char * 329-330 const com parâmetros de função 329 const int * const 332-333 constiterator 906-907, 920-924, 927, 933-934, 945-949 constreference 922-923 constreverseiterator 907- 908, 92 1-923, 927, 933-934 constante 19 1-193, 798-799 constante com nome 267-268 constante de caractere 354-355 constante de enumeração 206-208. 859- 86(1 constante de ponto flutuante sem sufixo 875-876 constante simbólica 856-859, 86 1-862 constante simbólica NDEBUG 86 1-862 constante simbólica P1 857-858 Constante simbólica predefinida DATE 86 1-862 constante simbólica predefinida FILE 861-862 constante simbólica predefinida LINE 861-862 constante simbólica predefinida TINE 861-862 constantes simbólicas predefinidas 861- 862 construindo seu próprio compilador 760, 796 construindo um compilador 797-798 construtor 416-417, 422-423, 434-435 construtor chamado recursivamente 533-534 construtor da classe base 577-579 construtor de argumento único 534- 535, 543-544, 1018-1020, 1022- 1023 construtor de classe derivada 577-579 construtor de classe derivada chama o construtor da classe base 577-579 construtor de classe derivada chama o construtor default da classe implicitamente 577-579 construtor de conversão 534-535. 543- 545, 582-583, 1020-1021 construtor de cópia 530-534, 920-923 construtor de cópia da classe string 890-891 construtor de cópia para um objeto disparado 710-711 construtor de um único argumento 1017-1018 construtor de union 880-881 ÍNDICE 1069 construtor default 4 17,420, 462-465, 530-533, 549-550, 686-688, 920-921 construtor default de objeto membro 462-465 construtor em uma união 880-881 construtor explicit 1020-1021 construtor ofstream 731-732 construtores de argumento único e conversões implícitas 1018-1019 construtores de cópia na passagem de parâmetros em chamadas por valor 545 construtores de objetos globais 421-422 construtores e destruidores chamados automaticamente 420-421 construtores não podem ser virtuais 62 1-622 construtores sobrecarregados 416-417 consumo de memória 629-630 conta de poupança 134-135 contador 110-111, 115, 121-122, 179- 180, 209-2 10 contador de instruções 800-801 contador de laço 113-114, 126-127 contagem baseada em zero 130-131 Contando conceitos alfabéticos 138 contando de um em um para cima 113- 114 contêiner 200-201, 760, 906-907, 917- 920, 955 contêiner associativo 9 19-920, 922-923, 926-927. 942-943, 945-946 contêiner associativo multimap 946- 947 contêiner associativo set 946 contêiner de primeira classe 92 1-924, 926-927, 933-934, 937 contêiner seqüencial 9 19-920, 926-927, 929-930, 936, 939-940 contêiner seqüencial deque 940-941 contêiner subjacente 951-952 conteúdo dinâmico 57-58 Controlando a impressão de ieros após a vírgula e casa decimal com valores float 658-659 Controlando a precisão de valores em ponto flutuante 653-654 controle centralizado 63-64 controle de programa 100-101 converge para o caso base 219-220 conversão de classe derivada para classe base 705 conversão de objeto da classe derivada para objeto da classe base 582-583 conversão de ponteiros 573 conversão entre um tipo primitivo e uma classe 544-545 conversão explícita 118-119 conversão implícita 118-119, 543-544, 1017-1018, 1020-1023, 1026-1027 conversão implícita entre tipos primitivos definida pelo compilador 544-545 conversão implícita imprópria 10 18- 1019 conversão perigosa 573 conversões entre tipos primitivos 535- 536 conversões entre tipos primitivos por coerção 535-536 conversões implícitas 1018-1019 conversões implícitas através de construtores de conversão 1020-1021 conversões implícitas definidas pelo usuário 543-544 conversões padrão 1005-1006 conversor de infixa para pós-fixa 805- 806 converte entre tipos 534-535 converte entre tipos definidos pelo usuário e tipos primitivos 535-5 36 converte letras minúsculas 200-201 convertendo de um tipo de dados mais alto para um tipo de dados inferior 199-200 convertendo entre classes e tipos primitivos 413-414, 446-447 Convertendo strings para strings no estilo de C e arrays de caracteres 904-905 Convertendo um string para maiúsculas 329-330 cópia do argumento 329 cópia membro a membro 430-431, 532- 533 cópia membro a membro default 430- 431,532-533,543-544,922-923 cópia não-incrementada de um objeto 55 1-552 copia um string 343-344 copia um string usando notação de array 343-344 copia um string usando notação de ponteiro 343-344 copiando strings 343-344 Copiando um string usando notação de array e notação de ponteiro 343-344 copy 905-906, 928-929, 935-936 copy_backward 928-929, 97 1-973 Corcoran, Marian 1000-1001, 1055- 1056 corpo com múltiplos comandos 80-81 corpo de um laço 128-129, 132-133, 186, 188 corpo de uma definição de classe 400- 401 corpo de uma estrutura while 109-110 corpo de uma função 67-69, 194-196 corpo do else 105-106 corpo do while 109-110 correção 63 correio eletrônico 63-64 correto no sentido matemático 150-152 cos 192-193 co-seno 192-193 co-seno trigonométrico 192-193 courit 929-930, 942-943, 945-946, 965-966, 986-987 countif 929-930, 965-968 cout («) (o stream de saída padrão) 63, 67-68, 70-72,639-641, 643-644,728- 729 cout put 645-646 cout. setf 662-663 cout write 650-651 CPU 53-54, 6 1-63 craps 206-209 cria dinamicamente a quantidade exata de espaço 462-465 criação dinâmica de objetos 44 1-442 Criando e destruindo objetos dinamicamente 302-304 Criando e percorrendo uma árvore binária 781-782 Criando e testando manipuladores de stream não-parametrizados definidos pelo usuário 655-656 Criando e usando uma função definida pelo programador 193-194 criando novos tipos de dados 479-480 Criando um arquivo de acesso aleatório seqüencial mente 741-743 Criando um arquivo seqüencial 729-730 criando uma associação 949-950 Criando uma estrutura, inicializando seus membros e imprimindo a estrutura 398-399 criar novos objetos dinamicamente 435- 436 criar novos tipos 480-481 criar seus próprios tipos de dados 72-73 criar um arquivo de acesso aleatório 740-74 1 criptografia 182-183, 913-9 15 criptografla com chave simétrica 913-914 criptógrafo 913-914 criptograma 914-915 crítico para a missão 699-700 Crivo de Eratóstenes 317, 987-988, 1000 <csetjmp> 699-700 <csignal> 875-876 <cstddef> 357-358 <cstdio> 200-201 <cstdlib> 199-201, 829-830, 201- 202 <cstring> 200-201, 545 <ctime> 200-201, 205-206 ctor 543-544 <ctype h> 200-201 <ctrl>-c 875-876 <ctrl>-d 139-140,647-649.654-655, 732-733 1070 ÍNDICE <ctrl>-z 139-140, 647-649, 654-655, 732-733 cursor 68-69 cursor da tela 68-69 cursos de C++ on-line valendo créditos 1050-1051 dado de seis faces20 1-202 dados 52-53 dados “brutos” 739-740 dados de saída 63 dados em uma classe abstract 622, 624-625 dados não-inicializados 399-400 dados public 402-403 data 905-906 Date com operadores de incremento sobrecarregados 547-548 DECPDP-I1 56 decimal por default 66 1-662 decisão 50-51, 104-106, 155-156 decisão lógica 52-53 declaração antecipada 438-440, 494- 495 declaração antecipada de classe 484- 485 declaração de parâmetro 194-195 declaração externa 809-810 dcc laração(ões) 70-71 declarações dos parâmetros 194-195 declarando uma função membro const static 478 declarar um tipo de retorno para um construtor 417,420 declarar uma função membro const 457-459 declarar uma referência 440 decoração do nome 230-231 decrementar 126-127 decrementar um ponteiro 338-339 decriptador 913-9 14 #define 411-412, 858-859, 861-862 #define NDEBUG 478-479, 86 1-862 #define P1 3.14159 857 defined 859-860 defined 859-860 definição 127-128 definição de classe 401-402 definição de estrutura 396-397, 808- 809. 82 1-822 definição de função 193-196,211-212 definição de função como um protótipo de função 194-195. 197-198 definição de função mime 408-409 definição de gabarito 232-234, 68 1-682 definição de gabarito de classe 684-685 definição de getchar como macro 858-859 definição de macro 860-861 definição simples da class Time 40 1-402 deitel@deitel . com 52-53 deleção 482-483 deletando memória alocada dinamicamente 47 8-479 deletando um item de uma árvore binária 787-78 8 deletar um registro de um arquivo 746- 747 delete 471,473-475, 485, 533-534, 714-7 17, 762-763, 877-878 delete [] (desalocação dinâmica de array) 474-475 delete operator 62 1-622 delimitador (com valor default ‘\n’) 648-649 delimitador default 650-651 Demonstração de desempilhamento da pilha 709-7 10 Demonstrando a classe adaptadora priorityqueue da Biblioteca Padrão 955 Demonstrando a classe adaptadora stack da Biblioteca Padrão 951- 952 Demonstrando a classe bitset e o Crivo de Eratóstenes 987-988 Demonstrando a classe Circie 587 Demonstrando a classe Cylinder 589-590 Demonstrando a classe Point 55 Demonstrando a função membro flags 663-664 Demonstrando a função membro width 654-65 5 Demonstrando a função substr 896- 897 Demonstrando a ordem em que construtores e destruidores são chamados 42 1-422 Demonstrando alguns algoritmos matemáticos da Biblioteca Padrão 965-966 Demonstrando as funções de manipulação de elementos do gabarito de classe vector da Biblioteca Padrão 934-935 Demonstrando as funções equal, mismatch e iexicographicai_compare da Biblioteca Padrão 957-958 Demonstrando as funções erase e replace 90 1-902 Demonstrando as funções fiji, filin. generate e generate_n da Biblioteca Padrão 955-956 Demonstrando as funções f ind de string 898-899 Demonstrando as funções insert de string 903-904 Demonstrando as funções remove. removeif. remove copy e remove_copy_if da Biblioteca Padrão 960-961 Demonstrando as funções replace. replace_if, replace_copy e repiacecopyif da Biblioteca Padrão 963 Demonstrando as operações sobre conjuntos (set) da Biblioteca Padrão 977 Demonstrando as palavras-chave operadores l0l7-1018 Demonstrando atribuição e concatenação de string 891-892 Demonstrando autoytr 714-7 15 Demonstrando copy_backward. merge. unique e reverse 972- 973 Demonstrando dynamic cast 10 14- 1015 Demonstrando gabarito de classe set da Biblioteca Padrão 946 Demonstrando herança de interface com a hierarquia de classes Shape 104-105, 624-627 Demonstrando herança múltipla 592 Demonstrando mnplace_merge. unique_copy e reversecopy 974-975 Demonstrando iteradores de siream de entrada e saída 923-924 Demonstrando leitura a partir de um objeto istringstream 909-9 10 Demonstrando lowerbound. upper_bound e equal_range 979-981 Demonstrando new disparando badalloc em caso de erro 713 Demonstrando new retornando O em caso de erro 712 Demonstrando o gabarito de classe deque da Biblioteca Padrão 941- 942 Demonstrando o gabarito de classe iist da Biblioteca Padrão 937-938 Demonstrando o gabarito de classe map da Biblioteca Padrão 949-950 Demonstrando o gabarito de classe multimap da Biblioteca Padrão 947-948 Demonstrando o gabarito de classe multiset da Biblioteca Padrão 943-944 Demonstrando o gabarito de classe Stack 684-686 Demonstrando o gabarito de classe vector da Biblioteca Padrão 931- 932 D 1•I ÍNDICE 1071 Demonstrando o operador constcast 1 (X)7- 1008 Demonstrando o operador reinterpretcast 1008-1009 Demonstrando o operador staticcast 1006-1007 Demonstrando o qualificador de tipo const 28 1-282 Demonstrando o tipo de dados primitivo bool 1004 Demonstrando o uso de naxnespaces 1010-1011 Demonstrando os algoritmos miri e max 984-985 Demonstrando os gabaritos de classe adaptadora queue da Biblioteca Padrão 953-954 Demonstrando os operadores . * e 1025 Demonstrando polimorfismo com a hierarquia de classes Employee 612-613 Demonstrando setnewhandler 7 13-714 Demonstrando swap. iter swap e swap_ranges 971 Demonstrando typeid 1013-1014 Demonstrando um array de ponteiros para funções 353-354 Demonstrando um construtor explicit 1020-1021 Demonstrando um membro de dados mutable 1024-1025 Demonstrando um objeto função binária 990-991 dependente de máquina 55-56, 322-324, 338-339, 479-480 depuração 203-204, 478-479, 699-700 depurador 857 depurar 5 8-59, 64-65 deque 919-920, 926-927, 929-931, 936, 937, 939-940, 950-953 <deque> 200-201, 921-922, 941-942 dequeue 778 derreferenciando um ponteiro O 322- 324 derreferenciando um ponteiro 322-326, 329 derreferenciando um ponteiro void * 340-341 derivar uma classe de outra 405-406 derreferenciar um iterador 923-925, 927 derreferenciar um iterador const 925- 926 derreferenciar um iterador posicionado fora de seu contêiner 925-926 derreferenciar um não-ponteiro 322-324 desaloca memória alocada com new 76 1-762 desalocar memória 714-715 desconectando um stream de entrada de um stream de saída 667-668 desempenho 56-57 desempenho de classificação e pesquisa em árvore binária 806 desempenho de pesquisa 806 desempenho na pesquisa em listas 806 desempilhamento da pilha 698-700, 708-711 desempilhando a pilha de chamadas de função 709-7 10 desenhando uma forma 608-609 desenvolvimento de aplicativos rápido (RAD) 43 1-432 desenvolvimento de classe 524-525 desenvolvimento de software orientado a componentes 481-482 desigualdade 1016-1017 desligar 697-698 deslocamento 630-632, 739-740 deslocamento à direita (») 8 14-815 deslocamento a partir do início de um arquivo 735-736 deslocamento em bytes 739-740 deslocamento para um ponteiro 341-342 deslocar um intervalo de números 201- 202 destruído automaticamente 213-214 destruidor 404-405, 420-423, 434-435, 920-921 destruidor da classe base 62 1-622 destruidor de classe base virtual 62 1-622 destruidor de classe derivada 621-622 destruidor de classe derivada chamado antes do destruidor de sua classe base 577-579 destruidor do objeto disparado 711-712 destruidor não recebe parâmetros nem retorna valor 420-421 destruidor virtual 62 1-622 destruidores não podem receber argumentos 404-405 destruidores não podem ser sobrecarregados 404-405 destruindo objetos dinamicamente 302- 304 destruir objetos 485 desviar se negativo 799-800 desvio incondicional 878-879 desvio incondicional goto 878-879 detalhes secretos” da implementação 1023-1024 detalhes de implementação, ocultos 396-397 detectar um erro 697-698 diagnósticos que ajudam na depuração de programa 200-201 diagrama de atividades 237-238, 298- 299, 366-367 diagrama de casos de uso 159-160 diagrama de classes 16 1-162, 234-235, 298-299, 366, 432-435, 437 diagrama de classes da UML 432-434 diagrama de colaborações 365 diagrama de mapa de estados 236-23 8, 298-299, 366-367 diagrama de objetos 301-302 diagrama de seqüência 301-304, 365- 367, 432-434, 440 diagramas de estado 236 diagramas de objetos 164 diálogo 7 1-72 diâmetro103-105 Dicas de desempenho 60-61 Dicas de portabilidade 60-61, 65-66 Dicas de teste e depuração 60-61 dicionário 757-758 dicionário computadorizado 757 differencetype 922-923 dígito 70-71, 354-355 direção de busca 735-736 diretiva #error do pré-processador 860-861 diretiva do pré-processador #define 680-681, 857 diretiva do pré-processador #endif 859-860,41 1-412 diretiva do pré-processador #ifdef 859-860 diretiva do pré-processador # fndef 859-860,411-412 diretiva do pré-processador #include 197-201, 408-409, 856 diretiva do pré-processador #line 860-861 diretiva do pré-processador #undef 858-859, 86 1-862 diretivas condicionais do pré- processador 85 8-859 diretivas do pré-processador 61,63,67- 68, 70-71, 411-412 diretório do sistema de arquivos 760 disco 52-54, 61, 63, 797-798 disco magnético 727 disco óptico 727 disparando novamente uma exceção 707-708 disparando uma exceção 703-704 disparar exceções derivadas de exceções padrão 7 16-717 disparar exceções não-derivadas de exceções padrão 7 16-717 disparar exceções padrão 716-717 disparar novamente uma exceção 706- 707 disparar objetos const 706 disparar um int 703-704 dispositivo de entrada 52-53 1072 ÍNDICE dispositivo de memória secundária 61, 63, 727 dispositivo de saída 5 3-54 distribuidor 378-379 DivideByZeroException 702-703 divides 989-990 dividir para conquistar 190, 192-193 divisão 53-54, 74-76, 120-121 divisão de inteiros 74-75, 118-119 divisão de ponto flutuante 118-119 divisão por zero 63, 115, 697-698, 700- 701, 875-876 divisão por zero é indefinida 480-481 documentação de classes derivadas 584- 585 documentar um programa 66-67 documento de especificações da UML 1.3 84-85 dois maiores valores 179-180 dois níveis de refinamento 116 dois-pontos (:) 211-212, 460-461, 575- 579, 594-595, 878-879 dois-pontos 299-300 dois-pontos (:) no cabeçalho de uma definição de classe 57 1-573 DOS 868, 875-876 double 135-136, 191-193, 198-199, 875-876 downcast 1007-1008, 1014-1016 download gratuito 1054-1055 downloads gratuitos de edição de demonstração 1(154-1055 Duas maneiras de declarar e usar funções que não recebem argumentos 22 1-222 dump 383-385 dynamic_cast 568-569, 7 16-717, 1013-10 16 E E maiúsculo 657-65 8 EIS de alto nível 639 EIS de arquivos 640-641 EIS na memória 907-908 EIS não-formatada 639-640, 650-651 EBCDIC (Extended Binarv Coded Decimal Interchange Code) 360-361 economizando memória 209-2 10 editando um arquivo 61,63 editar 61,63 editor 6 1-62 editor de ligação 6 1-62, 872-873 editor de texto 354-355, 733-734 editor emacs 61,63 efeitos colaterais 210-211, 219, 223- 224, 680-681 elemento de ordem zero 262-263 elemento de sorte 199-201 elemento de um array 262 elemento fora do intervalo 53 1-532 elemento particionador 985 elevando um inteiro a uma potência inteira recursivamente 220-221 elevar a uma potencia 173-174, 192-193 Elevar uma variável ao cubo usando chamada por referência com um argumento ponteiro 325-326 Elevar uma variável ao cubo usando chamada por valor 325-326 #elif 859-860 eliminação de duplicatas 760, 7 86-787, 793-794 eliminação do comando goto 153-154 eliminação do goto 101-103 elipse 96-97, 101-103 else 105-106 e-mail 63-64 embaralhar 345-346 embaralhar cartas 850-85 1 empacotando código como uma função 192- 193 empilhamento de estruturas de controle 102-104, 150-152 empilhando 102-106, 155-156 empty 920-921, 95 3-955 encadeamento 72-73, 643-646 encadeamento de atribuições 544-545 encadeamento de put 645-646 Encadeando chamadas a funções membro 470-473 encadeando operadores += 544-545 encadeando operadores de inserção em stream 643-644 encapsula 82-83 encapsulamento 405-406, 428-429, 445, 462-465, 573 end 920-921, 923-928, 933-934, 985- 986 endereço de memória 320-321, 644-645 endereço de um campo de bits 824-825 endereço (&) de uma estrutura 808-809 endi 72-73, 119-120,642-643 endLine 655-656 enflleirar 48 1-482 enqueue 778 entrada com streams 640-641, 645-646 entrada e saída de strings 805-806 entrada padrão 7 1-72, 868 entrada via teclado 117-118 entrada/saída (EIS) 190-191, 639 entrada/saída com stream,s 67-68 entrada/saída de array 480-481 entrada/saída de objetos 750-751 entrada/saída formatadas 639-640, 738- 739 enum 206-208 enumeração 206-208. 857 enumeração na classe ios 656-657 Enviando dados de saída para strings na memória 907-908 enviando para a saída tens de dados de tipos primitivos 64 1-642 Enviando para a saída o valor de uma expressão 643-644 enviando para a saída um valor em ponto flutuante 657-658 Enviando um string para a saída usando duas inserções em stream 642-643 Enviando um string para a saída usando inserção em stream 64 1-642 enviar mensagens usando uma referência 437 EOF 138-139, 647-651. 825 equação da linha reta 76-77 equal 929-930, 957-960 equal_range 945-946, 978-984 equalto 989-990 equivalente decimal de um caractere ASCII 805-806 equivalente em palavras do valor de um cheque 392-393 erase 90 1-902, 92 1-922. 937 erro de compilação 68-69 erro de estouro 479-480 erro de estouro aritmético 716-717 erro de formato 665-666 erro de lógica 77-78. 112-113 erro de lógica fatal 115 erro de sintaxe 68-69 erro de subscrito fora do intervalo válido 703-704 erro de underflow aritmético 716-717 erro detectado em um construtor 710- 711 erro do editor de ligação 1009-1010 erro durante a compilação 68-69 erro durante a execução 63 erro fatal 63, 115, 385-386 erro fatal durante a execução 322-324, 573-574 erro não-fatal 63, 197-198,699-700 erro por um 113-114, 130-131, 263- 264 erro síncrono 697-698 erros 61,63 Erros comuns de programação 60-61 erros de ligação 230-231 erros relacionados a catch 711-712 escala 269-270 escalar 278-279. 334-335 escalonável 269-270 escopo 131-132,210-211,404-405, 582-583, 697-698, 872-873, 1009- 1010 escopo aninhado 703-704 escopo de arquivo 211-212, 406-407, 474-475. 69 1-692. 882-883 escopo de bloco 211-212 escopo de classe 211-212,404-407 escopo de função 211-212,406-407 escopo de gabarito de classe 686-688 ÍNDICE 1073 escopo de protótipo de função 211-212 escopo de um switch 706 escopo de uma constante simbólica ou macro 858-859 escopo de uma função 873-874 escopo de urna variável 208-209 escopo global 421-422, 1012-1013 escrevendo dados aleatoriamente em um arquivo de acesso aleatório 742-743 esgotar a memória 216-217. 573-574 espaçamento interno 660-661 espaçamento vertical 103-104. 129-130 espaço ( ‘‘ ) 70-71 espaço de objetos 1000-1001, 1056 espaço em branco 645-649, 651-652, 860-861 espaço em disco 711-714.732-733 espaço vazio 740-741 espaços 36 1-362 espaços para preenchimento 660-661 especificação de exceção 708-709 especificação de exceção vazia 708-709 especificações da UML 1.3 162-163 especificações de ligação 883-884 especificador de acesso a membro 401- 402, 465-466 especificador de acesso a membro public 401-402 especificadores de classe de armazenamento 208-209 especificadores de ligação static 1012-1013 especificidades 610-611 espiral 216-2 17 estação de trabalho 54-55 estado consistente 404.417,420,424- 425 estado de erro de um ,stream 665-666 estado de formato 663-664 estado de ftrmato anterior 663-664 estado inicial 236 estados 236. 298-299 estados de erro 645-646, 666-667 estendem a linguagem de programação base 480-481 estouro 875-876 estouro aritmético 697-698 estratégia de tratamento de exceções 706 estrutura 262, 320, 33 1-332, 396-397, 808, 857 estrutura de auto-referência 397-398, 808-809 estrutura de controle 100-106. 416-417, 878-879 estrutura de controle aninhado 152-153, 878-879 estrutura de controle de entrada única e saída única 102-104 estrutura de dados encadeada 397-398 estrutura de dados linear 762-763, 780- 781 estrutura de dados não-linear, bidimensional 780-781 estrutura de dados subjacente 954-955 estrutura de dados último a entrar, primeiro a sair (LIFO) 479-480, 774-775, 9 19-920, 950-95 1 estrutura de entrada única e saída única 104-105. 150-152 estrutura de repetição 101-103, 109- 110,115,796-797 estrutura de repetição do/while 102- 104, 142-144, 152-153 estrutura de repetição for 129-130 estrutura de seleção 101-104 estrutura de seleção dupla 102-104, 121-122, 137 estrutura de seleção múltipla 102-104, 137 estrutura de seleção simples 137 estrutura de seleção simples if 102- 105, 107-108 estrutura for 130-131, 134-135, 152- 155 estrutura for aninhada 295 estrutura for externa 295 estrutura funcional de um programa 68-69 estrutura hierárquica 566-567 estrutura hierárquica semelhante a urna árvore 566-567 estrutura if 77-78, 80-81, 102-105. 107-108, 137, 146-147, 154-156 estrutura if/else 102-109, 121-122, 137, 146-147 estrutura if/else aninhada 106-108 estrutura se/senão em pseudocódigo 105- 106 estrutura seqüencial 101-103 estrutura switch 102-104, 137, 140- 143, 154-155, 564-565, 608, 706, 750-751 estrutura switch com break 140-141 estrutura while 102-104, 109-111. 115, 118-119, 121-122, 128-129, 142-143, 152-156 estruturas de dados 262, 760, 917-918 estruturas de dados dinâmicas 262, 320, 760 estruturas de dados pré-empacotadas 760 estruturas normalmente são passadas através de chamada por valor 399- 400 estruturas profundamente aninhadas 153-154 Estudo de caso: uma classe Date 547- 548 Estudo de caso: uma classe String 535-536 esvaziando um stream 651-652 esvaziar o buifer de saída 72-73, 642- 643 esvaziar um buffer 667-668 esvaziar um stream 874 etapa de particionarnento 387-388 etapa de recursão 214, 218-219. 387- 388 etiqueta de estrutura 396-397 “é um” 565-566, 570-572, 577-579. 584-585, 592, 594-595 “é um” é herança 564-5 65 evento 236 evento inesperado 875-876 evitar perda de memória 7 16-717 evitar que arquivos de cabeçalho sejam incluídos mais de uma vez 411-412 evitar que o objeto de uma classe seja atribuido a outro 534 evitar que objetos de classe sejam copiados 534 evitar repetir código 192-193, 419-420 Evitar um problema de precedência entre o operador de inserção em síream e o operador condicional 646- 647 evitar uma chamada de função 222-223 examinar dados 404 examinar qualquer tentativa de modificar dados 424-425 exceção bad alloc 711-7 14, 716- 717, 761-762, 936 exceção de classe base 7 16-717 exceção de divisão por zero 700-701 exceção de ponto flutuante 875-876 exceção inesperada 698-699 exceção invalid argument 936 exceção length error 936 exceção não-capturada 698-699 exceção não-listada em especificação de exceção 708-709 exceção out_of_bounds 936 exceção out of_range 716-717. 892-893, 936, 986-987 exceções ocorrendo em um tratador de exceções 706 exception 716-717 execução condicional de atividades 302- 304 execução condicional de diretivas do pré-processador 856 execução seqüencial 101-103 executar 61-63 executar um programa 61, 63 Exemplo de uso de arrays bidimensionais 295-296 Exemplos repetição controlada por contador 127- 128 Repetição controlada por contador com a estrutura for 129-130 ÍNDICE 1075 Demonstrando o gabarito de classe Stack 684-686 Demonstrando o gabarito de classe vector da Biblioteca Padrão 93 1-932 Demonstrando o operador constcast 1007-1008 Demonstrando o operador reinterpretcast 1008- 1009 Demonstrando o operador staticcast 1006-1007 Demonstrando o qualificador de tipo const 28 1-282 Demonstrando o tipo de dado primitivo bool 1004 Demonstrando o uso de namespaces 1010-1011 Demonstrando os algoritmos mm e max 984-985 Demonstrando os gabaritos de classes adaptadoras queue da Biblioteca Padrão 953-954 Demonstrando os operadores * e ->* 1025 Demonstrando polimorfismo com a hierarquia de classes Empioyee 6 12-613 Demonstrando setnewhand].er 713-714 Demonstrando wap, iter_swap e swap_ranges 97 1 Demonstrando typeid 10 13- 1014 Demonstrando um array de ponteiros para funções 353-354 Demonstrando um explicit constructor 1020-1021 Demonstrando um membro de dados mutabie 1024-1025 Demonstrando um objeto função binária 990-991 Deturpação de nomes para possibilitar a ligação segura quanto ao tipo 23 1-232 Disparando novamente uma exceção 707-708 Duas maneiras de declarar e usar funções que não recebem argumentos 221-222 Elevar uma variável ao cubo usando chamada por referência com um ponteiro como argumento 325-326 Elevar uma variável ao cubo usando chamada por valor 325- 326 Encadeando chamadas de funções membro 470-47 1 Enviando o valor de uma expressão para a saída 643-644 Enviando um string para a saída usando duas inserções em stream 642-643 Enviando um string para a saída usando inserção em stream 641- 642 Evitando um problema de precedência entre o operador de inserção em stream e o operador condicional 646-647 Exemplo de uso de arrays bidimensionais 295-296 Exibindo valores em ponto flutuante nos formatos default do sistema, científico e fixo 662-663 Friends podem acessar membros priva te da classe 465-466 Função maximum definida pelo programador 196-197 Funções não-friendJnãomembro não podem acessar membros private 467-468 Gerando números de Fibonacci recursivamente 217-218 Gerando valores para serem colocados nos elementos de um array 265-267 Implementação do tipo de dados abstrato Time como uma classe 402-403 Implementando uma classe proxy 482-483 Imprimindo as características de um string 897-899 Imprimindo em múltiplas linhas com um único comando, usando cout 69-70 Imprimindo em uma mesma linha com comandos separados usando cout 69-70 Imprimindo o valor de uma union nos tipos de dados dos dois membros 88 1-882 Imprimindo um inteiro com espaçamento interno e forçando o sinal mais 660-661 Imprimindo um inteiro sem sinal em binário 815-816 Imprimindo um string, um caractere de cada vez, usando um ponteiro não-constante para dados constantes 330-331 Inicializando arrays multidimensionais 294 Inicializando e usando uma variável constante corretamente 267-268 Inicializando os elementos de um array com uma declaração 265- 267 Inicializando os elementos de um array com zeros 264-265 Inteiros deslocados e ajustados a uma escala produzidos por 1 + rand() % 6 201-202 Lançando um dado de seis faces 6000 vezes 202-203 Leitura de caracteres com a função membro getline 650 Lendo e imprimindo um arquivo seqüencial 734-735 Lendo um arquivo de acesso aleatório seqüencialmente 744- 746 Manipulando uma lista encadeada 763-764 O operador sizeof quando aplicado a um nome de array retorna o número de bytes no array 336-337 Operador de extração de stream retornando falso quando encontra fim de arquivo 647- 648 Operadores de inserção em stream e extração de stream definidos pelo usuário 520-52 1 Ordem na qual construtores e destruidores de classe base e classe derivada são chamados 579-580 Ordenando um array com buhble sort 283-284 Os operadores ponteiros & e * 322-324 Passando arrays e elementos individuais de arrays para funções 279-28 1 Pesquisa binária em um array ordenado 290-291 Pesquisa linear em um array 288- 289 Pré-incrementando e pós- incrementando 126 Processando uma fila 778 Programa de análise de dados de uma pesquisa 285 Programa de classificação de uso geral usando ponteiros para funções 350-35 1 Programa de consulta de crédito 735-736 Programa de contas bancárias 747- 748 Programa de embaralhamento e distribuição de cartas 348 Programa de impressão de texto 66-67 Programa de lançamento de dados usando arrays em vez de switch 273-274 1076 ÍNDICE Programa de média da turma com repetição controlada por contador 111-112 Programa de média da turma com repetição controlada por sentinela 116-118 Programa para simular o jogo de craps 206-208 Retornando uma referência para um membro de dados priva te 429-430 Separando a interface da implementação da classe Time 409-410 Simulação de embaralhamento e distribuição de cartas de alto desempenho 811-812 Sobrescrevendo membros de uma classe base em uma classe derivada 573-574Somatório com for 134-135 Tentando chamar polimorficamente uma função herdada por herança múltipla 1026- 1027 Tentando modificar dados através de um ponteiro não-constante para dados constantes 330-33 1 Tentando modificar um ponteiro constante para dados constantes 333-334 Tentando modificar um ponteiro constante para dados nãoconstantes 332-333 Tentando utilizar uma referência não-inicializada 227-228 Tentativa errada de acessar membros private de uma classe 412 Tentativa errada de inicializar uma constante de um tipo de dado primitivo através de atribuição 457-459 Tornando aleatório o programa de lançamento de dado 204-205 Tratando arrays de caracteres como strings 275-276 Um exemplo de chamada por referência 225-226 Um exemplo de escopos 212-213 Um exemplo simples de tratamento de exceção com divisão por zero 700-701 Um objeto const precisa ser inicializado 268-269 Um programa de adição 70-71 Um programa de análise de pesquisa entre alunos 270-271 Um programa que imprime histogramas 272-273 Um programa simples com pilha 775-776 Um programa simples com pilha usando composição 777 Uma classe Array com sobrecarga de operadores 525- 526 Uma classe de inteiros enormes 559-560 Uma classe de números complexos 556-557 Uma classe String com sobrecarga de operadores 536- 537 Usando a estrutura do/while 143-144 Usando a função membro f iii e o manipulador setfill 660- 661 Usando a função swap para permutar strings 896-897 Usando argumentos de linha de comando 87 1-872 Usando argumentos default 228- 229 Usando as funções exit e atexit 874 Usando as funções membro get. put e eof 647-649 Usando atof 830-83 1 Usando atoi 830-831 Usando atol 83 1-832 Usando campos de bits para armazenar um baralho de cartas 822-823 Usando classes base virtual 1028-1029 Usando funções da Biblioteca Padrão para fazer um heapsort 98 1-982, 984 Usando funções gabarito 682-683 Usando funções set e get 425-426 Usando goto 879-8 80 Usando inicializadores de objetos membro 461-462 Usando isdigit, isalpha. isalnume isxdigit 826 Usando islower. isupper. tolower e toupper 826-827 Usando isspace. iscntrl, ispunct, isprint e isgraph 828-829 Usando listas de argumentos de tamanhos variáveis 869-870 Usando membro de dados static para manter uma contagem do número de objetos de uma classe 475-476 Usando memchr 84 1-842 Usando memcmp 841-842 Usando memcpy 839-840 Usando memmove 840-841 Usando memset 842-843 Usando o comando break em uma estrutura for 145-146 Usando o comando continue em uma estrutura for 145-146 Usando o indicador ias: showbase 661-662 Usando o indicador ios: :uppercase 663-664 Usando o manipulador de stream endl 642-643 Usando o operador sizeof para determinar tamanhos de tipos de dados padrão 338 Usando o operador unário de resolução de escopo 229-230 Usando o ponteiro this 468-469 Usando os manipuladores de stream hex, oct, dec e setbase 652-653 Usando os operadores de deslocamento sobre bits 819- 820 Usando os operadores de igualdade e relacionais 79-80 Usando os operadores sobre bits AND, OR inclusivo, OR exclusivo e complemento 817- 818 Usando quatro métodos de referenciar elementos de array 342-343 Usando strcat e strncat 358-359 Usando strchr 834-835 Usando strcmp e strncmp 359-360 Usando strcpy e strncpy 358 Usando strcspn 835-836 Usando strerror 843-844 Usando strlen 362-363 Usando strpbrk 836-837 Usando strrchr 836-837 Usando strspn 837-838 Usando strstr 838-839 Usando strtod 832-833 Usando strtok 36 1-362 Usando strtol 833-834 Usando strtoul 834-835 Usando tratamento de sinais 876- 877 Usando um Construtor com argumentos default 418 Usando um função mime para calcular o volume de um cubo 223-224 Usando um gabarito de função 233-234 Usando um inicializador de membro para inicializar uma constante de um tipo de dados primitivo 457-45 8 ÍNDICE 1077 Usando um iterador para enviar um string para a saída 906- 907 Usando um objeto ostringstreaxn alocado dinamicamente 908-909 Usando uma classe Time com objetos const e funções membro const 453-454, 456- 457 Usando uma função utilitária 414- 415 Usando uma referência inicializada 226-227 Usando uma union anônima 882- 883 Exemplos Justificação à esquerda e justificação à direita 659-660 exemplos com a estrutura for 132-133 exemplos de herança 565-566 exemplos do ObjectSpace STL Tool Kit 1000. 1055-1056 exemplos e exercícios de recursividade no texto 220-221 exercício definitivo sobre sobrecarga de operadores 555-556 exercícios com ponteiros 385-386 <exception> 199-201, 706-709, 7 16-7 17 Exibindo valores em ponto flutuante nos formatos default do sistema científico e fixo 662-663 exit42l-422, 699-700, 7 13-714, 732- 733, 874 EXITFAILURE 874 EXITSUCCESS 874 exp 192-193 expandir uma macro 857-858 expansão de macro 858-859 expiicit 1020-1023 “explosão” exponencial de chamadas 2 19-220 expoente 562 exponenciação 77-78, 135-136 expressão 104-105. 191-193 expressão algébrica 75-76 expressão aritmética infixa 79 1-792 expressão com ponteiros 338-339, 341- 342 expressão condicional 105-107, 646- 647, 703-704 expressão controladora 140-141 expressão de coerção 859-860 expressão pós-fixa 792-793, 803-805 expressões intensivas em operadores 535-536 Extended Binary Coded Decimal Interchange Cade (EBCDIC) 360- 361 extensão de sinal 142-143, 814-815 extensibilidade 608,610-611,697,928- 929 extensibilidade da STL 920-921 extensibilidade de C++ 522-523 extensões de nomes de arquivos 61, 63 extern “C” 883-884 extern 208-211, 872-873 extração de stream 79-80 extrair características comuns 595-597 F fabs 192-193 “faça seu ponto” 206-208 faiibit 645-646,650-651,732-733 fala 639 “falando de objetos” 8 1-82, 93-94, 396 falando para um computador 53-54 falha de new 697-698, 711-712 falhas não-recuperáveis 665-666 faise77-78, 102-106, 109-110, 219- 220, 1004 FAQ sobre bibliotecas de C++ 105 1- 1052 FAQs 1051-1053 FAQs sobre a STL 1000-1001, 1055- 1056 fase de análise 366 fase de análise orientada a objetos 159- 160 fase de compilação 68-69 fase de edição 63 fase de inicialização 114-115 fase de processamento 114-115 fase de término 114-115 fases 114-115 fator de escala 20 1-202, 205-206 faturação prima 1000 fatorial 182-183, 214-217 fatorial de um inteiro não-negativo 182- 183 “faxina” de término 420-42 1 “fazer AND com” 816-817 “fim de entrada de dados” 114-115 “formato universal” 398-399 fazendo coerção 340-341 Fazendo coerção de ponteiros para classe base para ponteiros para classe derivada 568-569 fazendo coerção para baixo de um ponteiro 567-568 fazendo referência a um objeto de classe base com um ponteiro de classe base 582-583 fazendo referência a um objeto de classe base com um ponteiro de classe derivada 582-5 83 fazendo referência a um objeto de classe derivada com um ponteiro de classe base 582-583 fazendo referência a um objeto de classe derivada com um ponteiro de classe derivada 582-583 fazendo spool 778 fazendo upcasting de um ponteiro 568- 569 fechar um stream 874 ferramenta de depuração 478-479, 861- 862 ferramenta de desenvolvimento de programas 104-105, 124-125 ferramentas para C++ 1050 FIFO 481-482, 778, 919-920, 940-941, 952-953 fila 481-482, 760-763, 773-774, 778 fila com duas extremidades 940-94! fila com prioridades 917-918 fila cresce infinitamente 793-794 fila de caixa em um supermercado 778, 793-794 fila de espera 48 1-482 fila em uma rede de computadores 778 filho 780-78 1 filho da direita 780-781 filho da esquerda 780-78 1 fiji 928-929, 955-956 filln 928-929, 955-95 6 fim de arquivo 139-141, 356-357, 647- 648, 665-666, 733-734 fim de linha 72-73 fim de main 68-69 fim de um stream 735-736 fim de um string 760-761 fim de uma fila 760, 778 fim de uma lista 805-806 fim de uma seqüência 968, 970 finalidade do programa 66-67 find900-90l, 902-903, 927-930, 942- 943, 945-946, 968, 970 findeach 929-930 findend 929-930 findfirstnotof 900-901findfirstof 900-901, 929-930 firidif 929-930, 968-970 findiastnotof 900-90! firidlastof 900-901 fins 201-202 first 945-947 fiag 656-657 fioat 70-71, 118-119, 199-200,875- 876 <fioat h> 200-201 floatfieid 662-663, 665-666 floor 192-193 flush 642-643 fluxo de controle 81-82, 109-110,698- 699 fluxo de controle de uma chamada a função virtual 631 ÍNDICE 1079 função operador de coerção 535-536 função operador de coerção sobrecarregada 535-536 função operador de extração de stream operator» sobrecarregada 543- 544 função operator« sobrecarregada 571-573, 588-589 função palindrome 1000 função pow 77-78, 135-137, 192-193 função predicado 413-4 14, 770, 939- 940, 959-960, 962-965, 967-970, 973-974, 976-978, 981,983-985 função predicado binária 939-940, 959- 960, 967-970, 973-974, 977-978, 981, 983-986 função predicado isFull 413-414 função predicado unária 939-940, 962- 965 função qualityPoints 254-255 função que chama a si mesma 214 função que não recebe argumentos 22!- 222 função raise 875-876 função rand 199-202, 311 função recursiva 214, 2 16-217, 763-764 função rollDice 206-208 função set4l3-4l4, 424-429, 462-465 função smallest 248-249 função sobrecarregada 229-231. 680- 683 função sobrescrita 610-611 função sobrescrita chama versão da classe base 575-577 função sqrt da biblioteca de matemática 198-199 função square 199-200 função static 534-535 função swap 334-337 função time 205-206 função toupper 329-330 ftinção tripleByRefererice 259- 260 função tripleCallByValue 259- 260 função utilitária 413-414, 489-490, 502- 504 função utilitária recursiva 785-786 função virtual 583-584, 608-6 12, 620-622, 624-625, 629-632, 880-881, 921-922, 955, 1014-1017, 1027-1028 função virtual “impura” 622, 624- 625 função virtual chamada de uma referência à classe base 620-621 função virtual em uma classe base 620-621 função virtual pura 609-612, 615, 6 19-620, 622, 624-625, 629-630 funções “pré-empacotadas” 190 funções com listas de parâmetros vazias 221-222 funções como blocos de construção 192- 193 funções contêiner da STL 92 1-922 funções da biblioteca de matemática 135-136, 190-193 funções da biblioteca de tratamento de caracteres 825 funções da biblioteca padrão ANSI 105 1-1052 funções de entrada/saída da biblioteca 200-201 funções de memória da biblioteca de tratamento de strings 839-840 funções de pesquisa da biblioteca de tratamento de strings 834-835 funções de union não podem ser virtual 880-88 1 funções devem ser pequenas 194-196 funções f ind 898-899, 900-901 funções f ind de string 898-899 funções friend para melhorar o desempenho 462-465 funções insert 903-904 funções insert de string 902-904 funções membro 83-84 funções membro de uma classe 404-405 funções membro normalmente public 402-403 funções membro normalmente públicas 402-403 funções membro que não recebem argumentos 405-406 funções não-friendlnão-membro não podem acessar membros private 467-468 funções não-virtual em uma classe abstrata 622, 624-625 funções operador SI 9-5 20 funções operador de atribuição 533-534 funções padronizadas 192-193 funções para manipular dados nos contêineres da biblioteca padrão 199- 201 funções personalizadas 193-194 funções public 404-405 <functional> 200-201, 989-990, 992 G gabarito 680, 760, 763-764, 774-775, 857-858 gabarito autoytr 714-715 gabarito de classe 680, 683-684, 763- 764, 785-786 gabarito de classe adaptadora queue 953-954 gabarito de classe autoytr 714-715 gabarito de classe List 770, 774-775, 777, 778 gabarito de classe lista encadeada 805- 806 gabarito de classe pilha 774-775, 805- 806 gabarito de classe Stack 684-685, 689-690, 777 gabarito de classe Tree 785-786 gabarito de classe vector 930-931 gabarito de função 23 3-234 gabarito de função max 260 gabarito de função mm 260 gabarito de função printArray 680- 681 gabaritos de função 230-23 3, 680-684 gabaritos efriends 690-691 gabaritos e herança 690-691 gcount 650-65 1 generalidades 610-611 generate 928-929, 955-958 generate_n 928-929. 955-958 geração de números aleatórios 164-165, 273-274 gerador de jogos de palavras cru7adas 394 gerador de números aleatórios 488-490 gerando números de Fibonacci recursivamente 217-218 Gerando valores para serem colocados nos elementos de um array 265-267 gerenciador da tela 611-612, 621-622 gerenciamento dinâmico de objetos 484-485 gerente 185-186 get4l2-413, 423-424 getc 858-859 getline 356-357, 650, 890-891 gosub 804-805 gráfico de barras 184-185, 272-273 gráficos de tartaruga 312-313 gráficos orientados a objetos 1051-1052 grafo 184-185 gratuito 1054-1055 greater 989-990 greaterequal 989-990 Green Eggs Report 1052-1053 guillemets (« ») 302-304 H handle432-436, 504-505, 571-573 handie de objeto 407 -408, 478 handie de referência 437 handie implícito 406-407 handie para ponteiro 406-407 handie para um nome 406-407, 478 handie para um objeto 406-407 handier captura todas 705 handier catch 702-703, 705, 706, 710-7 12 handier catch para um grupo de exceções 705 handies 433-434 hardware 50-53 heap 954-955, 98 1-984 1080 ÍNDICE heapsort 954-95 5, 981, 983-984 help-site.com 1050 herança 82-83, 163, 40 1-402, 406-408, 411-412, 441-442, 452, 462-465, 564-566, 57 1-573, 585, 595-597, 621-622, 680, 803, 955 herança de classe base virtual 1028- 1029 herança de implementação 622, 624- 625 herança de interface 622, 624-625 herança de uma classe base abstrata 611-612 herança diamante 1026 herança múltipla 82-83, 564-567, 588- 589, 59 1-595, 639-640, 1026 herança para explorar as características comuns entre classes 366 herança private 564-565, 567-568, 57 1-573, 577-578, 774-775 herança private como uma forma de composição 577-578 herança protected 564-565, 567- 568, 577-579 herança public 564-565, 567-568, 582-585, 587. 589-590, 615, 619- 620, 616, 708-709, 1005-1006 herança simples 564-565. 594-595, 1026 herança virtual 1028-1029 herda membros de dados e funções membro de uma classe base 564 Hewlett-Packard 917-918 hex 651-652, 665-666 hexadecimal 184-185, 641-642, 661- 664, 833-834 hierarquia 577-579, 611-612 hierarquia de categorias de iteradores 926-927 hierarquia de classes 577-579,611-612, 62 1-622, 635-636, 803 hierarquia de classes de EIS em stream 729-730 hierarquia de classes de exceção 716- 717 hierarquia de classes Employee 612- 613 hierarquia de classes Shape 104-105, 624-627 hierarquia de dados 727-7 29 hierarquia de exceções da biblioteca padrão 716-7 17 hierarquia de formas 606 hierarquia de herança 566-567, 573- 574, 589-590, 605-606, 608-609, 611-612, 1016-1017 hierarquia de herança polimórfica 1016- 1017 hierarquia de promoção para tipos de dados primitivos 199-200 hierarquia padrão exception 716- 717 hierarquia Shape 566-567 hierarquias no mundo real 566-567 hipotenusa 185-186 histograma 184-185, 272-273, 286-288 homepage do Microsoft Visual C++ 1054- 1055 homepage do Visual C++ 1054-1055 hora de calendário 205-206 hora em que o arquivo-fonte foi compilado 86 1-862 horário normal 178-179 IBM 54-55 IBM Coi-poration 57-58 identificador(es) 70-7 1, 102-104,211- 212 identificadores globais 1009-1010 identificadores para nomes de variáveis 208-209 identificar as classes 160 ifstreain640-64l, 728-731, 733- 735, 744-746, 87 1-872 #if 859-860 #include 856 #include “nomeDeArquivo” 856 #include <cstring> 873-874 #include <iomanip> 119-120, 657-658 #include <iostream> 66-67 ignorando espaço em branco 651-652, 657-658 ignorar o caractere de retorno (enter) 485-486 ignore 522-523, 650-651 igual a 77-7 8 imagem executável 61, 63 imagem gráfica 639 implementação 301, 409-410 implementação de uma classe 404-405, 408-409, 412 implementação de uma função 615. 6 19-620 Implementação do tipo de dado abstrato Time como uma classe 402-403 Implementando uma classe proxy 482- 483 implicitamente virtual 608-609 imprecisão de números em ponto flutuante 135-136 impressora63, 639, 778 imprimindo caractere diferente de espaço 825 imprimindo caractere diferente de espaço, dígito e letra 827-828 imprimindo características de um string 897-899 imprimindo datas 39 1-392 imprimindo em múltiplas linhas com um único comando, usando cout 69-70 imprimindo em uma linha com comandos separados usando cout 69-70 imprimindo o valor de uma union nos dois tipos de dados do membro 881- 882 imprimindo recursivamente do fim para o início dados udos do teclado 220- 221 imprimindo um inteiro com espaçamento intemo e forçando o sinal mais 660-661 imprimindo um inteiro sem sinal em binário 8 15-816 imprimindo um string, um caractere de cada vez, usando um ponteiro nãoconstante para dados constantes 330- 331 imprimindo uma árvore 795 imprimindo uma árvore binária em um formato de árvore bidimensional 787-788 imprimir um array do fim para o início recursivamente 220-221 imprimir um array recursivamente 220- 221, 317-318 imprimir um string do fim para o início recursivamente 220-221, 317-318 imprimir um string lido do teclado do fim para o início recursivamente 220- 221 imprimir uma linha de texto 66-67 imprimir uma lista do fim para o início 793-794 imprimir uma lista do fim para o início recursivamente 793-794 imprimir uma lista encadeada do fim para o início 763-764 imprimir uma lista encadeada do fim para o início recursivamente 220-221 includes 976 incluir um arquivo de cabeçalho 408- 409 incluir um arquivo de cabeçalho múltiplas vezes 411-412 inclusão circular 43 8-439 incrementar o contador de instruções 800-801 incrementar um iterador 927-928 incrementar um ponteiro 338-339 incremento de uma variável de controle 13 1-133 incremento ou decremento de uma variável de controle 126 127 indentação 68-69, 80-82, 103-108. 129- 130 independente de implementação 412, 445-446 ÍNDICE 1081 indicador 798-799 indicador de fim de arquivo 647-649, 732-734, 87 1-872 indicador de justificação 660-661 indicador dec 657-658, 66 1-662, 665- 666 indicador fixed 657-658, 662-663, 665-666 indicador hex 657-65 8 indicador internal 657-660, 665- 666 indicador ios: : Left 348, 657-658, 665-666 indicador ios: : scientific 657- 658, 662-663, 665-666 indicador ios: skipws 657-658 indicador ios: : uppercase 657- 658, 663-664 indicador left 657-058, 658-059, 660- 661. 665-666 indicador oct 657-658, 66 1-662, 665- 666 indicador right 657-661, 665-666 indicador scientific 657-658, 662- 663, 665-666 indicador showbase 657-658, 661- 662 indicador showpos 657-658, 660-661, 664-665 indicador skipws 657-658 indicador uppercase 657-658, 661- 664 indicadores antes de serem desligados 665-666 indicadores de erro 650-651 indicadores de formato 65 1-652, 656- 657, 663-665 indicadores de justificação internal 660-661 indireção 320-321 inft)rmação de grafo 272-273 informação sobre tipo 750-751 informação sobre tipo durante a execução (RTTI) 199-201, 564, 568- 569, 1004, 1013-1014 inicialização da largura 654-655 inicialização de array automático 276- 277 inicialização de array static 275-277 inicialização de membros 499-500 Inicialização e uso corretos de uma variável constante 267-268 inicializador = O (em classes virtuais puras) 609-610 inicializador 265-267, 417, 420, 577- 579 inicializador de classe base 577-579 inicializador de membro 453-454, 456- 459, 533-534, 543-544, 57 1-573, 575-579, 58 1-582 inicializador de membro para um membro de dados const 459-460 inicializador de objeto membro 461-465 inicializadores default 4 19-420 Inicializando arrays multidimensionais 294 “inicializando duplamente” objetos membros inicializados 462-465 inicializando objetos de classe 413-414, 4 16-417, 446-447 Inicializando os elementos de um array com uma declaração 265-267 Inicializando os elementos de uni array com zeros 264-265 inicializando um ponteiro declarado const 332-333 inicializar com um comando de atribuição 457-459 inicializar com zero 110-111 inicializar em um estado consistente 4 17,420 inicializar o valor de um membro de dados private 413-414,446-447 inicializar os membros da classe base de uma classe derivada 5 77-579 inicializar ponteiro com O (nulo) 770 inicializar um ponteiro 32 1-322 inicializar uma constante de um tipo de dado primitivo 457-45 8 inicializar uma estrutura 809-8 10 inicializar variável static em escopo de arquivo 475-476 início de um arquivo 735 início de um stream 73 5-736 início de uma fila 48 1-482, 760, 778 mime 222-223, 405-406, 5 19-520, 534-535, 545. 858-859, 989-990 inneryroduct 929-930, 984-985 inOrderTraversal 786-787 inplace_merge 974-975 input 798-799 inserção 482-483, 760 inserção em lista encadeada com recursividade 220-221 inserção em stream 67-68, 69-70 inserção no fim de um vector 929- 930 inserção recursiva em árvore binária 220-22 1 inserir a posição de memória na pilha 799-800 insert 902-904, 936, 945-946, 948- 949 instanciado 83-84, 396-397 instrução 6 1-63 instrução assistida por computador (CAI) 254-255 instrução branch zero da SML 800- 801 instrução de desvio incondicional 803 instrução desviar se zero 799-802 instrução halt em SML 803 instrução ilegal 875-876 int & 224-225, 226-227 int * 326-327 int * const 326-327 int6l-68, 70-71, 198-199 int& 226-227 integridade da classe base preservada por herança 583-584 integridade de uma estrutura de dados interna 481-482 inteiro 67-68, 70-71. 18 1-182 inteiro binário 18 1-182 inteiro criptografado 182-183 inteiro ímpar 182-183 inteiro par 182-183 inteiro sem sinal em binário 815-8 16 inteiros aleatórios no intervalo de 1 a 6 20 1-202 inteiros começando com O (octal) 661- 662 inteiros começando com Ox ou OX (hexadecimal) 66 1-662 inteiros deslocados e ajustados a uma escala 202-203 inteiros deslocados e ajustados a uma escala produzidos por 1 + rand O % 6 201-202 inteiros hexadecimais 322-324 interações entre objetos 365 intercalar dois objetos lista ordenados 790-79 1 intercambiabilidade de arrays e ponteiros 343-344 interface 396-397, 404-405, 408-4 lO, 6 11-612 interface de uma classe 40 1-402, 404- 405 interface permanece a mesma 428-429 interface protected 564-565 interface public 404-405, 408-409, 412-413,570-572,587,611-612 interface que pode ser herdada 609-610, 622, 624-625 interfaces 83-84 International Standards Organiation (ISO) 50-51, 56, 481-482 lnternet 5 1-52, 63-66 Internetworking Protocol (1P) 63-64 interpretador de Simple 805-806 interrupção 875-876 intervalo 968, 970 intervalo arbitrário de subscritos 480- 481 intervalos aleatórios 793-794 Intranets 57-61, 63-64 introdução à STL na Web 1000. 1055- 1056 invalidargument 7 16-717 1082 INDICE invocando uma função membro nãoconst sobre um objeto const 452- 453 invocar uma função 190-191, 193-194 ios 1026 ios: adjustfield 660-663, 665- 666 ios: :app73O-732 ios: :ate73l-732 ios: badbit 665-666 ios: beg 735-736 ios: :binary 73 1-732. 744-746 ios: : cur 735-736 ios: dec 657-658, 66 1-662, 665-666 ios: end 735-736 ios: : eofbit 665-666 ios: : failbit 665-666 ios: :fixed 119-120, 137, 657-658, 662-663. 665-666 ios: floatfield 662-663, 665- 666 ios: goodbit 661-662, 665-666 ios: :hex657-658, 661-662 ios: : in 73 1-735, 746-747 ios: : internal 657-658, 665-666 ios: : oct 657-658, 661-662, 665-666 ios: : out 731-732, 746-747 ios: : right 348, 657-658, 665-666 ios: : showbase 657-662 ios: :showpoint 119-120, 137, 657-658, 664-665 ios: showpos 657-658, 660-661, 664-665 ios: trunc 73 1-732 iostreain 728-729 IP 63-64 isalnum 825 isalpha 825 iscntrl 825. 827-828 isdigit 825-827 isgraph 825, 827-828 islower 329, 825-827 ISO 50-51 isprint 825, 827-828 ispunct 825, 827-828 isspace 825, 827-828 istreajuiterator 923-925 istringstream 907-910 isupper 825-827 ISV 621-622 isxdigit 825 <iomanip . h> 200-20 1 <iomanip> 200-20 1 <iostream.h> 200-201 <iterator> 200-201, 974-976 iterswap 928-929, 971 iteração 2 19-220 iterador “após o fim” 967 -968 iterador482-483,680-68 1, 906-908 iterador apontando para o primeiro elemento após o fim do contêiner 923-924 iterador bidirecional 925-927, 930-931, 937, 943-944, 946, 947-948, 973- 976, 985 iterador de acesso aleatório 925-927, 930-93 1, 933-934, 940-941, 943-944, 959-960, 967-970, 976, 981-986 iterador de entrada 925-927, 959-960, 962-963, 965-968, 973-974, 976-978, 985-986 iterador de saída 925-927, 956-957, 965-966, 976-978, 985-986 iterador do stream de entrada 923-924 iterador de stream de saída 923-924 iterador end 927-928 iterador para a frente 925-926, 930-931, 964-965, 97 1-972, 974-975, 985-986 iterador para o próximo elemento de um contêiner 923-924 iterador typedef 926-927 iteradores de comparação 927 iterativo 214-215 iterator 917-918, 920-924, 927, 945-946 J Jacobson, Ivar 84 Jacopini, G. 101-103, 154-155 japonês 480-48 1 Java 5 1-52, 57-60 Java Como Programar: Terceira Edição 57-58 jogando 199-201 jogando cartas 345-346 jogo da forca 914-915 jogo de “adivinhar o número” 255-256 jogo de azar 206-208 jogo de craps 206-209 jogo de dados 206-208 jogos de cartas 345-346 juros compostos 134-135, 183-186, 188 juros compostos usando for 134-135 juros sobre depósito 186, 188 justificação à direita 137, 348, 657-660 justificação à esquerda 105-106, 137, 348, 658-660 justificação à esquerda e justificação à direita 659-660 K Kernighan and Ritchie C 56 KIS (“mantenha-o simples” - Keep It Simple) 64-65 Koenig, A. 697 L L sufixo de inteiro 875-876 1 sufixo de inteiro 875-876 L sufixo de ponto flutuante 875-876 1 sufixo de ponto flutuante 875-876 Lobo ratory for Computer Science 63-64 laço 109-111, 115 laço aninhado dentro de um laço 121- 122 laço controlado por contador 113-114, 120- 122 laço controlado por sentinela 117-118, 382-383, 796-79] laço de contagem 128-129 laço de retardo 132-133 laço de simulação 30 1-302 laço infinito 109-110, 118-119, 131132, 143-144, 181-182. 216-217 lado esquerdo de uma atribuição 149- 152, 262-263, 428-429, 53 1-532 lados de um quadrado 185-186 lados de um triângulo 182-183 lados de um triângulo retângulo 182- 183 lançamento de moeda 20 1-202, 254- 255 lançando dois dados 206-208, 311 lançando um dado 202-203 Lançando um dado de seis faces 6000 vezes 202-203 “lapidar classes valiosas” 83-84 lapidando classes valiosas 405-406 largura de campo 137, 263-264, 641- 642,651-652,654-655 largura de um campo de bits 822-823 largura de um intervalo de números aleatórios 205-206 largura inicializada implicitamente com O 654-65 5 Lee, Meng 917-918 legibilidade 66-67, 103-104, 121-122, 193- 194 leiaute não-contíguo de uma fila duplamente encadeada na memória 940-941 Leis de DeMorgan 185-186 leitura a partir de um string na memória 201 leitura de arquivo 640-641 Leitura de caracteres com a função membro getline 650 leitura não-destrutiva 73-74 lendo de strings na memória 907- 908 Lendo e imprimindo um arquivo seqüencial 734-735 Lendo seqüencialmente um arquivo de acesso aleatório 744-746 length 898-899 length_error 716-717, 890-891 ler dados 63 ler dados de um arquivo seqüencialmente 733-734 ler uma linha de texto 650 ler uma linha de texto inteira para um array 356-357 less 989-990 lessequal 989-990 ÍNDICE 1083 162- loglO 192-193 log2n 7 87-788 logaritmo 192-193 logaritmo natural 192-193 logic_error 7 16-717 lógica de desvio 608-609 lógica de switch 142-143, 608, 632- 633 loja de vendas pelo correio 184-185 long 142-143, 198-199, 875-876 long double 199-200, 875-876 long int 142-143, 199-200, 216-217 losango - símbolo de decisão 102-105, 109-110. 132-133 losango 96-97, 101-103, 105-106, 163, 237-238 losango cheio 162-163 lote 5 3-54 less< double >946-947 linha 76-77 less< int > 943-945, 947-948 linha cheia com uma ponta de seta 237- letra 354-355 238 letra minúscula 825-827 linha com uma ponta de seta cheia 301- letras maiúsculas (A-Z) 826-827 302 letras maiúsculas 70-71, 96-97, 200- linha de comando 868 201, 329, 825 linha de comando do UNIX 61, 63, 868- letras minúsculas 70-71, 96-97, 109- 869 110, 200-201, 329, 727-729 linha de comunicação com um arquivo lexicographical compare 957- 73 1-732, 734-735 960 linha de fluxo 101-105 liberar memória 714-715, 761-762 linha de texto 650 licença 583-584 linha de vida 30 1-304 licenciamento 431-432 linha em branco 71-72, 116 LIFO 479-480, 683-684, 686-688, 774- linha reta 76-77 775, 9 19-920, 950-951 linhas 292-293 ligação 61, 63, 208-209, 874, 1012- linhas de comunicação dedicadas 63-64 1013 link 61-63, 408-409, 760-761, 780-781 ligação externa 873-874 link com ponteiro 762-763 Lovelacc. Lady Ada 58-59 ligação interna 873-874 links 164 lowerbound978-981, 983-984 ligação segura quanto ao tipo 230-231, links do editor de ligação 61, 63 Ivalue (“valor da esquerda”) 126-127, 883-884 list 917-920, 922-923, 926-927, 929- 150-152, 226-227, 262-263, 321-324, limerick 389-390 931 List< STACKTYPE > 777 428-429, 53 1-532, 534-535, 545-546, 927, 942-943 limite de alinhamento dependente de lista 760-761 Ivalues como rvalues 150-152 máquina 761-762 lista circular duplamente encadeada limite de crédito em uma conta de 773-774 M cartão de crédito 177-178 lista circular simplesmente encadeada Macintosh 654-655, 732-733 limite de palavra 809-810 773-774 macro 199-200, 680-681. 868-869, 870- limite de palavra dupla 809-810 lista de argumentos de tamanho variável 871 limite de uma unidade de 869-870 macros definidas no cabeçalho armazenamento 24-825 lista de argumentos separados por <cstdarg> 868-869 limite de unidade de memória 824-825 vírgulas 191-193 magnitude 660-661 limites de array 272-273 lista de classes base separadas por magnitude justificada à direita 657-658 limites de tamanho de ponto flutuante vírgulas 594-595 main 66-73, 193-194, 42 1-422, 874 200-201 lista de disparo 708-709 maior elemento de uma coleção 556- limites de tamanho integrais 200-201 lista de inicializadores 265-267, 355- 557 limites de tipos de dados numéricos 356 maior inteiro não maior do que 192-193 199-201 lista de inicializadores de array 265-267 maior que 77-78 <lirnits . h> 200-201 lista de inicializadores de membros 460- maior que ou igual a 77-78 <limits> 199-201 461,486-487,594-595 makeheap 981, 983-984 <list> 200-201, 92 1-922 lista de inicializadores separados por makefile 874 linguagem C++ 65-66 vírgulas 809-8 10 malloc 471, 473-475. 877-878 linguagem de máquina 55-56, 209-210, lista de parâmetros 194-195 Manhattan 186. 188 800-801 lista de parâmetros de função vazia 222- manipulação de bits 813-814 linguagem de programação 55-56 223 manipulação de campos de bits 824-825 linguagem de programação C++ 59-60 lista de parâmetros void 194-195 manipulação de caracteres 190-191 linguagem extensível 216-217, 272- lista duplamente encadeada 773-774, manipulação de ponteiro perigosa 629- 273, 402-403, 480-481 9 19-920, 937 630 linguagem híbrida 56-57, 466-467 lista encadeada 482-483, 760, 762-765, manipulação de ponteiros 629-630, 760 linguagem Logo 312-313 767-768, 773-774 manipulação de strings 190-191. 801- linguagem natural de um computador lista encadeada de objetos de classe 802 55-56 base 564-565 manipulação de strings de caracteres linguagem portável 65-66 lista indexada 806 824-825 linguagem sem tipos 56 lista separada por vírgulas 80-81, 131- manipuladorboolalpha 1005-1006 linguagem simbólica 55-56 132, 191-195, 320-321, 456-457 manipulador de stream 72-73. 119-120, linguagem Simple 796 lista simplesmente encadeada 773-774 137, 65 1-652, 655-657, 660-661, 735 linguagens de alto nível 55-56 literal 7 1-72 manipulador de srream dec 65 1-652 linguagens de programação procedurais livros sobre C++ 1050 manipulador de stream não 83-84, 396-397 <locale> 199-201 parametrizado 119-120 linguagens orientadas a objetos 59-60 log 192-193 ÍNDICE 1085 multiprogramação 54-55 multiset 9 19-922, 926-927,942- 943, 945-947 multiset< iflt, less< int» 944-945 mu/titasking 58-59 multithreading 698-699 Musser, David 917-918 mutable 208-209, 460-461, 1023- 1024 mutuamente exclusivo 660-66 1 N nainespace 1009-1010, 1012-1013 nainespace aninhado 1012-1013 namespace global 1012-1013 namespace. 1010-1011 namespaces predefinidos 1010-1012 não pode ser alocado espaço 878-879 não-igual 77-78 NDEBUG 861-862 nega te 990-991 new 471,473-475, 485, 533-534, 761- 763, 877-878, 936 <new.h>713 <new>7l1-713 new chama o construtor 471, 473-474 new disparando bad alloc em caso de falha 712 new disparando uma exceção se a memória disponível é insuficiente 575-577 new falha 710-711 new falha na alocação de memória 699- 700 new retornando O em caso de falha 711-713 new teve sucesso 543-545 newhandler 699-700 nível de “hits e bytes” 813-814 nível de indentação 105-106 nível mais alto de precedência 75-76 nodo 762-763 nodo de rede 77X nodo esquerdo 785-7 86 nodo filho 794-795 nodo folha 793-794 nodo mais à direita de uma subárvore 794-795 nodo pai 780-781, 793-794 nodo raiz 780-781, 785-786 nodo rai7 da subárvore direita 780-781 nodo raiz da subárvore esquerda 780- 781 nodo substituto 794-795 nome com subscrito usado como um rvalue 53 1-532 nome de arquivo 730-731, 733-734, 861-862 nome de array 340-342 nome de array como um ponteiro 324- 325 nome de array como um ponteiro constante 340-342 nome de array como um ponteiro constante para o início do array 331- 332 nome de atributo 236 nome de estrutura 808, 808-809 nome de função 190-193, 210-211,349- 350, 873-874 nome de parâmetro em um tratador catch 703-704 nome de um arquivo-fonte 86 1-862 nome de um array 263-264, 324-325 nome de um elemento de array com subscrito 278-279 nome de uma atividade 237-23 8 nome de uma função 191-193 nome de uma variável 73-74, 208-209 nome de uma variável de controle 126- 127 nome de variável 796 nome de variável de controle 13 1-132 nome de variável global 873-874 nomes de função adulterados 230-231 nomes de operações 299-300 nomes de parâmetros em protótipos de funções para documentação 197-198 nomes de variáveis em protótipos de função 279-281 nomes significativos 194-196 not 1016-1017 NOTlógico(!) 146-147, 185-186, 1016- 1017 noteq 1016-1017 notequalto 990-991 notação científica 119-120,641-642 notação com colchetes duplos para arrays bidimensionais 545-546 notação de array 341-342 notação de ponteiro 34 1-342 notação de ponto fixo 657-658 notação fixa 641-642 notação hexadecimal 641-642 notação infixa 79 1-792 notação ponteiro/deslocamento 341-342 notação ponteiro/subscrito 341-342 notação pós-fixa 79 1-792 nothrow 713 nothrowt 713 nova linha (‘ \n’) 68-69, 72-73, 80-8 1, 354-355, 642-646, 827-828 nova linha 68-69 novo bloco de memória 878-879 novo estilo de coerções 1005-1006 novos manipuladores de stream 655-656 novos operadores de coerção 1006-1007 nthelement 985 NULL 32 1-322, 832-835 nulo (O) 357-358. 760-761 número binário 825 número correto de argumentos 194-195 número da posição 262 número de argumentos 194-195 número de elementos em um array 337- 338 número de linha 796, 798-800, 86 1-862 número de ponto flutuante 113-114, 116, 118-119, 120-121 número de ponto flutuante em formato científico 662-663 número do sinal 875-876 número hexadecimal (base 16) 644-645, 65 1-652, 657-658, 66 1-662, 832-833 número ímpar 186, 188 número não-especificado de argumentos 868-869 número octal 641-642, 66 1-662, 825, 833-834 número perfeito 254-255 número primo 987-988 número real 116 números aleatórios 203-204, 273-274 números complexos 448-449. 556-557 números de Fibonacci 2 19-220 números decimais 184-185, 661-662, 825 números inteiros 70-7 1 números mágicos 269-270 números pseudo-aleatórios 203-204 o o arquivo-fonte de data é compilado 86 1-862 o encontro de caminhos de decisão 238 o menor dentre vários inteiros 183-184 O operador sizeof quando aplicado a um nome de array retorna o número de bytes no array 336-337 o resultado do deslocamento de um valor com sinal para a direita é dependente de máquina 820-82 1 Object Constraint Language (OCL) 164 Object Management Group (OMG) 84 objeto 5 1-52, 56-57, 59-60, 83-84, 155- 156, 396-397 objeto autoptr fica fora de escopo 7 14-7 15 objeto automático 699-700, 710-711 objeto automático local 423-424 objeto cliente 298-299 objeto const 268-269, 398-399 objeto const deve ser inicializado 268-269 objeto da classe derivada é um objeto da classe base 57 1-573, 582-583 objeto de classe derivada 705 objeto de entrada em stream (cm) 70- 72 objeto de saída padrão (cout) 67-68. 639-640, 728-729 1086 ÍNDICE objeto disparado 703-705 objeto do stream de entrada padrão 728- 729 objeto exceção 702-703 objeto exceção de divisão por iero 702- 703 objeto fila 793-794 objeto função 943-944, 947-948, 989- 992 objeto função binária 990-991 objeto função de comparação 943-944, 947-948 objeto função de comparação less 943-944. 954-955 objeto função less< int > 943-945 objeto função less< T > 947-948, 954-955 objeto função pode encapsular dados 992 objeto grande 225-226 objeto hospedeiro 460-461 objeto interage 396 objeto iterador482-483, 918-919 objeto local automático 421-422 objeto local static 42 1-424 objeto que envia 298-299 objeto que recebe 298-299 objeto sai do escopo 420-421 objeto sem nome 88 1-882 objeto servidor 298-299 objeto Stririg temporário 544-545 objeto temporário 535-536 objetos 82-83 objetos automáticos em um bloco try 706 objetos componentes 437 objetos contêm somente dados 406-407 objetos criados dinamicamente 435-436 objetos da classe derivada tratados como objetos da classe base 582-583 objetos de superclasse duplicados 1026- 1027 Observações de engenharia de software 60-61 obtém o valor de 79-80 obter o valor de um membro de dados private 4 12-413 obter ponteiro 735 oct 65 1-652 octal 184-185, 66 1-662 ocultação 462-465 ocultação de informações 83-84,211- 212, 334-335, 396-397, 404, 413- 414.479-480 ocultando a implementação 405-406 ocultando detalhes de implementação 190-191 ocultar a implementação 479-480, 484- 485 ocultar dados private dos clientes 408-409 ocultar detalhes de implementação 479- 480 ocultar nomes em escopos mais externos 211-212 ocultar uma representação de dados interna 481-482 ofstream728-735, 742-746, 87 1-872 Oito Rainhas 3 16-317 Oito Rainhas com recursividade 220- 221, 317-318 Oito Rainhas: abordagens de “força bruta” 316-317 “olho de boi” 237-238 OMG 84 OOAD 84 OOD 8 1-82 OOP 82-84 opção de compilador 65-66 opções combinadas por ou 656-65 7 opções de menu 746-747 operação com stream falhou 665-666 operação de enfileirar 481-482 operação de retirada da fila 481-482 operação de sincronização de um istream e um o,streo,fl 667-668 operações 16 1-162, 234-235, 298-299, 30 1-302, 363-364 operações com iterador de acesso aleatório 927-928 operações com iteradores bidirecionais 927-928 operações com iteradores para a frente 927 operações de classes 366-367 operações de entradalsaída 101-103 operações de iterador 927 operações implementadas como funções 234-235 operações permitidas sobre dados 480- 481 operador && 148-149 operador [] sobrecarregado 531-532 operador + 985 operador += 893-894 operador + sobrecarregado 550-55 1 operador < 985-986 operador « 1004-1005 operador « sobrecarregado 519-520, 545, 64 1-642 operador 67-68, 124-125 operador- 922-923 operadorAND sobre bits (&) 814-819, 851 operador AND sobre bits com atribuição (&=) 820-821 operador auto_ptr sobrecarregado * 716-717 operador autoytr sobrecarregado - >715-716 operador binário + 74-75 operador binário 72-75, 148-149 operador binário de resolução de escopo (: :) 228-229. 404-405, 475-476, 594-595, 1009-1010, 1026 operador condicional (?:) 105-106 operador condicional ternário (?: ) 219, 5 18-5 19 operador const cast 1007-1008. 1023- 1024operador de acesso a membro (.) 397- 398 operador de adição com atribuição (+=) 124- 125 operador de adição com atribuição (+) sobrecarregado 550-551 operador de atribuição (=) 72-73, 81-82, 126-127, 430-431. 516-517, 922-923 operador de atribuição (= sobrecarregado 530-531, 533-534, 543-545. 582-583 operador de atribuição e deslocamento à direita com extensão do sinal 820- 821 operador de chamada de função O 545- 546, 630-632, 715-7 16 operador de chamada de função O sobrecarregado 545-546 operador de coerção 116, 118-119, 198- 199, 340-341, 535-536, 1004-1006, 1017-10 18 operador de coerção dynaiuic_cast 1015-1016 operador de complemento (-) 814-815 operador de complemento sobre bits (-) 816-8 17, 819-821 operador de concatenação + sobrecarregado 545 operador de concatenação de string sobrecarregado 544-545 operador de concatenação sobrecarregado 544-545 operador de decremento unário (-) 125 operador de derreferência de ponteiro (*) 397-398, 630-632 operador de derreferenciação (*) 322- 324 operador de desigualdade sobrecarregado 530-531, 534 operador de deslocamento à direita (») 516, 640-641, 814-815. 820-821, 851 operador de deslocamento à direita sobre bits (»)516 operador de deslocamento à esquerda («)5l6, 640-641, 814-815, 819- 821. 850-851 operador de deslocamento à esquerda com atribuição 820-821 operador de deslocamento à esquerda sobre bits («) 516, 8 19-820 operador de deslocamento sobre bits 8 19-820 INDICE 1087 operador de endereço (&) 321-322, 324- 325, 334-335, 5 16-517, 1026 operador de extração de síream» (“obter de”) 70-72, 230-231, 516, 520-521, 532-533, 640-64!, 645-648, 733-734, 750-751, 890-89! operador de extração de stream » sobrecarregado 643-646 operador de extração de streun? em uma condição de continuação de laço 647- 648 operador de extração de stream retornando false no fim de arquivo 647-648 operador de extração de síream sobrecarregado 530-532 operador de igualdade ( e ! =) 146- 147, 524-525 operador de igualdade = 922-923 operador de igualdade (=) sobrecarregado 531-532, 534, 545 operador de igualdade 79-80 operador de incremento 125, 546-547 operador de incremento sobrecarregado 547-548 operador de incremento unário (++) 125 operador de indireção (*) 322-325 operador de inserção em stream « (“enviar para”) 72-73, 230-231, 516, 520-521, 532-533, 594-595, 640-642, 733-734 operador de inserção em stream « sobrecarregado 643-644 operador de inserção em siream sobrecarregado 530-53 1, 549-55 1, 570-572, 594-595, 750-751 operador de membro de estrutura (.) 880-881 operador de negação lógica () 146-149 operador de negação sobrecarregado 545 operador de pós-decremento 125 operador de pós-incremento 125 operador de pós-incremento sobrecarregado 549-551 operador de pré-decremento 125 operador de pré-incremento 125 operador de pré-incremento sobrecarregado 549-551 operador de resolução de escopo (: :) 397-398, 475-476. 573, 577-578. 594-595. 686-688, 690-691. 1009- 1010. 1012-1013, 1026 operador de saída sobrecarregado 750- 751 operador de seleção de membro (.) 397-398. 406-407. 469-470, 608-609, 615-616, 618. 620-621. 716-717 operador de seleção de membro seta (- >) 406-407 operador de subscrito sobrecarregado 53 1-532, 534-535, 545-546, 556-557 operador delete 621-622, 761-762 operador dynamic cast 1014-1015 operador menor do que sobrecarregado 545 operador menor que < 922-923 operador módulo (%) 74-75, 96-97, 181- 182, 201-202, 205-206 operador OR exclusivo sobre bits () 814-817, 819 operador OR exclusivo sobre bits com atribuição (=) 820-821 operador OR inclusivo sobre bits (1) 814-817, 819 operador OR inclusivo sobre bits com atribuição (1=) 820-821 operador parênteses ( o) 75-76, 119- 120 operador ponto (.) 397-398, 406-407, 469-470. 608-609, 615-616, 618-621, 716-7 17 operador relaciona! 79-80 operador seta (->) 397-398, 469-470 operador sizeof 336-338, 757-758. 809-8 10 operador subscrito [] 892-893 operador subscrito [] usado com strings 890-891 operador subscrito 942-943 operador subscrito de array ([1) 531- 532 operador subscrito de um mapa 949- 950 operador unário 119-120, 148-149, 32!- 322, 518-519 operador vírgula (,) 131-132, 219 operador(es) re!acional(is) 77-78, 130- 131 operadores aritméticos 74-75 operadores aritméticos binários 119-120 operadores binários sobrecarregados 518-5 19 operadores condicionais 106-107, 646- 647 operadores de atribuição abreviados 124- 125 operadores de atribuição da classe base não-herdados pela classe derivada 577-579 operadores de atribuição sobre bits 820- 821. 986-987 operadores de conversão 535-536, 1005- 1006 operadores de decremento 125, 546-547 operadores de igualdade 77-78, 104-105 operadores de inserção em strealn e extração de stream definidos pelo usuário 520-521 operadores de inserção/extração de strea,n 643-644 operadores de ponteiros 322-324 operadores lógicos 146-147 operadores multiplicativos . 1. % 119- 120 operadores ponteiros para membros de classe 1004 operadores que devem ser não-membros 522-523 operadores que podem ser sobrecarregados 517-518 operadores relacionais >, <. >=. e <= 146-147 operadores sobre bits 813-815, 820-821 operadores sobrecarregados 525-526 operadores unários mais (+) e menos (-) 119-120 operadores unários sobrecarregados 518-5 19 operando 72-75, 105-106, 3t2, 791-799 operando da direita 67-68 operandos int promovidos para float 118-119 operator void* 735 operator’ 545 operator ‘ = 534, 920-921 operator O) 545-546. 556-557, 989- 990, 992 operator [] 545-546, 703-704 operator+ 516-5 17 operator++ 546-547, 55 1-552 operator++ ( int) 546-547 operator+= 544-545 operator< 545. 920-921 operator« 522-523, 531-532, 543- 544, 562. 573 operator<= 920-921 operator= 533-534, 544-545, 920- 92! operator== 534, 545, 920-921, 959- 960 operator> 920-921 operator>= 545, 920-921 operator»52l-523, 531-532. 543- 544 or 1016-1017 OR exclusivo sobre bits 1016-1017 OR inclusivo sobre bits 1016-1017 ORlógico(l 1)146-147,185-186,819, 1016-10 17 OR lógico sobre bits 986-987 oreq 1016-1017 ordem de avaliação de operadores 96 ordem de avalização 75-76, 219 ordem de classificação 969-970, 973- 974 ordem de construção 577-579 ordem de construção de objetos membro 577-579 ordem de término vinda do sistema operacional 875-876 ordem inversa dos bits em um inteiro sem sinal 851 1088 ÍNDICE ordem na qual as ações devem ser executadas 100-101. 110-111 Ordem na qual construtores e destruidores de classe base e classe derivadas são chamados 579-580 ordem na qual construtores e destruidores são chamados 421-423, 434-435 ordem na qual destruidores são chamados 42 1-422 ordem na qual inicializadores de membros são listados 577-579 ordem na qual operadores são aplicados a seus operandos 219 ordem na qual tratadores de exceção são listados 705 ordem último a entrar, primeiro a sair (LIFO) 683-684, 686-688 ordenando 482-483, 729-730, 760, 968, 970 ordenando arrays 282-283 ordenando strings 201 ordenando um array com bubble sort 283-284 orientação a objetos 8 1-82, 396 orientado a cliente 405-406 orientado a objetos 83-84 orientado para ações 83-84 os operadores ponteiros & e * 322-324 ostream 562, 640-642, 647-648, 650- 651, 728-729, 73 5-736, 740-746, 750-751 ostreainiterator 923-925 ostreamiterator< int >935- 936 ostringstrearn 907-909 otimização 874-875 otimização de compilador 874-8 75 otimizações sobre constantes 452-453 otimizando o compilador Simple 803- 805 outCredit 744-746 outros conjuntos de caracteres 890 overflowerror 716-717 overhead 545 overhead de chamada de função 222- 223, 545 overhead de chamada por valor 399-400 overhead de cópia 398-399 overhead de função 85 8-859 overhead de função virtual 955 overhead de uma chamada de função 857-858 overhead de uma chamada de função extra 534-53 5 overhead durante a execução 629-630 oxímoro 267-268 P pacote (de aplicativos) gráfico 635-636pacote 778 pacotes 63-64 padrão ANSI C++ 1052-1053 padrão ANSL[ISO C++ 65-66, 1000- 1001, 1055-1056 padrão de facto 48 1-482 padrão de tabuleiro de xadrez 96-97, 181-182 pagamento bruto 178-179 pair 945-946, 959-960 palavra 381, 809-810 palavra(s)-chave 102-104. 109-110 palavra-chave operador de desigualdade 1016-1017 palavra-chave template 232-233. 680-68 1 palavras e frases descritivas 234-235 palavras-chave operadores 1004, 1016- 1018 palavras-chave operadores lógicos 1016- 10 17 palavras-chave operadores sobre bits 1016- 1017 palavras-chave operadores sobre bits com atribuição 1016-1017 palavras-chave operator 5 16-517 palavras-chave reservadas 109-110 paI mndromo 790-79 1 papéis 164 papel 53-54 par chave/valor 946-949 par de chaves {} 80-81 par de iteradores 927-928 par de parênteses mais interno 75-76 paralelogramo 565-566 parâmetro 191-195, 209-210 parâmetro de função como uma variável local 194-196 parâmetro de referência constante 225- 226 parâmetro de tamanho de gabarito não- tipo 689-690 parâmetro de tipo 232-235, 68 1-682, 684-685, 689-690 parâmetro de tipo formal 232-233. 686- 688 parâmetro de tipo formal em uma definição de gabarito de função 681- 682 parâmetro não-tipo 689-690 parâmetro por referência 223-225 parâmetros de tipo formais de uma definição de gabarito 680-681 parâmetros em funções 194-196 parênteses aninhados 75-77 parênteses para forçar a ordem de avaliação 81-82 parênteses redundantes 77-78, 147-148 parte da classe base de um objeto de classe derivada 615-616, 618, 620 parte else do if 108-109 partes fracionárias 118-119 partialsort 985-986 partial_sort_copy 985-986 partialsum 929-930, 985 partition 928-929, 985 Pascal 50-52, 58-59, 1050-1051 Pascal, Blaise 5 8-59 passagem por uma expressão da esquerda para a direita 791-792 passando além do fim de um array 340- 341 Passando arrays e elementos individuais de arrays para funções 279-281 passando arrays para funções 278-279, 286-288 passando objetos grandes 225-226 passando opções para um programa 87 1-872 passando um array inteiro 279-281 passando um elemento de array 279- 281 passando um nome de arquivo para um programa 87 1-872 passando um objeto através de chamada por valor 430-431 passando valores para funções 534-535 passar argumentos de tamanho grande como referências const 399-400 passar o tamanho de um array 336-337 passar o tamanho de um array como um argumento 278-279 passar uma estrutura 810-811 passar uma estrutura através de chamada por referência 810-811 passara através de chamada por valor 334-335 Passeio do cavalo 313-315 Passeio do cavalo; abordagens de força bruta 315-316 Passeio do cavalo; teste de passeio fechado 317 patrimônio em software 83-84, 405-406 “peças padronizadas, intercambiáveis” 83-84 “pensando em objetos” 81-82. 396 Pensando em objetos 5 1-52, 66-67, 396 pequeno círculo 101-103. 105-106. 109- 110 percorrer a subárvore direita 786-787 percorrer a subárvore esquerda 786-787 percorrer para a frente e para trás 773- 774 percorrer um contêiner 760 percorrer uma árvore binária 78 1-782, 787-788 percorrer uma árvore binária em ordem de nível 787-788. 795 percorrer uma lista 772-773 percurso de uma árvore binária na pósordem, com recursividade 220-22 l percurso de uma árvore binária na préordem, com recursividade 220-221 ÍNDICE 1089 percurso em ordem 781-782, 795 percurso em ordem de uma árvore binária com recursividade 220-22 1 percurso em pós-ordem 78 1-782, 793- 795 percurso em pré-ordem 78 1-782 percurso na ordem inversa 906-907 percurso, travessia 906-907 perda de dados 665-666 perda de memória 544-545, 575-577, 714-717, 761-762, 905-906, 918-919 perda de recurso 699-700, 711-7 12 permutação 985 permutador lexicográfico 985 permutando strings 896-897 permutar 284-285 permutar dois strings 896-897 personalizar software 583-584 pesquisa 270-273, 284-285 pesquisa binária 288-291 Pesquisa binária em um array ordenado 290-291 pesquisa binária recursiva 220-221, 288-289, 317-318 pesquisa de opinião 284-285 pesquisa em árvore binária 794-795 pesquisa linear 288-291 pesquisa linear em um array 288-289 pesquisa linear recursiva 220-221, 288- 289, 317-318 pesquisando (Ou procurando) 482-483, 760, 968. 970 pesquisando em arrays 288-289 pesquisando em blocos de memória 838-839 pesquisando em ,strings 356-357, 829- 830 pesquisando uma lista encadeada recursivamente 220-221 pesquisando uma lista recursivamente 793-794 pesquisar uma lista encadeada 763-764, 806 PHOAKS = People Helping One Another Know Stuff 1051-1052 Pi 96-97, 185-186 P1 857, 857-858 pig Lalin 390-391 pilha 479-480, 482-483, 683-684, 686- 688, 708-709, 760-763, 773-776 pilha de chamada de funções 33 1-332, 708-709 pilha de chamadas 33 1-332 pilhas implementadas com arrays 479- 480 pilhas usadas por compiladores 791-792 pipe (1) 868-869 planta arquitetônica 396-397 plataforma de hardware 56 Plauger, P.J. 56-57 plus 990-991 pointer 922-923 polimorfismo 142-143, 452, 564-565, 583-584, 589-590, 608-609, 609-6 12, 620-622, 629-630, 803, 955 polimorfismo e referências 629-630 polimorfismo em linguagens não- orientadas a objetos 629-630 polimorfismo substituindo a lógica de switch 564-565 polinomial 77-78 polinômio de segundo grau 77-78 ponta de seta 30 1-304 ponteiro 225-226, 320, 338-339 ponteiro chamado this 468-469 ponteiro const 5 24-525 ponteiro constante 340-34 1 ponteiro constante para dados constantes 329, 332-334 ponteiro constante para dados nãoconstantes 329, 33 1-333 ponteiro constante para uma constante inteira 332-333 ponteiro da vtable de um objeto 630- 632 ponteiro de classe base para um objeto da classe derivada 6 10-612, 62 1-622, 629 ponteiro de posição em arquivo de saída 740-743 ponteiro de posição em um arquivo 735, 744-746 ponteiro de vtable 632-633 ponteiro implícito 462-465 ponteiro indefinido 533-534, 544-545 ponteiro não-constante para dados constantes 329-332 ponteiro não-constante para dados não constantes 329 ponteiro nulo (O) 732-733. 760-761, 794-795, 878-879 ponteiro para a frente 773-774 ponteiro para classe base (ou tipo de referência) 568-569, 582-584, 610- 613, 629-630, 705, 762-763, 1007- 1008, 1014-1015 ponteiro para classe derivada 567-568, 1007-1008, l014-1015 ponteiro para float 320-32 1 ponteiro para função 349-350, 629-632, 713-7 14, 990-992, 1025 ponteiro para o fim 805-806 ponteiro para trás 773-774 ponteiro para um objeto 404-405 ponteiro para um objeto de classe derivada 610-611 ponteiro para uma estrutura 331-332 ponteiro para uma função 349-35 2, 874 ponteiro para void (void *) 340-341 ponteiro para void 340-341 ponteiro put 735-736 ponteiro this 462-465, 468-470, 478, 519-520, 534 ponteiro this usado explicitamente 468-469 ponteiros declarados const 332-333 ponteiros e arrays 340-341 ponteiros e referências para classes base abstratas 611-612 ponteiros e subscritos de arrays 340-341 ponteiros para memória alocada dinamicamente 469-470, 534 ponteiros podem ser usados com subscritos 341-342 ponto de disparo 700-701, 704-705 ponto de entrada 150-152 ponto de entrada de uma estrutura de controle 150-152 ponto de entrada único 150-152 ponto de saída 150-152 ponto de saída único 150-152 ponto decimal 116. 119-120, 135-136, 64 1-642, 658-659 ponto decimal em um número de ponto flutuante 191-193 ponto flutuante 653-654, 657-658, 662- 663 ponto-e-vírgula (;) 67-68, 80-81, 108- 109, 194-196, 397-398, 417, 420. 706, 856 ponto-e-vírgula no fim de um protótipo de função 198-199 ponto-e-vírgula que terminam a definição de uma estrutura 808-809 pop 686-688, 774-775, 950-955 pop_back 930-931, 940-941, 95l- 952, 954-955 popfront 937, 940-943, 952-953 pop_heap 982-984 porção controladora 159-160, 164 porção do mundo 159-160 portabilidade 65-66 portável 56 pós-decremento 126-127, 546-547 posição corrente em um stream 735-736 posição de memória 73-74. 110-111 posição de memória doSimpletron 805- 806 posição na memória 73-74 posição temporária 800, 802-803 posicionamento em relação à posição atual em um tream 690-691 pós-incrementar um iterador 927 pós-incremento 125-127. 546-547, 550- 551 postOrderTraversal 786-787 potência 192-193 power 172-173 Powersoft 1054-1055 precedência 75-78, 8 1-82. 126-127. 131-132, 148-149, 219, 341-342 precedência de operadores 75-76, 821- 822 precedência do operador condicional 106- 107 1090 ÍNDICE precedência e associatividade de operadores 148-149 precedência não-alterada por sobrecarga 518-5 19 precisão 119-120,641-642,651-653 precisão default 119-120 precision 652-653 pré-decremento 126-127, 546-547 preencher com caracteres especificados 64 1-642 preenchimento 654-655, 660-661, 824- 825 preenchimento em uma estrutura 824- 825 preenchimentos de buifer 667-668 Pré-incrementando e pós- incrementando 126 pré-incremento 126-127, 546-547, 550- 551 preOrderTraversal 786-787 pré-processador 61-63, 197-198, 856 pré-processador C++ 61, 63, 67-68 pré-processar 61, 63 pressionando as teclas em um teclado 639 prevyermutation 985-986 prevenção de erro 608-609 primeira passagem do compilador Simple 798-801, 803 primeiro a entrar, primeiro a sair (FIFO) 481-482, 778, 919-920, 940-941. 952-953 primeiro argumento implícito 468-469 primeiro refinamento 114-115, 12 1-122, 346-347 primo 254-25 5 principal 135-136, 186, 188 princípio do menor privilégio 209-2 10, 282-283, 326-329, 335-336, 345-346, 408-409, 4 13-414, 452-453, 735, 872-874, 927 priorityqueue 9 19-922, 926-927, 950-951, 954-955 private 40 1-403, 413-4 14 privilégio 332-33 3 privilégios de acesso 329, 332-333 probabilidade 20 1-202 problema da inclusão circular 494-495 problema da média da turma 110-111, 116 problema de Peter Minuit 137, 186, 188 problema de precedência 646-647 problema do else sem correspondente 180-181 problema dos resultados do exame 122- 123 problema genérico de média da turma 113-114. 116 problemas de ambigüidade 592, 594- 595 procedimento 100-101 procedimento de recuperação 697-698 procedimento puro 406-407 processador de textos 354-355 processamento de acesso instantâneo 745-746 processamento de arquivo 639-641 processamento de arquivo de dados formatado 727 processamento de dados “brutos” 727 processamento de dados comercial 756 processamento de exceções polimórfico 711-712 processamento de interrupção 697-698 processamento de textos 39 1-392 processamento de transações 947-948 processamento em lotes 53-54 processamentos de listas 763-764 processando strings 320 processando strings em streams 907- 908 Processando uma fila 778 processo de análise e projeto orientados a objetos (OOAD) 84 processo de compilação para um programa Simple 80 1-802 processo de projeto 366-367 processo de refinamento 114-115 procurando strings e caracteres em um string 898-899 produtividade 63 produto de inteiros ímpares 183-184 programa 52-53 programa com pilha usando composição 777 programa de análise de dados 285, 287- 288 programa de análise de pesquisa entre alunos 270-271 programa de análise dos dados de pesquisa 285, 287-288 programa de classificação de uso geral usando ponteiros para funções 350- 351 programa de computador 52-53 Programa de consulta de crédito 735- 736 programa de contas a receber 756 Programa de contas bancárias 747-748 programa de conversão de medidas 393- 394 programa de craps 259-260 Programa de embaralhamento e distribuição de cartas 348 programa de folha de pagamento 55-56 programa de impressão de histograma 272-273 Programa de impressão de texto 66-67 programa de lançamento de dados 273- 274 Programa de lançamento de dados usando arrays em vez de switch 273-274 Programa de média da turma com repetição controlada por contador 111-112 Programa de média da turma com repetição controlada por sentinela 116-118 programa de processamento de arquivo 756 programa de processamento de crédito 740-741 programa de processamento de transações 745-746 programa deteste 615-616, 618, 620 programa editor 61. 63. 100-101 programa em pseudocódigo 100-101 programa estruturado 150-152 programa gerador de palavras a partir de números de telefone 757 programa interpretador 56 programa para jogar 199-201 programa para jogar pôquer 378-379 Programa para simular o jogo de craps 206-207 programa pré-processador 61, 63 programação baseada em objetos (OBP) 452 programação defensiva 131-132 programação em linguagem de máquina 380-381 programação estruturada 50-53, 56-60, 65-66, 81-82. 100-103, 146-147, 396, 479-480, 87-879 programação genérica 917-919. 921- 922, 1000-1001, 1055-1056 programação orientada a objetos (OOP) 51-53, 56-57. 65-66. 82-83. 155-156, 192-193, 363-364,401-402.452, 564-565, 565-567, 583-584. 589-590, 608-609 programação polimórfica 630-632 programação sem goto 101-103 programador 52-53 programador de computador 52-53 programas com múltiplos arquivos- fonte 872-874 programas grandes 190 programas tradutores 55-56 Programmer’s Source 1054-1055 projeto 84 projeto de programa 104-105 projeto Green 57-58 Projeto Mac 63-64 Projeto Mac do MIT 63-64 projeto orientado a objetos (OOD) 81- 82, 155-156, 159-160, 186, 188, 298- 299, 363-3 64, 396, 432-434, 465-466 projetos 874 proliferação de classes 584-585 promoção 118-119 prompt 7 1-72, 116-118, 868-869 prompt de linha de comando 868-869 1092 ÍNDICE remove copyif 928-929, 960-961, 963 removeif 928-929, 960-961 removendo o atributo “const” 1008- 1009 “removidos pela máscara” 816-817 rend907-908, 921-922, 933-934 rendimentos 178-179 repetibilidade da função rand 203-204 repetição 102-104, 154-156 repetição controlada por contador 110- 112, 126-128, 219-220 repetição controlada por sentinela 113- 116 repetição definida 110-111 repetição indefinida 114-115 repetindo código 192-193 replace 901-902, 928-929, 963 replace_copy 928-929, 963-965 replace_copy_if 928-929, 963- 965 replaceif 928-929, 963 representação de dados 480-481 representação de membros de dados 428-429 representação de um baralho em um array bidimensional 345-346 representação gráfica de um algoritmo 101- 103 representação gráfica de uma árvore binária 780-781 representação interna de um string 542-543 representação numérica de caracteres 139- 140 requisitos 64-65, 84, 159-160 requisitos do sistema 159-160 reset 986-987 resize 898-899 resolução de sobrecarga 683-684 restaurar o estado de um stream para bom 665-666 resto após divisão inteira 74-75 restrição 164 Restrições 164 retângulo 302-304 retângulo com cantos arredondados 236 reticências 870-871 reticências (. .) em um protótipo de função 868-869 retirada de lista encadeada com recursividade 220-221 retirar da fila 48 1-482 retirar um nodo de uma lista 772-773 Retornando uma referência a um membro de dados private 429- 430 retornar para a fase de edição 63 retornar um resultado 196-197 retornar um resultado inteiro 194-195 retornar um valor 67-68 retornar um valor de um construtor 417, 420 retorno do carro ( \r ) 68-69, 825, 827-828 retumando valores a partir de funções 534-535 reutilização 155-156, 192-193, 336-337, 564, 683-684 reutilização de software 56-57, 60-61, 68-69, 155-156, 192-193, 405-406, 564,583-585,592,621-622,680- 681, 683-685 reutilizado 83-84 reutilizando componentes 60-61 reutilizar 405-406, 583-584 “reutilizar, reutilizar, reutilizar.” 83-84, 405-406, 760, 917-918 reverse 928-929, 937, 97 1-975 reversecopy 928-929, 974-976 reverseiterator 92 1-923, 927, 933-934 rfind 900-901 Richards, Martin 56 Ritchie, D. 56 Rogue Wave 60-61 rotação de um disco ou de uma fita 639 rotate 928-929, 985-986 rotatecopy 928-929, 985-986 rótulo 211-212 rótulo case 137, 140-141, 21 1-212 rótulo de ação 237-23 8 rótulo especificado em um comando goto 878-879 rótulos em uma estrutura switch 211- 212 RTTI 564, 568-569, 1004, 1013-1014 Rumbaugh, James 84 runtimeerror716-717 rvalue (“valor à direita”) 150-152, 226- 227, 53 1-532, 534-535, 927 s saída antecipada de um laço 144-145 saída com buifer 640-641 saída com stream 640-641 saída de arquivo 640-641 saída de caracteres 64 1-642 saída de inteiros 641-642 saída de letras maiúsculas 641-642 saída de ponteiros 64 1-642 saída de tipos de dados padrão 641-642 saída de valores em ponto flutuante 64 1-642 saída de variáveis char * 644-645 saída na tela 66-67, 803 saída não-formatada 641-642 saída padrão 868 saída para um string na memória 199- 201 saída sem buifer 640-641 saídas acumuladas 72-73 sair 237-238 sair de um laço 186, 188 sair de um programa 709-7 10 sair de uma estrutura profundamente aninhada 87 8-879 sair de uma função 68-69 “sair fora” em qualquer extremidade de um array 524-525 salta o resto de uma estrutura switch 144- 145 salta o resto do código no laço 145-146 Scott, Kendall 84-85 search 929-930 searchn 929-930 seção “administrativa” do computador 53-54 seção de “almoxarifado” do computador 53-54 seção de “expedição” do computador 53-54 seção de “recebimento” do computador 52-53 seção de inicialização do for 134-135 Seção especial Construindo seu próprio computador 380-381 Seção especial - Construindo seu próprio compilador 796 “seção industrial” do computador 53-54 second 945-946 seek get 735 seek put 735 seekp 735, 742-746 segunda passagem do compilador Simple 803 segundo refinamento 114-115, 121-122, 346-347 segurança 430-431 seleção 102-104, 152-155 seleção dupla 154-155 seleção simples 154-155 selecionar um substring 545-546 semente 204-205 “sneakernet” 54-55 seno 192-193 seno trigonométrico 192-193 sensível a maiúsculas e minúsculas 70- 71, 109-110 separação em funções 52-53 Separando a interface e a implementação da classe Time 409- 410 separando um programa em funções 192-193, 22 1-222 separando unidades léxicas em strings 356-357 separar a interface da implementação 408-409 separar as palavras de uma sentença 793-794 ÍNDICE 1093 sequência 102-104, 151-152, 154-155, 971-974, 985-986 seqüência da saída 923-924 seqüência de entrada 923-924 seqüência de escape 68-70, 179-180, 642-643 seqüência de escape com barra invertida (\)68-69 seqüência de escape de alarme (‘a’ 68-69, 827-828 seqüência de escape de tabulação 179- 180 seqüência de inteiros 183-184 seqüência de mensagens 366 seqüência de números aleatórios 203- 204 seqüências de bits 727-729 seqüências de caracteres 739-740 série de Fibonaeci 217-218 servidor de arquivos 54-55 set 9 19-920, 926-927, 942-943, 946, 985-986 <set> 200-201, 92 1-922, 943-944, 946 setdifference 976-978 setintersection 976, 978-979, 981 setnewhandj.er 699-700, 713- 714 setsyrnmetricdifference 976, 978-979, 981 setterminate 704-705, 7Ut-7U9 setunexpected 709-710, 716-717 setunion 976, 978-979, 981 set< double, less< double>> 946-947 seta 96-97, 105-106, 109-110 setiosflags 119-120, 137, 348 setiosflags (ios: left) 137 setjump 699-700 setprecision 119-120,652-653 setprecisiori(2) 135-136 setw 137,263-264, 348, 356-357, 522- 523, 654-655, 658-659 Shakespeare, William 390-391 short 142-143, 198-199 short int 142-143 showpoint 657-658, 664-665 SIGABRT 875-876 SIGFPE 875-876 SIGILL 875-876 SIGINT 875-876 signal para capturar eventos 1? inesperados 875-876 SIGSEGV 875-876 SIGTERM 875-876 Silicon Graphics Standard Templare Library Programmer’s Guide 1000- 1001, 1055-1056 símbolo de ação 101-103 símbolo de acrescentar na saída (») 868-869 símbolo de composição 162-163 símbolo de decisão 102-105 símbolo de redirecionamento da saída> 868-869 símbolo de redirecionamento de entrada <868 símbolo elipse 10 1-103 símbolo pequeno círculo lO 1-105 símbolo pequeno losango 238 símbolo retângulo 101-106, 109-110, 132-133, 302-304, 565-566 Simpletron Machine Language (SML) 388-389, 760-761, 796, 797-798, 803-805 Simula 59-60 Simulação A tartaruga e a lebre 379-3 80 simulação 299-300, 365, 382-383, 485- 486 simulação de embaralhamento e distribuição de cartas 345-346, 348, 808,811-812 simulação de embaralhamento e distribuição de cartas de alto desempenho 811-812 simulação de supermercado 793-794 simulador 159-160, 234-235 simulador de computador 382-383 simulador de elevador 396 simulador de vóo 635-636 simulador do Simpletron 388-389, 760- 761. 797-798, 803, 805-806 simulador em software 155-156 sin 192-193 sinais padrão 875-876 sinal 875-876 sinal de atenção interativo 875-876 sinal de percentual (%) (operador módulo) 74-75 sinal interativo 876-877 sinal justificado à esquerda 657-658 sinal mais (+) indicando visibilidade pública 43 2-434 sinal mais 660-661 sinal menos (-) indicando visibilidade privada 432-434 sinking sort 28 3-284 sinônimo 322-325 sintaxe de inicial ização de membros 485 sintaxe de inicializador de membro 456- 457 sistema acionado por menu 353-354 sistema de contas a receber 729-730 sistema de folha de pagamento 635-636 sistema de gerência de banco de dados (DBMS) 727-729 sistema de numeração binário 814-815, 833-834 sistema de numeração com base 10 192-193, 657-658 sistema de numeração com base 16657- 658 sistema de numeração com base 8 657- 658 sistema de numeração decimal (base 10) 657-658, 832-834 sistema de numeração hexadecimal 825 sistema de numeração octal (base 8) 65 1-652, 657-658, 832-833 sistema de ponto de venda 739-740 sistema de reserva de companhias aéreas 312, 739-740 sistema de software em camadas 611- 612 sistema de um banco 739-740 sistema operacional 53-56, 356-357, 732-733 sistema operacional orientado a objetos 611-612 sistemas baseados no Microsoft’s Windows 54-55 sistemas compatíveis com o IBM PC 654-655 sistemas de processamento de transações 739-740 sistemas operacionais de memória virtual 58-59 Site Cygnus na Web 1054-1055 site da Web 50-51 site da World Wide Web 65-66 site na Web da Quadralay Corpo ration 105 1-1052 sites na Web relacionados com a STL 1000, 1055-1056 size 920-92 1, 932-933, 953-954, 973- 974, 986-987, 989-990 sizet 336-337, 740-741 sizetype 922-923 sizeof 336-338, 406-407, 468-469, 742-746, 76 1-762, 834-835, 859-860 sizeof nomeDeArray 336-337 Smalltalk 56-57, 565-566 SML 381, 797-798 sobrecarga de destruidores 420-421 sobrecarga de função 229-230, 401- 402, 573, 639, 868-869 sobrecarga de operador unário 523-5 24 sobrecarga de operadores 72-73, 230- 231, 400-401, 516, 639, 814-815 sobrecarregado 643-644 sobrecarregando « e » 230-231 sobrecarregando 72-73, 229-230, 401- 402, 516, 680 sobrecarregando funções gabarito 683- 684 sobrecarregando o + 51 8-5 l9 sobrecarregando o + 518-5 19 sobrecarregando o operador binário += 523-524 1094 INDICE sobrecarregando o operador de chamada de função O 545-546, 556-557 sobrecarregando o operador de inserção em stream 750-75 1 sobrecarregando o operador de pós- incremento 551-552, 546-547 sobrecarregando operadores 230-231 sobrecarregando operadores binários 523-524 sobrecarregando operadores de inserção em stream e extração de stream 520- 521 sobrecarregando operadores de prédecremento e pós-incremento 547- 548 sobrecarregando um operador de atribuição 518-519 sobrecarregar o operador « 400-40! sobrecarregar o operador de adição (+) 5 16-5 17 sobrecarregar o operador de igualdade 400-40! sobrecarregar o operador unário 523- 524 sobrecarregar uma função membro 406- 407 sobrecarregar uma função membro const com um versão não-const 452-453 sobrecarregou um operador como uma função não-membro, não-friend 519-520 sobrescrevendo 575-577 Sobrescrevendo membros de classe base em uma classe derivada 573-574 sobrescrevendo uma função 573, 575- 577 sobrescrever 608-609, 615, 619-620 sobrescrever uma função virtual pura 622, 624-625 software 50-53 software comercial 5 8-59 software confiável 878-879 software de alta qualidade depurado 564 software de layout de página 354-355 software embalado em plástico 583-584 software paraa STL 1000-1001. 1056 solicitação de término enviada para o programa 875-876 solução iterativa 2 19-220 solução recursiva 2 19-220 soma dos elementos em um array 269- 270 soma recursiva de dois inteiros 220-221 somar os elementos de um array recursivamente 220-221 somatório com for 134-135 sort 937, 939-940, 968, 970, 985-986 splice 937, 939-940 .spool de impressão 778 spool para disco 778 sqrt 191-193 srand 203-206 srand ( time ( O ) ) 205-206 stable_partition 928-929, 985 stablesort 985-986 stack 684-685. 9 17-920, 926-927, 950-953 Stack< double > 686-688, 777 stack<jnt> 686-688 Stack<T> 686-688 Standard Template Librarv Online Reference Home Page 1000-1001, 1055-1056 Standard Template Librarv Programmer’s Guide 1000-1001, 1055- 1056 Standard Template Library with BorlandC++ 1001-1002, 1056 static 208-211,227-228,873-874, 881-883 staticcast (coerção com verificação de tipo durante a compilação) 127-128, 148-149, 264- 265 staticcast 118-119, 139-140, 1005-1008 staticcast< DerivedCJ.asse *> 1007-1008 std narnespace 1010-1012 std: :bad_exception 716-717 std: :cin70-72 std: :cout66-68 std: :endl72-73 Stepanov, Alexander 917-918, 10001001, 1055-1056 STL 629-630, 917-918 strcat 357-359, 544-545, 873-874 strcmp 357-360, 873-874 strcmp para comparar strings de caracteres 545 strcpy 357-358, 543-545 strcspn 834-836 stream de bytes 639 stream de caracteres 67-68 stream de entrada 645-646, 648-649 stream de entrada padrão (cm) 639- 640 stream de entrada padrão 85 8-859 stream de erro padrão sem buffer 639- 640 tream de saída 935-936 stream padrão de erro com buffer 639- 640 stream padrão de erros (cerr) 63 strerror 842-843 <sstream> 199-201, 907-908 <stack> 200-201, 921-922, 951-952 <stdexcept> 199-201, 716-717 <stdio . h> 200-201 <stdlib . h> 200-201 <string . h> 200-201 <string> 199-201, 890 string 343-344, 354-355, 544-545. 808 string462-465, 890-891, 919-920 string concatenado 544-545 string constante 354-355 string de caracteres 67-68, 263-264, 273-274 string de caracteres interno 543-544 string de saída 641-642 string é um ponteiro constante 355-356 string literal 7 1-72, 274-275, 354-356 string nulo 740-741 string sendo separado em “unidades léxicas” 36 1-362 string terminado por nulo 274-275, 345- 346, 644-645 string vazio 897, 899 string: constiterator 906- 907 string: :npos 900-901 strings baseados em ponteiro 354-355 strings char * no estilo de C 904-905 strings como objetos completos 263- 264, 354-355 strings como objetos de classe completos 452 strings no estilo de C 904-905 strlen 358, 362-363 strncat 3 57-359 strncmp 357-360 strncpy 357-358 Stroustrup, B. 56-57. 59-60, 680, 691, 1052- 1053 strpbrk 834-837 strrchr 834-837 strspn 834-838 strstr 834-838 strtod 829-830, 832-833 strtok 357-358, 361-362 strtol 830-834 strtoul 830-831, 833-834 struct 396-397, 727-729, 740-741, 760. 808. 880-88! subárvore direita 785-7 87, 794-795 subárvore esquerda 780-781, 785-787, 794-795 subclasse 565-566 subconj unto de objeto 565-566 subobjeto 1027-1028 subproblema 214 subscrito 262-263 subscrito através de um vector 936 subscrito de array fora dos limites 697- 698 subscrito de linha 293-294 subscrito fora do intervalo válido 936 subscritos de arrays 332-333. 342-343, 703-704 subscritos de colunas 292-293 substantivos 59-60, 160, 161, 186, 188, 234-235 1096 ÍNDICE tipo do ponteiro this 468-469 tipo parametrizado 694-695 tipo size t 336-337 tipos de argumentos corretos 194-195 tipos de dados primitivos 480-48 1 tipos de exceções da STL 936 tipos de retorno corretos 194-195 tipos definidos pelo usuário 83-84 <time . h> 200-20 1 tolerância a falhas 697-699 tolower 825-827 top 951-953, 955 topo 114-115 topo de uma pilha 760, 774-775 Torres de Hanói 256-25 8 Torres de Hanói com recursividade 220- 221 total 110-111, 114-115, 121-122,209- 210 total acumulado 114-115 toupper 825-827 trabalhador 190-191 trabalhador tarefeiro 185-186 trabalhadores comissionados 185-186 trabalho 53-54 tradução 55-56 traduzir 61,63 transação 756 transferência de controle 101-103 transform928-929, 965-966, 968, 970 transição 23o-237 transição de estado 236-23 7 Transmission Control Protocol 63-64 transmitir com segurança 182-183 transporte (vai um) 55 1-552 trapezóide 565-566 tratador 702-703 tratador de exceção 697-698, 700-701, 704-705 tratador de exceção com void * 705 tratador de falha de new 713 tratador de interrupção 356-357 tratador de new 713-714 tratador de sinais 876-877 tratador void * 705 tratadores de exceção procurados em ordem 704-705 tratamento de erro 697 tratamento de exceções 199-201, 697 tratamento de sinais 876-877 Tratando arrays de caracteres como .strings 275-276 travessia recursiva de um labirinto 220- 221 Tree<int> 784-785 triângulo reto 182-183, 185-186 Triplas de Pitágoras 185-186 true 77-78, 102-110, 128-129, 215- 216. 534 trunca a parte fracionária de um double 198-199 truncar 74-75, 118-119.462-465,730- 731 tutoriais para a STL 1000, 1055-1056 tutorial de C++ 1050-1051 typedef 810-811,890,907-908,921- 922, 944-945, 948-949 typedefs em contêineres de primeira classe 922-923 typeid568-569,716-717, 1013-1015 <typeinfo> 199-201, 1014-1015 typename 232-233, 680-681 u UAL 53-54 Um ambiente típico de C++ 6 1-62 Um exemplo de chamada por referência 225-226 Um exemplo de escopos 212-213 Um exemplo simples de tratamento de exceção com divisão por zero 700- 701 Um objeto const deve ser inicializado 268-269 um para dois 162-163 um para um 162-163 Um programa de adição 70-71 Um programa de análise de pesquisa entre alunos 270-27 1 Um programa que imprime histogramas 272-273 Um programa simples com pilha de dados 775-776 Um programa simples de pilha de dados usando composição 777 Uma classe Array com sobrecarga de operadores 525-526 Uma classe de números complexos 556- 557 Uma classe huge integer 559-560 Uma classe String com sobrecarga de operador 536-537 UML 8 1-82, 84 UML Distilled Second Edition 84-85 UML Partners 84-85 underflowerror 716-717 unexpected 708-709. 716-717 unidade central de processamento (CPU) 5 3-54 unidade de aritmética e lógica (UAL) 53-54 unidade de compilação 1012-1013 unidade de disco 639 unidade de memória 53-54, 824-825 unidade de memória endereçável 824- 825 unidade de memória secundária 53-54 unidade de processamento 52-53 unidade Ixica (token) 357-358, 361- 362, 800-803 unidade lógica 52-5 3 unidades “isoladas’ 54-55 Unzfied Modeling Language (UML) 81- 82, 84 union 879-881 union anônima 88 1-882 union sem construtor 880-881 urlique 928-929, 937, 97 1-975 uniquecopy 928-929, 974-976 United States Department of Defense (DOD) 58-59 University of Illinois at UrbanaChampaign 63-64 UNIX 54-56, 59-61, 63, 139-140, 654- 655, 698-699. 732-733, 87 1-872, 874-876 unsetf(ios: :skipws) 657-658 unsigned 199-200, 204-205, 875-876 unsigned char 199-200 unsigned int 204-205. 336-337 unsigned long 199-200. 216-217, 833-834, 875-876 unsigned long int 199-200, 216- 217 unsigned short 199-200 unsigned short int 199-200 upcasting 1026-1027 upperbound 942-943, 945-946, 978-981 usa um 585 Usando a estrutura do/while 143-144 Usando a função membro f iii e o manipulador setfill 660-661 Usando a função swap para permutar dois strings 896-897 Usando argumentos de linha de comando 87 1-872 Usando argumentos default 228-229 usando arrays em vez de switch 273- 274 Usando as funções exit e atexit 874 Usando atof 830-83 1 Usando atoi 830-831 Usando atol 83 1-832 Usando campos de bits para armazenar um baralho 822-823 Usando classes base virtual 1028- 1029 Usando funções da biblioteca padrão para executar um heapsort 981-982, 984 Usando funções gabarito 682-683 Usando funções membro get. put e eof 647-649 Usando funções set e get 425-426 Usando goto 879-880 Usando inicializadores de objetos membro 461-462 unidade de saída 5 3-54 ÍNDICE 1097 Usandoisdigit, isalpha. isainuin e isxdigit 826 Usando islower, isupper, tolower e toupper 826-827 Usando isspace, iscntrl, ispunct, isprint e isgraph 828-829 Usando listas de argumentos de tamanho variável 869-870 Usando memchr 84 1-842 Usando memcmp 841-842 Usando memcpy 839-840 Usando mernmove 840-841 Usando memset 842-843 Usando o comando break em uma estrutura for 145-146 Usando o comando continue em uma estrutura for 145-146 Usando o indicador ios: showbase 66 1-662 Usando o indicador ios: : uppercase 663-664 Usando o manipulador de siream endi 642-643 Usando o operador de resolução de escopo unário 229-230 Usando o operador sizeof para determinar tamanhos de tipos de dados padrão 338 Usando o ponteiro this 468-469 Usando operadores de igualdade e relacionais 79-80 Usando os manipuladores de stream hex, oct, dec e setbase 652- 653 Usando os operadores AND sobre bits, OR inclusivo sobre hits, OR exclusivo sobre bits e complemento sobre bits 817-818 Usando os operadores de deslocamento sobre bits 819-820 usando pipe 868-869 Usando quatro métodos para referenciar elementos de arrays 342-343 Usando strcat e strncat 358-359 Usando strchr 834-835 Usando strcmp e strncmp 359-360 Usando strcpy e strncpy 358 Usando strcspn 835-836 Usando strerror 843-844 Usando strlen 362-363 Usando strpbrk 836-837 Usando strrchr 836-837 Usando strspn 837-838 Usando strstr 838-839 Usando strtod 832-833 Usando strtok 36 1-362 Usando strtol 833-834 Usando strtoul 834-835 usando subscritos 940-941 usando subscritos com um ponteiro e um deslocamento 342-343 usando subscritos duplos para arrays bidimensionais 556-557 Usando tratamento de sinais 876-877 Usando um construtor com argumentos default 418 Usando um função mime para calcular o volume de um cubo 223- 224 Usando um gabarito de função 23 3-234 Usando um inicializador de membro para inicializar uma constante de um tipo de dado primitivo 457-458 Usando um iterador para enviar um string para a saída 906-907 Usando um membro de dados static para manter uma contagem do número de objetos de uma classe 475-476 Usando um objeto ostringstream alocado dinamicamente 908-909 Usando uma classe Time com objetos const e funções membro const 453-454, 456-457 Usando uma função utilitária 4 14-415 Usando uma referência inicializada 226-227 Usando uma union anônima 882-883 usar explicitamente o rótulo private 412 USENIX C++ Conference 680 using 79-80, 87-88 usingnamespace 1010-1012 uso de buffer 667-668 uso explícito de sizeof 471, 473-474 uso explícito do ponteiro this 468- 469 usos indevidos de sobrecarga 517-5 18 utilitário make 874 <utiiity> 200-201 v vaarg 868-87 1 vaend 868-87 1 vaiist 868-87 1 va_start 868-87 1 vaiarray 919-920 validação 907-908 validação de dados 413-414 validar uma chamada de função 197- 198 valor 7 1-72 valor”lixo” 112-113 valor absoluto 192-193 valor booi faise 147-148 valor bool true 147-148 valor da direita 150-152 valor da esquerda 150-152, 322-324 valor de deslocamento 205-206 valor de indicador 114-115 valor de ponto fixo 137 valor de ponto flutuante em notação científica 663-664 valor de sentinela 114-115, 117-118, 139- 140 valor de uma variável 73-74, 208-209 valor default para um argumento 228 229 valor diferente de zero tratado como true 149-150 valor do sinal 114-115 valor fantasma 114-115 valor final de uma variável de controle 126-127, 132-133 valor indefinido 112-113,573 valor inicial de um atributo 236 valor inicial de uma variável de controle 126-127, 129-130 valor maximuxn 197-198 valor médio 286-28 8 valor posicional 181-182 valor temporário 118-119, 198-199 valores de face de cartas 345-346 valores de nodos duplicados 780-781 valores de ponteiros como inteiros hexadecimais 322-324 valores dos naipes de cartas 345-346 valores em ponto flutuante 119-120 valores mapeados 942-943 vaiuetype 92 1-923, 948-949 variáveis de classe static 474-475, 530-531 variável 70-71, 83-84, 100-101, 191193, 396-397 variável automática 209-210, 227-228, 774-775 variável com escopo de classe está oculta 406-407 variável com escopo de função 406-407 variável constante 267-270 variável contadora 112-113 variável de coerção visível no depurador 857 variável de controle 129-130 variável global 210-214, 228-229, 278- 279, 872-873, 1012-1013 variável local 191-193, 209-211, 213- 214, 33 1-332, 882-883 variável local automática 211-212 variável local static 211-212,214, 275-276, 957-958 variável não-inicializada 112-113 variável ponteiro 714-715 variável ponteiro static 210-211 varrendo imagens 53-54 VAX VMS 139-140, 732-733 vector 9 19-920, 926-927, 929-935, 950-955 <vector> 200-201, 921-922, 930-93 1 vendedor de software independente (ISV) 56-57, 408-409, 583-584. 621- 622 109S INDICE verbos 186, 188, 298-299, 366-367, 396-397 verbos em uma especificação de sistema 83-84 verificação de argumentos desativada 222-223 verificação de erro 190-19 1, 697 verificação de intervalo 4 13-414, 524- 525, 892-893, 929-930 verificação de intervalo de subscrito 480-481 verificação de limites 272-273 verificação de limites de array 272-273 verificação de sintaxe 804-805 verificação de tipo 680-681, 857-859 verificação de validade 424-425, 428- 429 verificador de ortografia 852-85 3 verificar recursivamente se um string é um palíndromo 220-221, 317-318 versão const de operator [] 534- 535 vi 61, 63 vida de um objeto 533-534 vídeo 639 vídeo digital 639 vídeo 1/O 639-640 vinculação dinâmica 608-609, 615-616, vinculação estática 594-595, 608-609. 6 15-616, 618, 620-621, 629 vinculação tardia 62 1-622 violação de acesso 356-357, 9 18-919 violação de acesso à memória 918-919 violação de segmentação 875-876 violar o encapsulamento 564-565 virtual pura 61 1-613 virtual pura em classe base 622, 624-625 visibilidade private 43 2-434 visibilidade public 43 2-435 visualizando a recursão recursivamente 220-221 VMS 87 1-872 void * 340-341, 647-649, 705, 839- 840 void 221-222 volatile 874 875, 1007-1008 voltas para o primeiro 55 1-552 volume de um cubo 223-224 voz digital 639 vtable 629-630, 63 2-633 w walkthrough do código 485 wchart 890 what 702-703, 712 width 654-655 WindowsNT 698-699 Wirth, Nicklaus 58-59 World Wide Web 52-5 3, 64-65 write 650-651. 740-743 www. ansi org 65-66 www.cygnus.com/misc/ wp/ 65- 66 www. deitei, com 50-53 www.omg.org 84-85 x Xerox’s Pato Alto Research Center (PARC) 56-57 xor 1016-1017 xor 164 xor_eq 1016-1017 z ZDNet University 1050-1051 zerar bits 665-666 O inicial 66 1-662 Ox inicial e OX inicial 66 1-662 zeros após a vírgula 119-120, 191-193, 657-658 zeros e uns 727 618, 620-622, 629-630, 632-633 Fim da obra.