Everton Coimbra de Araújo Algoritmos Fundamento e Prática 3a Edição Ampliada e Atualizada Visual Books Sumário Prefácio ...................................................................................................... 15 Introdução ................................................................................................. 17 Capítulo 1 - Os Cursos de Informática e Computação .................. 23 1.1 Os Cursos e as Áreas de Formação que Compõem Computação e Informática ........................................................................................................ 23 1.1.1 Computação como Atividade Fim ............................................................... 25 1.1.2 Computação como Atividade Meio ............................................................. 25 1.1.3 Licenciatura em Computação ...................................................................... 26 1.1.4 Cursos de Tecnologia .................................................................................... 27 1.2 Disciplinas de Programação segundo as Diretrizes do MEC ..................... 27 1.3 Algumas Disciplinas ....................................................................................... 29 1.3.1 Lógica de Predicados, Lógica Matemática, Lógica para Computação ou Lógica ........................................................................................................ 29 1.3.2 Lógica de Programação, Técnicas de Programação, Linguagens e Técnicas de Programação, Programação, Algoritmos, Programação de Computadores ou Laboratório de Programação ................................... 29 1.3.3 Estrutura de Dados ....................................................................................... 30 1.3.4 Linguagens de Programação ....................................................................... 30 1.4 O Acadêmico ..................................................................................................... 30 1.5 Conclusão ......................................................................................................... 31 Capítulo 2 - Programação - Antes do Início ..................................... 33 2.1 Conceitos ........................................................................................................... 33 2.1.1 Lógica ............................................................................................................. 33 2.1.2 Algoritmo ....................................................................................................... 34 2.1.3 Dado e Informação ........................................................................................ 34 2.1.3.1 O Dado ......................................................................................................... 35 2.1.3.2 A Informação .............................................................................................. 35 2.1.4 Dados de Entrada e Saída ............................................................................ 36 2.1.5 Processamento de Dados .............................................................................. 37 2.1.6 Lógica de Programação ................................................................................ 38 2.2 Conclusão ......................................................................................................... 40 Capítulo 3 - Descrição Narrativa ........................................................ 41 3.1 Introdução ......................................................................................................... 41 3.2 Resoluções Seqüenciais ................................................................................... 42 3.3 Resoluções Condicionais ................................................................................ 48 3.4 Resoluções com Pontos de Repetição ............................................................ 53 3.4.1 Repetição Contada ........................................................................................ 53 3.4.2 Repetição Contada e Condicional - Aninhadas ........................................ 58 3.5 Conclusão ......................................................................................................... 61 3.6 Exercícios Teóricos ........................................................................................... 61 3.7 Exercícios Práticos ........................................................................................... 61 Capítulo 4 - Alguns Conceitos ............................................................. 65 4.1 Tipos de Dados ................................................................................................. 65 4.1.1 Dados Numéricos .......................................................................................... 66 4.1.1.1 Numéricos Inteiros ..................................................................................... 66 4.1.1.2 Numéricos Reais ........................................................................................ 66 4.1.2 Dados Literais ................................................................................................ 67 4.1.3 Dados Lógicos ............................................................................................... 68 4.2 Variáveis ............................................................................................................ 68 4.2.1 Declaração de Variáveis ............................................................................... 69 4.3 Expressões e Operadores ................................................................................. 70 4.3.1 Expressões Aritméticas ................................................................................. 70 4.3.2 Expressões Lógicas ....................................................................................... 72 4.4 Sintaxe e Semântica .......................................................................................... 76 4.5 Conclusão ......................................................................................................... 77 4.6 Exercícios Teóricos ........................................................................................... 77 Capítulo 5 - Fluxogramas ...................................................................... 79 5.1 Introdução ......................................................................................................... 79 5.2 Resoluções Seqüenciais ................................................................................... 81 5.3 Resoluções Condicionais ................................................................................ 84 5.3.1 Regra de Três ................................................................................................. 86 5.3.1.1 Regra de Três Simples ................................................................................ 86 5.4 Resoluções com Repetição Contada ............................................................... 90 5.4.1 Teste de Mesa ................................................................................................. 93 5.4.1.1 Como Fazer um Teste de Mesa .................................................................. 93 5.5 Resoluções com Repetição com Uso de Flag ................................................. 97 5.6 Resoluções com Repetição com Teste Condicional no Fim ......................... 99 5.7 Resoluções com Repetição Condicional com Teste no Início .................... 102 5.8 Conclusão ....................................................................................................... 105 5.9 Exercícios Teóricos ......................................................................................... 105 5.10 Exercícios Práticos ....................................................................................... 105 5.11 Desafio ........................................................................................................... 107 Capítulo 6 - Diagrama de Chapin .................................................... 109 6.1 Resoluções Seqüenciais ................................................................................. 109 6.2 Resoluções Condicionais .............................................................................. 111 6.3 Resoluções com Repetição Contada ............................................................. 114 6.4 Conclusão ....................................................................................................... 117 6.5 Exercícios Teóricos ......................................................................................... 117 6.6 Exercícios Práticos ......................................................................................... 117 6.7 Desafio ............................................................................................................. 120 Capítulo 7 - Fundamentos para Linguagens de Programação ... 121 7.1 Hardware ........................................................................................................ 121 7.2 Computador .................................................................................................... 122 7.3 Unidades de Medida ..................................................................................... 124 7.4 ASCII ................................................................................................................ 125 7.5 UNICODE ....................................................................................................... 126 7.6 Sistemas Numéricos ....................................................................................... 127 7.6.1 Representações e Conversões entre Sistemas Numéricos ...................... 128 7.6.1.1 Convertendo Número Binário para Decimal ........................................ 129 7.6.1.2 Convertendo Número Decimal (Parte Inteira) para Binário ................ 129 7.6.1.3 Convertendo Número Decimal para Hexadecimal .............................. 130 7.6.2 Convertendo Número Hexadecimal para Decimal ................................. 130 7.7 Sistema Operacional ...................................................................................... 130 7.8 Linguagens de Programação ........................................................................ 132 7.9 Interpretadores e Compiladores ................................................................... 133 7.9.1 A Linkedição – Ligação .............................................................................. 135 7.10 Ambientes Integrados de Desenvolvimento – Integrated Development Environment – IDE ....................................................................................... 136 7.11 Conclusão ..................................................................................................... 137 7.12 Exercícios Teóricos ....................................................................................... 137 Capítulo 8 - Introdução a IDEs .......................................................... 139 8.1 O que são Dev-C++ e Dev-Pascal ................................................................. 139 8.1.1 O IDE do Dev-C++ ....................................................................................... 140 8.1.1.1 Tipos de Arquivos do Dev-C++ .............................................................. 142 8.1.2 O IDE do Dev-Pascal ................................................................................... 142 8.1.2.1 Tipos de Arquivos do Dev-Pascal .......................................................... 143 8.2 Conclusão ....................................................................................................... 143 8.3 Exercícios Teóricos ......................................................................................... 144 Capítulo 9 - Pseudocódigos ................................................................ 145 9.1 Vantagens ....................................................................................................... 145 9.2 Estrutura Básica para um Pseudocódigo .................................................... 146 9.3 Endentação ..................................................................................................... 150 9.4 Declaração de Variáveis ................................................................................ 150 9.5 Atribuição de Variáveis ................................................................................. 152 9.6 Saída de Dados ............................................................................................... 153 9.7 Entrada de Dados ........................................................................................... 155 9.8 Algumas Situações ......................................................................................... 157 9.8.1 Estrutura Seqüencial ................................................................................... 157 9.9 Conclusão ....................................................................................................... 169 9.10 Exercícios Teóricos ....................................................................................... 170 9.11 Exercícios Práticos ....................................................................................... 170 9.12 Desafio ........................................................................................................... 171 9.13 Exercícios Resolvidos .................................................................................. 171 Capítulo 10 - Pseudocódigos – Estrutura Condicional ................ 175 10.1 Estrutura Condicional ................................................................................. 175 10.2 Estrutura Condicional com “Escolha... Caso” .......................................... 185 10.3 Funções .......................................................................................................... 200 10.3.1 Numéricas .................................................................................................. 201 10.3.2 Caractere .................................................................................................... 201 10.3.3 Algumas Funções ...................................................................................... 201 10.4 Conclusão ..................................................................................................... 208 10.5 Exercícios Teóricos ....................................................................................... 208 10.6 Exercícios Práticos ....................................................................................... 209 10.7 Desafio ........................................................................................................... 211 10.8 Exercícios Resolvidos .................................................................................. 211 Capítulo 11 - Estruturas de Repetição ............................................. 215 11.1 Estruturas de Repetição Contada ............................................................... 215 11.2 Estruturas de Repetição Condicional com Teste no Início ...................... 228 11.3 Estruturas de Repetição Condicional com Teste no Final ....................... 246 11.4 Conclusão ..................................................................................................... 261 11.5 Exercícios Teóricos ....................................................................................... 261 11.6 Exercícios Práticos ....................................................................................... 262 11.7 Desafio ........................................................................................................... 265 11.8 Exercícios Resolvidos .................................................................................. 265 Capítulo 12 - Conjuntos ...................................................................... 269 12.1 Vetores ou Matriz de uma Única Linha .................................................... 269 12.1.1 Tamanho Físico e Tamanho Lógico ........................................................ 270 12.2 Matriz ............................................................................................................ 280 12.3 Conclusão ..................................................................................................... 293 12.4 Exercícios Teóricos ....................................................................................... 294 12.5 Exercícios Práticos ....................................................................................... 294 12.6 Exercícios Resolvidos .................................................................................. 295 Capítulo 13 - Strings ............................................................................ 299 13.1 Introdução ..................................................................................................... 299 13.2 Matrizes de Strings ...................................................................................... 311 13.3 Funções para Tratamento e Manipulação de Strings .............................. 324 13.4 Conclusão ..................................................................................................... 329 13.5 Exercícios Teóricos ....................................................................................... 329 13.6 Exercícios Práticos ....................................................................................... 330 Capítulo 14 - Classificação e Pesquisa ........................................... 331 14.1 Método Bolha de Classificação – BubbleSort ............................................ 331 14.2 Método de Pesquisa Seqüencial ................................................................. 337 14.3 Método de Pesquisa Binária ....................................................................... 341 14.4 Conclusão ..................................................................................................... 348 14.4.1 Inserção Direta ........................................................................................... 348 14.5 Exercícios Teóricos ....................................................................................... 350 14.6 Exercícios Práticos ....................................................................................... 350 Capítulo 15 - SubAlgoritmos ............................................................. 351 15.1 Vantagens ..................................................................................................... 351 15.2 Funcionamento ............................................................................................. 352 15.3 Procedimentos e Funções ............................................................................ 352 15.4 Variáveis Globais e Locais .......................................................................... 353 15.5 Parâmetros .................................................................................................... 354 15.5.1 Passagem de Parâmetros .......................................................................... 354 15.6 Prática ............................................................................................................ 356 15.6.1 Mantendo as Funções em um Arquivo Separado .................................. 370 15.7 Conclusão ..................................................................................................... 375 15.8 Exercícios Teóricos ....................................................................................... 375 15.9 Exercícios Práticos ....................................................................................... 375 15.10 Exercício Resolvido .................................................................................... 376 Capítulo 16 - Registros ........................................................................ 379 16.1 Funcionamento ............................................................................................. 379 16.2 Prática ............................................................................................................ 379 16.3 Conclusão ..................................................................................................... 396 16.4 Exercícios Teóricos ....................................................................................... 397 16.5 Exercícios Práticos ....................................................................................... 397 16.6 Exercício Resolvido ...................................................................................... 398 Capítulo 17 - Introdução à Orientação a Objetos ......................... 399 17.1 Conceitualização .......................................................................................... 399 17.2 Iniciando a Implementação e Orientação a Objetos ................................. 402 17.3 O Primeiro Problema a ser Resolvido ........................................................ 402 17.4 Fazendo Uso de Modelos ............................................................................ 404 17.5 Conceitos e Pontos Importantes para Criação de uma Classe em Java .... 405 17.5.1 Tipos de Dados .......................................................................................... 405 17.6 Testando a Classe Criada ............................................................................ 406 17.7 Aplicando Encapsulamento na Classe ..................................................... 408 17.7.1 Criando os Métodos para Acessar e Atribuir Valores nas Propriedades ... 409 17.8 Conclusão ..................................................................................................... 412 Referências ............................................................................................ 413