Índice emissivoulysseso.com/livros/ip/indice.pdf · instrução vazia, como 174 Índice remissivo...

22
735 Símbolo || (barra vertical dupla) disjunção, operador de 119 & (e comercial) endereço, operador de 250 && (e comercial duplo) conjunção, operador de 119–120 '' (apóstrofos) caractere constante, delimitadores de 113 "" (aspas) array com string, uso em iniciação de 438–439 string constante, delimitadoras de 87 string constante, no interior de 445 * (asterisco) acesso, operador de 515–516 indireção, operador de 252–253 multiplicação, operador de 81 ponteiro, definidor de 250 */ (asterisco barra) comentário, delimitador de 126 /* (barra asterisco) comentário, delimitador de 126 // (barra barra) comentário, delimitador de 126 / (barra) divisão, operador de 81, 117 \ (barra inversa) caractere de escape 113–114 # (cerquilha/tralha) diretiva, início de 133 {} (chaves) bloco, delimitador de 173 string, iniciador de 438 variável estruturada, uso em iniciação de 377, 511–512, 521 ^ (circunflexo) especificador de formato, usado em 587 [] (colchete) xl array, usado em acesso a 374 array, usado em definição de 374 especificador de formato, usado em 587–588 indexação, operador de 515–516 string, usado em acesso a 441–442 <> (colchete angular) cabeçalho, delimitador de 129 (diferente) diferente (pseudolinguagem), operador 83 : (dois pontos) case, usado com 191 default, usado com 191 rótulo, usado como declarador de 198 != (exclamação igualdade) diferente, operador 118 ! (exclamação) negação, operador de 119 = (igualdade) atribuição, operador de 121 igualdade (pseudolinguagem), operador de 83 == (igualdade dupla) igualdade, operador de 118 ?: (interrogação dois pontos) condicional, operador 200 >= (maior igual) maior ou igual, operador 118 > (maior) maior do que, operador 83, 118 (maior ou igual) maior ou igual (pseudolinguagem), operador 83 ++ (mais duplo) incremento, operador de 125–126 + (mais) soma, operador de 81, 117 <= (menor igual) menor ou igual, operador 118 < (menor) menor do que, operador 83, 118 (menor ou igual) menor ou igual (pseudolinguagem), opera- dor 83 () (parênteses) acesso, operador de 515 conversão explícita, usados em operador de 124–125 expressão, usados em 82, 86, 116 função, usados com xl, 255, 260, 269 vazios 257, 270 . (ponto) acesso, operador de 512, 515 estrutura, usado em acesso a 512–515 ; (ponto e vírgula) declaração, terminador de 173 for, usado com 179, 181 instrução, terminador de 173 instrução vazia, como 174 ÍNDICE REMISSIVO • Procure um identificador pelo seu no- me e não pela categoria à qual ele per- tence. Por exemplo, não tente encontrar função printf(); em vez disso, procure diretamente printf(). • Número de página em negrito significa que a respectiva informação procurada está em nota de rodapé.

Upload: others

Post on 01-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

735

Símbolo

|| (barra vertical dupla) disjunção, operador de 119& (e comercial)

endereço, operador de 250&& (e comercial duplo) conjunção, operador de 119–120'' (apóstrofos) caractere constante, delimitadores de 113"" (aspas)

array com string, uso em iniciação de 438–439string constante, delimitadoras de 87string constante, no interior de 445

* (asterisco)acesso, operador de 515–516indireção, operador de 252–253multiplicação, operador de 81ponteiro, definidor de 250

*/ (asterisco barra) comentário, delimitador de 126/* (barra asterisco) comentário, delimitador de 126// (barra barra) comentário, delimitador de 126/ (barra) divisão, operador de 81, 117\ (barra inversa) caractere de escape 113–114# (cerquilha/tralha) diretiva, início de 133{} (chaves)

bloco, delimitador de 173string, iniciador de 438variável estruturada, uso em iniciação de 377, 511–512, 521

^ (circunflexo) especificador de formato, usado em 587[] (colchete) xl

array, usado em acesso a 374

array, usado em definição de 374especificador de formato, usado em 587–588indexação, operador de 515–516string, usado em acesso a 441–442

<> (colchete angular) cabeçalho, delimitador de 129≠ (diferente) diferente (pseudolinguagem), operador 83: (dois pontos)

case, usado com 191default, usado com 191rótulo, usado como declarador de 198

!= (exclamação igualdade) diferente, operador 118! (exclamação) negação, operador de 119= (igualdade)

atribuição, operador de 121igualdade (pseudolinguagem), operador de 83

== (igualdade dupla) igualdade, operador de 118?: (interrogação dois pontos) condicional, operador 200>= (maior igual) maior ou igual, operador 118> (maior) maior do que, operador 83, 118≥ (maior ou igual) maior ou igual (pseudolinguagem), operador

83++ (mais duplo) incremento, operador de 125–126+ (mais) soma, operador de 81, 117<= (menor igual) menor ou igual, operador 118< (menor) menor do que, operador 83, 118≤ (menor ou igual) menor ou igual (pseudolinguagem), opera-

dor 83() (parênteses)

acesso, operador de 515conversão explícita, usados em operador de 124–125expressão, usados em 82, 86, 116função, usados com xl, 255, 260, 269vazios 257, 270

. (ponto)acesso, operador de 512, 515estrutura, usado em acesso a 512–515

; (ponto e vírgula)declaração, terminador de 173for, usado com 179, 181instrução, terminador de 173instrução vazia, como 174

Índice Remissivo

• Procure um identificador pelo seu no-me e não pela categoria à qual ele per-tence. Por exemplo, não tente encontrar função printf(); em vez disso, procure diretamente printf().

• Número de página em negrito significa que a respectiva informação procurada está em nota de rodapé.

736 | Índice Remissivo

% (porcentagem)especificador de formato, usado em 130–131resto de divisão, operador de 81–82, 117–118

_ (subtraço) xli, 110- (traço)

inversão de sinal, operador de 81, 117subtração, operador de 81, 117

-- (traço duplo) decremento, operador de 125–126-> (traço seguido por maior)

acesso, operador de 515–516estrutura, usado em acesso a 512–513

... (três pontos)elipse, usados como xlparâmetro, usados como 571

, (vírgula)separador de declarações, usada como 201separador de parâmetros, usada como 201, 255, 260, 269separador de variáveis em definições, usada como 120vírgula, operador 201–202

A

"a+b", modo de abertura de arquivo 561, 599.a, extensão de arquivo 54, 151"a", modo de abertura de arquivo 560"a+", modo de abertura de arquivo 560, 599"a+t", modo de abertura de arquivo 561, 599"ab", modo de abertura de arquivo 561abertura de arquivo 557–561, 606–607aborto de programa 118

array, causado por acesso a 375, 393–394divisão por zero, causado por 118exit(), por meio de 522–524, 527, 542, 562–563memória, causado por corrupção de 393–394memória, causado por violação de 394, 465, 656ponteiro nulo, causado por 254resto de divisão por zero, causado por 118string constante, causado por alteração de 439, 441, 464–465voluntário 407–408, 522–524, 527, 542, 562–563

abrir janela de comando aqui (comando do sistema Windows) 55

acentuação, uso de xxxix–xlacesso a conteúdo de variável 252acesso aleatório a arquivo 591acesso direto a arquivo 591, 596–599adição 81–82, 117–118adição de ponteiro com inteiro 382–383alargamento, conversão de 124algoritmo 74

acompanhamento de 66análise de problema resolvido por meio de 93–95arquivo, para leitura sequencial de 595–596auxílio visual para acompanhar 66caso de entrada de 74conceito de 74construção de 78, 93–99correto 74

dividir e conquistar para, abordagem de construção 75–77entrada de 74Euclides, de 366existência de 74fluxo de execução de 87funcionalmente equivalente a outro 74implementação de 97incorreto 74legibilidade de 91–93ordenação, de 409projeto de 93–99pseudocódigo e 78receita culinária e 74, 75–77refinamento de 95–96refinamentos sucessivos de 75–77saída de 74subalgoritmo e 77subproblema e 75teste de 96–97

alinhamento de dados na tela 157–158, 604–605alocação de memória 650

definição de tipo e 510dinâmica 650estática 121, 650subdimensionamento em 650superdimensionamento em 650typedef e, uso de 510

alocação dinâmica de memória 650funções de 650–654heap e 656–657ponteiro genérico usado em 654–655teste de 657–658

alusão de função 269–270ambiente de trabalho 52–55ambiente integrado de desenvolvimento (IDE) 51–52anagrama 506análise de problema 93–95aninho de bloco 173, 282–283, 328aninho de comentário 126aninho de estrutura 513–515, 525aninho de estrutura de controle 88, 182, 188–190, 200aninho de if-else 188–190, 331aninho de laço de repetição 182, 199aninho de união 522–524aninho em registro variante 522–524ano bissexto, checagem de 210–212ANSI C, padrão 110apóstrofos (símbolo) 113argc, parâmetro 460argumento de linha de comando 460–461argv, parâmetro 460aridade 80aritmética de ponteiros 382–385arquivo 556

abertura de 557–561, 606–607acesso direto a 591, 596–599armazenado 556

Índice Remissivo | 737

arquivo (continuação)atualização de registro de 617–621buffer associado a 557cabeçalho, de 128, 687–688comparação de 615–617cópia de 609–611criado via teclado 603–604erro em, indicador de 557erro em processamento de 564–567escrita em 592–596escrita para leitura, passagem de 599fechamento de 561–564filtro de 603final de, indicador de 557-fonte 48, 58–61, 135, 138formato de 556inclusão de 129, 688indexação de 591indicador de posição de 557, 596–599, 611–615leitura em 592–596leitura para escrita de, passagem de 599makefile 696número de linhas de 607–609-objeto 48posicionamento em 596–599, 600, 611–615programa, de 687stream e xlitamanho de 611–615texto para binário, conversão de 621–624

arquivo binário 556criação de 621–624escrita em 592–595escrita na tela de registro de 624–627leitura em 592–596, 624–627número de registros de 627–629

arquivo de texto 556arquivo binário, conversão em 621–624atualização de 617–621conversão para binário de 621–624criação via teclado de 603–604escrita em 592leitura em 588–590, 592, 658–665, 667–670linha de, salto de 667–671linha em, leitura de 658–665, 667–671linhas de, número de 607–609registro de 607registro em, atualização de 617–621

array 374acesso com índice de 374acesso com ponteiro de 385–387acesso sequencial de 375–376busca em 536–539, 539–544bytes, de 591caracteres, de 438–439, 446–449, 586–590constante simbólica e 376const, qualificado com 389, 390, 397–398corrupção de memória em acesso a 393–394

definição de 374dimensão de 398–399duração automática, de 377–379duração fixa, de 377elemento de 374, 398endereço de 386enumeração, indexação com 528escrita na tela de 375, 378, 391, 395, 399estruturas, de 536–539, 539–544indexação de 374–376indexação por meio de enumeração de 528índice de 374índice de, acesso com 374iniciação de 376–379iniciador designado de 525inversão de 411–413maior elemento de 400–401média de elementos de 400–401menor elemento de 400–401multidimensional 398–400número mágico e 376ocorrência de valor em 401–404ordenação de 409–411parâmetro de função, como 389–393permutação de 413–417ponteiro, acesso com 385–387ponteiro e 385–387ponteiros, de 460–461retorno de função, como 394–397sizeof e 380–382size_t e 381–382static, qualificado com 377strings, de 460–461subdimensionamento de 650superdimensionamento de 650troca de posição de elementos de 415–416unidimensional 398zumbi e 394–397

arredondamentoconversão de tipo, em 123conversão de tipo sem 123, 260printf(), efetuado por 352–354

ar (Unix), comando utilitário 695, 696ASCII, código 111aspas (símbolo)

array com string, uso em iniciação de 438–439string constante, como delimitadoras de 87string constante, no interior de 445

assembler 47, 377assembly, linguagem 47associatividade 81, 116, 683asterisco (símbolo)

acesso, operador de 515–516comentário, usado em 126indireção, operador de 252–253multiplicação, operador de 81ponteiro, definidor de 250

738 | Índice Remissivo

"at", modo de abertura de arquivo 561atoi(), função 466atribuição 79

C, em 121–122conversão de 123–124dependência de implementação causada por 122efeito colateral em 122entre estruturas 512expressão de 121instrução de 79, 121linguagem algorítmica, em 79–80operador de 121–122

auto, qualificador de tipo 277avaliação de expressão 80

aritmética 81–82curto-circuito, com 120lógica 84–85, 119–120relacional 83, 118–119

avaliação de operandos, ordem de 116, 120, 122, 201–202, 464–465

avaliação de parâmetros, ordem de 464–465

B

banco de dados da dinastia Tudor 601barra inversa (símbolo) 113–114barra (símbolo)

comentário, usada em delimitador de 126divisão, operador de 81, 117

barra vertical (símbolo) 119base e expoente 217–248base numérica, representação em 113, 123, 350, 352, 572, 576biblioteca 54, 128–130

cabeçalho de 128componente de 128função de xxxii, xliii, 128módulo de 128padrão 53, 128–129

biblioteca LeituraFaciL 54, 129, 132–133cabeçalho da 688–690compilação da 694–696função global da 690–694função local da 688–690implementação da 687–694integração da 697–698justificativa para a 685–687

bit de sinal 379bits, sequência de 46, 123bloco de comentário 127–128bloco de instruções 172–173bloco de memória 593–595bloco, escopo de 282–283bolha, ordenação pelo método da 409–411booleano (pseudolinguagem), tipo 80, 82–84Borland C++, compilador/IDE xxxviiibreak, instrução 194–196, 199bubble sort, método de ordenação 409–411

buffer 567, 578–580buffering 567bug 50busca

array, em 536–539, 539–544string, em 454–455, 455–458

busca bináriadepuração, usada em 349–350raiz quadrada com, cálculo de 299–302

busca sequencialarray, em 406, 536–539, 539–544

C

%c, especificador de formato 130, 572.c, extensão de arquivo 142-c, opção de compilação 150.cpp, extensão de arquivo 142C11, padrão 110C89, padrão 110C90, padrão 110C99, padrão 110cabeçalho 128ctype.h 461–464inclusão de 130leitura.h 132, 687–688math.h 129stdio.h 130–133stdlib.h 202, 254, 466, 523, 650string.h 442time.h 202

cabeçalho de função 255–257calculadora dirigida por menu 304–306calloc(), função 651–652camelo, notação de xlcampo 510, 601

acesso a 512–515alternativo 522–524estrutura, de 510, 511, 522–524fixo 522–524indicador 523iniciação de 511–512, 524–525registro, de 510, 601registro variante, de 522–524variante 522–524

caractere 111–112, 113classificação de 461–463codificação de 111–112constante 113–114escape, de 113–114gráfico 111identificador, permitido em 110letra maiúscula/minúscula de, conversão em 463–464nulo 438representação de 111representação gráfica, com 113representação gráfica, sem 113

Índice Remissivo | 739

caractere (continuação)sequência de escape, representado como 113–114terminal 438transformação de 463–464

caracteres, array de 438–439, 446–448, 448–449, 586–590caracteres, código de 111–112caracteres, conjunto básico de 111–112caracteres, conjunto de 111–112caracteres, sequência de 87carregador (programa) 51casas decimais escritas por printf() 352case, parte de instrução switch 190–194caso de entrada 74casting 124–125Celsius para Fahrenheit, conversão de 205–207cerquilha (símbolo) 133chamada de função 117, 130, 172, 260–269

alusão e 269–270atribuição, em 260expressão, usada em 260instrução isolada, como 260main() 137, 460–461passagem de parâmetro em 261–269, 390–394printf() 130, 197–198, 349–350retorno de valor em 260

char * (ponteiro para char), tipo 383, 439, 439–442, 444char, tipo 112chave criptográfica 475chaves (símbolo)

array, usadas em iniciação de 377, 438bloco, usadas em delimitação de 173

circunflexo (símbolo) 587Clang, compilador xxxvii, 397, 696clearerr(), função 567C, linguagem xxxi, 110

ANSI da, padrão 110biblioteca padrão da 128–129C++, comparação com 142compatibilidade histórica da 110compilador da xxxviii, 53conjunto básico de caracteres da 111extensão void main() da 461história da 110ISO da, padrão 110língua franca em programação, como xxxipadrão da 110portabilidade na 110pré-processador da 129programa simples em, estrutura de 137

C++, linguagem 58, 142CodeBlocks, IDE 53–54, 55–64

abreviação (abbreviation) no 345–347auto indent do, opção de configuração 139backspace unindents do, opção de configuração 139brace completion do, opção de configuração 139build do, comando 61–64build log do, painel 61–68

compile current file do, comando 63–64compiler de, opção de configuração 56–58configuração do 56–58, 138–139default code do, opção de configuração 140–142editor de programa do 60–61endentação no 139indent options do, opção de configuração 139–140linker usado pelo, configuração do 57–58molde de programa no 140–142painéis do 55–56programa executável no, construção de 61–64programa-fonte no, criação/edição de 58–61settings do, opção de configuração 56, 139show indentation guides do, opção de configuração 139show spaces do, opção de configuração 139smart indent do, opção de configuração 139TAB indents do, opção de configuração 139TAB options do, opção de configuração 139TAB size in spaces do, opção de configuração 139tabulação no, configuração de 138–139toolchain executables do, opção de configuração 56use TAB charactere do, opção de configuração 139

codificação 135–137código de caracteres 111–112código de substituição direta 475código espaguete 332código-fonte xxxviii, 48, 58–61, 135, 138código morto 199–202código-objeto 48colação de caracteres 450

LC_COLLATE e, constante 453localidade e 452–453ordem de 450setlocale() e, função 453strcmp() e, função 450–452strcoll() e, função 452–454

colchete angular (símbolo) 129colchete (símbolo) xl

array, usado em acesso a 374array, usado em definição de 374especificador de formato, usado em 587–588indexação, usado como operador de 515–516string, usado em acesso a 441–442

colisão de identificadores 284Collatz, conjectura de 306–308, 367–368coloração de sintaxe 52comentário 68, 126–128

algoritmo, em 91aninhado 126bloco, de 127–128, 333–334caixa de 336conteúdo de 333–334delimitador de 126depuração, usado em 350didático xlii, 127informação comum em 127–128irrelevante 335

740 | Índice Remissivo

comentário (continuação)linha, de 335–336modelo de 336–337momento de inclusão de 91propósito de 127redundante 335remoção de trecho de programa, usado em 350

comparação de arquivos 615–617comparação de números reais 297–299, 355comparação de strings 449–454comparação entre inteiro com sinal e inteiro sem sinal 471–472compatibilidade em conversão de tipo 122–124, 252compatibilidade entre compiladores 110compatibilidade entre ponteiros 252, 262–264compatibilidade entre tipos primitivos 123compatibilidade histórica 110compilação de programa xli, 142-c de, opção 150erro de 63, 66, 143–146, 347construção de programa executável e xliligação e 150–151-o de, opção 150-pedantic de, opção 57-std=c99 de, opção 57

compilador 48, 51Clang xxxvii, 397, 696mensagem de advertência emitida por 146–148mensagem de erro emitida por 144–146, 148–149

compile, programa 142componente de biblioteca 128computador 46–47concatenação de strings 114, 448–449condição de erro 564–567condição de exceção 50

chamada de função, em 259processamento de arquivo, em 564–567, 600

condição de parada 183–184atingida 183nunca atingida 185satisfeita 183zero, resultante sempre em 184

condicional, expressão 87, 89–90, 183–184, 331condicional, operador 200–201, 452conectivo lógico 80confiabilidade 50conflito de identificadores 284conjunção lógica 83–85, 119–120conjunto básico de caracteres 111conjunto de instruções 46console xxxix, 51constante 113–115

caractere 113–114enumeração, de 526–530inteira 113lógica 83ponteiro 388–389real 113

string 114–115, 439variável 387–389

constante simbólica 133const e 388#define e 133definição de 133–134notação para escrita de 329número mágico e 330–333

const, qualificador 387constante simbólica e 388conteúdo apontado, aplicado a 388–389elemento de array, aplicado a 389parâmetro, aplicado a 390, 391, 397–398, 448, 465, 517,

531ponteiro, aplicado a 388–389string constante, aplicado a 439variável, aplicado a 387–389

construtor de tipo 515contador (variável) 181contagem, laço de 181–182contagem, variável de 176conteúdo de memória 252

buffer, de 561, 567, 574–580constante 387–389, 398, 439indeterminado 280, 377parâmetro, de 264–269ponteiro, referenciado por 252–253reinterpretação de 263–264variável, de 46, 79, 121

continuação de instrução 93continuação de string constante 114continue, instrução 196–200conversão de Celsius em Fahrenheit 205–207conversão de string em número 466–468conversão de tipo 122–125

aritmética usual 124alargamento, de 124atribuição, de 123–124automática 122–124casting 124–128explícita 124–128hierarquia de 124implícita 330–333passagem de parâmetro, em 262–264regra de 124retorno de função, em 259–260

conversão entre letra maiúscula e minúscula 463cópia de arquivo 609–611cópia de array 392–393cópia de parâmetro 264–269cópia de string 446–448corpo de estrutura de controle 175corpo de função 257–258corpo de laço 175corpo vazio 176–178, 258corrupção de memória 393–394

array, em acesso a 374–376

Índice Remissivo | 741

corrupção de memória (continuação)fgets(), usando 589gets(), usando 588–590scanf(), usando 586strcat(), usando 449strcpy(), usando 447

criação de programa-fonte 58–61criptografia 475–478[CTRL]+[C], combinação de teclas 65, 177[CTRL]+[D], combinação de teclas 570[CTRL]+[J], combinação de teclas 345[CTRL]+[Z], combinação de teclas 570ctype.h, cabeçalho 129, 461–464curto-circuito de operador 116, 120

D

%d, especificador de formato 130, 572dados de aluno, processamento de 530–533data, leitura e validação de 363–366, 483–486DBL_DIG, constante 353debugger 51declaração de função 269–270declaração de variável 80decremento, operador de xlii, 125–126default code em CodeBlocks 141–142default, parte de instrução switch 191, 331#define, diretiva 133–134definição de array 374definição de constante simbólica 133–134definição de estrutura 510–511definição de função 255–260definição de ponteiro 250–252definição de tipo 510definição de união 520–521definição de variável 120–121

const, com uso de 387iniciação, com 121objetivo de 120static, com uso de 278–279, 281–282

definidor de tipo 251, 515–516array, de 374enumeração, de 526estrutura, de 510–511função, de 255ponteiro, de 251união, de 520–521

De Morgan, leis de 184dependência de implementação 110

arquivos abertos simultaneamente, do número de 559código de caracteres, de 114dependência de compilador versus 110EOF, de 564expressão com 122expressão sem 201FILE, da estrutura 557int, da largura do tipo 112

NULL, de 254número mágico, causada por 330

dependente de compilador 110depuração de programas 347–350depurador 51despedida de programa 196, 338, 488desvio condicional 87

C, em 186–194if-else 186–190linguagem algorítmica, em 87–89se-então-senão 87–88selecione-caso 88–89switch-case 190–194

desvio incondicional 87break 194–196, 199C, em 194–200código morto e 199–200continue 196–200goto 198–200, 332–333instrução inacessível e 199–200linguagem algorítmica, em 90–91pare 90–91

desvio múltiplo 190–194diferente (símbolo) 83dígito, classificação de caractere como 461–463dígito, conversão em número inteiro de 472–474dígito em código de caracteres 450dígito, uso em identificador de 110–111dígito verificador 473diretiva 129disjunção lógica 83–85, 119–120dispositivo periférico 556

arquivo e 556buffer associado a 561, 567, 578–580entrada, de 51, 556, 568impressora 558padrão 567saída, de 51, 556stream e 556

dívida, calculo de 207–208dividir e conquistar, abordagem 75–77divisão 81–82, 117–118

inteira 117–118por zero 118real 82, 117–118resto de 81, 117–118

dois pontos (símbolo)case, usados com 191default, usados com 191operador condicional, usados em 200rótulo, usados como declarador de 198

DOS, sistema operacional 54–55, 64–65(double), operador de conversão 124, 351double * (ponteiro para double), tipo 252double, tipo 112do-while, instrução 178–179, 194, 196, 199download xxxvii–xxxviii, 52, 54, 66, 128

742 | Índice Remissivo

duração de variável 277–280automática 277, 279–280fixa 278–280iniciação de acordo com 279–280

E

%e, especificador de formato 130%E, especificador de formato 130e (pseudolinguagem), operador de conjunção lógica 83–85EBCDIC, código de caracteres 111e comercial (símbolo)

conjunção, usado em operador de 119–120endereço, usado como operador de 250

economia de memória 264, 520–521, 663edição de programa-fonte 58–61editor de programa 51, 60–61efeito colateral 116, 122, 125–126eficiência de programa 50

aprendizagem de programação e 50assembly e 47equivalência funcional e 96goto e, uso de 332–333indexação de arrays e 387

elemento de array 374acesso de 374–376, 386–387iniciação de 377–379, 399, 525

else, parte de instrução if 186–190encerramento de execução de programa

dirigido por menu 194–195normal 64–65, 137–138

encerramento de laço de repetição 183acidental 331break, por meio de 194–196, 199do-while 178enquanto-faça 89faça-enquanto 90for 179, 181–182goto, por meio de 332–333infinito 184–186instrução pare, por meio de 90–91while 175

endentação 91automática 52coerência em uso de 92compilador e 176corpo de função, em 257espaços recomendados em 331estrutura de controle, em 330ilusória 187instrução if-else aninhada, em 189–190instrução rotulada, em 198linguagem algorítmica, em 91recomendação de estilo para 92, 93, 189–190, 198, 257,

330, 331tabulação e 138–140

endereço 46–47array, de 386operador de 250retorno de 394–397string constante, de 439unidade de memória, de 46variável, de 79, 250

#endif, diretiva 688enquanto-faça (pseudolinguagem), instrução 89–90[ENTER], tecla 61

buffering e 567leitura de dados com, encerramento de 568, 574–578'\n', representada como 574–578quebra de linha, como representação de 574–578remoção de buffer de caractere correspondente a 578–580remoção de string de caractere correspondente a 590string vazio e 442

entrada, caso de 74entrada de algoritmo 74, 93–95entrada, meio de 86, 568, 573–574, 589enum, definidor de tipo 526enumeração 526–530EOF, constante 564–567, 570EP (exercício de programação) xxxvi, 66–67época de referência em programação 202equação de segundo grau, programa de 94–99Eratóstenes, crivo de 671–682erro de programação 50

arquivo, em processamento de 564–567classificação de 347compilação, de 63–64, 143–144corriqueiro 143–144execução, de 347, 349ligação, de 149–151lógica, de 153, 347, 394, 394–397, 464–466overflow, devido a 123prática de 151–153precisão, de 123, 297–299sintaxe, de 63–64, 143–144truncamento, de 352–353zumbi, causado por 394–397

escoamento de memória 657, 664escopo 280–284

arquivo, de 281–282bloco, de 282–283conflito de identificador e 284função, de 282, 283programa, de 280–281sobreposição de 284

escreva (pseudolinguagem), instrução 86escrita de dados em arquivo binário 592–595, 621–624escrita de dados em arquivo de texto 592escrita de dados na tela 130–132

array, de 375, 378, 391, 395, 399caractere, de 132, 592estrutura, de 531linguagem algorítmica, em 86–87

Índice Remissivo | 743

escrita de dados na tela (continuação)string, de 130–132, 592–593tabela, em forma de 537, 624–627

espaço em branco, classificação de 461espaço em branco em string 481–483espaço em branco horizontal em programa 92espaço em branco vertical em programa 92espaguete, código 332especificador de formato 130–132, 571–573

%5.2f (família printf ) 131%.16f (família printf ) 352%c (família printf ) 130%c (família scanf ) 572%d (família printf ) 130%d (família scanf ) 572%E (família printf ) 130%f (família printf ) 130%g (família printf ) 130%G (família printf ) 130%i (família printf ) 130%i (família scanf ) 572%lf (família scanf ) 572%n[^] (família scanf ) 587%n[] (família scanf ) 587–588%ns (família scanf ) 586%s (família printf ) 130%s (família scanf ) 572, 586%u (família printf ) 382

estilo de programação 50, 67–68chaves, para uso de 331–332comentário, para escrita de 333–337constante simbólica, para escrita de 329–333desvio incondicional, para uso de 331–332documentação de função, para 333–337endentação, para 330, 331espaço em branco, para uso de 121, 337estrutura de controle, para escrita de 330–332expressão, para escrita de 328–333goto, para uso de 332–333identificador, para escrita de xl, 329–333if-else, para uso de 331instrução, para escrita de 328–333interação com usuário, para 337–338jargão e, para uso de 328–333número mágico e 330–333operador de igualdade, para uso de 331string constante, para escrita de 328–333switch-case, para uso de 331

estrutura de controle 87, 172bloco de instrução e 91break 194–196, 199código espaguete e 332–333código morto e 199–200continue 196–200desvio condicional 87, 174, 186–194desvio incondicional 87, 174, 194–200desvios múltiplos, de 190

do-while 178–179endentação e 91, 330enquanto-faça 89–90estilo para escrita de 330–332expressão condicional e 183–184faça-enquanto 90fluxo de execução e 172, 328for 179–182goto 198, 332–333if-else 186–190instrução inacessível e 199–200pare 90repetição, laço aninhado de 199repetição, laço de 87, 174–186se-então-senão 87–88seleção, de 190selecione-caso 88–89switch-case 190–194while 174–178

estrutura (variável) 510aninhada 513–516arquivo, escrita em 621–624atribuição de 512campo de, acesso a 512–513definição de 510–511iniciação de 511–512parâmetro de função, como 516–517retorno de função, como 517–519teclado, leitura via 531tela, escrita na 531, 537, 624–627

Euclides, algoritmo de 366exclamação (símbolo)

diferença, usada em operador de 118negação, usada como operador de 119

.exe, extensão de arquivo 62execução de programa 54–55, 64–65exemplo de programação xxxv–xxxvi, 65exercício de programação (EP) xxxvi, 66, 66–67exercício de revisão, resolução de xxxvi, 66–69exit(), função 522–524, 527, 542, 562–563expoente 100, 113exponenciação 217–219expressão 79, 116

aritmética 80, 81–82booleana 83compilador, resolvida pelo 380complexa 79condicional 87, 89–90, 183–184, 331constante 191controle, de 183–184função em, uso de 85, 260lógica 80, 83–85relacional 80, 82simples 79*str++ 446–508

expressão telefônica, tradução de 539–544extensão da linguagem C void main() 461

744 | Índice Remissivo

extensão de arquivo.a 54, 151.c 142–143.cpp 142–143.exe 62.h 128.o 62

extensão do código ASCII 112extern, qualificador 269–270

F

%f, especificador de formato 130fabs(), função 298faça-enquanto (pseudolinguagem), instrução 90Fahrenheit, conversão de Celsius em 205–207falso (pseudolinguagem), constante lógica 82fatoração de número inteiro positivo 221–223fator de escala 382fatorial, cálculo de 258, 259, 272, 295fclose(), função 561fechamento de arquivo 561–564feof(), função 564–567ferramenta de desenvolvimento 53

Borland C++ xxxviiiClang xxxvii, 397, 696GCC 53GDB 53MinGW 53

ferror(), função 564–567fflush(), função 567fgetc(), função 592fgetc(), função de biblioteca 591fgets(), função 588–590fgets(), função de biblioteca 591Fibonacci, sequência de 101–103, 362–363, 406–409FILENAME_MAX, constante 559, 606–607FILE, tipo 557filtro de arquivo 603final de arquivo 557, 564–567final de linha 114final de string 438float.h, cabeçalho 353fluxo de execução de programa 87, 172, 328fopen(), função 557–559, 561FOPEN_MAX, constante 559for, instrução 179–182

aninhada 182–183array, usada em acesso sequencial de 375–376break, usada com 194, 199continue, usada com 196–200expressão da, omissão de 181iniciação de variável em 182instrução vazia em, uso de 182jargão usado com 185laço de contagem, usada como 181–182laço infinito, usada como 185

operador vírgula, uso com 201–202while, relação com 180

formatação em memória 604–605formato de argumento passado para programa 460formato de arquivo 556formato de comentário 127formato de endentação 92formato de inclusão de cabeçalho 129formato de instrução em linguagem algorítmica 86–91fprintf(), função 564–565fprintf(), função de biblioteca 592fputc(), função 592fputc(), função de biblioteca 591fputs(), função 592–593fputs(), função de biblioteca 591fragmentação de heap 656fread(), função 593–595fread(), função de biblioteca 591free(), função 652–653fscanf(), função de biblioteca 592fseek(), função 567, 596–599fseek(), função de biblioteca 592, 596–600ftell(), função 597–599ftell(), função de biblioteca 592, 596função 254–255

alusão de 269apresentação de 333–334benefício obtido com uso de 255biblioteca, de xxxii, xliii, 128cabeçalho de 255–257cabeçalho de, formato de 255chamada de 260–269corpo de 257–258corpo vazio, com 258declaração de 269definição de 255–260denominação de 257documentação de 333–337escopo de 282escopo de arquivo, com 281–282, 688–690forma de 255global, com escopo 280, 690–694local, com escopo 688–690nome de 257parâmetro de 256parâmetro de, declaração de 256parâmetros de, lista de 256parâmetro variante, com 571posicionamento em arquivo, de 596–599projeto de 260protótipo de 270retorno de 255–256, 394–397retorno de, tipo de 255–256static, definida com 281zumbi e retorno de 394–397

fwrite(), função 593–595fwrite(), função de biblioteca 591

Índice Remissivo | 745

G

%g, especificador de formato 130%G, especificador de formato 130GCC, compilador xxxvii, 53

compilação do, opção de 61, 150gcc.exe e, programa executável 61ligação do, opção de 61linker associado ao 61

GDB, depurador 53gerador de número aleatório 202getchar(), função 64, 568–571, 573–578gets(), função 588–590goto, instrução 198, 332–333

código espaguete, como origem de 332código espaguete, sem 285, 418, 484, 585, 690, 691eficiência da 332–333laço de repetição aninhado, usado em 199paranoia causada por 332–333rótulo usado com 198

grupo de precedência de operador 81

H

.h, extensão de arquivo 62hardware xxxviiHCI (Human-Computer Interaction) 337heap 656–657história da linguagem C 110história de linguagens de programação 46–47hospedeiro, sistema 137

I

%i, especificador de formato 130IDE (ambiente integrado de desenvolvimento) 51–52identificador 110

caractere permitido em 110conflito de 284maiúscula e minúscula em, diferenciação de 111notação para escrita de xl, 121, 257, 329–333, 510ocultação de 283regra de formação de 110–111representativo 92reservado 111restrição de denominação de 110significativo 92tamanho de 111

IEEE 754, padrão 350if-else, instrução 186–190#ifndef, diretiva 688igualdade e atribuição, confusão entre 188, 331igualdade em C 118igualdade em linguagem algorítmica 83igualdade (símbolo)

atribuição, usada como operador de 121diferença, usada em operador de 118

igualdade, usada como operador de 83igualdade, usada em operador de 118maior ou igual, usada em operador 118menor ou igual, usada em operador 118

implementação da linguagem C 110implementação de número real 350–354implementação, dependência de 110implementação de programa 97–107, 134–137#include, diretiva 129inclusão de cabeçalho 129incompatibilidade de tipos 252incremento, operador de xlii, 125–126indexação 374

arquivo, de 591, 596array, de 374, 387, 399byte em arquivo, de 597, 615–617linha em arquivo, de 599operador de 515registro em arquivo, de 591, 596

indireção xliindireção, operador de 252–253iniciação 121

array com string, de 438–439array, de 376–379duração de variável e 279–280estrutura aninhada, de 514estrutura, de 511–512explícita 280implícita 280iniciador designado, por meio de 524–525ponteiro com string, de 439ponteiro, de 251união, de 521variável constante, de 388–389variável, de 121variável de duração automática, de 279variável de duração fixa, de 279

iniciador 377array, de 377designado 524–525estrutura, de 511ponteiro, de 251string, de 438união, de 521

inserção de string em string 488–491inspeção de programa 136instalação da biblioteca LeituraFaciL xxxviii, 54, 68–69,

697–698instalação de ambiente de trabalho 52–55instalação de CodeBlocks 53–54instalação de MinGW 53instalação de open command window here 55instrução 46–47, 172

ilegal 144inacessível 199–202muito extensa, divisão de 93rotulada 198

746 | Índice Remissivo

instrução (continuação)rótulo de 198seleção, de 190–194sem efeito 172tipo de 172vazia 174

instrução vazia 174acidental 176–178, 331intencional 182, 189, 201

instruções, bloco de 172–173instruções, conjunto de 46instruções, sequência de 172–173(int), operador de conversão 124–125, 351, 471interação com usuário 51

laço infinito, com 194–196, 275–277menu, dirigida por 194–196, 273programa com argumento de linha de comando, de 488recomendação para 337–338, 488

interação dirigida por menu 194–196, 273–277calculadora com 304–306confirmação sim/não em 274–275leitura de opção em 273–274menu em, apresentação de 273

interação humano-computador 337interpretador 48–49interrogação (símbolo)

operador condicional, usada em 200int, maior valor do tipo 212–214INT_MAX, constante 212–214int * (ponteiro para int), tipo 251int, tipo 112inversão de sinal 117isalnum(), função 461isalpha(), função 461isblank(), função 461isdigit(), função 461islower(), função 461ISO 8859, padrão 112ISO da linguagem C, padrão 110ispunct(), função 461isspace(), função 461, 568–571isupper(), função 461

J

jargão 328–333jogo de palavras 665–671juro, cálculo de 207–208

K

Knuth, Donald 298

L

laço de contagem 181–182laço de repetição 87

aninhado 182–183

C, em 174–186condição de parada de 183–184do-while 178–179enquanto-faça 89–90faça-enquanto 90for 179–182infinito 89, 184–186linguagem algorítmica, em 89–90while 174–178

largura de tipo 112LC_COLLATE, constante 453–454LC_CTYPE, constante 463ld, linker GCC 150–170LeCaractere(), função 132, 690–691legibilidade de algoritmo 91–93legibilidade de programa 49

comentário em, importância de 333–337constante simbólica e, uso de 330–333documentação em, importância de 333–337função em, influência do uso de 255goto e, uso de 332–333notação para identificadores em, importância de 121número mágico e 330

leia (pseudolinguagem), instrução 86LeInteiro(), função 132, 584, 691leis de De Morgan 183–184leitura árabe 388–389leitura de dados 86

linguagem algorítmica, em 86sequencial em arquivo 592–648string, de 658–665

leitura de dados em arquivo binárioacesso direto, com 592–596sequencial 624–629

leitura de dados em arquivo de texto 588–590, 592, 658–665, 667–670

leitura de dados via teclado xlii, 132–133, 568aluno, de 530–532buffering, com 573–580caractere, de 132, 568–571data, de 363–366, 483–486estrutura, de 530–533getchar(), usando 568–571laço de repetição em, uso de 580–585linha de texto, de 568, 658–665nome, de 468–470nota, de 354–355número de identificação, de 470–472número inteiro, de 132, 418, 685–687número natural, de 284–286número real, de 132, 571–573opção, de 273–274scanf(), usando 571–573string, de xlii, 442–443, 586–590, 658–665

leitura.h, cabeçalho 132LeOpcao(), função 273–274, 693–694LeReal(), função 132, 691–692

Índice Remissivo | 747

LeString(), função 442–443, 692–693letra maiúscula/minúscula, classificação de 461letra maiúscula/minúscula como opção de menu 193letra maiúscula/minúscula, comparando strings sem diferenciar

486–487letra maiúscula/minúscula, conversão entre 463–464letra maiúscula/minúscula, distinção entre 111letra maiúscula/minúscula em código de caracteres 450%lf, especificador de formato 572liberação de memória

dinâmica 561, 652–653, 656–657estática 277, 394, 396–397, 656

libleitura.a, arquivo 54, 694–696ligação 64

erro de 149–151-lleitura de, opção 57-lm de, opção 58parâmetro, de 261–264

limits.h, cabeçalho 212LimpaBuffer(), função 578–580, 688–689linguagem 46–47, 78

algorítmica 78alto nível, de 47assembly 47baixo nível, de 47C++ 58, 142estruturada 332máquina, de 46nativa de computador 46Pascal xxxi, 111, 258, 264

linguagem algorítmica 77–78bloco de instruções em 91constante simbólica em 134declaração de variável em 80endentação em 91entrada de dados em 86–87estrutura de controle em 87–91função em, chamada de 85saída de dados em 86subprograma em 270–272tipo de dado usado em 80

linha de comando, argumento de 337, 338, 460–461, 487–488linha de comando, invocação de compilador via 150linha de comando, invocação de linker via 142linha, leitura de 568–569, 658–682linhas de arquivo, número de 607–609linker 48, 51, 58, 142Linux, sistema operacional xli, 64lista

escrita na tela de 375, 378, 391, 395, 399lista de verificação 136-lleitura, opção de ligação 57-lm, opção de ligação 58loader 51locale.h, cabeçalho 453localidade 452–454

M

Mac OS X, sistema operacional xxxvii, 696main(), função 137, 459–461argc da, parâmetro 460argumento de linha de comando e 460argv da, parâmetro 460hospedeiro, relação com 459parâmetro, com 460–461portável da, uso 461programa com argumento e 460programa hospedado, uso em 137, 459protótipos da 459–460retorno da 137–138, 461return 0 pela, uso de 137–138void como tipo de retorno da 461

maior do que, operador 83, 118maior ou igual, operador 83, 118maior ou igual (símbolo) 83maior (símbolo)

acesso, usado em operador de 515–516estrutura, usado em acesso a 512–513maior do que, usado como operador 83, 118maior ou igual, usado em operador 118

maior valor do tipo int 212–214mais (símbolo)

incremento, usado em operador de 125–126soma, usado como operador de 81, 117

make, comando utilitário 695makefile, arquivo 695, 696malloc(), função 651manutenibilidade 49math.h, cabeçalho 129máximo divisor comum (MDC), cálculo de 289–291, 366MDC (máximo divisor comum), cálculo de 289–291, 366média de elementos de array 400–401mega-sena 417–420meio de entrada 86, 568, 573–580, 685–687meio de entrada padrão 568, 573–580, 685–687meio de saída 86, 130, 568meio de saída padrão 130, 568membro de estrutura 510memória 46

acesso inválido de 254alocação de 121, 277array em, representação de 374bloco de 591buffer e 567compartilhamento de 520conteúdo constante de 387–389, 439conteúdo de, acesso com ponteiro a 250–254, 382–388conteúdo de, interpretação de 120conteúdo de, reinterpretação de 263contiguidade em 593corrupção de 393–394definição de tipo e alocação de 510

748 | Índice Remissivo

memória (continuação)dispositivo periférico e, troca de dados entre 556, 593endereço em 250escoamento de 657, 664estrutura em, representação de 517, 520–521formatação em 605fragmentação de 656função de alocação de 650–654heap e 656instruções e dados em, armazenamento de 656liberação de 277parâmetro em, representação de 256, 265–269partição de 655–657pilha e 656stack e 656subdimensionamento de 650superdimensionamento de 650união em, representação de 520unidade de 46variável de duração fixa em, armazenamento de 656variável em, duração de armazenamento de 277–280,

377–379variável em, representação de 79violação de 465zumbi e 394–397

menor do que, operador 83, 118menor ou igual, operador 83, 118menor ou igual (símbolo) 83menor (símbolo) 83, 118menos unário 117mensagem de advertência 146–150, 348, 397, 465–466mensagem de despedida 196, 273mensagem de erro 144–146, 148–153mensagem de informação para usuário 213, 331, 337–338, 606mensagem de prompt 133, 337mensagem sobre propósito de programa 337menu, interação dirigida por 273–277, 304–306mingw32-make, comando utilitário (MinGW/DOS) 695MinGW, ferramentas de desenvolvimento 53mínimo múltiplo comum (MMC) 291–293MMC (mínimo múltiplo comum) 291–293mnemônico 47modo de abertura de arquivo 560–561"a" 560"a+" 560, 599"a+b" 561, 599"ab" 561"a+t" 561, 599"at" 561"r" 560, 598, 614, 618, 623, 664"r+" 560, 599"r+b" 561, 599"rb" 561"r+t" 561, 599"rt" 561"w" 560, 563, 618"w+" 560, 564, 599

"w+b" 561, 599"wb" 561, 594, 611, 623"w+t" 561, 599"wt" 561binário 560texto, de 560–561

módulo de biblioteca 128, 281ctype 463LeituraFaciL 54, 687–694stdio 130, 556, 600, 687stdlib 202, 466string 438

Molde.c, arquivo 141molde de programa em CodeBlocks 140–142monitor de vídeo 51montador 47multiplicação 81–82, 117multiplicação, tabuada de 361–362Murphy, lei de 600

N

'\n', sequência de escape 114não (pseudolinguagem), operador de negação 83–85negação lógica 83–85, 119–120, 183–184nome de arquivo 558, 559, 561nome de arquivo da biblioteca LeituraFaciL 54nome de arquivo de biblioteca GCC 151nome de array xl, 386nome de campo de estrutura 510–511nome de constante de enumeração 526–530nome de constante simbólica 329nome de função xl, 257nome de identificador xl, 110, 121, 329nome de localidade 453nome de parâmetro 257nome de parâmetro em alusão 269nome de programa-fonte recebido por programa 460nome de rótulo 198nome de tipo definido pelo programador 510nome de variável 79, 121nome de variável de contagem 328nome do linker GCC 150nome, leitura de 468–470nome mnemônico 48nome, ocultação de 283–284nome representativo 92, 94, 271, 329nomes, colisão de 284nomes, conflito de 284nome significativo 92, 94, 271, 329notação adotada neste livro xl, 121notação de número real 113, 130nota, leitura de 354–355%ns, especificador de formato 586NULL, constante 254

uso com time() 202numeração de linha de arquivo de texto 603–604

Índice Remissivo | 749

número aleatório 202, 214–215, 302–304, 417–420, 667–669número de identificação 470–472número de ponto fixo 350número de ponto flutuante xli, 350número inteiro

char e, tipo 112Collatz para, conjectura de 306–308, 367–368escrita de 130–131fatoração de 221–223fatorial de 258, 259, 272, 295Fibonacci, de 101–103, 362–363, 406–409ímpar 204–205int e, tipo 112leitura de 132, 284–286, 583–585, 691maior valor do tipo int 212–214ocorrência de dígito em 404–406par 204–205primo 286–289, 355–358, 356–358, 671–682separação em centena, dezena e unidade de 156–157sinal, sem 379

número mágico xlii, 330, 376número natural 284–286, 291, 355número primo 286–289, 355–358, 671–675número real xli

comparação de 297–299double e, tipo 112escrita de 130–132expoente de 113imprecisão de 350–354leitura de 132, 571–573mantissa de 113notação científica de 113, 130notação convencional de 113, 130ponto fixo, de 350ponto flutuante, de 350truncamento de 123, 352–354

número sem sinal 379

O

.o, extensão de arquivo 128-o, opção de compilação 150–151ocorrência de caractere em string 455–458ocorrência de constante simbólica em programa-fonte 133ocorrência de dígito em número inteiro 404–406ocorrência de letra em palavra 478–481ocorrência de string em string 454–455ocorrência de valor em array 401–404octal, base 113ocultação de identificador 283opção de compilação 61, 150opção de ligação 61open command window here (extensão do sistema MS

Windows) 55operação ilegal 118operador 79, 115

acesso, de 515–516

aridade de 80, 115aritmético 81–82, 117–118associatividade de 81, 116, 683binário 80, 115chamada de função, de 515condicional 200–201, 452conversão explícita, de 124–128curto-circuito de 116, 120decremento, de 125–126efeito colateral de 116, 122, 125–126incremento, de 125–126indexação, de 515indireção, de 252–253ordem de avaliação e 116ponto 512–513precedência de 85, 115, 683prefixo 125–126propriedade de 80–81, 115–116relacional 82–83, 118–119resultado de 80, 115seta 512–513sizeof 142–143, 280, 379–382sufixo 125–126ternário 115, 200, 452unário 80, 115vírgula 201–202

operador lógico 83, 119C, em 119–122conjunção 83–85, 119–120curto-circuito de 120disjunção 83–85, 119–120linguagem algorítmica, em 83–85negação 83–85, 119operando de 83–85, 119precedência de 119

operando 79, 115aridade e 115aritmético, de operador 117atribuição, do operador de 122com sinal e sem sinal juntos 381–382condicional, do operador 200conversão implícita e 123–124curto-circuito e 116, 120decremento, do operador de 125efeito colateral e 116, 122endereço, do operador de 253incremento, do operador de 125lógico, de operador 83–85, 119negativo em divisão inteira 117negativo em resto de divisão inteira 117ordem de avaliação de 116relacional, de operador 82, 118retorno de função como 256sizeof, do operador 379–380vírgula, do operador 201

ordem alfabética 450ordem de avaliação de operando 116

750 | Índice Remissivo

passagem de 261–269real 261referência de, passagem por 264saída, de 261valor de, passagem por 264variante 571

parênteses (símbolo)acesso, usados como operador de 515conversão explícita, usados em operador de 124–125expressão, usados em 82, 86, 92, 116função, usados em xl, 255, 260, 269redundantes 86, 92sizeof, usados com 379, 380vazios 257, 270

pare (pseudolinguagem), instrução 90–91partição de memória reservada para programa 656–657Pascal, linguagem xxxi, 111, 258, 264passagem de parâmetro 264

array multidimensional em, uso de 399–400array unidimensional em, uso de 390–393endereço de variável em, uso de 267–269, 518–519,

522–524, 655enumeração em, uso de 528–529estrutura em, uso de 516–517, 522–524ordem de avaliação em 464–465ponteiro em, uso de 267–269, 518–519, 522–524, 655referência, por 264, 267–269valor, por 264

pause, comando (DOS) 64-pedantic, opção de compilação 57pilha de execução 656PIS/PASEP, validação de 470–472plataforma 49ponteiro 250

aritmética de 382–385array com, relação de 385–387compatibilidade de 252constante 388–389constante, para 388–389decremento de 383definição de 250genérico 654–655incremento de 383indireção de 252–253inteiro com, soma de 382–383inteiro com, subtração de 383inválido 254NULL, com conteúdo 254nulo 254parâmetro, usado como 264–269subtração de 383

ponto decimal 113ponto e vírgula (símbolo)

declaração, usado como terminador de 173for, usado com instrução 179, 181indevido 176–178, 331

ordem de colação 450ordenação de array 409–411ordenação de inteiros 358–359ordenação de lista 409–411ordenação pelo método da bolha 409–411organizador prévio xliiiou (pseudolinguagem), operador lógico 83–85overflow 123, 212–214, 407–409

P

padrão IEEE 754 353padrão ISO 8859 112padrão ISO da linguagem C 110palavra-chave 111palavra-chave da linguagem C 111

auto 277break 194–196case 190–194char 112const 387–389continue 196–200default 191do 178–179double 112else 186–190enum 526extern 269–270for 179–182goto 198if 186–190int 112return 258–260sizeof 379–382static 278–279struct 511switch 190–194typedef 510union 520void 256while 174–178

palavra mnemônica 47palavra reservada 111parâmetro 256, 261

argumento e xliarray usado como xliiavaliação de, ordem de 464–466casamento de 261–264const, qualificado com xliconversão de 262declaração de 256–257entrada, de 261entrada e saída, de 261formal 261ligação de 261–264linha de comando, de 460–461modo de 261

Índice Remissivo | 751

ponto e vírgula (continuação)instrução, usado como terminador de 173instrução vazia, usado como 174

ponto fixo, número de 350ponto flutuante, número de xl, 350ponto, operador 512–513ponto (símbolo)

acesso, usado como operador de 515estrutura, usado em acesso a 512–515

porcentagem (símbolo)especificador de formato, usado em 130–131resto de divisão, usado como operador de 82, 117–118

portabilidade 49posicionamento em arquivo 596–599potências, tabela de 100pow(), função 85, 207PP (projeto de programação) xxxviipreâmbulo de exemplo/exercício de programação xxxviprecedência de operador 81, 683

aritmético 117–118aritmético, relacional e lógico 120decremento sufixo, de xliigrupo de 81incremento sufixo, de xliilógico 119relacional 118–119tabela geral de 683

precisão de número real 123, 298, 299, 352–354precisão, erro de 123, 298precisão, perda de 123pré-processador de C 129printf(), função 130–132

arredondamento efetuado pela 352aspas usando, escrita de 445cabeçalho necessário para 260casa decimal pela, escrita de 131, 352depuração, usada em 349–350operador condicional, usada com 452prompt, usada em 133protótipo da 571quebra de linha provocada pela 114, 444sequência de escape, usada com 114string de formatação da 130string, usada em escrita de 443–444valor retornado pela 130, 197

problema de programação, análise de 93–95procedimento 250processador 46–47processamento de arquivo 556

acesso direto, por 591, 596–599acesso sequencial, por 591, 592–596algoritmo para leitura sequencial em 595–596bloco, por 591, 593–595byte, por 591, 592caractere, por 591, 592formatação em memória, com 604–605

formatado 591linha, por 591, 592–593

programa 46–47, 93argumento, com 460console, baseado em 51, 64–65construção de, etapa de 93–99, 134–137depuração de 126, 146, 347–350DOS de, execução no sistema 64–65execução de 54–55, 64–65execução de, espaço de 655–657execução de, fluxo de 172, 328executável xli, 48, 61–64, 135–136, 142, 149–150-fonte xxxviii, 48, 58–61, 135, 138hospedado 137, 459inspeção de 136interativo 51melindroso 154–156minimalista xxxv, 65monoarquivo 137–142-objeto 48projeto de 93–99qualidade desejável em 49–50robusto 153–154simples 137standalone 48terminal, baseado em 51Unix de, execução no sistema 64Windows de, execução no sistema 64–65

programa, abordagem de construção de 75construir e consertar 67, 348dividir e conquistar 75–77, 93–99refinamentos sucessivos, de 75–77, 93–99tentativa e erro, por 348

programaçãoalto nível, de 64–72análise de problema de 93–95aprendizagem de 65–68auxílio visual para 66baixo nível, de 47conhecimento necessário em xxxiestruturada 332prática de 65–68tentativa e erro em, uso de 348

programa com argumento 460–461cálculo de tamanho de arquivo, para 611–615comparação de arquivos, para 615–617contagem de linhas de arquivo, para 607–609cópia de arquivo, para 609–611soma de valores inteiros, para 487–488

projeto de programação (PP) xxxviiprompt 133, 337propriedade de operador 80–81, 115–116

aridade 80, 115associatividade 81, 116, 683curto-circuito 116, 120efeito colateral 116, 122, 125–126ordem de avaliação de operandos 116

752 | Índice Remissivo

propriedade de operador (continuação)precedência 85, 115, 683resultado 80, 115

protótipo de função 270pseudocódigo 78putchar(), função 132puts(), função 444

Q

quadrado, desenho de 359–361quebra de linha 556

arquivo de texto de, contagem em 607–609arquivo de texto, em 556buffer de entrada padrão de, remoção em 578buffer de entrada padrão, em 574buffering de linha e 567espaço em branco, interpretada como 111, 114–115, 461linha sem incluir, lendo 658–665'\n', representada como 114printf(), provocada por 444puts(), provocada por 444sequência de escape, representada como 114string de, remoção em 590

R

"r+b", modo de abertura de arquivo 561, 599"r", modo de abertura de arquivo 560, 664, 667"r+", modo de abertura de arquivo 560, 599raiz quadrada, cálculo de 85, 187, 299–302rand(), função 85, 202, 214–215, 302"rb", modo de abertura de arquivo 561realloc(), função 653–658recomendação sobre

advertência, trato com mensagem de 146–148algoritmo, acompanhamento de 66algoritmo, implementação de 97–99, 134–137algoritmo, refinamento de 95–96algoritmo, teste de 96–97alocação dinâmica, teste de 657–658ambiente de desenvolvimento 53–54ambiente integrado de desenvolvimento (IDE) 53–54arquivo aberto para atualização, processamento de 599arquivo, fechamento de 564arquivo, preparo para processamento de 558arquivo, teste de erro de processamento de 566array como parâmetro formal, escrita de 390array como parâmetro real, uso de 394break, uso de 196buffer, esvaziamento de 578–580chaves, uso de 176–178compilador errado, prevenção de uso de 142–143condição de parada, escrita de 183–184constante de enumeração, escrita de 526constante simbólica, uso de 329const, uso de 389, 391, 397–398

continue, uso de 198default de switch, uso de parte 331endereço, retorno de 395, 397enumeração, uso de 530EOF, uso de 566erro de ligação, trato com 149–151erro de sintaxe, trato com 143–146, 148–149escoamento de memória, prevenção de 657espaço em branco, uso de 121, 337estilo de programação 67–68, 121estrutura de controle, escrita de 330–333exemplo de programação, exploração de 66exercício de programação, resolução de 66–68exercício de revisão, resolução de 66expressão condicional, escrita de 183–184feof(), uso de 566ferror(), uso de 566free(), uso de 652, 657função, chamada de 464–465função de alocação dinâmica, uso de 657–658função de processamento de arquivo, uso de 600função, omissão de tipo de retorno de 256goto, uso de 332–333IDE (ambiente integrado de desenvolvimento) 53–54identificador, escrita de xl, 329–333if-else, aninho de 189–190instrução vazia, uso de 174interação com usuário 337–342, 580–585laço de repetição infinito, escrita de 185–186leitura além de final de arquivo, teste de 566leitura com laço de repetição 581–590leitura de string 586, 588, 589, 658–665memória, prevenção de escoamento de 657mistura de tipos 122, 382operador vírgula, uso de 201–202ponteiro genérico, uso de 655ponteiro, iniciação de 254problema, análise de 93–95programa, acompanhamento de 66programação, aprendizagem de xxxvii, 65–68programação, estudo de xxxviiprograma executável, construção de 135–136programa minimalista, estudo de 65programa, teste de 136realloc(), uso de 654retorno de endereço 394, 397rewind(), uso de 599scanf(), leitura com 572sequência de estudo deste livro xxxviistring como parâmetro formal, escrita de 444string como parâmetro real, uso de 465tipo de retorno de função, omissão de 256usuário, interação com 337–338, 580–585

redirecionamento de entrada/saída 603–604refinamentos sucessivos 75–77registro, campo de 601

Índice Remissivo | 753

registro de arquivo 596, 601atualização de 617–621contagem de 627–629escrita na tela de 624–627texto para binário de, conversão de 621–624

registro variante 522–524reinterpretação de conteúdo de memória 263–264reinvenção da roda 68, 344, 530remoção de arquivo 562–564remoção de caractere no buffer de entrada padrão 578–580remoção de espaço em branco em string 481–483remoção de indicação de erro em arquivo 566–567remoção de quebra de linha em string 590representação de caractere 111, 113–114representação de número real 113, 352representação em memória

array, de 374estrutura, de 517, 520–521parâmetro, de 256, 265–269união, de 520variável, de 79

representação gráfica de caractere 113resto de divisão inteira 81, 117resultado (propriedade de operador) 80, 82, 115retorno de função 258–260

array como 535comentário, descrito em 271endereço, de 531–532enumeração, de constante de 533estrutura, de 517–519expressão, usado em 260return e, instrução 258–260scanf(), de 571, 581tipo de 255–256valor. com 259–260valor. sem 258–259void, do tipo 258–259zero 137–138zumbi 518–519

return 0, instrução 138return, instrução 258–260reusabilidade 50reúso de código xlii, 68, 77, 344–346rewind(), função 566, 599rewind(), função de biblioteca 596Ritchie, Dennis 110robustez 50, 132–133, 153–154, 580–585, 600, 686rotina 250rótulo 198

case 190default 190instrução, de 198

"rt", modo de abertura de arquivo 561"r+t", modo de abertura de arquivo 561

S

%s, especificador de formato 130, 572, 586saída de algoritmo 93–95saída de dados 130–132saída, meio de 86, 130, 568scanf(), função 571–573, 573–578, 586–589SEEK_CUR, constante de biblioteca 597SEEK_END, constante de biblioteca 597SEEK_SET, constante de biblioteca 597se-então-senão (pseudolinguagem), instrução 87–88seleção, instrução de 190–194selecione-caso (pseudolinguagem), instrução 88–89semente de gerador de número aleatório 202seno, cálculo de 293–297sequência de bits 46, 123sequência de escape 113–114'\'' 114'\"' 114'\\' 114'\0' 114, 438'\a' 114'\b' 114'\n' 114'\r' 114'\t' 114

sequência de instruções 91, 173série de Taylor para cálculo de seno 293–297seta, operador 512–513setlocale(), função 453[SHIFT], tecla 55simplificações adotadas neste livro xl–xliiisin(), função 297sintaxe 143

C, da linguagem xxxicoloração de 52erro de 63, 66, 143–146, 347notação usada neste livro para xxxix

sistema de execução 137sistema operacional

comando de, criação de 487–488Linux xli, 52, 64Mac OS X 52, 698Posix de, padrão 52, 460Unix xli

site (deste livro) www.ulysseso.com/ip xxxviiisizeof, operador 142–143, 280, 379–382size_t, tipo 379–382, 444soma 81–82, 117soma de ponteiro com inteiro 382–383sorteio de bônus 214–215sqrt(), função 85, 301srand(), função 85, 202, 214–215, 302stack 656stack frame 656static, qualificador 278–279, 281–282-std=c99, opção de compilação 57stderr, variável (stream) 568stdin, variável (stream) 568

754 | Índice Remissivo

partes de, separação em 458–459poda de 481–483ponteiro e 439–442remoção de caractere de 481–483string em, busca de 454–455string em, inserção de 488–508tamanho de 444–446teclado de, leitura via xlii, 586–590tela de, escrita na 443–444tokens de, separação em 458–459vazio 442–443

string.h, cabeçalho 129, 442strlen(), função 444–446strrchr(), função 456–458strstr(), função 454–455strtod(), função 466–468strtok(), função 458–459struct, definidor de tipo 511subalgoritmo 77subproblema 75subprograma 250, 254subprograma em linguagem algorítmica 270–272subtração 81–82, 117

inteira de ponteiro 382–383ponteiros, entre 383

subtraço (símbolo) xli, 110sudo, comando (Unix/Linux/Mac OS) 697switch-case, instrução 190–194system("pause"), instrução 64

T

[TAB], tecla 138–142tabela-verdade 84, 119tabuada de multiplicação 361–362tabulação 138–140tamanho de arquivo 611–615tamanho de array 374

constante simbólica, definido com 376corrupção de memória e 393–394definição de array, em 374definido em tempo de execução 650definido em tempo de programação 650–651fgets(), usado com 589–590iniciação e 377iniciação, omitido em 377, 438leitura de string, usado em 442, 586LeString(), usado com 442multidimensional 399número mágico e 376parâmetro, recebido como 390scanf(), usado com 586sizeof de, cálculo com 380–382

tamanho de bloco de memória 567, 593–594, 651–652, 653–654, 657

tamanho de identificador 111tamanho de partição de arquivo 591, 596

stdio.h, cabeçalho 130, 444, 556stdio, módulo de biblioteca 130, 444, 556stdlib.h, cabeçalho 129, 202stdout, variável (stream) 568strcat(), função 448–449strchr(), função 455–456strcmp(), função 450–454, 486strcoll(), função 452–454strcpy(), função 446–448stream 556–557

arquivo e xlibinário 560buffer associado a 557entrada, de 561erro em, indicador de 557final de, indicador de 557implementação de 557padrão 567–568ponteiro para 557posição em, indicador de 557saída, de 561stderr 568stdin 568stdout 568texto, de 559

string 87, 438alinhamento de 534–536aparo de 481–483arquivo de, escrita em 563arquivo, representando nome de 559array, armazenado em 438–439array de 460–461busca de caractere em 455–458busca de string em 454–455caractere e 439–442caractere em, busca de 455–458casamento de 454–455centralização na tela de 474–475comparação de 449–454, 486–487comprimento de 444–446concatenação de 114–115, 448–449conceito de 87constante 114–115, 439cópia de 446–448embaralho de 665–666endereço, representado como 439escrita em arquivo de 563escrita na tela de 443–444fopen(), usado por 558formatação, de 130importância em programação de 438inserção de string em 488–508leitura via teclado de xlii, 586–590numérico 470número de, conversão em 466–468ocorrência de caractere em 455–458ordenação de 449–454

Índice Remissivo | 755

tamanho de partição usada em execução de programa, de 655–656

tamanho de registro de arquivo 591, 596tamanho de resultado de expressão 379–380tamanho de texto digitado via teclado 601–603tamanho de tipo 379–380tamanho de variável 379–380

estrutura 520–521fator de escala e 382sizeof, calculado com 379–382size_t e 379string 444–446, 457união 520–521

Taylor, série de 293–297teclado, leitura via 51tela, congelamento da 64–65tela e console 51tela, escrita de dados na 51telefone, teste do 328, 331tentativa e erro, programação por 348terminal de instrução 173teste de algoritmo 96–107teste de programa 136teste do telefone 328, 331teste exaustivo 136time(), função 202, 302time.h, cabeçalho 129, 202tipo de dado 112–113

agregado 374booleano 80char 112char * 439conversão de 122–125definição de 510definido pelo programador 510derivado 112, 510double 112–113double * 252embutido 112estrutura, de 510–511estruturado 374int 112int * 251inteiro 80largura de 112primitivo 112real 80registro variante, de 522–524size_t 379–382typedef em definição de, uso de 510união, de 520–521void 256void * 654–655

token 458tolower(), função 463toupper(), função 463

traço (símbolo)acesso, usado em operador de 515–516decremento, usado em operador de 125–126estrutura, usado em acesso a 512–513inversão de sinal, usado como operador de 81, 117subtração, usado como operador de 81, 117

tradução de programa 47–49tradutor 47–49tralha (símbolo) 133tratamento de exceção 259três pontos (símbolo)

elipse, usados como xlparâmetro, usados como 571

triângulo, checagem de lados de 208–210troca de valores entre variáveis 99, 264–269troco, cálculo de 421–424truncamento 123, 352–354Tudor, banco de dados da dinastia 601Tudor.bin, arquivo 621–624Tudor.txt, arquivo 601typedef 510

U

%u, especificador de formato 382underline xliunderscore xliunião 520–521

acesso a campo de 520compartilhamento de memória de 520–521definição de 520iniciação de 521, 524registro variante de, uso em 522–524

union, definidor de tipo 520–521Unix, sistema operacional

ambiente de trabalho no 52ar do, comando 696arquivo no, conceito de 556arquivo no, encerramento de leitura via teclado de 570canalização (pipe) no 604compilador GCC para 53cp do, comando 698[CTRL]+[D] no, significado de 570execução de programa no 64impressora como arquivo no, especificação de 558LeituraFaciL no, compilação com Clang da biblioteca

696–697LeituraFaciL no, compilação com GCC da biblioteca 696LeituraFaciL no, integração da biblioteca 698linha de comando no, argumento de 460Linux e xlimake do, comando 695, 696makefile no, arquivo 696ranlib do, comando 698redirecionamento de entrada no 604redirecionamento de saída no 604rm do, comando 563

756 | Índice Remissivo

Unix, sistema operacional (continuação)stream no 560stream no, portabilidade de 556

usabilidade 50usuário e programa minimalista xxxv

V

validação de dados 285data, de 363–366, 483–486esvaziamento de buffer e 578–580laço de repetição e 580–585número de identificação, de 470–472número inteiro, de 580–585, 691número natural, de 284–286número real, de 691–692opção, de 693–694string, de 692–693

valor absoluto 257, 298valor booleano 82–83valor de caractere 111–112valor de variável 46, 66, 79, 94, 121valor lógico 80, 82–83variável 46

agregada 374alocação de 650anônima 253, 651booleana 83conceito de 46const, definida com 387–389contagem, de 176, 181, 328conteúdo de 46, 66, 79, 94, 121declaração de 80dinâmica 650duração de 277–280endereço de 250escopo de 280–284estática 650estrutura 510–515estruturada 374global 280heterogênea 374, 510homogênea 374iniciação de 121local 282lógica 83não iniciada 147, 280nome de 92, 110–111, 121, 329–333nomenclatura de 121ponteiro para 250–252simbólica 47, 79static, definida com 278–279, 281–282união 520–521valor de 46, 66, 79, 94, 121

vazamento de memória 657, 664verdadeiro (pseudolinguagem), constante lógica 82violação de memória 465

vírgula, operador 201–202vírgula (símbolo)

operador vírgula, usada como 201–202separador de declarações, usada como 120, 201separador de parâmetros, usada como 201, 260, 269separador de variáveis em definição, usada como 120

(void), operador de conversão 124–125void * (ponteiro para void), tipo 654–655void, tipo 256–257

alusão, uso em 270main(), usado com 270, 461parâmetro de função, como 257tipo de retorno de função, como 256

W

"w+b", modo de abertura de arquivo 561, 599"w+", modo de abertura de arquivo 560, 564, 599"w+t", modo de abertura de arquivo 561, 599-Wall, opção de compilação 61"wb", modo de abertura de arquivo 561, 594, 611, 623while, instrução 174–178, 185, 194–196, 199, 328Windows, sistema operacional Microsoft xxxvii, xxxix

ambiente de trabalho no 52arquivo no, desbloqueio de 563arquivo no, encerramento de leitura via teclado de 570canalização (pipe) no 604CodeBlocks no, instalação de 54[CTRL]+[C] no, significado de 65, 177[CTRL]+[Z] no, significado de 570execução de programa no 54–55, 64–65impressora como arquivo no, especificação de 558LeituraFaciL no, compilação da biblioteca 695LeituraFaciL no, integração da biblioteca 697linha de comando no, argumento de 460redirecionamento de entrada no 604redirecionamento de saída no 604stream no, portabilidade de 556

"w", modo de abertura de arquivo 560, 563, 618"wt", modo de abertura de arquivo 561www.ulysseso.com/ip, site xxxviii, 52, 54, 66, 128, 141

Z

zumbi 396pilha de execução, habitante da 394–397, 518