Pedro KantekAlgoritmos Unicenp Jul/07, dez/07 Curitiba vers˜o de 10 de fevereiro de 2008 a 1 88-08, Pedro Kantek 88-08, Pedro Kantek 2 vers˜o de 10 de fevereiro de 2008 a ´ SUMARIO 4 Comandos 4.1 Vis˜o Top down e Bottom up . . . . . . . . . . . . a 4.2 Seq¨ˆncia de execu¸ao . . . . . . . . . . . . . . . . ue c˜ 4.3 Entrada/Sa´ ıda . . . . . . . . . . . . . . . . . . . . 4.3.1 Comando de Entrada . . . . . . . . . . . . 4.3.2 Comando de Sa´ ıda . . . . . . . . . . . . . . 4.4 O comando alternativo . . . . . . . . . . . . . . . . 4.4.1 Alternativa simples . . . . . . . . . . . . . . 4.4.2 Alternativa composta . . . . . . . . . . . . 4.4.3 Alternativas aninhadas . . . . . . . . . . . . 4.5 Estruturas de repeti¸ao . . . . . . . . . . . . . . . c˜ 4.5.1 Repeti¸ao com condi¸ao no in´ c˜ c˜ ıcio: enquanto 4.5.2 Repeti¸ao com vari´vel de controle: para . c˜ a 4.5.3 Repeti¸ao com condi¸ao no final: repita . . c˜ c˜ 4.5.4 Comando de m´ ltipla escolha: Escolha . . . u 4.5.5 Abandono de itera¸ao: abandone . . . . . . c˜ 75 75 75 76 76 77 77 77 78 78 83 83 84 86 96 97 Sum´rio a 1 Contrato Pedag´gico o 2 Ciˆncia da Computa¸˜o e ca 2.1 Representa¸ao do conhecimento . . . . . c˜ 2.2 Algoritmo . . . . . . . . . . . . . . . . . 2.2.1 Qualidades de um bom algoritmo 2.2.2 Como se escreve um algoritmo . 2.3 Portugol . . . . . . . . . . . . . . . . . . 2.4 Programa¸ao Estruturada . . . . . . . . c˜ 2.5 A m´quina de Turing . . . . . . . . . . a 2.6 Linguagens de programa¸ao . . . . . . . c˜ 2.6.1 Assembler . . . . . . . . . . . . . 2.6.2 Fortran . . . . . . . . . . . . . . 2.6.3 Lisp . . . . . . . . . . . . . . . . 2.6.4 Prolog . . . . . . . . . . . . . . . 2.6.5 Cobol . . . . . . . . . . . . . . . 2.6.6 APL . . . . . . . . . . . . . . . . 2.6.7 Basic . . . . . . . . . . . . . . . . 2.6.8 Clipper . . . . . . . . . . . . . . 2.6.9 Natural . . . . . . . . . . . . . . 2.6.10 Pascal . . . . . . . . . . . . . . . 2.6.11 C . . . . . . . . . . . . . . . . . . 2.6.12 Java . . . . . . . . . . . . . . . . 2.6.13 PHP . . . . . . . . . . . . . . . . 2.6.14 J . . . . . . . . . . . . . . . . . . 3 Escrevendo algoritmos 3.1 Nome . . . . . . . . . . . . 3.2 Vari´veis . . . . . . . . . . . a 3.2.1 Tipos de vari´veis . a 3.2.2 C´digo de caracteres o 3.3 Comando de atribui¸ao . . c˜ 3.4 Express˜es . . . . . . . . . . o 3.4.1 Aritm´ticas . . . . . e 3.4.2 Relacionais . . . . . 3.4.3 L´gicas . . . . . . . o 13 27 27 31 32 34 34 39 40 42 42 43 44 45 46 47 48 49 50 50 51 52 53 54 55 55 57 57 58 61 62 62 68 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Nassi-Schneiderman 105 5.1 Chines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6 Visualg 6.1 Regras de Visualg . . . . . . . . . . . . . . . 6.2 Exemplos de Visualg . . . . . . . . . . . . . . 6.2.1 Criando uma raiz quadrada . . . . . . 6.2.2 Achando ra´ por Newton-Raphson . ızes 6.2.3 Depura¸ao de algoritmos . . . . . . . c˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 . 109 . 114 . 116 . 117 . 118 7 Modulariza¸˜o: fun¸oes ca c˜ 119 7.1 Fun¸oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 c˜ 7.1.1 Vari´veis globais e locais . . . . . . . . . . . . . . . . . . . . . . . . 120 a 8 Vetores e Matrizes 8.1 Defini¸ao de Vetor . . . . . . . . . . . . c˜ 8.1.1 Origem dos ´ ındices . . . . . . . . 8.2 Opera¸oes B´sicas . . . . . . . . . . . . c˜ a 8.3 Ordena¸ao . . . . . . . . . . . . . . . . . c˜ 8.4 Opera¸oes fundamentais na Inform´tica c˜ a 8.5 Tabelas . . . . . . . . . . . . . . . . . . 8.6 Merge (intercala¸ao) de dois vetores . . c˜ 8.7 Pesquisa seq¨ encial . . . . . . . . . . . . u 8.8 Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 . 123 . 124 . 125 . 129 . 130 . 133 . 135 . 137 . 149 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Registros 157 9.1 Defini¸ao de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 c˜ 9.2 Processamento de Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 9.2.1 Calend´rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 a 10 Exerc´ ıcios pr´ticos: 003 -Raiz quadrada a 10.1 Exemplo de um algoritmo: raiz quadrada 10.2 Exerc´ 1 . . . . . . . . . . . . . . . . . ıcio 10.3 Exerc´ 2 . . . . . . . . . . . . . . . . . ıcio 10.4 Exerc´ 3 . . . . . . . . . . . . . . . . . ıcio 10.5 Exerc´ 4 . . . . . . . . . . . . . . . . . ıcio 88-08, Pedro Kantek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 . 181 . 184 . 184 . 184 . 185 4 vers˜o de 10 de fevereiro de 2008 a ´ SUMARIO 10.6 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 11 Exerc´ ıcios Pr´ticos: 004-Introdu¸˜o a ca 11.1 Algoritmos . . . . . . . . . . . . . . . . . . . 11.1.1 M´ximo Divisor Comum . . . . . . . . a 11.1.2 Algoritmo do M´ximo Divisor Comum a 11.1.3 Algoritmos no dia a dia . . . . . . . . 11.1.4 Exerc´ 1 . . . . . . . . . . . . . . . ıcio 11.1.5 Exerc´ 2 . . . . . . . . . . . . . . . ıcio 11.1.6 Exerc´ 3 . . . . . . . . . . . . . . . ıcio 11.1.7 Exerc´ 4 . . . . . . . . . . . . . . . ıcio 11.1.8 Exerc´ 5 . . . . . . . . . . . . . . . ıcio 11.1.9 Exerc´ 6 . . . . . . . . . . . . . . . ıcio 11.1.10 Exerc´ 7 . . . . . . . . . . . . . . . ıcio 11.1.11 Exerc´ 8 . . . . . . . . . . . . . . . ıcio 11.1.12 Exerc´ 9 . . . . . . . . . . . . . . . ıcio 11.1.13 Exerc´ 10 . . . . . . . . . . . . . . . ıcio 11.1.14 Respostas . . . . . . . . . . . . . . . . 12 Exerc´ ıcio pr´tico: 006-Jogo a 12.1 O jogo da vida . . . . . . 12.2 Exerc´ 1 . . . . . . . . ıcio 12.3 Exerc´ 2 . . . . . . . . ıcio 12.4 Exerc´ 3 . . . . . . . . ıcio 12.5 Exerc´ 4 . . . . . . . . ıcio 12.6 Respostas . . . . . . . . . 13 Exerc´ ıcio Pr´tico:007-GPS a 13.1 GPS . . . . . . . . . . . . 13.1.1 Problemas . . . . . 13.2 Dois amigos . . . . . . . . 13.2.1 Exemplo . . . . . . 13.2.2 Como fazer . . . . 13.2.3 Problema 1 . . . . 13.2.4 Problema 2 . . . . 13.2.5 Problema 3 . . . . 13.2.6 Problema 4 . . . . 13.2.7 Problema 5 . . . . 13.2.8 Problema 6 . . . . 13.2.9 Problema 7 . . . . 13.2.10 Problema 8 . . . . 13.2.11 Problema 9 . . . . 13.2.12 Problema 10 . . . 13.2.13 Respostas . . . . . da . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 . 187 . 188 . 188 . 189 . 189 . 189 . 190 . 190 . 190 . 190 . 190 . 190 . 191 . 191 . 191 193 . 193 . 195 . 196 . 196 . 197 . 197 199 . 201 . 202 . 202 . 203 . 203 . 203 . 204 . 204 . 204 . 205 . 205 . 205 . 205 . 206 . 206 . 206 207 . 207 . 207 . 208 . 208 . 208 . 208 . 209 14.1.7 Problema 7 . 14.1.8 Problema 8 . 14.1.9 Problema 9 . 14.1.10 Problema 10 14.1.11 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ SUMARIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 . 209 . 209 . 209 . 209 211 . 211 . 212 . 213 . 214 . 215 . 215 217 . 217 . 217 . 217 . 218 . 218 . 218 . 219 . 219 . 219 . 220 . 220 . 220 . 220 . 221 . 221 . 222 . 222 . 222 . 223 . 223 . 223 . 224 . 224 225 . 225 . 226 . 226 . 226 . 227 . 227 . 228 . 228 . 228 . 229 . 229 . 229 . 230 15 Exerc´ ıcio pr´tico: 009-Achar o a 15.1 Qual o n´ mero que falta ? . . u 15.2 Exerc´ 1 . . . . . . . . . . ıcio 15.3 Exerc´ 2 . . . . . . . . . . ıcio 15.4 Exerc´ 3 . . . . . . . . . . ıcio 15.5 Exerc´ 4 . . . . . . . . . . ıcio 15.6 Respostas . . . . . . . . . . . n´mero que u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . falta . . . . . . . . . . . . . . . . . . . . . . . . 16 Exerc´ ıcios Pr´ticos: 011 - Matem´tica a a 16.1 Exerc´ 1 . . . . . . . . . . . . . . . ıcio 16.1.1 Exerc´ 1.1 . . . . . . . . . . ıcio 16.1.2 Exerc´ 1.2 . . . . . . . . . . ıcio 16.1.3 Exerc´ 1.3 . . . . . . . . . . ıcio 16.1.4 Exerc´ 1.4 . . . . . . . . . . ıcio 16.1.5 Exerc´ 1.5 . . . . . . . . . . ıcio 16.1.6 Exerc´ 1.6 . . . . . . . . . . ıcio 16.1.7 Exerc´ 1.7 . . . . . . . . . . ıcio 16.1.8 Exerc´ 1.8 . . . . . . . . . . ıcio 16.1.9 Exerc´ 1.9 . . . . . . . . . . ıcio 16.1.10 Exerc´ 1.10 . . . . . . . . . . ıcio 16.2 Exerc´ 2 . . . . . . . . . . . . . . . ıcio 16.2.1 Exerc´ 2.1 . . . . . . . . . . ıcio 16.2.2 Exerc´ 2.2 . . . . . . . . . . ıcio 16.2.3 Exerc´ 2.3 . . . . . . . . . . ıcio 16.2.4 Exerc´ 2.4 . . . . . . . . . . ıcio 16.2.5 Exerc´ 2.5 . . . . . . . . . . ıcio 16.2.6 Exerc´ 2.6 . . . . . . . . . . ıcio 16.2.7 Exerc´ 2.7 . . . . . . . . . . ıcio 16.2.8 Exerc´ 2.8 . . . . . . . . . . ıcio 16.2.9 Exerc´ 2.9 . . . . . . . . . . ıcio 16.2.10 Exerc´ 2.10 . . . . . . . . . . ıcio 16.2.11 Respostas . . . . . . . . . . . . L´gica B´sicas o a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . encadeados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Exerc´ ıcio Pr´tico: 008 - Problemas a 14.1 Resolva os exerc´ ıcios a seguir . . . 14.1.1 Problema 1 . . . . . . . . . 14.1.2 Problema 2 . . . . . . . . . 14.1.3 Problema 3 . . . . . . . . . 14.1.4 Problema 4 . . . . . . . . . 14.1.5 Problema 5 . . . . . . . . . 14.1.6 Problema 6 . . . . . . . . . vers˜o de 10 de fevereiro de 2008 a 17 Exerc´ ıcios Pr´ticos: 017-SEs compostos a 17.1 SEs compostos e encadeados . . . . . . . 17.1.1 Exerc´ 1.1 . . . . . . . . . . . ıcio 17.1.2 Exerc´ 1.2 . . . . . . . . . . . ıcio 17.1.3 Exerc´ 1.3 . . . . . . . . . . . ıcio 17.1.4 Exerc´ 1.4 . . . . . . . . . . . ıcio 17.1.5 Exerc´ 1.5 . . . . . . . . . . . ıcio 17.1.6 Exerc´ 1.6 . . . . . . . . . . . ıcio 17.2 Exerc´ 2 . . . . . . . . . . . . . . . . ıcio 17.2.1 Exerc´ 2.1 . . . . . . . . . . . ıcio 17.2.2 Exerc´ 2.2 . . . . . . . . . . . ıcio 17.2.3 Exerc´ 2.3 . . . . . . . . . . . ıcio 17.2.4 Exerc´ 2.4 . . . . . . . . . . . ıcio 17.2.5 Exerc´ 2.5 . . . . . . . . . . . ıcio 88-08, Pedro Kantek 5 88-08, Pedro Kantek 6 vers˜o de 10 de fevereiro de 2008 a ´ SUMARIO 17.2.6 Exerc´ 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 ıcio 17.2.7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 18 Exerc´ ıcios Pr´ticos: 018-FLuxogramas a 18.1 Exerc´ ıcios de Fluxos e Pseudoc´digo . o 18.1.1 Exerc´ 1 . . . . . . . . . . . ıcio 18.1.2 Exerc´ 2 . . . . . . . . . . . ıcio 18.1.3 Respostas . . . . . . . . . . . . 19 Exerc´ ıcios 19.0.4 19.0.5 19.0.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 . 233 . 233 . 239 . 245 24 Exerc´ ıcios Pr´ticos: 035 - Localiza¸˜o de oleoduto a ca 24.1 Localiza¸ao de oleoduto . . . . . . . . . . . . . . . . c˜ 24.2 Exerc´ ıcios . . . . . . . . . . . . . . . . . . . . . . . . 24.3 Exerc´ 1 . . . . . . . . . . . . . . . . . . . . . . . ıcio 24.4 Exerc´ 2 . . . . . . . . . . . . . . . . . . . . . . . ıcio 24.5 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . . . . ıcio 24.6 Respostas . . . . . . . . . . . . . . . . . . . . . . . . 25 Exerc´ ıcios Pr´ticos: 054 - Kumon de a 25.1 Treinamento b´sico em Algoritmos . a 25.2 Exerc´ 1 . . . . . . . . . . . . . . ıcio 25.3 Exerc´ 2 . . . . . . . . . . . . . . ıcio 25.4 Exerc´ 3 . . . . . . . . . . . . . . ıcio 25.5 Respostas . . . . . . . . . . . . . . . 26 Exerc´ ıcios Pr´ticos: a 26.1 Por exemplo . . . 26.2 Exerc´ 1 . . . ıcio 26.3 Exerc´ 2 . . . ıcio 26.4 Exerc´ 3 . . . ıcio 26.5 Respostas . . . . algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ SUMARIO 291 . 291 . 292 . 292 . 293 . 293 . 294 295 . 295 . 295 . 298 . 302 . 305 307 . 307 . 307 . 310 . 312 . 315 317 . 317 . 318 . 320 . 322 . 324 327 . 327 . 330 . 334 . 338 339 . 339 . 341 . 343 . 346 . 348 349 . 349 . 352 . 353 . 353 . 354 . 354 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pr´ticos: 018 - Nassi a 247 Exerc´ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 ıcio Exerc´ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 ıcio Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 . 259 . 259 . 262 . 266 267 . 267 . 271 . 271 . 272 . 272 . 273 . 275 277 . 277 . 279 . 282 . 283 . 283 . 284 285 . 285 . 285 . 286 . 286 . 287 . 287 . 288 . 288 . 288 . 288 . 288 . 288 . 289 . 289 . 289 20 Exerc´ ıcios pr´ticos: 021 - 5 fun¸oes a c˜ 20.1 Fun¸oes num´ricas . . . . . . . . . c˜ e 20.1.1 Exerc´ 1 . . . . . . . . . ıcio 20.1.2 Exerc´ 2 . . . . . . . . . ıcio 20.1.3 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Exerc´ ıcios Pr´ticos: 024 -DVs a 21.1 D´ ıgitos Verificadores . . . . . . . . . . . . 21.1.1 M´dulo 10 . . . . . . . . . . . . . . o 21.1.2 M´dulo 11 . . . . . . . . . . . . . . o 21.1.3 CPF (Cadastro de Pessoas F´ ısicas) 21.1.4 CNPJ (antigo CGC) . . . . . . . . 21.2 Exerc´ 1 . . . . . . . . . . . . . . . . . ıcio 21.2.1 Respostas . . . . . . . . . . . . . . 22 Exerc´ ıcios Pr´ticos: 027 - aritm´tica a e 22.1 Aritm´tica n˜o decimal . . . . . . . e a 22.1.1 Programa VISUALG . . . . . 22.2 Exerc´ 1 . . . . . . . . . . . . . . ıcio 22.3 Exerc´ 2 . . . . . . . . . . . . . . ıcio 22.4 Exerc´ 3 . . . . . . . . . . . . . . ıcio 22.4.1 Respostas . . . . . . . . . . . 057 - Continuar seq¨ˆncias ue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n˜o decimal a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Exerc´ ıcios Pr´ticos: 062 - Engenharia reversa a 27.1 Engenharia Reversa de algoritmos . . . . . . . 27.2 Exerc´ 1 . . . . . . . . . . . . . . . . . . . . ıcio 27.3 Exerc´ 2 . . . . . . . . . . . . . . . . . . . . ıcio 27.4 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . ıcio 27.5 Respostas . . . . . . . . . . . . . . . . . . . . . 28 Exerc´ ıcios Pr´ticos: a 28.1 Exerc´ 1 . . . ıcio 28.2 Exerc´ 2 . . . ıcio 28.3 Exerc´ 3 . . . ıcio 28.4 Respostas . . . . 29 Exerc´ ıcios Pr´ticos: a 29.1 Exerc´ 1 . . . ıcio 29.2 Exerc´ 2 . . . ıcio 29.3 Exerc´ 3 . . . ıcio 29.4 Exerc´ 4 . . . ıcio 29.5 Respostas . . . . 30 Exerc´ ıcios Pr´ticos: a 30.1 Exemplos . . . . 30.2 Exerc´ 1 . . . ıcio 30.3 Exerc´ 2 . . . ıcio 30.4 Exerc´ 3 . . . ıcio 30.5 Exerc´ 4 . . . ıcio 30.6 Respostas . . . . 88-08, Pedro Kantek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 065 - Se, . . . . . . . . . . . . . . . . . . . . . . . . 069 - 4 . . . . . . . . . . . . . . . . . . . . . . . . . enquanto, . . . . . . . . . . . . . . . . . . . . . . . . . . . . repita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Exerc´ ıcios Pr´ticos: 031 - Manipula¸˜o de datas a ca 23.1 Algoritmos de Calend´rio . . . . . . . . . . . . . . a 23.1.1 C´lculo do dia da semana . . . . . . . . . . a 23.1.2 C´lculo dos feriados m´veis . . . . . . . . . a o 23.1.3 Bissexto . . . . . . . . . . . . . . . . . . . . 23.2 Exerc´ 1 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.3 Exerc´ 2 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.4 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.5 Exerc´ 4 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.6 Exerc´ 5 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.7 Exerc´ 6 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.8 Exerc´ 7 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.9 Exerc´ 8 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.10Exerc´ 9 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.11Exerc´ 10 . . . . . . . . . . . . . . . . . . . . . . ıcio 23.12Respostas . . . . . . . . . . . . . . . . . . . . . . . vers˜o de 10 de fevereiro de 2008 a algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 073 - achar o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d´cimo e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 termo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 88-08, Pedro Kantek vers˜o de 10 de fevereiro de 2008 a ´ SUMARIO 31 Exerc´ ıcios Pr´ticos: a 31.1 Exerc´ 1 . . . ıcio 31.1.1 Algoritmo 31.1.2 Algoritmo 31.1.3 Algoritmo 31.2 Exerc´ 2 . . . ıcio 31.2.1 Algoritmo 31.2.2 Algoritmo 31.2.3 Algoritmo 31.2.4 Algoritmo 31.3 Exerc´ 3 . . . ıcio 31.3.1 Algoritmo 31.3.2 Algoritmo 31.3.3 Algoritmo 077 - Algoritmos . . . . . . . . . . . . 1 . . . . . . . . . . . 2 . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . 2 . . . . . . . . . . . 3 . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . 2 . . . . . . . . . . . 3 . . . . . . . . . . . 355 355 355 355 356 357 357 358 358 359 359 359 360 360 38 Exerc´ ıcios Pr´ticos: a 38.1 Exerc´ 1 . . . ıcio 38.2 Exerc´ 2 . . . ıcio 38.3 Exerc´ 3 . . . ıcio 38.4 Exerc´ 4 . . . ıcio 38.5 Respostas . . . . 125c - Corre¸˜o de algoritmos ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Corre¸˜o de Algoritmos ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ SUMARIO 421 . 421 . 425 . 429 . 433 . 437 439 . 439 . 442 . 446 . 449 . 452 453 . 456 . 456 . 457 . 457 . 457 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Exerc´ ıcios Pr´ticos 125d a 39.1 Exerc´ 1 . . . . . . ıcio 39.2 Exerc´ 2 . . . . . . ıcio 39.3 Exerc´ 2 . . . . . . ıcio 39.4 Exerc´ 3 . . . . . . ıcio 39.5 Respostas . . . . . . . 40 Exerc´ ıcios Pr´ticos: a 40.1 Exerc´ 1 . . . ıcio 40.2 Exerc´ 2 . . . ıcio 40.3 Exerc´ 3 . . . ıcio 40.4 Exerc´ 4 . . . ıcio 40.5 Respostas . . . . 41 Exerc´ ıcios pr´ticos: a 41.1 Exerc´ 1 . . . ıcio 41.2 Exerc´ 3 . . . ıcio 41.3 Exerc´ 4 . . . ıcio 32 Exerc´ ıcio Pr´tico: 084 Balance LIne a 363 32.1 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 33 Exerc´ ıcios Pr´ticos: a 33.1 Exerc´ 1 . . . ıcio 33.2 Exerc´ 2 . . . ıcio 33.3 Exerc´ 3 . . . ıcio 33.4 Respostas . . . . 110 - indexa¸˜o e indire¸˜o ca ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 . 370 . 372 . 374 . 376 377 . 377 . 380 . 380 . 380 . 381 383 386 386 386 387 128 - Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 - O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cubo RUBIK 459 . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 . 467 . 468 . 468 . 469 . 469 . 470 . 470 . 471 473 . 474 . 474 . 476 . 476 . 477 . 477 479 . 479 . 480 . 481 . 482 . 482 . 483 . 483 . 484 34 Exerc´ ıcios Pr´ticos: 116 - manuseio de tabelas a 34.1 Manuseio de tabelas . . . . . . . . . . . . . . . . 34.2 Exerc´ 1 . . . . . . . . . . . . . . . . . . . . . ıcio 34.3 Exerc´ 2 . . . . . . . . . . . . . . . . . . . . . ıcio 34.4 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . . ıcio 34.5 Respostas . . . . . . . . . . . . . . . . . . . . . . 35 Exerc´ ıcio Pr´tico: a 35.1 Exerc´ 1 . . ıcio 35.2 Exerc´ 2 . . ıcio 35.3 Exerc´ 3 . . ıcio 35.4 Exerc´ 4 . . ıcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 - Manuseio de Tabelas II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Exerc´ ıcios pr´ticos: 139 - Ostras a 42.1 A fazenda de ostras de Zing Zhu . . . . . 42.1.1 Resolvendo... . . . . . . . . . . . . 42.1.2 Truques usados na implementa¸ao c˜ 42.2 Exerc´ 1 . . . . . . . . . . . . . . . . . ıcio 42.3 Exerc´ 2 . . . . . . . . . . . . . . . . . ıcio 42.4 Exerc´ 3 . . . . . . . . . . . . . . . . . ıcio 42.5 Exerc´ 4 . . . . . . . . . . . . . . . . . ıcio 42.6 Respostas . . . . . . . . . . . . . . . . . . 43 Exerc´ ıcios pr´ticos: 144 - romanos a 43.0.1 Convers˜o de romano para ar´bico a a 43.0.2 Convers˜o de ar´bico para romano a a 43.1 Exerc´ 1 . . . . . . . . . . . . . . . . . ıcio 43.2 Exerc´ 2 . . . . . . . . . . . . . . . . . ıcio 43.3 Exerc´ 3 . . . . . . . . . . . . . . . . . ıcio 43.4 Respostas . . . . . . . . . . . . . . . . . . 44 Exerc´ ıcios Pr´ticos: 148 - diversos a 44.1 Universidade de Pinguinhos / cubos 44.2 Exerc´ 1 . . . . . . . . . . . . . . ıcio 44.2.1 Cubos Coloridos . . . . . . . 44.3 Exerc´ 1a . . . . . . . . . . . . . . ıcio 44.4 Exerc´ 2 . . . . . . . . . . . . . . ıcio 44.5 Exerc´ 2a . . . . . . . . . . . . . . ıcio 44.6 Exerc´ 3 . . . . . . . . . . . . . . ıcio 44.7 Exerc´ 3a . . . . . . . . . . . . . . ıcio 88-08, Pedro Kantek 36 Exerc´ ıcios Pr´ticos: a 36.1 Exerc´ 1 . . . ıcio 36.2 Exerc´ 2 . . . ıcio 36.3 Exerc´ 3 . . . ıcio 36.4 Exerc´ 4 . . . ıcio 36.5 Respostas . . . . 37 Exerc´ ıcios Pr´ticos: a 37.1 Exerc´ 1 . . . ıcio 37.2 Exerc´ 2 . . . ıcio 37.3 Exerc´ 3 . . . ıcio 37.4 Exerc´ 4 . . . ıcio 37.5 Respostas . . . . vers˜o de 10 de fevereiro de 2008 a 125a - Corre¸˜o de algoritmos ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125b - Corre¸˜o ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 de . . . . . . . . . . algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 . 389 . 393 . 396 . 400 . 404 405 . 405 . 409 . 412 . 416 . 419 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88-08, Pedro Kantek 10 vers˜o de 10 de fevereiro de 2008 a .2 Sorvete . . .4 Exerc´ 1a . . .4 Exerc´ 1 . . . . . . 528 529 . 515 . . . . 548 549 . . . . . . . . .7 Respostas . . . . .1 Exerc´ 1 . . .3 Exerc´ 1 . ıcio 55. . . . . . . . . . . . . . . .2 Exerc´ 2 . . . . . . . . ıcio 53. . . . . . . . . . . 487 . . . .Jogo do Retˆngulo a a 47. . . 532 . . .1 A Piscina . . . . . . . . . . .7 Exerc´ 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Respostas . . . . . . . . . . . . . . . . ue 51. . . . . . . . . . . . .4 Exerc´ 4 . . . . ıcio 50. . . . . . .6 Respostas . . . . . . . . . . . . . . . 521 49 Exerc´ ıcio pr´tico: 156 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 49. . . 516 517 . . . . . . . . . . . . . . . 522 51 Exerc´ ıcio pr´tico a 51. .162 a 55. . . . . . . . . . 506 . . . .1 Quermesse . . . . 545 . . . . . . . . . .3 M´gico . . . . . . . . . . . . 515 . 11 . . 45. . . . . . 55. . . . 514 . . . . . . . . . . . . . . . .2 RoboCoffee . . . . . . . . ıcio vers˜o de 10 de fevereiro de 2008 a 54 Exerc´ ıcio pr´tico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 45.1 Trem ou Caminh˜o? a 50. . . . 486 . . . . .1 Seq¨ˆncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50. . . . . . 542 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 . . . . 53. . . 55 Exerc´ ıcios pr´ticos . . . . . .7 Exerc´ 4 . . . . . . . . . . . . ıcio 45. . . . . . . . . . . . . . . . . . . . . . . . . . . 521 ıcio 50.1 Exerc´ 1 . . ıcio 47. . . . . 494 . 490 491 . . . . . . . . . .7 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . . . . 549 . . . . . . . . .8 Exerc´ 3a . . . . . . . . . . . . . . . .6 Exerc´ 3 . . . . . 543 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 49. .2 Bits Trocados 52. . . . . . . .5 Exerc´ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 . . . . . . . . . 50. . . . . . . . . . . . . . . . . . . . . . . o 55. . . . . . . . ıcio 54. . . . . . . . . ıcio 46. . . . . . . . . . . . . . . . . . . . . . . . 151 . . . . . . ıcio 55. . . . . . . . . . . . . . . 494 . . . . . . . . . 537 . . . . . ıcio 48. . . 536 . . .3 Exerc´ 3 . . . . . . .2 Carga Pesada 51. . . . . . . . . . . . . . . 543 . . . . . . . .3 Meteoros . . . . . 485 . . . .´ SUMARIO 44. . . .3 Ilumina¸ao da festa . ıcio 48. . . c˜ 46. . . . . . . . . . . . . . . . . . . . . . . 535 . . . . . . . . . . . . . . . . . . . . . . . . . .7 Respostas . . 514 . . . . ıcio 45. . . . . . . . . . . . . . . .6 Exerc´ 3 . . . . . . . . . 501 ´ SUMARIO 50. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 . . . . . . . . . . . . . . . . Pedro Kantek 12 vers˜o de 10 de fevereiro de 2008 a . . . ıcio 55. . . . . . ıcio 54. . . . . 158 . . . . . . . . . . . . 532 . . . . . . .6 Exerc´ 4 . . . . . . . . . . . . . . . . . . . 546 . . . . . . . .6 Exerc´ 4 . 50 Exerc´ ıcio pr´tico 157 a 50. . . . . . . . . . . . . . . 493 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 49. . . . . . . . . . . .1 Jogo do retˆngulo . . . . 509 . ıcio 47. . . . . . 54. . . . . . . . . . 507 . . . . . . . . . . . . . . . . . . . . .2 Exerc´ 1 . . . 489 . . . . . . . . . . 523 . . ıcio 53. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 . . . . . . . .4 Exerc´ 1 . . . . . . . 518 . . . . . 527 . . . . . . . . . . . . . . . .161 a 54. . . . . . . . . . . . . .5 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 . . . . 525 . . . . . . . . . . . . e 54. ıcio 45. . . . . . . . . . . . . . . . .3 Exerc´ 2 . ıcio 45. . . . . . . . . . 500 . do vulc˜o503 a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 . . . . . . . . . . . . . . . . . . . . 497 . . . . .8 Respostas . . . . . . . . . . 508 . . ıcio 51. . . 495 497 . . . . . . . 550 . a 47. . . . . .4 Exerc´ 1 . . . . . . 52 Exerc´ ıcio pr´tico a 52. .3 Pirˆmide . . . . . . . . . . . . . . . . . . . . 492 . . . . . . . . . . . . . . . . . . . . . . . .3 Rede otica . . 519 .2 Regata de cientistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Regata de cientistas e Luzes da Festa a 46. . . . . . . . . . . . . . .6 Exerc´ 3 .3 Saldo de gols 52. . . . . . . . . . . 553 . 488 . . . . . 553 46 Exerc´ ıcios Pr´ticos: 152 . . . . 552 . .4 Exerc´ 2 . 48 Exerc´ ıcios Pr´ticos: a 48. . . . . . .6 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 524 . . . .3 Exerc´ 1 . . . . . . . . . . . . . . . . . . . . . . . . 500 . . . . . . .2 Palavras Cruzadas . . . . . . . . . . . . . . . . ıcio 49. . . . . . . . . . . . . . . . . . Pedro Kantek 88-08. . . . . . .6 Exerc´ 3 . . . . . . . . . . . . . . . .5 Exerc´ 2 . . . . . . . .9 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . 551 . . . . . . . . 46. . . . ıcio 54. . . . . 533 . . . . . . .4 Exerc´ 1 . . . . . . . . . . . .7 Exerc´ 4 . . 511 . . . . . . . . . . . . . . . 489 . . . . . . . . . . . . 529 . . . . . . . . . . . . . . . . . .5 Exerc´ 2 . . . . . . .7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . 512 . . . . . . . . . . . . ıcio 46.1 Domin´ . . . . . . . . 527 . . . . . . . . . . ıcio 48. . . .3 Restaurante . . . ıcio 46. . . . . ıcio 46. . . . . . . . . . . . . . . . . . . . ıcio 52. . . . . . . . . . .5 Exerc´ 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 . ıcio 51. . . . . . . . . . . . . . 530 . 160 . . . . . . . . . . . . . . . ´ 51. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 50. . . ıcio 48.2 MASP . . . . . . . . . . . . .1 Macaco-prego 53. . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 . . . . . . . . . . . . . . . . . . . .6 Exerc´ 2a . . . . .8 Respostas . . . . . .8 Respostas . ıcio 53. . . . . . . . . . . . . . . . .8 Respostas . . . . . .5 Exerc´ 2 . . . . . . . . . . .5 Respostas . . . . . . . . . . . . . . . . . . . . . . 526 . . . . . . . . . . . 540 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49. . . . . . . . . . . . . . 534 535 . . . . . . . 49. . . . . . . . . . . .7 Exerc´ 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Genoma e Palavras Cruzadas a 49. . . . . Descarga . . . . .5 Exerc´ 2 . . . . 540 541 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 47. ıcio 54. . . . . . . . . . . . . . . . . 539 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Exerc´ 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 52. 523 . . . . . . . . . . 52. . . . . . ıcio 52. . . . . . 155a . . . . . . . . . . . . . . . . . . . . . . ıcio 47. . . ıcio 52. . . . . . a 45. . . . . . . . . . . . . . 523 . . . . . 484 45 Exerc´ ıcios Pr´ticos: a 45.8 Respostas . . . . . . . . . . . . . . . . . . . . . . . 550 . . . . . . . . . . . . . 511 . . . . . 541 . . . 517 . . . . . . . . .1 An´is quadrados . . . . . . . . . . . . . . 531 . . . . . 489 . . . 47 Exerc´ ıcios pr´ticos: 153a . . . . . . . . . . . . . . . . . . . . . . ıcio 51. . . . .Caminhos no tabuleiro e . . . . 491 . . . 488 . . . . . .diversos . . . . . . . .6 Exerc´ 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Exerc´ 1 . . . . . . . . . . . 520 . . . . ıcio 53. . . . . . . . . . . 54. . . . . . . . . . .5 Exerc´ 3 . . . . . . . 159 . . . . ıcio 55. . . . . . . . . . . . . . . . . 53 Exerc´ ıcio pr´tico a 53. . . . . . . . . a 55. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 .5 Exerc´ 3 . . .4 Exerc´ 2 .5 Exerc´ 2 . . . .4 Exerc´ 2 . .7 Exerc´ 4 . . . . . . . . . . . . . . .2 Balaio . . 88-08. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 . . . . . . . . . . . . . . . . . . . . . . ıcio 45. . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Projeto Genoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıcio 51. . . .2 Exerc´ 1 . . . . . . . Entretanto. Depois gera uma cole¸ao de 10 exerc´ c˜ ıcios matem´ticos a individuais sobre racioc´ ınio. ıcio Cap´ ıtulo 1 Jogo da vida c´digo: 6 o finalizado em 23/10/07 Um exercicio simples. Ele deve a o a achar 10 respostas (cada grupo de 6 exerc´ ıcios tem suas respostas somadas. a Algoritmo da raiz quadrada c´digo: 3 o finalizado em 12/11/07 Implementa o algoritmo (antigamente aprendido no inicio do ciclo fundamental. c˜ Contrato Pedag´gico o Regras da disciplina Uma aula dupla tem 100 minutos. ıcio a N˜o haver´ segunda chamada de exerc´ a a ıcios perdidos. Al´m disso. todo exerc´ entregue ao ıcio c˜ ıcio professor ser´ corrigido e devolvido ao aluno. c˜ Introdu¸˜o a algoritmos ca c´digo: 4 o finalizado em 20/12/05 13 88-08. Apenas o exerc´ original que ıcio contiver o nome do aluno ser´ aceito. hoje ´ n˜o mais) que permite calcular ` m˜o a raiz quadrada. ıcio ´ O exerc´ dever´ ser devolvido feito at´ a data escrita na pr´pria folha do exerc´ ıcio a e o ıcio. Um dos 11 n´ meros est´ faltando e o aluno precisa u a descobrir qual ´. que ser˜o – em princ´ – assim divididos: 10 minutos a ıpio para os bons dias. CONTRATO PEDAGOGICO Apresenta os conceitos de divis˜o inteira e resto e a seguir pede para analisar o algoa ritmo de mdc (m´ximo divisor comum) devido a Euclides (aprox 400aC).[1] 1o bimestre do ano letivo [01] Primeiro exerc´ deste ıcio bimestre. Pede-se ao aluno que simule 4 a e gera¸oes e informe depois como ficaram 4 c´lulas do tabuleiro especialmente escolhidas. A lei de forma¸ao n˜o est´ explicitada a u c˜ a a e deve ser descoberta pelo aluno. Cada aluno vai receber um exerc´ individual e unico. algoritmo. Matem´tica e l´gica b´sicas a o a c´digo: 11 o finalizado em 01/09/06 60 exerc´ ıcios (30 de matem´tica e 30 de l´gica) s˜o apresentados ao aluno. usando-se caracter´ e c˜ e ısticas da f´ ısica e opera¸oes da geometria anal´ c˜ ıtica. Uma simula¸ao em 2D ´ pedida ao aluno. esta com peso 40%.´ CAP´ ITULO 1. c˜ e O objetivo do exerc´ ´ divertir e depois trabalhar ainda informalmente os conceitos ıcio e de: matriz. E um processo razoavelmente a a a complexo e ele permite vivenciar exatamente o que um algoritmo faz. GPS: Global Positioning System c´digo: 7 o finalizado em 02/01/06 Este exerc´ ıcio come¸a descrevendo o acidente do avi˜o VARIG 254 que se perdeu no c a Mato Grosso achando estar no Par´. As 4 regras do jogo a a e c˜ s˜o apresentadas e depois ´ dado um tabuleiro 10 × 10. itera¸ao. N˜o ser˜o aceitos xerox. 30 de apresenta¸ao do exerc´ pr´tico e mais c˜ ıcio a 30 minutos para os alunos fazerem o seu exerc´ ıcio. 1970) ´ apresentado e s˜o feitos e a coment´rios sobre a sua importˆncia na Ciˆncia da Computa¸ao. Se entregue atrasado pagar´ 50% da nota de multa. e u Achar um n´mero em uma sequencia u c´digo: 9 o finalizado em 12/12/07 S˜o mostradas 30 sequencias de 11 n´ meros cada. As provas tamb´m s˜o individuais e diferentes para cada aluno. e a Exerc´ ıcios Individuais Cada exerc´ tem um identificador unico. Isto facilita a corre¸ao). Em outras palavras. A resposta ´ sempre um n´ mero. chamado seq¨ˆncia com as seguintes inforıcio ´ ue ma¸oes: aaLGM101. Os n´ meros buscados s˜o somados de 3 em 3 para facilitar a corre¸ao. Problemas introdut´rios o c´digo: 8 o finalizado em 29/08/06 Apresenta 2 quest˜es comuns sobre regras de nomes de vari´veis e tipos de vari´vel a o a a usar em determinados algoritmos. e u a c˜ Este exerc´ ıcio nasceu de uma inspira¸ao obtida olhando os exerc´ c˜ ıcios da Olimp´ ıada Brasileira de Inform´tica. Se o aluno quiser (alguns querem). o a e exerc´ pede um algoritmo de uma tarefa trivial do dia a dia do aluno. a A nota bimestral ser´ obtida fazendo a m´dia aritm´tica dos exerc´ a e e ıcios do bimestre. A seguir o princ´ de funcionamento dos sistemas a ıpio GPSs ´ mostrado. entre outros.[LG] disciplina c˜ de Algoritmos. tire c´pia a o xerox do exerc´ para guardar a cole¸ao deles. que deve ser assim interpretada: [aa] Ano atual. no qual o Jogo da Vida (Conway. 30 minutos de teoria. fax ou e-mail de exerc´ a a ıcios. [M ou N] Turno. a nota do a exerc´ ser´ dividida por 2. com peso de 60% e a prova bimestral. Pedro Kantek 14 vers˜o de 10 de fevereiro de 2008 a . somas e subtra¸oes o c˜ nestas bases s˜o pedidas. D´ ıgitos verificadores c´digo: 24 o finalizado em 04/02/01 Mostra-se a importˆncia dos DVs e depois mostra-se os algoritmos de c´lculo do CPF e a a do CNPJ. a Localiza¸˜o de um oleoduto ca c´digo: 35 o finalizado em 27/12/02 9 po¸os de petr´leo s˜o dispostos sobre uma grade de 100m × 100m. excetuando-se as bases 2. E um a convite a implementa¸ao. Entretanto. o exerc´ sugere ıcio a ıcio um ano hipot´tico (entre 1600 e 2400) e pede que o aluno calcule o dia da semana de e um dia qualquer e os 3 feriados m´veis deste ano o Pseudoc´digo X Fluxograma o c´digo: 18 o finalizado em 05/05/07 8 trechos de programa s˜o apresentados atrav´s de um fluxograma e atrav´s do pseua e e doc´digo equivalente. em alguns desses 8 trechos ambos e o s˜o equivalentes e em alguns outros trechos houve uma sutil altera¸ao ou no diagrama a c˜ ou no pseudoc´digo de maneira que ambos deixaram de ser equivalentes. S˜o 17 exerc´ a ıcios simples. variando entre c˜ e a base = 3 e base = 33. ıcio ıdo a c˜ Pseudoc´digo X Diagramas de Nassi-Schneidermann o c´digo: 18 o finalizado em 05/05/07 8 trechos de programa s˜o apresentados atrav´s de um diagrama de Nassi-Schneidermann a e e atrav´s do pseudoc´digo equivalente. o exerc´ c ıcio pergunta qual o valor de uma delas (que seguramente mudou de valor durante o processamento). a e c˜ o exerc´ mostra o c´lculo de qualquer dia da semana. Sexta da Paix˜o e Corpus Christi. O exerc´ mostra os primeiros 4 valores c a a a ıcio ´ impressos e pede que o aluno ache o oitavo elemento impresso. Chines de fun¸˜es simples co c´digo: 21 o finalizado em 03/04/06 S˜o apresentadas 5 fun¸oes de mesma estrutura com at´ 3 n´ a c˜ e ıveis de IF’s encadeados. Pedro Kantek 15 88-08. a vers˜o de 10 de fevereiro de 2008 a Fun¸˜es envolvendo se. ` c˜ 88-08. al´m de um conjunto de cerca de 15 vari´veis em cada fun¸ao. e usando os conectivos ∧ (e). a Kumon de algoritmos c´digo: 54 o finalizado em 23/06/06 Esta folha ´ para treinar os comandos b´sicos de algoritmos (se. cabendo a ele. ´ Gera¸˜o de seq¨ˆncias ca ue c´digo: 57 o finalizado em 30/12/05 Neste exerc´ s˜o apresentadas 8 fun¸oes que cont´m la¸os (loops). enquanto e repita co c´digo: 65 o finalizado em 20/04/06 Este exerc´ gera 4 fun¸oes razoavelmente complexas. e ao final. c a descobrir qual a inicializa¸ao da terceira vari´vel a partir do comportamento da fun¸ao c˜ a c˜ e dos resultados que ela gera ao ser executada. p´g 155 da edi¸ao brasileira. repita e e a para). CONTRATO PEDAGOGICO ´ CAP´ ITULO 1. As fun¸oes inicializam as vari´veis A. Al´m de mostrar a distribui¸ao de bissextos. do qual decorrem todos os feriados m´veis de nosso calend´rio: a o a Carnaval. de apenas um unico comando cada um deles. e a c˜ ´ O aluno deve seguir o fluxo e informar ao final qual o valor que ser´ impresso. CONTRATO PEDAGOGICO SEs compostos e encadeados c´digo: 17 o finalizado em 28/01/06 6 exerc´ ıcios (fun¸oes) nos quais 6 valores num´ricos aleat´rios s˜o fornecidos no in´ c˜ e o a ıcio. Engenharia reversa de algoritmos c´digo: 62 o finalizado em 31/01/06 Este exerc´ mostra 4 fun¸oes.´ CAP´ ITULO 1. N˜o h´ ainda estruturas de repeti¸ao. Finalmente. nas quais se misturam comandos ıcio c˜ se. a C´lculo de calend´rios a a c´digo: 31 o finalizado em 25/02/02 Mostra o algoritmo de Aloysius Lilius e Cristopher Clavius do s´culo XVI para calcular e o Domingo da P´scoa. Pedro Kantek 16 vers˜o de 10 de fevereiro de 2008 a . Otimo exerc´ para ser ıcio implementado. A seguir uma s´rie de comandos alternativos (SE) tanto compostos como encadeados. Depois pede-se o resultado da soma de 5 a vari´veis. Aritm´tica n˜o decimal e a c´digo: 27 o finalizado em 28/11/01 ´ E mostrada uma generaliza¸ao da aritm´tica para bases n˜o decimais. enquanto. em alguns desses 8 trechos ambos s˜o equivalentes o a e em alguns outros trechos houve uma sutil altera¸ao ou no fluxograma ou no pseuc˜ doc´digo de maneira que ambos deixaram de ser equivalentes. Na parte final de ıcio a c˜ e c cada la¸o h´ a impress˜o de uma vari´vel. O aluno deve o investigar quais dos 8 trechos s˜o efetivamente equivalentes. Convers˜es. ∨ (ou) e ∼ (n˜o). Entretanto. Em cada uma h´ 3 vari´veis. B e C no a a c˜ c˜ a come¸o. enquanto e repita. O aluno deve calcular os DVs de 2 CPFs e de 2 CNPJs. O aluno deve investigar o quais dos 8 trechos s˜o efetivamente equivalentes. Mas. cujos valores s˜o inicialıcio c˜ a a a izados no come¸o. apenas 2 destes valores s˜o mostrados ao aluno. Exerc´ extra´ do livro do Cormen. 10 e 16. Pede-se que o aluno c o a calcule de que maneira lig´-los atrav´s de tubos de maneira a minimizar a quantidade a e de tubos usados. Os algoritmos podem ou n˜o conter um pequeno erro. exclus˜o u a de todos os valores k no vetor V e achar a amplitude de um vetor). soma dos ıcio a a u e divisores de um n´ mero. a folha pede apenas o preenchimento de algumas complexidades. a a Chines de algoritmos c´digo: 77 o finalizado em 21/02/00 4 fun¸oes usuais na inform´tica s˜o mostradas: busca em cadeias. a Certifica¸˜o de algoritmos de vetor ca c´digo: 125 o finalizado em 11/07/07 Neste exerc´ s˜o apresentados 5 algoritmos de vetor (achar o maior elemento. incluir uma chave em um vetor. pedindo-se ao aluno c˜ que gere o novo cadastro atualizado bem como o relat´rio de incompatibilidades da o atualiza¸ao. Por enquanto. e Manuseio de tabelas II c´digo: 119 o finalizado em 10/08/06 S˜o mostrados 5 algoritmos: inclus˜o em tabelas desordenadas. Todos eles exigem implementa¸˜o nas aulas de laborat´rio. junto com o c´digo de cada fun¸ao pedindo-se ao aluno que infira os a o c˜ resultados que ser˜o produzidos. c˜ c˜ a Indexa¸˜o e indire¸˜o ca ca c´digo: 110 o finalizado em 18/02/01 Dados 3 vetores de 16 valores num´ricos cada e dadas 5 vari´veis num´ricas globais. quantas vezes um elemento existe no vetor. validar uma data e alocar u e u bolas de brinquedo). 2 ou 3 vari´veis. a base cont´m cerca de 10 exerc´ e ıcios distintos. Para cada uma das aulas. ıcio c˜ c˜ c˜ Busca simples em tabela Gen´rico de constru¸˜o de algoritmos e ca c´digo: 70 o finalizado em 02/01/06 Este exerc´ comporta uma base de dados de exerc´ ıcio ıcios para uso em muitas aulas de algoritmos. ordena¸ao por inser¸ao e soma de colunas em uma matriz. moda e mediana e responder se o vetor est´ em ordem). achar o n´ mero da maior palavra em uma frase. a Achar o 10 termo de uma seq¨ˆncia ue o c´digo: 73 o finalizado em 04/06/06 Este exerc´ mostra 20 seq¨ˆncias de 7 n´ meros cada. calcular a a m´dia. O exerc´ oferece dois arquivos de 30 registros ıcio cada (o arquivo de cadastro antigo e o arquivo de movimenta¸oes). ca o c´digo: 116 o finalizado em 07/08/06 Este exerc´ descreve o mecanismo das tabelas. 88-08. busca bin´ria e inclus˜o a a a a em tabela ordenada. m´dias em um vetor c˜ a a e num´rico. ao final da execu¸ao de cada fun¸ao. busca linear ordenada e e busca linear com sentinela). Pedro Kantek 18 vers˜o de 10 de fevereiro de 2008 a . exclus˜o puxando os a a a sobrantes. exclus˜o preenchendo com um indicador de exclus˜o. onde ıcio a est´ uma determinada chave. O aluno a deve descobrir quais est˜o errados e quais est˜o certos. depende da aula) a de exerc´ ıcios distintos. cujo valor ´ desconhecido. ıcio c˜ a Na parte de busca. Dados de entrada e c˜ c˜ s˜o fornecidos. cada um deles receber´ 4 (5 ou 6. a Balance Line c´digo: 84 o finalizado em 02/03/00 O algoritmo de balance line ´ mostrado e ´ discutida a sua importˆncia para atualiza¸ao e e a c˜ em lote de grandes volumes de dados. Ao gerar as folhas para os alunos. Cada uma ´ resultado de um ıcio ue u e ciclo para no qual est˜o envolvidas 1. Ao a a e aluno cabe: sugerir valores para x. Cada fun¸ao recebe 5 valores mostrados. apresenta e compara 3 t´cnicas (busca linear. Pede-se que o aluno calcule e a c˜ informe. O aluno deve implementar os 3 algoritmos e inferir o desempenho deles nas 3 t´cnicas. achar a potˆncia de um n´ mero. Pedro Kantek 17 88-08. y e z verificar se os valores sugeridos geram a seq¨ˆncia dada ue corrigir – se necess´rio – e voltar a testar a ap´s o acerto. suas opera¸oes de inclus˜o e exclusao. As folhas s˜o todas iguais entre si. Perguntas s˜o feitas sobre o conte´ do dessas duas sa´ c˜ a u ıdas vers˜o de 10 de fevereiro de 2008 a Certifica¸˜o de algoritmos de vetor ca c´digo: 125 o finalizado em 11/07/07 Neste exerc´ s˜o apresentados 5 algoritmos de vetor (ver se uma frase ´ pal´ ıcio a e ındromo. o valor da soma das 5 vari´veis originais. Os algoritmos podem ou n˜o conter um pequeno erro. o e a e exerc´ pede que o aluno ache o resultado de 48 opera¸oes de indexa¸ao e de indire¸ao. Os algoritmos podem e a ou n˜o conter um pequeno erro. gerar e responder o 10o termo. CONTRATO PEDAGOGICO ´ CAP´ ITULO 1. o Certifica¸˜o de algoritmos b´sicos ca a c´digo: 125 o finalizado em 11/07/07 Neste exerc´ s˜o apresentados 5 algoritmos b´sicos (um n´ mero ´ primo ?. O aluno deve descobrir quais est˜o errados e quais a a est˜o certos.´ CAP´ ITULO 1. O aluno deve descobrir quais est˜o errados e quais est˜o a a a certos. CONTRATO PEDAGOGICO Chines de algoritmos II c´digo: 69 o finalizado em 29/02/00 4 fun¸oes geradas aleatoriamente. mas que garantidamente executam em tempo finito c˜ s˜o mostradas. D´-se um curso c˜ a universit´rio composto de cerca de 15 mat´rias com diversas rela¸oes de pr´-requisitos.. quando nem sempre h´ um algoritmo conhecido e correto. Isto atrapalha o uso de conversores livremente dispon´ ıveis para resolver o problema proposto. Quem ficar com o retˆngulo 1×1 perde. e a e pede-se que o aluno monte a grade proposta. Dada uma a e certa altura da mar´. O segundo descreve um truque de adivinha¸ao de cartas e pede o c˜ que o aluno resolva 3 instˆncias desse truque. c N´meros romanos u c´digo: 144 o finalizado em 16/09/06 Apresenta o sistema romano de numera¸ao. al´m e de diversos obst´culos (dados pelas coordenadas de suas extremidades). Depois uma lista de 9 operadores ´ tamb´m mostrada. e pergunta como ficaram todas as N lˆmpadas. vers˜o de 10 de fevereiro de 2008 a Caminho e Vulc˜o a c´digo: 155 o finalizado em 11/08/07 Dois exerc´ ıcios baseados em similares pedidos na Olimp´ ıada Espanhola de Inform´tica. O aluno deve a calcular qual o menor caminho da origem ao destino. o menor peda¸o ´ c e desprezado e segue o jogo. oferece um retˆngulo de dimens˜es inteiras. c˜ a Existe uma ilha rasa e o seu propriet´rio estabelece uma s´rie de cercas. ocorrido na a Polˆnia. O algoritmo ´ mostrado e um exemplo completo est´ c˜ e a descrito na folha. tesponder quem ganhou a elei¸ao). o que torna mais complexa a busca. O primeiro. Finalmente.4. CONTRATO PEDAGOGICO ´ CAP´ ITULO 1.) O exerc´ informa algumas lˆmpadas o o ıcio a que devem ficar acesas e outras apagadas. A regata apresenta as coordenadas de um ponto de origem e de um ponto de destino. No segundo. 3=s´ as pares 4=1. aplicada ` c˜ e e a estrutura de dados rec´m definida. uma matriz com elementos abaixo da diagonal principal zerados (um grafo n˜o dirigido ?). d´ um estoque de azulejos de tamanho pequeno m´dio e a e grande respectivamente e pede a disposi¸ao de custo m´ c˜ ınimo para azulejar uma piscina de dimens˜es dadas. a a Universidade Pinguinhos c´digo: 148 o finalizado em 07/10/06 Problema retirado da Maratona de Programa¸ao de 2005 da ACM. j´ que resolve apenas algumas instˆncias (e n˜o outras). Os algoritmos podem ou n˜o conter um pequeno erro. O aluno ´ convidado a aplicar dois operadores soe e bre 2 cubos aleat´rios e depois ¨ o ıdeve resolver uma instˆncia trivial do cubo (apenas 2 a movimentos). depois a multiplica¸ao de 2 matrizes e finalmente a solu¸ao de a c˜ c˜ um sistema de equa¸oes lineares. calcular o e produto de duas matrizes e dada uma matriz com dados eleitorais. o aluno ´ convidado a resolver (a m˜o ou usando o e a computador. CONTRATO PEDAGOGICO Certifica¸˜o de algoritmos de matriz ca c´digo: 125 o finalizado em 11/07/07 Neste exerc´ s˜o apresentados 5 algoritmos de matriz (achar o vetor soma na vertical.´ CAP´ ITULO 1. 2=s´ as impares.7. um vulc˜o descrito pelas altitudes de seus platˆs. pergunta-se quanto de ´rea da ilha permanece seco. H´ 6 convers˜es em cada sentido para a a o o aluno fazer. sugere N ıcio lˆmpadas inicialmente acesas. Feito o corte. Os algoritmos de convers˜o de ar´bico c˜ a a para romano e vice-versa s˜o apresentados. e c˜ o c´digo: 151 o finalizado em 28/10/06 Dois exerc´ ıcios retirados da maratona de Programa¸ao da ACM dos anos de 2005 e 2004 c˜ respectivamente. a Regata e Luzes da festa c´digo: 152 o finalizado em 03/08/07 O primeiro exerc´ ıcio ´ da olimp´ e ıada ACM de 2005 e o segundo da IOI de 1998. uma matriz de letras ´ estabelecida e pede-se o caminho que estabelece e uma palavra dada. e a quantidade m´xima de mat´rias por semestre. Fazenda de ostras de Zing Zhu c´digo: 139 o finalizado em 24/09/06 Este problema foi retirado da Maratona de Programa¸ao da ACM do ano de 2004. a e c˜ e Estabelecida a prioridade das mat´rias. o c˜ o Manipula¸˜es no cubo Rubik co c´digo: 135 o finalizado em 21/09/06 O cubo Rubik ´ apresentado e ´ sugerida uma estrutura de dados que suporte manipe e ula¸oes sobre ele. Ele c˜ apresenta uma quase-solu¸ao.. que podem ser controladas atrav´s de 4 bot˜es (1=chaveia a e o todas. a escolha ´ dele) um sistema com 8 equa¸oes e 8 inc´gnitas. Uma totaliza¸ao nos dois sentidos. O aluno deve c˜ a descobrir quais est˜o errados e quais est˜o certos. c˜ a a a O objetivo do exerc´ ´ exatamente discutir a freq¨ˆncia com o profissional encontra ıcio e ue esta situa¸ao no mundo real. Pedro Kantek 20 vers˜o de 10 de fevereiro de 2008 a . O exerc´ das luzes. a o derrama lava e o problema pede que o aluno descubra para onde vai a lava nos diversos instantes discretos de tempo 88-08. Piscina/M´gico a Matrizes c´digo: 128 o finalizado em 22/08/06 Apresenta 5 algoritmos de matrizes. a ap´s a aplica¸ao dos bot˜es de controle. achar o vetor menor na horizontal. e a Jogo do Retˆngulo a c´digo: 153 o finalizado em 09/11/07 Este exerc´ extra´ da Olimp´ ıcio ıdo ıada Internacional de Inform´tica de 2005. Pedro Kantek 19 88-08. o c´lculo da c˜ a matriz transposta. ıcio a calcular uma m´dia ad-hoc na matriz. Deve-se alertar o fato de que na convers˜o de ar´bico → romano h´ a a a v´rias respostas poss´ a ıveis (todas corretas) devendo o aluno fazer aquela que ´ dada pelo e algoritmo estudado. Cada jogador pode fazer 1 corte o a o (vertical ou horizontal) sempre em unidades inteiras. Dadas 3 instˆncias (2 vencedoras e 1 perdedora) pede-se que c˜ a o aluno identifique a perdedora e ofere¸a o lance ganhador nas outras 2. Note-se que a matriz tem as extremidades ligadas. S˜o dados os m´todo a a e de solu¸ao e os algoritmos. a No primeiro. No primeiro problema ´ definido um crit´rio e e definidor de uma seq¨ˆncia bin´ria. No primeiro problema pede-se qual a delimita¸ao c˜ de uma reserva florestal que congregue o maior n´ mero poss´ u ıvel de macacos prego a partir dos dados parciais de suas apari¸oes. No segundo. No segundo um mapa de estradas com alturas m´ximas a e a s˜o dadas e pede-se qual a carga mais alta que pode ser levada de uma cidade a outra. Balaios e Meteoros e c´digo: 161 o finalizado em 08/01/08 3 problemas baseados na prova da OBI. c˜ vers˜o de 10 de fevereiro de 2008 a Furos. No primeiro problema s˜o dadas informa¸oes a c˜ sobre frete e o aluno deve escolher o transporte por trem ou por caminh˜o. Macaco prego e visita ao MASP c´digo: 160 o finalizado em 08/01/08 2 problemas baseados na prova da OBI. Aeroporto e Ped´gio na Cor´ia a e c´digo: 163 o finalizado em 17/01/08 3 problemas baseados na prova da OBI. No terceiro. robo e restaurante a c´digo: 157 o finalizado em 03/01/08 3 problemas baseados na prova da OBI. Trata-se de um problema de minimiza¸ao. No primeiro problema s˜o dadas duas a cadeias de DNA e o aluno deve localizar as correspondˆncias da cadeia original e de sua e complementar. No segundo. CONTRATO PEDAGOGICO Genoma e Palavras cruzadas c´digo: 156 o finalizado em 31/12/07 2 problemas baseados na prova da OBI de 1999. a a a Finlˆndia. No primeiro problema pede-se qual o menor diˆmetro de uma chapa redonda que cobre todos os furos cujos centros s˜o dados. 10. Senha banc´ria e Orkut a c´digo: 165 o finalizado em 22/01/08 3 problemas baseados na prova da OBI. No segundo problema. Trem/caminh˜o. deve-se escolher qual o o a per´ ıodo em que um certo grande time teve o maior saldo de gols (n˜o t˜o f´cil). dados de entrada e saida de pessoas em um a restaurante s˜o dados e pergunta-se: qual o maior n´ mero de pessoas que estiveram em a u um dado momento dentro do recinto ? Domin´. a e o terceiro pergunta quais cidades uma pessoa pode alcan¸ar gastando no m´ximo P c a ped´gios. No primeiro problema pede-se quem ganhou um concurso (f´cil). No primeiro problema pede-se quantas cidades um ciclista pode visitar na Finlˆndia. desde que uma caixa nao ultrapasse nenhuma dimens˜o da caixa que est´ abaixo a a Seq. da-se uma rede ´tica com seus custos por ramo e o pede-se o menor custo de liga¸ao (´rvore de cobertura m´ c˜ a ınima). a Finalmente. d˜o-se diversas caixas de diversas dimens˜es a o e pergunta-se qual a altura da maior pilha poss´ ıvel. c An´is quadrados. carga pesada e rede ´tica o c´digo: 158 o finalizado em 04/01/08 3 problemas baseados na prova da OBI. um tabuleiro de palavras cruzadas de dimens˜o a conhecida ´ dado e s˜o dadas as localiza¸oes das casas pretas. usando notas de 50. No primeiro problema pede-se qual a configura¸ao quando v´rios an´is quadrados s˜o vistos de cima. d˜o-se diversos artigos com seus autores. Pedro Kantek 22 vers˜o de 10 de fevereiro de 2008 a . O aluno deve numerar o e a c˜ tabuleiro e informar os endere¸os das palavras na horizontal e na vertical. 5 e 1. O segundo pede determinar c˜ a e a qual a seq¨ˆncia de produ¸ao de balaios que minimiza a multa por atraso e o terceiro ue c˜ determina uma fazenda e diversos locais de queda de meteoritos. Pedro Kantek 21 88-08. 3 ou 4 digita¸oes de senhas em um banco eletrˆnico. e no terceiro. No segundo problema. e pede-se o n´ mero de a u Erdos de 3 deles. deve-se informar a quantas e quais notas comp˜e um valor (f´cil).´ CAP´ ITULO 1. troca de notas e saldo de gols c´digo: 159 o finalizado em 04/01/08 3 problemas baseados na prova da OBI. d˜o-se o a a diversos trajetos de sorveteiros e pergunta-se qual a parte da praia que ficar´ atendida a por pelo menos um sorveteiro. Supermercado e N´mero de Erdos a u c´digo: 164 o finalizado em 18/01/08 3 problemas baseados na prova da OBI. o roteiro de uma visita `s c˜ a obras do MASPdeve ser estabelecido minimizando o esfor¸o e priorizando as obras mais c importantes. CONTRATO PEDAGOGICO ´ CAP´ ITULO 1. No a a segundo s˜o dadas 2. desde que n˜o tenha que subir nada. No primeiro problema d˜o-se 2 valores (de Jo˜o a a e de Jos´) e o conte´ do de uma arca do tesouro. no terceiro problema. pedindo-se a c˜ o ao aluno que deduza a senha original correta e no terceiro pede-se que o aluno indique se ´ ou n˜o ´ poss´ criar uma comunidade Orkut com as regras que l´ s˜o dadas. a a pede-se a melhor localiza¸ao para um centro de distribui¸ao de uma rede de supermec˜ c˜ rcados. No primeiro problema pergunta-se se um dado conjunto de pedras de domin´ podem ou n˜o formar um jogo. a Quermesse. Tesouro. No terceiro.H. 4 seq¨ˆncias d˜o dadas e pergunta-se se elas atendem ue a ue a ou n˜o ao crit´rio (recursivo). No terceiro. O segundo pergunta qual aeroporto ficar´ mais congestionado. sorvete e pirˆmide de caixas o a c´digo: 162 o finalizado em 09/01/08 3 problemas baseados na prova da OBI. e a e ıvel a a 88-08. perguntando quantos ca´ ıram dentro da fazenda. No segundo. A pergunta ´ se ´ poss´ e u e e ıvel ambos terem o mesmo valor. No segundo o a caminho de um robot ´ dado por suas coordenadas e pergunta-se quantas voltas (giros) e sobre si mesmo o robot d´. 1989. e ˜ ˆ GUI75 GUIMARAES. e FOR72b FORSYTHE. Volumes 1 e 2. S˜o da fase introdut´ria (para alunos a o de 2. Flores (2). Newton Alberto de Castilho. definem-se os buracos de minhoca como liga¸oes entre partes do universo e c˜ a partir do mapa delas. 1972.grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao. pergunta-se se todos os planetas desse universo podem ser acessados. furos e frota de taxis c´digo: 166 o finalizado em 22/01/08 3 problemas baseados na prova da OBI. Donald E. et all. S˜o da fase introdut´ria (para alunos a o de 2. S˜o eles: Mapas a colorir (2). Harry et all. Horta da Maria c˜ a (1) e Sanduiche do Jo˜o (1). H. The Art of Computer Programming.´ CAP´ ITULO 1. 10 problemas a base de papel e l´pis a c´digo: 170 o finalizado em 17/12/07 10 problemas baseados na prova da OBI de 2003. 1975. CONTRATO PEDAGOGICO ´ CAP´ ITULO 1. hidrologia c˜ a (1) e Tornado (1). . a c˜ vers˜o de 10 de fevereiro de 2008 a 23 88-08. et all.grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao. Rio de Janeiro. S˜o da fase introdut´ria (para alunos a o de 2. o c˜ FAR85 FARRER. Alexandra I. 624p. S˜o da fase introdut´ria (para alunos a o de 2. a c˜ Apenas de solu¸ao de problemas. Rio de Janeiro. Analista (2). azulejos (1) e transporte de alunos (2). Colheita de minhocas. 560p. Ciˆncia de Computadores .grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao. Torneio de tenis (2). Ciˆncia de Computadores . Vole ume 2. S˜o Paulo. Algoritmos e estruturas de dados. 1985.grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao. S˜o eles: Excurs˜o dos alunos(2). Semana de provas (1) e Futebol(2). PrenticeHall do Brasil. c˜ 6 problemas a base de papel e l´pis-c a c´digo: 173 o finalizado em 22/12/07 6 problemas baseados na prova da OBI de 2006. e EBERSPACHER. Addisonb Wesley Publishing Company. 245p. Clara e Luiz c˜ a (1) e Economia do transporte(2). LTC. maionese(1) e mapas da c˜ a prefeitura(2) 7 problemas a base de papel e l´pis-d a c´digo: 173 o finalizado em 22/12/07 7 problemas baseados na prova da OBI de 2006. 241p. curso.1. no terceiro o aluno deve decidir se abastece uma frota com a ´lcool ou com gasolina. a c˜ Apenas de solu¸ao de problemas. c˜ 7 problemas a base de papel e l´pis-a a c´digo: 173 o finalizado em 22/12/07 7 problemas baseados na prova da OBI de 2006. (Programa¸ao estruturada de computadores). V. Pedro Kantek 24 vers˜o de 10 de fevereiro de 2008 a . S˜o eles: Ciclo de palestras (2). S˜o da fase introdut´ria (para alunos a o de 2. Ao Livro T´cnico. L. Alexandra I. 5 problemas a base de papel e l´pis-k a c´digo: 171 o finalizado em 18/12/07 10 problemas baseados na prova da OBI de 2004. a c˜ Apenas de solu¸ao de problemas. a c˜ Apenas de solu¸ao de problemas.grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao. Finalmente. Wilson.1. F. Massachussets. Rio de Janeiro. ERICA. Algoritmos e estruturas de dados.L´gica de Programa¸ao. S˜o eles: supermercado(2). 1972. a c˜ Apenas de solu¸ao de problemas. Volume e 1. No o a segundo. c˜ o 5 problemas a base de papel e l´pis-a a c´digo: 171 o finalizado em 18/12/07 5 problemas baseados na prova da OBI de 2004. KNU71 KNUTH. A. Niklaus. No primeiro problema pde-se determinar o valor da colheita usando a trajet´ria otimizada de uma m´quina de colheita de minhocas. Pedro Kantek 88-08. S˜o da fase introdut´ria (para alunos a o de 2. S˜o eles: Equipe de software (2). 1990. S˜o eles: Atendimento ao consumidor(2). SIL90 SILVA PINTO. 10 problemas a base de papel e l´pis a c´digo: 172 o finalizado em 19/12/07 10 problemas baseados na prova da OBI de 2005. curso. S˜o da fase introdut´ria (para alunos a o de 2. S˜o da fase introdut´ria (para alunos a o de 2. Rio de Janeiro. 201p. Bibliografia para Algoritmos ¨ FOR05 FORBELLONE. 234p. a c˜ Apenas de solu¸ao de problemas. MP3 (3). a c˜ Apenas de solu¸ao de problemas. Rio de Janeiro. Algoritmos estruturados. Casa c˜ a mal afamada (1) e Nota¸ao p´s-fixa (1). 216p. a WIR89 WIRTH. 1971. CONTRATO PEDAGOGICO Apenas de solu¸ao de problemas. Ao Livro T´cnico.grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao.grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao. Introdu¸ao ao desenvolvimento de algoritmos e estruc˜ ´ turas de dados. Angelo de Moura & LAGES. Pane seca c˜ a (1) Linguagem de programa¸ao (2). Reading. Conjunto de rock c˜ a a (2). c˜ FOR72 FORSYTHE. 6 problemas a base de papel e l´pis-b a c´digo: 173 o finalizado em 22/12/07 6 problemas baseados na prova da OBI de 2006. Guanabara. N˜o est˜o neste material e ser˜o aplicados diretamente em a a a a sala de aula.grau) e portanto n˜o exigem nenhum conhecimento especializado de programa¸ao. S˜o eles: Pantanal (2). fui selecionado e virei delegado do INEP (Instituto Nacional de Pesquisas Educacionais) do Governo Brasileiro. curitibano e a coxa-branca com muito orgulho. Comecei essa desafiante carreira em 1976. al´m de Inteligˆncia Artificial (´ lc c˜ e e u timo ano de Engenharia da Computa¸ao). idem). fui para a engenharia civil. coordenador de auto-servi¸o. rapidamente para n˜o perder o fˆlego. Para minha surpresa. 222p). Desde cedo encasquetei que uma boa a o maneira de me obrigar a continuar estudando a vida toda era virar professor. foram 6 anos inesquec´ o o ıveis. dando aula num lugar chamado UUTT.ano. Depois vieram outros...ano. engenharia e ciˆncia da computa¸ao. l´ por 1972. CONTRATO PEDAGOGICO ´ CAP´ ITULO 1. Luiziˆnia. resolvi voltar a estudar e fui fazer o mestrado em inform´tica ina dustrial no CEFET. 1987.. Durante a copa do mundo de futebol de 1974 na Alemanha. e e Finalmente virei engenheiro. Pedro Kantek 26 vers˜o de 10 de fevereiro de 2008 a .´ CAP´ ITULO 1. Em 93 virei mestre. ao folhear a c˜ Gazeta do Povo. a Floripa. Nessa ´poca ainda n˜o havia cursos a e a superiores de inform´tica. foi o quarto livro de minha carreira de escritor. Passei por FAE. estudando inglˆs. Rio de Janeiro: Cama a pus. Terminando o mestrado. e a antes j´ havia 3 outros (MS WORD . que n˜o existe a mais. PUC e cheguei `s Faculdades Positivo em 1988. 240p. Atc ualmente estou na ´rea de governo eletrˆnico. h´ muitos anos. Centro de Informa¸oes. Rio Grande. Rio de Janeiro: Campus. 25 anos depois de ter iniciado a engenharia civil. Aprendi a falar em castellano. engatei o doutorado em engenharia el´trica. J´ fiz um bocado de coisas na vida. mais de 30 anos ap´s. a a c˜ e c˜ Atualmente estou licenciado da PUC e no UNICENP respondo por 4 cadeiras: Algoritmos (1. Fortaleza. Na CELEPAR a o a j´ fui de tudo: programador. achei um pequeno an´ ncio sobre um est´gio na ´rea de processamento u a a de dados (os nomes inform´tica e computa¸ao ainda n˜o existiam). Sou portanto brasileiro. . do qual – lastimavelmente – boa parte delas a a nunca chega sequer perto ao longo de sua vida. Recife. quando ainda tinha abundante cabeleira a 25 88-08. L´ fui eu para um a c˜ a a est´gio na CELEPAR. Curitiba. ano de sistemas de informa¸ao). Nasci em Curitiba h´ mais de 50 anos. coordenador de atendimento. Rio. Sou o decano a do curso de inform´tica e um dos mais antigos professores da casa..Guia do Usu´rio Brasileiro. Em 2003. CONTRATO PEDAGOGICO O autor. at´ e porque nesse meio tive que aprender o francˆs . 1994. c˜ CELEPAR. Bras´ ılia. o pora e tuguˆs ´ portanto meu segundo idioma. ainda n˜o acabou. Rondon´polis.mais um mˆs em Paris aprendendo-o. . O primeiro cheque dos direitos autorais me manteve um mˆs em e Nova Iorque. Estudei no Col´gio Bom Jesus e quando chegou e e e a hora de escolher a profiss˜o. ISBN:85-7001-383-3 e APL . S´ terminou em 2000. a a habilitei-me a avaliador de cursos para o MEC. Formei-me em matem´tica na PUC/Pr em 1981. ou Pedro e Kantek. mas sendo filho de espanh´is (meus 7 irm˜os nasceram o a l´). 250p. a e virei instrutor itinerante de uma empresa chamada CTIS de Bras´ ılia. pelo autor Meu nome ´ Pedro Luis Kantek Garcia Navarro. Esqueci de dizer que no meio do curso de Civil desist´ (c´ pra n´s o assunto era meio chato. entre outros).Uma linguagem de programa¸ao.. analista. S˜o Paulo. Rio de Janeiro: Campus. Em 90. sempre avaliando os curo a sos na ´rea de inform´tica: sistemas de informa¸ao. Ali´s. visitei lugares deste Brasilz˜o que sequer imaginava existirem (por a exemplo. c˜ 1985. c˜ ISBN:85-7001-926-2). 1982. suporte a TP a (teleprocessamento).). Na d´cada de 80. Estrutura de Dados (2. que hoje. vers˜o de 10 de fevereiro de 2008 a O autor. Ainda peguei a ultima leva dos professores franceses que iniciaram ´ o curso. mas sem muita a a convic¸ao. conhecido como Kantek. tenho tamb´m a nacionalidade espanhola. mas acho c˜ a que um dos meus sonhos ´ um dia ser professor de matem´tica para crian¸as: tentar e a c despert´-las para este mundo fant´stico. ISBN:85-7001-507-0. suporte a BD (banco de dados).. idem) e T´picos c˜ o Avan¸ados em Sistemas de Informa¸ao (4. e a minha disserta¸ao foi publicada em livro pela editora c˜ Campus (Downsizing de sistemas de Informa¸ao.) em ı a o favor de algo muito mais emocionante: matem´tica. Pedro Kantek 88-08. 103p. Ele se iniciou em a o e 1994 na UFSC em Florian´polis. De novo. e dei um monte de cursos por este Brasil afora (Manaus. Agora o a c˜ e o conte´ do de um c´rebro pode ser repassado a outro. Gerald Weinberg. A fabrica¸ao de hardware ´ engenharia. componente f´ ısico. software.. m´ sica. O computador nasce na cabe¸a de um cientista inglˆs (Alan Matheson Turing em c e 1937) e ´ constru´ para a guerra pelos ingleses em 1942. filmes. duro (hard).000 de anos. Talvez retornemos a d´ vida de Plat˜o (o universo existe ou ´ ` u a e apenas uma sensa¸ao que eu tenho? )..→ aritm´tica o computador se transforma em super-calculadora.ˆ CAP´ ITULO 2.. De fato. Finalmente. Esta c a foi a primeira tentativa de explorar qualquer planeta. em ”O manifesto”. a e 4. Mais tarde. Depois. dar´ errada.000. O c˜ c nome ´ inteligˆncia extrassom´tica. O nome ´ conhecimento extrassom´tico e a 27 28 vers˜o de 10 de fevereiro de 2008 a . o c´rebro pode are mazenar pouco. Aparece aqui o DNA o (´cido desoxi-ribonucleico) o elemento comunicador da heran¸a. Est´ mais para arte do que para engenharia. O foguete desviou-se do curso e foi destruido. → u . n˜o o ´ muito. os dois sujeitos tem que estar tˆte-`-tˆte. um computador precisa – antes de qualquer coisa – ser a programado para fazer algo.. com toda a contradi¸ao a c˜ exposta no t´ ıtulo. Hoje o homem mais rico e e do mundo construiu a sua fortuna vendendo um software. Sua produ¸ao pode ser planejada e otimizada c˜ e c˜ e isso de fato ´ feito. CIENCIA DA COMPUTACAO ¸˜ 5. A seguir. gra¸as a um. a do autom´vel e u o o e finalmente no final do s´culo. citado por James Martin. A fabrica¸ao de software. J´ a programa¸ao recebe o nome de a c˜ software significando mole (soft em oposi¸ao a hard). surgem os animais superiores e nestes o c´rebro e passa a ser respons´vel pelo local onde o conhecimento ´ produzido e armazenado. mp3. Apesar de testes e depura¸oes exc˜ c˜ tensas. a ind´ stria de computadores passou a ser a maior. a despeito de ser chamada de engenharia.. Ele tem enorme importˆncia nesta hist´ria ao permitir a o que os filhos herdem um poco do DNA do pai e um pouco da m˜e. Este erro causou a falha da miss˜o inteira a um custo de a a US$ 18. Tecnicamente. No a texto original de Turing isto fica claro pela conceitua¸ao de uma m´quina universal. c˜ a Assim. Em 22/jul/62 um foguete foi lan¸ado com a miss˜o de chegar a Venus. A pr´xima novidade e a o ´ a imprensa que ao automatizar a produ¸ao de textos. O pr´ximo est´gio de amplia¸ao ´ quando surge a fala. cripe e e tografia. c˜ 3... e 6. o ultimo est´gio da amplia¸ao do conhecimento reside no software... diferentemente de um liquidificador (que s´ serve para picar comida e tem apeo nas um bot˜o de liga-desliga). Enquanto a escrita ´ manuscrita. os neg´cios passam a ser otimizados pelo o o computador.5 milh˜es. e c˜ c´ entre n´s. → e e aldeia global Neg´cios. e a e Agora a comunica¸ao ´ poss´ na modalidade um-muitos (Antes era um-um) e c˜ e ıvel mesmo um c´rebro morto pode se comunicar pela escrita. . surge o sexo. tabelas bal´ ısticas. a omiss˜o de um simples h´ a ıfen num dos comandos de um programa n˜o foi detectada. e e a Durante o s´culo XX a maior ind´ stria foi a do petr´leo. ´ a c˜ Hoje. sem precisar fazer um o exaustivo aprendizado sobre as regras da declara¸ao. Surge e se robustece a Internet. O FORTRAN ´ dessa ´poca. As casas de classe m´dia passam a contar e e com um (ou mais de um) computador. a Lei de Murphy 2. Trecho do livro ”Software Testing Techniques”de Boris Beizer. etc. se comprar um computador vazio e lig´-lo. acelerando a a evolu¸ao. n˜o f´ c˜ o a ısico. governos. e-mule... Com a fala. Investiga¸oes posteriores revelaram que o respons´vel pelo problema foi um c˜ a erro de programa¸ao dos computadores. a Alguns deles acabam custando caro. componente l´gico. → realidade virtual N˜o se sabe direito o que vir´ por aqui. ele n˜o a a vai fazer nada. → a e e e neg´cios em plena sociedade capitalista. pesquisa operacional.000. programa de computador. e 2. a e Denomina-se esta fase ` do conhecimento extragen´tico. por excelˆncia. Pedro Kantek Cap´ ıtulo 2 Ciˆncia da Computa¸˜o e ca Programas de qualquer tamanho est˜o sujeitos a conterem ”bugs”(erros).. A e u tendˆncia para o futuro ´ de que ela suplante todas as demais. c˜ c˜ 7. H´ uns 3. Foi o primeiro e a c at´ hoje bem importante local onde se armazenou o conhecimento. o Se o construtores constru´ ıssem edif´ ıcios da mesma forma que os programadores escrevem programas. a o a e a 88-08. A matem´tica passa a e a ser a linguagem da inform´tica. amplia significativamente e c˜ o acesso e a dissemina¸ao de informa¸oes. Dessa ´poca ´ o COBOL a linguagem representante. → c lazer o computador vira um eletrodom´stico.1 Representa¸˜o do conhecimento ca Se olharmos a hist´ria deste nosso pequeno planeta e abstrairmos a hip´tese Teol´gica o o o (j´ que cientificamente ela n˜o tem comprova¸ao) veremos uma hist´ria mais ou menos a a c˜ o assim: 1. c˜ O computador se diferencia de qualquer outra m´quina pela sua generalidade. est´ naturalmente limitada.. capazes de – entre a outras coisas – se reproduzirem por c´pia de si mesmos. Enquanto limitado ao conhecimento localmente produzido. Um bocado de tempo depois. c˜ Se alguma coisa pode dar errada. chama-se a parte f´ ısica do computador de hardware significando ferragem. A seq¨ˆncia de escopo do e ıdo ue computador ´ e guerra a id´ia aqui ´ usar o computador como otimizador dos recursos b´licos. 23 milh˜es de brasileiros sabem declarar seu IR. o primeiro pica-pau poderia destruir a civiliza¸ao. surgem os primeiros seres vivos.. com resultados melhores e u e crescentes. Jogos. As t´cnicas de simula¸ao a a e c˜ levadas ao paroxismo permitir˜o criar realidades virtuais. surge a escrita. universidades e organiza¸oes sociais passam a como c˜ partilhar o ciberespa¸o. Este artigo era t˜o in´dito que quase n˜o ´ publicado: a e a e faltavam revisores que o atestassem. aritm´tica. Deixe esfriar por 10 minutos. 250g de manteiga e ´ a 1 colher de ch´ de sal. Java. os programas s˜o longos e dif´ u c˜ a ıceis (principalmente sua manuten¸ao). Era um autˆntico e samba do crioulo doido. C.. algo assim como 0 0 1 a ue a 0 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1. Assim. 2. essa arquitetura prevˆ a existˆncia da mem´ria. Pedro Kantek 29 88-08. mas descrever detalhadaa mente todas as etapas da solu¸ao. equivaleria ao engenheiro brasileiro descrevendo tin-tin por tin-tin todos os passos para montar uma engenhoca qualquer. Eis aqui a seq¨ˆncia de Fibonacci e ue 1. 1 colher de ch´ de baunilha. o engenheiro brasileiro ´ o programador. 13. canais e o elemento ativo: a unidade de controle. s˜o constru´ a ıdos todos os programas que existem ou que existir˜o em nosso mundo usando este tipo de computador. c˜ Linguagem de baixo n´ ıvel ´ aquela que requer a especifica¸ao completa do problema e c˜ nos seus m´ ınimos detalhes. Distribua as passas no fundo de uma forma grande e e untada de manteiga. e a c˜ a a uma aproxima¸ao do mesmo em rela¸ao ao problema a resolver. E. O hardware s´ eno tende uma linguagem de pulsos el´tricos (chamada de linguagem de m´quina). at´ hoje e usado. o a¸ucar. ADA. o chocolate e o sal em uma panela e ´ c leve ao fogo. Reduza o fogo e continue a fervura at´ o ponto de e e caramelo. Dbase. A tecnologia tem substitu´ a linguagem “da vez” mais ou menos a cada 8. Todas as linguagens compartilham uma estrutura parecida. A m´quina precisa e a ser conhecida em in´ meros detalhes de constru¸ao. o Como na vida real. J´ a as linguagens de alto n´ ıvel. O conceito matem´tico de computador est´ l´. Fica claro por estes dois exemplos. a produ¸ao c˜ e c˜ de software ainda exige um bom c´rebro cinzento por tr´s. APL. 1. Prolog. a Uma pergunta que se pode fazer aqui. movimenıda e ta¸ao em mem´ria. H´ um distanciamento do programador em rela¸ao ` m´quina. A maioria desses tradutores recebeu o mesmo a nome da linguagem que eles traduzem. s´ entende a linguagem el´trica). meia x´ c ıcara de leite condensado. Ele diz o que deve ser feito. Junto com c˜ a a este programa criou-se a primeira linguagem digna deste nome: o assembler. Retire do fogo e deixe esfriar por 10 min. c a Exerc´ ıcio 2 Seja agora um exemplo num´rico. Essa estrutura comporta e o os seguintes tipos de comandos (ordens): entrada-sa´ de dados. Ele o e precisa transmitir certas ordens de fabrica¸ao para um colega sovi´tico. Prolog e outras menos votadas: BASIC. c˜ Podemos ainda estabelecer dois n´ ıveis para linguagens de programa¸ao: baixo e alto. No nosso exemplo. corre-se o risco de misturar quest˜es do o problema (do algoritmo) com quest˜es do programa (da linguagem). . 5. mas apostar todas as suas fichas em uma unica pode ser a a a ´ perigoso. corte em peda¸os e o bolo est´ pronto para ser comido. mais tarde. ´ mas provavelmente n˜o haver nenhum resultado pr´tico util. o primeiro melhoramento: o assembler (ou montador). que s´ conhece o idioma portuguˆs. condicional e desvio. c˜ o Com apenas essas 5 ordens. pressup˜e uma tradu¸ao ”inteligente”. Escreva um procedimento que informe a soma dos primeiros 1000 n´meros da seq¨ˆncia de u ue Fibonacci. criaram-se a e programas tradutores que recebem comandos e dados em uma linguagem artificial e a convertem em linguagem de m´quina. sem precisar estabelecer como isto vai ser realizado. ´ se ´ melhor aprender tudo de uma linguagem e e e se tornar um especialista nela. programa que era capaz de entender instru¸oes escritas em uma linguagem um pouco mais humana. ainda que obviamente haja uma linguagem preferida. ao se fixar em uma linguagem. Fortran. Pior. dec˜ pois COBOL. que programar um computador ´ “emprestar ine teligˆncia ao computador”. Finalmente. o que libera o engeno c˜ vers˜o de 10 de fevereiro de 2008 a ˆ CAP´ ITULO 2. n˜o apenas resolver em tese. bata com a manteiga e a baunilha at´ a mistura ficar homogˆnea..com o ´ ıtio ındice TPC que mensalmente lista as 100 linguagens mais usadas no mundo. o Cobol. todo o esfor¸o deve ser no n´ cleo mais c u ou menos comum a todas as linguagens e deixar em segundo plano o aprendizado das idiossincrasias de cada uma. o engenheiro brasileiro ver´ se as ordens foram a corretamente traduzidas e executadas analisando o resultado final do trabalho. Pascal. PASCAL. o oleo. Estas linguagens s˜o c˜ c˜ a mais f´ceis de aprender e embora gerem programas maiores e mais lentos. o c˜ Um exemplo diferente para mostrar todos estes conceitos de linguagens poderia ser o seguinte: Suponha um engenheiro brasileiro. j´ que rodam todas no a mesmo computador que ´ constru´ usando a chamada Arquitetura de Von Neumann. Derrame a massa sobre as passas. 88-08. 55. Entretanto esta ´ a linguagem mais eficiente do c˜ e ponto de vista dos consumo dos recursos da m´quina. c˜ De fato. Natural. e c˜ traduzir cada uma destas instru¸oes em sua express˜o bin´ria equivalente. se bem que muito raramente. Para e a facilitar a nossa vida (j´ que ´ muito dificil para o homem programar nela). a Para programar um computador necessitamos uma linguagem. c˜ e Como se disse acima. ainda que n˜o chegando e a a a muita profundidade em nenhuma. mexendo at´ a fervura. a a a quase 10 anos de existir algo f´ ısico que lembrasse o conceito. 8. Basic. CIENCIA DA COMPUTACAO ¸˜ heiro brasileiro de informar todas as etapas. que s´ conhece c˜ e o o idioma russo. c˜ A seguir. N˜o h´ resposta f´cil. Chamou-se a isto. ou se ´ melhor conhecer v´rias. Pois enc e c˜ quanto a produ¸ao de hardware ´ (ou pode ser) em grande parte robotizada. O tradutor ´ a a e o e e linguagem de programa¸ao. como seres humanos. Hoje ainda n˜o ´ c˜ a e poss´ ıvel dialogar com um computador como se fala com uma pessoa medianamente inteligente. a Modo de fazer: ponha o leite. com escrita cir´ ılica. Php. Exerc´ ıcio 1 Lembrando que existe muita semelhan¸a entre seguir um programa de c computador e uma receita culin´ria. a programa¸ao ´ detalhista ao extremo. descrito em um artigo denominado “on a computable numbers”. 34. 21. PL/I. Modula. Neste exemplo. c˜ impedem a programa¸ao dos computadores em linguagem natural. LISP. entre outras. Clipper. de uma unidade arite e o m´tico l´gica. para programar a solu¸ao de um problema. meia x´ ıcara de oleo.ˆ CAP´ ITULO 2. 3. Em seguida. e a As restri¸oes que ainda existem sobre o software e que talvez nunca deixem de existir. prepare um fluxograma da seguinte receita: a Bolo de nozes da Dona Filustreca Ingredientes: 250g de chocolate em p´. E necess´ria a presen¸a a a ´ a c de um tradutor. 3 x´ o ıcaras de a¸ucar. linguagem de primeira gera¸ao. C++. Depois. ıdo 10 anos. parece ser melhor buscar ser poliglota. devamos dar gra¸as aos c´us por esta situa¸ao. h´ que e c˜ a saber resolver esse problema. vieram as linguagens de terceira gera¸ao: a primeira foi o FORTRAN. CIENCIA DA COMPUTACAO ¸˜ Talvez. algu´m que ouvindo o portuguˆs consiga transformar as ordens em e e suas equivalentes russas. Veja no s´ www. Os dois podem tentar conversar quanto quiserem. Ou seja. e ıdo Bem resumido. Os computadores ainda n˜o conseguem tal proeza. Apl. o computador surge em 1937. O colega sovi´tico ´ a e e e m´quina (que ao inv´s de russo. Quando os primeiros computadores foram construidos. Neste caso. Pedro Kantek 30 vers˜o de 10 de fevereiro de 2008 a . isto ´.tiobe. C. aumentam a em muito a produtividade humana de escrever c´digo de programa¸ao. Seq¨ˆncias intermin´veis de uns e zeros. ela gera programas velozes a e e pequenos. 250g de passas. Programar em assembler ainda exige muito talento e paciˆncia. a unica linguagem por eles ´ entendida era a bin´ria. Lisp. temos o Java. a e c˜ isto ´.”Jean Paul Tremblay. menos o produto de 4. que ´ B ao quadrado. depurar. c Simplicidade Poucos programadores resistem a tenta¸ao de elaborar uma genial sa´ ` c˜ ıda para um problema. surgida uma necessidade buscar-se-´ uma solu¸ao. condi¸oes. que ´ a e e que usamos at´ hoje em qualquer computador. “Nunca sacrificar clareza por eficiˆncia. e Se DELTA < 0.DELT A dividido por 2A. para gerar os correspondentes dados de sa´ ıda. c˜ regras formais para a obten¸ao do resultado ou da solu¸ao do problema”. provavelmente ele n˜o ´ bom. O conceito de algoritmo deve ser entendido. E a “coisa” e e a a que permanece igual ainda que esteja em um programa Java para rodar num PC em Curitiba. J´ um programa de computador. Neste sentido o algoritmo independe de qual c˜ c˜ ser´ sua implementa¸ao posterior. o ex´rcito nazista alem˜o come¸a a usar um esquema criptogr´e a c a fico muito inteligente atrav´s de uma m´quina denominada ENIGMA. podemos considerar um algoritmo como sendo uma receita de bolo. enquanto se escreve o algoritmo e (aspecto est´tico) o que ele vai fazer com seus dados (aspecto temporal). Steven . durable. Grandes instala¸oes u c˜ de inform´tica costumam criar o conceito de “biblioteca de algoritmos”. alterar etc . as raizes n˜o existem no campo dos n´ meros reais a u vers˜o de 10 de fevereiro de 2008 a Dado um problema. Quando pensamos em algoritmos. regras pessoais. Tais caracter´ ısticas n˜o podem ser separadas. a 2. nunca sacrificar clareza pela e oportunidade de revelar sua inteligˆncia. tanto a melhor. ou construir-se-´ um algoritmo e a c˜ a capaz de solucionar o problema. principalmente porque em geral os problemas que enfrentamos n˜o s˜o simples. Mal sabiam que do outro lado do canal da Mancha esa tava Turing. e outros muito ruins. custa muito caro para ser feito.ˆ CAP´ ITULO 2. baseados em representa¸oes e estruturas espec´ c˜ ıficas de dados”e devidamente traduzido em uma linguagem de programa¸ao. CIENCIA DA COMPUTACAO ¸˜ Ao mesmo tempo. esta dos autores Angelo Guimar˜es e Newton Lages: c˜ a Algoritmo ´ a descri¸ao de um padr˜o de comportamento. e ˆ CAP´ ITULO 2. Cada um certamente ter´ as suas qualidades e os seus a defeitos. e Impessoalidade Nem sempre quem vai examinar.2 Algoritmo Algorithms are the most important. This means that we need techniques that enable us to compare algorithms without implementing them. comentando sobre o algoritmo de solu¸ao de uma a c˜ equa¸ao do segundo grau. a Vamos exemplificar esta discuss˜o. a qual. para sua correta compreens˜o. Mais tarde. c˜ Outra defini¸ao de algoritmo. Nem sempre ´ f´cil e a fazer algoritmos descomplicados. Skiena. Para encerrar. para encontrar as duas raizes.A e C. Na sua vis˜o est´tica. Ao fazer o algoritmo seu autor deve se preocupar constantemente em se o que est´ pensando est´ vis´ no que est´ a a ıvel a escrevendo. e agora a preocupa¸ao ´ c˜ e com a “forma”. O programador n˜o deve se a esquecer nunca de que um algoritmo novo. nomes que e s´ tem sentido para o autor etc. ou de resolu¸ao de um e e a c˜ grupo de problemas semelhantes. ´ ter em mente. and original part of computer science because they can be studied in a language – and machine – independent way. expressado em termos de e c˜ a um repert´rio bem definido e finito de a¸oes ”primitivas”.”(Kernighan e Plauger) e ıcil a e Clareza O algoritmo ´ uma ferramenta de entendimento e solu¸ao de um problema. testes e verifica¸oes. seguir o algoritmo. u quando programarmos. que nem sempre s˜o facilmente reconhecidas. (segundo Wirth) “´ uma formula¸ao concreta de a e c˜ algoritmos abstratos. usualmente n˜o a h´ solu¸ao unica. tinham e a eles certeza. batizado COLOSSUS. c˜ c˜ ´ Algoritmo ´ a id´ia que est´ por tr´s de um programa de computador. No meio da guerra. e c˜ Deve portanto. um a a a algoritmo ´ um conjunto de ordens. maior a quantidade a c˜ ´ de poss´ ıveis algoritmos corretos. das quais damos por certo o c˜ que elas podem ser executadas”. Turing foi enviado aos Estados Unidos e l´ teve contacto com a Von Neumann. u c˜ a Pode-se dizer que um algoritmo ´ um programa de computador do qual se faz a e abstra¸ao da linguagem de programa¸ao. Foi o primeiro computador constru´ pelo homem. algoritmo ´ a regra de solu¸ao de um problema. Ele criou um computador. A a a dificuldade em fazer bons algoritmos. Pedro Kantek 31 88-08. Se j´ existir um pronto e testado. As melhores e mais bem organizadas empresas de inform´tica c˜ a dedicam parcela significativa de seus esfor¸os a esta atividade. veio depois. c˜ Dada a equa¸ao Ax2 + Bx + C = 0. Quanto mais complexo o problema a resolver. Do ponto de vista da inform´tica. c Reaproveitamento Existe in´ mera bibliografia sobre algoritmos. ser o mais claro poss´ ıvel. No seu aspecto e c˜ c˜ temporal. Pedro Kantek 32 vers˜o de 10 de fevereiro de 2008 a . Alguns s˜o muito bons. ou esteja em um programa PASCAL rodando em um Cray em Valladolid na Espanha. mas entre um e outro existem a in´ meras varia¸oes. CIENCIA DA COMPUTACAO ¸˜ Se DELTA = 0. era inexpugn´vel. Nada contra isso. Segundo mestre Aur´lio. Este ´ o autor da assim chamada arquitetura de Von Neumann. em que se estipula. corrigir. Portanto. com generalidade e sem restri¸oes. em seus a dois aspectos. a quem chamaremos est´tico e temporal. um algoritmo ´ seu autor.The Algorithm Design Manual. ter´ a ıamos que gerar uma s´rie de dados de entrada (triplas e A. as raizes s˜o iguais a √ A primeira raiz ´ (-B) + DELT A dividido por 2A e √ A segunda raiz ´ (-B) . o algoritmo passa a ser algo vivo. Transformar algo complicado em solu¸oes singelas. Neste ponto ´ de muita ajuda a existˆncia de um o e e bem organizado conjunto de normas de codifica¸ao e de elabora¸ao de algoritmos c˜ c˜ para a organiza¸ao. segundo a c˜ inesquec´ f´rmula de Bhaskara.2. e verificar se os resultados que ele gera s˜o aqueles esperaa dos de antem˜o. 2. e custa muito mais caro ainda para ser depurado. que quebrava o c´digo o ENIGMA em poucas horas. O ıdo ENIAC de que os americanos se gabam tanto.C).B. desde que essa sa´ n˜o fira os princ´ ıda a ıpios de simplicidade que todo algoritmo deve procurar satisfazer. n˜o nos preocua c˜ a pamos com a linguagem. a a c˜ parece ser a diferen¸a entre programadores comuns e grandes programadores.1 Qualidades de um bom algoritmo “Se um programa ´ f´cil de ler. nada de usar macetes. algoritmo ´ “Processo de c´lculo. ele ´ provavelmente um bom programa. procedemos da seguinte forma: ıvel o Calculamos DELTA. e tomando alguma liberdade. para o qual temos que escrever um algoritmo. a linguagem passa a ser importante. 88-08. e No seu aspecto dinˆmico. Muitos a softwares tamb´m est˜o partindo para esta sa´ e a ıda. elas est˜o instrinsicamente ligadas. pois atua sobre um conjunto de dados de entrada. Estamos querendo resolver o aspecto “conte´ do”. se e a e ele ´ dif´ de ler. um algoritmo deve ser o mais gen´rico que puder. Tem finalidade apenas explicativa e informativa. {Isto ´ um coment´rio. de mem´ria.2. 2. Como o leitor j´ o a pode estar imaginando. A id´ia ´ que a ferramenta ajude a fazer a tarefa. depurar e documentar algoritmos estruturados. a eficiˆncia pode ser fundamental. portuguˆs estruturado ´ uma linguagem inventada aqui para simplificar e e a tarefa de aprender a construir. documenta¸ao ıvel c˜ etc. E praticamente imposs´ garantir clareza. Entretanto. Generalidade Dentro do poss´ ıvel. esta caracter´ ıstica ´ fundamental em provas. Jean a c˜ Paul Tremblay. Desta maneira. “Bons coment´rios n˜o podem melhorar uma m´ codifica¸ao. tudo isto em papel limpo e sem borr˜es. Seu conte´ do n˜o ´ levado em considera¸ao na an´lise da integridade e u a e c˜ a corre¸ao do algoritmo. perde-se facilidade.dentro e c˜ das empresas).1: Qual a melhor linguagem ? Figura 2. se suas opera¸oes aritm´ticas elementares n˜o estiverem c˜ e a ´ corretas. para que cada um possa ser resolvido a o e seu tempo. quase sempre ´ uma caracter´ a e ıstica oposta ` da clareza e da simplicidade. e O nome da sublinguagem que usaremos ´ “portuguˆs estruturado”. CIENCIA DA COMPUTACAO ¸˜ Capricho Tenha sempre em mente que a principal fun¸ao de um algoritmo ´ transmitir c˜ e a solu¸ao de um problema a outrem. O bom programador ´ aquele que alia a simplicidade ao e m´ximo de eficiˆncia poss´ a e ıvel. de vari´veis etc. em alguns casos. e a a c˜ nomes bem atribu´ ıdos. Corre¸˜o (ou integridade ou ainda robustez) Um algor´ ca ıtmo ´ ıntegro ´ aquele onde e os c´lculos est˜o satisfatoriamente colocados. Qualquer linguagem c˜ poderia ser adequada. (principalmente na programa¸ao real . experimente aparae e fusar algo pequeno usando um p´ de cabra. Existem ´ in´ meras vers˜es. mas maus a a a c˜ coment´rios podem comprometer seriamente uma boa codifica¸ao”. o de comandos. Infelizmente. Usualmente o esfor¸o gasto para deixar um algoritmo c gen´rico ´ pequeno em rela¸ao aos benef´ e e c˜ ıcios que se obt´m desta preocupa¸ao. Pedro Kantek 34 vers˜o de 10 de fevereiro de 2008 a . mas falha em 5% deles. sendo estas mais importantes do que a efia ciˆncia. quando se resolve um algoritmo de cima a baixo. Mas isso n˜o c˜ a significa que eles sejam desprez´ ıveis.2: Como se entender com ele ? Como vimos. N˜o podemos esquecer que a regra ´urea da programa¸ao estruturada a a c˜ ´ “dividir para conquistar”. mas n˜o porque ´ feito. Pedro Kantek 33 88-08. e Coment´rios Permitem a agrega¸ao de informa¸oes destinadas ao leitor humano do a c˜ c˜ algoritmo. ainda que ele ocupe mais de uma linha } // isto tamb´m ´ um coment´rio. Uma conveniente divis˜o a em m´dulos (isto ´. e c˜ Modularidade Algoritmos grandes dificilmente ficam bons se usarmos uma abordagem ´ linear. mas toda a classe de problemas a semelhantes que aparecerem.ˆ CAP´ ITULO 2. Pelo contr´rio. o e a e e programador pode e deve lan¸ar m˜o de coment´rios sempre que sentir necessidade c a a de clarificar um ponto. CIENCIA DA COMPUTACAO ¸˜ H´ dois tipos de coment´rios aqui: aqueles encerrados entre chaves e aqueles colocaa a dos depois de uma dupla barra. Al´m do ca e e que. desde a dupla barra at´ o fim da linha e e a e 2. e atuam corretamente para todos a a os dados poss´ ıveis de entrada. ele informa o que ´ feito.2 Como se escreve um algoritmo A quest˜o agora ´: “como se escreve um algoritmo?” Usando uma ferramenta adequada a e para comunicar algum tipo de computa¸ao que o algoritmo execute. Eficiˆncia Esta caracter´ e ıstica tem a ver com economia de processamento. tamb´m conhecida e e e como “portugol”. N˜o adianta um algoritmo sofisticado e cheio de a estruturas de controle. que s´ ser´ encerrado quando se encontrar e a o a o fecha chave. Letra clara. A primeira conseq¨ˆncia pr´tica desta regra ´: fa¸a seus algoritmos a ue a e c l´pis. E importante salientar que a u o o 88-08. um m´ c˜ ınimo de capricho ´ indispens´vel a fim de n˜o assustar o leitor. cada professor de l´gica tem a sua. avalia¸oes e e c˜ trabalhos. identa¸ao correta. Eles a a podem ser colocados em qualquer ponto do algoritmo e tudo o que estiver entre chaves ´ desconsiderado no momento de seguir o algoritmo. em sub-algoritmos). e para se ter economia. Por analogia. coment´rios s˜o importantes em a a a algoritmos de um modo geral. Neste caso. Assim. e Exemplo {Isto ´ um coment´rio} e a vers˜o de 10 de fevereiro de 2008 a ˆ CAP´ ITULO 2. e Isto significa que vale a pena um esfor¸o no sentido de deixar nossos algoritmos cac pazes de resolver n˜o apenas o problema proposto. a Documenta¸˜o Nem sempre o texto que descreve o algoritmo ´ muito claro. ou quando ´ feito.3 Portugol Figura 2. E mais comum (e perigoso) o algoritmo que funciona em 95% dos casos. impessoalidade. mas ´ melhor inventar uma sublinguagem derivada do portuguˆs e e (ou do inglˆs em livros nesse idioma) que ajude a treinar o pensamento criativo em e algoritmos. Os coment´rios s˜o delimitados por um ”abre-chave”({) e um ”fecha-chave”(}). Aritm´tica Estas ordens s˜o similares aquelas que aprendemos no primeiro grau. mais c˜ c˜ de uma do mesmo autor: ”A regra ´urea da programa¸ao estruturada ´ dividir para a c˜ e reinar”. Nada mais apropriado que come¸armos a exercitar esta dif´ qualidade c ıcil desde j´. funcion´rios que tiverem a mais de 2 faltas e mais de 5 atrasos. N˜o se esque¸a que a linguagem universal dos computadores e a c 88-08. pouca ou nenhuma prepara¸ao de controles etc. A a segunda. e n˜o o que queremos que e a eles fa¸am. a e e d´ bio. Pedro Kantek 35 88-08. Veja. l´ no n´ mais baixo. exige um conhecimento da m´quina que ainda n˜o temos. por exemplo. subtra¸ao. uma unidade de controle. o quadro c˜ O que um computador entende Baseado na arquitetura de Von Neumann. pele precisa ser seguido. ˆ ”O funcion´rio far´ jus ao PREMIO PRODUTIVIDADE se estiver trabala a hando h´ mais de 6 meses da ´poca de distribui¸ao (fevereiro de cada ano). todo computador constru´ neste paradigma ´ o ıdo e capaz de obedecer. multiplica¸ao. “minha tia tem uma gatinha e ela ´ muito bonita”. ou para divulgar alguma coisa que ele calculou (sa´ ıda). A primeira. ou ent˜o se tiver sido especialmente citado como a a tendo tido alta produtividade. caso do Java. ´ para orientar o computador no sentido de e adquirir um dado externo (entrada). CIENCIA DA COMPUTACAO ¸˜ s´ ıntaxe e a constru¸ao de portuguˆs estruturado s˜o arbitrados por algu´m. n˜o ´ boa pol´ a e ıtica enfrentar dois problemas interligados ao mesmo tempo. usa verbos e comandos proibidos. mas uma vez estabelecido um padr˜o. fun¸oes a c˜ c˜ c˜ a c˜ c˜ trigonom´tricas etc. uma ULA. ainda que de alto n´ c˜ ıvel. Perde ou n˜o ? a Outro exemplo. ´ que h´ que haver um m´ c˜ e a ınimo de concordˆncia para que outras pessoas possam ler e entender o que escrevemos. isto u c˜ ´. Isto ´. Aproveitando a cita¸ao. Pedro Kantek 36 vers˜o de 10 de fevereiro de 2008 a . potencia¸ao. vers˜o de 10 de fevereiro de 2008 a ˆ CAP´ ITULO 2. (um processador. a um pequeno conjunto de ordens. e Entrada/Sa´ ıda Este tipo de ordem. e os computadores c˜ e tem a p´ssima mania de fazer o que mandamos eles fazerem. Na nossa cadeira de algoritmos. e a Esta restri¸ao tem duas vertentes. e a e c˜ trabalhar na ´rea de vendas. e que ´ melhor a c e tratar de conviver com ela e respeitar suas limita¸oes”. c J´ dizia Dijkstra “deve-se reconhecer que tem-se uma cabe¸a pequena. e a a preocupa¸ao passa a ser a m´quina e seu ambiente. n˜o conv´m misturar dificuldades de l´gica. segundo c˜ e a e seus crit´rios. Quem ´ bonita. (advindas do problema que e a e o se quer resolver) com dificuldades da linguagem (advindas do ambiente tecnol´gico onde o o programa vai rodar). e e a tia ou a gatinha ? O linguajar acima. a c˜ Portuguˆs estruturado Cada autor tem a sua vis˜o do que seja o ideal em termos e a de linguagem de especifica¸ao de algoritmos. Parece claro.ˆ CAP´ ITULO 2. CIENCIA DA COMPUTACAO ¸˜ Os programas em PORTUGOL v˜o deixar de lado in´ meras chatea¸oes. divis˜o. n˜o ´ ? Agora tentemos responder: a e Jo˜o tem 3 meses de casa e foi citado como de ”alta produtividade”. Note-se a ıvel como ele ´ restrito. os algoritmos j´ devem estar consolidados. E o c˜ onde vai se aprender o Java. Esa tas ordens s˜o: adi¸ao. (que s˜o a u c˜ a imprescind´ ıveis para o programa rodar em um computador real) tais como: instru¸oes c˜ de ambienta¸ao na compila¸ao de programas. uma orienta¸ao extra´ do manual de organiza¸ao de uma Emc˜ ıda c˜ presa. c˜ a devemos esquecer a m´quina e nos concentramos no problema e na sua solu¸ao. e e a destinam-se a informar ao computador como ele deve efetuar algum c´lculo. que o computador n˜o saber´ executar. que anexo a esta disciplina. Ganha ou a n˜o? a Maria teve 3 faltas. ´ sempre ZERO. c Por que PORTUGOL e n˜o uma linguagem qualquer como Java? ou qualquer a outra linguagem de programa¸ao? c˜ Uma linguagem de programa¸ao. ou que tiverem fruido licen¸a sa´ de do c u INSS no per´ ıodo aquisitivo”. qualquer computador. Tamb´m ´ importante salientar que a a e e idealmente falando. e deixa muita margem de interpreta¸ao. ´ que uma das principais caracter´ e ısticas do bom programador ´ a disciplina e intelectual. mem´ria e registradores). pois ambas somadas podem ser demais para a cabe¸a do autor. existe outra de laborat´rio de programa¸ao. c˜ ´ claro. n˜o ´ adequado para expressarmos algoritmos pois ´ inexato. a ˆ Por que PORTUGOL e n˜o PORTUGUES ? Portuguˆs (como qualquer idioma a e natural) tem in´ meras desvantagens: u N˜o ´ entendido pela m´quina (exige tradu¸ao complex´ a e a c˜ ıssima) ´ E amb´ ıguo ´ E muito extenso Vejamos por exemplo. Devemos lembrar sempre que a margem de e a a interpreta¸ao do computador. Nessa hora. Perdem o direito. descri¸oes de opera¸oes de entrada/sa´ c˜ c˜ c˜ c˜ ıda complexas. e certamente cont´m um equ´ o e o o e ıvoco. – teste beta: um teste completo feito por terceiros. e a cada a a passada o conhecimento ´ maior. e bolar ou procurar o algoritmo. Se os artigos o e n˜o puderem se mexer de lugar. CIENCIA DA COMPUTACAO ¸˜ ´ a matem´tica. Quando isto ocorrer. Dependendo do porte a e da instala¸ao e do sistema. mas o percal¸o principal nem ´ esse: ´ que muitas a a c e e vezes o conhecimento n˜o existe e s´ vai aparecer quando se cutucar o problema. Se a a manuten¸ao ´ pequena. Nesta hora ocorre o que tem sido chamado de deploy (dizem as m´s c˜ a l´ ınguas que sempre associado a seu irm˜o gˆmeo. H´ uma regra aqui de que a quem faz (programador) n˜o deve ser quem testa (testador). H´ f´rmulas. sua instˆncia anterior n˜o desaparece. Note que pode-se copiar ou aproveitar um algoritmo j´ exisa tente. mas c˜ e e caso n˜o seja. e ocorre muitas vezes. movimenta¸ao e de repeti¸ao) e c˜ c˜ vers˜o de 10 de fevereiro de 2008 a ˆ CAP´ ITULO 2. ´ que o verbo “mover”. Entretanto este re-uso dificilmente ´ imediato. esta ´ ordem mais comum em ca o c e um programa. o delay). Pode-se tentar algo parecido aqui. E mais ou menos como tentar ensinar algu´m a desenhar (outra e arte) ou a compor m´ sica (outra ainda). j´ que quando um conte´do ´ levado de um a u e lado a outro. reo e c˜ sultado final. a menos que quando este foi a feito seu autor j´ tinha a preocupa¸ao com o reuso. Em resumo. estas seriam as indica¸oes c˜ Estudando algoritmos prontos. E ela que c˜ ´ d´ ao computador condi¸oes de “ser inteligente” e decidir qual de dois caminhos a c˜ deve se seguido. Mas. Uma boa maneira de estudar e compreender um problema ´ fazer hip´teses. u Olhando como se aprende a desenhar. a e a e e a a o procedimentos. c˜ ıvel Dessas 3 op¸oes (computador. e a ciclo de vida Qual a hist´ria de vida de um programa de computador ? Isto ´ como nasce. O correto seria usar o verbo “copiar”. compreender o entorno. projetar simula¸oes. Pedro Kantek 37 88-08. Usualmente. Pegue bons livros de algoritmos. depurar e implementar o programa de computae ıvel dor. Com o programa testado e liberado ´ hora de rod´-lo em e a produ¸ao. pode se dizer que as principais etapas s˜o: a estudo do problema: Espera-se que haja algum problema ou dificuldade esperando ´ ser resolvido pelo programa de computador. no qual os comandos algoa r´ ıtmicos (entrada/sa´ ıda. computador n˜o usa apagador. Um programa de computador nem sempre ´ obrigado a seguir as e instru¸oes seq¨ encialmente come¸ando no come¸o e terminando no fim. Execute os algoritmos. Usa-se aqui uma regra jocosa. Considerando o tamanho das mem´rias de computador e a quano tidade de coisas que s˜o l´ colocadas. c˜ e a 88-08. pr´ticas consagradas prontas a serem usadas. CIENCIA DA COMPUTACAO ¸˜ podem ser usados. Aprendizes de desenho copiam desenhos e partes de desenho extensivamente. ´ Alternativa E talvez a ordem mais importante no universo da computa¸ao. Sempre h´ que estudar e e a eventualmente modificar um algoritmo j´ existente.ˆ CAP´ ITULO 2. suponha que a mem´ria do computador ´ um grande supermercado. aritm´ticos. Sugira hip´teses sobre o funo cionamento e provoque pequenas mudan¸as no c´digo para confirmar (ou rejeitar) c o suas hip´teses. Fazendo uma figura de linguagem. Isto ´. com condi¸oes iniciais. o Tenha intimidade com algum ambiente de compila¸ao e testes. Seria muito bom se a hist´ria acabasse na etapa anterior. as limita¸oes. e por isso veremos em seguida e que uma das regras da programa¸ao estruturada ´ o estabelecimento de r´ c˜ e ıgidos controles sobre os desvios. No que tˆm de engenharia. h´ aqui o que se chama de aproo a fundamento interativo. c˜ Busque entender o que cada parte do mesmo faz. Esta proposta c˜ ´ importante para poder testar algoritmos. j´ que o mundo muda e os programas precisam mudar com ele. este ciclo recome¸a. algo formal. depurar. tais a a ´ receitas desaparecem. Usualmente h´ uma seq¨ˆncia de testes: a ue – compila¸ao correta: nenhum erro apresentado pelo compilador c˜ – testes imediatos sem erro: testes ad hoc para este programa (e s´ para ele) o d˜o os resultados esperados. ´ mais f´cil. Pedro Kantek 38 vers˜o de 10 de fevereiro de 2008 a . um ambiente operacional e sobretudo uma linguagem de programa¸ao que esteja dispon´ e seja conhecida. a primeira ordem ser´ a executada. a o Como se diz em espanhol los caminos se hacen al caminar. alternativos. testar. ambiente e linguagem) surge a plataforma definitiva: c˜ agora ´ poss´ escrever. ´ poss´ e ıvel ter alguns insights. inclusive integrando este programa c aos seus antecessores e sucessores. e manipula¸oes entre o que entra e o que sai. a – teste alfa: um esfor¸o completo de testes. estudar comportamentos. e c a Como se aprende algoritmos? N˜o ´ f´cil aprender algoritmos. Movimenta¸˜o na mem´ria Embora pare¸a estranho. e estude as implementa¸oes que l´ aparecem. Usam-se os comandos c˜ permitidos em algoritmos e s´ estes. As vezes n˜o d´ tempo. a a mas que sempre ´ verdadeira. vocˆ ter´ grandes dificuldades de escrever algoritmos. na nova vers˜o do programa. as vezes esta passagem ´ complexa e trabalhosa. n˜o tem jeito: anda-se para frente e para tr´s. seguida por duas ordens distintas. os recursos dispon´ ıveis. Se a pergunta for respondida afirmativamente. a Desvio Esta ordem ´ para dar ao computador habilidade de saltar algumas ordens e e executar outras. E hora de escolher um computador. ´ imprescind´ que os programas tenham a a e ıvel a habilidade de manusear todas estas coisas. Usualmente o teste ´ feito pelo(s) autor(es) e do programa. estud´-la. Come¸a-se com uma declara¸ao gen´rica que vai sendo c c˜ e detalhada e especificada at´ chegar ao n´ e ıvel b´sico. a a Outra observa¸ao. no que s˜o arte. a segunda ordem ser´ executada. os c˜ a a c˜ balizadores. usualmente pode-se fazˆ-la sem muito transtorno. Se ficar embatucado diante de uma e simples implementa¸ao. O desvio ´ c˜ u c c e potencialmente perigoso quando usado sem crit´rio. Note-se que ap´s algumas manuten¸oes grandes a c o c˜ o programa come¸a a dar mostrar de instabilidade –a popular colcha de retalhos c – e ´ hora de come¸ar tudo de novo. Escrever um programa de computador correto ´ como demonstrar e a e um teorema. Transcreva tais algoritmos em um simulador (tipo c˜ a visualg) ou mesmo em uma linguagem de programa¸ao. E pr´-requisito antes de tentar a e solu¸ao de qualquer quest˜o. N˜o ´ o c˜ o a e que ocorre. e se a pergunta for negada. quando usado em manipula¸oes dentro c˜ e c˜ da mem´ria ´ usado por raz˜es hist´ricas. bem poucas coisas acontecer˜o. S´ e o c˜ o se pode passar adiante se boa parte do entorno do problema for entendida. Agora ´ hora de converter a solu¸ao encontrada e c˜ em algo pr´ximo a um algoritmo. a implementar e rodar. cresce e o e morre um programa ? Grosso modo. Sempre tem a forma de uma pergunta. Note-se que nem sempre ´ poss´ aguardar at´ ter 100% do conhecimento antes de seguir e ıvel e ` adiante. c˜ ` e manuten¸ao. a c˜ ´ transcrever em LP. Al´m disso a m´quina pode ler a e a e escrever nesta fita. Isto posto. Em outras palavras n˜o ´ ıda ´ a e proibido usar o desvio. sempre com entradas e saidas unicas. ou vice-versa. Pedro Kantek 88-08. da´ o seu poder de a e a c˜ a ı encanto. o matem´tico alem˜o Hilbert apresentou em um congresso uma lista de a a problemas que segundo ele estariam ocupando as mentes matem´ticas no s´culo que a e ora se iniciava. a raiz pode ser extra´ e um ou dois valores de ra´ emergem.. No momento de calcular a raiz quadrada de . a ˆ CAP´ ITULO 2. Seq¨ˆncia simples Trata-se de um conjunto de comandos simples. Nunca se deve come¸ar a estudar ou a construir um algoritmo se a c n˜o houver um claro entendimento do que o algoritmo deve fazer. sendo apenas uma abstra¸ao matem´tica. Turing respondeu a esta pergunta atrav´s do conceito de M´quina de e a Turing.4 Programa¸˜o Estruturada ca O termo programa¸ao estruturada veio ` luz pela primeira vez. ıdo ´ A importˆncia desta descoberta para o software teve tanto impacto quanto a de que a qualquer forma l´gica de hardware pode ser construida pelas combina¸oes de portas o c˜ AND. o comportamento da m´quina ´ totalmente determinado pelo seu estado interior a e e pelo input. 1 Eis o problema original. Segundo ele. e ´ por esta caracter´ c˜ e ıstica que o GOTO deve ser desprezado na constru¸ao de bons algoritmos. ıda ızes O ponto importante aqui ´ que em algum lugar os dois ramos se juntam novamente.haver´ algum procedie a mento mecˆnico geral que possa em princ´ a ıpio resolver todos os problemas da matem´tica ? 1 a Em 1937. pode ue ser substitu´ por unica caixa. Tal como na seq¨ˆncia. o nosso ambiente a ´ discreto). Atente-se que ao usar uma instru¸ao ıda ´ c˜ de desvio. todos os componentes de um c˜ c˜ programa passam a ter uma entrada e sa´ unicas. Dijkstra observou que a qualidade dos programadores decai em fun¸ao do c˜ n´ mero de GO TOs usados em seus programas. pode ser substitu´ por unica caixa. da´ o nome. nos fins da d´cada c˜ a e de 60. e o pr´prio nome algoritmo derive do autor arabe de um tratado de algebra o ´ ´ escrito por volta de 800 dC. um comando de repeti¸ao. como proposto por Hilbert: Determination of the solvability of a diophantine equation: Given a diophantine equation with any number of unkown quantities and with rational numerical coefficients: to devise a process according to which it can be determined by a finite number of operations whether the equation is solvable in rational integers 39 88-08. n˜o tem mais a instru¸ao de desvio. Treine a interpreta¸ao dos enunciados. Pedro Kantek 40 vers˜o de 10 de fevereiro de 2008 a . que ´ trocar a instru¸ao a a c˜ e c˜ de desvio pelas instru¸oes de repeti¸ao.5 A m´quina de Turing a Embora a humanidade use o conceito de algoritmo h´ milˆnios (O de MDC ´ devido a a e e Euclides). ıda ´ ´ Alternativa E um comando que permite dois caminhos alternativos.ˆ CAP´ ITULO 2. provaram matematicamente que qualquer l´gica de programa¸ao poderia o c˜ ser derivada de trˆs tipos b´sicos de procedimentos. Tal como na seq¨ˆncia e na alternativa. Turing imaginou o espa¸o exterior para dados e armazenamento como sendo c uma fita. essa regra de uma entrada e uma sa´ ´ violada: o conjunto passa a ter no ıda e m´ ınimo duas sa´ ıdas. Exemplo a A ← 10 B←A + 5 X←1 + 2 Dentro de uma seq¨ˆncia simples de comandos a entrada sempre ´ pelo primeiro coue e mando e a sa´ sempre ´ pelo ultimo. a 2. Em 1900. O d´cimo problema de Hilbert. A grande vantagem dos trˆs elementos da programa¸ao estruturada ´ que possuem e c˜ e a caracter´ ıstica de pacote ou caixa preta. que pode mover-se para frente e para tr´s. Apenas 2 s´ e ımbolos podem ser escritos nos quadrados da fita. uma seq¨ˆncia simples pode ser substitu´ por um bloco ue ıda com entrada e sa´ unicas. Enquanto n˜o entender o que deve ser c˜ a feito. Esta e e a n˜o ´ uma m´quina real. imposs´ c˜ c˜ a e e ıvel de obedecer – mas sim a regra da entrada e sa´ unicas. e e Viv´ ıamos a ´poca de ouro do COBOL. a saber: seq¨ˆncia. Deve tratar um input infinito. c˜ Chegou-se ent˜o ao ˆmago da programa¸ao estruturada. um comando alternativo. dizia: . quando Edsger Dijkstra (Lˆ-se como Dikster ) escreveu um artigo. publicado e em Communications of the ACM. pois o motivador das a¸oes que ele toma a c˜ estar´ ausente. h´ que se desviar para o in´ do mesmo. n˜o adianta olhar para o algoritmo. CIENCIA DA COMPUTACAO ¸˜ Escreva pequenos algoritmos. CIENCIA DA COMPUTACAO ¸˜ Repeti¸˜o O terceiro bloco da programa¸ao estruturada ´ a resposta a necessidade ca c˜ e ` de usar o comando de desvio. Perceba-se que aqui existe um desvio impl´ ıcito. ainda que possa ser muito e u grande. A restri¸ao a obedecer n˜o ´ a ausˆncia de desvio – de resto. Giuseppi Jacopini e Core e rado Bohm. Se < 0 os c´lculos cessam e a resposta de ra´ imagin´rias deve a a ızes a ser dada. cujo t´ ıtulo ´ “O comando GO TO ´ prejudicial”. e e a regra de ouro da programa¸ao estruturada (entrada unica e sa´ unica tamb´m) c˜ ´ ıda ´ e continua verdadeira. Tente fazer os exerc´ ıcios (come¸ando sempre pelos c mais simples) de qualquer bom livro de algoritmos. alternativa e e a ue repeti¸ao. j´ que ao a se terminar o bloco. “Comandos GO TO tendem u a criar caminhos de l´gica confusos e programas pouco claros”. A fita est´ composta por quadrados (ou seja. Nessa ´poca tamb´m (1966) dois professores italianos. banida por perniciosa e a c˜ desnecess´ria. Ela ´ composta por um n´ mero finito de estados. por mais complexo que seja. os estados internos do aparelho s˜o finitos em n´ mero a u 2. uma vez que todos tem uma unica entrada e ´ uma unica sa´ ´ ıda.. a defini¸ao precisa do que seja um algoritmo geral ´ apenas c˜ e de 1930. Ao fazer isto. por maior ou ue c˜ mais complexo que seja. A sua recomenda¸ao foi o c˜ de que o comando em quest˜o fosse banido das linguagens de alto n´ a ıvel. OR e NOT. atrav´s do seu conceito de M´quina de Turing. Gra¸as ao princ´ ıda e ´ c ıpio da programa¸ao estruturada c˜ (uma entrada e uma sa´ ıda). Ela ´ devida a Turing. digamos 0 significando quadrado em branco e 1 (quadrado preenchido). que seguem um ue ao outro e que s˜o executados na ordem em que aparecem. que as c˜ e linguagens mais modernas. Se ≥ 0. h´ que se o a tomar uma decis˜o. por exemplo c˜ a a na f´rmula de Bhaskhara. Esta ´ a e ´ e melhor qualidade da programa¸ao estruturada. a ı depender de alguma condi¸ao. Tanto isto ´ verdadeiro. que ´ o que caracteriza a ıcio e uma repeti¸ao. e o comando GO TO ´ a instru¸ao de desvio desta e e c˜ linguagem. lembremos que: 1. desde que ele esteja contido em limites bem determinados. Tem um espa¸o exterior de armazenagem tamb´m c e infinito. ıdo ´ vers˜o de 10 de fevereiro de 2008 a 2. Na matem´tica convencional isto j´ existe. Isto significa que partes de programas construidos com estas estruturas podem ser tamb´m considerados pacotes. Por exemplo. Depois disso vem os dados de input que seriam processados pela m´quina T. operando como se fosse a T. Convertendo este n´ mero bin´rio para decimal chegamos a 450813704461563958982113775643437908 u a O que significa que a m´quina que soma 1 em un´rio ´ a 450. As colunas a a a 4 e 5 nas tabelas n˜o precisam separa¸ao. e a unica vantagem que se consegue ´ e ´ e a eficiˆncia: os programas voam.704. Zero ser´ 0. 00001100000 e 00001110000. A T7 .775. A produtividade ´ muito baixa. PARE. 4.026. o e a talvez seja mais adequado escrever uma tabela como estado chega escreve? anda vai para 0 0 D 0 0 1 E 13 1 0 1 D 65 1 1 0 D 1 2 0 1 PARE 2 1 E 66 As diversas m´quinas de Turing Para ver isso funcionando. o aparelho deve ser determin´ ıstico 2 . tamanha aderˆncia as entranhas da m´quina cobra seu pre¸o: na e ` a c mudan¸a de plataforma tecnol´gica um monte de coisas precisa ser reestudado e recic o clado. Esta fun¸ao. 2 e 3) desde que se organize os comandos em rigorosa ordem crescente (e tomando cuidado para preencher comandos que no modo tradicional n˜o seriam escritas a por nunca ocorrerem na m´quina).420. Podemos escrever U (n. U ´ o e hardware. A que multiplica 2 em a a e a bin´rio expandido ´ 10. m) = Tn (m) A m´quina U quando alimentada primeiro com o n´ mero n. fornecendo o par (n. que antes de mais nada a a ler´ as informa¸oes na fita de entrada para que ela passe a se comportar como a m´quina a c˜ a T. Por exemplo. L100: MOV AH. Ent˜o. ela pode ser realizada por uma m´quina de Turing.437. isto tem o seu valor.6. N˜o ´ uma boa id´ia programar profissionalmente em assembler.563.642a m´quina. CIENCIA DA COMPUTACAO ¸˜ Ou seja. Mas. Sem d´ vida a u alguma. ue M´quina Universal de Turing Teremos uma m´quina U. soltar um corpo em queda livre. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 41 88-08. a a quem chamaremos de U . como j´ se viu. muda seu estado interno para outro. Podemos pensar nesta rela¸ao como sendo u c˜ uma fun¸ao de 2 parˆmetros (n e m) que leva a p. e/ou Decide se continua ou interrompe e para. mas que a ser˜o pela U. podemos escrever Tn (m) = p.728.1 Linguagens de programa¸˜o ca Assembler ´ O assembler n˜o ´ uma linguagem de alto nivel. Utiliz´-lo ´ um autˆntico a o a a e e calv´rio. Mesmo que trabalhando em outras e e linguagens. Logo ele. e ela emperra ao processar tal seq¨ˆncia. quem domina a e e esta t´cnica. 1 quadrado. 5 e 6. dado o estado inicial e um s´ ımbolo de input. c˜ a u A m´quina que soma 1 em un´rio ´ a 177. lan¸ar um dado c ˆ CAP´ ITULO 2. 11110.669 m´quina. precisa-se numerar as a m´quinas de Turing. u a 110. fenˆmeno esse que ´ central na teoria. passa a se comportar a u como a Tn Como U ´ uma m´quina de Turing. 111110 e 1111110.113.547. ter´ ıamos que escrever algo do tipo Estado Sinal faz Vai para Escreve Anda atual lido o que estado para onde 0 0 → 0 0 D 0 1 → 13 1 E 1 0 → 65 1 D 1 1 → 1 0 D 2 0 → 0 1 D. CIENCIA DA COMPUTACAO ¸˜ m´quina de Turing. j´ que o conte´ do da coluna 5 ´ apenas 1 ou a c˜ a u e zero e sempre ocupa 1 caracter. ´ bastante valorizado no mercado.923. mudando-se (otimizando-se) alguma coisa na proa grama¸ao.919. desde um humilde Z80 at´ um Cray multi-vetorial e s˜o m´quinas de Turing. ela ´ uma Talguma−coisa .908a a a e 2 um fenˆmeno ´ deterministico quando gera sempre o mesmo resultado a partir das mesmas condi¸oes o e c˜ iniciais. pelo que vimos ´ c˜ a c˜ e totalmente algoritmica.PARE 2 1 → 66 1 E Esta defini¸ao acima. Pedro Kantek 42 vers˜o de 10 de fevereiro de 2008 a .643. ela fica: u a 101011011010010110101001110100101101011110100001110100101011 10100010111010100011010010110110101010101101010101101010100. Naturalmente. e 1 ser´ 10.492. Pode-se dar ao luxo de n˜o codificar nenhuma seta. A seguir um trecho pequeno de um programa em assembler para plataforma Intel.24 × 101688 . m s˜o os dados de entrada e finalmente p ´ o e a e resultado esperado. Logo.389. 1110. Entretanto. Ao contr´rio um fenˆmeno probabil´ a o ıstico (ou randˆmico ou estoc´stico) ´ o fenˆmeno no qual dadas as mesmas condi¸oes iniciais o resultado ´ o a e o c˜ e imprevis´ ıvel.958.pega a data 88-08. Todas v˜o funcionar. para operar com esta m´quina. esta m´quina muda de n´ mero.982. j´ que todas as opera¸oes que o computador precisa realizar ficam por conta a a c˜ do programador. Primeiro.872. nem nada do que as antecede a (colunas 1.917. u Todos os computadores modernos. a E. pode-se desenhar algo como segue: Usar como modelo a MT que multiplica por 2 em un´rio Construir o modelo acima no quadro e depois a testar as sequencias 000010000. a Dizendo que quando a n-´sima m´quina de Turing atua sobre o n´ mero m produz e a u o n´ mero p. Necessita-se um pouco de esperteza aqui. obtemos como resposta a p. e/ou Muda o simbolo que foi lido pelo mesmo ou por outro. e a E assim vai. ´ adequada para a tarefa de numera¸ao das M´quinas de Turc˜ e c˜ a ing. Ou usando um sistema un´rio. m) a U . a Fazendo tudo isso.107a m´quina e a que multiplica por 2 um n´ mero un´rio a e a u a a ´ a 1. j´ que existem uma seq¨ˆncia e a a ue de 5 uns. Para efeito de entender a MT. E apenas um tradutor de c´digos a e o e portanto est´ muito pr´ximo da linguagem de m´quina. a a Acabamos de ser apresentados a um moderno computador: em U (n.2AH . e escrevendo toda a programa¸ao da m´quina que soma 1 a um c˜ a n´ mero un´rio. 3.813.6 2. converte-se D. conhece o interior da m´quina. m) = p. e Por outro lado. ´ n˜o corretamente especificada. Defini¸˜o de uma m´quina de Turing Para especificarmos nossa m´quina de Turca a a ing. n ´ o software (ou programa). e/ou movimenta-se para a direita ou para a esquerda.461.ˆ CAP´ ITULO 2. ou seja o n´ mero 724 seguido de 1686 zeros. a 2. → e v´ ırgula como os n´ meros 2. quem conhece o assembler. Quanto ´ essa alguma e a e e coisa ? ´ E mais ou menos 7. DELTA. IM C PRINT *.DL DIV BL OR AX.X2 ELSE IF (DELTA. "RAIZES: X1=X2=". A mais famosa e usada ´ a a a e Fortran 90. A inclus˜o de um tipo de dados de n´ mero complexo na linguagem tornou a lina u guagem Fortran particularmente apta para a computa¸ao cient´ c˜ ıfica. "Digite a.*. 77.6.RE. e O LISP nasce como filho da comunidade de Inteligˆncia Artificial.1X."i" ENDIF C END INT 21H PUSH AX .*A) X2=(-B+SQRT(DELTA))/(2.GT."i" PRINT *. ou pelo menos era.*A) IM=SQRT(-DELTA)/(2.*A*C C IF (DELTA.ERR=20) A. Sua principal vantagem ´ a eficiˆncia em calculo num´rico pesado. As principais revis˜o s˜o a Fortran 66.grau" ca PRINT *.*A) X2=X1 PRINT *. Backus.c: " 10 FORMAT(A.B.DH PUSH AX . Na origem." -".ˆ CAP´ ITULO 2. 90 e 95. O primeiro compilador de FORTRAN foi desenvolvido para o IBM 704 em 1954-57 por uma equipe da IBM chefiada por John W. Foi a unica linguagem ensinada em escolas de engenharia at´ a d´cada de ´ e e 80.IM.*A) PRINT *.3 Lisp 2.0) THEN ! (DUAS RAIZES REAIS) X1=(-B-SQRT(DELTA))/(2.X1 ELSE ! (DUAS RAIZES COMPLEXAS) RE=-B/(2.0 MOV AL.*A) PRINT *.10 MOV DI. " X2=". CIENCIA DA COMPUTACAO ¸˜ ˆ CAP´ ITULO 2.2 Fortran Fortran ´ uma linguagem muito antiga. E. "do tipo: a*x**2 + b*x + c = 0" C PRINT 10. por exemplo a a c˜ a demonstra¸ao de teoremas) e os inform´ticos (que buscavam expandir os limites da c˜ a ciˆncia). "RAIZES COMPLEXAS: X1="." " STOSB MOV AH.C.EQ. " X2=".6.$) 20 READ(*." " STOSB 2. um exemplo de FORTRAN C 1 2 3 4 5 6 C2345678901234567890123456789012345678901234567890123456789012345 PROGRAM BASKHARA C REAL A.DEPOIS VOU DAR POR EXTENSO DIV BL OR AX. FORTRAN significa c˜ a vers˜o de 10 de fevereiro de 2008 a LISP ´ a segunda linguagem de alto nivel mais antiga. Seu texto se assemelha a uma descri¸ao matem´tica e de fato.0 MOV AL.X2.B. CIENCIA DA COMPUTACAO ¸˜ ´ FORmula TRANslation. os psic´logos (na tentativa de entender e estudar processos cerebrais o humanos). e e e A seguir.3030H STOSW MOV AL. matem´ticos (a mecaniza¸ao de aspectos da matem´tica.DEPOIS VOU DAR POR EXTENSO MOV BX. originalmente sugerida pela IBM na d´cada de e e 50. Pedro Kantek 44 vers˜o de 10 de fevereiro de 2008 a . Pedro Kantek 43 88-08.OFFSET DIA MOV AH. "RAIZES: X1=".RE. "Este programa resolve uma equa¸~o de 2o.3030H STOSW MOV AL. X1.0) THEN ! (DUAS RAIZES REAIS IGUAIS) X1=-B/(2.b. RE.IM." +". 4 e grupos de pessoas se inseriram na comunidade de IA: os ling¨ istas (na busca de um u tradutor universal).C C DELTA=B*B-4.X1 PRINT *. uma linguagem franciscana de t˜o pobre a em recursos. e 88-08. sempre deu-se maior aten¸ao ao LISP. desaloca¸ao a o c˜ a c˜ autom´tica. em Edinbourg e Marselha. c˜ A primeira constata¸ao foi a de que linguagens existentes privilegiavam dados num´ric˜ e cos na forma de arrays. Assim. por causa. T. Em 1958.jorge) YES ? parent(celia. cada um queria apresentar a sua vers˜o como u a sendo a melhor. ? parent(X.parent(Y.jorge):-true. Nil. Nos EUA. aloca¸ao dinˆmica de listas. A primeira vers˜o (chamada LISP pura) era a a completamente funcional.jorge) X=maria X=joao no (significando acabou) ? parent(X. com sua Logic Theory Machine.cris) NO ? parent(cris. FranzLisp. parent(jorge. Winograd escreveu o software Planner. LeLisp. e Todos estes tinham problemas de eficiˆncia. e a Seja agora um exemplo de uma fun¸ao lisp: c˜ > (defun li (L1 L2) . ao inv´s de criar nova linguagem. c o Foram eles: recurs˜o. A primeira proposta foi IPL (Information Processing Language I. Buscava-se uma fun¸ao Lisp Universal c˜ (como uma m´quina de Turing Universal). entre outras coisas. parent(cris. e a a In´ meros dialetos LISP apareceram.Y) X=maria Y=jorge X=joao Y=jorge . c˜ a A seguir.. CIENCIA DA COMPUTACAO ¸˜ Green em 1969.. Come¸a o sucesso de c PROLOG na Europa. parent(joao. baseados no conceito de Robert Kowalski da interpreta¸ao procedimental das cl´usulas de Horn. Kowalski bolou o seguinte esquema: – Limitou a expressividade as cl´usulas de Horn ` a – Criou uma estrat´gia de resolu¸ao. um pequeno trecho de uma sess˜o PROLOG: a parent(maria..ˆ CAP´ ITULO 2. LISP foi sofrendo modifica¸oes e melhoramenc˜ tos visando eliminar ineficiˆncias e dificuldades de uso.paulo) [ler esta v´rgula como OU] ı X=jorge Y=cris 2.ana):-true.6. Por exemplo. surgiu a linguagem PROLOG. Foi criada em meados de 1972 por Alain c˜ Colmerauer e Philippe Roussel. escreveu o Question Answer System. que buscava a prova autom´tica de teoremas. a Robinson. Na mesma ´poca. O FORTRAN n˜o tinha a menor possibilidade de atendˆ-las e assim Mca a e Carthy junto com M. em 1956. no artigo A machine oriented logic based on the resolution principle.6. que trouxe duas e conseq¨ˆncias importantes: a atribui¸ao do nome IA e a possibilidade dos diferentes ue c˜ pesquisadores se conhecerem e terem suas pesquisas beneficiadas por uma interfecunda¸ao intelectual.4 Prolog O nome Prolog para a linguagem concreta foi escolhido por Philippe Roussel como uma abrevia¸ao de PROgrammation LOGique. o c˜ editor EMACS que ´ um padr˜o no mundo UNIX est´ feito em LISP. Como resultado o Common Lisp ficou grande e um tanto quanto heterogˆneo. c˜ *Hist´rico o Precursores: Newell.Y). mas muito eficiente e c˜ a Em 72. A IBM a engajou-se no esfor¸o. MacLisp. fio nanceiros e administrativos para empresas e governos. pergunta se duas listas s~o iguais a (cond ((null L1) (null L2)) ((null L2) nil) ((not (eql (car L1) (car L2))) nil) (t (li (cdr L1) (cdr L2))))) LI ˆ CAP´ ITULO 2. da e explos˜o combinat´ria. McCarthy come¸ou a pesquisar requisitos para uma linguagem simb´lica. n˜o completa. um dos trˆs comitˆs proe e e postos numa reuni˜o no Pent´gono em Maio de 1959. como maneira de facilitar a comunica¸ao entre c˜ todos estes (e outros) ambientes. express˜es condicionais. . organizado por Charles Phillips a a 88-08. Em 77. a o Em 1970. mas ele herda as melhores pr´ticas de cada um de seus antecessores. CIENCIA DA COMPUTACAO ¸˜ O marco inicial ´ o encontro no Dartmouth College em 1956. A motiva¸ao para isso veio em parte da c˜ a c˜ vontade de reconciliar o uso da l´gica como uma linguagem declarativa de representa¸ao o c˜ do conhecimento com a representa¸ao procedimental do conhecimento. ZetaLisp. 65. Pedro Kantek 46 vers˜o de 10 de fevereiro de 2008 a . trabalhou-se na cria¸ao de um padr˜o que foi denomc˜ a inado Common Lisp. que define seu objetivo principal em sistemas comerciais. Mais tarde. mas tendo gasto muito no projeto FORTRAN decidiu agregar-lhe c capacidade de listas. c˜ Foi a base para o computador de 5a gera¸ao do Jap˜o. em Edinbourg.. Interlisp. Por exemplo. Da´ podemos perguntar: ı: ? parent(joao. Scheme. Xlisp. Shaw e Simon. que respondia perguntas sobre um dado dom´ ınio. Pedro Kantek 45 88-08. Finalmente. c˜ vers˜o de 10 de fevereiro de 2008 a 2.paulo):-true. Acabou por se tornar uma e linguagem 100% adequada a qualquer tipo de resolu¸ao de problema.carlos) NO ? parent(X. Autolisp etc. do uso de resolu¸ao e principalmente do o c˜ algoritmo de unifica¸ao. O COBOL foi criado em 1959 pelo Comitˆ de Curto Prazo. Propunha o uso da f´rmula clausal.jorge):-true. por Newel e Simon em 1956). Era um assembl˜o com suporte a listas. a busca foi a cria¸ao de ambientes que processassem c˜ s´ ımbolos na forma de listas.5 Cobol O nome vem da sigla de COmmon Business Oriented Language (Linguagem Comum Orientada aos Neg´cios). Minsky desenvolveu o LISP. Waren escreve o primeiro compilador de PROLOG. Nasceu a FLPL (Fortran List e Processing Language). . menos c˜ a sujeita `s ambig¨ idades da nota¸ao convencional. bons m´todos de manuseio de arquivos. CIENCIA DA COMPUTACAO ¸˜ do Departamento de Defesa dos Estados Unidos. trabalhando na IBM em conjunto com Adin Falcoff.. e continua ainda em uso depois de mais de 40 anos. pelos professores John G. Por fim. quando um interpretador da linguagem ficou dispon´ a ıvel.6 APL Ela nasceu do trabalho de um professor de matem´tica canadense de nome Keneth a Iverson. e e a a Entretanto. At´ o advento das interfaces c˜ e gr´ficas.22. sendo que ´ quase que e padr˜o usar n´ meros de 10 em 10 (o que facilita a coloca¸ao de linhas intermedi´rias). CIENCIA DA COMPUTACAO ¸˜ a resposta tamb´m o ser´. a u c˜ Na d´cada de 60. * PROCEDURE DIVISION. como o windows. para. e c˜ As especifica¸oes foram aprovadas pelo Comitˆ de Curto Prazo.123. a saber: Burroughs Corporation. Em algumas vers˜es de APL este n chega a a e o 256 dimens˜es. o Este ´ um comando EDIT (troca algo. o Comitˆ de M´dio Prazo nunca chegou a fune e cionar. notadamente sintaxe prolixa e falta de suporte da c˜ e e vari´veis locais. HELLO-WORLD. Pedro Kantek .(-B+SQR(D))/(2*A) PRINT "SEGUNDA SOLUCAO". exigia-se um hardware especial para poder a programar em APL. ambos produzie ram a primeira vers˜o de APL. ˆ CAP´ ITULO 2. PARA-1. c˜ Basic ´ uma linguagem imperativa de alto n´ e ıvel.C IF A=0 THEN GOTO 410 LET D=B*B-4*A*C IF D<0 THEN GOTO 430 PRINT "SOLUCAO" IF D=0 THEN GOTO 100 PRINT "PRIMEIRA SOLUCAO". Por exemplo. * ENVIRONMENT DIVISION..) e alguns s´ ımbolos especialmente inventados. Entretanto. Programas em APL em geral sempre s˜o muito pequenos. se A e B forem escalares (isto ´ um n´ mero unico). e excepcional modelagem de c˜ e dados para a ´poca. A partir da´ foram c˜ e ı aprovadas pelo Comitˆ Executivo em Janeiro de 1960. e Sylvania Electric Products. a o quando em APL se escreve A+B. e IDENTIFICATION DIVISION. pertencente a terceira gera¸ao. BASIC tamb´m ´ o nome gen´rico dado a uma grande fam´ de linguagens de e e e ılia programa¸ao derivadas do Basic original. e o Comitˆ de Longo Prazo nem chegou a ser formado. segundo os padr˜es modernos de defini¸ao de linguagens de o c˜ programa¸ao.) e 2. . de. por ter sido fortemente e a baseada em FORTRAN II.). o foi criada. embora poderosos.. e u ´ vers˜o de 10 de fevereiro de 2008 a 47 88-08. Um comitˆ de e e M´dio Prazo e outro de Longo Prazo foram tamb´m propostos na reuni˜o do Pent´gono.. Kemeny e T. Um programa em Basic tradicional tem suas linhas numeradas. Sperry Rand. o David Taylor Model Basin e a Agˆncia Nacional de Padr˜es (National Bureau e o of Standards ou NBS).20. o * STOP RUN. recorrˆncia. s´ ımbolos matem´ticos convencionais (o sinal a de vezes. com fins did´ticos. IBM. Minneapolis-Honeywell (Honeywell Labs). que calcula a f´rmula de Bhaskara ficaria como: o 10 20 25 30 40 50 60 70 80 90 100 200 410 420 430 440 490 500 REM RESOLVE EQUACAO DO SEGUNDO GRAU READ A. PROGRAM-ID.(-B)/(2*A) GOTO 20 PRINT "A DEVE SER DIFERENTE DE ZERO" GOTO 20 PRINT "NAO HA SOLUCOES REAIS" GOTO 20 DATA 10. A principal caracter´ ıstica de APL ´ o uso de um conjunto especial de caracteres que e incluem algumas letras gregas (rho. Sua proposta original era a de produzir uma nova nota¸ao matem´tica.7 Basic A linguagem BASIC (acrˆnimo para Beginners All-purpose Symbolic Instruction Code). Um programa em Basic. originalmente. Mundo. Provavelmente existem mais varia¸oes de c˜ c˜ Basic do que de qualquer outra linguagem de programa¸ao.6.B. Este comitˆ foi presidido por um membro do NBS. * DATA DIVISION. a resposta tamb´m o e a a u e ser´. A a linguagem est´ preparada para tratar arranjos de grandes dimens˜es. Kurtz em 1963 no a Dartmouth College. o de dividido.1241. Foi constitu´ o ıdo por membros representantes de seis fabricantes de computadores e trˆs ´rg˜os govere o a namentais. O COBOL foi desenvolvido num per´ ıodo de seis meses. que ` c˜ ´ normalmente interpretada e. tinha s´rias deficiˆncias. embora tenha sido formado. e a a que as editou e imprimiu com o nome de Cobol 60.. um subcomitˆ e e do Comitˆ de Curto Prazo desenvolveu as especifica¸oes da linguagem COBOL.-1 END 48 vers˜o de 10 de fevereiro de 2008 a 2. Segue o esqueleto de um programa fonte COBOL.6.".(-B-SQR(D))/(2*A) GOTO 20 PRINT "SOLUCAO UNICA".. Idem para matrizes e at´ arrays-nd.. gra¸as ao uso da cl´usula PICTURE para especifica¸oes detalhadas e c a c˜ de campos. simples e facilmente compreens´ a ıveis na l´ ıngua inglesa (LET. a u c˜ a Os comandos s˜o poucos.). O COBOL foi definido na especifica¸ao original.ˆ CAP´ ITULO 2. iota. RCA. j´ que o conceito era a desconhecido naquela ´poca. Este fato sempre limitou a dissemina¸ao da linguagem. Se A e B s˜o vetores de 100 n´ meros. n˜o estruturada. a e c˜ a o c˜ A falta de suporte ` linguagem orientada a objeto ´ compreens´ a e ıvel.. O Comitˆ de Curto Prazo foi fore mado para recomendar as diretrizes de uma linguagem para neg´cios. e a For¸a A´rea dos Estados c e Unidos.. aloca¸ao dinˆmica de mem´ria e programa¸ao estruturada. e enviadas ` gr´fica do governo. Pedro Kantek 88-08. por exemplo. IF. DISPLAY "Al^. possuia excelentes capacidades de c˜ autodocumenta¸ao. a c˜ A linguagem ´ extremamente bem estruturada e muito adequada para ensino de e linguagens de programa¸ao. Pedro Kantek 50 vers˜o de 10 de fevereiro de 2008 a . Em 79. come¸aram a trazer problemas e dissabores a Jeb Long. Em pouco tempo. Rapidamente o novo trabalho tornou-se melhor do que o original. o Natural ´ mais indicado para ler bancos u e de dados ADABAS. que desenvolveu. Este programa a c˜ com nome de JPLDIS.5 say "Qual a turma ? " get w_turm pict "@!" vers˜o de 10 de fevereiro de 2008 a 2. Foi. A grande vantagem de um banco de dados ´ retirar a amarra¸ao entre programas e e c˜ dados. Separando-os garante-se que longevidade aos dados. e ele foi anunciado com o nome de VULCAN. por acaso um trecho do programa que emite provas aleat´rias e diferentes: o w_nomq = space(8) w_file = "LIXO " @ 08.40 say "OU arquivo de nomes " get w_nomq pict "@!" oba := 1 do while oba == 1 oba := 0 W_mess := " " @ 11. A explica¸ao desta vantagem ´ que dados s˜o muito mais est´veis do que os proc˜ e a a cedimentos (=programas). Embora possa ler arquivos seq¨ enciais.6.10 Pascal ´ E uma linguagem de programa¸ao estruturada que recebeu este nome em homenagem c˜ ao matem´tico Blaise Pascal. e instalado em Pasadena. que em geral s˜o os mais custosos para adquirir. que a partir da d´cada de 90 foi o padr˜o de bancos de dados em e a nosso pa´ e em boa parte do mundo. para apresentar o produto como um melhoramento). Rapidamente providenciaram-se algumas mudan¸as cosm´ticas no proc e grama. dos quais o mais e u famoso foi o CLIPPER. Por c volta de 83. Testou-o e ficou entusiasmado. a o Alguns meses depois. logo surgiram in´ meros compiladores. pois o IF funciona c˜ como um GOTO condicional. um fracasso: n˜o se chegou a vender sequer 50 c´pias.ZZZ) "SALARIO/MEDIO" AVER(SALARIO) "SALARIO/MAXIMO" MAX(SALARIO) "NUMERO/PESSOAS" COUNT(CIDADE) (EM=ZZ99) AT END OF DATA DO SKIP 1 WRITE "TOTAL DE TODOS OS SALARIOS" TOTAL(SALARIO) DOEND END 2. E provavelmente uma das linguagens mais bem resolvidas c˜ ´ entre as linguagens estruturadas. um programa de computador capaz de gerenciar tais informa¸oes. ou por programadores profissionais em a c suas atividades normais no CPD. Para c˜ e c corrigir estas duas deficiˆncias. dentro da vis˜o relacional. Ratliff achou que o programa j´ estava maduro e pronto para enfrentar o a mercado.ZZZ. tomou conhecimento do dBASE.20 say "Topico: " get w_top1 @ 12.50 say "Grupo: " get w_gru1 pict "99" 2.6.45 say "Nome Arquivo: " get w_file pict "@!" @ 09. indistintamente e c˜ por usu´rios finais trabalhando em auto-servi¸o. 84 surgiu o dbase 2 (nunca houve o 1) para micros de 8 bits com mem´rias o t´ ıpicas de 64Kb e um ou dois disquetes de 8 polegadas e cerca de 512 KB de capacidade em cada um.8 Clipper Tudo come¸ou com o dbase. a O dbase como linguagem era interpretado. Pascal foi criada simultaneamente para ensinar programa¸ao estruc˜ turada e para ser utilizada em sua f´brica de software. o Segundo o autor. e 88-08.9 Natural NATURAL ´ uma linguagem de quarta gera¸ao que pode ser utilizada. o ALGOL W. com m´ a a ınima redundˆncia de dados e com todas as garantias de acesso e uma linguagem estruturada. o ˆ CAP´ ITULO 2. dBASE tornou-se um marco na hist´ria de softwares para microo computadores. A linguagem reflete a libera¸ao a c˜ pessoal de Wirth ap´s seu envolvimento com a especifica¸ao de ALGOL 68. a no melhor padr˜o. CIENCIA DA COMPUTACAO ¸˜ O programa demonstra a falta de estrutura¸ao da linguagem original. entretanto. CIENCIA DA COMPUTACAO ¸˜ @ 09. Foi criada em 1970 pelo su´co Niklaus Wirth. o que favorece o c´digo espaguete. por serem em e a grande n´ mero. foi conclu´ e alcan¸ou razo´vel sucesso tendo sido bastante ıdo c a comentado pelo pessoal t´cnico. Pedro Kantek 49 88-08. uma vez que seu trabalho era muito bom. gen´rico. no Jet Propulsion Laboratory. de uso geral. George Tate. ıs Eis um exemplo de programa em Natural: 0010 0020 0030 0040 0050 0060 0070 0080 0090 0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 AT TOP OF PAGE DO WRITE 20T "INFORMACOES SALARIAIS PARA SANTA CATARINA" SKIP 1 DOEND FIND PESSOAL WITH ESTADO = "SC" SORTED BY CIDADE AT BREAK OF CIDADE DISPLAY NOTITLE "NOME DA/CIDADE" OLD(CIDADE) "TOTAL/SALARIOS" SUM(SALARIO) (EM=ZZZ. o que trazia desempenho p´ nas apliıfio ca¸oes. e certamente um dos exemplos de como uma linguagem especificada por uma pessoa pode ser bem melhor do que uma linguagem especificada por um comitˆ. e sua sugo c˜ est˜o para essa especifica¸ao. Foi o que bastou para que um analista de sistemas e (Wayne Ratliff) come¸asse a desenvolver um programa gerenciador de dados. al´m da eventual falta de seguran¸a (qualquer um podia alterar os dados).ˆ CAP´ ITULO 2. c e mas tendo como modelo o JPLDIS. que foi o precursor de bancos de dados para micros. c˜ A hist´ria do dBASE come¸a em 74. seu nome foi mudado para dBASE II (nunca houve o dBASE I. conhecido como o c JPL. Eis um programa em CLIPPER. e uma nova e empresa (ASHTON TATE) foi criada para vender este produto. o Nesta instala¸ao da NASA trabalhava Jeb Long. O dbase j´ era um gerenciador de dados. Achou que o que faltava a Ratliff era suporte comercial.15 say "Questao 1:" @ 12. e Ratliff desenvolveuo cada vez mais. tendo em a ı¸ mente encorajar o uso de c´digo estruturado. um grande distribuidor de programas de micros. capaz de garantir um aumento na produtividade na a programa¸ao. Calif´rnia.6. pesquisador que lidava com dados c˜ obtidos nas pesquisas espaciais atrav´s de naves n˜o tripuladas. tratava-se de estrat´gia comercial. u c ent˜o. Estes. a linguagem foi sucedida pela cria¸ao da linguagem Object Pascal. /*estrutura declarada*/ int main(void) { struct pessoa Sousa={16. /*vector de 51 chars para o nome*/ unsigned long bi. que ´ padronizado pela ANSI (Ansi C).11 C C ´ uma linguagem de programa¸ao estruturada e padronizada criada na d´cada de e c˜ e 1970 por Dennis Ritchie e Ken Thompson para ser usada no sistema operacional UNIX. Pascal ´ normalmente uma das linguagens de escolha para ensinar programa¸ao. e e Java tornou-se popular pelo seu uso na Internet e hoje possui seu ambiente de execu¸ao c˜ presente em web browsers.b:integer. Outra caracter´ ıstica importante de C ´ sua proximidade com a linguagem e de m´quina. CIENCIA DA COMPUTACAO ¸˜ Pascal originou uma enorme gama de dialetos. }. writeln (’Digite o n´mero para B’). seus sucessores s˜o as linguagens subseq¨ entes de Niklaus Wirth: Modula-2 e Oberon. Diferentemente das linguagens convencionais. a u A partir da vers˜o 2005. Academicamente. mainframes. o entre outros. printf("BI: %lu\n".“write once run anywhere” e Recursos de Rede . Praticamente c˜ a tudo que se expressa em um programa em C pode ser executado. Kylix e Lazarus. S´ mais recentemente o Java entrou nesta lista. begin writeln (’Digite um n´mero para A’). } a writeln (’B ´ maior que A’).Programas em Java s˜o formados por uma cole¸ao de classes a o a c˜ armazenadas independentemente e que podem ser carregadas no momento de utiliza¸ao.ˆ CAP´ ITULO 2. da linguagem Turbo Pascal.(int)Sousa.println("AuAu!"). vers˜o de 10 de fevereiro de 2008 a Java ´ uma linguagem de programa¸ao orientada a objeto desenvolvida na d´cada de 90 e c˜ e pelo programador James Gosling. que por sua vez foi uma das inspira¸oes para Java. e tornou-se uma das a linguagens de programa¸ao mais usadas. o Pascal possui e padr˜es pela ISO. a C tem como ponto fraco a falta de prote¸ao que d´ ao programador.Suporta nativamente caracteres Unicode c˜ Simplicidade na especifica¸ao. a linguagem Java ´ a o e compilada para um ”bytecode” que ´ executado por uma m´quina virtual. e end ˆ CAP´ ITULO 2. Grande parte de seu sucesso se deve a cria¸ao. como por exemplo pedir o vig´simo membro de um vetor com apenas dez membros.Sousa. } 2. /*declaracao de uma variavel tipo struct pessoa com o nome Sousa*/ printf("Idade: %d\n"..123456789}. sendo que a mais c˜ utilizada atualmente ´ C++. /* "%d" espera um int */ printf("Nome: %s\n". C e Fortran. que s˜o compiladas para c´digo nativo.idade).nome). Principais Caracter´ ısticas da Linguagem Java A linguagem Java foi projetada tendo em vista os seguintes objetivos: Orienta¸ao a objeto . SOs. } public class Cachorro extends Animal { public void fazerBarulho() { System.. inicialmente dispon´ para computadores e ıvel baseados na na arquitetura 8086 (com vers˜es para 8080 no seu in´ o ıcio). c˜ Eis um exemplo: public abstract class Animal { public abstract void fazerBarulho(). na empresa Sun Microsystems. O e c˜ exemplo: #include <stdio. if (a > b) then { Se A ´ maior que B ent~o } e a writeln (’A ´ maior que B’) e else { Sen~o. return 0. Um exemplo: o program Teste. uses crt.Sousa."Diogo Sousa". Desde ent˜o espalhou-se por muitos outros sistemas operacionais.out. em maio de 1995. Assim como a Linguagem C. Os resultados muitas e vezes totalmente inesperados e os erros s˜o dif´ a ıceis de encontrar. c˜ o c˜ Em 2003 Java atingiu a marca de 4 milh˜es de desenvolvedores em todo mundo. como HTTP e FTP Seguran¸a . } 51 88-08. na ılia c˜ c˜ d´cada de 80. Pedro Kantek 52 vers˜o de 10 de fevereiro de 2008 a . E c˜ e e c˜ mesmo n˜o tendo sido projetada para estudantes e apresentando algumas dificuldades a no seu uso.6. CIENCIA DA COMPUTACAO ¸˜ char nome[51]. Muitas linguagens de programa¸ao foram influenciadas por C.Pode executar programas via rede com restri¸˜es de execu¸ao c co c˜ Sintaxe similar a Linguagem C/C++ Facilidades de Internacionaliza¸ao . o Comercialmente. apesar de tamb´m ser usada para e a e ´ tamb´m muito usada no ensino de ciˆncias da computa¸ao. var a. celulares.h> struct pessoa { unsigned short idade. que permite que um projetista seja capaz de fazer algumas previs˜es de a o como o software ir´ se comportar ao ser executado.Baseado no modelo de Smalltalk e Simula67 c˜ Portabilidade . u readln (a). o Delphi passou a se referir a sua linguagem de programa¸ao a c˜ como Delphi Language.12 Java 2.Possui extensa biblioteca de rotinas que facilitam a coopera¸ao com c˜ protocolos TCP/IP. u readln (b). palmtops e cart˜es inteligentes. desenvolver aplica¸oes. c˜ atualmente utilizada nas IDEs Borland Delphi.bi). Java o continuou crescendo e hoje ´ uma referˆncia no mercado de desenvolvimento de software. como o Pascal Standard e o Advanced Pascal.6. e a Desde seu lan¸amento.Independˆncia de plataforma . tanto da linguagem como do ”ambiente”de execu¸ao (JVM) c˜ c˜ ´ E distribu´ com um vasto conjunto de bibliotecas (ou APIs) ıda Possui facilidades para cria¸ao de programas distribu´ c˜ ıdos e multitarefa (m´ ltiplas linhas u de execu¸ao num mesmo programa) c˜ Desaloca¸ao de mem´ria autom´tica por processo de coletor de lixo (garbage collector) c˜ o a Carga Dinˆmica de C´digo . e c˜ junto com Scheme. c˜ C tem como ponto-forte a sua eficiˆncia e ´ a linguagem de programa¸ao de prefere e c˜ ˆncia para o desenvolvimento de software b´sico. podendo tamb´m ser considerada uma e fam´ de linguagens de programa¸ao. a plataforma Java foi adotada mais rapic damente do que qualquer outra linguagem de programa¸ao na hist´ria da computa¸ao. Pedro Kantek 88-08. ˆ CAP´ ITULO 2. que gera um sistema de n inc´go nitas e n equa¸oes. com PHP.jsoftware.1)$z). Veja um exemplo de PHP <? . $query = "select * from ANDAM where ANDAMNSERV =’$nserv1’ " .y*1. RISC OS. Mais tarde. dependendo da configura¸ao c˜ c˜ do servidor. $porss =mysql_result($result. livre e muito utilizada para gerar conte´ do c˜ u dinˆmico na Web. com o nome Personal Home Page Tools. foi lan¸ado o novo pacote da linguagem com o nome de PHP/FI. Este a a e provˆ suporte a um grande n´ mero de bases de dados: Oracle.6. $tipss =mysql_result($result. a A linguagem surgiu por volta de 1994.. } } ˆ CAP´ ITULO 2. que era na verdade um interpretador de comandos SQL.. CIENCIA DA COMPUTACAO ¸˜ } public class Gato extends Animal { public void fazerBarulho() { System. Trata-se de uma linguagem modularizada. Olhando e c para o J. precisamos estudar a vida do cara que inventou o APL. o que a torna ideal para instala¸ao e uso c˜ em servidores web. $anexo =mysql_result($result. c˜ c ele chegou a algumas conclus˜es: o o uso de um alfabeto n˜o usual (para ser educado)..13 PHP PHP (um acrˆnimo recursivo para “PHP: Hypertext Preprocessor”) uma linguagem de o programa¸ao de computadores interpretada.0. ?> <table > <tr> <td>Numero da solicitacao de servico<td><? echo $nserv ?><tr> <td>autor<td><? echo $nomeu ?><tr> <td>cliente<td><? echo $clien ?><tr> <td>CA responsavel<td><? echo $cares ?><tr> <td>interlocutor no cliente<td><? echo $intcl ?><tr> <td>fone<td><? echo $fonic ?><tr> <td>email<td><? echo $emaic ?><tr> vers˜o de 10 de fevereiro de 2008 a Para os que acharam APL uma linguagem meio sem p´s nem cabe¸a. c˜ Depois de propor o APL como uma nota¸ao matem´tica (d´cada de 50). FreeBSD. em meados dos 80. Linux. NNTP.1)$xx ) Equivale ao programa gerasima do workspace vivo128. em tipos de dados. Sybase. o sujeito foi um gˆnio.1. e u InterBase. Para maiores detalhes veja www. o 53 88-08. depois o resolve para obter os termos independentes e possibilitar c˜ propor ao aluno que descubra as inc´gnitas. HTTP. Diversos m´dulos s˜o criados no reposit´rio de extens˜es PECL o a o o (PHP Extension Community Library) e alguns destes m´dulos s˜o introduzidos como o a padr˜o em novas vers˜es da linguagem. $quantos++. $quantos = mysql_num_rows($result). sendo este ”I”a nota¸ao Iverson. o APL passa a ser t˜o comportada quanto um COBOL da d´cada de 70. Muito parecida.5*?200$2 1 1 1 2 1 2 xx=. $daali =mysql_result($result. H´ quem diga que J segue a ”I”no alfabeto. eis aqui J. N˜o esque¸amos que o Iverson era um matem´tico e o a c a da pesada o custo que o APL sempre teve inviabilizava seu uso pelos menos aquinhoados Dessas elocubra¸oes nasceu a linguagem J.(y?(<. Seja como for.’SSERVTIPSS’). como um subconjunto de scripts Perl criados por Rasmus Lerdof. a e Para entender o J. de liderar c˜ a e o grupo que converteu o APL em linguagem de programa¸ao (d´cada de 60 na IBM) e c˜ e de liderar a populariza¸ao da linguagem (anos 70 e come¸os dos 80). Coloco-o sem nenhum medo a e de errar na galeria dos grandes matem´ticos da humanidade. o desenvolvimento continuado por 30 anos da linguagem apontou algumas inconsistˆncias te´ricas no modelo. E poss´ abrir sockets e interagir com outros protocolos. POP3. exceto a c˜ a c˜ dada por um de seus autores (”Why ’J’ ? It is easy to type.’SSERVDAALI’). talvez o primeiro (junto a com Mandelbroot) que tenha realmente conseguido casar com sucesso a matem´tica e a a computa¸ao. Pode ser. $result = mysql_query($query). restringia o uso do APL a (lembremos que ainda n˜o havia o windows e portanto para usar APL havia que a comprar hardware especializado .6)) z=.(2$y)$(1+?200$2 2 2 2 2 3 3 3 4 4 4 5 6)*2+-<. CIENCIA DA COMPUTACAO ¸˜ 2. MySQL.14 J 2. embutida no c´digo HTML.6. Existem vers˜es do PHP dispon´ o o ıveis para os seguintes sistemas operacionais: Windows.println("Miau!"). trazendo a ferramenta c Forms Interpreter. SQLite. entre outras. Pedro Kantek 54 vers˜o de 10 de fevereiro de 2008 a . O nome n˜o tem explica¸ao. Mac OS. MSSQL. sintaxe e a o mesmo fun¸oes. J n˜o tem nada a ver c˜ a com Java.out. Firebird etc. Eis a seguir um programa J: gerasima =: 3 : 0 r=.com. podendo abstrair o banco com a biblioteca ADOdb. SOAP. LDAP.’SSERVANEXO’).0.0. em 1997. Na minha opini˜o. PostgreSQL.”). XML´ RPC. com a linguagem C e com a C++. o canadense Ken Iverson. SNMP.’SSERVPORSS’).. PHP tem suporte aos protocolos: IMAP. Novell Netware. Pedro Kantek 88-08.0.(y. OS/2.+/|:r*($r)$xx r.e caro). IRIX e Solaris Construir uma p´gina dinˆmica baseada em bases de dados ´ simples.((y. AS/400. E as bibliotecas ıvel de terceiros expandem ainda mais estas funcionalidades. Pode-se usar neste caso o separador ( ). levar a identificadores v´lidos. CLIPPER e APL). c˜ S´ ımbolo no formato Significado palavra Na escrita desse comando. Seja por hip´tese a seguinte especifica¸ao de comando: o c˜ <nome> gostaria [muito] de {comer | beber} A partir da especifica¸ao acima. o a O autor do algoritmo tem total autoridade para nomear seus identificadores como queira. `s vezes tamb´m aparee a e cem na omiss˜o de uma parte opcional em um a comando qualquer { op¸ao 1 | op¸ao 2 | . os 10 d´ ıgitos de 0 a 9.. etc. u Exemplos v´lidos a NOME SOM_TERMOS RAIZ1 SALDO08 SALDO_09 Exemplos n˜o v´lidos a a nome (usa-se letras min´sculas) u Saldo Devedor (usa-se duas palavras) SaldoDevedor (mistura-se letras mai´sculas e min´sculas) u u 123SALDO (come¸a por um d´gito num´rico) c ı e Embora a maioria dos livros de l´gica n˜o fa¸am distin¸ao entre o uso de mai´ sculas o a c c˜ u e min´ sculas para efeito de estabelecimento de identificadores. seriam v´lidos os comandos c˜ a Jo˜o gostaria de beber a Maria gostaria muito de comer Antˆnio gostaria de comer. e ”d´ u ıgito”. ou ainda AKLJHJKH. mas nunca de ABC. Exemplo: Se precisarmos um c˜ identificador para representar uma somat´ria. deve-se discutir se as palavras que comp˜e o algoritmo devem ou n˜o ser o a acentuadas. a se o algoritmo for – no futuro – processado por algum programa. ESCREVENDO ALGORITMOS Cap´ ıtulo 3 Escrevendo algoritmos Para escrever algoritmos usando portuguˆs estruturado (portugol). Entretanto. e c e 88-08. tamb´m s´ h´ uma regra: BOM SENSO.. ou similar. Nem e o a t˜o pequeno que fique quase imposs´ a ıvel identific´-lo pelo nome. Tamb´m “¸” ´ diferente de “c”. Esta nota¸ao resume a linguagem de especifica¸ao de algoritmos. aqui vai-se padronizar u ´ nossos identificadores sempre EM LETRAS MAIUSCULAS.. o Dentro deste diagrama. e tem a finalidade de expressar o funcionamento do algoritmo em bom portuguˆs. poderemos cham´-lo de SOMA. <palavra> <palavra> deve ser substitu´ ıdo por algum tipo de palavra aceit´vel neste contexto a [ palavra ] ou [ < O fato de algo estar escrito entre colchetes sigpalavra > ] nifica que ´ OPCIONAL e . o que faz com que o identificador n˜o possa ser a a constitu´ de mais de uma palavra. As reticˆncias. mas se revelar´ uma grande vantagem na an´lise de algoritmos feitos a a por terceiros. tamb´m conhecido como identificador. A barra vertical indica que uma de v´rias c˜ c˜ a } op¸oes deve ser a escolhida c˜ Eis como usar esta tabela. Cada identificador deve ter um nome o mais pr´ximo poss´ o ıvel de sua fun¸ao. Ao gerar um identificador para conter a quantie dade total de horas trabalhadas deve-se cham´-lo como QTHT. Se o leitor a a e do algoritmo for um ser humano. mas feitos h´ tempos. Isto pode incomodar um pouco no in´ ıcio. Quanto ao tamanho do identificador. as 26 letras do alfabeto a latino mai´ sculas. (e nos pr´ximos que tiverem este formato) qualquer caminho o seguido.. ou a HORTRAB. SOMAT. Exemplo. ou XYZ.1 Nome O elemento b´sico da linguagem ´ o nome.CAP´ ITULO 3. Parece uma discuss˜o bizantina. pode-se acentu´-lo sem nenhum problema. da maneira mais clara pose s´ e completamente descompromissado das idiossincrasias dessas e outras linguagens ıvel de programa¸ao. ”palavra”deve ser escrita exatamente como aparece no formato. Pedro Kantek 3. chamado ıdo ”sublinha”. Deve-se atentar que o branco n˜o a faz parte do rol de caracteres v´lidos. primeiro necessita-se e estabelecer algumas regras de nota¸ao e de s´ c˜ ıntaxe. Sua a e e constru¸ao ´ dada pelo diagrama a seguir c˜ e 55 56 vers˜o de 10 de fevereiro de 2008 a . Atente-se para a importˆncia dos nomes criados pelo programador serem a escritos em mai´ scula. h´ que se ter em mente. nem t˜o longo que a a seja cansativo escrevˆ-lo.. a que em geral. (reticˆncias) e Repeti¸ao (de 0 a n vezes) de um determinado c˜ item. Come¸a-se descrevendo qual a forma c de ler os quadros indicativos da s´ ıntaxe da linguagem. Entretanto. mas seria um exagero chamar o identificador de QUANTIDADE DE HORAS TRABALHADAS NO MES. h´ uma regra de bom senso impl´ a ıcita. Consideram-se ”letra”.. ou QTDHORAS. mas n˜o o ´ necessariamente. o a SM. para qualquer programa “´” ´ diferente de “a” e esta regra vale para todas a e as letras. Finalmente. Ela ´ um apanhado c˜ c˜ e de no m´ ınimo 4 linguagens (Java. ou mesmo fde autoria pr´pria. PASCAL. ESCREVENDO ALGORITMOS CAP´ ITULO 3. conhecidos pelas palavras: VERDADEIRO e FALSO. a diferen¸a entre uma vari´vel c a caracter e uma vari´vel cadeia ´ que a primeira tem tamnho 1 (um unico caracter) e a a e ´ segunda tem tamanho maior que um.. eis uma parte do c´digo ASCII. −2.. objetos.2 C´digo de caracteres o No momento de representar caracteres. c a Esta dificuldade n˜o existe nas vari´veis num´ricas nem nas l´gicas que tem tamanhos a a e o predeterminados e principalmente fixos. n˜o importa). a dbase. . Como exemplo. -0. Outra ´ a a e o a e caracter´ ıstica da enumerabilidade que n˜o est´ presente no conjunto dos n´ meros reais. em n´ mero c˜ a a u de caracteres. por exemplo) usando artif´ a e ıcios para simular o conceito. Inteiro ´ E uma vari´vel que pode conter n´ meros inteiros (positivos ou negativos. a Cadeia ou string ´ E um tipo de vari´vel formado por um ou mais de um caracteres. Por exemplo. Este conceito tem a ver com restri¸oes e verifica¸oes que a linguagem deterc˜ c˜ mina ou executa a cada comando. pode-se simplificar esta quest˜o dizendo que qualquer caracter que a esteja no teclado do computador pode ser colocado em uma vari´vel caracter. e o embora se usem tamb´m o BCD. 2. Este tipo de erro. e a Embora possam ter uma defini¸ao formal.78 etc. dir-se-ia que o identificador representa uma constante). Uma 1 quantidade discreta (i.. coisas.1 Tipos de vari´veis a Existem cinco tipos de vari´veis b´sicas em portugol: inteiro. permitem que se defina uma vari´vel no instante u c˜ a em que ela passa a ser necess´ria e em qualquer ponto do programa. +∞ Real ´ E outra vari´vel num´rica que pode conter qualquer n´ mero real. para n´s ´ suficiente a seguinte descri¸ao: Uma c˜ o e c˜ vari´vel inteira ´ a que pode armazenar qualquer um dos n´meros do conjunto: a e u −∞. Java etc). Ex. por enquanto. -6730 etc. l´gico e a a o cadeia. inteiro ou a e u e fracion´rio. Esta atitude ´ necess´ria para informar a quem lˆ o algoritmo (seja um e a e homem ou um computador) quanto de espa¸o reservar para conter esta vari´vel. um nome: a ”JOSE”. Quando a c˜ este valor pode variar ao longo do processamento. Ou seja. um matem´tico... a a u Caracter Uma vari´vel que pode conter um unico caracter.qual o seu tamanho m´ximo. isto ´.CAP´ ITULO 3. (No contr´rio. −1. E uma vari´vel que pode a a conter apenas 2 valores. A tipagem forte torna as linguagens um pouco mais demoradas. ESCREVENDO ALGORITMOS L´gico ou booleano o ´ O nome booleando vem de George Boole. 3. que ´ a necessidade de estae belecer . O real conte´ do de uma vari´vel caracter depende do c´digo b´sico que est´ em uso. a 1 discreta 3. −n.2 Vari´veis a Ao identificador atribui-se um valor. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 57 88-08. u a o a a Mas. diz-se que o identificador representa uma vari´vel. e ıcil pois o sintoma que surge frequentemente ´ intermitente e nem sempre tem muito a ver e com o real local onde o erro est´ acontecendo.: 1. Pedro Kantek 58 vers˜o de 10 de fevereiro de 2008 a . . EBCDIC e mais recentemente haja uma tendˆncia no e e uso do UNICODE. pois esta n˜o ´ uma regra obrigat´ria. Qualquer opera¸ao e o c˜ de contagem. Outra vertente de linguagens fracamente a tipadas ´ quando a linguagem tem regras de convers˜o entre tipos diversos e elas s˜o e a a aplicadas antes de qualquer comando. caracter. de resto muitas vezes ´ dif´ de localizar e corrigir. enumer´vel) sempre pode ser processada com base nos inteiros. ou um unico d´ a ´ ´ ıgito. n˜o h´ uma aritm´tica para caracteres. mas evita erros cometidos pelo programador ao n˜o verificar as opera¸oes a c˜ que comandou.quando da defini¸ao da vari´vel .´. sempre nesta ordem. Claramente salta aos olhos que armazenar a uma vari´vel real ´ mais ”caro”(em tempo e em recursos) do que processar uma vari´vel a e a inteira.. Entrec˜ a u a tanto. C. Trata-se o c˜ a do c´digo ASCII (American standard Code for Information Interchange).. real. 1009. 1. . 0. ou seja. pode ser estabelecida a partir do conjunto dos valores inteiros. e portanto precisa-se construir uma s´rie a a e e de propriedades e rela¸oes entre os caracteres. 3. como uma letra. − (n + 1). Chama-se ` aten¸ao. c˜ a e Por norma do portuguˆs estruturado. A seguir..5. a c˜ a e o In´ meras linguagens de programa¸ao. aparece um problema: “Qual sua lei de forma¸ao c˜ e representa¸ao ?”. Tal problema n˜o aparece nos n´ meros: a matem´tica ajuda. v´rios caracteres. vai-se c˜ a aproveitar o c´digo de representa¸ao padr˜o em uso nos computadores atuais. Para n˜o criar um novo conceito. a a Outra defini¸ao para vari´vel ´: ”Um lugar onde se guarda uma valor”. 1700. que ser´ usado nas computa¸oes futuras.. Algumas linguagens n˜o tˆm este tipo (C ou APL. (Exemplo: BASIC. O o o c˜ mais usual ´ o c´digo ASCII (American Standard Code for Intrechange of Informations). Cobol..2. n. nossos programas ter˜o dois blocos: O primeiro ´ o de defini¸ao de a e c˜ vari´veis. enfim grandezas n˜o cont´ a ınuas C´digo de caracteres Existem diversos c´digos usados no mundo da computa¸ao. e o segundo ´ o de procedimentos. ou uma cidade como ”CURITIBA”etc..99. Assim. APL etc) Em portugol (e em Pascal. c˜ H´ linguagens de tipagem forte (por exemplo Pascal) e as h´ de tipagem fraca (por a a exemplo C). Existe uma caracter´ ıstica das linguagens de programa¸ao conhecida como “tipagem”. Fortran. isto n˜o ´ a e poss´ ıvel. a u a Exemplos: 5. n + 1. esta ´ uma das raz˜es porque existem vari´veis inteiras.2. a e O tipo cadeia traz consigo uma pequena dificuldade. todas as vari´veis devem ser declaradas antes e a de poderem ser utilizadas. Ali´s. uma o parte do pr´prio: o = quantia que exprime valores inteiros. O conceito de inteiro ´ familiar a n´s. . o 88-08. minuto-saida: inteiro. CEREAL. banana.10.2. e 20 S. Nele existem 3 tipos de pre¸os: 2 R $ por hora ou fra¸˜o para carros pequenos. Alguns outa c˜ ros c´digos: BRASCII (C´digo padr˜o BRASILEIRO para intercˆmbio de informa¸oes). ARROZ. n˜o ser´ nenhuma surpresa se a resposta for AMORA.2. a a ˆ ARROZ. e Assim.50 R$/hora para carros m´dios e 3 c ca e R$/hora para carros grandes. Exerc´ ıcio 8 Escrever um algoritmo que leia um conjunto de trˆs vari´veis que indicam e a respectivamente: Nome do funcion´rio (cadeia-30). o o a a c˜ EBCDIC (Extended binary-coded decimal interchange coded).4950. Esta seq¨ˆncia ASCII. minuto-entrada: inteiro. e nem sequer a melhor. calcule o valor a pagar.4. c˜ CAFE. ESCREVENDO ALGORITMOS Exerc´ ıcio 6 Defina um algoritmo capaz de comparar dois n´meros inteiros e positivos u e imprimir a mensagem IGUAIS ou DIFERENTES em fun¸˜o dos valores de tais n´meros. Exerc´ ıcio 3 Uma salada de frutas. se se a u ˆ solicitar a ordena¸ao de uma lista de palavras contendo AMORA. Olhando para ela. o sal´rio bruto.1.10 5. Da mesma maneira. ANCORA BROA.10.0 m. CEREAL e ANCORA.0 XXX.1 2. 2. n˜o se sabe qual a sua ordem no conjunto. Z-Code etc. Eles e u representam as dimens˜es x e y medidas em metros. isto vale para todas as letras).10 Maria.30. e se n˜o for a ˜ ´ deve imprimir ”NAO E DIVIS´ IVEL”.R. o ”a”min´ sculo ´ maior e u e do que o ”A”mai´ sculo (ali´s. o desconto ´ 8% do sal´rio bruto a e e a Para um sal´rio entre 10. < = > ? dec 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 carac @ A B C D E F G H I J K L M N O dec 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 carac P Q R S T U V W X Y Z [ & ] ^ dec 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 carac a b c d e f g h i j k l m n o dec 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 carac p q r s t u v w x y z { | } CAP´ ITULO 3. desconto ´ 9% do sal´rio bruto a e a Acima de 20 S. Exerc´ ıcio 9 O departamento de pessoal de uma empresa solicitou o desenvolvimento de um programa de computador capaz de calcular o desconto devido para a previdˆncia.30. / dec 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 carac 0 1 2 3 4 5 6 7 8 9 : .5. imprimir o RG. Outra observa¸ao ´ que na tabela ASCII n˜o existem caracteres acentuados.10. apenas se u a a o per´ ımetro deste mesmo retˆngulo for superior a 12.CAP´ ITULO 3. Pedro Kantek 60 vers˜o de 10 de fevereiro de 2008 a .10. Duas c˜ e a conseq¨ˆncias adv´m deste fato: nem sempre se podem usar tais caracteres e se eles ue e forem usados. Se o sal´rio for maior que R$ 650. encontre e ca e u devolva o maior deles.100. .0.50.00 a a retire 10% do sal´rio para o governo (imposto). Definir c´ c˜ algoritmo que leia 4 quantidades representando os pesos dispon´ ıveis dos quatro ingredientes.1.300. ca u Eles ser˜o considerados IGUAIS quando sua diferen¸a for menor a 10% do maior n´mero. valor a a receber e valor do imposto. e a A s´rie termina quando for lido um RG = 0. a c u Ser˜o considerados diferentes quando sua diferen¸a for maior ou igual a 10% do valor do a c maior. Exemplos: ca 10. sabendo que as horas u e extras s˜o remuneradas a base de 1. Dados terminam quando for lido um n´mero de horas igual a u zero.5 x a hora normal. e qualquer d´ u a ıgito num´rico e ´ menor do que qualquer letra. Escreva o algoritmo o a que leia esse par de n´meros e escreva x.5 20Kg dades que ultrapassam a propor¸˜o. ´ muito importante pois permite estabelecer o atributo de ordem ue e no universo dos caracteres. u Exerc´ ıcio 7 Defina e escreva um algoritmo que leia um n´mero e determine se ele ´ u e divis´ por 3.01 S. o desconto ´ de 10% do sal´rio bruto. BROA. Lido Impresso Jo˜o. Se for o algoritmo deve imprimir a mensagem ”E DIVIS´ ıvel IVEL”. desprezando-se as quantiSe for lido s´ ser˜o usadas logo total o a 10.R. de um retˆngulo.5 Kg respectivamente.50. e a Ao final.R. pois esta n˜o ´ a unica seq¨ˆncia poss´ a e ´ ue ıvel. Pedro Kantek 59 88-08.10 10. n´mero de horas (inteiro) e valor da a u hora trabalhada (real). escreva um algoritmo capaz de calcular o desconto para o INSS. Cada m´quina e cada implementa¸ao pode ter a sua. valor da hora. escreva nome. vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 10 Pretende-se informatizar um estacionamento. por exemplo.5 40Kg 10. e Um especial cuidado deve ser tomado. produzida industrialmente leva ma¸˜. o algoritmo deve c˜ imprimir a quantidade de dinheiro devida. horas. que o caractere ”a”´ menor do que o caractere ”b”. O algoritmo termina quando for lido um n´mero negativo.0 fim. e Para um sal´rio bruto at´ 10 S.1 8Kg Exerc´ ıcio 4 Imagine que vocˆ tem uma entrada com um par de n´meros reais. hora-saida: inteiro. podemos afirmar. Se o n´mero de horas ´ maior que 40.R. calcule e escreva a quantidade de salada que poder ser construida. o desconto e o sal´rio l´ a a ıquido.20.5 Kg : 0. Por exemplo. sujeito `s seguintes a regras: Inicialmente o programa deve ler o valor do sal´rio de referˆncia a e Depois deve ler uma s´rie de dados compostos por RG e sal´rio bruto. 88-08.10.5. Definir algoritmo que leia uma serie de informa¸oes formadas c˜ por: Tipo do carro: caracter. Trocando em mi´ dos.10.100 Jo˜o. y e a ´rea do retˆngulo de lados x e y. Para cada conjunto de informa¸oes lidas.20. a Exerc´ ıcio 5 Defina e escreva uma fun¸˜o que receba trˆs n´meros reais. abaca caxi e a¸ucar nas propor¸oes de 1 Kg : 2 Kg : 0. ESCREVENDO ALGORITMOS dec 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 carac sp ! ” # $ % & ’ ( ) * + . hora-entrada: inteiro.550 a a Maria. CAFE. que c a c˜ ser´ escrita de acordo com a seguinte regra: A primeira parte do n´ mero ser´ escrita a u a como um n´ mero convencional. ou seja A dever´ ter sido definida como inteira ou real. mas n˜o como caracter.. ao inv´s de um unico.. c˜ a Exemplos de uso de operadores em express˜es num´ricas o e A ← 1 × 1.78 ÷ 3 B ← trunc(3. Os outros improvisam. − e × o resultado ser´ real. ou simplesmente = do C e Java.3 Comando de atribui¸˜o ca Comando de atribui¸ao ´ aquele que permite colocar/alterar valores de conte´ do em c˜ e u vari´veis.1000 etc Uma observa¸ao final e bem importante ´ que dentro de um mesmo algoritmo uma c˜ e vari´vel pode ter diversos (isto ´. a express˜o dever´ ser uma express˜o c˜ a a a a inteira.. Pedro Kantek 62 vers˜o de 10 de fevereiro de 2008 a . mais de um) comandos de assinalamento. l´gicas e de caracteres. a Na atribui¸ao de vari´veis cadeia.4.89 XAD ← 1 ÷ 3 N ← -1. a a ıda a vers˜o de 10 de fevereiro de 2008 a 61 88-08. podemos estar querendo dizer “valor” (que ´ a forma a e mais simples de express˜o).0009 ALF ← 1000900 X←1 NOME ← ’ALFREDO’ COD ← ’ABCDEabcde’ ALFA ← ’abcde12345’ SIM ← VERDADEIRO ˜ NAO ← FALSO VARLOG ← V VARLOG2 ← F vari´veis caracter a vari´veis inteiras a 3. condicionais. Nestes casos. a a Exemplos de atribui¸oes: c˜ X←1 XAC ← 1 + 1 + 1 DEV ← 2000 × 23 N ← -1 B ← 1. 3: A ← 10 4: .. nas vari´veis l´gicas. e no segundo surge a confus˜o entre A=1 e ´ a (significando A recebe 1) e A=1 (significando a pergunta: A ´ igual a 1 ?). s˜o 2 s´ a ımbolos. e ao contr´rio ´ bem freq¨ ente. pois e c˜ e ´ c˜ a podemos colocar um valor inteiro em uma vari´vel real. No primeiro caso. n˜o houver nenhuma altera¸ao na vari´vel A. Se nos comandos representados com .. 2 Quando dizemos express˜o. a express˜o ´ apenas um valor) a e B ← 1 + 2 (neste caso. o a a c˜ e que demandam algum tipo de computa¸ao determinada na express˜o e produzem um c˜ a resultado. que a express˜o que se encontra do lado direito da flecha de a atribui¸ao (←) deve ser compat´ com o tipo de vari´vel que foi definida. a adi¸ao) c˜ ´ E importante notar. opera¸oes e eventualmente parˆnteses. valores idem e o e a a e as opera¸oes aritm´ticas. a u Um segundo n´ mero inteiro.4)) D ← 1 + 10 + 100 . N˜o h´ uma sa´ f´cil. As express˜es se classificam em geral devido ao tipo de opera¸oes que existem o c˜ dentro da express˜o. u a 88-08. dando como resultado um n´ mero (que obviamente pode ser c˜ e u real ou inteiro). no a e c˜ caso. a Finalmente. a e o vari´veis cadeia a 3.1416) C ← abs (-6 + trunc (3.CAP´ ITULO 3. cadeia a a ou l´gica. Para tanto usaremos o s´ a ımbolo ←. ou quando n˜o houver risco de confus˜o. a c˜ a o resultado impresso ao final ser´ 10 (e n˜o 1). Ele n˜o dever´ ter um tamanho maior do que aquele estabelecido para a vari´vel.. vem a letra mai´ scula ”E”. a vari´vel ter´ o valor que foi nela a e u a a colocado por ultimo. ESCREVENDO ALGORITMOS CAP´ ITULO 3. e c˜ a Exemplos: A ← 1 (aqui. Entretanto. Poucos ambientes (como o APL) disp˜e do c˜ e o s´ ımbolo nativo ←. podendo ser aritm´ticas. no comando A ← 1+1. a express˜o ´ um conjunto de 2 valores e uma opera¸ao. a express˜o 1+1 tem que ser compat´ com a vari´vel a ıvel a A.. a a 3. positivo ou negativo indicando a potˆncia de 10 a qual a u e ` primeira parte do n´ mero est´ elevada. Depois. Pedro Kantek vari´veis l´gicas a o 2 A quest˜o do s´ a ımbolo da atribui¸ao ´ bem complicada. com os s´ ımbolos := do Pascal. o valor ser´ truncado. ou simplesmente um conjunto de valores e operadores (que a ´ a defini¸ao de express˜o). o Na atribui¸ao de vari´veis do tipo inteira. valores. a express˜o dever´ e a a a a ser num´rica sem nenhuma outra restri¸ao. n˜o ´ boa norma de programa¸ao a a e c˜ usar esta facilidade (ou caracter´ ıstica) pois ela dificulta a compreens˜o do algoritmo. Esta ´ a unica exce¸ao ` regra acima. em ´ 1: A ← 1 2: . Em outras c˜ ıvel a palavras. a a a Se isto acontecer. indicando ”elevado a”.. Da´ o C e o Java fazerem a e ı pergunta com ==. sem parte fracion´ria. pode-se lan¸ar m˜o da nota¸ao exponencial. Para vari´veis do tipo real. ESCREVENDO ALGORITMOS NOME ← ’A’ XUNXO ← ’X’ NUM ← ’1’ AST ← ’*’ Duas perguntas a responder: A ← ’1’ A ´ vari´vel num´rica ou caracter ? e a e B ← ’V’ B ´ vari´vel l´gica ou cadeia ? e a o Como regra geral. sempre que houver mistura entre elementos inteiros e reais. Nota¸˜o Exponencial Para os casos em que seja necess´rio representar n´ meros ca a u muito grandes ou muito pequenos. nas opera¸oes +. o valor dever´ estar envolvido entre aspas simples c˜ a a (’). Isto n˜o ´ a e a e erro.1 Aritm´ticas e As express˜es aritm´ticas s˜o aquelas que envolvem vari´veis num´ricas. Por exemplo. 5: escreva (A) 6: . isto ´. podendo ter o ponto decimal (constante ponto flutuante) u ou n˜o (constante inteira). podemos usar as abreviaturas F ou V.4 Express˜es o vari´veis reais a Express˜es s˜o conjuntos de vari´veis. deveremos usar as palavras VERDADEIRO e a o FALSO. ESCREVENDO ALGORITMOS Fun¸ao c˜ Adi¸ao c˜ Formato Objetivo A+B Adicionar A e B Tipos operandos inteiro ou real Subtra¸ao c˜ A-B Subtrair B de A O produto de A eB O quociente de A por B A elevado a B ` Multiplica¸ao × B c˜ A Divis˜o a real Potˆncia e Absoluto A÷B A B O valor absoluto de A Seno Sin(A) seno de A radianos Cosseno cos(A) cosseno de A radianos Inteiro trunc(A) A parte inteira de A Fracion´rio frac(A) A parte fraa cion´ria a de A Exponencial exp(A) E (2.CAP´ ITULO 3. Pedro Kantek 64 vers˜o de 10 de fevereiro de 2008 a .) ´ e 0 trunc(2..718 log(1) ´ 0 e ´ e round(3. vers˜o de 10 de fevereiro de 2008 a 63 88-08..6) ´ e 4 sqrt(4) ´ 2 e inteiro real.22 × 1000000 ou -4220000 Opera¸oes usuais c˜ CAP´ ITULO 3... Se pelo menos um dos dois ´ real.063 -4. a A+B ´ ine teiro.5)´ 2 e frac(2. e o resultado ´ e real idem ao anterior idem ao anterior real real O mesmo tipo de A real real inteiro real Exemplo 3 + 7 ´ 10 e 5-2´3 e 3×12 ´ 36 e 10÷2 ´ 5 e 25 ´ 32 e abs(4) ´ 4 e sin(3.01 ou 0.22E6 −4.) elevado a A Log Nat.3 × 0.3E-2 6.14.5 e inteiro real inteiro real real ou ou real real inteiro exp(1) 2.5) ´ . mas 0 inteiro real inteira real ou A( ou ou real O mesmo de A O mesmo de A sqr(4) ´ 16 e Se A ´ 10.3 × 10−2 ou 6.log(A) Logaritmo natuural ral de A Arredondamento round(A)Arredonda A para o inteiro mais pr´ximo o Raiz sqrt(A) Raiz quadrada quadrada de A Quadrado Somar 1 sqr(A) A++ O quadrado de A A vari´vel A ´ a e incrementada de 1 unidade abs(A) inteiro real inteiro real inteiro real inteiro real inteiro real inteiro real inteiro real real real ou ou ou ou ou ou ou Tipo do resultado Se A e B s˜o inteiros.718.14.) ´ e 1 cos(3. ESCREVENDO ALGORITMOS Por exemplo: o n´ mero deve ser entendido como u 3E4 3 × 104 ou 3 × 10000 ou 30000 6... e A++ coloca 11 em A.22 × 106 ou −4. Pedro Kantek 88-08. c˜ a Exemplo: 20 mod 6 2 2 2 = = = = 20 . as mesmas ser˜o realizadas em qualc˜ a quer dire¸ao convencionada.5 s˜o o a e u a e a trazidos para o inteiro menor e n´ meros cuja parte fracion´ria ´ igual ou maior a 0.8) ´ 1 e trunc(-1. 88-08. e(2 + 3) × 4 ´ 20. o Se houverem duas opera¸oes de mesma prioridade. Prioridade: Adi¸ao e subtra¸ao c˜ c˜ 7. Esta regra segue e v´lida se o primeiro n´ mero ´ 0. Pedro Kantek 66 vers˜o de 10 de fevereiro de 2008 a . ESCREVENDO ALGORITMOS A div B A mod B inteiros inteiro 10 mod 7 ´ 3 e Duas considera¸oes finais: c˜ Podemos considerar a existˆncia no portuguˆs estruturado de uma constante chamada e e MAXINT. ≥. 4 div 3 ´ 1 e trunc(1. e Acompanhe nos exemplos: vers˜o de 10 de fevereiro de 2008 a c. A ser´ menor ou no m´ximo igual a MAXINT. a resposta ´ 0. =) c˜ 8.5 u a e s˜o arredondados para mais. u As fun¸oes round e trunc operam sobre n´ meros positivos e negativos. a quem chamar-se-´ div e mod e que c˜ a a s˜o usadas em matem´tica inteira.d. A regra b´sica ´ que n´ meros cuja parte fracion´ria ´ menor do que 0. e e e Embora na matem´tica tradicional j´ se tenha uma lista de prioridades que deve ser a a obedecida. algumas linguagens de computador podem ıcil e implementar tabelas ligeiramente diferentes desta. e u a J´ mod devolve o resto inteiro da divis˜o de dois n´ meros. ∧. quebrar c˜ a um comando complexo em v´rios simples. Div devolve o resultado inteiro de uma divis˜o. resta como sugest˜o ao aluno: a Definir linhas pequenas (clareza e auto-documenta¸ao). Prioridade: Menos un´rio (oposto) a 4.q. a Usar e abusar de parˆnteses. Prioridade: Potencia¸ao c˜ 5. e neste caso. da esquerda para a direita. c˜ ´ E dif´ decorar esta tabela. ≤. desde que A seja inteira. =.(20 div 6) * 6 20 . pois eles refor¸am a ordem e c de execu¸ao e desobrigam de conhecer e consultar a tabela de prioridades. Primeira Prioridade: Parˆnteses e 2. Prioridade: Fun¸oes c˜ 3. o resultado ´ encontrado como se ´ c˜ e o operando fosse positivo. nunca a a maior.CAP´ ITULO 3. Se for necess´rio. 2 mod 3 ´ 2 e 0 mod 5 ´ zero. Prioridade: Compara¸oes (>. desde que estes n˜o sejam amb´ a a ıguos e sejam facilmente entend´ ıveis. por exemplo. o a a u segundo termo tem que ser diferente de zero. trazendo o resultado a a sempre para o inteiro menor ou igual ao n´ mero dado. Em outras palavras. Pedro Kantek 65 88-08. A div B.8) ´ 2 e round(-1. Ambas atuam sobre n´ meros inteiros e d˜o como a a u a resultado tamb´m n´ meros inteiros. Neste caso.3 * 6 20 . podemos encontrar duas ou mais c˜ opera¸oes num´ricas uma ao lado da outra. a a A mesma considera¸ao pode ser feita na fun¸ao mod. e A−− coloca 9 em A. e a seguir o sinal de menos ´ colocado sobre o resultado. 2 + (3 × 4) ´ 14. <. al´m do que. aqui no portuguˆs estruturado tamb´m h´ uma lista. Prioridade: Operadores l´gicos. Um especial cuidado deve ser tomado quando o primeiro operando de div for menor que o segundo. Div e Mod Existem duas importantes fun¸oes matem´ticas. c˜ Round e Trunc Arredondar um n´ mero ´ converter um real em inteiro aproximando-o do inteiro mais u e pr´ximo. por exemplo em 2 div 3. contendo sempre o MAIOR valor poss´ de ser representado em uma ıvel vari´vel inteira. Quando for c˜ u este ultimo caso. ∼. a e Podem ser introduzidos pela pessoa que est´ escrevendo o algoritmo quaisquer a novos operadores matem´ticos. a resposta segue sendo zero a u e e n˜o h´ erro nesta chamada.18 2 Prioridades Na execu¸ao de um comando complexo. ESCREVENDO ALGORITMOS Subtrair 1 Divis˜o a inteira Resto A−− A vari´vel A ´ a e decrementada de 1 unidade o quociente inteiro da divis˜o a de A por B O resto da divis˜o inteira de a A por B inteira real inteiros ou O mesmo de A inteiro Se A ´ 10. a fim de poderem ser seguidos mais tarde. a J´ o truncamento simplesmente despreza a parte fracion´rio. Para todos os efeitos pr´ticos esse ´ o nosso infinito (∞). c˜ c˜ e e sem erro nos dois casos. Prioridade: Multiplica¸ao e divis˜o c˜ a 6. ainda que redundantes. a defini¸ao continua prevalecendo. ∨.8) ´ -1 e round(1. em 0 div 5. que se resume a: e e a 1. Em ambos operadores. e a Exemplo: 10 div 3 ´ 3 e 5 div 3 ´ 1 e 890 div 100 ´ 8 e 1000 div 1 ´ 1000 e A mod B ´ o resto inteiro da divis˜o de A por B. pode surgir a pergunta: Qual c˜ e realizar antes ? Exemplo: 2 + 3 × 4 ´ igual a 14 ou 20 ? Afinal. ´ o resultado inteiro da divis˜o de A por B. quando comparaa rmos A com MAXINT. Por exemplo. Em resumo.8) ´ -2 e CAP´ ITULO 3. Assim. e a Exemplo 10 mod 3 ´ 1 e 5 mod 3 ´ 2 e 890 mod 100 ´ 90 e 1000 mod 1 ´ 0 e As duas fun¸oes se completam na express˜o I mod J = I − (I div J) × J. Da mesma maneira se o operando for o e a caracter. Exemplos: e e pred(’b’) ´ ”a” e pred(FALSO) ´ VERDADEIRO e pred(23) ´ 22. e B. Maior ou A ≥ B igual ao anterior igual ao an. a resposta ` fun¸ao ord se encontra na tabela vista anteria c˜ ormente. e assim por diante e suc(’1’) ´ ’2’. ”AB”= ”AB”´ e . VERDADEIRO. -2. Se o operando for inteiro.F. e conte´ do de A e inteiros. e ord(’7’) ´ 55.4. Embora de tipos diferentes (inteiro e real). e igual terior e . e teiros ou e . se A = = 66 ´ . o e a Se o operando for l´gico. se A = 66.V. pred. podemos fazer I ← suc(I).. e No caso dos caracteres.. E comum c˜ e em qualquer linguagem de programa¸ao. CHR(97) ´ ”a”. . dir´ se a e o a afirma¸ao ´ ou n˜o ´ verdade. diferente (=).. suc(’a’) ´ ”b” e suc(FALSO) ´ VERDADEIRO e suc(23) ´ 24. e de B reals ou al. e B. e e Uma aplica¸ao interessante para esta fun¸ao ´ a substitui¸ao do incremento de varc˜ c˜ e c˜ i´veis. a compara¸ao ’A’ = 3. caracter e l´gico). vers˜o de 10 de fevereiro de 2008 a CAP´ ITULO 3. por´m s´ funciona para caracc˜ e c˜ c˜ e o teres. ESCREVENDO ALGORITMOS Pred Esta fun¸ao devolve o predecessor. e ord(’W’) ´ 87..CAP´ ITULO 3.B. a resposta tamb´m ser´. e a seguir responde-se com o caractere ASCII correspondente ` mesma linha.V.. e assim por diante. Por exemplo: ORD(-3) ´ -3.2 Relacionais As express˜es relacionais s˜o as que envolvem os operadores =.F. c˜ e a e S˜o eles: igual (=). misturar valores de tipos distina e tos. se A = B 3 = 4 ´ .V. embora logicamente pudesse estar correta (ou seja a c˜ a letra A n˜o ´ igual ao n´ mero 3). e tamb´m s´ se aplica a ordinais pr´-definidos. se A = B 3 = 4 ´ . Esta fun¸ao s´ se aplica a operandos ordinais pr´c˜ o e definidos (inteiro. devolve o ordinal dentro do c´digo ASCII. se A ≤ B 2 ≤ 5 ´ . a matem´tica a permite fazer essa compara¸ao.F.V. se A < B 5 < 2 ´ . ord e chr Para os tipos ordinais pr´-definidos (caracter. e Suc Trata-se da fun¸ao sucessora. a ord de um operando caracter.0 = 66 ´ .F. desde que compat´ a a ıveis.. e ord(’z’) ´ 122. e fanum´ricos e Diferente A = B igual ao anterior igual ao an. >.0 e terior e .. perguntando. caracteres aqui a seq¨ˆncia ´ dada pelo c´digo nativo do ambiente. no caso o ASCII. mas a resposta sempre ser´ do tipo l´gico.F. se A < 2 ≥ 2 ´ . Estes operadores sempre relacionam duas vari´veis ou constantes de tipos coma pat´ ıveis. a resposta ser´ “falso”.V. ´ o u e o pr´prio n´ mero inteiro. 1. a o Fun¸ao c˜ Formato Objetivo Operando Resultado Exemplo Igual A = B Comparar o ambos . em vez de fazer: I ← I + 1. se A ≥ 2 < 5 ´ . procura-se na tabela em u qual linha ele ocorre sob a coluna decimal. menor (<) e menor a ou igual (≤). etc. a c˜ A exce¸ao a regra acima ´ quando se comparam dois n´ meros. . e 3. Maior A > B igual ao anterior ambos in. Consultamos o operando de ord na coluna referente a ASCII. Estes operadores o a 88-08. Pedro Kantek 67 88-08..3 L´gicas o As express˜es l´gicas envolvem valores l´gicos (verdadeiro e falso) conectados por opo o o ˜ eradores l´gicos.F.V. e a resposta de ord ´ o n´ mero decimal que estiver na mesma linha. a resposta tamb´m ser´. e B. se o primeiro ´ maior do que o segundo. e B.F. =. ue e Ord A Fun¸ao ord devolve o ordinal do operando dentro do seu universo original. “OU” (∨) e “NAO” (¬ ou ∼). se A ≤ 2 > 5 ´ .F. que nos devolve o pr´ximo valor ao do operando c˜ o considerado o seu universo original.F.V. c˜ Assim. Ent˜o. na forma l´gica.V. que s˜o 3: “E” (∧). a seq¨ˆncia de ordena¸ao ´ aquela dos n´ meros inteiros da matem´tica: ue c˜ e u a . Para simular como o portugol faz isto.V. 0. A resposta.V. 3.. d´ erro em qualquer linguagem de programa¸ao e a e u a c˜ portanto est´ proibida de ser usada na constru¸ao de algoritmos. Este o a ´ operadores visam a estabelecer se uma dada proposi¸ao ´ falsa ou verdadeira.V. e reais B. comparar-se 2 valores. se A > 2 ≤ 2 ´ .4. ∞.F. A ord o de um l´gico. ”AB”= ”ab”´ . a Exemplo. e ord(FALSO) ´ 0. < e ≤.V. e terior e . Pedro Kantek 68 vers˜o de 10 de fevereiro de 2008 a . j´ que ambos s˜o n´ meros. existem algumas fun¸oes e o c˜ que podem ser usadas. na verdade ela se aplica o u verdadeiramente aos caracteres. Embora atue sobre os 3 tipos acima. maior (>). Dado um n´ mero inteiro entre 0 e 255. e ord(’a’) ´ 97. sendo um deles do tipo c˜ ` e u inteiro e outro do tipo real. e igual terior e . Por exemplo ao perguntar 3 > 5?. c˜ e o e Tamb´m (tal como no suc) o tipo da resposta ´ o mesmo tipo do operando.. ue e o booleanos a seq¨ˆncia ´ FALSO.F. c˜ a a u Tem-se ent˜o que os operandos poder˜o ser de qualquer tipo..V.. 2. e a ord de um n´ mero inteiro. por exc˜ emplo.. e CUIDADO ====> succ(’9’) ´ ’:’ e succ(9) ´ 10. 66.. Menor A < B igual ao anterior igual ao an.F. maior ou igual (≥). dado um n´ mero. se A > B 5 > 2 ´ . inteiro e l´gico). u e . para o c´digo ASCII e 0 e 64536 para u o o c´digo UNICODE. a fun¸ao chr deste n´ mero devolve o caractere correspondente a o c˜ u ele. ESCREVENDO ALGORITMOS suc. considera o universo de 2 valores (V e F). Menor ou A ≤ B igual ao anterior igual ao an. +∞. ≥. se A ≥ B 5 ≥ 2 ´ .V.. e u Chr A fun¸ao chr ´ a fun¸ao inversa da fun¸ao ord. -1. a Note que n˜o ´ permitido (ou seja gera-se um erro). Para cada tipo de operandos os universos s˜o: a inteiros neste caso. a Por exemplo. 33333) + cos (0.F.. a a Vendo na tabela a seguir: ∧ verdadeiro falso verdadeiro verdadeiro falso falso falso falso express˜o l´gica a o (A ∨ B) ∧ C ∼D (E ∧ F) ∨ G CAP´ ITULO 3. se A e B s˜o . ∧ .V. Acompanhe a seguir as tabelas verdade: Em termos verbais a express˜o A ∧ B ser´ verdadeira quando A e B forem verdadeiros a a e ser´ falsa sen˜o.F. ´ . Ent˜o ∼ verdadeiro ´ falso e ∼ falso ´ verdadeiro.. a Exemplo: 1 + 1 + 2.F.F. e como elas seriam definidas ? a Exerc´ ıcio 13 Para cada uma das f´rmulas a seguir. ∨ . e .V. . e . ´ .V. Pedro Kantek 88-08.F. ´ . Se vocˆ tivesse o e que resolver o problema de Gauss.F. intuindo toda a teoria de progress˜es. a e e ∼ ou ¬ verdadeiro falso falso verdadeiro Operando ambos l´gio cos Resultado . ESCREVENDO ALGORITMOS ser´ verdadeira quando. Pedro Kantek 70 vers˜o de 10 de fevereiro de 2008 a ..5) . ∧ . devolve o valor l´gico oposto ao de a o A.V. e ∼ . e . ∨ .CAP´ ITULO 3.1415÷4) 2 ÷ (2 × 3) OUl´gico o ˜ NAOl´gico o A∨B Realizar a opera¸ao OU-l´gico c˜ o ambos cos l´gio Exerc´ ıcio 15 Nos exerc´ a seguir. Como uma ajuda. 1 × 2 × 3 × 4 × 5 × -6 ∼A ou ¬A Nega logicamente A l´gico o As palavras“verdadeiro”e “falso” bem como os s´ ımbolos ”V”e ”F” podem ser considerados constantes l´gicas tamb´m chamadas booleanas e podem ser empregados livremente o e na constru¸ao dos algoritmos.V. se A ou B s˜o . ∨ .V. ESCREVENDO ALGORITMOS destinam-se as opera¸oes l´gicas entre operandos.V. e .F.1415÷4) ÷ cos(3. a A e C forem verdadeira ou B e C forem verdadeiras D for falsa E e F forem verdadeiras ou ent˜o se G for verdadeiro a Exerc´ ıcio 11 Suponha que vocˆ vai escrever um algoritmo em portugol para resolver e as raizes de ax2 +bx+c = 0. 1 + 3 ÷ 1 3.5 + 2) 4. e . A grande importˆncia dos valores l´gicos em portugol.F.F.V. Veja: ∨ verdadeiro falso verdadeiro verdadeiro verdadeiro falso verdadeiro falso ˜ Finalmente. + 4998 + c o 4999 + 5000.V. podemos associar o Falso ao zero.. de uma forma brilhante.F. formam um conjunto ordenado.F. sen (0. ∧ .F. c´lculo da quantidade de azulejos a serem colocados em um banheiro. SOM:inteiro. ´ . dados 2 ˆngulos.F.33333) 6. 1 ÷ 2 2. ∨ .2 sqr(3) 2 × trunc(1. ∧ .F. Pre¸o a pagar pelo estacionamento de um ve´ c ıculo. formando uma nova e maior express˜o relacional. a express˜o ∼ A (lida como NAO A). ´ . Volume de uma lata de leite 5. Quais vari´veis seriam necess´rias e como elas seriam definidas a a ? Exerc´ ıcio 12 Quando crian¸a Gauss resolveu a somat´ria 1 + 2 + 3 + .. e 3. e .999) abs(-(3 .V. sen (1) 5. se A ´ .F. trunc (3. ´ . c´lculo do terceiro ˆngulo de um triˆngulo. Com isto todas as rela¸oes num´ricas entre c˜ e 0 e 1 continuam verdadeiras entre FALSO e VERDADEIRO. c˜ o A importˆncia das express˜es l´gicas ´ que elas permitem conectar duas ou mais a o o e express˜es relacionais. a 4.F. a em caso contr´rio a .V. ´ . o a no qual vocˆ dever´ dizer quais vari´veis ser˜o necess´rias e como ser˜o definidas: e a a a a a 1. per´ ımetro de um retˆngulo a 2. e ∼ .F.V. se A ´ . a em caso contr´rio a . ´ .V. e .V.V. inteiro. SOM ← 4 a 1. a a a a A express˜o A ∨ B ser´ verdadeira quando A for verdadeiro ou B for verdadeiro ou a a ainda quando ambos forem verdadeiros.V.5) sen(3. Eles atuam sobre os valores V (verc˜ o dade) e F (falso). quais vari´veis definiria. Exerc´ ıcio 14 Informe qual o resultado esperado para a vari´vel VAR1 a Fun¸ao c˜ E-l´gico o Formato Objetivo A ∧ B Realizar a opera¸ao E-l´gico c˜ o VAR1 VAR1 VAR1 VAR1 VAR1 VAR1 VAR1 ← ← ← ← ← ← ← (1 + (2 × (3 + 1) ÷ 2)) .4)) trunc(1. ´ .V. Veja-se nos o a exemplos: vers˜o de 10 de fevereiro de 2008 a 69 88-08. e o Verdadeiro ao 1..frac(1. A express˜o s´ ser´ falsa quando A e B forem a o a falsos. decorre do fato de que quala o quer compara¸ao usando os operadores relacionais sempre devolve um l´gico. As duas constantes. ´ . e . supor que ser´ criado um algoritmo. e c˜ podemos dizer que o F (falso) precede o V (verdadeiro).F.V.V. ter´ como resposta: 4. . e Exemplo . o aluno deve: ıcios Achar o resultado da express˜o a Descobrir-lhe o tipo Definir uma vari´vel para conter este resultado.V. (round(AA+BB)) mod CC 7. Pedro Kantek 88-08. trunc (Y + AA) 16. 5 × X × round(BB) 10.5 ≥ 2.1) VAR3 ← (trunc(1.45) . abs (AA) . considere o seguinte conjunto de vari´veis: e ıcios a X ← 5 (inteiro) Y ← 1 (inteiro) AA ← 0. CC + abs(trunc(BB)) 3. frac(AA) .9 (real) CC ← 3 (real) Para cada express˜o pedida.CAP´ ITULO 3.999) .1) > 0 1=2 1+2=2 0. frac (int (BB)) 14. ESCREVENDO ALGORITMOS 7. X + Y + CC 5.Y) 8. X + Y 19. 1 + sqr(X) . Pedro Kantek .20 .0. ESCREVENDO ALGORITMOS Exerc´ ıcio 17 Quanto ´ 400 mod 51 e 30 mod 7 (5 mod 4) + (22 div 10) + (3 mod 2) 4376 mod 10 4376 mod 100 4376 mod 1000 4376 mod 10000 10 mod 4 10 div 4 cos (9 div 11) trunc (abs (round (6 div 6))) (1 + 5) mod 3 1 + (5 mod 3) (2 × 4) mod 2 2 × (4 mod 2) 10000 mod 1 5 div 0 Exerc´ ıcio 16 Na s´rie de exerc´ a seguir. a VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 71 88-08. abs (AA . round (AA) 21. 5 = 4 + 1 CAP´ ITULO 3. AA . 1 + 3 < 4 9. cos (int(AA)) 20.abs(BB) 11. X + Y + AA + CC 17.. 1 + sqr(X ..14/2)) = 1) ∧ VERDADEIRO FALSO ∨ ((1 + 2) > (6 div 3)) 72 vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 20 Informe qual o valor para a vari´vel VAR4.9000) 3>1+1 1+3×4 2 × sqr(3 × 2 + 1) 1×2×3×4×0+1 ((2 × 2) + 2) × 3 33 > (32 + trunc(2. calcule o resultado e determine o tipo (inteiro ou real) do a resultado.BB) 12.AA 4.X) ÷ CC 2.”) a FALSO ∨ FALSO VERDADEIRO ∧ (∼ VERDADEIRO) (∼ FALSO) ∨ (∼ VERDADEIRO) (FALSO OU VERDADEIRO) ∧ (∼ VERDADEIRO) FALSO ∧ FALSO FALSO ∨ FALSO VERDADEIRO ∧ (∼ VERDADEIRO) VERDADEIRO ∧ VERDADEIRO ((frac(0. trunc (AA .trunc(2. (AA .5 × 4) > 6) ∧ (1 = 2) Exerc´ ıcio 19 Informe qual o valor da vari´vel VAR2 a VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← VERDADEIRO ∼ FALSO ∼ ∼ VERDADEIRO (”.5 .5) ∧ (1 = 3 × 0) (trunc (sen (3.5 (real) BB ← 4..abs (BB) 13.frac(0. X + CC 18.Eu n˜o disse que nunca viajaria. 1. 2 > 3 8..Y 9.5)) 0. (X + Y) ÷ AA 15.5 2×3×4+2×3×4 (4 × (2 ÷ 2 × 2) ≥ 3. round (BB + AA) 22.BB) vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 18 Informe qual o valor final para VAR3 VAR3 ← (3 ≥ 2) ∨ (1 = 3) VAR3 ← (1 + 1) = (3 . sqrt(trunc(BB-AA)) 6. 5) × 2) × (1 ÷ (2 + 1)) CAP´ ITULO 3.5)) 7÷2+2>0 5+5-5 (10 + frac(0) + trunc(0) .5) + frac(3.CAP´ ITULO 3. Pedro Kantek 74 vers˜o de 10 de fevereiro de 2008 a . Pedro Kantek 88-08. ESCREVENDO ALGORITMOS vers˜o de 10 de fevereiro de 2008 a 73 88-08. ESCREVENDO ALGORITMOS VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 ← ← ← ← ← ← ← (5 div 2) > (trunc (3.10) > 5 5 > 6 div 3 + 2 mod 1 + 0 mod 6 2×8÷4÷2 (1 + trunc (13. porque um carro ´ diferente de um programa de coma e e putador. Diz-se nestes casos que o fluxo cai por decanta¸ao. Neste ultimo caso.RZ)”. do que fazer s´ ´ e o “escreva(AR)”. a a na vis˜o top down a primeira coisa a fazer seria juntar a carroceria e as rodas. O verbo ou comando “leia” significar´ uma entrada de a a a dados externos para dentro do algoritmo. ´ melhor fazer “escreva (AR. Nos pr´ximos anos do curso. VALOR2: inteiro leia (VALOR1. A maioria dos algoritmos necessitar´ receber dados externos. pressup˜e estudar o problema como um todo. 4. bancos. A maneira top down.. a a e Exemplos de leitura: VALOR1. e sempre esperando terminar este para come¸ar o ´ c pr´ximo. testado e em caso de sucesso levado aonde o carro est´ a sendo constru´ e a´ posto em conex˜o com os outros sistemas do carro. em um disco... e depois ir o realizando a montagem do esquema completo. Outro exemplo.. A forma desta entrada. os a comandos dentro de um algoritmo v˜o sendo executado seq¨ encialmente. c Aqui se fala de entidades abstratas (dados e programas).) a a c˜ seria montado isoladamente. come¸ando a u c no primeiro e terminando no ultimo. VALOR1) e Na impress˜o ´ comum se colocar constantes alfanum´ricas. em um plotter. mas depois ´ poss´ visualizar a constru¸ao top down e a constru¸ao e ıvel c˜ c˜ bottom up.. E ıvel a claro que os valores a imprimir ter˜o que ter sido inicializados e/ou calculados antes da a impress˜o. VALOR2) De impress˜o a VALOR1: inteiro VALOR1 ← . na o c˜ seq¨ˆncia ue 1: A ← 1 2: B ← 2 + A 75 4. o dado ficaria ´ perdido (no v´ ıdeo.]) Ao lado do verbo leia. Agora s´ interessa o fato de que o dado entra para o algoritmo e pronto. E atrav´s deles que o algoritmo se e comunica com o mundo externo. que pode ser traduzido como ”de cima para baixo”. e entre parˆnteses. Por exemplo.. ao calcular uma raiz na vari´vel RZ. os comandos que se ı usar˜o s˜o dois: leia e escreva. e em algum momento do a seu processamento precisar´ comunicar respostas.. . a O comando de impress˜o ´: a e escreva ([mensagem] nome1) ´ Este comando externa um resultado dispon´ a quem est´ operando o algoritmo. que tamb´m ıda a e n˜o significa obrigatoriamente impress˜o em papel. os diversos sistemas e componentes iriam sendo instalados pe¸a a pe¸a no carro e a cada etapa o carro continuaria a andar c c em suas pr´prias rodas. o o Da mesma forma.. A montagem terminaria quando o carro andasse sozinho. para imprimir uma area. Cap´ ıtulo 4 4. mensagens ou textos a e e explicativos antes ou depois dos dados para clarear e facilitar a leitura humana posterior. Antes de tudo h´ que se ter o plano e a completo da obra. do que simplesmente “escreva (RZ)”. [nome2. deve-se escrever as vari´veis que dever˜o e a a ter seus valores fornecidos neste comando.3 Entrada/Sa´ ıda Comandos 4. o J´ na vis˜o bottom up cada um dos sistemas (motor. Depois. de a maneira que o carro conseguisse se mover. Depois dele a ´ que ser´ executado o comando 2. c˜ a 88-08. escreva (“O valor obtido ´ ”.1 Comando de Entrada Permite a introdu¸ao de valores para vari´veis previamente definidas.1 Vis˜o Top down e Bottom up a Estes termos. Estes dados podem estar saindo no a a v´ ıdeo. isto ´ se os dados v˜o e a entrar pelo teclado. COMANDOS Pode-se afirmar com certeza que primeiro ser´ executado o comando 1. este talvez algo melhor ´ a proposta de escrever um livro. instrumenta¸ao. e a´ o valor da vari´vel A j´ estar´ estabelecido e a ı a a a corretamente. por exemplo. e Fazendo uma analogia (meio mambembe. consagrados no jarg˜o da inform´tica. O processo ıdo ı a tamb´m termina quando o carro sair andando. haver´ muitas horas de aula sobre a o a estas quest˜es. parte da constru¸ao individual de todos os elementos. no papel. usar-se-´ o comando escreva. . Os identificadores citados j´ dever˜o ter sido a a definidos anteriormente no programa. o O formato destes comandos ´: e leia (nome1. Desprezando as complexidades inerentes a um processo de transferˆncia de dados em e um computador real – eis a´ a principal vantagem do portugol –. A vis˜o bottom up. Em geral (regra heur´ ıstica) dados que v˜o ser a lidos n˜o precisam ser inicializados antes. E poss´ fazer sistemas de computador usando as a ıvel duas t´cnicas. atrav´s da execu¸ao das partes.CAP´ ITULO 4. e O exemplo n˜o ´ dos melhores. para a sa´ dos dados.’m2’)”. v˜o ser lidos do disco ou vir˜o por uma linha telefˆnica ´ quest˜o a a o e a que n˜o interessa agora. .) sem que o operador soubesse o que era aquilo. Assim. que postea c˜ ´ riormente s˜o juntados e testados. Pedro Kantek 76 vers˜o de 10 de fevereiro de 2008 a . Identicamente. As vari´veis a escrever tem seu nome citado entre parˆnteses. L´ se lida com coisas f´ a ısicas que ocupam espa¸o e pesam para ser carregadas. Para resolver estes dois problemas a ´ existem os chamados comandos de entrada/sa´ ıda. linha telefˆnica etc. significam maneiras de atacar e a a resolver um problema em computador.3. mas sem e c˜ nunca esquecer o modelo completo..2 Sequˆncia de execu¸˜o ca ¨e Vale lembrar que a menos que o comando em quest˜o determine outro caminho. mas v´ l´) com a montagem de um carro. ´ muito melhor escrever “escreva a e (’A raiz e’. sen˜o a c10 c11 . RAIZ) 1: 2: 3: 4: 5: 6: 7: 8: 9: 4. isto deve ser feito apenas se o sexo a c˜ da pessoa ´ masculino..4. que tem o seguinte c˜ e formato: se <condi¸~o> ent~o ca a a¸~o ca fimse A condi¸ao ´ uma express˜o cujo resultado final ´ do tipo l´gico. B. RAIZ) se condi¸ao ent˜o c˜ a c1 c2 . a e ıvel 3: fimse Para efeito de clareza na leitura de um algoritmo. c2.4. (regra da programa¸ao estruc˜ c˜ turada) e assim por diante. a Neste caso a identa¸ao tamb´m ´ importante.sqr(B) se DELTA < 0 ent˜o a escreva (”raizes imagin´rias”) a 4: sen˜o a 5: X ← sqrt(DELTA) 6: fimse 1: v escreva (”raizes imagin´rias”) a X← sqrt(DELTA) fim 4. Em geral. COMANDOS leia (<nome-1> [.CAP´ ITULO 4. ıcio A margem deve ser trazida ao que era antes do comando “se”. as express˜es alfanum´ricas inclu´ o o e ıdas no comando servem para auxiliar na interpreta¸ao dos resultados gerados. Pedro Kantek 78 vers˜o de 10 de fevereiro de 2008 a . 1: A..3. e c˜ e a n˜o s˜o executados os comandos c10.. ao olhar se uma c˜ pessoa est´ quites com as suas obriga¸oes militares... ... Esta ´ a raz˜o pela qual se deixou 3 espa¸os em banco c˜ e a c ao in´ do comando escreva no exemplo acima.. c˜ escreva (<nome-1> | <express~o-1> [.. “sen˜o” e “fimse” c˜ e e a come¸am na margem corrente.. Nestes momentos a identa¸ao ´ mais importante ainda.2 Alternativa composta 1: 4. e a direita em fluxograma.<nome-2>... Se a condi¸ao ´ falsa. c11... portugol..4.1 Alternativa simples in´ ıcio DELTA ← 4 ×A×Csqr(B) Existem oportunidades em que um determinado comando dentro de um algoritmo s´ o deve ser executado se certas condi¸oes o permitirem.]) CAP´ ITULO 4. fimse condi¸ao c˜ v c1 c2 ..3 Alternativas aninhadas Nada impede que exista uma condi¸ao dentro de outra.. B : inteiro 2: RAIZ : real 3: leia (A. c˜ Exemplo: 4. Exemplo: 1: se DELTA < 0 ent˜o a 2: escreva (”n˜o ´ poss´ extrair esta raiz”). A a¸ao pode ser um comando simples ou uma seq¨ˆncia de c˜ ue comandos. Por exemplo. a O comando que identifica uma a¸ao condicional ´ o comando ”SE”.4 O comando alternativo Como j´ se disse este ´ o comando que permite versatilidade e generalidade aos algoa e ritmos. costuma-se identar os comandos subordinados a uma condi¸ao. COMANDOS in´ ıcio Por exemplo. s˜o executados os comandos c1.<nome> | <express~o> . ` Se a condi¸ao estabelecida ´ verdadeira. isto ´ VERc˜ e a e o e DADEIRO ou FALSO... . Ao permitir-se modificar caminhos tendo em vista certas condi¸oes ´ que o c˜ e algoritmo habilita o computador a “pensar” (as aspas. c10 c11 .2 Comando de Sa´ ıda Permite a gera¸ao de resultados por parte do algoritmo. Permite mesclar vari´veis e c˜ a express˜es. fim 4..]) a a Por exemplo. Neste caso podemos determinar o que fazer se a a condi¸ao verdadeira. por favor). c11. escreva (”a raiz procurada e ”. c˜ e Repare no exemplo a seguir: Para ver a vantagem da identa¸ao analisar-se-´ exatamente o mesmo c´digo. e ıs. vers˜o de 10 de fevereiro de 2008 a DELTA < 0 2: 3: DELTA ← 4 × A × C . Todos os demais comandos internos a este deixam uma c identa¸ao de 3 caracteres. por´m c˜ a o e escrito sem este recurso: 88-08. ´ E uma extens˜o da alternativa simples. e o que fazer se a condi¸ao for falsa. s˜o executados os a a c˜ e a comandos c10. Pedro Kantek 77 88-08. mas n˜o os primeiros. apenas quando se escrever o fimse correspondente. Em nosso pa´ mulheres est˜o desobrigadas de tais tratativas.. O formato deste comando c˜ c˜ ´ (` esquerda em linguagem algor´ e a ıtmica. Os comandos “se”. 5: fimse 2: in´ ıcio CAP´ ITULO 4... 4. 18 e 30.. indicador CERTO . COMANDOS 3: A=0 v 1: B←0 2: 3: 4: 5: C=0 v D←0 Definir se um valor num´rico representativo de um mˆs... inclusive: 1: se VALOR > 9 ∧ VALOR < 36 ent˜o a vers˜o de 10 de fevereiro de 2008 a 1: 2: 3: 4: 5: 1: 2: 3: 4: 5: 79 88-08... ent˜o. seria: se (IND = 1) ∨ (IND > 3 ∧ IND < 8) ∨ (IND = 9) ent˜o a .. indicador ERRADO . c˜ Atente-se a que a nega¸ao de um conjunto de OUs ´ um conjunto de Es.. e a ıda e a o que inverte o comando.CAP´ ITULO 4. Se.... Ao examinar um comando se. 17. valor OK .. o 5: fimse ˜ ˜ As vezes ´ mais f´cil organizar a sa´ correta atrav´s do SENAO e n˜o do ENTAO.. se assumir os valores: 1.. sen˜o a 4: ... fimse 80 vers˜o de 10 de fevereiro de 2008 a G ← 77 fim 1: 2: 3: 4: 5: 6: 7: 8: Exerc´ ıcio 21 Reescreva as condi¸oes acima usando a condi¸˜o de igual.. Um indicador estar errado... podemos criar trechos de algoritmo muito ricos. precisar´ e a ıamos negar as condi¸oes. em conjunto com o comando se simples ou composto. a condi¸ao n˜o for verdadeira.. se quis´ssemos manter as saidas sem invers˜o: e a se (IND = 1) ∧ (IND ≤ 3 ou IND ≥ 8) ∧ (IND = 9) ent˜o a . indicador CERTO . 5: fimse Outra maneira de escrever o comando acima.. indicador ERRADO .. Esta regra ´ importante para determinar o fim de ´ e SE’s aninhados. Pedro Kantek 88-08... e Agora ´ hora de voltar um pouco na teoria e relembrar o conceito das opera¸oes e c˜ com operadores l´gicos (VERDADEIRO e FALSO). deve-se agir da seguinte forma: Se a condi¸ao que acompanha o se for verdadeira.. Vejamos um exemplo. c´digo ERRADO ... Tais opera¸oes eram: ∧. todos os comandos a c˜ a a seguintes devem ser pulados at´ ser encontrado o comando fimse correspondente. mes OK . Veja-se alguns exemplos: Definir se um valor esta compreendido entre 10 e 35.. c´digo OK .... Pedro Kantek . indicador ERRADO ... c˜ ca Cada se tem que ter um fimse correspondente. fimse 1: 2: 3: 4: 5: 6: 7: 8: se A = 0 ent˜o a B←0 se C = 0 ent˜o a D←0 F←3 fimse G ← 77 fimse se A = 0 B←0 C=0 D←0 F←3 fimse G ← 77 fimse F←3 Um certo c´digo pode assumir os seguintes valores: 10.. sen˜o a . indicador ERRADO .. valor ERRADO . Testar se ele o est´ ou n˜o correto.... COMANDOS .. 7. 15.. indicador CERTO .. sen˜o a . fimse Finalmente.. indicador CERTO . quis´ssemos n˜o inverter as saidas.. 5: fimse Se entretanto.. Ao percorrer o fluxo. o c˜ Usando-as. mes ERRADO ... 3: sen˜o a 4: . o 3: sen˜o a 4: . encontrando um fimse encerra-se o ultimo se aberto. os comandos internos ao se devem c˜ ser executados. 3: sen˜o a 4: ... 6.. est´ correto e e a se MES > 0 ∧ MES < 13 ent˜o a . a a 1: se COD = 10 ∨ COD = 15 ∨ COD = 17 ∨ COD = 18 ∨ COD = 30 ent˜o a 2: . sen˜o a .. ou 9.. ao contr´rio. ∨ e ∼.. c˜ e 1: se IND = 1 ∧ IND = 4 ∧ IND = 5 ∧ IND = 6 ∧ IND = 7 ∧ IND = 9 ent˜o a 2: . Organizar o comando: 1: se IND = 1 ∨ IND = 4 ∨ IND = 5 ∨ IND = 6 ∨ IND = 7 ∨ IND = 9 ent˜o a 2: .... 5. .REPROVADO POR FREQUENCIA 9: sen˜o a ´ 10: .. Este triˆngulo ´ acutˆngulo ? a e a 7. medidos em cent´ a ımetros. acutˆngulo a a 1... MEDIA sen˜o a . Escrever um o a algoritmo portugol que receba este valor e some 1 no c´digo se ele estiver errado... ´ 88-08. Pedro Kantek 81 82 vers˜o de 10 de fevereiro de 2008 a .5 sim..18. o Exerc´ ıcio 24 Uma data vem acompanhada de um campo chamado DIASEM. embora n˜o seja uma boa id´ia.... a e 1: se MD ≥ 7 ∧ AA ≥ 45 ent˜o a 2: . Tais lados podem formar um triˆngulo ? a in´ ıcio 2....4. poderia ficar usando SEs aninhados Veja na figura 4.REPR. Para cada tripla.4.. o programa deve responder as seguintes perguntas: 1. Este triˆngulo ´ obtusˆngulo ? a e a Condi¸oes do problema c˜ ´ triangulo ? maior < A+B e retangulo maior2 = A2 + B2 equilatero A=B=C is´sceles o (A = B) ou (B = C) ou (A = C) escaleno (A = B) e (A = C) acutˆngulo a maior2 < A2 + B2 obtusˆngulo maior2 > A2 + B2 a Por exemplo se for lido dever´ ser impresso a 3. COMANDOS misturarando tudo Funciona... (semana inglesa).7 n˜o a 10..3.. ou igual a 50.REPROVADO POR MEDIA 6: sen˜o a 7: se MD ≥ 7 ent˜o a ¨ 8: .REPR. .APROVADO . COMANDOS CAP´ ITULO 4.00 E e Tiver assistido a 45 ou mais aulas Supondo que a m´dia ´ a vari´vel M. e que o n´ mero de aulas assistidas ´ a vari´vel e e a u e a AA...10 sim.REPROVADO NOS 2 CRITERIOS 12: fimse vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 23 Um c´digo est´ certo se for maior que 100. is´sceles.CAP´ ITULO 4. 7 para s´bado..REPR.. cujo valor ´ 1 para domingo. NOS 2 fimse fimse MD ≥ 7 v AA ≥ 45 v .APROVADO sen˜o a ¨ˆ . ...REPROVADO POR MEDIA 9: fimse 10: se MD < 7 ∧ AA < 45 ent˜o a ´ 11: .. a nega¸˜o de ca IGUAL DIFERENTE MAIOR MENOR MENOR OU IGUAL MAIOR OU IGUAL E OU ´ DIFERENTE e IGUAL MENOR OU IGUAL MAIOR OU IGUAL MAIOR MENOR OU E Outro Exemplo: Suponhamos o seguinte trecho de l´gica: Um aluno estar´ aprovado se: o a Tiver m´dia maior ou igual a 7. acutˆngulo o a fim usando SEs compostos 1: se MD ≥ 7 ∧ AA ≥ 45 ent˜o a 2: .. Este triˆngulo ´ escaleno ? a e 6. Pedro Kantek 88-08..REPR.REPROVADO POR FREQUENCIA 6: fimse 7: se MD < 7 ∧ AA ≥ 45 ent˜o a ´ 8: .3 Exerc´ ıcio 22 Defina um algoritmo que receba s´ries de 3 valores reais indicativos de e lados de um triˆngulo. equil´tero.. Este triˆngulo ´ equil´tero ? a e a 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: se MD ≥ 7 ent˜o a se AA ≥ 45 ent˜o a ..APROVADO 3: sen˜o a 4: se AA ≥ 45 ent˜o a ´ 5: .REPROVADO NOS 2 CRITERIOS 11: fimse 12: fimse 13: fimse Na programa¸ao. escaleno a 3. retˆngulo.. ¨ˆ FREQUENCIA AA≥ 45 v . 2 para segunda.REPR. Este triˆngulo ´ is´sceles ? a e o 5..3 sim. NOS 2 4.APROVADO 3: fimse 4: se MD ≥ 7 ∧ AA < 45 ent˜o a ¨ 5: ...REPR. Niklaus Wirth c˜ o Em resumo. o demˆnio se esconde nos detalhes..2. ´ MEDIA . Escrever um algoritmo portugol e a que receba DIASEM e verifique se o dia corresponde a um dia util. FREQUENCIA fimse sen˜o a se AA≥ 45 ent˜o a ´ . Este triˆngulo ´ retˆngulo ? a e a 3. Exemplo Calcular a soma dos n´ meros inteiros at´ 100. quando inadvertidamente a c˜ e condi¸ao de sa´ ´ tal. Uma das chaves para este procedimento ´ o comando chamado ENQUANTO. Se falsa. COMANDOS CAP´ ITULO 4.2 Repeti¸˜o com vari´vel de controle: para ca a O segundo comando que se usa para controlar la¸os. se a condi¸ao for verdadeira. Por outro lado se a condi¸ao a c˜ for uma tautologia (sempre falsa).. Entretanto. uma vez escrito o caminho principal do algoritmo (o chamado caminho das pedras). fimenquanto Por exemplo: leia A enquanto A < 11 fa¸a c 3: escreva A 4: A←A+1 5: fimenquanto 1: 2: 4.. A condi¸ao ´ avaliada. tem-se um la¸o inc˜ e c finito. fimenquanto Este comando deve ser assim interpretado. ent˜o os comandos subordinados nunca ser˜o execua a tados.5. para c clareza. enquanto <condi¸~o> fa¸a ca c <comando-1> <comando-2> ..5 Estruturas de repeti¸˜o ca NUMERO < 101 v SOMA ← SOMA + NUMERO NUMERO ← NUMERO + 1 Para obedecer ` terceira estrutura da programa¸ao estruturada e visando o reaproveitaa c˜ mento de c´digo. ao escrever um programa de computador que e calcule o sal´rio de um empregado. Pedro Kantek 83 88-08. c˜ e o algoritmo deve saltar todos os comandos subordinados e continuar a execu¸ao ap´s c˜ o o comando fimenquanto. um erro e c de programa¸ao bastante comum ´ o chamado loop infinito. Assim. o algoritmo ca a deve devolver a mensagem ”ERRO” in´ ıcio SOMA:real NUMERO:inteiro SOMA ← 0 NUMERO ← 1 4. a Se a condi¸ao for uma ”verdade eterna”. e ´ e Os trechos de programas que s˜o repetidos ao se usar as estruturas de repeti¸ao s˜o a c˜ a conhecidos genericamente com o nome de loops ou em portuguˆs “la¸os”. pois os comandos nunca deixar˜o de ser executados. a c˜ Em outras palavras. Se ela for falsa. at´ se encontrar o comando fimenquanto. isto seria intermin´vel. a ue A condi¸ao ´ novamente avaliada. ver-se-˜o agora as possibilidades de repetir partes do algoritmo. n´s vamos fazer todos os funcion´rios (ou alunos) passarem por este o a caminho. pois a regra de um vale para todos. u e vers˜o de 10 de fevereiro de 2008 a SOMA:real NUMERO:inteiro SOMA ← 0 NUMERO ← 1 enquanto NUMERO < 101 fa¸a c SOMA ← SOMA + NUMERO NUMERO ← NUMERO + 1 fimenquanto escreva (SOMA) NUMERO < 101 v escreva (SOMA) fim Comandos internos ao comando “enquanto” devem estar identados de 3 espa¸os. Se c˜ e verdadeira. que nunca ´ alcan¸ada. pulam-se os comandos subordinados. os comandos s˜o novamente executados. a e h´ um desvio na seq¨ˆncia de processamento e um retorno ao comando enquanto. a A chave para este problema est´ no reaproveitamento de instru¸oes do algoritmo. e Seu formato: enquanto <condi¸~o> fa¸a ca c c1 c2 . o programador s´ precisa se preocupar o com um unico aluno.. algo como 1 = 1.5. Estas o a estruturas cont´m impl´ e ıcito um comando de desvio (go to) e nas linguagens mais modernas ´ o unico desvio que ´ aceito. e assim por diante. Neste momento. Se a condi¸˜o n˜o for satisfeita. atende pelo nome de para. Por exemplo. u Falando em termos mais gen´ricos. ao escrever o algoritmo de aprova¸ao c˜ de alunos na cadeira de algoritmos do Unicenp. N˜o teria sentido descrever ´ a os mesmos procedimentos para todos os alunos.1 Repeti¸˜o com condi¸˜o no in´ ca ca ıcio: enquanto 2: 3: 4: 5: 6: 7: 8: 9: Parece razo´vel que um algoritmo deve ser criado para a execu¸ao de um unico conjunto a c˜ ´ de valores fornecidos como entrada. deve-se imaginar apenas um empregado e n˜o os a a milhares que o computador processar´.CAP´ ITULO 4. c˜ ıda e e c 1: 4. COMANDOS Exerc´ ıcio 25 Escrever um algoritmo portugol que receba (n˜o importa como) trˆs a e valores num´ricos (chamados A. os comandos subc˜ ordinados s˜o executados.B e C). e devolva a informa¸˜o ”OK”quando se satisfizerem e ca as seguintes condi¸oes: (A deve ser maior que 10 e menor do que 100) OU (B deve ser c˜ diferente de C E C deve ser maior que 50). al´m de deixar a e o algoritmo espec´ ıfico para um determinado n´ mero de alunos. isto ´. ıcio c O formato do comando para ´ e para vari´vel DE valor-1 AT´ valor-2 [PASSO valor-3] fa¸a a E c comando 1 comando 2 88-08. Pedro Kantek 84 vers˜o de 10 de fevereiro de 2008 a . Ele c pressup˜e a existˆncia de uma vari´vel de controle que ir´ (como o nome diz) controlar o e a a o in´ e o fim do la¸o. 7 e 9. chaves. Uma especial observa¸ao deve ser feita quando o valor-3 (o incremento) for negativo.. Por conven¸ao.. 7. 13. quando o fluxo chega ao at´. Dentro dos comandos subalternos ao para. toda a cl´usula pode ser omitida. mas ainda assim importante aos java-parlantes c˜ a ou aos C-parlantes: Nestas duas linguagens o comando de repeti¸ao com condi¸ao no c˜ c˜ in´ ıcio e no final ´ o mesmo. Em geral tudo o que se faz com um deles se pode fazer com o outro. Exemplos: usando para equivalente usando enquanto para I de 1 at´ 10 passo 2 I ← 1 e escreva I enquanto (I ≤ 10) fimpara escreva I I←I + 2 fimenquanto vers˜o de 10 de fevereiro de 2008 a CAP´ ITULO 4. e e a Veja-se dois exemplos para ajudar a entender e a guardar estas quest˜es: o 1: para J de 1 at´ 9 passo 2 fa¸a e c 2: escreva J 3: fimpara Aqui ser˜o impressos os valores 1. ele n˜o ´ um fim e a e em s´ mesmo. quando o valor do passo for 1.out. Pedro Kantek 85 88-08. Pedro Kantek 86 vers˜o de 10 de fevereiro de 2008 a . a 88-08. com idˆnticas sa´ e e ıdas. ı Portanto. 7. Por esta raz˜o. ou n˜o ´ s´ isso. criar um programa n˜o ´ um exerc´ a e ıcio acadˆmico. 1000. elas tamb´m n˜o podem ser a e e a alteradas dentro do para. Entretanto. Na vida pr´tica h´ e a a pressa. e Ao chegar ao final dos comandos. indea pendente da condi¸ao. j´ que a vari´vel de controle vai diminuir a a ao inv´s de aumentar. tem-se aqui um outro comandos de repeti¸ao: c˜ repita comando 1 comando 2 . 3. o fluxo retorna ao o e comando imediatamente seguinte ao repita. e O teste de saida ´ para maior ou igual. Trata-se do comando while. S´ ´ poss´ transformar um enquanto em um para equive oe ıvel alente. J´ em Java o a a trecho ficaria 1: J = 4 2: while { 3: system. E o contr´rio do comando repita acima descrito. ao in´ do comando para.3 Repeti¸˜o com condi¸˜o no final: repita ca ca Al´m da instru¸ao enquanto. Neste caso. demonstraram aqueles dois professores italianos). Na e a e o universidade. a vari´vel mencionada no comando c ıdo a ´ inicializada com o valor-1.5. n˜o existe a invers˜o l´gica de sa´ explicitada acima. acelerar e simplificar. J´ no enquanto. 19 e 1000. a vari´vel ´ incrementada com o valor-3 (ou com a e 1 se nada for referenciado) H´ um desvio incondicional. visando facilitar. COMANDOS . tais comandos podem n˜o ser executados c˜ a a nem uma vez. Isto ´. A estrutura repita faz e testa. comando n at´ <condi¸~o> e ca Os comandos internos ao repita s˜o executados enquanto a condi¸ao contida na a c˜ cl´usula at´ n˜o for satisfeita. quando se souber o n´ mero exato de itera¸oes que o enquanto faria. 2 e 3 podem ser valores auto-declarados (caso mais comum) ou podem ser quaisquer vari´veis num´ricas. J´ a rec´ a ıproca nem sempre ´ verdadeira. 10. e o teste definido no passo a ıcio <2> acima ´ refeito. a maioria das linguagens de alto n´ e c˜ ıvel oferece outras formas de repetir uma parte do programa. 5. c˜ Nestes casos h´ v´rias invers˜es no comando. a Os valores 1. J´ o la¸o do c a c˜ a c repita ser´ realizado se a condi¸ao for FALSA.CAP´ ITULO 4. O la¸o do enquanto ser´ realizado se a condi¸ao for VERDADEIRA.println (J) // ´ assim mesmo ? e 4: J = J + 3 5: J > 20 6: system. Muda apenas o local da e condi¸ao. por idˆntica raz˜o.. 16. a saber: a a o O valor 1 deve ser maior do que o valor 2. Embora parecido com o enquanto. com uma unica estrutura poder-se´ ia resolver todos os problemas (como. o repita tem algumas diferen¸as. a c˜ A estrutura enquanto testa e faz. e o rigor ´ importante na medida em que garante qualidade.. A rigor. Se for falsa. o fluxo segue ap´s o at´. A vantagem ´ que para determinadas situa¸oes (que s˜o espec´ e c˜ a ıficas de cada algoritmo) um ou outro pode ser mais indicado. Uma observa¸ao meio extemporˆnea. a vari´vel de controle n˜o pode ser a a alterada pelos comandos escritos pelo usu´rio. comando n fimpara A regra de funcionamento do para ´: e Antes de come¸ar o trecho inclu´ no para. Em c˜ a a a o ıda Java e em C. e o rigor cient´ a a ıfico ´ o que importa. e Se este valor for menor ou igual ao valor-2 o trecho subalterno ´ executado. D´ mais trabalho (s˜o 3 comandos) mas sempre ´ poss´ a a e ıvel.out. Quando u c˜ isto for desconhecido a convers˜o n˜o ´ poss´ a a e ıvel. isto ´ pode resolver o problema com menos l´gica adicional (o e o chamado ”overhead”) tais como contadores. c˜ a Exemplo: o comando PARA K DE 1 ATE 10 equivale ao comando PARA K DE 1 ATE 10 PASSO 1. 3 e 1. COMANDOS 4. testes etc. a condi¸ao ´ a e a e e c˜ e avaliada. a Devemos lembrar que todo comando para pode ser convertido em seu equivalente enquanto. a sa´ quando a condi¸ao aparece depois do bloco ´ quando a condi¸ao ´ ıda c˜ e c˜ e ´ FALSA. n˜o h´ pressa.println (1000) } Ser´ impresso pelo Java: 4. a saber c Os comandos internos ao repita s˜o executados sempre ao menos uma vez. a Veja-se em exemplos: No portugol acima descrito tem-se Neste trecho ser˜o impressos os valores 4. 5. J´ em a a 1: para J de 9 at´ 1 passo -2 fa¸a e c 2: escreva J 3: fimpara Ser˜o impressos os valores 9. Se for verdadeira. inclusive u Imprimir a soma ao final Exerc´ ıcio 30 Definir algoritmo que leia 17. . J←4 escreva J J←J+3 J > 20 Exerc´ ıcio Resolvido 1 Escreva um algoritmo que leia uma s´rie de notas (que se e encerram quando for lido um n´mero negativo) e ao final escreva as duas maiores notas que u apareceram. 7. vamos ver diversas estrat´gias para a sua ıcio e e solu¸˜o: ca 1. Pedro Kantek 88 vers˜o de 10 de fevereiro de 2008 a . (Por exemplo. 9 → n˜o funciona e a Exerc´ ıcio 29 Escreva um algoritmo que leia dois n´meros inteiros n e m e: u Teste se m > n. 8. in´ ıcio CAP´ ITULO 4. X 2: X ← 1 3: PNO ← 0 4: SNO ← 0 5: enquanto X < 100 fa¸a c 6: leia (NUM. 3. . e informe ao final.. 6. PNU.. 8. 5.. 10. 2. se n˜o for dar uma mensagem de erro e terminar o processamento a Somar todos os m´ltiplos de 13 que estiverem compreendidos entre n e m. mas n˜o gera resultado nenhum externo ao a computador. terceira abordagem 1: inteiro NUM. . 9 Como o exerc´ ´ um pouco mais complexo. foram pares. 9. o algoritmo que estabelece “letra pequena” na impressora matricial.. quantos foram os m´ltiplos e quanto resultou sua soma. Por exemplo. NOT) 7: se NOT > PNO ent˜o a 8: se PNO > SNO ent˜o a 9: SNO ← PNO 10: SNU ← PNU 88-08. 2. fa¸a c 2: leia(N) 3: se N > P ent˜o a 4: P←N 5: fimse 6: se N > S ent˜o a 7: S←N 8: fimse 9: fimenquanto DEFEITO: ao final. foram maiores do que 100. P e S ter˜o o mesmo valor (o maior) a 2. SNU. 8. Exerc´ ıcio 28 Definir algoritmo que some todos os m´ltiplos de 7 compreendidos entre u 100 e 10000.. 2.000 n´meros reais e informe. o algoritmo deve imprimir 10.. mas ao ser acionado gera um rea sultado (Por exemplo. Inventa e esquece ??? Exerc´ ıcio 26 Definir algoritmo que escreva a soma dos primeiros 100 n´meros inteiros u (1. se as notas lidas forem 8.. foram negativos. 4 e 3. foram inteiros. um programa que atualize o rel´gio da m´quina) o a Inventa e imprima o algoritmo n˜o recebe nada. 4. vers˜o de 10 de fevereiro de 2008 a 3. 2. 7. 200). PNO. u Com a s´rie 1.. COMANDOS 2. COMANDOS 3. 1. 10. Pedro Kantek 87 88-08.CAP´ ITULO 4. 100). NOT. 5 → funciona e 1: 2: 3: 4: 5: 6: J←4 repita escreva J J←J+3 at´ J > 20 e escreva 1000 v escreva 1000 fim tipos de algoritmos (algo jocoso) Uma categoriza¸ao com algo de chacota. mas que ajuda a entender os algoritmos: c˜ Le e imprime o algoritmo recebe um dado e a partir dele gera resultados (90% dos algoritmos pertencem a esta classe) Le e esquece o algoritmo recebe um dado.. . quantos: u 1. 4. 3. SNO. fa¸a c 2: leia(N) 3: se N > P ent˜o a 4: P←N 5: fimse 6: se N > S ent˜o a 7: se N = P ent˜o a 8: S←N 9: fimse 10: fimse 11: fimenquanto DEFEITO: Com a s´rie 1. Exerc´ ıcio 27 Definir algoritmo que escreva a soma dos primeiros 100 n´meros pares u inteiros (2. primeira estrat´gia e 1: enquanto . segunda abordagem 1: enquanto . Quem tirar o ultimo palito perde. sempre que poss´ ıvel. qual o n´mero mais pr´ximo ca e u u o de 100 que foi lido. o comando Repita 1: 2: 3: Exerc´ ıcio 31 Definir algoritmo capaz de jogar com o operador o“JOGO DO PALITO”. usando 1. at´ que reste e ue e apenas um palito. + n 2 3 4 n+1 Exerc´ ıcio 32 Defina algoritmo que calcule e escreva o somat´rio expresso pela seguinte o s´rie: e S= 20 500 480 460 + + + . escrever o trecho equivalente usando o repita. ou ”NAO PRIMO”se ele for divis´ ıvel. e u 1 1 1 1 S = 1 + 2 + 3 + . 17. 13. ao final se eles estavam em ordem ascendente ou n˜o.. se for lido 10. 5. COMANDOS 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: CAP´ ITULO 4.. DESAFIO: escreva o n´mero par mais pr´ximo a 100. 25 ou 29 e a para J de 2 at´ -10 passo -3 fa¸a e c K ← sqr(J) escreva K 4: fimpara Exerc´ ıcio 38 Escrever um algoritmo que leia um unico n´mero (que por defini¸˜o ´ ´ u ca e ˜ maior que 3). Dica: Estrat´gia vencedora: deixar o advers´rio sempre com 1. ´ O programa deve atentar para impedir retiradas diferentes de 1 2 ou 3. Exerc´ ıcio 39 Definir algoritmo que leia uma seq¨ˆncia de valores num´ricos inteiros ue e e determine. a O humano tamb´m retira 1. S˜o dois jogadores. DESAFIO: escreva o ante-pen´ltimo. e a seq¨ˆncia prossegue..PNU) escreva (SNO. 9. dever dizer ”PRIMO”. deve imprimir ”FORA DE ORDEM”. Por ˜ exemplo. 21. o comando Enquanto e 2. 2 ou 3 palitos. u o Exerc´ ıcio 34 Escreva um algoritmo que leia uma seq¨ˆncia de n´meros positivos (a ue u condi¸˜o de fim ´ a leitura do n´mero -1) e escreva ao final. escrever o trecho equivalente usando o repita 1: Z ← 10 2: enquanto Z > 0 fa¸a c 3: Z←Z-3 4: escreva (Z) 5: fimenquanto Eis a lista de vari´veis usada acima a NUM = n´mero do aluno atual u NOT = nota do aluno atual PNU = n´mero do aluno com a melhor nota at´ agora u e PNO = melhor nota at´ agora e SNU = n´mero do aluno com a segunda melhor nota at´ agora u e SNO = segunda melhor nota at´ agora e X = contador at´ 100 e Exerc´ ıcio 36 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto. ou -1 se n˜o houver ante-pen´ltimo u a u vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 42 Dados o seguinte trecho de l´gica escritos usando o enquanto.. u A m´quina retira 1. e escreva ”PRIMO”se ele for primo. e se n˜o estiverem. qual o ultimo n´mero que foi ca e u ´ u lido. O n´mero de termos deve ser lido a priori. onde S= 1 2 3 N + + + .CAP´ ITULO 4. Pedro Kantek 90 vers˜o de 10 de fevereiro de 2008 a ..SNU) Exerc´ ıcio 35 Dados o seguinte trecho de l´gica escritos usando o enquanto. 1: A ← 10 2: B ← 20 3: enquanto (A + B) < 50 fa¸a c 4: A←A+5 5: B ← B + 10 6: escreva (A+B) 88-08. o programa dever dizer ”NAO PRIMO”. + 2 3 4 N +1 Exerc´ ıcio 33 Escreva um algoritmo que leia uma seq¨ˆncia de n´meros positivos (a ue u condi¸˜o de fim ´ a leitura do n´mero -1) e escreva ao final. Este jogo tem a seguinte regra. + 2 3 4 26 Exerc´ ıcio 41 Escreva o algoritmo que leia N e escreva S. deve a imprimir ”EM ORDEM”. Se estiverem. e se for lido 11. COMANDOS fimse PNO ← NOT SNO ← NUM fimse se NOT > SNO ent˜o a se NOT = PNO ent˜o a SNO ← NOT SNU ← NUM fimse fimse fimenquanto escreva (PNO. a a O humano escolhe um n´mero de palitos qualquer entre 20 e 30.. e de vencer. 1: GH ← 5 2: repita 3: escreva (ABC) 4: at´ GH = 5 e Exerc´ ıcio 37 Escreva o trecho a seguir. a Exerc´ ıcio 40 Defina algoritmo que calcule e escreva o somat´rio expresso pela seguinte o s´rie. 2 ou 3 palitos. a quem chamaremos: m´quina (programa) e humano. Pedro Kantek 89 88-08. 0 fim. leia s´rie de duplas (dura¸˜o. COMANDOS ˜ e Obs: o pre¸o acima ´ para o comercial inteiro.20 e o forem lidos dever ser impresso 10. e ca A dura¸˜o est´ dada em segundos. segundo a tabela: ca ca Dura¸˜o ca At´ 10 segundos e De 11 a 30 segs Acima de 30 segs de 0 a 5h59min 5 US$ 12 US$ 16 US$ Hor´rio a de 6 a 20h59min 12 US$ 21 US$ 26 US$ 91 de 21 a 24h 8 US$ 17 US$ 22 US$ 88-08. logo por defini¸˜o o n´mero 1 n˜o ´ perfeito. o comando Enquanto e 2. 496..5 4: escreva (T * 2) 5: at´ (T > 10) e Exerc´ ıcio 47 Um comercial de r´dio tem seu custo em fun¸˜o de 2 vari´veis. o u Exerc´ ıcio 51 Defina um algoritmo que calcule e escreva a soma da s´rie a seguir. se o d´lar estiver cotado a R$ 2. a) 1: A ← 10 2: repita 3: A←A+1 4: at´ (A > 10) e b) 1: GH ← 5 2: repita 3: escreva (ABC) 4: at´ (GH = 5) e c) 1: T ← 0 2: repita 3: T ← T + 0. Ao final do u e a processamento.. ou seja.CAP´ ITULO 4.40 R$ 10.. maior que 500. c e Definir algoritmo que: 1.23 17. ca Valores v´lidos: 0 ≤ Dura¸˜o ≤ 60. ca a Os dados terminam quando for lida uma dupla com dura¸˜o igual a zero. e u Para cada tripla deve ser gerada uma progress˜o aritm´tica supondo que: a e O primeiro elemento da tripla ´ o termo inicial e O segundo elemento da tripla ´ a raz˜o e a O terceiro elemento da tripla ´ o n´mero de termos e u Os elementos da PA dever˜o ser impressos. 1: T ← 0 2: repita 3: T ← T + 0.23 37. Um n´mero perfeito ´ aquele que ´ igual a soma de todos os seus fatores. Pedro Kantek Exerc´ ıcio 50 Defina e escreva um algoritmo para imprimir todos os n´meros perfeitos u entre 1 e 500. O processo termina quando for lido um n´mero a u de termos igual a zero. e considerando 50 termos: S= 100 2 4 6 + + + . O algoritmo deve imprimir qual o e u ultimo n´mero lido. e S= para T de 1 at´ 2 passo 2 fa¸a e c escreva T fimpara Exerc´ ıcio 49 Definir um algoritmo que leia uma s´rie indeterminada de valores posie tivos. escrever o trecho equivalente usando o repita. se for lida a s´rie 3.60 R$ 0.5 4: escreva (K) 5: fimenquanto Exerc´ ıcio 44 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto. 21. u a ca 88-08. imediatamente antes do n´mero -1. Outros n´meros s˜o: ca u e a e u a 28. 0 ≤ Hora ≤ 23 a ca Por exemplo.40 R$ 20. sendo que a marca de fim ´ a leitura do n´mero -1. leia o valor da cota¸˜o do d´lar naquele dia ca o 2.4 26. o algoritmo deve imprimir o valor da s´rie. Depois disso.. descobrir qual o pr´ximo n´mero perfeito. O u e e primeiro n´mero perfeito ´ o 6 (6=1+2+3). Exerc´ ıcio 46 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto. NAO ´ por segundo de comercial. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 92 vers˜o de 10 de fevereiro de 2008 a . + 3 5 7 101 Exerc´ ıcio 52 Definir algoritmo que receba uma s´rie de triplas de n´meros inteiros.5 4: escreva (T × 2) 5: at´ T > 10 e Exerc´ ıcio 45 Escreva o trecho a seguir. 1: K ← 5 2: enquanto K < 10 fa¸a c 3: K ← K + 1. 1 4 9 16 25 O n´mero de termos da s´rie deve ser lido. o comando Repita 1: 2: 3: Exerc´ ıcio 48 Escreva um algoritmo capaz de determinar o valor da seguinte s´rie: e 2 3 4 5 6 − + − + + . a saber: a ca a dura¸˜o e hora de irradia¸˜o. -1. ´ u u e 7. COMANDOS 7: CAP´ ITULO 4. u e ca u a e Usar uma fun¸˜o para determinar se um n´mero ´ ou n˜o ´ perfeito.. usando 1.. Exerc´ ıcio 53 Escreva um algoritmo que leia uma s´rie de n´meros inteiros e positivos e u e ao final do processamento escreva qual o maior deles. fimenquanto Exerc´ ıcio 43 Dados o seguinte trecho de l´gica escritos usando o enquanto. e nunca ser´ maior que 25. 4.hora) escreva a dupla e o valor a ser cobrado em reais. o algoritmo deve imprimir 4. O processamento se encerra quando for lido qualquer n´mero negativo que n˜o deve ser considerado para efeitos de compara¸˜o. Por exemplo. Se ca necess´rio.2).0. 1: algoritmo ponteiro 2: inteiro h m 3: real ah am qtm angulo 4: leia (h. COMANDOS Exerc´ ıcio 54 Escrever um algoritmo. O algoritmo termina quando for lida a dupla 0. e os ponteiros realizam movimentos discretos.C 2: {R ´ e } 3: {C ´ e } 4: PI ← 3. informe qual o menor ˆngulo que os dois ponteiros fazem entre a si ao representar a hora informada. Estude e informe a condi¸˜o de fim.R.m) 25: fimenquanto 26: fim{algoritmo} vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 57 Interprete o seguinte trecho de algoritmo. eles s´ se movem e o a cada 60 segundos. que receba conjuntos de 3 notas de um aluno. a Exerc´ ıcio 56 Interprete o seguinte trecho de algoritmo.5 8: am ← qtm * 6 9: enquanto ah ≥ 360 fa¸a c 10: ah ← ah . Para cada aluno aprovado. Os dados se encerram quando for lida a dupla zero.7.141592 5: leia(R.angulo 22: fimse 23: escreva (angulo) 24: leia(h. Os valores permitidos para hora est˜o entre 0 e 11 e para minuto os valores v´lidos est˜o entre a a a 0 e 59. (1. B.C) 14: fimenquanto Exerc´ ıcio 59 Siga o seguinte algoritmo. a e 1: inteiro CA.m) 5: enquanto h = 99 fa¸a c 6: qtm ← (h * 60) + m 7: ah ← qtm * 0. isto ´. realize ca a um ”chinˆs”sobre os dados.5) e (-1. e forem lidas as triplas (5. C e D que s˜o impressos ao final. Calcular e imprimir a ´rea do a a retˆngulo se o per´ a ımetro do mesmo for superior a 25. A sa´ do resultado pode ser em graus e d´cimos de grau.am 17: sen˜o a 18: angulo ← am . O primeiro valor corresponde a m´dia do primeiro semestre.B. Se necess´rio. realize ca a um ”chinˆs”sobre os dados.6). e o terceiro valor correspondendo a nota final. N˜o existe o o o a ponteiro de segundos.0) o resultado final de QTD-APROV ser´ 1. realize um ”chinˆs”sobre os dados.10. o algoritmo e deve somar 1 em QTD-APROV. informando (em portuguˆs) o e que faz ou para que serve o algoritmo analisado.8. (10.CAP´ ITULO 4. e 1: real PI.8).CE) 9: fimenquanto Exerc´ ıcio 55 Definir um algoritmo que leia uma s´rie de pares de valores inteiros que e representam COMPRIMENTO e LARGURA de um retˆngulo.8). ou se o aluno preferir ıda e em graus e minutos. e para cada conjunto lido. (8.360 11: fimenquanto 12: enquanto am ≥ 360 fa¸a c 13: am ← am .2).360 14: fimenquanto 15: se se ah > am ent˜o a 16: angulo ← ah . Estude e informe a condi¸˜o de fim.CE 2: leia(CA. Pedro Kantek 93 88-08.1) e (0. Por exemplo.ah 19: fimse 20: se se angulo > 180 ent˜o a 21: angulo ← 360 .CE) 3: enquanto CA = CE fa¸a c 4: se CA < CE ent˜o a 5: escreva(CA) 6: fimse 7: escreva(CE) 8: leia(CA. informando o que faz ou para que serve o algoritmo analisado. e informe quais os valores de A.C 2: real X } 3: {A ´ e 4: {B ´ e } 5: {C ´ e } } 6: {X ´ e 7: leia(A) 8: B ← 0 9: enquanto A = 0 fa¸a c 10: se A < B ent˜o a 11: B←A 12: fimse 13: leia(A) 14: fimenquanto 15: escreva (B/2) Exerc´ ıcio 58 Interprete o seguinte trecho de algoritmo. Regra de aprova¸˜o: ca (N1 × 3 + N2 × 3 + N3 × 4) ÷ 10 ≥ 7 Os dados terminam quando o primeiro valor da s´rie for negativo. Existe uma vari´vel no a algoritmo (pr´-definida) chamada QTD-APROV. a 88-08. a a Exerc´ ıcio Resolvido 2 Imagine um rel´gio anal´gico de ponteiros.0) s´ ser´ o a impressa a ´rea 80. Estude e informe a condi¸˜o de fim. Pedro Kantek 94 vers˜o de 10 de fevereiro de 2008 a . COMANDOS CAP´ ITULO 4. informando o que faz ou para que serve o algoritmo analisado. se QTDe APROV tiver o valor 0.C) 13: leia(R. Escreva um algoritmo que leia diversos conjuntos de hora e minuto.C) 6: enquanto (R = 0) ∨ (C = 0) fa¸a c 7: se R = 0 ent˜o a 8: C ← 2 × PI × R 9: sen˜o a 10: R ← C ÷ (2 × PI) 11: fimse 12: escreva(R. e 1: inteiro A. Por exemplo. equivalente ` dupla (10. O segundo valor ´ m´dia do e e e segundo semestre. Se necess´rio.zero. se forem lidas as duplas (2.0. (10. C. 11 2. B. o comando colocado o seu lado ser´ executado. 25. tem um n´mero de ordem. 5: FIMESCOLHA 88-08. mais ou e menos como o Kinder ovo. Entretanto. a) b) c) d) e) 5.B.B. 5. 11 1. Vocˆ s´ conta com labels. sen~o : comando-z a fimescolha . 3: CASO 2 : 3 : 4 : comando-2.J. enquanto . 2. 1. at´.000 qu´druplas (ordem. Tal uso (de acordo com os dois mestres italianos) sempre ´ suficiente para a solu¸ao de qualquer e c˜ problema. e existir a cl´usula sen˜o. ˜ 4: SENAO: omando-3.5. devidamente encadeadas. 25. PASCAL tem o comando u CASE. Aqui. a empresa teve a oportunidade de comprar 15. e e o Eis como ficaria: 1: algoritmo qualquer 2: I ← 1 3: J ← 3 4: K ← (*1) 5: L1: se (I > 100) 6: v´para FIM a 7: sen˜o a 8: se (J > 11) 9: v´para L2 a 10: sen˜o a 11: se (K > (*2)) 12: vapara L3 1: 2: 3: vers˜o de 10 de fevereiro de 2008 a Nos casos em que h´ m´ ltiplas sa´ a u ıdas para um determinado teste.. B e C.. O objetivo da compra.] : comando-1 .. testes e desvios. 25..] : comando-a O funcionamento deste comando ´ simples: A express˜o que aparece ao lado do e a comando Escolha ´ avaliada. 1 Resposta certa: letra (a) 4. Definir um algoritmo que leia 15. fimpara. e as suas 3 dimens˜es A. 5. foi colocar cada brinquedo em uma esfera colorida.J. e o a e o que significa que n˜o existem as estruturas para .000 ıs. e deve gerar um resultado determinado. n´s podemos usar o a estrutura de alternativas simples e compostas.K) 5: fimpara 6: fimpara 7: fimpara Imagine que vocˆ precisa re-escrever este c´digo e a sua nova linguagem n˜o ´ estruturada.K) 15: K ← K + (*3) 16: v´para L1 a 17: fimse 18: fimse 19: fimse 20: L3: J ← J + (*4) 21: K ← 5 22: v´para L1 a 23: L2: I++ 24: J ← (*5) 25: K ← 5 26: v´para L1 a 27: fimalgoritmo Os valores propostos para (*1) (*2) (*3) (*4) e (*5) para que os dois trechos sejam equivalentes s˜o a 13: 14: inteiro A.D) A:__________ B:__________ C:__________ D:__________ Exerc´ ıcio 60 Brinquedos“PIRRALHOS ENDIABRADOS”´ um grande distribuidor de e presentes em todo o pa´ Recentemente. Pedro Kantek 95 88-08... 5.... Este resultado e ser´ comparado com os valores colocados ao lado direito das palavras caso.. 5. COMANDOS 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: CAP´ ITULO 4.CAP´ ITULO 4. para simplificar a poss´ solu¸ao. Cada brinquedo. APL tem o desvio para um vetor etc). 1.4 Comando de m´ltipla escolha: Escolha u Exerc´ ıcio 61 Supondo um trecho de c´digo escrito em pseudo-c´digo: o o para I de 1 at´ 100 fa¸a e c para J de 3 at´ 11 passo 2 fa¸a e c para K de 5 at´ 25 passo 5 fa¸a e c 4: escreva (I. 5. 25. pequenos brinquedos. Existem esferas de raios 10. Quando um a valor igual for encontrado.A. a se nenhum valor for igual. 1. 1. COMANDOS sen˜o a escreva (I. C. para revendˆ-los como surpresa. Exemplo a a a 1: ESCOLHA (A + 1) 2: CASO 1 : comando-1. todos embalados em caixas retangulares. 20 e 30 cm.C) e para cada uma delas escreva a a ordem do brinquedo e o raio da esfera necess´rio. in´ meras linguagens tem o comando ıvel c˜ u de teste m´ ltiplo (COBOL tem o GOTO depending ON. dbase tem o CASE.. usar-se-´ o a seguinte formato: escolha <express~o> a caso valor-1 [: valor-2 caso valor-a [: valor-b . Pedro Kantek 96 vers˜o de 10 de fevereiro de 2008 a . Finalmente. 2 2. medidas em cent´ u o ımetros.. esta ser´ executada. fimenquanto e a nem repita . 2 2. Todos os brinquedos caber˜o em uma das a a esferas. 5. D A←0 B ← 10 C←B×3 D←B+C+A enquanto D < 0 fa¸a c A←A+1 D←D+1 fimenquanto se A > 0 ent˜o a D←D×2 sen˜o a B←B×2 fimse escreva (A. j. Exemplo c 1: enquanto (X = 10) fa¸a c 2: comando 1 . Pedro Kantek 97 88-08.m. repita ou para). Eis o formato do comando a abandone Este comando s´ tem sentido quando emitido dentro de um la¸o de processamento o c (dentro de um enquanto. 11: fimenquanto 12: comando 50. ser´ executado o comando-3. Ele ´ utilizado quando se deseja .. escrever o trecho equivalente usando o repita.5 × ABC 4: MEDIA ← (SEM1 + SEM2) ÷ 2 5: escreva MEDIA 6: fimpara Exerc´ ıcio 66 Escreva o trecho a seguir.. Assim.4. quando abandone ´ executado a e dentro de um para. Pedro Kantek 98 vers˜o de 10 de fevereiro de 2008 a .. e Se existirem dois ou mais la¸os (um dentro do outro).. a Se A for 1.. usando 1. Geralmente...a partir e de uma determinada condi¸ao . 3: comando 2.. Exerc´ ıcio 63 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto.5 Abandono de itera¸˜o: abandone ca Este comando exige uma sa´ incondicional de cada uma das estruturas de repeti¸ao ıda c˜ (enquanto. escrito usando o comando para. pois 220 e u a ´ igual a soma dos fatores de 284 (142.n 2: inteiro fun¸˜o somf (inteiro a) ca 3: inteiro var ind.som 4: som ← 0 5: para ind ← 1 to a-1 fa¸a c 6: se a mod ind = 0 ent˜o a 7: som ← som + i 8: fimse 9: fimpara 88-08.k.5. .. o comando Enquanto e 2.2. Neste caso. COMANDOS 4. ao ser executado o abandone. COMANDOS Aqui. vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio Resolvido 3 Dois n´meros s˜o considerados ”amigos”quando um n´mero u a u ´ igual a soma dos fatores do outro n´mero. quando abandone for executado. Seu funcionac˜ mento ´ simples: ao ser executado. 1: A ← 10 2: repita 3: A←A+1 4: at´ A > 10 e Exerc´ ıcio 64 Dado o trecho a seguir. O desvio sempre se d´ para o comando seguinte ao fim da a estrutura que est´ sendo usada. se A for zero.. reescreve-lo usando o comando enquanto 1: para SEMENTE de 0 at´ 100 passo 2 fa¸a e c 2: SEM1 ← SEMENTE × 2 3: SEM2 ← SEMENTE + 1. Neste caso. o comando Repita 1: para K de 5 at´ 25 passo 3 fa¸a e c escreva K+1 3: fimpara 2: Exerc´ ıcio 62 Dados o seguinte trecho de l´gica escritos usando o enquanto. este comando ´ c˜ e colocado dentro de um ”se”. Da mesma forma. a Se A tiver qualquer valor diferente de 0. reescreve-lo usando o comando enquanto 1: para J de 1 at´ 20 fa¸a e c 2: X←J÷3 3: escreva (X) 4: fimpara Exerc´ ıcio 65 Dado o trecho a seguir. u c Exemplo 1: enquanto A > 10 fa¸a c 2: comando 1. c ele vale para o la¸o mais interno.l.. ser´ executado o comando-2... 2 ou 3. 1. independente do estado da vari´vel A (e a do teste (A > 10). e for emitido um abandone. 3: enquanto (Y > 20) fa¸a c 4: comando 10 . escrito usando o comando para.. 2 ou 3. 8: fimenquanto 9: comando 20. desvia-se para o comando seguinte ao fimpara.71. repita ou para). este comando provoca um desvio incondicional para e o comando subseq¨ ente ao fim do la¸o. 1: inteiro i. 220 e 284 s˜o ”amigos”... independente de condi¸oes. ser´ executado o comando-1... ser´ executado o comando 20. 9: fimenquanto 10: comando 40...abandonar o processo iterativo em curso. quando dentro de um repita executa-se o seguinte a at´ .CAP´ ITULO 4. a A←0 enquanto A = 3 fa¸a c 3: A←A+1 4: escreva (A) 5: fimenquanto 1: 2: CAP´ ITULO 4. 10: .. Definir algoritmo que escreva os pares de n´meros amigos u existentes entre 1 e 500. 4: se B = 5 ent˜o a 5: abandone 6: fimse 7: comando 10.. ser´ executado o comando 40 e n˜o o a a comando 50 como poderia parecer a primeira vista. Por exemplo.1) e 284 ´ a soma dos fatores de 220 (110 e e 55 44 22 20 11 10 5 4 2 1). 5: se (Z = 8) ent˜o a 6: abandone 7: fimse 8: comando 30 . se a seq¨ˆncia for 1. a princ´ desconhecida. a4. e a Eis a resposta 1: inteiro fun¸˜o PROXPRIM (inteiro K) ca 2: enquanto 1=1 fa¸a c 3: se EPRIMO(K) ent˜o a 4: retorne K 5: abandone 6: fimse 7: K++ 8: fimenquanto 9: fimfun¸˜o ca Atente para a condi¸˜o terminadora do enquanto. de ca obter n´meros constru´ u ıdos segundo uma certa lei de forma¸˜o..3. consideraremos definida e operante a fun¸˜o EPca RIMO. a5. Suponha uma fun¸˜o u a ca l´gico ganhou (inteiro a1. duas hip´teses podem ser consideradas: a primeira o faz uma dupla leitura (uma fora e outra dentro do loop). calcule e devolva o pr´ximo n´mero primo x. a6) ent˜o a 6: escreva apostador 7: fimse 8: leia (a1.. ca experiˆncias passadas. ao estilo de Sherlock Holmes. a6.CAP´ ITULO 4. a4. mas a fun¸˜o ´ nitidamente menos limpa ca e e clara: 1: algoritmo SENA2 2: inteiro a1. ca e u Entretanto. 68 . a3. y e z. por que a lei de forma¸˜o ´ a dos n´meros naturais.. a2. a5.. Suponha tamb´m que a condi¸˜o de fim de dados ´ a e a e ca e leitura de a1 negativo. a2.4. a4. e o que ´ pedido.. 3375 . que devolve VERc o ca DADEIRO quando x ´ primo e FALSO sen˜o. ao final dos dados (quando for lido um n´mero negativo) o programa deve u 88-08. existem os 6 n´meros em que ele jogou e mais o u n´mero da aposta... 515 . usando intui¸˜o. 64 . outras seq¨ˆncias podem ser menos evidentes e conseq¨entemente mais ue u trabalhosas. a4. a2.2.. a5. com o seguinte cabe¸alho l´gico fun¸~o EPRIMO (inteiro x). muito comum em programa¸˜o. Pedro Kantek 99 88-08. u Por exemplo. a2. 1: algoritmo SENA 2: inteiro a1.. COMANDOS 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: CAP´ ITULO 4.. a5.000. apostador 3: a1 ← 1 {poderia ser qualquer valor maior que zero} 4: enquanto a1 > 0 fa¸a c 5: leia (a1.. S´ ca ıpio o se conhecem os primeiros n´meros de uma seq¨ˆncia deles. COMANDOS A segunda abordagem. 6: fimpara 7: escreva . y. ´ o resto dos u ue e e n´meros. Solu¸˜o Para resolver este exerc´ ca ıcio. a4. a3.6 e for pedido o pr´ximo n´mero.. quando o programa dar e u a mensagem “1203 ENCONTRADO” e terminar o processamento. a3. a6) ent˜o a 8: escreva apostador 9: fimse 10: fimse 11: fimenquanto 12: fim{algoritmo} retorne som fim{fun¸˜o} ca para i ← 1 to 500 fa¸a c escreva i para j← i to 500 fa¸a c m ← somf(i) n ← somf(j) se (m = j) ∧ (n = i) ent˜o a escreva (i.. a2. a3.. A leitura deve prosseguir at´ ser lido o n´mero 1203. que posteriormente identificar´ o apostador. apostador) 9: fimenquanto 10: fim{algoritmo} vers˜o de 10 de fevereiro de 2008 a Uma estrat´gia ´ pesquisar os poss´ e e ıveis valores de x... Para cada apostador.j) fimse fimpara fimpara Exerc´ ıcio Resolvido 4 Escreva uma fun¸˜o que receba um n´mero inteiro positivo ca u k. a6. qualquer condi¸˜o sempre verdadeira pode ser colocada a´ ca ı. a6. a5. a resposta ´ ue o u e 7.. a2. a6. apostador) 4: enquanto a1 > 0 fa¸a c 5: se ganhou (a1.. J´ que a sa´ se dar´ atrav´s do ca a ıda a e abandone.. a2. a2.5.. Uma segunda estrat´gia ´ usar da e e e informa¸˜o de que 2 ≥ x. z. a3. a5.. Vejamos alguns exemplos: 5 1 4 8 5 4 16 512 36 8 7 9 11 13 15 17 4 9 16 25 36 49 7 12 19 28 39 52 14 24 38 56 78 104 8 13 20 29 40 53 11 30 67 128 219 346 25 36 49 64 81 100 729 1000 1331 1728 2197 2744 144 324 576 900 1296 1764 64 216 512 1000 1728 2744 . 19 . 121 . faz apenas uma leitura.. ≤ 7 e adotar a for¸a bruta. a3. pistas. 134 . onde k ≤ x..000 de apose ca u tas na sena. a5. apostador 3: leia (a1. o u Solu¸˜o Para resolver este exerc´ ca ıcio. 8: fimpara 9: fimpara 10: fimpara Exerc´ ıcio 67 Escrever um algoritmo que leia uma s´rie indeterminada de n´meros e u positivos. fazendo ca c 1: para X de 2 at´ 7 fa¸a e c 2: para Y de 2 at´ 7 fa¸a e c 3: para Z de 2 at´ 7 fa¸a e c 4: para I de 1 at´ 10 fa¸a e c 5: escreva . Pedro Kantek 100 vers˜o de 10 de fevereiro de 2008 a . 4096 Exerc´ ıcio Resolvido 5 Vocˆ tem uma cole¸˜o seq¨encial de 10.. a3. Se este n´mero n˜o for u a encontrado. apostador) 6: se a1 > 0 ent˜o {pode ter chegado o negativo} a 7: se ganhou (a1. Exerc´ ıcio Resolvido 6 Seja agora a tarefa. a6. a4. a5. a4. a3. 2304 . a4. a6) que devolve VERDADEIRO se esta o aposta ´ vencedora e FALSO sen˜o. 67 . 06975647374 0. Quem tem 4. apesar de nenhum a deles o ser.. sen˜o.0348994967 0. Por raz˜es e o territoriais. os n´meros 17. Pedro Kantek Exerc´ ıcio 72 Qual ´ o 30ö n´mero primo ? e u Exerc´ ıcio 73 Escreva o algoritmo de uma fun¸˜o que receba um n´mero inteiro posica u tivo X e devolva o pr´ximo primo maior ou igual a X. Por exemplo.9925461516 .CAP´ ITULO 4. cada venda unit´ria. Escreva uma fun¸˜o que receba X e Y e devolva .F. resistˆncia (real). ganha 30. o que acontece com o algoritmo ? c Exerc´ ıcio 79 Um concurso de vendas ´ realizado dentro de uma empresa. u o onde xxx ´ o n´mero em quest˜o.6: fimenquanto Ao se encerrar este algoritmo quais os valores de X e Y ? O que acontece se se tirar o ”E”colocando em seu lugar ”OU” Exerc´ ıcio 76 Escreva algoritmo capaz de criar e imprimir uma tabela de ˆngulos.. a Exemplo ˆ ANGULO SENO COSSENO 0o 0 1 1o 0. Exerc´ ıcio 74 Dois inteiros positivos a e b s˜o relativamente primos se n˜o tiverem a a fatores comuns exceto 1. SP e RJ 4 bˆnus o MG. e escreva o e n´mero da partida e a nota do diamante. deve-se buscar a f´rmula do termo gen´rico. Fica: o e ıcil ca 12 + (n − 1) × 10 Tn = 2 × (n − 1) e sobretudo S= i=1 n Tn ou S= n i=1 12 + (n − 1) × 10 2 × (n − 1) Exerc´ ıcio 70 Suponha 1: 2: 3: X←2 Y←5 enquanto (X < 5) ∧ (Y < 3) fa¸a c 4: X++ 5: Y. com a mensagem ”xxx MAIS PROXIMO”. GO.08715574275 0.1218693434 0. 8.9986295348 o 4 0. empregados com menos de 3 dependentes podem faltar 5 dias. o n´mero de dependentes limita a quantidade de dias que um empregado pode ca u faltar anualmente. a Escrever um algoritmo que leia um conjunto de vari´veis formado por N´mero da partida a u (inteiro). e u e ıcio 12 22 32 + + + .400). Exerc´ ıcio 71 Seja 1: 2: 3: 4: 5: 6: A ← 56 B ← 10 enquanto (A+B) mod 14 = 0 fa¸a c A ← A + 10 B←A+2 fimenquanto quais os valores de A e B ao final ? Se A come¸ar com 52. e u a CAP´ ITULO 4. O n´mero de termos ´ lido ao in´ do algoritmo. ganha o grau e 40. MS e TO 3 bˆnus o BA e PE 2 bˆnus o demais estados n˜o citados 1 bˆnus a o 88-08. Sem esta o e f´rmula ´ dif´ programar a solu¸˜o. Os dados terminam quando for lida a partida u n´mero zero. 5 ou 6 dependentes pode faltar 8 dias. S= 1 2 4 Para resolver este tipo de exerc´ ıcio. Pedro Kantek 102 vers˜o de 10 de fevereiro de 2008 a .999390827 o 3 0.01745240644 0. e se n˜o passa em nenhum ganha o grau 15.9945218954 7o 0. percentagem de impurezas (real).9975640503 5o 0. senos a e cossenos. dureza (real). se passa apenas em um teste. ele ganha o grau 50. Numa organiza¸˜o. d´ direito a um bˆnus cujo valor depende do estado em que a a o foi feita a venda. e quem tem mais de 6 dependentes pode faltar 11 dias. a A prop´sito. A nota do diamante deve ser calculada por uma fun¸˜o.. COMANDOS ´ imprimir o n´mero lido mais pr´ximo de 1203. 12.773 e 14. Exerc´ ıcio 77 Definir um algoritmo que escreva a diferen¸a entre o 21. se eles forem primos relativos ca e . n´mero primo. como segue: a e Dureza maior do que 12 Percentagem de impurezas menor que 45 Resistˆncia ` tra¸˜o maior que 600 Kgf e a ca Se o diamante passa nos trˆs testes.. Escrever algoritmo que leia o n´mero de dependentes e escreva a quantidade u de dias que podem ser fruidos anualmente para cada caso.9998476952 2o 0. . O algoritmo deve imprimir o resultado ao c e final.1045284633 0. o vers˜o de 10 de fevereiro de 2008 a 101 88-08.V. COMANDOS Exerc´ ıcio 68 Defina um algoritmo capaz de somar os primeiros 50 n´meros m´ltiplos u u de 4. segundo a tabela: PR e SC d˜o direito a a 5 bˆnus o RS.05233595624 0.. Assim. para todos os ˆngulos de 0 a 90 graus. come¸ando no 4 (isto ´: 4. Se passa em dois. 4 e 25 s˜o relativamente primos.973 s˜o relativamente primos ? o u a Exerc´ ıcio 75 Diamantes s˜o classificados atrav´s de 3 testes distintos.. u Exerc´ ıcio 78 Resolver o seguinte problema usando o comando ESCOLHA. u ca Exerc´ ıcio 69 Escreva um algoritmo capaz de calcular e imprimir o valor da somat´ria o dada pela s´rie a seguir. n´mero primo c u e o 13.9961946981 o 6 0. Escrever um algoritmo que: 1. COMANDOS Definir algoritmo que receba uma s´rie de vendas no formato (valor. Se foi. dever ser vencedor o candidato mais velho. Pedro Kantek 104 vers˜o de 10 de fevereiro de 2008 a . Exerc´ ıcio 84 Escreva um algoritmo que leia uma sequ¨ncia de n´meros positivos (a e u leitura ´ um depois do outro. e rejeit´-lo a Calcular a m´dia entre os dois n´meros restantes e u Imprimir os dois n´meros selecionados e a m´dia. Suponha que numa elei¸˜o existem 3 candidatos e para apur´-la. Exerc´ ıcio 81 Existe um conjunto de muitos n´meros inteiros e positivos. quem a venceu. A entrada de dados termina quando for lido um voto igual a zero. for negativo. a ca a deveremos ler um conjunto indeterminado de votos (n´meros inteiros). este algoritmo deve eliminar a maior e a menor notas. deve-se imprimir os dois n´meros e o resultado obtido segundo as u regras acima. Verifique se a elei¸˜o foi v´lida ca a 2. 2=58 anos e 3=47 a anos. por restri¸˜o do problema n˜o se pode usar um vetor) com e ca a condi¸˜o de fim igual a leitura de um n´mero negativo e escreva o ultimo n´mero lidos que ca u ´ u tenha sido maior que 100. e a a seguir calcular e imprimir a m´dia entre as duas notas restantes. vers˜o de 10 de fevereiro de 2008 a 103 88-08. usando a regra: u 1 = voto no candidato n´mero 1 u 2 = voto no candidato n´mero 2 u 3 = voto no candidato n´mero 3 u 8 = voto em branco 9 = voto nulo. u e Exerc´ ıcio 82 Dados conjunto de 20 pares de n´meros. agrupados u trˆs a trˆs. O algoritmo deve calcular e imprimir a m´dia ca e dos n´meros lidos EXCLU´ u IDOS os zeros. COMANDOS Exerc´ ıcio 85 Calcular a soma total e o produto total de uma s´rie de n´meros inteiros e u e positivos que ser˜o fornecidos. u e A pesquisa termina quando o primeiro n´mero dos trˆs lidos. deve-se imprimir zero. Tal como na pr´tica. estado) e para cada e uma informe a quantidade de bˆnus de direito. Para cada conjunto lido. Pedro Kantek 88-08. eles devem ser somados Se ambos forem ´ ımpares. e Exerc´ ıcio 80 Definir um algoritmo que leia uma s´rie de n´meros inteiros e positivos e u (condi¸˜o de fim: leitura de um negativo). devem ser multiplicados Se um for par e outro ´ ımpar. CAP´ ITULO 4. Deve-se escrever um algoritmo capaz de: e e Ler os trˆs n´meros e u Identificar o maior deles. realizar sobre eles o seguinte u processamento: Se ambos forem pares. A s´rie termina quando for lido o n´mero -1. As idades s˜o: 1=55 anos. a e u Exerc´ ıcio 86 Escreva um algoritmo capaz de move atribu´ a atletas de gin´stica ıdas a ol´ ımpica. Caso ocorra um empate. Os dados terminam quando for lido um o estado igual a ’XX’ ou um valor de vendas negativo.CAP´ ITULO 4. Exerc´ ıcio 83 Uma elei¸˜o ´ anulada se a somat´ria de votos brancos e nulos ´ superior ca e o e ` metade dos votos totais. o 105 A seguir. Assim para seguir a tendˆncia moderna (que ´ guardar e e matriz da documenta¸ao em computador e n˜o em papel) o fluxograma resulta c˜ a incˆmodo. pelas c˜ ´ o a seguir expostas: Prestam-se mal ` programa¸ao estruturada. pois h´ um overhead muito grande.CAP´ ITULO 5. e boa parte do papel se perde. tamb´m conhecidos como mapas de CHAPIN ou estructogramas. e A id´ia destes diagramas ´ formatar em um retˆngulo todas as informa¸oes do proe e a c˜ cessamento usando marcas que identifiquem as diversas opera¸oes permitidas. S˜o necess´rias quantidades enormes de papel. a Exigem capricho. alguns exemplos de algoritmos feitos em um e noutro esquema Seja o seguinte algoritmo Algoritmo Calcular {a soma dos n´meros inteiros at´ 100} u e real SOMA inteiro NUMERO SOMA ← 0 NUMERO ← 1 enquanto {NUMERO < 101} 88-08. pois foi a e a o a primeira (e durante muito tempo unica) representa¸ao de programas e similares. Tem a c˜ vantagem sobre os fluxogramas de n˜o permitirem o desvio. a¸ao c˜ Y N verdadeiro. a¸ao 1 c˜ verdadeiro. afirmando tratar-se de pseudo-c´digo (no caso. NASSI-SCHNEIDERMAN Outra possibilidade de representa¸ao ´ atrav´s dos diagramas de NASSI & SHNEIDERc˜ e e MAN. Outros. ´ c˜ A seguir uma lista dos principais s´ ımbolos usados em fluxogramas Iniciador/terminador Processo Alternativa nome da entrada caminho cr´ ıtico condi¸ao a testar c˜ falso. a a a isto ´. a¸ao 2 c˜ comando a repetir condi¸ao de fim c˜ condi¸ao c˜ comando a executar item do caso Conector condi¸ao 1 c˜ comando a executar condi¸ao 2 c˜ comando 1 a executar comando 2 a executar condi¸ao 3 c˜ comando a executar Entrada/saída Fluxo de processamento sele¸ao c˜ caso 1 nome entrada 1 comando a executar nome entrada 2 comando cr´ ıtico a executar comando n˜o a cr´ ıtico a executar a atraso de 10seg sen˜o a¸oes do sen˜o c˜ a Fluxogramas perderam sua condi¸ao de unicas ferramentas. Tem importˆncia hist´rica na inform´tica. Os s´ a ımbolos usados s˜o: a nome da estrutura — objetivo comando inicial objetivo (nome do procedimento) Cap´ ıtulo 5 Nassi-Schneiderman Fluxos e Nassi-Schneiderman Al´m da maneira pela qual descreveremos nossos algoritmos (que ´ atrav´s do Portugol). Falaremos de mais duas: a primeira ´ a linguagem dos fluxogramas. PORa o TUGOL). entre outras raz˜es. eles n˜o s˜o muito pr´tia a a cos para este trabalho. Pedro Kantek 106 vers˜o de 10 de fevereiro de 2008 a . e e e existem outras formas de representar algoritmos. apenas escrito de outra maneira. Alguns autores e negam importˆncia a este trabalho. reconhecem for¸a e inova¸ao nesta c c˜ id´ia. e o Embora hoje j´ existam programas para fazer e guardar fluxos em computador a (como por exemplo o FLOWCHART e o AUTOFLOW). pois permitem a constru¸ao de algoa c˜ c˜ ritmos n˜o estruturados. s´ se escreve dentro dos quadrinhos. dando muito trabalho para serem feitos e mantidos. Pedro Kantek 88-08. o nome de todos os parˆmetros e vari´veis que o algoritmo manuseia. Obter o resultado correto Com os dados de entrada em m˜os. a mas precisa ser abrangente e incluir as condi¸oes que est˜o sendo testadas. Ent˜o. Quanto deste a funcionamento adequado pode ser generalizado para qualquer caso de testes fica em aberto. com a ponta cega de uma lapiseira. pois o caminho eventualmente errado pode n˜o ter sido seguido durante o chines. o chines ´ a execu¸ao manual. Se mal escolhidos n˜o v˜o certificar nada e s´ v˜o dar e a a o a trabalho. o algoritmo funcionou para este caso de teste. Como fazer isto. o programador segue cada um dos comandos escritos. Infelizmente. Pedro Kantek 108 vers˜o de 10 de fevereiro de 2008 a . a fim de que os valores que ir˜o sendo lan¸ados. Se ambos s˜o iguais. Mas. o chines costuma apontar onde e quando o algoritmo falha. NASSI-SCHNEIDERMAN SOMA ← SOMA + NUMERO NUMERO ← NUMERO + 1 fim{enquanto} imprima SOMA fim{algoritmo} calcular — soma os 100 primeiros n´ meros u real SOMA inteiro NUMERO SOMA ← 0 NUMERO ← 1 NUMERO < 101 SOMA ← SOMA + NUMERO NUMERO ← NUMERO + 1 imprima SOMA CAP´ ITULO 5.1 Chines Tamb´m conhecido como teste de mesa. Se houver a necessidade de uma pausa para vers˜o de 10 de fevereiro de 2008 a 107 88-08. se saiba qual resultado e ıvel c esperar. a ponta da lapiseira fica sobre o ponto de interrup¸ao. mas n˜o a garante de que o algoritmo esteja 100% correto. c a c caibam. Deve haver a a bastante espa¸o abaixo dos nomes.CAP´ ITULO 5. A tabela de valores c˜ das vari´veis vai sendo lida (consultada) e escrita (alterada) durante o chines a Decis˜o Quando o algoritmo e o chines terminam. Raras vezes ´ no processo manual de obten¸ao do resultado. ´ atrav´s do chines que o autor do algoritmo e e se certifica de que ele funciona. mas quando e c˜ isso ocorre o algoritmo pode estar certo e ´ o resultado obtido que est´ errado. acima calculado. o programador a precisa obter o resultado esperado que estes dados v˜o gerar. um resultado ´ obtido. E hora de procurar o erro e refazer e a todo o ciclo. ´ o algoritmo que est´ errado. passo a passo. mas ´ imprescind´ que antes de come¸ar o chines. a e a ele ´ comparado com o resultado esperado. s˜o: a Obter uma massa de dados significativa O conjunto a testar n˜o deve ser extenso. um erro e aconteceu. Listar os parˆmetros e vari´veis Deve-se providenciar no alto de uma folha de a a papel. Exerc´ ıcio 87 Fa¸a um chines com o algoritmo a seguir: c inteiro fun¸˜o CALCU (inteiro A. NASSI-SCHNEIDERMAN raciocinar. na e a ´ maioria das vezes. varia de a caso a caso. Se for diferente. Em geral. de e e c˜ um algoritmo pelo programador. B) ca se A ≥ B ent˜o a devolva A 4: sen˜o a 5: devolva B 6: fimse 1: 2: 3: 5. Seguir o algoritmo Em geral. Escolher bem c˜ a os dados a testar ´ uma arte. a As regras a seguir para um proveitoso chines. Ela sempre precisa ca c˜ e a o c˜ receber seus dados (atrav´s de uma lista de parˆmetros) e devolver um resultado a quem e a a chamou. A presen¸a (opcional) da palavra-chave var indica pasc sagem de parˆmetros por referˆncia. caracter. nem blocos (como { e {) nem goto a a todas as palavras reservadas n˜o tem acentos ou cedilha a n˜o h´ separa¸ao entre mai´ sculas e min´ sculas nos comandos ou vari´veis a a c˜ u u a o limite de vari´veis ´ de 500 (cada item de vetor conta como 1 vari´vel) a e a o ponto decimal ´ o ponto e valores caractere est˜o entre aspas duplas a O s´ ımbolo de atribui¸ao ´ <-.CAP´ ITULO 6. real. retorne . B:real) : inteiro 2: var 3: inicio 4: retorne (N * 2) 5: fimfuncao O <nome-de-fun¸ao> obedece as mesmas regras de nomenclatura das vari´veis. que recebe um unico n´mero inteiro e devolve c˜ ´ u outro n´ mero inteiro.com. a o c˜ Nomes Ao construir algoritmos ´ necess´rio dar nomes a muitas coisas. Na verdade s˜o dois s´ c˜ e a ımbolos Existe recursividade Em visualg. Em Visualg s˜o colocadas imediatamente antes da palavra inicio do bloco a a que se referem. a o 88-08. Pedro Kantek 6.. sendo os dois c˜ a primeiros inteiros e o terceiro real. valem as regras: ´ Algoritmo E a unidade b´sica de escrita de algoritmos. C : real) : real Definiu-se uma fun¸ao de nome CALC22. u 1: funcao EXA (var X : inteiro) A fun¸ao EXA recebe um parˆmetro inteiro. Cap´ ıtulo 6 Visualg O VISUALG ´ um programa que auxilia o aprendizado de algoritmos na medida em e que permite a entrada e execu¸ao de um algoritmo escrito em portugol.. B : inteiro. Escrito pela empresa Apoio. A regra de e a constru¸ao de nomes ´ c˜ e Uma unica palavra ´ Composta de letras e n´ meros u Come¸ando com uma letra c Escrita em mai´ sculo u Tipos Os tipos poss´ ıveis s˜o 4: inteiro.). A. ou seja o que a fun¸ao modificar na vari´vel X e e c˜ a permanecer´ modificado ap´s o retorno da fun¸ao EXA. eis alguns cabe¸alhos de fun¸oes c c˜ 1: funcao CALC22 (A. 7: fimfuncao Exemplo 1: funcao ”teste”(N : inteiro... a e a a Por exemplo. caso contr´rio. a passagem ser´ por valor. VISUALG Fun¸˜o A fun¸ao ´ uma unidade n˜o autˆnoma de programa¸ao.apoioinformatica. Por c˜ a outro lado. Formato 1: funcao <nome>( <parametros>) : <tipo-resultado> 2: var a 3: vari´veis locais 4: inicio 5: comandos 6: . l´gico. a fun¸ao entra aqui c˜ 5: inicio 6: comandos 7: fimalgoritmo exemplo 1: algoritmo ”teste” 2: var 3: N : inteiro 4: inicio 5: leia (N) 6: escreva (N * 2) 7: fimalgoritmo Coment´rios s˜o caracterizados por come¸ar por \\. a <seq¨ˆncia-de-declara¸oes-de-parˆmetros> ´ uma seq¨ˆncia de ue c˜ a e ue [var] <seq¨ˆncia-de-parˆmetros>: <tipo-de-dado> ue a separadas por ponto e v´ ırgula.br. conforme aqui c˜ descrito. A presen¸a da palavra var implica c˜ a c em que a passagem ´ por referˆncia. A fun¸ao devolve um resultado real. que recebe 3 parˆmetros. c˜ 1: funcao EQA6 (X : inteiro) : inteiro Definiu-se uma fun¸ao de nome EQA6. a formato 1: algoritmo <nome> 2: var a 3: vari´veis 4: — se houver.1 Regras de Visualg cada comando de visualg deve estar em uma linha n˜o h´ separadores (. a a c 109 110 vers˜o de 10 de fevereiro de 2008 a . pode ser obtido em www. e tan Vetor Um vetor (ou matriz) ´ definido. enquanto.e) grauprad(a:real):real int(a:real):inteiro log(a:real):real logn(a:real):real maiusc(c:caracter):caracter minusc(c:caracter):caracter a mod b numpcarac(n:inteiro real):caracter pi:real pos(subc..fimpara. a a formato leia (<lista de vari´veis >) a exemplo leia (A) Escreva Serve para produzir um dado como resposta do algoritmo. abs(-3 e 3 xxx pode ser cos.fimenquanto. Pedro Kantek 111 88-08. formato escreva (<lista de vari´veis >) a exemplo escreva (”o valor procurado e ”.8] de inteiro Comandos Os comandos em pseudo-c´digo s˜o poucos < − (recebe).CAP´ ITULO 6. As vari´veis a citadas no comando j´ ter˜o que ter sido devidamente atribu´ a a ıdas. dois pontos (:) a palavra e vetor e as especifica¸oes de repeti¸ao. escrevendo-se o nome.B.cos.Y..3<>3 ´ FALSO e dos s˜o diferentes e FALSO sen˜o a a Maior (>) Em A > B devolve VERDADEIRO se 3>4 ´ FALSO e A ´ maior do que B e Menor (>) Em A < B devolve VERDADEIRO se 3<4 ´ VERDADEIRO e A ´ menor do que B e Maior ou igual (>=) Em A >= B devolve VERDADEIRO 3>=3 ´ VERDADEIRO e se A ´ maior ou igual do que B e Menor ou igual (<=) Em A <= B devolve VERDADEIRO 3<=3 ´ VERDADEIRO e se A ´ menor ou igual do que B e 88-08. variando entre u −∞ e +∞ qualquer n´ mero inteiro ou n˜o inteiro u a uma cadeia somente pode conter os valores VERDADEIRO e FALSO Exemplo inteiro A A..3=3 ´ VERDADEIRO e dos s˜o iguais e FALSO sen˜o a a Diferente (<>) devolve VERDADEIRO se seus operan. ´ e vers˜o de 10 de fevereiro de 2008 a Express˜o Relacional Qualquer combina¸ao compat´ a c˜ ıvel de rela¸oes que acabem c˜ gerando um unico resultado l´gico. escreva.cotan Exemplo A+3 A/2. subtra¸ao (−). divis˜o real (/) c˜ a divis˜o inteira (barra ao contr´rio) a a resto (percentagem) abs(a:real):real arcxxxx(a:real):real asc(s:caracter):inteiro carac(c:inteiro):caracter caracpnum(c:caracter):inteiro real compr(c:caracter):inteiro copia(c:caracter..C : inteiro A : real X..Z : real A : caracter // o tamanho n˜o ´ expl´ a e ıcito A : logico Formato adi¸ao (+).at´. pode-se especificar var:tamanho:decimais.x) Para vari´veis num´ricas. ´ o Formato O que faz Exemplo Igual (=) devolve VERDADEIRO se seus operan.fim] [inicio.fim] . e Leia Serve para introduzir um dado externo para dentro do algoritmo. a u formato <vari´vel> < − <vari´vel> OU a a <vari´vel> < − <constante> OU a <vari´vel> < − <express˜o> a a exemplo A<−B B < − ”CURITIBA” C < − A + 23 Express˜o Num´rica Qualquer combina¸ao compat´ de fun¸oes que acabem gerando a e c˜ ıvel c˜ um unico resultado num´rico. Pedro Kantek 112 vers˜o de 10 de fevereiro de 2008 a . p. para.fimse.. multiplic˜ c˜ ca¸ao (∗). repita. o a se. VISUALG Tipo inteiro real caracter logico Conte´ do u qualquer n´ mero inteiro. VISUALG O que faz o usual da aritm´tica e s´ usa inteiros o o resto da divis˜o inteira a o valor absoluto de a arco xxx converte o caracter s em inteiro converte o byte c em caracter ou deve ser o comprimento do string copia um substring funcao trigonometrica divisao inteira de a po b eleva a base ao expoente converte graus em radianos converte real em inteiro logaritmo base 10 logaritmo base e converte para maiuscula converte para minuscula resto da divisao inteira de a por b converte numerica a caracter devolve o valor de pi devolve a posicao de subc em c devolve o quadrado de a converte radiano para grau devolve a raiz quadrada xxx pode sen..... de <tipo> Exemplo AAA : vetor [1.tan.10] de real BBB : vetor [0. retorne e abandone.n:inteiro):caracter xxx(a:real):real a div b exp(b.. Veja nos exemplos: c˜ c˜ Formato <nome> : vetor [inicio. As vari´veis a citadas no comando j´ ter˜o que ter sido definidas e tipadas.5 5\2 ´ 2 e 5%2 ´ 1 e abs(3) ´ 3. a e < − Este comando permite inicializar uma vari´vel ou alterar-lhe o conte´ do. leia.c:caracter):inteiro quad(a:real):real radpgrau(a:real):real raizq(a:real):real ou CAP´ ITULO 6..4] [1.... .R: inteiro 88-08. ate < condi¸ao > c˜ Ou N˜o (NAO) a Se Este comando ´ denominado alternativo..CAP´ ITULO 6. e c˜ c No in´ ıcio a vari´vel citada no comando ´ inicializada com <constante1>. ıcio c˜ e exemplo A<−5 enquanto A <= 9 faca escreva (A) A<−A+3 fimenquanto ser˜o impressos os valores 5 e 8. Se a condi¸ao for verdadeira os comando internos ao c˜ enquanto s˜o executados. Ao contr´rio do ”C”. fimpara ser˜o impressos os valores 3. c˜ formato se <condi¸ao> entao c˜ comando1 comando2 . devolve VERDADEIRO se A e B s˜o verdadeiros e devolve FALSO a sen˜o a Em A OU B.. a condi¸ao ´ avaliada.. Pedro Kantek 114 vers˜o de 10 de fevereiro de 2008 a ..2 Exemplos de Visualg Exemplo 1 Repita Este comando tamb´m permite a realiza¸ao de la¸os (loops) dentro de prograe c˜ c mas. raz˜o pela qual no a a a formato eles aparecem entre colchetes. ele vale 1. o teste ´ com ≥).. (Se o passo ´ negativo. Os comandos entre ent~o e sen~o ou fim{se} a a (se n˜o houver sen˜o) ser˜o executados apenas se a condi¸ao do comando for verdadeira. pois permite escolher caminhos da proe grama¸ao dependendo de uma condi¸ao (express˜o l´gica). o ´ o Formato E O que faz Em A E B. a Retorne Usado exclusivamente dentro de fun¸oes. algoritmo "primos" var J. a e formato para <var> de <constante1> ate <constante2> [passo <constante3>] exemplo fa¸a c para K de 3 ate 8 passo 2 faca comando1 escreva (A) comando2 fimpara . 5 e 7. Quando o e a passo n˜o ´ explicito. a formato retorne < express˜o compat´ > a ıvel formato enquanto < condi¸ao > faca c˜ comando1 comando2 . VISUALG Express˜o L´gica Qualquer combina¸ao compat´ de express˜es relacionais e/ou a o c˜ ıvel o l´gicas que acabem gerando um unico resultado l´gico. c˜ c˜ exemplo se A > 5 entao retorne A fimpara Enquanto Este comando permite a realiza¸ao de la¸os (loops) dentro de programas. a variavel ´ testada para ≤ c˜ a e e <constante2>. h´ um desvio para o coc c˜ e a mando seguinte ao fim{enquanto}. Se ela for falsa. n˜o necessariamente encerra c˜ a a a execu¸ao da fun¸ao. Depois ´ a e e feita a condi¸ao.K. c˜ c Come¸ando o comando. Note que o trecho entre c˜ c˜ a o sen~o e o comando imediatamente anterior a fim{se} s˜o opcionais. a a a c˜ Se houver comandos entre sen~o e fim{se} os mesmos ser˜o executados apenas se a a a condi¸ao for falsa. Se o passo est´ ausente ou ´ positivo. a vari´vel ´ incrementada (ou a a e decrementada se o passo ´ negativo) e depois h´ um retorno ao teste inicial.. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 113 88-08.. VISUALG exemplo A<−5 repita escreva (A) A<−A+3 ate A > 9 ser˜o impressos os valores 5 e 8. a formato repita comando1 comando2 . Ao se encontrar o fim{enquanto} h´ um desvio incondicional a a ao in´ do enquanto e a condi¸ao inicial ´ reavaliada. tem a finalidade de devolver um c˜ resultado a quem chamou esta fun¸ao. senao comando11 comando12 fimse exemplo se A >= 4 entao B<−B+1 C<−C+D+A X<−0 senao escreva (N * 2) Y<−0 fimse Para Este comando tamb´m permite a realiza¸ao de la¸os (loops) dentro de programas. Se o resultado ´ VERDADEIRO e e e os comandos internos s˜o executados. devolve VERDADEIRO se A ou B ou ambos s˜o VERa DADEIRO e devolve FALSO sen˜o a Inverte o valor l´gico do operando o Exemplo VERDADEIRO E VERDADEIRO ´ VERDADEIRO e Todas as outras combina¸oes d˜o c˜ a FALSO FALSO OU FALSO ´ FALSO Toe das as outras combina¸oes d˜o c˜ a VERDADEIRO NAO VERDADEIRO ´ FALSO e e NAO FALSO ´ VERDADEIRO e CAP´ ITULO 6.txt” timer on / timer off pausa debug eco cronˆmetro o 6. fimenquanto Outros Comandos aleatorio arquivo <nome-de-arquivo> algoritmo ”lendo do arquivo”arquivo ”teste. Ao final deles. Isto nos d´ uma id´ia a e y de algoritmo: Chute um valor g para y e teste-o. x > 0. Pedro Kantek 115 116 vers˜o de 10 de fevereiro de 2008 a . VISUALG CAP´ ITULO 6.2 B <.B:inteiro inicio A <." palitos") se (N<=0) entao escreva ("por incrivel que pareca.. e a Se o processo estiver funcionando adequadamente. calcular a raiz quadrada dele." palitos") se (N<=0) entao escreval("burrao. escreve-se a fun¸ao teste e fica c˜ 88-08.B + 1 fimse A <. Ou reescrevendo.J.1 enquanto B <= N faca se EPRIMO(A) entao B <..") interrompa fimse fimenquanto fimalgoritmo funcao QP(N: inteiro): inteiro var A. Pedro Kantek 88-08.. tem-se que y ´ a raiz a e quadrada de x se e somente se y 2 = x. u Pensando sobre o que j´ aprendemos sobre a raiz quadrada de x.N. y = x .TV:inteiro inicio N<-0 enquanto ((N<20) ou (N>30)) faca escreval ("com quanto comecamos ?") leia (N) fimenquanto enquanto (N>0) faca SEQ <.0 DI <. ") interrompa fimse TV<-0 enquanto ((TV<1) ou (TV>3)) faca escreval ("jogue") leia (TV) fimenquanto N <.. sen˜o tente com um chute melhor.DI:inteiro inicio QT <.DI + 1 fimenquanto retorne QT = 0 fimfuncao inicio leia (J.SEQ) fimenquanto J<-4+(N-SEQ) se (J=0) entao J<-1 fimse escreval ("eu joguei "...TV escreval("existem ". VISUALG SEQ <.K) R <.QT + 1 fimse DI <. eu ganhei.SEQ. retorne g.1 Criando uma raiz quadrada Suponha que o VisualG n˜o tem a fun¸ao “raiz quadrada”.CAP´ ITULO 6. Calcule Se x g x g ´ suficientemente perto de g.1 enquanto ((N-SEQ)>=0) faca vers˜o de 10 de fevereiro de 2008 a 6..SEQ + 4 // escreval ("depuracao..2 enquanto DI < M faca se M % DI = 0 entao QT<.1) fimfuncao A seguir..J) N<-N-J escreval ("Existem ". N=". perdi.1 fimfuncao funcao EPRIMO(M: inteiro): logico var QT.QP(K)-QP(J) escreva (R) escreva (QP(K)) escreva (QP(J)) fimalgoritmo Exemplo 2 algoritmo "palito" var N. Com isso a fun¸ao sqrt u a c˜ em VisualG fica funcao sqrt(N:real):real retorne teste(N. ent˜o vai-se padronizar o primeiro chute como sendo 1.. o chute inicial poder´ ser qualquer a n´ mero.A + 1 fimenquanto retorne A .2.N. Como poder´ a c˜ ıamos construir uma ? Eis uma poss´ formula¸ao ıvel c˜ Dado um n´ mero real x.N." SEQ=".N . em f (x) = xn − w procura-se encontrar o valor de x quando f (x) = 0.2. dada f (x) como descobrir onde a fun¸ao c˜ corta o eixo x?. dados w e n quaisquer. onde a curva corta o eixo dos x.2 Achando ra´ ızes por Newton-Raphson Agora o algoritmo ´ para achar ra´ n-´simas. a o vers˜o de 10 de fevereiro de 2008 a 117 88-08. melhor e perto. SEM A PARTE FINAL do mesmo. isolamento e corre¸˜o de erros.g-(f(w. VISUALG funcao fprime(g:real.n:inteiro):real inicio retorne acharn(w. imagina-se um chute c˜ a c˜ original g (no eixo x) e f (g) no eixo y. c˜ ca Ali´s. n˜o ´ a maior nem a principal parte.g) entao retorne novo senao retorne acharn (w.n) fimfuncao funcao acharn(w.1.CAP´ ITULO 6. e Eis o desenvolvimento.n:inteiro):real var novo:real inicio 6. E. em essˆncia. isto ´. os alunos ser˜o divididos em 4 grupos. para achar a raiz n do valor w funcao raiz(w:real. e Em outras palavras e mais genericamente.n)) // escreval(w. S´ que nesta segunda parte.g:real.n) / fprime(g. e depurar ´ ao contr´rio. Para isto.01) fimfuncao 6. Para poder resolver este problema far-se-˜o 3 hip´teses: a o a fun¸ao cruza o eixo x apenas em um lugar c˜ a fun¸ao ´ cont´ c˜ e ınua.G) entao retorne G senao retorne teste(X. O grupo a ter´ entre 5 e 10 minutos para contar a hist´ria e toda a turma ser´ convidada a descobrir a o a o que aonteceu.2. conspiram contra a atividade: o o ru´ ambiente ıdo o fato do programa poder ter sido feito por outro a press˜o do tempo e do $. Pedro Kantek 118 vers˜o de 10 de fevereiro de 2008 a .G:real):real inicio retorne (G+(X/G))/2 //a media entre G e X/G fimfuncao funcao perto(A. Entende-se por c˜ e depura¸ao a arte da descoberta. Este. o que se e ızes e √ pretende agora ´ achar n w.n. O c˜ a e que toma tempo e preocupa¸ao ´ a atividade de depurar os programas. melhor(X.g:real. deve-se procurar x tal que xn = w. VISUALG funcao teste(X.G) se perto((X/G). vale dizer ´ diferenci´vel e a a derivada no intervalo ´ sempre positiva ou sempre negativa e Supondo uma fun¸ao qualquer (sujeita `s restri¸oes acima).001) > abs(A-B) fimfuncao novo <. Pedro Kantek 88-08.n) fimse fimfuncao funcao f(w.B:real):logico inicio retorne (B*0.n:inteiro):real inicio retorne n * (g^(n-1)) fimfuncao funcao perton(a. c˜ a programa¸ao ocupa apenas uma parte. Programar ´ ir das causas para o resultado. ir do resultado e e a para as causas.G)) fimse fimfuncao Sobram 2 fun¸oes. Reescrevendo e xn − w = 0. Portanto. Calculando a derivada no ponto g e verificando onde esta derivada (que nada mais ´ do que a inclina¸ao da curva no ponto g) cruza o e c˜ eixo x obtem-se um novo e melhor chute para a raiz procurada. Depois deste prazo.novo) se perton(novo. Ei-las: c˜ funcao melhor(X.g.g. o professor contar´ o final da hist´ria. a Exerc´ ıcio 88 Na v´spera desta aula. mas aquele que – em os cometendo – localiza-os e corrige-os com rapidez.b:real):logico inicio retorne abs(a-b) < abs(b * 0.n:inteiro):real inicio retorne (g^n)-w fimfuncao CAP´ ITULO 6. Ou seja.G:real):real inicio escreval(X.3 Depura¸˜o de algoritmos ca Na atividade profissional ou amadora da constru¸ao de programas eficientes e eficazes.novo. ´ o e e m´todo de Newton. A cada e a grupo ser´ dado um conto de Sherlock Holmes. o programador mais talentoso n˜o ´ o que comete poucos ou nenhum erro a a e (imposs´ ıvel). Tanto isto ´ verdade. Identicamente n˜o ´ necess´rio imprimir resultados bastando c c˜ a e a retorn´-los (a quem chamou a fun¸ao). Os dados n˜o precisam c˜ e a ser obtidos do exterior. que a grande vantagem do paradigma funcional de prograe ma¸ao ´ n˜o ter vari´vis globais.. a c˜ Acompanhe um mesmo problema resolvido dos dois jeitos. O bloco se encerra pela especifica¸ao c˜ fimalgoritmo Entre estas duas constantes. c˜ a c˜ e a logo ´ opcional. o uso da palavra fun¸˜o ´ ligeiramente diferca c˜ ca e ente do uso similar na matem´tica. ambos os resultados acima s˜o equivaa lentes. Esta defini¸ao ´ mais simples do que a do algoritmo completo.. que poderia ter o seguinte aspecto: algoritmo T2 real A B leia A B escreva MEDIA (A. A especifica¸ao do cabe¸alho de uma fun¸ao c˜ c c˜ ser´ a 1: fun¸ao <nome> ([var] <lista-vars> : <tipo> [.1. a 88-08. MODULARIZACAO: FUNCOES ¸˜ ¸˜ fimfun¸~o ca A parte de defini¸ao de vari´veis locais em uma fun¸ao nem sempre ´ necess´ria. Pedro Kantek 120 vers˜o de 10 de fevereiro de 2008 a . Eles devem aparecer nesta ordem: primeiro a defini¸ao de vari´veis e depois os a c˜ a procedimentos. Deve-se definir e usar c˜ c˜ uma fun¸ao sempre que: c˜ Um processamento espec´ ıfico tiver que ser feito em diversos locais do algoritmo Um processamento for complexo e auto-contido Outros algoritmos possam vir a usar este mesmo processamento Como uma fun¸˜o Em computa¸ao. teria e c˜ c˜ que escrever o programa chamador.. Este algoritmo ´ por um cabe¸alho reconhecido pela palavra constante e c algoritmo <nome> Note que a especifica¸ao <nome> deve ser substitu´ por um nome que identifique este c˜ ıda algoritmo. o uso da palavra fun¸ao indicar´ um sub-programa separado do programa c˜ a principal que computa alguns valores. Entretanto. mas se presente deve aparecer logo ap´s o cabe¸alho da fun¸ao e antes e o c c˜ dos procedimentos. Uma dificuldade aqui ´ a necessidade de obter os dados do algoritmo do meio ame biente (possivelmente fazendo uma opera¸ao de leitura) e gerar os dados de sa´ para c˜ ıda serem aproveitados. capaz de ser facilmente traduzido em um programa completo e auto-suficiente capaz de ser rodado em computador gerando resultados ao instante. usualmente atrav´s de uma opera¸ao de impress˜o. embora os 2 conceitos tenham muitas similaria dades. ´ definindo um c´digo come o pleto. Se houver a palavra var no in´ a passagem ser´ por ıcio a ˆ referEncia e sen˜o por valor a <tipo> tipo das vari´veis da lista anterior a . E.]) : <tipo-resultado> c˜ Com a seguinte regra de leitura: <nome> tal como no algoritmo. esta ultima tamb´m enxergar´ as c˜ c˜ ´ e a variaveis definidas pelo programa.CAP´ ITULO 7.1 Vari´veis globais e locais a Uma vari´vel global existe desde que ´ criada e pode ser consultada e alterada por a e qualquer algoritmo ou fun¸ao que rode enquanto ela existe. se algu´m quisesse testar a segunda implementa¸ao (a fun¸ao). deve ser escrito o bloco do algoritmo que sempre ser´ a formado por 2 componentes: a descri¸ao de vari´veis e os procedimentos que o algoritmo c˜ a far´. aquelas a c˜ vari´veis que o programa definiu s˜o consideradas como globais pela fun¸ao chamada. identifica um nome unico ´ <lista-vars> uma seq¨ˆncia de nomes de vari´veis separadas por v´ ue a ırgulas. Quando um programa define vari´veis e em seguida chama uma fun¸ao. B : real) : real c˜ real A B M retorne (A + B) / 2 leia A B fimfun¸ao c˜ M←A+B/2 escreva M fimalgoritmo Do ponto de vista da disciplina de algoritmos. Seja escrever um algoritmo que calcule a m´dia entre dois n´ meros e u como algoritmo como fun¸ao c˜ algoritmo MEDIA fun¸ao MEDIA (A. como sendo vari´veis globais. A primeira. Dito de outra maneira. Pode ser um dos 5 tipos o a a conhecidos at´ agora e A fun¸ao de encerra pela especifica¸ao c˜ c˜ 119 etc Cap´ ıtulo 7 Modulariza¸˜o: fun¸˜es ca co 7. auto-suficiente. com isto ele acaba gerando programas que tˆm uma c˜ e a a e quantidade inacreditavelmente menor de erros. Aqui. a a c˜ Se esta primeira fun¸ao chamar uma segunda fun¸ao. eles ser˜o entregues a fun¸ao simplesmente por referenci´-los a ` c˜ a no cabe¸alho da fun¸ao. pois elas s˜o respons´veis a a a por um dos maiores eventos causadores de erros em programas. e c˜ a 7. separador em as listas de vari´veis (Se mais de uma houver) a <tipo-resultado> especifica qual o tipo que ser´ devolvido por esta fun¸ao a c˜ ap´s os c´lculos que realizar´. B) fimalgoritmo O conceito de fun¸ao permite a modulariza¸ao dos algoritmos. c˜ todas as fun¸oes subalternas que forem chamadas ap´s a cria¸ao da vari´vel global a c˜ o c˜ a enxergar˜o e poder˜o modific´-la.1 Fun¸˜es co Existem 2 maneiras de definir um algoritmo. a a a O uso de vari´veis globais deve ser fortemente reprimido. o chamado efeito colateral. chamado ”retorne”. Por exemplo. O c˜ tipo deste resultado deve ser igual aquele especificado depois da palavra ”fun¸ao”. Entretanto se esta primeira a a fun¸ao chamar uma segunda. Mas. N) 2: retorne PRIMO(M) .PRIMO(N) 3: fimfun¸˜o ca Exerc´ ıcio Resolvido 7 Um exemplo de algoritmo Escreva uma fun¸˜o que receba ca 2 n´meros inteiros. A especifica¸ao dos parˆmetros nada mais ´ do que uma defini¸ao de todas as varc˜ a e c˜ i´veis que existem na lista-de-parˆmetros. tanto quanto poss´ ıvel. qual o valor calculado por ela. a c˜ A fun¸ao pode ter suas pr´prias vari´veis internas. 12: fimalgoritmo Aninhamento de Fun¸oes Quando existe uma fun¸ao dentro de outra. Em resumo... se X = 10 e Y = 8 a fun¸˜o dever´ devolver 6.. que significa a c˜ e devolver para o algoritmo que chamou esta fun¸ao. J´ as vari´veis c˜ a c˜ a a da fun¸ao interna s˜o locais a ela e s˜o desconhecidas pela fun¸ao externa. a regra de alcance das vari´veis ´: uma vari´vel definida em um local a e a ´ global para todas as fun¸oes chamadas a seguir. Por exemplo: 1: algoritmo ALFA 2: var 3: A.1 12: fimfun¸˜o ca Diferen¸a entre 2 n´meros primos: c u Entrada: dois inteiros M e N Sa´ ıda: a diferen¸a entre o m-´simo e o n-´simo n´meros primos c e e u 1: inteiro EXEMPLO1 (inteiro M. QT 3: QT ← 0 4: DV ← 2 5: enquanto (DV ≤ (X div 2)) fa¸a c 6: se X mod DV = 0 ent˜o a 7: QT++ vers˜o de 10 de fevereiro de 2008 a 121 88-08. (X ( Y) e devolva a diferen¸a entre o X-´simo e o Y-´simo u c e e n´meros primos. 9: fimfuncao {funcao BETA} 10: inicio 11: . Pedro Kantek 122 vers˜o de 10 de fevereiro de 2008 a . mas n˜o ´ enxergada pelas fun¸oes e c˜ a e c˜ chamadas previamente.17 = 6 u e e Verifica¸˜o se um n´mero ´ primo: ca u e Entrada: um inteiro X qualquer Sa´ ıda: . QTD 3: QTD ← 1 4: Z ← 1 5: enquanto (Z ≤ K) fa¸a c 6: se EPRIMO(QTD) ent˜o a 7: Z++ 8: fimse 9: QTD++ 10: fimenquanto 11: retorne QTD .V. D : inteiro) : inteiro 5: var 6: E : inteiro 7: inicio 8: . e a global deixa de poder ser acessada (Embora c˜ continue existindo normalmente).F. Existe um comando. sendo uma local a e outra global).CAP´ ITULO 7.. sen˜o a 1: l´gico fun¸˜o EPRIMO (inteiro X) o ca 2: inteiro DV. se X for primo e . tamb´m opcional. c˜ a a c˜ Quando existe conflito de nomes (duas vari´veis com mesmo nome. pois o 10ö u ca a n´mero primo ´ 23 e o 8ö ´ 17 e 23 . as vari´veis definidas como locais dentro da primeira fun¸ao c˜ a c˜ passam a ser globais e s˜o enxergadas pela segunda fun¸ao. as vari´veis c˜ c˜ a da fun¸ao externa s˜o locais para ela e globais para as fun¸oes internas. tamb´m conhecidas como vari´veis c˜ o a e a locais ` fun¸ao. X e Y. B : inteiro 4: funcao BETA (C. MODULARIZACAO: FUNCOES ¸˜ ¸˜ J´ a vari´vel local a uma fun¸ao ´ definida dentro da fun¸ao e quando esta fun¸ao a a c˜ e c˜ c˜ se encerrar o programa original n˜o ter´ mais acesso a elas. Pedro Kantek 88-08. este ´ um procedimento que deve ser evitado e pelo programador. MODULARIZACAO: FUNCOES ¸˜ ¸˜ Entrada: um inteiro K qualquer Sa´ ıda: o k-´simo numero primo e 1: inteiro fun¸˜o PRIMO (inteiro K) ca 2: inteiro Z. a a fimse DV++ 10: fimenquanto 11: retorne QT = 0 12: fimfun¸˜o ca Localiza¸˜o do n-´simo primo: ca e 8: 9: CAP´ ITULO 7. vale a defini¸ao local. c˜ Toda fun¸ao usada dentro de um programa deve ter sido definida antes de ser c˜ chamada. . V[1] ´ 20. VETORES E MATRIZES Esta especifica¸ao indica m´ ltiplas ocorrˆncias de uma vari´vel em uma unica dic˜ u e a ´ mens˜o a <nome> : vetor [inicio.. O vetor V tem 5 inteiros. A solu¸ao para resolver este e in´ meros problee c˜ u mas similares.9 10 11 11. (Lembrar que um inteiro ´ um e e real tamb´m. . . e e e O´ ındice em um vetor tem que obrigatoriamente ser: 1. 2. mas ´ t˜o comum que acaba sendo um tipo fundamental. . permitir o c´lculo da m´dia.. e que ser˜o acessadas pelo seu deslocamento dentro a a do vetor. uma cadeia). mas nunca algo diferente de 0 ou 1. criar´ a c˜ ıamos uma unica ´ vari´vel de nome SALAR.1 Defini¸˜o de Vetor ca Na cria¸ao de vetores .60] de real Exerc´ ıcio Resolvido 10 Podemos ter um vetor para guardar as popula¸oes brasileiras. Azares de quem tem um a universo limitado de caracteres a utilizar para escrever seus algoritmos.9] de caracter ou cadeia X {no segundo caso o tamanho ´ impl´ e ıcito} X ← “ABCDEFGHI”. seja para obtˆ-lo (leitura) e e seja para alter´-lo (escrita).. j´ que s˜o todas iguais.. necessitando de completas estruturas de defini¸ao de dados.1 Origem dos ´ ındices 8. c˜ A caracter´ ıstica principal do vetor . a ˆ Um vetor ´ uma cole¸ao HOMOGENEA de coisas. V[1] ´ 10..2 13 19. c Nenhuma das duas alternativas ´ conceitualmente correta. C++..31] de real Vetores e Matrizes Se partirmos da premissa que algoritmos sozinhos s˜o incapazes de ajudar a resolver a problemas.. Quando a origem ´ zero. dado um valor de ´ ındice. ao usar a solu¸ao de vetores. c˜ ano a ano. e c˜ a que atender˜o pelo mesmo nome. e c˜ a a a e depois das diferen¸as individuais. X[5] ´ “E”. e e e A : vetor [1. A principal caracter´ ıstica que determina o uso de vetores para resolver problemas de programa¸ao ´ o seu acesso direto ou via ´ c˜ e ındice. A ´ um vetor de l´gicos.. apenas ´ necess´rio indicar qual o fator de ocorrˆncia daquela c˜ e a e vari´vel.0. a contagem ´ a trivial: 1. Valor recebido por dia ao longo do mes VALOR : vetor [1.10] de inteiro Exemplos Vejamos alguns exemplos: Cap´ ıtulo 8 1. Essas coisas s˜o referenciadas e c˜ a pela sua posi¸ao dentro do vetor. o a usaremos 1.20] de inteiro Exemplo: V : vetor [1.. 88-08.. contendo 50 ocorrˆncias de uma vari´vel a e a tipo real. Pedro Kantek 124 vers˜o de 10 de fevereiro de 2008 a . Assim.1. V[2] ´ 10. u No caso acima (dos 50 sal´rios). V[6] ´ erro. BASIC. Repare que a nota¸ao [inie e c˜ cio. vai-se combinar que o in´ semore ser´ 1 (como ae ıcio a no COBOL. 2.final] a rigor permitiria quaisquer valor inicial e final.6] de real F ← 10.CAP´ ITULO 8. n-1 (para contar n elementos). Quantidade de carros em cada dia da semana QTD-CARR : vetor [1. na forma de vetor. APL... ´ a cria¸ao de muitas vari´veis de mesmo tipo. X[1] e ´ “A”. e a segunda para e obter as diferen¸as individuais. Este valor num´rico inteiro. e a a Exerc´ ıcio Resolvido 8 Seja definir um vetor para conter as taxas inflacionarias dos ultimos 12 meses: ´ INFLACAO : vetor [1... 123 A origem da contagem varia entre 0 e 1. inteiro e positivo 2. n.. veremos que os c˜ quatro tipos de dados vistos at´ aqui (inteiro. PASCAL. real. conta-se: 0. Java. N˜o precisaria. Por exemplo.fim] de <tipo> // exemplo: A : vetor [1. e o e F : vetor [1. X[32] ´ erro. N´s sempre que NADA for dito em contr´rio. em um vetor. e e e X : vetor [1. Cuidado.12] de real Exerc´ ıcio Resolvido 9 Imaginemos agora a utiliza¸˜o de um vetor para conter as ca notas de uma turma de 60 alunos: NOTA : vetor [1. e Quando a origem ´ 1. ou cada um dos valores poderia ser acessado individualmente atrav´s do seu ´ e ındice. 1.5] de inteiro {defini¸ao} c˜ V ← 20 10 35 65 47. V[4] ´ 65.... e a introdu¸ao do conceito de vetor. a primeira para calcular a m´dia. OU c A dupla leitura dos dados. pois ambas complicam e desnecessariamente algo que ´ simples.9. nos ultimos 20 anos: ´ POPAA : vetor [1. ..). A cadeia ´ um vetor de c˜ a a e caracteres. O vetor X tem 9 caracteres (´ portanto. A[2] ´ falso. e assim por diante. O algoritmo em si ´ f´cil. que aqui o colchete n˜o significa ”opcional”.. ´ imediata o acesso ao elemento do vetor.7] de inteiro 2. ou seja pelo seu n´ mero. falso. Isto significa que. vejamos o caso de um programa capaz de calcular a diferen¸a entre c o sal´rio e a m´dia salarial de um grupo de 50 pessoas.). ou mais raramente 0 (como no C.3] de logico A ← verdadeiro. mas o mundo da programa¸ao c˜ j´ ´ suficientemente complexo. menor ou igual ao tamanho do vetor 8. ser´ escrito entre colchetes logo ap´s o nome do a e a o vetor. O conjunto poderia ser referenciado na totalidade com o nome de SALAR. falso. F ´ um vetor de reais. a e e a entretanto se faz necess´rio: a a cria¸ao de 50 vari´veis para conter os sal´rios. alfanum´rico e l´gico) s˜o insufie e o a cientes. 20. Pedro Kantek 126 vers˜o de 10 de fevereiro de 2008 a .10] de real 2: NOTAS ← . SOMA leia VALS SOMA ← 0 para para I de 1 a 200 fa¸a c SOMA ← SOMA + VALS[I] fimpara Inser¸˜o ca Coloca¸ao de um novo elemento dentro do vetor. usualmente antes de come¸ar c˜ c o processamento. VETORES E MATRIZES CAP´ ITULO 8.. Usualmente. seus valores podem ser acessados das seguintes maneiras: 88-08. a Ordena¸˜o ca Reordenar os elementos de um vetor com vistas a deix´-los obedecendo alguma rela¸ao a c˜ de ordem. Aqui ocorre o contr´rio. queremos saber qual seu ´ a ındice (isto ´. c˜ Por exemplo. u 1: A[i] ← A[i] + 1 Inicializa¸˜o ca ´ E a coloca¸ao do valor inicial dos elementos de um vetor . Dado um valor do vetor. e todos os elementos anteriores que tinham ´ c˜ ındice igual ou maior a esta posi¸ao s˜o deslocados uma posi¸ao. as notas at´ aqui e 3: NOVANOTA 4: I ← 1 5: enquanto (I < 11) ∧ (NOVANOTA < NOTAS[I]) fa¸a c 6: I←I+1 7: fimenquanto 8: se I = 11 ent˜o a 9: escreva (”a nota nova e menor do que as 10 j´ existentes) a 10: sen˜o a 11: J←9 12: enquanto (J > 0) ∧ (NOTAS[J] < NOVANOTA) fa¸a c 13: NOTAS[J+1] ← NOTAS[J] 14: J←J-1 15: fimenquanto 16: NOTAS[I] ← NOVANOTA 17: fimse Supress˜o a Opera¸ao inversa a da inser¸ao.CAP´ ITULO 8..60 {idem} **** OU **** I←1 enquanto I ≤ 6 fa¸a c V[I] ← I × 10 {elemento a elemento} I←I+1 fimenquanto Na leitura ´ a mesma coisa e Y : vetor[1. Acesso aos dados dentro de um vetor Dado um vetor. mas com o car´ter de acumula¸ao sobre os resultados da c˜ a c˜ opera¸ao.. a 1: inteiro VALS[200] 2: inteiro I. executando sobre eles uma mesma opera¸ao. c˜ c˜ Busca No acesso direto. Exemplo: Seja manter um vec˜ a c˜ tor de 10 notas. onde ele e est´?). Retira-se um elemento. QTOS 3: leia VALS 4: QTOS ← 0 5: para para I de 1 a 200 fa¸a c 6: se VALS[I] ≥ 0 ent˜o a 7: QTOS++ 8: fimse 9: fimpara Acumula¸˜o ca Parecido com a enumera¸ao. obtemos o valor do elemento no vetor. este novo elemento ´ enc˜ e caixado em alguma posi¸ao do vetor. dado um ´ ındice.30. VETORES E MATRIZES 1: 2: 3: 4: 5: 6: 7: 8. e a 1: NOTAS : vetor[1.2 Opera¸˜es B´sicas co a Vetores podem ser processados coletivamente ou elemento a elemento. Exemplo: seja somar todos os elementos de um vetor c˜ vers˜o de 10 de fevereiro de 2008 a inteiro VALS[200] inteiro I.6] de inteiro V ← 0 {coletivamente} V ← 10. seja contar quantos elementos s˜o negativos. Pedro Kantek 125 88-08..5] de real leia Y {5 pfs s˜o lidos e colocados em Y} a **** OU **** I←1 enquanto I ≤ 5 fa¸a c leia Y[I] {leitura individual de cada elemento} I←I+1 fimenquanto Atribui¸˜o ca Trata-se de modificar o conte´ do dos elementos do vetor.50. com as melhores notas at´ ent˜o aparecidas.40.. 1: B[j] ← 0 Enumera¸˜o ca Percorre-se todos os elementos de um vetor. Por exemplo: V : vetor[1. trazendo todos os que estavam c˜ ` c˜ uma posi¸ao abaixo dele uma posi¸ao acima. leituras: leia (VETVEN) . Assim. O caso acima. Entretanto.. Se tiver alguma dificuldade insan´vel. procure ajuda junto ao professor.. 1: algoritmo exemplo 2: inteiro I. 3: leia(VET1) 4: . Por exemplo. v˜o aqui a a e a alguns exemplos. etc.significando ”se”todos os elementos de VETVEN. VETORES E MATRIZES Genericamente Neste caso. Pedro Kantek 127 88-08.. Mas com um pouco de u pr´tica verifica-se que a coisa n˜o ´ muito complicada... ou n˜o conseguir entender o que a a est´ acontecendo. Vejamos um exemplo. elemento a elemento. em que o para ´ usado para calcular a soma dos elementos e de um vetor. Na tentativa de ajudar. 1: real VETVEN [10] 2: VETVEN [1] ← 0. CAP´ ITULO 8. Trata-se do comando e para. podemos ter testes: ”se”VETVEN = 0 . grava¸ao: escreva (VETVEN) .SOMA 3: inteiro VET [120] 4: leia(VET) 5: SOMA ← 0 6: para I de 1 ate 120 fa¸a c 7: SOMA ← SOMA + VET[I] 8: fimpara 9: escreva(SOMA) 10: fim algoritmo vers˜o de 10 de fevereiro de 2008 a Um dos erros mais comuns e graves que acontece quando se utilizam vetores ´ o e estabelecimento de um valor para o ´ ındice maior do que o comprimento total do vetor. Pedro Kantek 128 vers˜o de 10 de fevereiro de 2008 a . considera-se um unico valor para todas as ocorrˆncias do vetor. Os conceitos de ´ e a ındice e conte´ do costumam atrapalhar quem nunca lidou com isto.J. algumas vezes necessitaremos ler ou imprimir c˜ um vetor.CAP´ ITULO 8. 6: VETVEN [8] ← 100 7: VETVEN [9] ← 10 8: VETVEN [10] ← 1000 Estas 3 maneiras de referenciar. um conjunto da de mesmo n´ mero de elementos ´ usado na referˆncia ao u e e vetor. e devem o u e ser em mesmo n´ mero do que a defini¸ao original do vetor u c˜ Individualmente ´ E o caso mais comum. Os valores devem aparecer entre parˆnteses. o Ent˜o faremos: a 1: inteiro VET1 [10] 2: .L 3: VET1 ← (10 12 15 18 2 24 40 2 4 6) 4: VET2 ← (20 18 16 14 12 10 8 6 4 2) 5: VET3 ← (1 1 1 2 2 2 5 5 5 9) 6: I ← 3 7: J ← I+1 8: I ← 5 9: K ← 3 10: L ← 6 ent˜o a VET1[2] VET2[J] VET1[K+1] VET1[K]+1 VET2[VET3[4]] VET1[1+2+L] VET2[22-VET2[2]] VET3[VET1[10]-2]+1 VET2[(3*VET1[5])-5] VET1[4+VET1[2]] ---> ---> ---> ---> ---> ---> ---> ---> ---> ---> 12 14 18 16 18 4 14 3 20 ERRO! Conjuntamente Neste caso. ´ e para zerar um vetor pode-se fazer: 1: inteiro VETVEN [10] 2: VETVEN ← 0 O comando VETVEN ← 0 ´ permitido e faz com que TODOS os 10 elementos de e VETVEN sejam zerados. at´ entender cada e e um e todos eles. e pressup˜e a existˆncia de um comando para cada elemento do o e vetor. c˜ Todos os comandos vistos podem e devem ser usados junto com o conceito de vetores. o erro acontece quando se usa para ´ ındice de um valor n˜o compreendido no intervalo da defini¸ao do vetor. podemos ter a necessidade de ler ou imprimir um vetor de uma s´ vez..VET2. Sugiro que vocˆ os leia e os estude atentamente. Ficar´ ent˜o: a a 1: inteiro VET1[10] 2: inteiro I 3: . existe um que ´ muito orientado para estas estruturas. mas tamb´m as a a c˜ e demais a¸oes poss´ c˜ ıveis em .. Este erro ocorre quase sempre em a c˜ tempo de execu¸ao (o que torna mais dif´ sua corre¸ao). Entretanto. c˜ ıcil c˜ 88-08.significando ”escreva”todos. VETORES E MATRIZES Leitura e Impress˜o de Vetores a Em algoritmos ..K. a Exemplos: Para executar estes exemplos valem as seguintes defini¸oes: c˜ 1: inteiro VET1. 4: para I de 1 at´ 10 fa¸a e c 5: leia(VET1[I]) 6: fimpara Nem sempre ´ f´cil acostumar-se a trabalhar com vetor..01 4: VETVEN [5] ← 1 5: . Exemplo: 1: real VETVEN [10] 2: VETVEN ← (1 2 3 4 5 6 7 8 9 0) Neste caso o conjunto (1 2 3 4 5 6 7 8 9 0) ´ usado para inicializar o vetor de uma e s´ vez com conte´ dos diferentes. ´ o mais comum. e nos assegura que o vetor inteiro foi lido sem e complica¸ao ou dificuldade.1 3: VETVEN [2] ← 0. ou em termos mais rigorosos..VETX [10] 2: inteiro I.significando ”leia”todos os elementos.. n˜o se aplicam apenas ` inicializa¸ao. X estar´ em ordem crescente se e somente se Xi ≤ Xj . Um algoritmo de ordena¸ao ´ est´vel se no caso particular em que se k[i] = k[j]. A maneira de resolver o pedido a e c˜ (e descobrir o valor de A[A[x]]) e usando o valor de x. Pedro Kantek 129 88-08. sempre pode-se estabelecer Xi > Xj ou c˜ Xi = Xj ou Xi < Xj . as 3 opera¸oes fundamentais em inform´tica s˜o as c˜ a a seguintes: Pesquisa Dada uma chave desconhecida x. b) tipo do indice definido inadequadamente (ex: inteiro X[30]. x ∈ S ? Esta fun¸ao a a c˜ retorna um valor booleano. Neste caso. 88-08.4 Opera¸˜es fundamentais na Inform´tica co a Dado um conjunto S de chaves. James Martin sugeriu que 40% do tempo de TODOS os come putadores ´ gasto neste algoritmo. caracter Y.3 Ordena¸˜o ca Na d´cada de 70. a X estar´ em ordem estritamente crescente se e somente se Xi < Xj ∀i < j.’2’. Em termos matem´ticos. 5 ıcio: c e 8. Se houver muita dificuldade de entender este conceito o mesmo pode ser desdobrado em 1: escreva A[A[x]] ´ equivalente a e 1: B ← A[x] 2: escreva A[B] Tipos de erros em vetores a) indice caindo fora do vetor. vale uma lembran¸a. a X estar´ em ordem estritamente decrescente se e somente se Xi > Xj ∀i < j. a Antes de prosseguir. recuperar o conte´ do da posi¸ao u c˜ A[x]. E sempre bom que um m´todo de ordena¸ao e e c˜ seja est´vel. pesquis´-la contra S significa verificar se a x pertence ou n˜o ao conjunto S. VETORES E MATRIZES Um algoritmo de ORDENACAO ´ aquele que recebe um X qualquer (possivelmente ¸˜ e desordenado). haver´ c˜ a uma parte de Xi denominada CHAVE e identificada por k (k=key) pela qual se fara a ordena¸ao. a Existem 2 classes de algoritmos de ordena¸ao: os que trazem todos os dados para c˜ a mem´ria (sort interno) e os que ordenam dados em m´ o ıdia magn´tica seq¨ encial (sort e u externo). 8. 12. 9. O conjunto completo (completo?) de algoritmos de ordena¸ao ser´ visto e estudado c˜ a no segundo ano (na disciplina de estrutura de dados). Pedro Kantek 130 vers˜o de 10 de fevereiro de 2008 a . a c˜ e a ´ ordem original dos dados ´ preservada. a vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 89 Exerc´ fa¸a um chinˆs com 4. Usualmente ´ representada c˜ e c˜ e por diversos colchetes. X[Y] d´ erro) Note que a maioria das linguagens exige inteiro a (ou real mas sem decimais). e a Indire¸˜o ca A indire¸ao ´ uma dupla (ou tripla ou n-upla) indexa¸ao. apenas a c˜ e chave ser´ tratada nos algoritmos. De posse deste valor usa-se-o como ´ ındice final para saber o valor de A[A[x]]. a X estar´ em ordem decrescente se e somente se Xi ≥ Xj . VETORES E MATRIZES Exemplo real W [20] 2: inteiro A 3: A ← 15 4: escreva(W[A+10]) 1: CAP´ ITULO 8. permuta seus elementos e devolve X em ordem. Tipicamente fazem parte de Xi um conjunto de informa¸oes. Para conjunto de dados pequenos (quanto?) c n˜o h´ necessidade de grandes pesquisas e deve-se usar o algoritmo mais simples poss´ a a ıvel. mas por enquanto vamos usar um algoritmo simples e f´cil (mas ineficiente) para ordenar vetores: a Algoritmo de movimenta¸˜o ca 1: inteiro[1000] {fun¸ao} MOVIMENTA (inteiro V[1000]) c˜ 2: inteiro Y[1000] 3: inteiro MAIOR.J 5: para I de 1 at´ 1000 fa¸a e c 6: MAIOR ← −∞ 7: para J de 1 at´ 1000 fa¸a e c 8: se V[J] > MAIOR ent˜o a 9: MAIOR ← X[J] 10: QUAL ← J 11: fimse 12: fimpara 13: Y[I] ← X[QUAL] 14: V[QUAL] ← −∞ 15: fimpara 16: retorne Y 17: fim{fun¸ao} c˜ Este algoritmo ´ est´vel. ∀i < j.CAP´ ITULO 8. Y <. ∀i < j. 8. Dados Xi e Xj com i = j. vamos definir o problema: c c˜ Seja X um conjunto composto por i elementos entre os quais se pode estabecer uma rela¸ao de ordem. Embora devamos ter em mente a existˆncia dos outros campos. e O conceito de ordem ´ fundamental em programa¸ao e c˜ Excelente t´pico para estudar algoritmos e estudar comportamentos e complexio dades Importˆncia do estudo da ordena¸ao a c˜ Antes de come¸armos a estudar a classifica¸ao. 3. Note que neste caso o algoritmo apenas acessa uma parte do subconjunto total. QUAL 4: inteiro I. 1. Veja no exemplo 1: escreva A[A[x]] O que est´ se pedindo acima ´ a dupla indexa¸ao de A. Vet2[J] 3. a cat. Vet3←(1 1 1 2 2 2 5 5 5 9) 6. O algoritmo deve imprimir a letra ” S”se for. tem o mesmo sentido (Aur´lio).CAP´ ITULO 8. Vet2[22-Vet2[2]] 8. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a . Exemplos de e pal´ ındromos: sairam o tio e oito marias oto come mocoto socorram me subi no onibus em marrocos roma me tem amor em inglˆs: a man. M´ ınimo Muito semelhante ao anterior. a plan. a canal. a opera¸ao de exclus˜o a c˜ a significa retirar x do conjunto S. Vet1[K]+1 5. Ou S ← S − {x}.) Diz-se da frase que quer se leia da direita para a esquerda. e ”N”se n˜o for. s´ que busca-se x tal que ∀y = x ∈ S. K←3 10. anotaram a data da maratona a droga da gorda CAP´ ITULO 8. a Desconsiderar os brancos que est˜o ` direita da frase e tamb´m aqueles que est˜o entre as a a e a palavras. a opera¸ao de inser¸ao significa inserir x em c˜ c˜ c˜ S. x ≥ y. J←I+1 8. e inicialize todos os elementos com o valor 5. Vet1[2] 2. I←5 9. inteiro Vet1[10] Vet2[10] Vetx[10] 2. me vˆ se a panela da mo¸a ´ de a¸o madalena paes e vem e c e c a diva da vida luz azul ato idiota o treco certo a base do teto desaba atila toledo mata modelo talita Exerc´ ıcio 91 Quanto ´: e 1. L←6 Exerc´ ıcio 90 Pal´ ındromo (adj. Ou S ← S ∪ {x}. caso x j´ seja o maior elemento o e a em S. o Sucessor Esta opera¸ao busca descobrir qual o ”seguinte”elemento do conjunto segundo c˜ um crit´rio qualquer. Pedro Kantek 88-08. descobrir-lhe seu m´ximo ´ obter o valor x. tal que a a e ∀y = x ∈ S. VETORES E MATRIZES o romano acata amores a damas amadas e roma ataca o namoro s´ d´ tapas e sapatadas a a Definir algoritmo capaz de ler uma frase de at´ 80 caracteres e decidir se a mesma ´ e e ou n˜o ´ um pal´ a e ındromo. Vet1[1+2+L] 7. Para executar este exerc´ valem as seguintes defini¸oes: ıcio c˜ 1. Vet3[Vet1[10]-2]+1 9. A fun¸ao pode retornar apenas um indicativo de sucesso. quer da esquerda para a direita. A fun¸ao recebe como entrada um valor x que est´ e c˜ a presente em S e devolve um apontador ou cursor para o n´ mero imediatamente u menor a x em S. A fun¸ao recebe como entrada um valor x que est´ presente e c˜ a em S e devolve um apontador ou cursor para o n´ mero imediatamente maior a x u em S. M´ximo Dado um conjunto S. inteiro I J K L 3. Pode-se retornar apenas um indicativo de sucesso. VETORES E MATRIZES Inser¸˜o Dada uma chave x que reconhecidamente n˜o pertence ainda a S (e isto pode ca a ser verificado pela opera¸ao acima). Outra hip´tese de retorno ´ um terminador. radar. panama e murder for a jar of red rum rotor. Vet1←(10 12 15 18 2 24 40 2 4 6) 4. Vet2[vet3[4]] 6. 131 132 vers˜o de 10 de fevereiro de 2008 a 88-08. Vet2[(3*Vet1[5])-5] 10. caso x j´ seja o o e a menor elemento em S. x ≤ y. Vet1[K+1] 4. Esta fun¸ao retorna um ponteiro ou um cursor para o elemento c˜ x. Vet2←(20 18 16 14 12 10 8 6 4 2) 5. c˜ Exclus˜o Dada uma chave x que sabidamente pertence a S. Vet1[4+Vet1[2]] Exerc´ ıcio 92 Escrever um trecho de algoritmo que defina um vetor de 7 elementos inteiros. Outra hip´tese de retorno ´ um terminador. I←3 7. Antecessor Esta opera¸ao busca descobrir qual o ”anterior”elemento do conjunto sec˜ gundo um crit´rio qualquer. temos: INIC ← METADE + 1 ou INIC ← 6. e a e a Com a tabela classificada em ordem (digamos ascendente). e 40 c˜ e < 77. VETORES E MATRIZES CAP´ ITULO 8. O processo termina o quando a chave for encontrada.METADE. Seja o vetor: 1 7 12 20 40 41 47 49 60 88 Vamos fazer uma pesquisa bin´ria para encontrar (ou n˜o) a chave 77 nele. a Embora seja um algoritmo simples de se imaginar e de implementar. A pesquisa prossegue pela divis˜o ao meio da parte que ficou. (chinesinho) neste algoritmo. Cada elemento deste vetor o representa o valor da d´ ıvida de cada estado brasileiro para com a uni˜o. principalmente para tabelas muito grandes e com muitas pesquisas por unidade de processamento. se o vetor lido estiver em ordem ascendente. e a primeira parte da tabela ´ abandonada. e o que se deseja a obter impresso ´ o valor total desta d´ e ıvida. Pesquisa bin´ria a 8. quando ent˜o concluiremos a pela n˜o existˆncia da chave na tabela. METADE ← 5. o ıze ritmo acima. a a primeira itera¸ao: INIC ← 1. e Para poder usar esta pesquisa a tabela PRECISA estar ordenada. ´ classificar a tabela. ıze fim? Exerc´ ıcio 96 Como exerc´ indique qual a modifica¸˜o que se deveria fazer no algoıcio. para diminuir e a quantidade de acessos at´ chegar a uma conclus˜o sobre a existˆncia ou n˜o da chave.1 10: sen˜o a 11: INIC ← METADE + 1 12: fimse 13: at´ VET[METADE] = CHAVE ∨ INIC > FIM e 14: se VET[METADE] = CHAVE ent˜o a 15: escreva ’achou na posi¸ao ’. Um primeiro melhoramento que podemos fazer.CAP´ ITULO 8. a pesquisa da chave deve ser feita at´ que: e A chave seja encontrada.5 Tabelas Pesquisa sequencial ¨ Dada um vetor. e a e Exerc´ ıcio 95 Escreva um algoritmo capaz de definir e ler um vetor de 28 reais e a seguir calcular e imprimir a somat´ria dos elementos do vetor. Exerc´ ıcio Resolvido 11 Imagine um poss´ refinamento para tornar mais r´pido ıvel a o acesso seq¨encial a uma tabela (de tamanho grande) classificada. Se n˜o estiver os a resultados da t´cnica s˜o imprevis´ e a ıveis. Se for maior abandona-se a segunda e parte. ´ a pesquisa para saber se c˜ e determinado elemento se encontra ou n˜o contido nela. at´ que: e u e O elemento (denominado CHAVE) seja encontrado. u R: Basta aumentar o tamanho do salto. 20 ou qualquer outro valor.CHAVE 4: INIC ← 1 {campo delimita o limite inferior da pesquisa} 5: FIM ← 100 {delimita o limite superior da pesquisa} 6: repita 7: METADE ← int(INIC + FIM)/2 8: se CHAVE < VET[METADE] ent˜o a 9: FIM ← METADE . ou quando a parte que restou da divis˜o for nula. a e A seguir o algoritmo para fazer esta pesquisa: 1: inteiro V[1000] 2: inteiro I. Em resumo ´ o seguinte: e A tabela ´ dividida ao meio (da´ o nome bin ria) e ı A chave ´ comparada com o elemento que dividiu a tabela. Como VET[5] ´ 40. A redu¸ao de acessos ´ grande e a c˜ e e garante muita eficiˆncia ao processo. Se este for menor. Agora a tabela ´ percorrida aos saltos. Pedro Kantek 134 vers˜o de 10 de fevereiro de 2008 a .metade c˜ 16: sen˜o a 17: escreva ’n˜o achou’ a 18: fimse Vamos acompanhar um exemplo. ca Exerc´ ıcio 94 Escrever um trecho de algoritmo que defina um vetor de 12 elementos l´gicos. de 1 linha para 10. a fim de n˜o ter que percorrˆ-lo a e at´ o fim para certificar-se da n˜o existˆncia da chave. A maneira mais simples de fazer a esta pesquisa ´ percorrer a tabela em ordem seq¨ encial. ou Chegue-se ao fim da tabela. 88-08.FIM. a Rapidamente as sucessivas divis˜es ao meio esgotam a tabela. e inicial´ os primeiros 6 com VERDADEIRO e os outros 6 com FALSO. e n˜o elemento a elemento. CHAVE 3: leia V 4: leia CHAVE 5: I ← 1 6: enquanto I < 100 fa¸a c 7: se VET[I] = CHAVE ent˜o a 8: escreva ”encontrou” 9: abandone 10: fimse 11: I←I+1 12: fimenquanto 13: se I = 101 ent˜o a 14: escreva ”N˜o encontrou” a 15: fimse vers˜o de 10 de fevereiro de 2008 a Trata-se da um significativo melhoramento em termos de pesquisa a tabela. VETORES E MATRIZES 16: Exerc´ ıcio 93 Escrever um trecho de algoritmo que defina um vetor de 365 elementos reais. FIM ← 10. OU Um elemento maior do que a chave seja encontrado. ele n˜o ´ dos a e mais eficientes. uma das a¸oes mais comuns sobre ela. a Vejamos no algoritmo abaixo 1: inteiro V[100] 2: inteiro INIC. Pedro Kantek 133 88-08. quando ent˜o concluiremos que o elemento CHAVE a n˜o existe na tabela. e inicial´ todos os elementos com o valor 0.CHAVE 3: leia VET. METADE ← 8. 100 elementos: 6.a2) 9: escreva (d1. temos: INIC ← METADE + 1 ou INIC ← 9. Por e o exemplo: vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 100 Definir algoritmo que leia um vetor de 28 reais onde cada elemento do vetor representa o valor da d´ ıvida de cada estado brasileiro para com a uni˜o.152.3288) 7: qt1 ← qt2 ← 0 8: leia (d1. no formato dia.qt1. escreva-as e calcule e escreva a diferen¸a em dias entre c ambas.mˆs. Como VET[8] ´ 49. no formato dia. METADE ← 9. Os elementos a 88-08.000.m2.CAP´ ITULO 8.120. 1. c Exerc´ ıcio Resolvido 12 Dadas duas datas na d´cada de 80. Pedro Kantek 136 vers˜o de 10 de fevereiro de 2008 a . Neste ponto o ciclo se encerra. pois IN´ ICIO > FIM.a1. VETORES E MATRIZES segunda itera¸ao: INIC ← 6.d2. FIM ← 10. Finalmente descobrimos que a chave n˜o est´ presente pois.212.d2.2922.1461. a a e e Note-se que o n´ mero m´dio de acessos em uma pesquisa bin´ria ´ da ordem de u e a e log2 N . FIM ← 10. escrever um algoe ritmo que as leia. VET [10] ´ 88 que ´ diferente de 77. 15. 9 3.a1.200 elementos: 7. 200 8.m2.m1.89] vetor de inteiro 4: V1 ← (0.qt2 : inteiro 2: V1.2192. V1B [1. e e escrever um algoritmo que as leia. O objetivo ´ intercalar os dois vetores formando um s´.mˆs. 50 elementos: 5. Como VET10] ´ 88 e 88 c˜ e > 77. temos: INIC ← METADE + 1 ou INIC ← 10.181.ano.000 elementso: Resultado ----------------------Chave 1 Chave 3 Chave 8 Chave 9 Chave 10 Chave 11 Chave 36 Chave 87 Chave 450 Chave 490 Chave 500 Exerc´ ıcio 99 Dadas duas datas no ano de 89.2557.m2. 8 2.59. 5 elementos: 2.60. 50 4.121. onde N ´ o n´ mero de elementos da tabela.366. 20 elementos: 4.12] vetor de inteiro 3: V2 [80.244. determine qual o n´mero m´dio de acessos em u e uma pesquisa bin´ria para uma tabela de: a 1.1096.304.334) 5: V1B ← (0..m1. atrav´s do algoritmo de pesquisa bin´ria: c a e a 1.274.1827.151. com as e caracter´ ısticas: Idˆnticos lay-outs e Uma chave de controle (em geral n˜o repetida> a Ambos classificados pela chave de controle.a2. escreva-as e calcule e escreva a diferen¸a em dias entre ambas. e 49 c˜ e < 77.243. temos FIM ← METADE . VETORES E MATRIZES vetor2 -------------------------Chave 1 Chave 9 Chave 10 Chave 11 Chave 450 Chave 490 Exerc´ ıcio 97 Mediante a regra acima. terceira itera¸ao: INIC ← 9. FIM ← 10.a2) 10: se a2 = 80 ∨ a2 = 84 ∨ a2 = 88 ent˜o a 11: qt2 ← d2 + v1b[m2] + v2[a2] 12: sen˜o a 13: qt2 ← d2 + v1[m2] + v2[a2] 14: fimse 15: se a1 = 80 ∨ a1 = 84 ∨ a1 = 88 ent˜o a 16: qt1 ← d1 + v1b[m1] + v2[a1] 17: sen˜o a 18: qt1 ← d1 + v1[m1] + v2[a1] 19: fimse 20: escreva (qt2-qt1) Exerc´ ıcio 98 Dado o vetor: 1 4 5 6 8 10 13 18 21 60. Pedro Kantek 135 88-08.273.91. quarta itera¸ao: INIC ← 10.90. METADE ← 10. e que continue classificado..182.213. 10 elementos: 3. realizar o chinez para descobrir a presen¸a ou n˜o das chaves.a1.305.6 Merge (intercala¸˜o) de dois vetores ca Este ´ um problema tradicional em PD: Suponhamos que existam dois vetores. e u vetor 1 -----------------------Chave 3 Chave 8 Chave 36 Chave 87 Chave 500 CAP´ ITULO 8.731.31.1 ou FIM ← 9.000 elementos: 8. 1: d1. 1. Como VET[9] ´ 60 e 60 < c˜ e 77.335) 6: V2 ← (0.m1.31.d2. atrav´s do algoritmo de pesquisa bin´ria: c a e a 1. para diminuir e a quantidade de acessos at´ chegar a uma conclus˜o sobre a existˆncia ou n˜o da chave. e a e a Com a tabela classificada em ordem (digamos ascendente). Exerc´ ıcio 105 Escreva um algoritmo. Pedro Kantek 137 88-08. 20 elementos: 4. CHAVE 3: leia V 4: leia CHAVE 5: I ← 1 6: enquanto I < 100 fa¸a c 7: se VET[I] = CHAVE ent˜o a 8: escreva ”encontrou” 9: abandone 10: fimse 11: I←I+1 12: fimenquanto 13: se I = 101 ent˜o a 14: escreva ”N˜o encontrou” a 15: fimse 16: fim? Exerc´ ıcio 101 Definir um algoritmo equivalente para a leitura de um vetor de 200 elementos. a Embora seja um algoritmo simples de se imaginar e de implementar. principalmente para tabelas muito grandes e com muitas pesquisas por unidade de processamento. informando a seguir qual a m´dia dos valores positivos e qual a m´dia dos e e valores negativos. ´ classificar a tabela. ou Chegue-se ao fim da tabela. VETORES E MATRIZES Um elemento maior do que a chave seja encontrado. Exerc´ ıcio 104 Definir algoritmo que leia um vetor de 278 inteiros e escreva-o de tr´s a para a frente. A maneira mais simples de fazer a esta pesquisa ´ percorrer a tabela em ordem seq¨ encial.200 elementos: 7. a m´dia. 5 elementos: 2. determine qual o n´mero m´dio de acessos u e em uma pesquisa bin´ria para uma tabela de: a 1. u R: Basta aumentar o tamanho do salto. mesmo que haja mais de c˜ um. u Exerc´ ıcio 111 Mediante a regra acima. imprimindo ambas as informa¸oes. quando ent˜o concluiremos que o elemento CHAVE a n˜o existe na tabela. e qual seu ´ ındice. indique qual a modifica¸˜o que se deveria fazer no ca algoritmo acima. se o vetor lido estiver em ordem ascendente. quando ent˜o concluiremos a pela n˜o existˆncia da chave na tabela. que leia de uma s´ vez um vetor de 100 elemeno tos num´ricos reais.000 elementso: Exerc´ ıcio 109 Definir algoritmo que leia uma frase de 100 caracteres e escreva a quantidade de palavras que apareceram na frase.7 Pesquisa sequencial ¨ Dada um vetor. 1. VETORES E MATRIZES est˜o colocados em ordem decrescente (isto ´ as maiores d´ a e ıvidas na frente) e escreva a quantidade de estados que s˜o necess´rios para apresentar uma d´ a a ıvida de no m´ ınimo 50% do total ? A chave seja encontrada.000. Deve ser impressa tamb´m a quantidade de maiores de 1000. e a e Exerc´ ıcio 107 Definir algoritmo que leia uma frase de 80 caracteres e escreva a quantidade de vogais min´sculas que apareceram na frase. at´ que: e u e O elemento (denominado CHAVE) seja encontrado. Pedro Kantek 138 vers˜o de 10 de fevereiro de 2008 a . seguido do c´lculo e impress˜o da soma dos elementos que s˜o maiores que a a a 1000. 50 elementos: 5. realizar o chinez para descobrir a presen¸a ou n˜o das chaves. 100 elementos: 6. a pesquisa da chave deve ser feita at´ que: e vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 112 Dado o vetor: 1 4 5 6 8 10 13 18 21 60. e escreva aqueles que forem maiores do que o valor 150. calcular a m´dia. Exerc´ ıcio 110 Como exerc´ ıcio.CAP´ ITULO 8. 15. e a diferen¸a entre cada e e c valor individual e a m´dia calculada. Um primeiro melhoramento que podemos fazer. Exerc´ ıcio 106 Escreva um algoritmo que leia 200 valores (um a um). e Exerc´ ıcio 103 Escreva um algoritmo que leia um vetor de 36 elementos e determine qual maior. e crie um vetor com tais valores. 10 elementos: 3. 8. 20 ou qualquer outro valor. OU CAP´ ITULO 8. de 1 linha para 10. 1. ´ a pesquisa para saber se c˜ e determinado elemento se encontra ou n˜o contido nela. e imprimir todos os valores do conjunto.000 elementos: 8. a e A seguir o algoritmo para fazer esta pesquisa: 1: inteiro V[1000] 2: inteiro I. a fim de n˜o ter que percorrˆa e lo at´ o fim para certificar-se da n˜o existˆncia da chave. e tamb´m a e e quantidade deles. Exerc´ ıcio 108 Definir algoritmo que leia uma frase de 90 caracteres e escreva a quantidade de consoantes mai´sculas que apareceram na frase. 8 2. 9 88-08. u Exerc´ ıcio Resolvido 13 Imagine um poss´ refinamento para tornar mais r´pido ıvel a o acesso seq¨encial a uma tabela (de tamanho grande) classificada. e Exerc´ ıcio 102 Escrever um algoritmo que seja capaz de ler um conjunto de 10 valores. ele n˜o ´ dos a e mais eficientes. uma das a¸oes mais comuns sobre ela. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 140 vers˜o de 10 de fevereiro de 2008 a . a ordem original do vetor deve ser a c preservada. isto significa que o setor est´ livre. o Ap´s calcular o vetor de sa´ este deve ser impresso e o algoritmo encerrado.9 Exerc´ ıcio 117 Definir algoritmo que leia um vetor de 300 inteiros. VALOR ´ o valor em e reais efetivamente cobrado.CAP´ ITULO 8. que mudan¸a precisaria ser feita ? c Exerc´ ıcio 121 Definir algoritmo que leia um vetor de 1500 n´meros reais positivos u sem qualquer tipo de ordena¸˜o. real 88-08. O a u u a algoritmo deve criar um vetor de sa´ tamb´m de 100 elementos. O vetor ´ de inteiros. 200 CAP´ ITULO 8. se colocar 99. ´ claro). 33) e produtos eletrˆnicos (cod. Onde VAI[1]. Escrever a um algoritmo que leia o vetor ALFA e escreva BETA. Logo o medonho ´ o sexto elemento. Pedro Kantek Exerc´ ıcio Resolvido 14 Uma empresa de departamentos. CODIGO c˜ ´ um entre 137 c´digos poss´ e o ıveis. ıvel e ıvel Exemplos: Dado o vetor 1 2 3 4 6 7 8 9 0 0 0 2 3. ıvel e e e Se pedirmos o medonho do ultimo elemento de um vetor. o a ca Exemplos de c´digos poss´ o ıveis (fict´ ıcios): 0246 0211 0192 0432 .5 1. Taxas alfandeg´rias a Mensal~o a Tri-le~o a Multas por recolhimento fora de prazo. quer saber quais os produtos que ela vende e que rendem mais faturamento. e a seguir calcule e escreva a somat´ria dos elementos do vetor DE ORDEM PAR. e u a onde os maiores ficar˜o no fim. o algoritmo deve imprimir quantos reais foram arrecadados em cada um dos c´digos que foram lidos. Definir um algoritmo que leia 20 vetores (um de cada vez. pela f´rmula VALOR = PRE [I] * QUANTIDADE [I].9 -3. chamado PRE. Ao final do o processamento. Os dados terminam quando o c´digo 000 for lido. est˜o os pre¸os de cada produto.M. Exerc´ ıcio 118 Dado um vetor VIN de 10 elementos inteiros num´ricos. O pr´ximo j maior que cinco e e o divis´ por 3 (3 chifres) ´ 6. a a Exerc´ ıcio 115 Definir algoritmo que leia um vetor de 200 elementos inteiros. Como sabemos um disquete dupla-dupla de 5 1/4.1 -0. Exemplo: ALFA: BETA: 3 3 1. e com zeros ao final. ıvel u Exerc´ ıcio 123 Desejamos analisar o mapa de uso de um disquete. 50 4. O algoritmo deve gerar outro vetor tamb´m com 1500 ca e n´meros onde os elementos que forem menores do que 10000 ser˜o colocados na frente.2 3. 11). Exerc´ ıcio 120 Dado um vetor ALFA contendo 50 n´meros inteiros e fracion´rios misu a turados.VALOR referentes a arrecada¸oes do imposto de renda. Exceto esta mudan¸a.5 4 4 10 139 2. 40). e se existe um e valor zero.1 Sa´da: -8. Exerc´ ıcio 122 Definir algoritmo que leia uma s´rie indeterminada de pares de valores e Exerc´ ıcio 114 Definir algoritmo que leia um vetor de 200 inteiros e escreva os elementos que s˜o maiores do que seus medonhos de 10 chifres. VAI[2] e VAI[3] recebem VIN[1]. e assim por diante. Exemplo: Vetor de entrada: 1. e escreva-o sujeito ` ordem de entrada. roupas (cod.2 0 0 -4 ı -4 -0. Exerc´ ıcio 113 Definir algoritmo que Leia um vetor de 6000 sal´rios a Leia o valor do sal´rio m´ a ınimo vigente Calcule e escreva quantas pessoas (=sal´rios) ganham at´ 3.2 11 10 0 11 0 88-08. Os dados n˜o tem nenhum tipo de ordena¸˜o.M. Escrever algoritmo que leia VIN e escreva VAI.2 -3. a e Idem para quem ganha mais de 3. VETORES E MATRIZES 3. tem 2 faces. em vez de zero. implica em a que o setor n˜o est´ livre. o Exerc´ ıcio 124 Definir um algoritmo que leia um vetor num´rico real de 100 elementos. As op¸oes de vendas s˜o: brinquedos c˜ a (cod. onde s´ aparecem os n´meros inteiros no o u in´ ıcio.. No outro vetor. [Tantos zeros quantos eram os fracion´rios em BETA]. o que d´ um a total de 720 setores. se este existir. o ıda. ´ ´ formados por CODIGO. e onde est˜o misturados: n´meros positivos e negativos e n´meros inteiros e fracion´rios. 21). com o menor ´ ındice j poss´ (onde j ≥ k) tal que j ´ divis´ por n. a ordem original do vetor de entrada deve ser preservada. a quem chamaremos COD est˜o os c´digos e a o dos produtos [inteiros]. VETORES E MATRIZES E se ao final do vetor. Define-se o “medonho de n a chifres”do elemento ´ ındice k de um vetor.5 S. mas imprimindo primeiro os pares e depois os ´ a ımpares. ele s´ existir´ se o medonho ´ o a for o pr´prio elemento (no caso de j ser igual a k). 40 trilhas e 9 setores por trilha.9 0 0 1.2 1. pergunta-se qual o medonho de 3 chifres do elemento 6 (quinto elemento do vetor) ? k ´ igual a 5. armarinhos (cod. O o cadastro de vendas da empresa tem o seguinte formato: TIPO. e que correspondem cada vetor a um disco diferente. Exerc´ ıcio 119 Uma grande empresa tem seus pre¸os armazenados na forma de dois c vetores de 650 ocorrˆncias cada. um para cada tipo de imposto.2 3. e determine qual o percentual de setores livre em cada um dos discos.5 -8 -8. ao elemento do mesmo vetor. ´ Escrever um algoritmo que leia os vetores contendo CODIGO e QUANTIDADE e escreva o valor a pagar. que ´ o 7. Idem para quem ganha 20 ou mais S.9 1. Qualquer valor diferente de zero.M. a c NA MESMA ORDEM DE APARECIMENTO do que COD. imprimindo tal resultado. criar um vetor BETA de mesmo tamanho.5 e menos de 20 S.inteiro VALOR. criar o vetor e VAI contendo 30 elementos. o Exerc´ ıcio 116 Definir algoritmo que leia um vetor de 200 elementos inteiros. No primeiro. e a seguir calcule e escreva a somat´ria dos elementos do vetor DE VALOR PAR.. onde a ordem ´: ıda e e Primeiro os n´meros negativos fracion´rios u a Depois os positivos fracion´rios a Depois os inteiros Em cada uma das subclasses. Isto s´ ocorrer´ se a ordem do ultimo o o a ´ elemento for divis´ pelo n´mero de chifres. e no formato dd. ser˜o feitas 4 afirma¸oes a c˜ ´ 1.va 20: leia(reg). E desnecess´rio inicializar J com o valor 0. 3 e 4 b) 1. 16: enquanto tab[I]. A seguir est´ o algoritmo de uma fun¸˜o que recebe como parˆmetro um determinado a ca a n´mero inteiro positivo X. 10: tab[2]. Pedro Kantek 142 vers˜o de 10 de fevereiro de 2008 a . 5: tipo V = vetor [1:4] R 6: V: tab. que faz o papel de a e u sentinela e que sinaliza ”FIM DE DADOS”. no mesmo formato.2] de inteiro 3: I.1] ← V[I] 15: MAT[J. e c˜ e quantas vezes ele aparece) devem ser impressas. J. os c´digos se repetem. e a 2 Exerc´ ıcio 125 Suponha uma lista sequencial (um vetor num´rico) de nome VET.1] = V[I] ent˜o a 10: MAT[J.2] + 1 11: abandone 12: fimse 13: se MAT[J. 9: tab[1]. O preenchimento sempre se d´ a partir do come¸o do vetor sem lacunas. Escrever e o um algoritmo que leia o cadastro de vendas e totalize os quatro tipos ao final. 7: R: reg. e Exerc´ ıcio Resolvido 15 Criar um algoritmo que leia (de uma vez) um vetor de 500 elementos inteiros. 4: fimregistro. o algoritmo deve calcular uma nova data. isto ´. 1: V [1.. 11: tab[3]. 12: tab[4]. e aj ´ a vari´vel que foi lida e armazenada no vetor. Se em vez de fazer I ← 21 se fizesse I ← 20 a fun¸˜o deixaria de funcionar ca 3.ti ← 40. 1: Inteiro fun¸˜o ACHANUMERO(inteiro X) ca 2: Inteiro I. Esta fun¸˜o pode n˜o funcionar no caso em que X n˜o pertence a VET ca a a 4. Esta fun¸˜o pode n˜o funcionar no caso em que X pertence a VET ca a Est~o erradas as afirma¸~es: a co a) 1.ti ← 11. 18: fimenquanto 19: tab[I].ix : inteiro 4: MAT[.ti = 0 fa¸a c 15: I ← 1..2] ← 1 88-08.500] de inteiro 2: MAT [1. K 3: I ← 1 4: J ← 0 5: enquanto I < 20 fa¸a c 6: se VET[I] = X ent˜o a 7: J←I 8: I ← 21 9: fimse 10: I++ 11: fimenquanto 12: se J = 0 ent˜o a 13: Retorne (20) vers˜o de 10 de fevereiro de 2008 a Calcular e imprimir a quantidade de elementos que s˜o menores que seu ´ a ındice Exerc´ ıcio 127 Definir algoritmo capaz de receber uma s´rie da datas. e que corresponda ao per´ ıodo de 180 dias posterior a data original. A seguir o programa deve determinar qual o valor que mais aparece neste vetor e quantas vezes ele aparece.1] ← -1 1. Solu¸˜o usando vetores: ca 1: tipo R = registro. Pedro Kantek 141 88-08. e devolve a posi¸˜o dele dentro de VET (caso ele de fato existisse u ca l´ dentro) ou devolve o valor 20 o que deve ser entendido como ”X n˜o se encontra em a a VET”. Os u a c dados v´lidos se encerram quando ´ encontrado um n´mero negativo.va + reg. VETORES E MATRIZES E nele consta 1 registro para cada venda efetuada.. pois J tem o valor imediatamente alterado.ti ← 33. isto ´. 14: enquanto reg. Feito isto. 21: fimenquanto 22: escreva(tab) 14: 15: CAP´ ITULO 8. formada por n´meros inteiros positivos e contendo espa¸o para 20 u c n´meros.ti fa¸a c 17: I ← I + 1. 3: real:va. A s´rie de datas se encerra quando for lida um dia igual a zero.ti ← 21.1] < 0 ent˜o a 14: MAT[J. e definido globalmente. 2 e 3 c) 1. mm.2] ← MAT[J.ti = reg. 2: inteiro: ti. sempre refere entes ao ano de 1988.J.CAP´ ITULO 8. VETORES E MATRIZES sen˜o a Retorne J 16: fimse 17: Fim fun¸˜o ca Sobre o algoritmo acima.coluna inicializada com n´meros negativos u 5: leia(V) 6: para I de 1 at´ 500 fa¸a e c 7: J←1 8: enquanto (J < 500) fa¸a c 9: se MAT[J. 2 e 4 d) 2 e 3 e) 1 e 4 Exerc´ ıcio 126 Defina um algoritmo que leia e escreva um conjunto de 200 valores num´ricos armazenando-os em uma vetor num´rico (real). onde j ´ um ´ o e ındice que varia entre 1 e 200. Para cada uma delas.va ← tab[I]. Notar que logo ap´s a sentinela a c o os n´meros que porventura aparecerem em VET s˜o n˜o confi´veis e n˜o devem ser conu a a a a siderados.500] [1. o vetor n˜o foi inicializado de alguma maneira antes dele come¸ar a ser e a c usado. 2. Obviamente cabem apenas 19 n´meros v´lidos u a pois sempre h´ que se reservar espa¸o para o sentinela. 2. 8: inteiro: I. 13: leia (reg). Estas duas informa¸oes (qual ´ o mais repetido. o algoritmo deve: e e j calcular e imprimir a somat´ria dos termos: aj . a logo abaixo. CAP´ ITULO 8. VETORES E MATRIZES 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: CAP´ ITULO 8. VETORES E MATRIZES na partilha. QTDDEF ´ a quantidade de rolamentos deste tipo defeituosos. Deve-se definir e um algoritmo que leia todos os dados do arquivo, e para cada partida, deve-se imprimir seu n´mero e a identifica¸˜o ”ACEITA”ou ”REJEITADA”Um poss´ exemplo de arquivo poderia u ca ıvel ser: 001,1,1200,10 001,E,3000,100 002,1,100,4 002,2,100,6 003,E,10000,800 004... Neste caso, o programa deveria emitir o relat´rio: o 001 ACEITA 002 REJEITADA 003 ACEITA 004 ... abandone fimse J←J+1 fimenquanto fimpara maior ← 0 I←1 enquanto (I< 500) fa¸a c se MAT[I,2] > maior ent˜o a maior ← MAT[I,2] ix ← I fimse I←I+1 fimenquanto escreva (”O maior e ”,mat[ix,1]) escreva (”E a quantidade e ”,mat[ix,2]) Exerc´ ıcio 128 Uma fazenda resolveu automatizar o processo de tomada de decis˜o a para escolha de sementes de trigo. Assim, a rea de plantio foi dividida em 8600 lotes distintos, que devidamente semeados, tiveram a cultura de 88/89 observada. A partir dos dados levantados no campo, foi criado um arquivo contendo o seguinte lay-out: Identifica¸~o do lote, inteiro ca Tipo de semente, inteiro ´rea do lote plantado, em m2, real A Quantidade de trigo colhido no lote, em quilogramas, real Qualidade do produto, inteiro Existem 22 tipos de sementes, numerados de 1 a 22. A qualidade do produto ´ um n´mero e u que significa: 1=excelente, 2=razo´vel, 3=inferior. Sup˜e-se que o custo de todos os tipos a o de semente ´ o mesmo. e Deve-se definir um algoritmo que leia o arquivo e determine e escreva qual o tipo de semente mais produtiva, seguindo o crit´rio: e Se o trigo produzido ´ excelente, a produtividade do lote deve ser aumentada em 20%. e Se o trigo ´ inferior, a produtividade do lote deve ser diminu´ em 15%. e ıda Para cada tipo de semente, devem ser totalizadas as informa¸oes de ´rea e peso do c˜ a produto produzido. A semente mais produtiva ´ aquela que tiver maior coeficiente peso / e ´rea. a Exerc´ ıcio 130 Uma distribuidora de bebidas abastece o mercado com COCA-COLA. A empresa, no momento, est´ preparando o iminente lan¸amento da coca diet´tica. Assim, a c e resolveu fazer uma pesquisa de opini˜o na cidade para determinar qual a melhor estrat´gia a e a seguir. Os dados da pesquisa est˜o em um arquivo cujo lay-out ´: a e Identifica¸~o do quarteir~o da cidade, inteiro ca a Quantidade de crian¸as no quarteir~o, inteiro c a Quantidade de adolescentes no quarteir~o, inteiro a Quantidade de pessoas obesas, no quarteir~o, inteiro a Quantidade de diab´ticos no quarteir~o, inteiro. e a Quantidade total de pessoas no quarteir~o, inteiro a Deve-se criar um algoritmo que leia e processe os dados informando: 1. Quantos quarteir˜es tem mais de 100 obesos o 2. Qual a percentagem m´dia (=m´dia das percentagens) de crian¸as por quarteir˜o e e c a 3. Quantos quarteir˜es tem mais adolescentes do que crian¸as o c 4. Quantos quarteir˜es tem mais de 5 % de diab´ticos. o e Exerc´ ıcio 131 Uma revenda de autom´veis quer fazer uma pesquisa para determinar o se h´ correla¸˜o entre renda familiar e cor do autom´vel adquirido. Para tanto, cada venda a ca o realizada no mˆs passado, gerou um registro magn´tico contendo: e e Renda fam´lia, real (em R\$) ı Cor do carro adquirido, cadeia As cores poss´ ıveis s˜o: amarelo, azul, branco, cinza, marrom, preto e verde. J´ as classes a a de renda s˜o 3: Classe 1, vai de 0 at´ 50 Sal´rios m´ a e a ınimos. A classe 2, vai de 50,01 SM at´ e 150 SM. A classe 3 ´ de quem ganha mais que 150 SM. e Para cada registro lido, deve-se ver em qual categoria ele cai (para tanto, o programa ler´ no in´ a ıcio, o valor de um sal´rio m´ a ınimo) e incrementar 1 em uma vari´vel que relacione a a cor e a classe. Ao final, o programa deve imprimir: CLAS 1 2 3 AMARELO xxx xxx xxx AZUL xx xx xx BRANCO xx xx xx CINZA xx xx xx MARROM xx xx xx 144 PRETO xx xx xx VERDE xx xx xx vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 129 Uma partida de rolamentos ´ composta de quantidades vari veis de e rolamentos tipos 1, 2 e especial. Ela ´ aceita no TODO quando: e pelo menos 97 % de rolamentos tipo 1 n˜o tem defeito E a pelo menos 95 % de rolamentos tipo 2 n˜o tem defeito E a Menos de 1000 rolamentos tipo especial tem defeito. Os dados referentes a cada partida est˜o no computador na forma a NUMPAR, inteiro, TIP, caracter, QTDROL, inteiro, QTDDEF, inteiro NUMPAR ´ um n´mero que identifica a partida. No arquivo existem diversas partidas, por´m e u e todos os dados de uma partida est˜o agrupados. TIP, ´ apenas um caracter cujo conteudo a e pode ser: ”1”, ”2”ou ”E”. QTDROL ´ a quantidade de rolamentos deste tipo que existem e vers˜o de 10 de fevereiro de 2008 a 143 88-08, Pedro Kantek 88-08, Pedro Kantek CAP´ ITULO 8. VETORES E MATRIZES CAP´ ITULO 8. VETORES E MATRIZES fimenquanto se I = ULTIMOUSALDO+1 ent˜o a 8: retorne I 9: sen˜o a 10: retorne -1 11: fimse Olhando os 2 algoritmos (que est˜o corretos) podem-se fazer algumas afirma¸oes. Supondo a c˜ que existem 800.000 valores em VET, analise as afirma¸oes a seguir e informe ao final a c˜ soma das afirma¸oes verdadeiras: c˜ 6: 7: Exerc´ ıcio 132 Um fabricante de margarina planeja homenagear a sua m˜e no lan¸aa c mento de um novo produto no ano que vem. A nova margarina dever´ ter um nome formado a por alguma combina¸˜o das letras M,E,R,T,A, que ´ o nome da m˜e do fabricante. O exca e a erc´ deve criar o algoritmo que fa¸a e escreva as 120 combina¸oes poss´ ıcio c c˜ ıveis. Analisando o relat´rio, o fabricante escolher´ o nome que quiser. o a Exerc´ ıcio 133 O instituto Nacional de Pesquisas Ufol´gicas estuda com interesse a o ocorrˆncia de contactos com seres extraterrestres em 5 pa´ e ıses: Brasil, Argentina, Canad´, a Estados Unidos e Portugal. Cada contacto ´ minuciosamente analisado e um resumo ´ e e cadastrado no computador. Os dados s˜o: a M^s da ocorr^ncia, inteiro e e Ano da ocorr^ncia, inteiro e Pa´s, cadeia ı Grau do contacto, inteiro (1, 2 ou 3) Confiabilidade, (1=prov´vel embuste, 2=razo´vel, a a 3=confi´vel, 4=certo!) a A partir deste arquivo, deseja-se saber: 1. Qual o pa´ com mais relatos ? ıs 2. Qual o pais que proporcionalmente ao n´mero de contactos apresenta mais embustes u ? 3. Qual o Pais com mais contactos do terceiro grau, confi veis ou certos? 4. Qual o mˆs mais prop´ a ocorrˆncias ? e ıcio e 1 O algoritmo 1 ´ o mais r´pido e a 2 O segundo nunca detecta a ausˆncia da chave, pois logo de cara inclui o elemento a buscar e 4 No segundo algoritmo, como a vari´vel ULTIMOUSADO n˜o ´ alterada a inclus˜o da a a e a chave buscada n˜o ocorre a 8 O segundo algoritmo ´ mais r´pido e a 16 A eventual ordena¸˜o em ambos os casos deixa os algoritmos mais r´pidos ca a Pede-se a soma das afirma¸oes verdadeiras c˜ Exerc´ ıcio 135 No algoritmo a seguir, de uma fun¸˜o que detecta se o n´mero X ´ ou ca u e n˜o ´ primo, h´ quatro lacunas. Informe qual comando deveria ser colocado em cada uma a e a das lacunas: 1: l´gico fun¸˜o PRIMO(inteiro X) o ca 2: inteiro QTD ← 0 3: inteiro QUO ← 2 4: enquanto QUO ≤ teto(raiz-quadrada(X)) ∧ QTD = 0 fa¸a c 5: // teto(y) ´ o pr´ximo inteiro maior ou igual a y e o 6: se X mod QUO = 0 ent˜o a 7: . 8: fimse . 9: 10: fimenquanto 11: se QTD = 0 ent˜o a 12: retorne . 13: sen˜o a 14: retorne . 15: fimse a) b) c) d) e) QTD++; QUO++; QTD++; QTD++; QTD++; QUO++; QTD++; QUO--; QUO--; QUO++; verdadeiro; falso falso; verdadeiro falso; verdadeiro verdadeiro; falso falso; verdadeiro Exerc´ ıcio 134 Vocˆ tem a seguir 3 fun¸oes que buscam um determinado valor que e c˜ pode ou n˜o estar contido em um vetor, por hip´tese, GLOBAL. Considere o nome do vetor a o como VET, e considere tamb´m que ele tem espa¸o de sobra no seu final. Assim, por e c exemplo, ele pode ter espa¸o para 1.000.000 de valores, mas atualmente usa bem menos do c que isso. Considere tamb´m a existˆncia de uma vari´vel GLOBAL chamada ULTIMOUSADO que e e a cont´m o valor do ultimo valor v´lido dentro de VET. e ´ a O algoritmo 1 ´ o seguinte: e 1: inteiro fun¸˜o BUSCALIN (inteiro CHAVE) ca 2: inteiro I ← 1 3: inteiro RESPOSTA ← -1 4: enquanto I ≤ ULTIMOUSADO fa¸a c 5: se CHAVE = VET[I] ent˜o a 6: RESPOSTA ← I 7: I ← ULTIMOUSADO+1 8: fimse 9: I++ 10: fimenquanto 11: retorne RESPOSTA Para o algoritmo 2: 1: inteiro fun¸˜o BUSCALINSEN (inteiro CHAVE) ca 2: inteiro I ← 1 3: VET[ULTIMOUSADO+1] ← CHAVE {note que ULTIMO n˜o ´ alterado} a e 4: enquanto CHAVE = VET[I] fa¸a c 5: I++ vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 136 Suponha 2 pilhas, devidamente definidas para armazenarem n´meros u inteiros, de nomes A e B. Considere que elas tem capacidades grandes (infinitas, neste caso espec´ ıfico). Na situa¸˜o inicial A pilha A cont´m os seguintes elementos: 1 (o primeiro a ca e entrar), 5, 8, 14, 3, 2, 9, 6, 7 e 5 (o ultimo a entrar) e B est´ vazia. ´ a Ap´s a execu¸˜o do trecho correto de algoritmo a seguir, qual o conte´do de B (lido do o ca u primeiro a entrar para o ultimo a sair) 88-08, Pedro Kantek 145 88-08, Pedro Kantek 146 vers˜o de 10 de fevereiro de 2008 a CAP´ ITULO 8. VETORES E MATRIZES 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: CAP´ ITULO 8. VETORES E MATRIZES 150 elementos), sujeito a seguinte C [1 3 5 ... 97 99] C [2 4 6 ... 98 100] C [101 102 103 ... 149 150] lei de forma¸˜o: ca ←A ← B [1 2 3 ... 49 50] ← B [51 52 53 ... 99 100] inteiro S ← 10 enquanto (S ≤ 50) fa¸a c Y ← desempilha (A) S←S+Y empilha (B, Y) fimenquanto enquanto n˜o vazia (B) fa¸a a c Y ← desempilha (B) se Y mod 2 = 0 ent˜o a empilha (A, Y) fimse fimenquanto 1, 5, 8, 14, 2, 6 14, 2, 6 5, 7, 6, 9, 2, 3, 14 1, 5, 14, 2, 6 1, 5, 8, 14, 3, 2, 9, 6, 7, 5 Exerc´ ıcio 144 Definir algoritmo que leia um conjunto de 20 valores reais, armazene-os em um vetor e a seguir calcule a somat´ria expressa pela express˜o: o a S = (A1 − A20 )2 + (A2 − A19 )2 + ... + (A10 + A11 )2 Exerc´ ıcio 145 Definir algoritmo que leia as notas de 120 alunos. Durante o processo de leitura devem ser calculadas a m´dia e o desvio padr˜o. Posteriormente, devem-se ime a primir as notas que estiverem fora do intervalo: limite inferior: Media - 3 × desvio padr˜o a limite superior: Media + 3 × desvio padr˜o. a (X − Xm )2 n Exemplo: Dadas 5 notas (8,9,2,5,6), calcular seu desvio padr˜o: a DP = C´lculo da m´dia: 8 + 9 + 2 + 5 + 6 / 5 → 6 (m´dia) a e e pares: (8 - 6), (9 - 6), (2 - 6), (5 - 6), (6 - 6) Resultados: 2, 3, 4, 1, 0 Ao quadrado: 4, 9, 16, 1, 0 Somat´rio: 30 o Divido por 6: 5 Raiz de 5: ±2,2. Logo o D.P. ´ 2,2. e a) b) c) d) e) Exerc´ ıcio 137 Definir algoritmo que leia uma cadeia de 200 caracteres e escreva a quantidade de letras mai´sculas que s˜o seguidas por uma letra min´scula. u a u Exerc´ ıcio 138 Definir algoritmo que leia um vetor de 208 inteiros e escreva os elementos que est˜o entre n´meros maiores ou iguais. a u Exemplo: Se o vetor lido foi 1 16 4 24 23 22 10 8 8 8 7 1 2 0 3 devem ser impressos os n´meros 16, 24, 8, 8 e 2. u Exerc´ ıcio 139 Escreva algoritmo de uma fun¸˜o que leia um vetor de n´meros de ca u matr´ ıcula dos alunos aprovados em estrutura de dados (95 alunos) e que receba a matr´ ıcula de um aluno qualquer. A fun¸˜o deve devolver .V. se o aluno foi aprovado e .F. se foi ca reprovado. Exerc´ ıcio 140 Definir algoritmo que implemente uma variante da linguagem do ”P”, a seguir descrita. Toda s´ ılaba formada s´ por uma consoante e uma vogal ´ considerada o e process´vel. A esta, na saida, deve ser agregada outra s´ a ılaba com a consoante ”P”e a mesma vogal. O resto do texto n˜o deve ser alterado. Definir algoritmo que leia uma frase de 150 a caracteres, toda em mai´scula e escreva o resultado com os ”P”s incluidos. u Exemplo: O RATO VAI AO BURACO O RAPATOPO VAPAI AO BUPURAPACOPO Exerc´ ıcio 146 Existe um livro de 370 p´ginas que foi recentemente impresso. A editora a deseja fazer um estudo sobre poss´ ıveis erros de impress˜o. Desta forma, um especialista foi a convidado a levantar quantos erros existem em cada p´gina. Cada valor foi digitado na a forma de um vetor, formando um conjunto de 370 valores. Definir um algoritmo que leia este conjunto de dados, armazene-o na forma de vetor, e responda: 1. Qual a p´gina que tem mais erros ? (Suponha que s´ existe uma, isto ´ ela ´ unica) a o e e´ 2. Quantas p´ginas tem zero erros ? a Exerc´ ıcio 141 Definir algoritmo que leia um vetor de 400 elementos inteiros e gere um segundo vetor de 200 elementos, onde cada elemento ´ a soma de dois elementos e consecutivos do vetor de entrada. 3. Quantas p´ginas tem mais de 10 erros ? a Exerc´ ıcio 147 Definir algoritmo que leia datas (sempre referentes a 1990), no formato DD,MM. Os dados devem terminar quando for lido um dia = 0. Ao lado de cada data, o algoritmo deve imprimir o n´mero de dias transcorridos desde o dia 1 de janeiro de 1990. u Exerc´ ıcio 142 Dado um vetor DIST com 15 distribui¸oes de freq¨encia estat´ c˜ u ısticas, criar um vetor ACUM, tamb´m de 15 elementos, contendo as distribui¸oes acumuladas. O e c˜ algoritmo deve ler DIST e imprimir DIST e ACUM. Exerc´ ıcio 148 Definir um algoritmo que leia valores sempre inferiores a 731. Para cada valor dia, o programa deve informar a qual dia de 89 ou de 90 ele se refere, supondo que o dia 1 corresponde a 1 jan 89 e o dia 730 a 31 dez 90. Dados terminam quando for lido um valor maior do que 730. 88-08, Pedro Kantek Exerc´ ıcio 143 Imagine 2 vetores de nomes A (com 50 elementos inteiros) e B (com 100 elementos inteiros). Defina um algoritmo que crie um terceiro vetor de nome C (com vers˜o de 10 de fevereiro de 2008 a 147 88-08, Pedro Kantek 148 vers˜o de 10 de fevereiro de 2008 a CAP´ ITULO 8. VETORES E MATRIZES CAP´ ITULO 8. VETORES E MATRIZES Note-se que a rigor, qual ´ a primeira dimens˜o e qual a segunda ´ um crit´rio do e a e e programador. No caso acima, a matriz ter´ 5 linhas por 12 colunas, mas nada impediria a que ela fosse declarada como 12 linhas por 5 colunas. Exemplos a) A cria¸ao de uma matriz 8 x 12 devidamente zerada, poderia ser asc˜ sim: 1: M vetor de [1..8] [1..12] de real 2: inteiro I,J 3: para I de 1 at´ 8 fa¸a e c 4: para J de 1 at´ 12 fa¸a e c 5: M [I] [J] ← 0 6: fimpara 7: fimpara b) Dada uma matriz 7 x 13 devidamente preenchida, o algoritmo que encontra a transposta desta matriz ´ e 1: M1 vetor de [1..7] [1..13] de real 2: M2 vetor de [1..13] [1..7] de real 3: inteiro I,J 4: leia(M1) 5: I ← 1 6: enquanto (I < 8) fa¸a c 7: J←1 8: enquanto (J < 14) fa¸a c 9: M2 [J] [I] ← M1 [I] [J] 10: J←J+1 11: fimenquanto 12: I←I+1 13: fimenquanto Exerc´ ıcio 149 Definir algoritmo que leia 2 horas referentes sempre ao mesmo dia. A primeira hora indica quando um determinado processo produtivo come¸ou, e a segunda hora c indica quando ele terminou. Para cada par de horas, o programa deve calcular e imprimir qual a dura¸˜o do processo em horas, minutos e segundos. Os dados de entrada est˜o no ca a formato: HH,MM,SS. O dado de sa´ tamb´m est´ no mesmo formato. ıda e a Exerc´ ıcio 150 Vocˆ precisa resolver um problema relativo a astronomia. Neste caso, e pela magnitude dos n´meros, o tipo real n˜o ´ suficiente. O Objetivo do exerc´ ´ escrever u a e ıcio e um algoritmo capaz de implementar n´meros inteiros com 40 casas de precis˜o, e com eles u a realizar opera¸oes de adi¸˜o. Exemplo: Se o algoritmo ler os n´meros: c˜ ca u 0000000200000300004000032000001000100000 e 0000001010000600007000010010001000800002 a resposta ser : 00000001210000900011000042010002000900002 Deve-se atentar que a resposta pode ter 41 casas. Exerc´ ıcio 151 O ano letivo em uma pr´-escola tem 125 dias de aula. Em cada dia, ´ e e escolhido o aluno de melhor comportamento e seu n´mero de matr´ u ıcula ´ colocado em um e vetor de 125 elementos na posi¸˜o correspondente ao dia espec´ ca ıfico (1. elemento do vetor corresponde ao 1.dia de aula, e assim por diante). Definir algoritmo que ao final do ano, quando o vetor estiver todo preenchido informe (escreva) qual o n´mero do aluno que mais u apareceu no vetor. O n´mero de matr´ u ıcula varia entre 1 e 2000 inclusive. Exerc´ ıcio 152 A Pol´ Rodovi´ria vai usar uma nova abordagem para a repress˜o ıcia a a ao excesso de velocidade na estrada. Na sa´ de Curitiba, em dire¸˜o a Paranagu´, um ıda ca a posto vai anotar e digitar no computador as placas dos carros que passarem. Na chegada `s praias, outro posto vai fazer o mesmo trabalho. Desde que o computador tem rel´gio e a o sabe a que horas aconteceram os dois fatos, e conhecendo a distˆncia entre os dois postos, a que ´ de 92,6 Km, o programa ir´ multar os mais afobados. e a O exerc´ pede que seja feita a rotina do programa que receber´ os dois hor´rios (no ıcio a a formato hh,mm ambos inteiros) e determine se o carro deve ou n˜o ser multado. Lembrar a que a velocidade m´xima permitida ´ de 100 Km/h, com uma tolerˆncia de 10 %. a e a Exerc´ ıcio 153 Definir algoritmo que some duas matrizes A e B, de 7 linhas por 8 colunas cada uma, gerando a matriz C, tamb´m 7 x 8, onde cada elemento de C ´ a soma e e dos dois elementos correspondentes em A e B. 8.8 Matriz Exerc´ ıcio 154 Definir algoritmo que some duas matrizes A e B, de 7 linhas por 8 colunas cada uma, gerando a matriz C, tamb´m 7 x 8, onde cada elemento de C ´ a soma e e dos dois elementos correspondentes em A e B, com uma restri¸˜o: S´ se pode usar um ca o ´ ındice. Dica: L = f (x); C = f (x). Como s˜o f e f ? a Pelas mesmas raz˜es que nos levaram a criar o conceito de vetor, precisaremos agora o tratar de um outro tipo de organiza¸ao de dados: as matrizes. Trata-se de arranjos c˜ bi-dimensionais; de dados. Apenas para compara¸ao, os vetores s˜o arranjos unidimenc˜ a sionais de dados. Excepcionalmente, podemos ter mais de duas dimens˜es, permitindo o algumas linguagens trˆs ou mais. Algumas s˜o mais privilegiadas neste aspecto: APL e a por exemplo, permite at´ 256 dimens˜es em algumas implementa¸oes e at´ 64 em outras. e o c˜ e Nos vetores, n´s precis´vamos um ´ o a ındice para referenciar um determinado elemento do vetor. No caso da matriz bi-dimensional, precisaremos 2 ´ ındices: o ´ ındice da linha e o da coluna. No caso de matrizes tridimensionais, s˜o trˆs os ´ a e ındices: plano, linha e coluna. O formato ´ similar ao da defini¸ao de vetor, agora acrescentando-se apenas a quane c˜ tidade de elementos na segunda dimens˜o. O formato ´ a e <nome> vetor de [in..fi] [in..fi] de <tipo> Por exemplo, a defini¸ao de uma matriz para conter os pre¸os mensais (12 meses) de um c˜ c produto ao longo dos ultimos 5 anos, seria ´ 1: PRECO vetor de [1..5] [1..12] de real ¸ vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 155 Definir algoritmo onde dada uma matriz M1 de 6 x 9, devemos totaliz´a la na vertical gerando um vetor de 9 elementos. Imprimir este vetor. A seguir deve-se encontrar e imprimir a m´dia destes 9 valores. e Exerc´ ıcio 156 Defina algoritmo capaz de ler uma matriz quadrada de ordem 23 e totalizar os elementos colocados abaixo da matriz principal (exclusive esta), imprimindo o total ao final. Exerc´ ıcio 157 Defina um algoritmo capaz de ler duas matrizes de dimens˜es 4 e 9 (a o primeira) e 9 e 7 (a segunda). Ap´s lidas as matrizes devem ser multiplicadas matricialmente o gerando uma sa´ de dimens˜es 4 x 7. A matriz resultado deve ser impressa ao final. ıda o Exerc´ ıcio 158 Uma matriz esparsa ´ aquela que conta com grande n´mero de elee u mentos nulos dentro dela. Podemos arbitrar que uma matriz ´ esparsa quando apenas 5% e 88-08, Pedro Kantek 149 88-08, Pedro Kantek 150 vers˜o de 10 de fevereiro de 2008 a CAP´ ITULO 8. VETORES E MATRIZES dos seus elementos n˜o s˜o nulos. Uma maneira razo´vel de armazenar matrizes esparsas a a a ´ criar ”matrizes comprimidas”que guardam a linha e a coluna dos valores que n˜o s˜o zero e a a (guardam o valor tamb´m). e Isto posto: Escreva algoritmo que receba matriz esparsa e devolva matriz comprimida. O inverso Supondo matrizes de inteiros, indique quais tamanhos e percentuais de valores diferentes de zero recomendam o uso de matrizes comprimidas (despreze o tempo de processamento para convers˜o.) a Proponha pelo menos outros 2 esquemas distintos deste, de economia de espa¸o para c matrizes esparsas 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: CAP´ ITULO 8. VETORES E MATRIZES fimse K←K+1 fimenquanto C [I] [J] ← menor J←J+1 fimenquanto I←I+1 fimenquanto escreva(C) fim{algoritmo} Exerc´ ıcio Resolvido 17 Dada uma matriz num´rica contendo 30 linhas (uma para e cada aluno) e 5 colunas (1-matricula, 2-nota prova 1, 3-nota prova 2, 4-nota trabalho, 5media), deve-se definir um programa que: leia a matriz (ela vir´ classificada em ordem ascendente de matr´ a ıcula) Reclassif´ ıque-a em ordem descendente de m´dia e escreva o resultado 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: Exerc´ ıcio Resolvido 16 Sejam duas matrizes a quem chamaremos A e B. A tem i linhas e j colunas, e B tem j linhas e k colunas. Deve-se escrever um algoritmo que tenha como resultado a vari´vel C, de i linhas por k colunas, assim constitu´ a ıdos: O elemento (i,k) de C ser´ o menor valor das fra¸oes obtidas dividindo-se todos os pares a c˜ onde o primeiro elemento est´ na linha i de A e o segundo elemento est´ na coluna k de B. a a Exemplo: c[i,k] ´ o menor valor: a[i,1] / b[1,k] ou e a[i,2] / b[2,k] ou a[i,3] / b[3,k] ou ... a[i,n] / b[n,k] Escrever um algoritmo para o caso particular em que A tem 3 linhas e 4 colunas e B tem 4 linhas e 5 colunas. Com isto C ter´ 3 linhas e 5 colunas. O algoritmo deve ler A e B e a imprimir C. 1: algoritmo {exemplo7} 2: MA vetor [1..3] [1..4] de real 3: MB vetor [1..1] [1..5] de real 4: MC vetor [1..3] [1..5] de real 5: inteiro I J K 6: real V1 [4] 7: real menor 8: I ← 1 9: leia (MA,MB) 10: enquanto I < 3 fa¸a c 11: J←1 12: enquanto J < 5 fa¸a c 13: K←1 14: enquanto K < 4 fa¸a c 15: V1[K] ← MA[I] [K] / MB[K] [J] 16: K←K+1 17: fimenquanto 18: menor ← V1 [1] 19: K←2 20: enquanto K < 4 fa¸a c 21: se V1 [K] < menor ent˜o a 22: menor ← V1 [K] vers˜o de 10 de fevereiro de 2008 a algoritmo {exemplo8} MAT vetor [1..30] [1..5] de real MATS vetor [1..30] [1..5] de real V vetor [1..30] de real V ← (1,2,3,4,5,6,... 28,29,30) inteiro I J K leia(mat) i←1 limite ← 30 enquanto limite > 1 fa¸a c I←1 enquanto I < limite fa¸a c se MAT[I] [5] < MAT[I+1] [5] ent˜o a AUX ← MAT[I] [5] MAT[I] [5] ← MAT[I+1] [5] MAT[I+1] [5] ← AUX AUX ← V[I] V[I] ← V[I+1] V[I+1] ← AUX fimse I←I+1 fimenquanto LIMITE ← LIMITE - 1 fimenquanto para I de 1 ate 30 fa¸a c MATS [I][1] ← MAT[V[I]][1] MATS [I][2] ← MAT[V[I]][2] MATS [I][3] ← MAT[V[I]][3] MATS [I][4] ← MAT[V[I]][4] MATS [I][5] ← MAT[V[I]][5] fimpara escreva(mats) fim{algoritmo} 152 vers˜o de 10 de fevereiro de 2008 a 151 88-08, Pedro Kantek 88-08, Pedro Kantek Deseja-se um algoritmo que informe: ´ 1. C] > 100 ent˜o C[L. Pedro Kantek Exerc´ ıcio 164 Definir algoritmo que efetue a multiplica¸˜o matricial de duas matrizes. Exemplo: se a matriz lida for (3 x 4): 1 1 0 4 1 0 3 2 3 2 1 3 ser: Exerc´ ıcio 168 Dada uma matriz de dimens˜es 9 x 12. Qual a m´dia das popula¸oes das capitais do Brasil ? e c˜ 3. Exerc´ ıcio 165 Escrever um algoritmo que leia (de uma s´ vez) uma matriz de 23 o linhas por 10 colunas. cada um iniciando os n´ meros. c˜ u Assim. definir algoritmo que a leia. Pedro Kantek 154 vers˜o de 10 de fevereiro de 2008 a . com exce¸˜o a ca da primeira coluna. A matriz resultado deve ser impress˜o ao final. Quais as maiores cota¸oes dia a dia (22 valores) c˜ 2. Em cada linhas. ca que dever˜o ser lidas de uma s´ vez: A primeira matriz tem forma 8 linhas por 9 colunas. Muito mais do que os demais d´ ıgitos. 2. teoricamente. 3. VETORES E MATRIZES Exerc´ ıcio 159 Definir um algoritmo que leia uma matriz 9 x 9. C] ← A[L. mas ´ verdade: em qualquer tabela. Em quais dias a m´dia da manh˜ (primeiros 5 valores) foi maior do que a m´dia da e a e tarde (5 ultimos valores). devendo gerar uma terceira matriz sujeita as seguintes regras: e Se A[L. C] ≤ 100 ent˜o C[L. Exerc´ ıcio 161 Definir algoritmo que leia duas matrizes A e B. toda nossa l´gica aritm´tica se criou sobre um sistema decimal (de o e 10).. C] + B[L. C] + B[L. de hora em hora (das 09:00 as 18:00 = 10 linhas). C] a Exerc´ ıcio 167 Dada uma matriz de dimens˜es 8 x 15. as colunas est˜o em ordem decrescente. escreva-a. ´ Exerc´ ıcio 160 Definir algoritmo que leia duas matrizes (A e B) de dimens˜es 7 x 13 e o gere uma terceira matriz. e a seguir classifique as linhas da matriz pelos valores indicados na coluna 4. e nos o 22 dias uteis de julho/89 (22 colunas). obter uma outra tamb´m de o e dimens˜es 9 x 12. C] e a se A[L.CAP´ ITULO 8. Ou ser´ que existem ? c u a Em 1938. Qual o n´mero do estado de capital mais populosa ? u 2.. seria u de se esperar que os d´ ıgitos 1. onde cada elemento ´ o maior entre os elementos correspondentes e em A e B. O algoritmo deve imprimir: 1. escreva-a. deve-se criar um algoritmo capaz de lˆ-la de uma s´ vez. depois de calculado. obter uma outra tamb´m de o e dimens˜es 8 x 15. 88-08. uma grande quantidade e de n´ meros come¸a com o d´ u c ıgito 1. aparecessem em 10% das vezes. inverta suas linhas e a seguir. . acabou descobrindo que sim. C] ← B[L. que sempre representa a capital. O resultado. e a seguir gerar uma matriz de idˆntica forma (8x6) onde cada e o e linha ´ o produto acumulado da linha da matriz original. independente da fonte ou do fenˆmeno que ´ cono e sultado. e por que temos 10 dedos. deve ser impresso. Exemplo: e Se a matriz lida for: 1 4 1 2 3 2 2 2 5 0 3 2 0 o resultado ser´ a 2 4 2 1 4 1 2 3 15 0 8 0 0 2 6 24 4 8 16 Exerc´ ıcio 163 Definir um algoritmo que leia uma matriz 5 x 8. Exemplo: se a matriz lida for (3 x 8): 1 1 0 4 1 0 3 2 3 2 1 3 1 0 2 2 0 3 3 7 7 4 8 9 Porquˆ tudo come¸a com 1 ? e c a resposta dever 1 4 3 2 1 2 1 8 2 0 0 1 0 9 3 3 2 3 ser: 3 4 7 1 7 0 A palavra digital vem do latim digitus que significa dedo. um matem´tico chamado Benford. de 9 x 16 elementos num´ricos. Quais os n´meros (de estado e de munic´ u ıpio) dos munic´ ıpios que tem popula¸˜o maior ca que a capital ? vers˜o de 10 de fevereiro de 2008 a 153 88-08. Exerc´ ıcio 162 Definir um algoritmo que leia uma matriz 5 x 7. some-a com a sua transposta e escreva o resultado. a existem d´ ıgitos iniciais mais frequentes do que outros. Parece estranho. e a o a segunda tem 9 linhas por 3 colunas. u Afinal. a ca 3. n˜o existem d´ a ıgitos mais bonitos ou mais simp´ticos para que apare¸am a c no come¸o dos n´ meros mais do que os outros. VETORES E MATRIZES CAP´ ITULO 8. a a resposta dever 0 0 3 3 1 1 2 1 1 4 3 2 Exerc´ ıcio 170 Dada uma matriz de 8 linhas por 6 colunas. se analisarmos um grande conjunto de n´ meros. Exerc´ ıcio 166 Uma matriz representa os valores da cota¸˜o da soja no mercado de ca Chicago em d´lares por tonelada. onde cada linha foi dividida pelo menor elemento da linha correspondente o na matriz original. inverta suas colunas de ordem par e a seguir. onde cada linha foi dividida pela somat´ria dos elementos da linha correo o spondente na matriz original. Qual a hora em que foi mais freq¨ente aparecer a maior cota¸˜o (Neste caso n˜o u ca a haver´ empate. J´ que s˜o 10 d´ a a ıgitos e qualquer n´ mero ´ composto por uma combina¸ao u e c˜ desses d´ ıgitos seria de se esperar que cada um dos 10 d´ ıgitos tivesse uma distribui¸ao proporcional quando vai se representar um n´ mero qualquer. por defini¸˜o). Esta matriz representa a popula¸˜o dos 10 maiores munic´ ca ıpios de cada estado Brasileiro. Ele estudou um monte de distribui¸oes e chegou a conclus˜o que o d´ c˜ ` a ıgito 1 ocorre no come¸o em c cerca de 30% das vezes. Exerc´ ıcio 169 Dada uma matriz de 7 linhas por 12 colunas. 5 4.0 9.4 6.1 4.4 13.7 1389 1800 159 91 5000 308 707 1458 342 900 418 1011 vers˜o de 10 de fevereiro de 2008 a 155 88-08. Parece que a distribui¸ao do primeiro d´ c˜ ıgito em n´ meros segue a seguinte u distribui¸ao logar´ c˜ ıtmica: P (n) ≈ log(n + 1) − log n para n = 1. VETORES E MATRIZES Col.6 10.5 6.5 17. 2.1 5.9 5. Pedro Kantek 88-08.1 4.4 12.9 5.0 6.7 27. CAP´ ITULO 8.2 4.3 18.5 8.0 15.2 5.7 8.0 5.6 12.1 3.4 6.0 6.4 10.3 27.0 8.7 20. Tabela 8.2 1.4 25.4 14.0 5.0 26.8 12.2 23..5 5.9 4.6 7.2 10.4 18.1: Distribui¸ao dos primeiros d´ c˜ ıgitos T´ ıtulo do assunto 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N Popula¸oes c˜ Constantes Exemplares aleat´rios o de jornais Calores espec´ ıficos de substˆncias a Peso molecular Drainage Peso atˆmico o √ n−1 ou n exemplares do Reader’s Digest Voltagem de raios X Dados da liga americana de baseball Endere¸os c aleat´rios o n1 .5 9. VETORES E MATRIZES Veja-se a seguinte conjunto de dados.6 19.1 5.5 6.5 16.2 5.7 33.9 18. Pedro Kantek 156 vers˜o de 10 de fevereiro de 2008 a .n! Taxas de Mortalidade M´dia e 33.2 4.CAP´ ITULO 8.7 2.2 25.9 41. Veja na ıdo tabela 8.9 32..4 27.4 9.9 4.8 6.4 14.2 6.0 20.9 5.0 3.1 7.4 6.4 8.8 5. Este ´ a ”Lei do Primeiro D´ e ıgito”.5 8.4 8.6 4.0 N´ meros u pesquisados 3259 104 100 24. extra´ do livro de Benford.8 6.6 18.0 4.9 5.9. n2 .4 3.0 4.6 5.0 9.8 4.1 5.5 4.2 16.0 4.2 4.8 8.3 7.8 12.5 17.2 5..1 1.7 8.6 6.0 3..6 18.7 12.8 3.0 30.6 6.4 8.8 2.0 4.8 5.4 6.7 12.8 7.6 8.6 5.6 12.1 4.1 47.7 28.2 15.1.0 18. .0 14. .1 4.8 10.8 2.3 30.0 7.6 6.8 6.0 2.5 7.1 8.5 9.8 7.2 10.4 14.0 7.6 10.9 25.1 8. N˜o e u a tem como definir estra estrutura usando vetores..INFLACAO[11] e PARAGUAI. O processamento a termina quando for lido um dia igual a 00.. ele pode ser usado em qualquer local da linguagem onde a indica¸ao <tipo> apare¸a.real.PRESTACAO registro de vetores Tamb´m nada impede que um registro tenha vetores e estrutura ECONOMETRIA pontoflutuante INFLACAO[12] inteiro POPULACAO inteirolongo PIB fim { estrutura } ECONOMETRIA BRASIL. As coisas s˜o reconhecidas pelo c˜ a seu nome. por exemplo. n˜o ocupa lugar na mem´ria e a e a o ˜ NAO pode ser referenciada em comandos) com VEICULO (a vari´vel cuja estrutura ´ a e PLACA. pode ser referenciada. REGISTROS Deve-se lembrar que uma matriz tamb´m pode ser definida com um vetor de vetores e (ou um registro). Na primeira. PARAGUAI Neste caso. estrutura PLACA caracter LETRA[3] inteiro NUMERO fim {estrutura} PLACA VEICULO VEICULO..CAP´ ITULO 9. ao inv´s de e MAT[3] [4] ← . em vetores. 1: tipo R = registro 2: inteiro: dia 3: real:valor 4: fimregistro 5: R: reg 6: tipo V = vetor[1:31] real 7: V: acum 8: acum ← 0 9: leia(reg) 88-08.INFLACAO[12]. quais as vari´veis que ser˜o mapeadas e a a por essa estrutura. Pedro Kantek 158 vers˜o de 10 de fevereiro de 2008 a .1 Defini¸˜o de registros ca ´ ˆ registro E uma cole¸ao HETEROGENEA de coisas. estrutura DEBITO inteiro RG pontoflutuante PRESTACAO fim {estrutura} DEBITO CLIENTES[100] Neste caso..NUMERO) N˜o confunda PLACA (´ apenas uma estrutura. uma placa de automovel ´ um conjunto de 3 letras e 4 n´ meros. far´ ıamos: CLIENTES[10].LETRA. que seria o normal de uma matriz.inteiro. PARAGUAI. definee se do que ´ composta a estrutura. Por exemplo. Ela ´ criada em duas etapas.. Criar um algoritmo capaz de ler os dados e imprimir os totais di´rios. ARGENTINA..COLUNAS[4] ← . VALOR. como acessar as 2 ultimas taxas de infla¸ao de BRASIL e de PARAGUAI ? ´ c˜ BRASIL. O acesso agora se d´ a MAT[3]. <tipo> <nome campo n> fim {estrutura} Utiliza¸ao da estrutura em vari´veis: c˜ a <nome da estrutura> <nome da vari´vel> a // exemplo: ENDERE¸O CLIENTE C // exemplo: estrutura ENDERE¸O C // alfanum RUA [30] // inteiro N´MERO U // inteiro CEP // alfanum CIDADE [20] // fim {estrutura} Obviamente. c˜ c 9. vetor de registros Nada impede que um registro seja vetorizado. existe uma matriz MAT contendo 20 linhas por 10 colunas. Tais registros tem o formato: e REG: DIA..INFLACAO[11] Cap´ ıtulo 9 Registros Este tipo indica uma estrutura complexa. e na segunda.. Acompanhe. 157 Exerc´ ıcio Resolvido 18 Uma organiza¸˜o tem um conjunto de registros de vendas ca do mˆs de janeiro de 1988.NUMERO ← 1234 leia VEICULO leia (VEICULO. depois que um tipo estrutura foi definido. existe um vetor de 100 (registros) d´bitos. VEICULO.INFLACAO[12]. BRASIL. Defini¸~o da estrutura: ca estrutura <nome da estrutura> <tipo> <nome campo 1> <tipo> <nome campo 2> . Acompanhe: estrutura LINHAS inteiro COLUNAS[10] fim { estrutura } LINHAS MAT[20] Note que neste caso. ocupoa lugar. Para acessar a presta¸ao do 10o e c˜ cliente.LETRA ← “ABC” VEICULO. formada por v´rios tipos primitivos. e que a passam a ser usados conjuntamente. a m´dia final e a mensagem: e ´ ”PARABENS”. 1: inteiro: dia. deve-se imprimir. Pedro Kantek 159 88-08. VALOR.. a e e mensagem ´ ”PRECISAMOS ESTUDAR MAIS. e valor ´ real.valor). Se a m´dia foi menor que 7. Criar um algoe e a e ritmo que leia todo o arquivo e escreva os totais di´rios.mˆs. Pedro Kantek 160 vers˜o de 10 de fevereiro de 2008 a . sujeito `s restri¸oes: a c˜ N˜o se pode usar vetor a Os dados j´ vˆem classificados por ordem de dia. mensagem) leia (cad) fimenquanto tipo R = registro inteiro: dia real:valor fimregistro R: reg inteiro: diaant real: total total ← 0 leia(reg) ant ← dia enquanto dia = 0 fa¸a c enquanto dia = diaant fa¸a c total ← total + valor leia(reg) fimenquanto escreva (total) total ← valor diaant ← dia se dia = 0 ent˜o a leia(reg) fimse fimenquanto Exerc´ ıcio Resolvido 20 Uma empresa tem registros de vendas de todo o ano de 1987. 1:31] real 4: M: cad 5: cad ← 0 6: leia (dia. ser´ distribu´ proporcionalmente ao total de vendas de cada um.CAP´ ITULO 9. REGISTROS cad [mes. deve-se ler o arquivo duas vezes.000. N˜o ´ necess rio definir rega a e istro.inteiro NT1.dia] + valor leia (dia. Criar um algoritmo capaz de ler os dados e imprimir os totais di´rios. Cada vendedor receber um fixo de 1. A diferen¸a.mes. A a ıda Empresa tem no m´ximo 50 vendedores .real. t2. a c e quantia que sobrar.dia] ← cad [mes. e tipo C = registro inteiro: matric real: t1.”.. usando a f´rmula: e o M = ((T1 × 2) + T2 + (Nprova × 7)) ÷ 10 Ap´s cada c´lculo.. O processamento a termina quando for lido um dia igual a 00. real Para resolver este algoritmo. calcule a m´dia para cada aluno. pr fimregistro C: cad real: media caracter: mensagem leia (cad) enquanto matric = 0 fa¸a c media ← (t1 * 2) + t2 + (pr * 7) media ← media / 10 se media ≥ 7 ent˜o a ´ mensagem ← ”PARABENS” sen˜o a mensagem ← ”PRECISAMOS ESTUDAR MAIS. media.mes 2: real: valor 3: tipo M = matriz [1:12.real (NT=nota trab) Os dados terminam quando for lida uma matr´ ıcula igual a zero. a e 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: Exerc´ ıcio Resolvido 21 Existe uma turma do curso de PD que teve os dados referentes ao bimestre transcritos em cart˜es na forma: o MATR. o n´mero da matr´ o a u ıcula.valor) 10: fimenquanto 11: escreva(cad) 8: 9: 11: enquanto dia = 0 fa¸a c acum [dia] ← acum [dia] + reg.000 de prˆmio de fim de e ano a seus vendedores. Tais registros tem o formato: e REG: DIA. na forma (dia.NT2:real NOTPROV. Dia e mˆs s˜o inteiros.valor) 7: enquanto dia = 0 fa¸a c vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio Resolvido 22 Existe um arquivo que cont´m alunos que dever˜o se e a dirigir a unidades da universidade para fazer vestibular. leia o arquivo. Tais dados est˜o em um cadastro a que tem o formato: 88-08. e seus dados est˜o em um arquivo que cont´m o a a e lay-out Nome do vendedor. sem usar vetores.valor 12: leia(reg) 13: fimenquanto 14: escreva(acum) ´ Exerc´ ıcio 171 A Empresa DEUNOPE vai distribuir R$ 100.mes. REGISTROS 10: CAP´ ITULO 9. Escreva um algoritmo que defina o registro acima..inteiro. cadeia [30] total de vendas.” fimse escreva (matric. Exerc´ ıcio Resolvido 19 Uma organiza¸˜o tem um conjunto de registros de vendas ca do mˆs de janeiro de 1988. Resolver o problema. caso a m´dia tenha sido maior ou igual a 7. isto ´. responda Quantos alunos cabem no total ? Supondo que alunos n˜o preenchidos cont´m idade = 0. exclua os visitantes do estado do Paran´.estado ← ”BA” 162 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08. (sigla a PR). fimse se U3 ≤ U1 ∧ U3 ≤ U2 ent˜o a UP ← 3. fimse se U2 ≤ U1 ∧ U2 ≤ U3 ent˜o a UP ← 2. Uma viagem ´ composta pelas a e informa¸oes: origem. cadeia[2]. U2. DU ← U1. UP.000 visitantes.real DU3. Veja que cada aluno tem NOME (com tamanho m´ximo de 40 a caracteres). fimse MS ← ME. REGISTROS Pede-se o desenho da ´rea F.estado ← ”AC” tab[2]. Os dados terminam quando e for lido um estado igual a ”XX”. que n˜o deve ser considerado para efeito de c´lculo. leia (CADE). real: DU. tipo S = registro inteiro: MS. inteiro. Os alunos se agrupam em turmas de no m´ximo 70 a alunos. NUMVIS. enquanto ME = 0 fa¸a c se U1 ≤ U2 ∧ U1 ≤ U3 ent˜o a UP ← 1. p´ginas de 43 linhas. tipo E = registro inteiro: ME. c˜ ıs. destino. sigla do estado a que pertence e pa´ Isto posto. fimenquanto CAP´ ITULO 9. h´ que se a ter 3 informa¸oes: nome da cidade. Exerc´ ıcio 175 Suponha que para identificar uma origem ou um destino.CAP´ ITULO 9.estado ← ”AL” tab[3]. ca ´ u estiveram perto de 100. leia (CADE). h´ no UNICENP a 28 cursos. Pedro Kantek tipo R = registro estado : caracter qtd : inteiro fimregistro TAB [1:24] vetor de R reg : R tab[1]. Defina a estrutura em quest˜o a Escreva o algoritmo que imprime as capitulares (primeiro caractere de cada cap´ ıtulo). sujeito as a seguintes limites: linhas de 60 caracteres. Escreva o algoritmo que imprime o cap´ ıtulo 2 Escreva o algoritmo que imprime as p´ginas ´ a ımpares dos cap´ ıtulos pares. com todos os seus componentes a Exerc´ ıcio 173 Projete a estrutura necess´ria para comportar todas as informa¸oes a c˜ dos alunos do UNICENP. fimregistro E: CADE. DU ← U2. data da viagem. escreva a estrutura necess´ria para identificar uma viagem. ESTADO ´ a sigla com 2 caracteres.inteiro distancia. grave (CADS). DU ← U3. idade e c´digo de matr´ o ıcula. real: U1. a a 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Exerc´ ıcio 172 Suponha as seguintes estruturas 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: estrutura X inteiro A real B inteiro C[5] fim estrutura estrutura Y inteiro D X E[3] fim estrutura YF 161 88-08. e totalize por estado de origem. dura¸˜o em dias. em ordem alfab´tica.inteiro Dist-unid-1. qual o algoritmo que conta a e quantos alunos h´ no curso 22 ? a Qual o algoritmo que conta quantos alunos estudam pela manh˜ (1. Finalmente. Cada fam´ informou seu estado de origem e quantos ılia componentes tinha. Tais dados se encontram em um arquivo com o formato: ESTADO. e Criar um algoritmo que leia tal arquivo. Para a estrutura acima. Pedro Kantek . a livros de 18 cap´ ıtulos.real Definir um algoritmo que leia tais registros e para cada um. c˜ ca Exerc´ ıcio Resolvido 23 Na realiza¸˜o da ultima feira de moda no Parque Barig¨i.inteiro Num-uni-mais-prox.real DU2. turno) ? a Qual o algoritmo que imprime o nome de todos os alunos do curso de inform´tica a (curso=8) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: Exerc´ ıcio 174 Suponha a estrutura necess´ria para conter um romance. cap´ a ıtulos de 20 p´ginas.real Os dados acabam quando for lida uma matr´ ıcula zero. REGISTROS MATRE. fimregistro S: CADS. gere um outro registro no formato MATRS.estado ← ”AM” tab[4]. Cada turno tem 4 turmas e cada curso tem 2 turnos. U3. estado = reg.qtd + reg.estado = ”PR” ent˜o a 11: I←1 12: enquanto tab[I].qtd ← tab[i].estado ← ”SP” leia (reg) enquanto (reg.estado ← ”MS” tab[12].estado ← ”RJ” tab[18]. 25: distancia [I] ← di.6] vetor de R 7: tipo R1 = registro 8: av : caracter 9: pa : inteiro 10: di : real 11: fimregistro 12: REG : R1 13: inteiro: I.ESTADO = fa¸a c 13: I←I+1 14: fimenquanto 15: se TAB[I]. O a a objetivo final ´ conhecer a produtividade de cada tipo de avi˜o. DIST. Deve-se escrever um algoritmo que leia o arquivo e crie uma tabela de 6 ocorrˆne cias contendo as quantidades totais de passageiros e distˆncias por tipo de avi˜o. e o 737-300.estado ← ”MA” tab[10].ESTADO ← REG.ESTADO = ent˜o a 16: TAB[I]. A300 e Bandeirantes.qtd ← tab[i]..estado ← ”RN” tab[19].estado = reg. REGISTROS tab[i]. A solu¸˜o ca ficaria: 1: tipo R = registro 2: estado : caracter 3: qtd : inteiro 4: fimregistro 5: TAB [1:24] vetor de R 6: reg : R 7: tab ← .estado = ”PR” ent˜o a I←1 enquanto tab[I]. Os dados terminam quando for lido um tipo totalmente em branco. 26: I ← 7. O programa deve imprimir o nome do tipo de todos os avi˜es. e a o ao lado sua produtividade.qtd + reg.estado ← ”PB” tab[15]. Cada v”o e a que a Companhia realizou no ano tem um correspondente registro neste arquivo.estado ← ”PA” tab[14]. 14: real: prod. 24: passag [I] ← pa. REGISTROS 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: CAP´ ITULO 9. Pedro Kantek Outra possibilidade se solu¸˜o seria n˜o colocar os estados na tabela. Neste caso. a tabela fosse sendo incrementada. onde TIPO ´ um campo de 6 posi¸oes com a identifica¸˜o de tipo de avi˜o.estado ← ”PE” tab[16]. {espa¸os e zeros} c 8: leia (reg). 707.estado ← ”SC” tab[22]. 727.estado ← ”RO” tab[20].qtd fimse 20: leia (reg) 21: fimenquanto 22: escreva (tab) 18: 19: tab[5]..inteiro.. 18: enquanto (I < 7) fa¸a c 19: se aviao [I] = av ent˜o a 20: abandone 21: fimse 22: se aviao [I] = ent˜o a 23: aviao [I] ← av. Do cadastro de viagens realizadas no ultimo ano. PASSAG ´ a e c˜ ca a e quantidade de pessoas transportadas e DIST ´ a distˆncia do trecho percorrido.estado = ”XX” fa¸a c se reg. dada pela raz˜o: pase a a sageiros / distˆncia.estado ← ”RS” tab[21].estado fa¸a c I←I+1 fimenquanto tab[i].ESTADO 17: fimse vers˜o de 10 de fevereiro de 2008 a 163 88-08.estado ← ”MT” tab[13].estado ← ”MG” tab[11].cadeia[6]. ´ obteve-se o seguinte arquivo: TIPO.estado ← ”GO” tab[9]. se a sa´ tivesse ıda que ser ordenada este trabalho teria que ser feito a parte ao final dos dados.estado ∧ TAB[I]. PASSAG.qtd fimse leia (reg) fimenquanto escreva (tab) Exerc´ ıcio Resolvido 24 Uma companhia a´rea tem 6 tipos de avi˜es: 737-200. 15: leia (reg) 16: enquanto (av = ) fa¸a c 17: I ← 1.estado ← ”PI” tab[17]. e a medida que ca a eles fossem chegando.CAP´ ITULO 9. 1: tipo R = registro 2: aviao : caracter 3: passag : inteiro 4: distancia : real 5: fimregistro 6: TAB [1.estado ← ”DF” tab[7].estado = ”XX” fa¸a c 10: se reg.estado ← ”ES” tab[8].estado ← ”SE” tab[23]. Pedro Kantek 164 vers˜o de 10 de fevereiro de 2008 a .real. 27: abandone 28: fimse 29: fimenquanto 30: se I < 7 ent˜o a 88-08. 9: enquanto (reg.estado ← ”CE” tab[6]. eles causam a mudan¸a de linha e o retorno ao in´ da pr´xima linha.10] vetor de real ← 0 M←0 para I de 1 ate 10 fa¸a c V[I] ← I vezes 2 fimpara para I de 1 ate 10 fa¸a c M ← M + V[I] fimpara M←M÷7 R←0 para I de 1 ate 10 fa¸a c R ← R + (V [I] − M )2 fimpara R ← √÷ 7 R R← R escreva R (X − X)2 n Exerc´ ıcio Resolvido 25 Exemplo: multiplica¸˜o matricial ca 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: I←0 J←0 K←0 A [1. nesta acep¸ao ´ um conjunto indeterminado de caracteres..3] ← 3 B[1.4] ← 8 A[3.4] ← 4 A[2.2] ← 7 B[2. Um exemplo deste tipo de caracter s˜o o ”RETORNO a DE CARRO”e o ”MUDANCA DE LINHA”.4] ← 14 B[3.4] ← 4 B[1. desenvolvem-se in´ meras c˜ a u t´cnicas muito uteis para a interpreta¸ao e manuseio de dados na forma alfab´tica. em um curso de l´gica de a o constru¸ao de algoritmos est´ em que para manusear texto.5] vetor de real A[1.3] ← 7 A[2.3] ← 18 B[4.4] [1.3] ← 8 B[2. REGISTROS 40: 41: 42: 43: 44: 45: 46: 47: 48: passag [I] ← passag [I] + pa.3] ← 3 A[1..4] ← 12 B[1.2] ← 6 A[2..1] ← 11 B[3. distancia [I] ← distancia[I] + di. a Um texto. neste caso.2 Processamento de Textos Um cap´ ıtulo important´ ıssimo do processamento de dados se refere ao processamento de texto. aviao [I]. A importˆncia deste assunto.5] ← 5 B[2. prod)... ”produtividade”.2] ← 2 A[1.1] ← 1 A[1.J] fimpara R[I.3] [1. a Alguns caracteres inclu´ ıdos no meio do texto podem format´-lo de maneira a mudar seu a ”visual”quando o imprimirmos.2] ← 10 A[3. I ← I + 1.5] ← 20 para I de 1 ate 3 fa¸a c 165 88-08.5] ← 15 B[4.K] × B[K. Pedro Kantek 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 9.2] ← 2 B[1. Trata-se de transformar o computador em uma super m´quina de escrever a capaz de realizar todas as tarefas triviais do manuseio de textos e tamb´m algumas e outras facilidades desejadas. ou um vetor de caracteres. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 166 vers˜o de 10 de fevereiro de 2008 a .4] ← 19 B[4.4] vetor de real B [1. REGISTROS 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: CAP´ ITULO 9. Pode ser uma c˜ e vari´vel cadeia (limitada a 255). sem limite.1] ← 5 A[2..2] ← 17 B[4.1] ← 16 B[4.4] ← 9 B[2.5] vetor de real R [1. que e ´ c˜ e n˜o necessariamente precisam ser textos.CAP´ ITULO 9. fimenquanto I ← 1.2] ← 12 B[3.J] ← S fimpara fimpara escreva R Exerc´ ıcio Resolvido 26 Exemplo: Desvio Padr˜o Seja o desvio padr˜o a a σ= que ´ calculado pelo seguinte algoritmo e algoritmo dp I←0 V ← [1. c ıcio o Os caracteres ASCII referentes: retorno de carro: CR = carriage return = C´digo o 13 do ASCII LF = line feed = C´digo 10 do ASCII o 88-08.3] ← 11 A[3. enquanto I < 7 fa¸a c prod ← passag [I] ÷ distancia [I] escreva (”Tipo ”. fimse leia(reg). Quando colocados juntos no meio de um ¸ texto. fimenquanto para J de 1 ate 5 fa¸a c S←0 para K de 1 ate 4 fa¸a c S ← S + A[I..3] ← 13 B[3.1] ← 9 A[3.1] ← 6 B[2.5] ← 10 B[3.3] [1.1] ← 1 B[1. Pedro Kantek 168 vers˜o de 10 de fevereiro de 2008 a . para justificar ”IVO. REGISTROS ne = numero de locais receptores de brancos. o caracter. N˜o quebrar palavras. mas pode-se sugerir a seguinte coloca¸˜o: (. No caso b2 = 3 n2 = quantidade de b2’s. surge o problema de estabelecer a frase na linha ALINHADA pela esquerda e pela direita. como fazer isto ? Um poss´ ataque para o problema ´ estabelecer: ıvel e nb = n´mero de brancos (nb = cl . imprimi-lo com tamanho de linha = 60. c˜ Em pascal. existem pelo menos trˆs diferen¸as entre um vetor de caracteres e uma e c cadeia. n2 = nb mod ne. Esta frase termina quando for encontrado um ponto. Exerc´ ıcio 177 Definir algoritmo capaz de receber uma frase e converter as letras min´sculas lidas em mai´sculas. u Exerc´ ıcio 186 Dado um texto.A. alinhado a esquerda. O algoritmo deve ser capaz de responder: Qual o tamanho da frase Quantas palavras existem na frase Quantas vezes a dupla “ma” apareceu na frase. alinhada a esquerda e a direita. a ¸˜ ˜ resposta ser´ a ordem do elemento indexado no universo considerado e NAO o ´ a ındice do elemento dentro do vetor. O algoritmo deve imprimir as palavras cujo comprimento for maior que 6 caracteres. ne = pred (np). e neste caso n˜o h´ necessidade de usarem-se delimitadores. u DESAFIO: a quantidade de palavras femininas (i.1 = 2 Em resumo. alinhado a ıcio a esquerda.. na forma de um vetor. Exerc´ ıcio 176 Escreva um algoritmo que leia uma frase terminada por um ponto. Entretanto. Exerc´ ıcio 180 Justifica¸˜o: Dada uma linha com um comprimento cl..8. ´ Entretanto. imprimindo estes resultados ao final. que cl seja maior do que cf.cf). imprimi-lo com tamanho de linha vari´vel. e 2 (n1) blocos de 2 (b1) espa¸os no texto. calcular a quantidade de letras. alinhado a ıcio ` direita..UVA”(. brancos e palavras. informado no in´ do programa. No caso b1 = 7 div 3 = 2 b2 = tamanho do segundo preenchimento. No caso np = 4 u vers˜o de 10 de fevereiro de 2008 a Exerc´ ıcio 188 Dado um texto.13 = 7 u np = n´mero de palavras.. na forma de um vetor. na forma de um vetor. o u imprimi-lo colocando cada primeira letra de todas as palavras em mai´sculos. No caso: n2 = 7 mod 3 = 1 n1 = quantidade de b1’s.A. para k=3. sem nenhum caracter de controle. n1 = ne . na forma de um vetor e formado s´ por min´sculas. informado no in´ do programa. b1 = nb div ne.CAP´ ITULO 9. sem nenhum caracter de controle. REGISTROS Em outros textos. e o vetor n˜o tem esta a a limita¸ao. Trata-se de um vetor de caracteres. OBSERVACAO IMPORTANTE: Ao se fazer o ORD de um elemento indexado. a a 88-08. que tem sempre comprimento igual a 1). e Exerc´ ıcio 182 Escrever um algoritmo que leia uma linha de caracteres (m´ximo de 60) a contendo uma frase (palavras separadas por branco). e n˜o 3 como poderia parecer aos mais incautos. Quantos caracteres ela tem de comprimento. usando o algoritmo da ”Criptografia de Cezar”. Exemplo seja o vetor V ← ’ABCDEFGHI’ Se fizermos ord(V[3]) a resposta ´ ord(’C’) que ´ 67. e supondo uma ca frase com comprimento cf. sem nenhum caracter de controle. usando o algoritmo da ”Criptografia de Cezar”.UVA”em 20 posi¸oes. e e a Exerc´ ıcio 181 Imagine um algoritmo capaz de ler uma entrada formada por at´ 60 e caracteres. para ser impressa em e uma linha de 20 (cl=20). b2 = succ(b1). uma vari vel num´rica que indica qual e o comprimento da linha. pois praticamente todas as informa¸oes alfanum´ricas exigem mais de c˜ e um caracter para serem uteis.VIU. N˜o quebrar palavras. Cadeia e vetor de caracteres Neste ponto. a Exerc´ ıcio 184 Dado um texto. u u Exerc´ ıcio 178 Definir um algoritmo que leia uma frase de at´ 80 caracteres. e supondo mais. N˜o quebrar palavras.. e um unico espa¸o em branco separando cada palavra. Pedro Kantek 167 88-08. se ca o tivermos a frase ”IVO. na forma de um vetor e formado por min´sculas e u mai´sculas indistintamente. ´: terminadas em ”A”). Exemplo: Se for lida a frase “Maria comeu a melancia”..VIU. a Exerc´ ıcio 183 Dado um texto. imprimindo este resultado. u u Exemplo: Se for lida a frase ”Ivo viu a LARANJA”. e ´ c escreva o n´mero de palavras da frase. O local de inser¸˜o fica a c c ca crit´rio do usu´rio. Qual o n´mero da maior palavra da frase u 2.UVA. ´ branco). a defini¸ao: c˜ caracter VET[30] equivale a uma cadeia VET[30] A explica¸ao para a existˆncia desta particulariza¸ao do conceito de vetor. Por exemplo. Exerc´ ıcio 179 Escrever um algoritmo para criptografar textos. a cadeia pode ser lida e gravada de uma vez. ao contr rio dos vetores. com tamanho inferior a 80 caracteres. No caso: 20 . onde n deve ser lido e ´ vari´vel embora fixo no texto a e a criptografar. devemos inserir 1 (n2) bloco c˜ de 3 (b2) espa¸os.. que correspondem a uma frase. Chama-se a isto de justifica¸˜o. Exerc´ ıcio 187 Escrever um algoritmo para criptografar textos. na forma de um vetor. que tem um cf de 13.. No caso: n1 = 3 . ´ muito e pouco adequado.VIU. imprimi-lo com tamanho de linha vari´vel. Falando em termos rigorosos. No caso ne=3 b1 = tamanho do primeiro preenchimento. e os bons datil´grafos fazem isto quase instintivamente. a resposta ser´ ”IVO VIU A LARANJA”. a Exerc´ ıcio 185 Dado um texto. a Exerc´ ıcio 189 Dado um texto. cada linha tem no seu in´ ıcio.n2. para k=n. a a CAP´ ITULO 9. alinhada e ` esquerda e determine e escreva: a 1. ´ que o c˜ e c˜ e tipo primitivo (no caso. o conceito de cadeia de caracteres. podemos ver com mais clareza. tanto a cadeia quanto o vetor podem ser percorridos atrav´s de ´ e ındices. o algoritmo dever´ imprimir 4. A cadeia est´ limitada a 255 caracteres de comprimento. significa espa¸o em branco) e a ca c IVO. imprimi-lo todo em mai´sculas.A. Acompanhe no exemplo. T. Este valor usualmente ´ escolhido de forma que 10q caiba o o e em uma palavra do computador de modo a poder fazer toda a aritm´tica inteira. um estado inicial. com o m´dulo q. O problema ıdo e ´ ´ que a constru¸ao do autˆmato pode ser demorada principalmente se Σ ´ grande. 1}. um alfabeto finito de entrada e uma fun¸ao Q×Σ em Q. pode-se garantir que haja poucos acertos esp´ rios. C. h´ uma corresponˆncia completa entre P e T. Em outra aplica¸ao buscaa c˜ se comparar 2 cadeias de ´cidos nucleicos dentro de uma mol´cula de DNA. tem complexidade no pior caso de O(tamanho(P ) × e tamanho(T )). texto T) c a i←1 CONTADOR ← 0 enquanto (i < tamanho(T)-tamanho(P)) fa¸a c aux ← 0. sobretudo se e u P ´ grande. Algoritmos eficientes H´ toda uma fam´ de algoritmos que diminuem o tempo de processamento nesta a ılia tarefa. G} ou o alfabeto ASCII ou similar. REGISTROS CAP´ ITULO 9. A maneira de contornar esta dificuldade ´ usar a aritm´tica dos ponteiros e e e do rel´gio. pela escolha judiciosa de q. Qualquer processador de texto faz isso.CAP´ ITULO 9. se a partir da posi¸ao s + 1 de T e c˜ pelos pr´ximos m caracteres. 727. ue a Eis a formaliza¸ao do problema: H´ uma cadeia C composta por 1. Autˆmatos de correspondˆncia o e O autˆmato finito ´ uma m´quina de estados composto por um conjunto finito de estao e a dos. extra´ de CLR p´g. Todos realizam algum tipo de pr´-processamento sobre as cadeias T e/ou P. A vantagem do algoritmo de Rabin-Karp ´ e excluir a grande maioria de candidatos em uma busca linear simples. O algoritmo deve: 1. ´ o mais simples. Defina um algoritmo que leia uma frase de no m´ximo a a 80 caracteres contendo palavras separadas por um branco. sempre ser´ poss´ este procedimento sem a a ıvel perda de generalidade. ou Σ = {A. c˜ c˜ Veja-se um exemplo. a quantidade de testes que ´ feita: e T=’o galo o gato e a gata gaguejaram’ e P=’gato’ QUANTIDADE DE TESTES = 38 Exerc´ ıcio 191 Imagine um algoritmo capaz de ler uma entrada formada por at´ 60 e caracteres. caracteres em c˜ e computador s˜o representados usando bits. o a e O problema da correspondˆncia de caracteres busca encontrar todos os delocamentos e v´lidos em T que correspondem a P. Quantas s˜o femininas a Imprimir estes resultados ao final i ← i + tamanho(P) {pode ser +1. o que ocupa p d´ c c˜ ıgitos. Depois. a 88-08.”. basta excluir o d´ e a ıgito de mais alta ordem e acrescentar um novo d´ ıgito a direita. um vetor de mesmo comprimento de T ´ calculado. e com a frase terminando por um ”. Aqui s˜o a e a apenas 4 letras (ACTG) e largas seq¨ˆncias s˜o buscadas. A cada deslocamento em T. Dado que. O algoritmo come¸a calculando a representa¸ao decimal de P. O algoritmo deve ser capaz de responder: a) Qual o tamanho da frase b) Quantas palavras existem na frase c) Quantas vezes a dupla ”ma”apareceu na frase.n caracteres. Isto ocorre u quando houver a coincidˆncia de P mod q com T[i. Contar quantas palavras existem 2.j] mod q. 726 (vers˜o brasileira) ıdo a a Cada palavra P tem o seu pr´prio autˆmato de busca. Quantas s˜o masculinas a 3. a igualdade num´rica n˜o garante a localiza¸ao de P em T. sem que haja P = T[i. ` A dificuldade neste caso ´ quanto ao tamanho dos n´ meros envolvidos.. que correspondem a uma frase. Diz-se que P ocorre em T com deslocamento s. P composta por 1. Esta frase termina quando for encontrado um ponto. u e a c˜ H´ que se fazer o testye expl´ a ıcito a seguir. chamado a e de for¸a bruta. a H´ duas classes de algoritmos de busca aqui: o primeiro. o ıda p´g.m caracteres.i e 169 88-08.. e Entretanto. e c˜ o e Veja-se a seguir um autˆmato para pesquisar P=“ababaca”. Seja como for. chamada c˜ fun¸ao de transi¸ao. extra´ da mesma obra. Depende da defini¸ao} c˜ sen˜o a i++ CONTADOR++ fimse fimenquanto fim algoritmo Este algoritmo ´ claramente ruim. podemos ter Σ = {0. Naturalmente n ≥ m.j]. j ← 1 enquanto (j ≤ tamanho(P)) ∧ (T[aux + i] = P[j]) fa¸a c CONTADOR++ aux++ j++ fimenquanto se j = tamanho(P) + 1 ent˜o a escreva ”ocorrˆncia em ”.. e Rabin-Karp Correspondˆncia de cadeias e Este problema surge com alguma freq¨ˆncia em diversos lugares na ciˆncia da comue e puta¸ao. Pedro Kantek Algoritmo For¸a Bruta para busca em cadeias (padr˜o P. O caso mais comum ´ o de pesquisar uma palavra dentro de um texto que c˜ e est´ sendo editado. c˜ a H´ uma palavra a buscar. Os a caracteres de C e de P foram tirados de algum alfabeto finito Σ. Depois que o autˆmato foi o o o constru´ ele ´ eficiente: examina-se cada caractere de T uma unica vez. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 170 vers˜o de 10 de fevereiro de 2008 a . A cada p d´ e ıgitos de P a sua representa¸ao decimal ´ calculada e este valor ´ guardado.. Assim. n˜o realiza nenhum pr´-processamento nas cadeias c a e For¸a Bruta c 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: A id´ia deste algoritmo ´ converter a cadeia em n´ meros (ou melhor dizendo. ´ usar e e u e a interpreta¸ao num´rica das cadeias) para efeito da busca. c˜ e e O processo ´ r´pido. REGISTROS 13: 14: 15: 16: 17: 18: 19: Exerc´ ıcio 190 Suponha que todas as palavras terminadas em ”a”s˜o femininas e todas a as terminadas em ”o”s˜o masculinas. e Entretanto. esta escolha introduz a possibilidade de acertos esp´rios. alfabeto S) {alfabeto S cont´m todos os a e caracteres de T (n˜o repetidos)} a 2: para cada caracter do alfabeto fa¸a c 3: tabela1[indice do caracter] ← 0 4: fimpara 5: para j de 1 at´ tamanho(P) fa¸a e c 6: tabela1 [indice do caracter P[j]] ← j 7: fimpara 8: retorne tabela1 9: fim algoritmo Exemplo deste algoritmo: CARACTERRUIM (’gato’. usa 3 artif´ e ıcios aceleradores que permitem aumentar o tamanho do salto a busca ´ feita da esquerda para a direita e Pr´-compila uma tabela de ocorrˆncias de caracteres e e Pr´-compila uma tabela de ocorrˆncias de prefixos no padr˜o.tabelaPILINHA [LM] 9: fimse 10: fimpara 11: retorne tabela2 12: fim algoritmo 1: Fun¸ao PREFIXO (padr˜o P) c˜ a tabelaPREFIXOS ← 0. Compare com os 38 da FORCA BRUTA.CAP´ ITULO 9. 2 (4-2) para ’a’ e 1 para ’t’. u e ¸ Vejamos um exemplo: 1: 2: T=FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES P=PORQUE F O L G A M R E N D P Q U V S 0 2 0 0 0 0 0 3 6 0 0 1 4 5 0 0 88-08. a o n´ mero de testes ´ de apenas 10. e e a Os algoritmos s˜o: (referˆncia para todos CLR. A segunda tabela ´ construida pela fun¸ao SUFIXOBOM. ’o/galteujrm’) 4 0 1 2 0 3 0 0 0 0 0. salto de 3 (4-1) para ’g’.i e 12: i ← i + tamanho(P) 13: sen˜o a 14: i ← i + MAX ((j-tabela1[T[i+j]]).0 (o mesmo tamanho de P) 3: k ← 0 4: para q de 2 at´ tamanho(P) fa¸a e c 5: enquanto (k > 0) ∧ (P[k+1] = P[q]) fa¸a c 6: k ← tabelaPREFIXOS [k] 7: fimenquanto 8: se P[k+1] = P[q] ent˜o a 9: k++ 10: fimse 11: tabelaPREFIXOS [q] ← k 12: fimpara 13: retorne tabelaPREFIXOS 14: fim algoritmo No exemplo do teste ’o galo o gato e a gata gaguejaram’ para o padr˜o P=’gato’ aqui. Pedro Kantek P O R Q U E 6 6 6 6 6 1 vers˜o de 10 de fevereiro de 2008 a 171 172 .tamanho(P)) fa¸a c 6: j ← tamanho(P) 7: enquanto (j > 0) ∧ P[j] = T[i + j] fa¸a c 8: j– 9: fimenquanto 10: se (j = 0) ent˜o a 11: escreva ”ocorrˆncia em ”.. Pedro Kantek 88-08. Nenhum salto para ’o’. pag 870) a e e 1: Algoritmo BOYER-MOORE (texto T. REGISTROS fimse fimenquanto 17: fim algoritmo 15: 16: CAP´ ITULO 9. descrito na d´cada de 70.tabelaPILINHA [LM]) ent˜o a 8: tabela2[j] ← LM .tabelaPI [tamanho (P)] {repetir tam(P) vezes} 5: para LM de 1 at´ tamanho(P) fa¸a e c 6: j ← tamanho(P) . alfabeto S) a 3: tabela2 ← SUFIXOBOM (padr˜o P) a 4: i ← 0 5: enquanto (i ≤ tamanho(T) . tabela2[j]) vers˜o de 10 de fevereiro de 2008 a Algoritmo CARACTERRUIM (padr˜o P. REGISTROS Algoritmo de Boyer-Moore Este algoritmo.tabelaPILINHA [LM] 7: se (tabela2 [j] > LM . padrao P) 2: tabela1 ← CARACTERRUIM (padr˜o P. significando salto de 4 para /leujrm. cujo algoritmo ´: e c˜ e 1: Algoritmo SUFIXOBOM (padr˜o P) a 2: tabelaPI ← PREFIXO (P) 3: tabelaPILINHA ← PREFIXO (reverso P) 4: tabela2 ← tamanho(P) . inglˆs. n˜o pode c a seguir pelo correio. na forma de 4 e o inteiros positivos. que tem ´ e uma resistˆncia calculada pela f´rmula: e o 1 1 1 1 = + + . Dados terminam e e quando for lido um valor igual a zero. o algoritmo deve imprimi-lo junto com o DV.V. Pedro Kantek 88-08. e e Exerc´ ıcio 195 Escreva uma fun¸˜o capaz de receber um valor representativo de uma ca distˆncia medida em polegadas. ou seja. REGISTROS PORQUE Salto: 6 Prop T1: 6 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 4 versus Prop T2: 6 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 6 versus Prop T2: 1 --------------------------------- Exerc´ ıcio 192 Segundo a f´ ısica. REGISTROS Resposta 7 (contra 41 da for¸a bruta) c Tabela 1: (Caracter ruim) Ao se encontrar um T[x] diferente de um P[y]. Por exemplo. se forem lidos os valores de resistˆncias e iguais a 5. (ja que j=4 e T[a]=2 e 4-2=2) Tabela 2: (Sufixo bom) Realiza um processamento apenas em P. e busca sufixos do padrao que tenham sido repetidos anteriormente no padrao. a T2 e: 4. Os o dados terminam quando for lido um n´mero negativo. nenhum pacote cujo comprimento (maior dimens˜o) somado ` amarra¸˜o a a ca seja superior a 72 polegadas.V. como sao diferentes.CAP´ ITULO 9. Por exemplo.2). se P=’abeb’. a resposta da resistˆncia equivalente ser´ 10/13. para c´digos de 4 a o d´ ıgitos assim formulado: c´digo o XYZT-d c´lculo de Q Q = X + Y + Z + T a c´lculo de d d = Q mod 10 a Escreva um algoritmo para calcular o DV de uma s´rie de c´digos lidos. a T1 manda pular o g a t c i u T1= 4 0 1 2 3 0 0 0 2 posicoes.4.. ca Exerc´ ıcio 197 Suponha um algoritmo para c´lculo de um D. Exemplo: Se T=’o gato caiu’ e P=’gato’. ja que o sufixo b (na p. temos a primeira comparacao entre T[4]=a e P[4]=o.2. Pedro Kantek 173 174 vers˜o de 10 de fevereiro de 2008 a . Note que isto so e verdade que ja P[1]<> P[3] FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES F O L G A M R E N D P Q U V S P O R Q U E T1= 0 2 0 0 0 0 0 3 6 0 0 1 4 5 0 0 T2= 6 6 6 6 6 1 FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 6 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 6 Prop T1: 6 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE Salto: 3 Prop T1: 3 versus Prop T2: 1 --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = PORQUE S= 6 *** ACHOU *** --------------------------------FOLGA MORRENDO PORQUE ALEM PORVUE DOS ANDES = vers˜o de 10 de fevereiro de 2008 a CAP´ ITULO 9.4) ja ocorreu anteriormente em P (na p. suponha-as e ligadas em s´rie. calcule e escreva a resistˆncia equivalente do conjunto..1. As dimens˜es est˜o a o a em cent´ ımetros. e deve ser usada a convers˜o: 1 polegada = 2. e retorne a mesma distˆncia medida em metros (1pol = a a 2. a Exerc´ ıcio 194 Escreva uma fun¸˜o capaz de receber dois n´meros (inteiros) e devolver ca u a m´dia geom´trica entre eles (real). Amarra¸˜o ´ o comprimento do menor barbante que possa toda ca e a volta ao pacote. em T1 se indica de quantas posicoes pode-se saltar em x (no T). podemos substitu´ ı-las por uma unica resistˆncia chamada EQUIVALENTE. Para cada c´digo lido. ou NAO PODE”se n˜o puder.5 cm. quando temos diversas resistˆncias ligadas em pare alelo. 1 e zero. para c´digos de 4 a o d´ ıgitos assim formulado: 88-08. + Req R1 R2 Rn Definir um algoritmo que leia um conjunto indeterminado de resistˆncias. cada letra em T tem o indice da ultima ocorrencia desse caracter de T em P. 10. Construa um algoritmo portugol que leia 3 dimens˜es e escreva ”PODE”se o ˜ o pacote puder ser mandado via correio.54cm) Exerc´ ıcio 196 Suponha um algoritmo para c´lculo de um D. e a Exerc´ ıcio 193 De acordo com o regulamento do servi¸o postal americano. O c´lculo do DV deve ser feito por u a uma fun¸˜o. para c´digos de 4 a o d´ ıgitos assim formulado: c´digo o XYZT-d c´lculo de Q Q = 3X + 5Y + 7Z + 9T a c´lculo de w w = Q mod 11 a c´lculo de d Se w = 10. sendo tamb´m chamada de peste bubˆnica. foi a doen¸a. ca 9. A s´rie termina quando for lido o n´mero 0. e u Exerc´ ıcio 198 Suponha um algoritmo para c´lculo de um D.CAP´ ITULO 9. A hist´ria come¸a quando uma tribo Mogol o c de nome Kipchak resolve atacar um posto comercial genovˆs no Mar Negro. O c´lculo do DV deve ser feito por u a uma fun¸˜o. A regra deve ser: dv = ((d1 × 8) + (d2 × 7) + e (d3 × 6) + (d4 × 5) + (d5 × 4) + (d6 × 3) + (d7 × 2)) mod 26 dv deve ser transformado de letra em n´mero e a seguir impresso. Para cada c´digo lido. A It´lia. que tamb´m era transmitida o e e por pulgas dos ratos. nos principais idiomas ocidentais: Corpo Celeste Sol Lua Marte Merc´ rio u J´ piter u Vˆnus e Saturno Inglˆs e Sunday Monday Tuesday Wednesday Thursday Friday Saturday Francˆs e dimanche lundi mardi mercredi jeudi vendredi samedi Italiano domenica lunedi martedi mercoledi giovedi venerdi sabato Espanhol domingo lunes martes mi´rcoles e jueves viernes s´bado a A rea¸ao a peste foi um novo cen´rio que buscou enterrar e esquecer aquele o mais c˜ ` a r´pido poss´ a ıvel: a renascen¸a. abandonando o posto e comercial. a Igreja havia a e mesclado essas regras a sua vis˜o de mundo. A ultima u u e ´ esfera continha as estrelas. Vinte e cinco a c milh˜es de pessoas. At´ aqui. Junto com eles. o campo foi abandonado. ca Exerc´ ıcio 200 Definir algoritmo capaz de gerar um d´ ıgito verificador alfab´tico. resultando um bloco homogˆneo: Deus ` a e havia criado a Terra no centro do Universo. Vˆnus e Saturno. Veja-se o reflexo disso nos nomes dos dias de semana. um quarto da popula¸ao europ´ia. na forma de 4 e o inteiros positivos. Africa. Pedro Kantek 175 88-08. Qual a m´dia anual de cada aluno (32 valores) e 2. Apenas na terra a mat´ria se decompunha e morria. deve imprimir o n´mero e o e u u correspondente d´ ıgito. o algoritmo deve imprimir: o 1. na forma de 4 e o inteiros positivos. Usaram e para isso uma das primeiras armas biol´gicas que a hist´ria registra: cad´veres humanos o o a contaminados com a doen¸a eram atirados atrav´s de catapultas para dentro da cidade. J´ piter. morreram. ent˜o d = 0. Os o dados terminam quando for lido um n´mero negativo. a m˜o de obra escasseou. Qual a m´dia da turma em cada bimestre (4 valores) e 3. sen˜o d = w. A ciˆncia (a matem´tica) come¸ou a ser usada: e a c 88-08. O c´lculo do DV deve ser feito por u a uma fun¸˜o. para c´digos de 4 a o d´ ıgitos assim formulado: c´digo o XYZT-d c´lculo de q1 q1 = 2X + 3Z a c´lculo de q2 a q2 = 2Y + 3T c´lculo de Q a q = q1 + q2 c´lculo de d a d = q mod 10 Escreva um algoritmo para calcular o DV de uma s´rie de c´digos lidos.1 Calend´rios a Exerc´ ıcio 199 Suponha um algoritmo para c´lculo de um D. para e um c´digo formado por 7 d´ o ıgitos num´ricos. Qual o bimestre com menor amplitude de notas CAP´ ITULO 9. mas menor do que 129. Durante os 4 anos seguintes a peste foi para a c ´ Sic´ ılia.0. o algoritmo deve imprimi-lo junto com o DV. c e Esta embora armada e provisionada para resistir ao cerco. ao ver-se impotente para enfrentar esta arma resolveu fugir de navio de volta a Gˆnova. Pedro Kantek 176 vers˜o de 10 de fevereiro de 2008 a . Merc´ rio. o a e universo era governado por regras estabelecidas por duas autoridades: Arist´teles (384o 322 aC) e o eg´ ıpcio Cl´udio Ptolomeu (100-170 dC). ca 4. de triplas formadas por: n´mero do bimestre: inteiro de 1 a 4 u n´mero do aluno: inteiro de 1 a 32 u Nota do aluno: real de 0. o c e o Os bub˜es eram caldos de cultura da bact´ria causadora. Oito esferas concˆntricas feitas de material imut´vel e e a eterno continham a Lua. Para cada c´digo lido. REGISTROS Exerc´ ıcio 202 Definir um algoritmo que calcule o d´ ıgito verificador do n´mero de u matr´ ıcula dos alunos das FACULDADES NEUTRAS. os alimentos rarearam. u a Ap´s ler o conjunto. Levantes sociais e pol´ o ıticos espoucaram. O nome negra. Nasceram aqui os primeiros sistemas administrativos. Para cada c´digo lido.V. Nas e esferas tudo era eterno. Os dados terminam quando for lido um n´mero de bimestre diferente daqueles valores v´lidos.V. Os o dados terminam quando for lido um n´mero negativo. A devasta¸ao da peste negra c˜ u o c˜ encerrou um ciclo na hist´ria da humanidade. e o conhecimento financeiro e os bancos. Marte. Estrelas e planetas giravam em orbitas ´ circulares em volta da terra. na forma de 4 e o inteiros positivos. O c´lculo do DV deve ser feito por u a uma fun¸˜o. u o e Exerc´ ıcio 201 Definir algoritmo que leia um conjunto indeterminado. pela localiza¸ao central iniciou o movimento do c a c˜ com´rcio entre oriente e ocidente. REGISTROS c´digo o XYZT-d c´lculo de Q Q = 2X + 3Y + 4Z + 5T a c´lculo de d d = Q mod 7 a Escreva um algoritmo para calcular o DV de uma s´rie de c´digos lidos. O algoritmo deve ler u in´meros c´digos (na forma cadeia[7]) at´ ler a cadeia ’0000000’. o algoritmo deve imprimi-lo junto com o DV. vers˜o de 10 de fevereiro de 2008 a Em 1347 a peste negra devastou a Europa. It´lia. Inglaterra e depois toda a Europa. Fran¸a.2. Tal n´mero ´ formado por 4 d´ u e ıgitos e o verificador ´ assim calculado: e n´mero: d1 d2 d3 d4 u res = (d1 * 2) + (d2 * 3) + (d3 * 5) + (d4 * 7) d´ ıgito = resto da divis˜o de res por 9.0 a 10. Os o dados terminam quando for lido um n´mero negativo. vem do fato de que (supostamente) a carne das v´ ıtimas enegrecia pouco antes da morte. Dois s´culos passariam o c˜ e e antes que a popula¸ao retornasse ao n´ mero de 100 milh˜es. o Sol. a a a Escreva um algoritmo para calcular o DV de uma s´rie de c´digos lidos. Espanha. No milˆnio anterior. Qual o bimestre em que ocorreram mais zeros 5. a O algoritmo deve ler uma s´rie de n´meros e para cada um. o algoritmo deve imprimi-lo junto com o DV. Qual o n´mero do aluno e o n´mero do bimestre em que ocorreu a MAIOR NOTA u u absoluta do ano. Esta doen¸a ´ na verdade uma pneumonia que c e causa bub˜es (incha¸os nas axilas e virilhas). ultrapassando seus e o modelos anteriores por diversas vezes. S´ em c˜ o 1757 a Igreja retirou a proibi¸ao sobre a obra. O resultado ´ que agora o e as bolas chegam antes do que chegavam. A Igreja j´ come¸ou a enviar mensagens de que n˜o concordava a c a com as id´ias desse livro. e c˜ em 1543. floral. a unica a ´ possibilidade ´ elas chegarem juntas. A ado¸ao deste calend´rio demorou. Pedro Kantek 178 vers˜o de 10 de fevereiro de 2008 a . N˜o pode ver as acusa¸oes ou as provas. Em 1475 o papa Sisto IV pedira um estudo para determinar a causa do erro. ele acabou de consolidar o modelo copernicano. Os meses: germinal. brumaire.] A jogar as 2 bolas e suponha que Arist´teles estava certo: a mais pesada chega antes. Pedro Kantek 177 88-08. a Cop´rnico (1473-1543) come¸ou a desenvolver em 1506 um sistema astronˆmico e c o baseado em suas pr´prias observa¸oes e c´lculos. ılio ılio. Convencido pela corre¸ao de seus c´lculos e encorajado por amigos. um dos 5 maiores cientistas que a Humanidade produziu (decomposi¸ao da luz. esbo¸ou c˜ a c um rascunho de suas id´ias em 1530. Em 1992. o padre Tom´s Caccini. no com´rcio. Para que ambos os racioc´ ınios estejam certos e est˜o. O novo mˆs ´ o SOL que fica entre junho e julho. Sumiram 10 dias em mar¸o desse ano. a Revolu¸ao Francesa mudou novamente o calend´rio. e o e e Finalmente. esta disparidade foi se acumulando ano ap´s ano. vers˜o de 10 de fevereiro de 2008 a 1 Suponha CAP´ ITULO 9. Na tentativa de tirar a Terra do centro o c˜ a do universo e colocar a´ o Sol. A dificuldade e que estes 3 ciclos n˜o s˜o m´ ltiplos entre si. que fica no final do ano. embora continuando a estudar o problema a em segredo. Februas (festa da purifica¸ao). o papa Jo˜o Paulo II reconheceu c˜ a formalmente o erro da Igreja. contrariando Arist´teles que afirmara chegar a mais pesada antes. Este escrito provocou rea¸oes mistas. que bobo n˜o era. e Em 5 de mar¸o de 1616 o cardeal Belarmino da Santa Inquisi¸ao decretou que o c c˜ sistema copernicano era ”falso e errˆneo” afirmando que Deus fixou a Terra em seus o alicerces para jamais ser movida.. ` la Einstein. tencionava descartar o uso destes e por algum a outro meio nos dar o conhecimento que com eles podemos obter [. Galileu nunca se conformou com este decreto. baseado no ptolomeico. Sabemos hoje que a Terra demora 365 e dias. lunar: Alterna as luas (cheia. que c˜ j´ havia sido engordado com as leis de Kepler sobre o deslocamento dos planetas. Ele tem 52 semanas de 7 dias = 364 dias. (desvinculado a do sol). o Em 1582. u o o viu quatro sat´lites orbitando J´ piter e os an´is de Saturno e relatou isso no livro Sidereus e u e Nuncius(O Mensageiro Celeste). Em 1793. Cezar Augusto n˜o o ılio a deixou por menos.) c˜ e depende da lua. autorizou a publica¸ao de De Revolutionibus Orbium Coelestium. J´ lio Cezar criou o calend´rio juliano. o a O dia 365 ´ no final do ano e n˜o tem n´ mero nem nome. 5 horas. orientado a neg´cios e com divis˜es decimais. em e a Floren¸a criticou Galileu aformando que se Deus parou o sol a pedido de Josu´ para que c e os israelitas derrotassem os amoritas. REGISTROS na arquitetura. Mars (guerra). Napole˜o o aboliu em 1805. que a mat´ria era naturalmente atra´ para o cenc˜ e e ıda tro do universo (embaixo da terra). Achava-se na ´poca. Em 22 de junho de e 1633. Apripe (abertura das flores). mudando o pr´ximo para Augustus. foi acusado pela inquisi¸ao de herege. a Calend´rios Juliano e Ptolomeico a A encrenca do calend´rio est´ em que ele lida com 3 ciclos distintos: solar: Alterna a a as esta¸oes e depende do sol. na cartografia. Neste u a o ano tinha 365d e um quarto de dia. Pouco e depois. o c˜ a Nele h´ 12 meses de 30 dias e 5 feriados nacionais. a dificuldade era explicar como as coisas n˜o ”ca´ ı a ıam”em dire¸ao ao sol. ele resolveu pela vida. Cop´rnico recebeu o primeiro exemplar em 24 c˜ e de maio de 1543 e morreu poucas horas depois.CAP´ ITULO 9. Aqui. Quando recrutado pelo secret´rio do papa. Por um lado pode-se argumentar que a mais leve e ”segura” a mais pesada e esta demora mais a chegar.Galileu teria dito ”E pur.. a a u Em 45 aC. Juniores. pode-se supor que o fio transforma as duas massas em uma s´. Seu sucessor. Ficou uma diferen¸a de 11 minutos e 14 segundos). e 2 Ele ´ assim considerado pois construiu os maiores telesc´pios em uso na Europa. comumentec˜ mente conhecido como As Revolu¸oes. nova . o o e queimado na fogueira no Campo di Fiori em 17 de fevereiro de 1600. buscando incessantemente a sua revoga¸ao. Os quadrimestres sempre tem e a u 31 + 30 + 30 + 30 dias. Escreveu de leve. que com a reforma passou a ser o a conhecido como calend´rio gregoriano. ılio. Com a ado¸ao do calend´rio eg´ c c˜ a ıpcio por J´ lio C´zar no s´culo I dC. que a a foi publicado em 1632 e recebido com louvores por acadˆmicos de toda a Europa. A defesa de Galileu ´ perfeita: e N˜o me sinto na obriga¸ao de acreditar que o mesmo Deus que nos dotou a c˜ de sentidos. a fructidor. c´lculo diferencial e integral. Depois vem Isaac Newton. 48 minutos e 46 segundos para uma volta completa ao redor do sol. ao se c˜ erguer da posi¸ao de joelhos onde estava. Os meses foram batizados de Janius (portas e janelas). afastando u e e o as datas do calend´rio das esta¸oes. semanal: Mede os dias da semana e tem origem religiosa.. Cop´rnico viu-se num dilema: ou reafirmava a a e teoria que a vaidade. obteve do papa uma autoriza¸ao para c˜ c˜ escrever seu livro mais famoso Di´logo sobre os dois m´ximos sistemas do mundo. Na Inglaterra ele c˜ a s´ foi aceito em 1752. Mais modernamente sup˜e-se que tenha sido uma a u o experiˆncia intelectual apenas. ou chutava o pau da barraca para propor um novo calend´rio. a o a Podiam garantir estabilidade pol´ ıtica. h´ uma nova proposta de estabelecer um tempo mundial. O argumento intelectual ´ not´vel1 Este ´ o melhor jeito e e a e de fazer f´ ısica. gravita¸ao entre outros). Em 1624. a Novas propostas Em 1954. Agora o suponha as mesmas duas bolas por´m ligadas por fio. a a Ele. Galileu teria deixado cair duas bolas de pesos diferentes da Torre de Pisa para provar que ambas chegariam juntas.. em 1514 a para resolver o problema do calend´rio. Mede os meses. ainda sem adotar completamente o modelo copernicano. Em meados do s´culo XV ja havia dez dias de a c˜ e atraso. recusou o convite. o medo e a B´ ıblia haviam montado (estamos no centro do universo) e n˜o resolvia o problema. Em 21 de dezembro de 1614. N˜o houve quem conseguisse compatibilizar Arist´teles e Ptolomeu com o calend´rio. Escreveu in´ meros livros. a ONU propˆs um novo calend´rio. O dia do a bissexto ´ ap´s 28 de junho. Quint´ Sext´ Sept´ Oct´ Novit´ e Decit´ ılio. a matem´tica e todos os matem´ticos de hereges a a pol´ ıticos e religiosos. si muove” . ”inventou” o telesc´pio 2 Ao usar os telesc´pios. Em decis˜o que a alguns criticaram como prejudicial a ciˆncia. o o 88-08. Diz a lenda que depois de terminada a leitura. Eg´ ıpcios haviam estimado este valor em 365. mas estavam cada vez mais incapazes de calcular a data da P´scoa corretamente.25 dias (ou seja 365 dias e 6 horas. 15 e 22. Ao escrever c˜ a c˜ sobre a lei universal da gravita¸ao. c˜ a c˜ Ficou no dilema: ou se retratava ou morria como Giordano Bruno. ılio. Pulamos Giordano Bruno. o papa Gerg´rio mudou o calend´rio. a Galileu freq¨ entou diversas universidades na It´lia. Mede os anos. raz˜o e intelecto. Falta 1 dia. Finalmente. as a segundas sempre ser˜o dias 1.. ılio. como o sol poderia ser o centro do universo ? O padre foi mais longe: acusou Galileu. Por outro lado. o pr´prio JC mudou o nome do Quint´ para Julius. Logo depois. O pr´ximo personagem desta hist´ria ´ Galileu Galilei.. REGISTROS inten¸ao do Esp´ c˜ ırito Santo ´ ensinar-nos como se vai para o c´u e n˜o como e e a o c´u funciona. sempre conflitando com os demais u a professores. 8. fez uma longa retrata¸ao. c˜ Maiores. thermidor. Outra proposta foi o do calend´rio fixo. o H´ d´ vidas se isso de fato ocorreu. com 13 meses de 28 dias cada um. Indica o sabath. que passa a ser mais pesada que a bola anterior. Adotoua c se a regra dos anos bissextos. ESTA ou NAO ESTA classificado em ordem descendente. A solu¸ao para este problema est´ no algoritmo que ser´ estudado nesta aula. sendo que cada uma destas empresas tinha 1 (um) computador. e a muito menos micros. nem terminais remotos. o operador preparar´ uma massa de atualiza¸ao (possivelmente usando a c˜ o notepad ou similar). Os raios s˜o lidos em cm e a c a diferen¸a deve ser expressa em cm3. Em 1974. Bamerindus.CAP´ ITULO 9. Para a segunda. Como fazer para atualizar 80. Importˆncia atual Este algoritmo ainda ´ muito importante. Ele permite que grandes volumes de dados para tratamento atuarial (inclus˜o. Exerc´ ıcio 205 Definir algoritmo que determine se uma seq¨ˆncia contendo 1000 eleue ´ ˜ ´ mentos. R100 ← resto da divis˜o do ano por 100 e a a R400 ← resto da divis˜o do ano por 400. e quando a massa estiver OK. Pedro Kantek 180 vers˜o de 10 de fevereiro de 2008 a . mesmo com abundˆncia a e a de hardware. O resto fica por conta do c˜ a algoritmo Balance Line. e a a e Exerc´ ıcio 203 Imagine um cilindro cujo diˆmetro da base tem o mesmo comprimento a de sua altura. REGISTROS CAP´ ITULO 9. calcule e e escreva a diferen¸a de volume entre o cilindro e a esfera. c˜ a a chamado Balance Line. Pedro Kantek 88-08. e os computadores da Celepar. Ele. altera¸ao e exclus˜o) sejam serializados e processados sem interferˆna c˜ a e cia do operador. e c˜ vers˜o de 10 de fevereiro de 2008 a 179 88-08. a c˜ c˜ submete-la-´. O ultimo raio ´ zero. Ao final do algoritmo. quando os recursos de hardware a a n˜o eram nem de longe t˜o abundantes quanto hoje. ser´ muito bom se o dono do sistema disponibilizar um balance a line. e este e sempre deve ser economizado (principalmente quando o operador somos n´s. a SE R4=0 ∧ ((R100 = 0) ∨ (R400 = 0)) o ano ´ bissexto sen˜o n˜o ´. na verdade. a a Vesf era = 4 × πR3 3 Vcilindro = π × R2 × h Exerc´ ıcio 204 Definir algoritmo que calcule e escreva a soma dos primeiros 50 n´meros u pares acima de 1000 (1000 inclu´ ıdo). far´ as verifica¸oes e corre¸oes. Banestado. REGISTROS Neste segundo caso. este deve imprimir as mensagens ”EM ORDEM”ou ”FORA DE ORDEM”conforme o caso. cujo raio ´ o mesmo raio da base a e do cilindro. Outra ´ precisar entrar de uma s´ vez e c˜ e o alterar digamos 400 registros. Poucos tem a a paciˆncia para refazer esta mesma transa¸ao 400 vezes. e para cada um deles.-). Escrever algoritmo que leia uma s´rie de raios. Cr o Almeida e URBS. Neste caso. Dentro dele est´ inscrita uma esfera. Uma coisa ´ entrar 1 vez c˜ e por semana e fazer uma pequena atualiza¸ao. . Copel. Regra do bissexto Sejam R4 ← resto da divis˜o do ano por 4. Definir duas fun¸oes: c e c˜ uma para o c´lculo do volume da esfera. e outra para o c´lculo do volume do cilindro. permite economizar tamb´m tempo de operador. a estrat´gia atualmente usada (uma transa¸ao atuarial que sob e c˜ o comando do operador altera o dado) est´ perfeita.000 registros (caso da folha de pagamento do Estado do Paran´) todos os meses com apenas um computador que era usado para todos os a sistemas do Goverbo do Estado ? Vale lembrar tamb´m que n˜o existiam sistemas on-line. n˜o. existiam na cidade de a a Curitiba 7 computadores: o da Universidade Federal do Paran´ (um IBM 1130 com a 8Kb de mem´ria). Para o primeiro caso. e indica fim. o operador ter´ que se preocupar com apenas 1. Ao inv´s de 400 a c˜ e transa¸oes. o Imagine-se um site onde pessoas devem fazer atualiza¸oes. eventualmente via upload para atualiza¸ao serializada. Algoritmo Balance Line Este algoritmo teve importˆncia muito maior h´ 30 anos. com os 60 primeiros n´meros ¡mpares acima de 500 u (501 inclu¡do). ` a a Feito isso. c˜ prossiga. se n˜o soubermos que 64 = 8. esta trazida pela teoria dos logaritmos (n˜o confunda logara itmo com algoritmo) ´ achar o logaritmo do n´ mero dado. etc. tal que c˜ e a y 2 = x. Embora o n´ mero localizado seja positivo. (a) Chute um n´ mero u (b) Multiplique-o por ele mesmo (c) Se o resultado for igual ao n´ mero procurado.G3. no quadrante superior esquerdo. parab´ns! u e (d) Se for menor. 2. A solu¸ao mais ´bvia seria buscar uma calculadora capaz de extrair uma raiz c˜ o quadrada. dado y = x.´ CAP´ ITULO 10. Nenhuma traquitana dispon´ ıvel.1 Exemplo de um algoritmo: raiz quadrada Suponha que sua vida dependa de obter a raiz quadrada de um determinado n´ mero. A P1 inferior esquerdo). A resposta exata vem atrav´s do algoritmo de extra¸ao de raiz quadrada. . 5. posto ` e c˜ a nossa disposi¸ao pela matem´tica. dividir este √ e u valor por 2 e depois achar o antilogaritmo. Escreva o n´ mero do qual se quer achar a raiz quadrada (a quem chamaremos u α). . 12. escreva um sinal de × (vezes) Ao lado do sinal de × (vezes) escrito acima 11. OPS!. 3.G2. Dividindo 6 ÷ 2 = 3. c˜ c˜ 13. Chamemos este n´ mero A2 de P1 . divindo a area de trabalho ´ em 4 quadrantes. Separe o n´ mero α em grupos de 2 d´ u ıgitos. deve-se lembrar que – em tese – ele u 181 Esta tabela ´ importante pois todos os grupos acima formados s˜o menores do que e a 100. Volte a (aaa) 88-08.. Por exemplo. deve-se achar o real y. computadores. c˜ a Algoritmo para raiz quadrada √ Por defini¸ao. Imediatamente depois. colocando-o ao lado de T1 .. nomearemos os grupos (de 2 d´ ıgitos) da esquerda para a direita como G1 . ou mesmo conhecem as a c propriedades dos logaritmos. Volte a etapa (***) e repita o processo com um ` resultado uma unidade menor.. onde x ´ n˜o negativo. embaixo de G1 .. u por exemplo 54. 4. seria avan¸ar na base da tentativa-e-erro. espera-se que y 2 seja menor que x e t˜o pr´ximo quanto poss´ a o ıvel. u 10. outra c˜ c˜ e possibilidade.. Outra possibilidade. O problema est´ que a poucas pessoas tem uma t´boa de logaritmos na cabe¸a. Se o resultado for menor ou igual a T1 G2 . Fica 6. (aaa) Baixe o pr´ximo grupo (neste caso o G2 . j´ que ele ´ o pr´ximo n´ mero da raiz a e o u Ao lado de D1 . 1 2 3 4 5 6 7 8 9 1 4 9 16 25 36 49 64 81 Exerc´ ıcios pr´ticos: 003 -Raiz a quadrada 10. Eleve A1 ao quadrado e escreva o resultado no quadrante inferior esquerdo. Por azar de nossa simula¸ao. Cap´ ıtulo 10 2. n˜o h´ calculadoras. G2 . Pegue uma folha de papel e escreva uma cruz grande. O que vocˆ faria ? e 1. u 1 7. Chamemos este n´ mero de T1 . a ` direita e a esquerda. (***) Divida (divis˜o inteira) T1 G2 por D1 × 10. a partir de sua v´ ırgula decimal. Chame-se este n´ mero u u G1. . A1 como A1 . Considerando que a opera¸ao de multiplica¸ao ´ razoavelmente conhecida. u 9. Este resultado deve ser escrito a em 3 lugares: Ao lado de A1 . Chame-se este n´ mero de D1 . Relembremos a tabela de quadrados perfeitos de 1 a 100. Busque o n´ mero que elevado ao quadrado gere um n´ mero menor ou igual do que u u G1. EXERC´ ICIOS PRATICOS: 003 -RAIZ QUADRADA tamb´m pode ser negativo. junte-os o e obtenha um novo n´ mero (T1 G2 ). Gn . Coloque este n´ mero no quadrante superior direito. 4. Fa¸a G1 menos P1 e escreva o resultado da subtra¸ao embaixo de P1 (no quadrante c c˜ G1. E 23 = 8. Ao final do processo. Pedro Kantek 182 vers˜o de 10 de fevereiro de 2008 a .87. diminua o chute (f) Volte ` etapa da multiplica¸ao a c˜ 3. mas com o mesmo valor absoluto. celuc˜ a a lar. Fica u – T1 8. Se for maior.768. a raiz vai aparecer no quadrante superior direito. aumente o chute (e) Se for maior. Escreve-se o resultado da multiplica¸ao embaixo de T1 G2 e efetua-se a subtra¸ao.G2. usando o seguinte algoc ritmo. As etapas do algoritmo s˜o: a 1. a podemos fazer o log2 64 = 6.G3. completando com zeros n˜o significativos quando necess´rio. Calcule a multiplica¸ao posta acima. embaixo de A1 . Se n˜o for poss´ obter e a ıvel a igualdade (y 2 = x). Dobre o n´ mero A1 (multiplicando-o por 2) e escreva-o no quadrante inferior u direito.. 640 =========== rq(1)=1 ----------2 x 1 = 2 47 / 20 = 2 22 x 2 = 44 -------------2 x 12 = 24 396 / 240 = 1 241 x 1 = 241 -------------2 x 121 = 242 15550 / 2420 = 6 2426 x 6 = 14556 -------------2 x 1216 = 2432 99400 / 24320 = 4 24324 x 4 = 97296 -------------2 x 12164 = 24328 210400 / 243280=0 243280 x 0 = 0 -------------- ´ CAP´ ITULO 10. no u e ıdo exemplo dado acima. Por exemplo. ache o QUINTO NUMERO QUE E SUBTRA´ IDO na parte esquerda da tabela acima. descubra o quinto n´ mero que ´ subtra´ no algoritmo. o quinto n´ mero seria 97296 e no que fizemos junto seria 355925. o quinto n´ mero seria 97296 e no que fizemos junto seria 355925. Por exemplo. 5 121. u 38692 26660 55802 ´ ´ Nos 3 casos.4 Exerc´ ıcio 3 ------------- Simule a execu¸ao do algoritmo acima da raiz quadrada para os valores abaixo e em c˜ cada um. Pedro Kantek 10. u 24681 52543 26008 ´ ´ Nos 3 casos. ache o QUINTO NUMERO QUE E SUBTRA´ IDO na parte esquerda da tabela acima. Por exemplo. 1 2 3 10. descubra o quinto n´ mero que ´ subtra´ no algoritmo. 1 2 3 ---------------- ------------------- ---------------------vers˜o de 10 de fevereiro de 2008 a 88-08. Pedro Kantek 184 vers˜o de 10 de fevereiro de 2008 a .074. 1 2 3 Fa¸amos a raiz quadrada de 1267.2 Exerc´ ıcio 1 Simule a execu¸ao do algoritmo acima da raiz quadrada para os valores abaixo e em c˜ cada um. ache o QUINTO NUMERO QUE E SUBTRA´ IDO na parte esquerda da tabela acima. EXERC´ ICIOS PRATICOS: 003 -RAIZ QUADRADA / = x = -------------- 01 47 96 50 00 00 00 ============ -1 ----------0 47 -44 ------------3 396 -241 ---------------155 15550 -14556 ------------------994 99400 -97296 ---------------------2104 210400 -0 ------------------------210400 21040000 Treino 10.´ CAP´ ITULO 10. descubra o quinto n´ mero que ´ subtra´ no algoritmo. no u e ıdo exemplo dado acima.3 Exerc´ ıcio 2 Simule a execu¸ao do algoritmo acima da raiz quadrada para os valores abaixo e em c˜ cada um. no u e ıdo exemplo dado acima. u 44431 28819 37226 ´ ´ Nos 3 casos. EXERC´ ICIOS PRATICOS: 003 -RAIZ QUADRADA Exemplo Seja calcular √ 14796. o quinto n´ mero seria 97296 e no que fizemos junto seria 355925. c raizq 1267.074 12 67 07 40 00 00 ============ ----------- =========== rq( ) v = ----------x = ops / = x = -------------x = ops / = x = -------------x = / = x = -------------x = 183 88-08. Por exemplo. Pedro Kantek 88-08. no u e ıdo exemplo dado acima. u 46951 41068 14107 ´ ´ Nos 3 casos. 1 2 3 10.´ CAP´ ITULO 10. EXERC´ ICIOS PRATICOS: 003 -RAIZ QUADRADA 10. o quinto n´ mero seria 97296 e no que fizemos junto seria 355925. Pedro Kantek 186 vers˜o de 10 de fevereiro de 2008 a .6 1 2 3 4 Respostas 0 337184 0 346624 91684 203676 228529 202625 193476 154336 94484 166229 vers˜o de 10 de fevereiro de 2008 a 185 88-08.5 Exerc´ ıcio 4 Simule a execu¸ao do algoritmo acima da raiz quadrada para os valores abaixo e em c˜ cada um. descubra o quinto n´ mero que ´ subtra´ no algoritmo. ache o QUINTO NUMERO QUE E SUBTRA´ IDO na parte esquerda da tabela acima. EXERC´ ICIOS PRATICOS: 003 -RAIZ QUADRADA ´ CAP´ ITULO 10. Cap´ ıtulo 11 5. 11) = Do exerc´ anterior percebeu-se que quando um dos n´ meros ´ primo. ılia Quando ela apresenta uma bela torta de ma¸as. . Isto decorre da defini¸ao dos n´ meros primos: Um n´ mero inteiro ´ primo. intui¸ao. . 2 mod 13 = Exerc´ ıcios Pr´ticos: a 004-Introdu¸˜o ca 11. a a Por exemplo. 8 mod 2 = 7. inteligˆncia. enquanto o resto a e ´ 3. . Trata-se da divis˜o inteira. 7. c˜ u u e quando seus unicos divisores inteiros s˜o a unidade e ele pr´prio. (David Berlinski) O algoritmo ´ o que est´ por tr´s de todos os programas de computadores. .1. M DC(20. e Nos nossos algoritmos. o quociente da divis˜o inteira vai ser representado pela palavra a div. M DC(17. ou clareza e lucidez c˜ a c˜ e e que mais cedo ou mais tarde chega a um fim.2 Algoritmo do M´ximo Divisor Comum a Este algoritmo sempre ´ chamado com dois inteiros. 18) = 2. Fazendo e a a M´ximo Divisor Comum a Define-se o m´ximo divisor comum entre dois n´ meros inteiros A e B como sendo o a u maior n´ mero inteiro que divide simultaneamente tanto A como B sem deixar resto. a a e aqui podemos afirmar que 10 mod 7 = 3 . . Provavelmente o mais antigo que a o ´ conhecido ´ devido a Euclides. Para poder observ´-lo.´ CAP´ ITULO 11. ´ a o 11. como segue: a 88-08. 31) = . 100 mod 33 = . Para treinar Procure calcular e responder: 1. 45 div 11 = 8. 100 div 33 = 4. Note que o primeiro n´ mero deve e u ser maior ou igual do que o segundo. Se esta condi¸ao n˜o estiver satisfeita. (a mod b)) 7: fimse 8: fim {fun¸ao} c˜ Suponha que far-se-´ a chamada ao algoritmo acima. se quisermos achar o MDC entre 10 e 14. 8 div 2 = 6. 187 4. os n´ meros c˜ a u devem ser INVERTIDOS antes de serem entregues ao algoritmo. e Algoritmos s˜o bem antigos na hist´ria do mundo. uma analogia com a Rose (a empregada robot da fam´ Jetson). o resto da divis˜o inteira. e e a o regido por instru¸oes precisas. e ` e Para treinar Informe qual o MDC entre 1. j´ que o s´ a ımbolo ÷ e mesmo a barra simples / ficar˜o reservados para a divis˜o real. Este algoritmo recursivo ´ devido a Euclides e 1: inteiro fun¸ao MDC(inteiro a. . escrito em um vocabul´rio simb´lico fixo. dois resultados aparecem: o quociente e o resto. . o MDC ´ ıcio u e e sempre 1. 2. . 10 mod 2 = 3. o quociente (resultado) ´ 1. ser´ representado pela palavra mod. . . . cuja exec˜ cu¸ao n˜o requer insight. vamos relembrar uma opera¸ao e e a c˜ da aritm´tica b´sica. 2 div 13 = 10. 14) e localizar o maior n´ mero que a a u ´ comum as duas listas.1 Um algoritmo ´ um m´todo finito. b) {obrigatoriamente: a ≥ b} c˜ 2: se b = 0 ent˜o a 3: devolva a 4: \\ esta ´ outra maneira de identificar coment´rios e a 5: sen˜o a 6: devolva MDC(b.1 Algoritmos 11. 5 e 10) e de 14 (que s˜o 1.1. 10 div 2 = . Assim. Pedro Kantek 188 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIOS PRATICOS: 004-INTRODUCAO ¸˜ 2. esperteza. u Por exemplo. 2 ´ o MDC entre 10 e 14. M DC(15. Quando os n´ meros inteiros A e B e a a u s˜o divididos em divis˜o inteira. 45 mod 11 = 9. na divis˜o inteira 10 ÷ 7. a torta ´ o produto final. 40) = 3. a Rose ´ o computador c˜ e e e a receita da torta ´ o algoritmo. teremos que achar os divisores de 10 (que s˜o: 1. 2. que se movem em passos discretos. M DC(2. no caso 2. a a Portanto poderemos afirmar que 10 div 7 = 1 Da mesma maneira. Pedro Kantek 190 vers˜o de 10 de fevereiro de 2008 a . 1119) O que aconteceria ? Chamando com 1200 1119.9 Exerc´ ıcio 6 1471 Chame o algoritmo mdc com os valores 1777 Responda no quadro pr´prio.4 Exerc´ ıcio 1 11.1. Chamando com 6 3 e Chamando com 3 0 Resposta ´ 3 e ´ CAP´ ITULO 11.7 Exerc´ ıcio 4 1037 Chame o algoritmo mdc com os valores 1939 Responda no quadro pr´prio.1. EXERC´ ICIOS PRATICOS: 004-INTRODUCAO ¸˜ MDC(1200.1.5 Exerc´ ıcio 2 11. Aqui eles tˆm uma caracter´ e e ıstica t˜o a restrita como os algoritmos computacionais. qual o MDC pedido o 11. pegando ` direita a 13: pego a BR277 ` direita.8 Exerc´ ıcio 5 1434 Chame o algoritmo mdc com os valores 1659 Responda no quadro pr´prio. Chamando com 1119 81. qual o MDC pedido o vers˜o de 10 de fevereiro de 2008 a 189 88-08.1.6 Exerc´ ıcio 3 1224 Chame o algoritmo mdc com os valores 1370 Responda no quadro pr´prio. qual o MDC pedido o Responda no quadro pr´prio. qual o MDC pedido o Na nossa vida. Chamando com 15 6.´ CAP´ ITULO 11. Chamando com 66 15.1. Cabral a e 15: viro ` direita at´ a Carlos de Carvalho a e 16: viro ` esquerda e sigo at´ a Pra¸a Tirandentes a e c 17: fimse 18: fimse 11.1. EXERC´ ICIOS PRATICOS: 004-INTRODUCAO ¸˜ 11. vale a experiˆncia: acompanhe o algoritmo que um de n´s e o poderia usar para ir do Unicenp at´ a Pra¸a Tiradentes e c 1: Algoritmo para ir do Unicenp at´ a Pra¸a Tiradentes e c 2: se tenho dinheiro ? ent˜o a 3: se tenho pressa ? ent˜o a 4: chamo um taxi 5: mando ele ir para a Pra¸a c 6: sen˜o a 7: procuro uma carona OU 8: vou para o ponto do ˆnibus o 9: ao desembarcar. qual o MDC pedido o 11. qual o MDC pedido o 11. sigo at´ a Pe Agostinho a e 14: pego a Pe Agostinho ` esquerda e sigo at´ a Al.3 Algoritmos no dia a dia 11.1. tamb´m usamos muitos algoritmos. porque supostamente eles ser˜o seguidos a por seres inteligentes.1. Mas. Chamando com 81 66. qual o MDC pedido o Responda no quadro pr´prio.10 Exerc´ ıcio 7 1104 Chame o algoritmo mdc com os valores 1987 1669 Chame o algoritmo mdc com os valores 1808 Responda no quadro pr´prio.11 1380 Chame o algoritmo mdc com os valores 1858 1376 Exerc´ ıcio 8 1234 Chame o algoritmo mdc com os valores Responda no quadro pr´prio. Pedro Kantek 88-08.1. qual o MDC pedido o 11. pergunto qual a dire¸ao da Pra¸a c˜ c 10: sigo andando at´ chegar nela e 11: sen˜o a 12: saio do Unicenp pela JK. 13 1724 Exerc´ ıcio 10 1707 Chame o algoritmo mdc com os valores Responda no quadro pr´prio.1.12 1876 Exerc´ ıcio 9 1721 Chame o algoritmo mdc com os valores Responda no quadro pr´prio.1.1. qual o MDC pedido o 11.14 1 2 3 4 5 6 7 8 9 10 1 2 2 1 3 1 16 2 1 1 Respostas vers˜o de 10 de fevereiro de 2008 a 191 88-08. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 004-INTRODUCAO ¸˜ ´ CAP´ ITULO 11. EXERC´ ICIOS PRATICOS: 004-INTRODUCAO ¸˜ 11. qual o MDC pedido o 11. Pedro Kantek 192 vers˜o de 10 de fevereiro de 2008 a .´ CAP´ ITULO 11. c c˜ a e As regras definidas s˜o aplicadas a cada nova ”gera¸ao”. Uma vez que isto ocorre. c˜ c˜ a A vida sempre segue De uma imagem inicial de c´lulas vivas no tabuleiro. um m´todo divertido de gastar os ciclos da CPU. e a Qualquer c´lula viva com mais de trˆs vizinhos vivos morre de superpopula¸ao. Life ´ um exemplo de auto-organiza¸ao. a o ele ´ interessante. Ele ´ interessante para e c˜ e bi´logos. muitas imagens interessantes j´ haviam sido c˜ a descobertas. Conway inventou o Jogo da Vida (ou Game a of Life) ao utilizar suas descobertas anteriores relacionadas com o problema de encontrar um grupo sim´trico de esferas em 24 dimens˜es. Pedro Kantek 194 vers˜o de 10 de fevereiro de 2008 a . como podemos cham´-los. pois tem o poder de uma m´quina de Turing universal: tudo pode ser e a computado atrav´s de algoritmos no Jogo da Vida de Conway. todas aumena tando o interesse no jogo. na coluna de jogos matem´ticos de Martin Gardner. Isto constitui a a a e primeira gera¸ao. assim. proposto por John Leech para simplificar e o a solu¸ao de von Neumann.Conway chama-as de ”vida parada. Come¸ou com uma brincadeira mas depois virou coisa s´ria. Antes da publica¸ao. Regras do Jogo da Vida As regras s˜o simples e elegantes: a Qualquer c´lula viva com menos de dois vizinhos vivos morre de solid˜o. a partir de uma a c˜ imagem em um tabuleiro bi-dimensional definida pelo jogador. c˜ c˜ a algumas vezes belo e quase sempre inesperado. a a c˜ e a Gera¸ao a gera¸ao os ”jogador(es)”observam as v´rias imagens que surgem. Esta foi e u e provavelmente a mais profunda e mais dif´ quest˜o colocada pelo jogo atualmente. o que quer dizer que sua ca e evolu¸ao ´ determinada pelo seu estado inicial. conforme passam as gera¸oes. EXERC´ ICIO PRATICO: 006-JOGO DA VIDA sendo disponibilizados no mercado. n˜o necessitando de nenhuma entrada c˜ e a de jogadores humanos. matem´ticos. Ele ´ jogado em um conjunto de c´lulas quadradas que seguem e e ao infinito em todas as dire¸oes. Em muitos poucos casos e a sociedade eventualmente morre (todas as c´lulas se tornam c´lulas mortas). tendo aplica¸oes em diversas ´reas da ciˆncia. o c˜ Descri¸˜o Este ”jogo”´ na realidade um jogo sem jogador. no entanto. Cada c´lula tem oito ”vizinhos”.que a n˜o podem mudar ou imagens que oscilam para sempre. u A id´ia b´sica do ”jogo”´ come¸ar com uma configura¸ao simples de c´lulas vivas e a e c c˜ e (organismos) que s˜o colocadas em um tabuleiro 2D de v´rios m´todos.) O estado do tabuleiro e a evolui e se modifica em pequenas passagens de tempo. mortes e sobrevivˆncia c˜ e e (as quatro regras acima) s˜o ent˜o aplicadas e a nova gera¸ao ´ ent˜o colocada de acordo. Isto escondeu a popularidade posterior a a dos fractais gerados por computador. o Em outras palavras. Conway originalmente supˆs que nenhuma imagem poderia crescer ilimitadamente. De um ponto de vista te´rico. c˜ Cap´ ıtulo 12 Exerc´ ıcio pr´tico: 006-Jogo da a Vida 12. percebe-se e que. incluindo o sempre envolvente R-pentomin´. Para c˜ e alguns. Sua popularidade foi ajudada pelo fato de ele ter vindo justo no momento em que uma nova gera¸ao de minicomputadores de baixo custo estavam c˜ 193 ´ E importante entender que todos os nascimentos e mortes ocorrem simultaneamente. o e v´rias ”guns”(armas) que geravam um fluxo sem fim de novas imagens.´ CAP´ ITULO 12. Cada c´lula pode estar em dois estados: ”viva”ou e ”morta”. ele tem atra´ muito interesse devido aos caminhos surpreenc˜ ıdo dentes que pode tomar. percebem-se mudan¸as c muitas vezes inesperadas e belas a cada nova gera¸ao. incluindo as diagonais. (Tamb´m s˜o usados os termos ”ligado”e ”desligado”. c e O jogo foi criado de modo a reproduzir. Todas as c´lulas s˜o atualizadas simultaneamente. fil´sofos e outros a observar o modo como imagens o a o complexas podem surgir de implementa¸oes de regras muito simples. As ”leis gen´ticas”de Conway para nascimentos. os desenvolvimentos atuais foram t˜o longe a e a ponto de criar emula¸oes te´ricas de sistemas de computadores com as regras de um c˜ o tabuleiro de Life. a simetria n˜o pode mais ser e a perdida. Origem Um dos problemas matem´ticos mais famosos dos anos 40 era o de achar a uma m´quina que fosse capaz de construir c´pias de si mesma. Life era simplesmente um desafio de programa¸ao. Life tinha conota¸oes mais filos´ficas. Juntos eles constituem uma gera¸ao ou. A maioria a e e c˜ das imagens iniciais chegam a figuras est´veis . c˜ O jogo fez sua primeira apari¸ao na edi¸ao de Outubro de 1970 da Scientific Americ˜ c˜ can. c˜ O Jogo da Vida tem um n´ mero de imagens reconhecidas que emergem de posi¸oes u c˜ iniciais particulares. Desde sua publica¸ao. As transi¸oes dependem e a c˜ apenas do n´ mero de vizinhos vivos (ver as regras acima). que s˜o as c´lulas c˜ e a e adjacentes. e e c˜ Qualquer c´lula com exatamente trˆs vizinhos vivos se torna uma c´lula viva.1 O jogo da vida O Jogo da vida foi desenvolvido pelo matem´tico britˆnico John Horton Conway em a a 1970. apesar de e e que isso pode n˜o acontecer at´ que ocorram uma s´rie de novas gera¸oes. e e e Qualquer c´lula com dois vizinhos vivos continua no mesmo estado para a pr´xima e o gera¸ao. as altera¸oes e e c˜ mudan¸as em grupos de seres vivos. atrav´s de regras simples. o auto propulsionado ”glider”. Tamb´m era dito desde e e 1970 que foi destinado mais tempo de computa¸ao ao Jogo da Vida do que a qualquer c˜ outra atividade. qualquer configura¸ao com um n´ mero finito de c´lulas n˜o pode c˜ u e a crescer al´m de um limite finito superior ao n´ mero de c´lulas do campo. ıcil a Conway ofereceu um prˆmio de $50 a primeira pessoa que pudesse provar a afirma¸ao e ` c˜ 88-08. Os estado de todas as c´lulas e em um instante s˜o considerados para calcular o estado de todas as c´lulas no instante a e seguinte. significando que o jogo poderia ser rodado por horas nessa m´quinas que n˜o eram utilizadas de noite. variando de padr˜es fixos a ca´tic˜ o o cos. Para muitos aficcionados. a popula¸ao anda constantemente de modo n˜o usual. que teve uma solu¸ao a o c˜ baseada em um autˆmato celular extremamente engenhoso e complicado inventado pelo o renomado matem´tico John von Neumann. apesar de poder crescer em riqueza. Imagens sem simetria inicial a tendem a se tornar sim´tricas. economistas. um ”instante”na c˜ a hist´ria da vida completa da configura¸ao inicial. por´m muda. Ele desenvolveu um culto c˜ o atrav´s dos anos 70 e no meio dos 80. . X . X . . X . . . Seja o seguinte tabuleiro inicial. C= L= 9 . . . . e incluindo imagens paradas (”vidas paradas”). Isto possui o mesmo poder computacional de uma m´quina de Turing a universal (veja contador para a prova). . . . X . . a a L= 7 .3 . . C= L= 7 . . . . X . um somador. . est´ viva ou morta. .´ CAP´ ITULO 12. X . Pedro Kantek 196 vers˜o de 10 de fevereiro de 2008 a . . . X . (texto fortemente baseado em pr. . Indique que c˜ o c˜ a ela est´ viva escrevendo 1 e que est´ morta escrevendo 0. X . . . . . . . uma s´rie de constru¸oes complicadas tˆm sido feitas. . . Indique que c˜ o c˜ a ela est´ viva escrevendo 1 e que est´ morta escrevendo 0. X X . . . . X . X . X . E imagin´vel que todo o universo real seja um jogo similar. e e 12. Exerc´ ıcio 2 . . Pedro Kantek Informe a seguir se a posi¸ao pedida. . EXERC´ ICIO PRATICO: 006-JOGO DA VIDA Informe a seguir se a posi¸ao pedida. . um gerador de n´ meros primos e uma unidade de c´lula o u e que emula o Jogo da Vida em uma escala muito maior e a passos lentos. . C= L= 7 . . . incluindo portas a e c˜ e l´gicas de gliders. . . a a L= 8 . X . . X . X X . c e a configura¸ao inicial (mostrada no topo da p´gina) cresce como um gun.org) ´ CAP´ ITULO 12. X . X . . . est´ viva ou morta. X . . . . X . X . . . . e incluindo mais c´pias de si mesma. . . . X . . X X Exerc´ ıcio 3 . ap´s 4 gera¸oes. . . E poss´ o ıvel construir uma imagem que aja como uma m´quina de estado finito conectada a dois a contadores. X . . imagens repetitivas (”osciladores. ”Diehard”´ uma imagem que eventualmente desaparece ap´s 130 gera¸oes. . . onde ’. . . jogado em alguma a dimens˜o mais alta. . . C= L= 2 . ´ ´ E poss´ ıvel construir portas l´gicas AND. X . X X . . . X X . . . . . X X . . X . . . . . . . . .2 Exerc´ ıcio 1 Seja o seguinte tabuleiro inicial. X . . a a L= 9 . . X . . . . c˜ a c˜ Imagens Existe uma s´rie de diferentes imagens que podem ocorrer no Jogo da Vida. . . . X . ap´s 4 gera¸oes. X . . . Um ”construtor universal”pode ser constru´ que contenha o ıdo um computador Turing completo. . ıcio a e Filosofia O Jogo da Vida de Conway cria um universo complicado a partir de poucas ´ regras. C= L= 2 . . . .’ significa c´lula morta e ’X’ significa c´lula viva. . X . X X . . . X . C= 1 2 3 6 12. 8 9 4 C= 2 vers˜o de 10 de fevereiro de 2008 a 88-08. . X . X . . Indique que c˜ o c˜ a ela est´ viva escrevendo 1 e que est´ morta escrevendo 0. . como o c˜ ”glider”) ou um ”puffer train”(uma configura¸ao que se move mas deixa atr´s uma trilha c˜ a de ”fuma¸a”). C= L= 7 . . O prˆmio foi ganho em novembro do mesmo ano por um time do MIT. C= L= 10 . C= L= 8 . X . e o c˜ ou passos. . Um caminho para provar seu contr´rio era ser a a capaz de descobrir imagens que continuassem adicionando contadores ao campo: Uma ”gun”(uma configura¸ao que constantemente atira objetos que se movimentam. X . Imagens chamadas ”Matusalens”podem evoluir por longos per´ ıodos de tempo antes de se repetir. . X X . . o Para este exerc´ considere que o tabuleiro est´ rodeado por c´lulas mortas. . . . . . C= L= 3 . C= 2 2 5 1 12. . X . . X . . . a Desde ent˜o. . X . onde ’. . . . X . .’ significa c´lula morta e ’X’ significa c´lula viva. . . X . . . . X . X . . emitindo seu c˜ a primeiro glider na 40a gera¸ao. . X . Jogo da Vida ´ t˜o poderoso quanto qualquer e a computador com mem´ria ilimitada: ´ o Turing completo. e que pode construir uma s´rie de objetos complexos. e imagens que se movimentam atrav´s do tabuleiro (”naves e espaciais”). X X . . est´ viva ou morta. .’ significa c´lula morta e ’X’ significa c´lula viva. . . . . . .wikipedia. . . Al´m disso. . ”Acorn”leva 5206 gera¸oes para criar 13 gliders depois se estabiliza como c˜ v´rios osciladores. X X X X . . . X X . . Seja o seguinte tabuleiro inicial. . A gun emite ent˜o um novo glider a cada 30 gera¸oes. onde ’. . OR e NOT usando gliders. . . EXERC´ ICIO PRATICO: 006-JOGO DA VIDA ou seu contr´rio antes do fim de 1970. X X . 195 88-08. . . ap´s 4 gera¸oes. . e e Informe a seguir se a posi¸ao pedida. . X X X X X .o conjunto de vidas paradas). . . . X . X . . X X . X X X . . Esta possibilidade pode influenciar o debate de vivermos em um a universo perfeitamente ajustado que requer um projeto inteligente. . incluindo c´pias da imagem original.4 . . . . uma imagem o e e pode conter um conjunto de guns que se combina para construir novos objetos. . . . X . . . e e . . . .´ CAP´ ITULO 12. X . . . . C= L= 1 . . Seja o seguinte tabuleiro inicial. EXERC´ ICIO PRATICO: 006-JOGO DA VIDA 12. C= 5 6 7 6 12. X . . Pedro Kantek 88-08. . Indique que c˜ o c˜ a ela est´ viva escrevendo 1 e que est´ morta escrevendo 0. . X X X X . X . . . . . X . Exerc´ ıcio 4 . . . C= L= 9 . . . . . . e e Informe a seguir se a posi¸ao pedida. . Pedro Kantek 198 vers˜o de 10 de fevereiro de 2008 a . . X .’ significa c´lula morta e ’X’ significa c´lula viva.5 . X . . X X X . . . . EXERC´ ICIO PRATICO: 006-JOGO DA VIDA ´ CAP´ ITULO 12. . X . . . . X . . X . C= L= 9 . . . . . ap´s 4 gera¸oes. onde ’. . . . . .6 1 2 3 4 Respostas 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 vers˜o de 10 de fevereiro de 2008 a 197 88-08. . . . X X X . a a L= 9 . . est´ viva ou morta. . . . . X . . X X . . . . . . X . . X . X X . . Geralmente categorizados em termos de demandas de uso em Geod´sicos. respons´veis pela c˜ a monitoriza¸˜o das ´rbitas dos sat´lites. DoD. tanto aqueles que integram diversos c˜ e equipamentos como computadores de m˜o. e Guardas florestais. sincroniza¸˜o dos rel´gios atˆmicos de bordo dos ca o e ca o o sat´lites e atualiza¸˜o dos dados de almanaque que os sat´lites transmitem. Os sat´lites GPS. mas existem receptores mais caros o a com precis˜o de 1 cent´ a ımetro. geocachers (uma divers˜o bem moderna: uma caixa lacrada cheia de pinduricalhos e de a um livro ´ escondida em algum lugar no planeta e suas coordenadas publicadas. tem in´meras vantagens como o baixo pre¸o de aquisi¸˜o e in´meras u c ca u aplica¸oes. que tem caracter´ ca ca e a ısticas de trabalho semelhantes ` categoria anterior. A diferencia¸˜o entre essas categorias. Atualmente o sistema est´ sendo muito difundido em autom´veis a o com sistema de navega¸˜o de mapas. desde diversas marcas que comercializam solu¸oes ”tudo-em-um”. onde vˆ-se uma infinidade de modelos. e sabendo a velocidade de propaga¸˜o e ca do sinal.000 d´lares e precis˜o de 1 metro. o receptor calcula a o a distˆncia a cada um dos quatro sat´lites pelo intervalo de tempo entre o instante local e a e o instante em que os sinais foram enviados (esta distˆncia ´ chamada pseudodistˆncia). junto com informa¸˜o adicional como os elementos orbitais de movimento. bombeiros. atualmente os dois servi¸os est˜o dispon´ c a ıveis em regime aberto em qualquer parte do mundo. uma para cada sat´lite. Garmin e Leica. ge´logos. utilizado para determina¸˜o da posi¸˜o ca ca ca de um receptor na superf´ da Terra ou em ´rbita. Os topogr´ficos. e 6 de Novembro de 2004 (o 29ö). os receptores Geod´sicos s˜o e a capazes de captar as duas freq¨ˆncias emitidas pelos sat´lites (L1 e L2). e caracter´ c˜ e ısticas pr´prias como o p´s-processamento. A posi¸˜o ´ dada por latitude. Consiste numa ”constela¸˜o”de 28 sat´lites sendo 4 sobreso o ca e salentes em 6 planos orbitais. gratuitamente. trabalhos de prospec¸˜o e explora¸˜o de recursos naturais. pescadores. vulgarmente conhecido por GPS (do acr´nimo do o inglˆs Global Positioning System). encontrar o seu caminho para determinado local (ou de ca volta ao ponto de partida). a de navega¸˜o.000001 segundo) quando a amostra foi obtida. ´ um sistema de posicionamento por sat´lite. de controle e usu´rio. o que significa que o o geralmente n˜o informam o posicionamento instantaneamente. a dispositivos dedicados somente ao GPS o como estes das marcas Trimble. a e a 199 Coordenadas com um GPS com B´ssula e Alt´ u ımetro integrado Al´m de sua e aplica¸˜o obvia na avia¸˜o geral e comercial e na navega¸˜o mar´ ca ´ ca ca ıtima. s˜o enormemente beneficiados pela tecnologia do sistema. O GPS o a tem-se tornado cada vez mais popular entre ciclistas. rastreadores de ve´ ıculos. ca e Cap´ ıtulo 13 Exerc´ ıcio Pr´tico:007-GPS a . O sistema foi declarado totalmente operacional apenas em 1995. como aqueles dedicados a o exclusivamente ao posicionamento GPS. ou seja c ca e a a c a raz˜o da igualdade entre o dado real do posicionamento. geralmente na casa dos cent´ a ımetros. possibilitando assim ue e a elimina¸˜o dos efeitos da refra¸˜o ionosf´rica. O segmento do e ca e usu´rio consiste num receptor que capta os sinais emitidos pelos sat´lites. foram lan¸ados entre Fevereiro de 1978 (Bloco I). necessie tando apenas de um receptor que capte o sinal emitido pelos sat´lites. tamb´m a e e possuem elevada precis˜o. Contrariamente ao que inicialmente acontec cia. e ainda o tempo.´ CAP´ ITULO 13. pode-se registrar com precis˜o de micro-segundos a (0. de dispositivos ca e e integrados dentro de carros. onde tamb´m encontramos aplica¸oes para uso do e c˜ dado de posicionamento em outros equipamentos como notebooks. c˜ ca Medi¸˜o com um GPS O receptor n˜o necessita ter um rel´gio de t˜o grande precis˜o. que possibilita uma vis˜o geral da ´rea que vocˆ est´ ca a a e a percorrendo. ıcie o O sistema GPS foi criado e ´ controlado pelo Departamento de Defesa dos Estados e Unidos da Am´rica. o o ca tal como determinado por um conjunto de esta¸oes de observa¸˜o terrestres. Unidades espec´ e ıficas tˆm e custo aproximado de 3. O segmento de controle ´ formado pelas e ca e e esta¸oes terrestres dispersas pelo mundo ao longo da Zona Equatorial. qualquer pessoa que queira saber a sua posi¸˜o. o receptor. que a princ´ pode parea ca ca ıpio cer meramente de pre¸o de aquisi¸˜o ´ principalmente devido ` precis˜o alcan¸ada. A captura de dados por estes receptores ´ mais lenta. Pedro Kantek 200 vers˜o de 10 de fevereiro de 2008 a . Agrimensores diminuem custos e e obtˆm levantamentos precisos mais rapidamente com o GPS. por´m somente captam a portadora L1.com). etc. ca ca o arque´logos. celulares. Os sat´lites tˆm o e e a bordo rel´gios at´micos e constantemente difundem o tempo preciso de acordo com o seu o o pr´prio rel´gio. tratados por programa espec´ a a e ıfico. Ambas as categorias tem aplica¸oes t´cnicas. etc. As informa¸oes permitem tamb´m otimizar c˜ e a aplica¸˜o de corretivos e fertilizantes. Toe pogr´ficos e de Navega¸˜o. ca a o a a mas sim de um suficientemente est´vel.geocaching. A comunidade cient´ ıfica utiliza-o pelo seu rel´gio altamente preciso. pode situar-se na intersec¸˜o de quatro esferas. Descri¸˜o t´cnica Receptores GPS vˆm numa variedade de formatos. ca Tipos de receptores Existem diferentes receptores GPS. ou por leigos que queiram apenas orienta¸˜o durante as ca suas viagens. Durante expero iˆncias cient´ e ıficas de captura de dados. Cada um c circunda a Terra duas vezes por dia a uma altitude de 20200 quilˆmetros (12600 milhas) e o a uma velocidade de 11265 quilˆmetros por hora (7000 milhas por hora). constru´ e ıdos pela empresa Rockwell.. 88-08. Com a populariza¸˜o do GPS. a Sendo os mais acurados. balonistas. longitude e ca a ca e altitude. O receptor capta os sinais de quatro sat´lites para a e determinar as suas pr´prias coordenadas. O segmento a e a espacial ´ composto pela constela¸˜o de sat´lites. um novo conceito surgiu na agricultura: a ca agricultura de precis˜o. O sistema est´ dividido em trˆs partes: espacial. telefones. Ent˜o. O DoD fornece dois e tipos de servi¸os GPS: Standard e Precision. rel´gios. produz um mapa de produtividade da lavoura. e o oferecido pelo equipamento. conhecer a velocidade e direc¸˜o do seu deslocamento pode-se ca beneficiar com o sistema. por vezes e e e incorrectamente designado de sistema de navega¸˜o. Veja mais e em http://www. e pode ser utilizado por qualquer pessoa. embora possua menor precis˜o ca a de posicionamento. a No caso da categoria de maior uso. e rel´gios. Naturalmente a localiza¸˜o do ponto ca onde a amostra foi recolhida tamb´m pode ser importante. com valores na casa dos mil´ ımetros.1 Sistema de Posicionamento Global. at´ os externos que s˜o ligados por cabo ou ainda c˜ e a por bluetooth. Um receptor GPS a e (GPSR) decodifica as transmiss˜es do sinal de c´digo e fase de m´ltiplos sat´lites e calcula o o u e a sua posi¸˜o com base nas distˆncias a estes. Seu desenvolvimento custou 10 bilh˜es de d´lares. Uma m´quina agr´ a a ıcola dotada de receptor GPS armazena dados relativos ` produtividade em um cart˜o magn´tico que. EXERC´ ICIO PRATICO:007-GPS Decodificando as localiza¸oes dos sat´lites a partir dos sinais de microondas (tipo de onda c˜ e electromagn´tica) e de uma base de dados interna. ecoturistas. Associados a sistemas a c˜ de mapas embarcados. todos munidos de rel´gios absolutamente e o acertados at´ o mil´simo do segundo. Associados a sistemas de prote¸ao contra a c˜ c˜ roubo de autom´veis. 13. O que deveria ser um vˆo rotineiro se o o transformou numa trag´dia. y. a Vocˆ vai colocar 2 amigos. obtendo um tempo gasto pelo barulho para a a o percorrer a distˆncia entre o seu primeiro amigo e vocˆ. A camada de ar sobre a terra c˜ ´ como um l´pis aumenta a densidade da atmosfera. ´ CAP´ ITULO 13. A o a c˜ lista de aplica¸oes poss´ c˜ ıveis parece inesgot´vel. envia a identifica¸ao do sat´lite. aguarda julgamento. Um deles apenas sobre a superf´ c ıcie terrestre. que ´ a distˆncia entre o receptor e o c e e a sat´lite. o o Se o usu´rio estiver em movimento. receptores conseguem determinar sua posi¸ao c˜ com erros de 5 a 10 m. poder˜o informar ao motorista qual caminho tomar para ir vira tualmente a qualquer lugar sobre a superf´ terrestre. Localiza. russos e europeus tratam de ter cada um a u o seu. em plena noite. c˜ e o O sistema come¸a pela identifica¸ao de diversos pontos fixos sobre a superf´ terc c˜ ıcie restre. Tais pontos contam com esta¸oes transmissoras e permitem a cada sat´lite a c˜ e recep¸ao de diversos pontos. vocˆ e a o e e ouvir´ o tiro e desligar´ o cronˆmetro. Garcez permaneceu durante trˆs horas em e e vˆo cego. em v˜o.1 GPS Na d´cada de 70. c˜ e e a Este fato permite que interferˆncias (`s vezes propositais) obscure¸am ou at´ invalidem e a c e o sinal dos sat´lites. ´ A potˆncia de um sat´lite ´ de 500W. Os civis come¸aram a usar o sistema a partir da d´cada de c e 80.´ CAP´ ITULO 13. c˜ Al´m do sistema americano.458 m/seg) e conhecendo o tempo gasto pelo sinal do sat´lite ao receptor. e a intersec¸ao das 3 apresenta apenas 2 pontos ` c˜ no espa¸o. o sistema Galileu constru´ e operado pela Agˆncia ´ ıdo e Espacial Europ´ia. Nessa e ` a mesma hora. Pedro Kantek 201 88-08. o sinal de TV de um sat´lite ´ 1 bilh˜o de vezes mais forte. arriscou o aparentemente imposs´ ıvel: um pouso na copa das ´rvores. Como um o o e rel´gio atˆmico ´ muito caro e pesado. e a a e a a 88-08. Tudo funciona como se o receptor tamb´m gerasse no mesmo instante de tempo a e mesma seq¨ˆncia de impulsos digitais. O e c objetivo principal era permitir que os estimados 40. mas vamos a c˜ c˜ trabalhar apenas em 2D. e Ao fazer o mesmo c´lculo com um segundo sat´lite. O sistema americano usa duas radiofrequencias: L1 e L2. pelas a eliminat´rias da Copa do Mundo de 90. Essa ´ a ıdo e raz˜o pela qual embora o sistema seja p´ blico. vocˆ ligar´ um cronˆmetro.1 Problemas 13. na qual dois pontos tem coordenadas conhecidas. embora os militares tamb´m a usem. Por outro lado. a e o tenta se posicionar. estima-se em mais de 50. E c˜ a colocado dentro de um copo de agua. que ningu´m aqui est´ a fim de enlouquecer por causa da e a geometria anal´ ıtica. e fazendo isso com diversas esta¸oes. Perdido em pleno ar. Garcez foi acusado de negligenciar rotinas b´sicas da avia¸ao. Hoje. e Todos os sat´lites emitem 2 mensagens: A primeira. e A grande explos˜o de uso. Da an´lise dos dois sinais (o gerado pelo sat´lite ue a e e o gerado internamente no receptor) ´ poss´ e ıvel medir o retardo do sinal do sat´lite. a 13. ´ poss´ estabelecer a distˆncia entre e e ıvel a sat´lite e receptor. afirmou estar onde n˜o estava. A L2 ´ de uso exclusivo militar.729. . Ser´ a distˆncia D2 . Aquele vˆo tamb´m estaria nos jornais no o o e dia seguinte: “Avi˜o desaparece na Amazˆnia”. e O procedimento ser´ repetido as 14h15 com seu amigo n´ mero 2. ıcie poder˜o informar a localiza¸ao do telefone. vocˆ conseguir´ uma medida confi´vel e a a entre vocˆ e seu amigo 1. o sat´lite conhece sua real e e c˜ e posi¸ao com precis˜o de cent´ c˜ a ımetros. obtem-se uma segunda esfera. c˜ Finalmente ao fazer o c´lculo com um terceiro sat´lite. obtˆm-se uma terceira esfera. EXERC´ ICIO PRATICO:007-GPS Daqui. os EUA come¸aram a projetar e implementar o sistema conhecido como e c GPD (Global Positioning System). e Conhecendo a velocidade da luz (fixa e igual a 299. dever´ vir quando celulares e autom´veis come¸arem a a a o c vir de f´brica com a possibilidade de informar sua localiza¸ao. um dos seus amigos dar´ um tiro de espoleta. com precis˜o de metros. Este fato ´ usado em teatros de guerra. Vamos chamar esta distˆncia a e a de D1 .2 Dois amigos Vamos simular o c´lculo de uma posi¸ao desconhecida usando triangula¸ao. Ent˜o usa-se um quarto sat´lite para refazer os c´lculos e permitir acertar o atraso/adiantamen a e a do rel´gio local ao rel´gio da rede. Apenas e e e a para efeito de compara¸ao. Pedro Kantek 202 vers˜o de 10 de fevereiro de 2008 a . Alguns d´cimos de segundos depois.000 usu´rios militares americanos se a orientassem sobre a terra. Longe dali. e completamente precisos. j´ que e e a seus c´digos (a segunda parte das mensagens) n˜o s˜o p´ blicos e s˜o protegidos por o a a u a criptografia. o equivalente a 5 lˆmpadas de 100W. Ainda hoje. Uma segunda mensagem ´ uma seq¨ˆncia de c˜ c e ue impulsos digitais em um padr˜o inconfund´ a ıvel. Lembrando que o som se propaga a 340m/seg. um em cada ponto. a e que precisa ser analiticamente corrigido antes de estabelecer a posi¸ao do receptor. e logo esta ´ a posi¸ao do e c˜ receptor. Desorientado. uma r´dio que transmitia a partida que entraria a a para a hist´ria como “o jogo da fogueteira”. O primeiro sat´lite Navstar foi lan¸ado em 1978. e e Vocˆ combinou que as 14h00. existe o russo Glonass de uso exclusivo pelos militares e e a partir da ultima semana de 2005. a Todos os sistemas acima se baseiam na triangula¸ao (ou quadrangula¸ao) do receptor c˜ c˜ em rela¸ao a 3 ou 4 (ou mais) sat´lites em ´rbita da terra. Cada sat´lite possui um rel´gio atˆmico. Ao usar apenas o sinal L1. e vers˜o de 10 de fevereiro de 2008 a Se os receptores pudessem ter um rel´gio atˆmico 3 sat´lites bastariam. quando as for¸as americanas e e c introduzem geradores locais de ru´ centrados na banda usada pelo sistema. a c˜ salvou a vida de muitos passageiros ao conseguir aterrissar a aeronave e cuidar dos feridos. Sem combust´ a ıvel. Temendo que o erro fosse descoberto. A L1 ´ chamada Sinal e Civil. z (as coa ordenadas no espa¸o do sat´lite) e de raio R. com visibilidade praticamente a nula. Pelo mesmo a ` u mecanismo vocˆ obter´ a distˆncia entre vocˆ e seu amigo 2.000 de dispositivos capazes de receber os sinais de GPS e apresentar uma estimativa de localiza¸ao. a o Her´i e vil˜o. Cezar Augusto Garcez comanda um vˆo cego. Medindo o tempo gasto por cada sinal desde a esta¸ao c˜ c˜ terrena at´ o sat´lite.1. passou diversas informa¸oes truncadas o c˜ para a base. ao mesmo tempo. os receptores usam rel´gios de quartzo comum o o e o (sujeitos a erros de 1 seg/dia). integrado ` rede GPS e que garante precis˜o e o o a a de tempo de 1 bilion´simo de segundo. a e e O receptor ainda pertence as 3 esferas. causados pela a¸ao da ionosfera. e c˜ e sua posi¸ao no espa¸o e sua hora interna. os sinais ainda vˆm afetados pelo efeito Doppler. causando refra¸ao nos sinais.-) Suponhamos uma regi˜o plana. em algum ponto a princ´ o ıpio entre Marab´ e Bel´m. informar˜o a localiza¸ao em tempo real e assim por diante. e a e o receptor est´ sobre o c´ a ırculo de intersec¸ao das duas esferas. EXERC´ ICIO PRATICO:007-GPS Dia 3 de setembro de 1989 Maracan˜ lotado para assistir ao Brasil X Chile. pode-se inferir que o receptor est´ sobre a esfera de centro x. Associados a telefones celulares. Idem c˜ para os efeitos relativ´ ısticos associados. o comandante Garcez ´ a principal personagem do o a e RG-254 que caiu na selva amazˆnica em 1989. publicou O Globo.000. s˜o conhecidos α1 . chega-se ao valor correto do c˜ observador que ´ xo = 410m. Obtem-se d1 = 161. pede-se que vocˆ e calcule a sua posi¸ao.7x 300 13. Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x. trace duas circunferˆncias a e de raios D1 e D2 e nos encontros das duas circunferˆncias vocˆ estar´.2 Como fazer Para entender o funcionamento do sistema. disponha os dois pontos. e Seu amigo 1 est´ em x1 = 283 e y1 = 130. ıcie ´ CAP´ ITULO 13. a O tiro do amigo 1 demorou t1 = .614903 segundos.´ CAP´ ITULO 13. EXERC´ ICIO PRATICO:007-GPS Sabendo que seu amigo 1. tamb´m no centro e de um c´ ırculo de raio D2 . Pedro Kantek 88-08. Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x.y x. e e a Obs: Este procedimento tamb´m pode ser usado para verificar o acerto/erro das contas e e a verifica¸ao final do ponto. a Seu amigo 2 est´ em x2 = 679 e y2 = 256. y 2 e y. 48m e d2 = 136.2. y1 = 141m.335990 segundos. Pedro Kantek 204 vers˜o de 10 de fevereiro de 2008 a .y x. se encontra no centro de um c´ ırculo de raio D1 e coordenadas do centro iguais a x1 .2.5 Dados: Problema 3 Substituindo o y obtido em qualquer uma das equa¸oes. bem como o raio dele. um bom m´todo ´ e a a e e o gr´fico. Use um papel milimetrado. O tiro do amigo 2 demorou t2 = .499585 segundos. haver´ 2 pontos candidatos. c˜ Obs: se vocˆ n˜o tiver muita intimidade com a geometria an´litica.y 13. a 13.2. a Seu amigo 2 est´ em x2 = 696 e y2 = 210. Operando com elas obtem-se dois pares de x.3 Dados: Problema 1 Seu amigo 1 est´ em x1 = 253 e y1 = 169. obtˆm-se as duas distˆncias. y1 . vers˜o de 10 de fevereiro de 2008 a 203 88-08. e que vocˆ se encontra sobre os dois c´ e ırculos.395137 segundos. a O tiro do amigo 1 demorou t1 = .2. y2 .4 Dados: Problema 2 Seu amigo 1 est´ em x1 = 392 e y1 = 173. Os tempos s˜o: a t1 = 0. Responda os 2. β2 .y x.6 Dados: Problema 4 Seu amigo 1 est´ em x1 = 310 e y1 = 170.507112 segundos.y 13. Obtem-se agora duas f´rmulas a o em x2 .21 = 0 2 2 A f´rmula do circulo 2 ´ x + y − 1040x − 582y + 336421 = 0 o e Subtraindo uma equa¸ao da outra. a Seu amigo 2 est´ em x2 = 671 e y2 = 225.7 − 1. O tiro do amigo 1 demorou t1 = . x2 = 520m. um c´ ırculo no plano ´ perfeitamente determinada se soubere mos as coordenadas α. β do seu centro. Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x. y2 = 291m. a O tiro do amigo 1 demorou t1 = . a f´rmula ´ o e (x − α)2 + (y − β)2 = R2 Do problema. a Da f´ ısica: distˆncia = velocidade × tempo.449615 segundos.y 13. EXERC´ ICIO PRATICO:007-GPS Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x. fica-se com 512x + 300y − 272920 = 0 e c˜ y= 272920 − 512x = 909. a Seu amigo 2 est´ em x2 = 507 e y2 = 275.568409 segundos.675453 segundos. y que s˜o os pontos a candidatos.y 13. usualmente representada por R. e a Da geometria anal´ ıtica. yo = 210m. 4749seg e t2 = 0. O tiro do amigo 2 demorou t2 = . β1 . O tiro do amigo 2 demorou t2 = . ´ necess´rio relembrar um pouco de f´ e a ısica e de geometria an´litica. 4017seg. x.2. Sabendo que a velocidade do som ´ 340 a e m/seg.y x. α2 .1 Exemplo Seja um caso em que x1 = 264m. e seu amigo 2 se encontra em x2 . ambos o e a na superf´ da terra. 6m. O tiro do amigo 2 demorou t2 = . A f´rmula do circulo 1 ´ x2 + y 2 − 528x − o e 282y + 63501. D1 e D2 . Da geometria anal´ ıtica.2. c˜ Como s´ usaremos 2 amigos (ao inv´s de 3). y 13.y x. EXERC´ ICIO PRATICO:007-GPS Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x.y Seu amigo 1 est´ em x1 = 308 e y1 = 157. 13.y 13.686965 segundos.12 Dados: Problema 10 Seu amigo 1 est´ em x1 = 329 e y1 = 145. O tiro do amigo 2 demorou t2 = . Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x.y Seu amigo 1 est´ em x1 = 288 e y1 = 109.2.593287 segundos. a O tiro do amigo 1 demorou t1 = .7 Dados: Problema 5 Seu amigo 1 est´ em x1 = 201 e y1 = 163.8 Dados: Problema 6 Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x.429059 segundos.231924 segundos.11 Dados: Problema 9 Seu amigo 1 est´ em x1 = 313 e y1 = 195.256153 segundos. EXERC´ ICIO PRATICO:007-GPS ´ CAP´ ITULO 13. a Seu amigo 2 est´ em x2 = 619 e y2 = 205.y x. a O tiro do amigo 1 demorou t1 = .y x. a O tiro do amigo 1 demorou t1 = .443191 segundos.367376 segundos. a Seu amigo 2 est´ em x2 = 506 e y2 = 279. 13.y x.2. Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x.13 1 2 3 4 5 6 7 8 9 10 Respostas 478 524 408 513 400 433 416 408 422 406 215 198 218 220 196 150 188 194 256 162 13.y x. a O tiro do amigo 1 demorou t1 = .10 Dados: Problema 8 Seu amigo 1 est´ em x1 = 274 e y1 = 105.473127 segundos. O tiro do amigo 2 demorou t2 = . a O tiro do amigo 1 demorou t1 = . a Seu amigo 2 est´ em x2 = 561 e y2 = 204.9 Dados: Problema 7 Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x. Pedro Kantek 88-08.y 13.372242 segundos. O tiro do amigo 2 demorou t2 = . a O tiro do amigo 1 demorou t1 = .366280 segundos.´ CAP´ ITULO 13. a Seu amigo 2 est´ em x2 = 627 e y2 = 251.2. Os dois pontos candidatos a serem sua localiza¸ao s˜o: c˜ a x.2.y 13.2. O tiro do amigo 2 demorou t2 = .330474 segundos. Pedro Kantek 206 vers˜o de 10 de fevereiro de 2008 a . O tiro do amigo 2 demorou t2 = .2.570475 segundos. O tiro do amigo 2 demorou t2 = . a Seu amigo 2 est´ em x2 = 511 e y2 = 264.y x. vers˜o de 10 de fevereiro de 2008 a 205 88-08.2. a Seu amigo 2 est´ em x2 = 519 e y2 = 219. com “2” o seguinte e assim por diante).1. existem dispon´ ıveis as seguintes quantidades no dep´sito: 100 Kg de a¸ucar. 300 Kg de abacax´ 800 Kg de bananas e 1 tonelada de o c ı.1.1. a que horas do dia seguinte o tanque ficaria com 2000 bolinhas ? (OBM 2006) 14.1.5 1 a b b 3 --------* * * * * * --------1 c c 0 1 Problema 5 Na multiplica¸ao a seguir. Um menino come¸ou a retirar as a c bolinhas. a nome v´lido inv´lido a a R33 33R SALDOBANCARIO JKGHHGGJHG OBA AQUI A+B ZERO/DOIS Tipos de vari´veis Para representar as vari´veis a seguir. Pedro Kantek 208 vers˜o de 10 de fevereiro de 2008 a .1. informe se cada nome ´ v´lido a e a ou n˜o. Pergunta-se quantos quilos de salada de fruta poder˜o ser produzidos preservando a as propor¸oes da f´rmula original ? c˜ o 14. 2 Kg de laranja e 250 gramas c˜ de a¸ucar. tem um custo para entrar de 3500 ienes para a a adultos e 1200 ienes para estudantes. A f´rmula desta salada. Quantos estudantes havia ? 207 88-08. Ap´s 6 horas. com velocidade constante quando eram 10h.2 Problema 2 Cap´ ıtulo 14 Exerc´ ıcio Pr´tico: 008 a Problemas Quais os nomes v´lidos? Na lista de nomes a seguir.1 Problema 1 Qual o valor de a + b + c Um certo espet´culo musical no Jap˜o.5 Kg de abacaxi. nome do campo int real l´gico carac cadeia o nome sal´rio a n´ mero de filhos u o sujeito tem filhos ? idade ano de nascimento categoria de motorista nome de uma vitamina Em um tanque h´ 4000 bolinhas de pingue-pongue. No s´bado passado havia 608 pessoas.3 Problema 3 Uma processadora de alimentos desenvolveu uma marca de salada de fruta enlatada de muito sucesso.100 ienes. c˜ 14. b e c s˜o algarismos: c˜ a x 14. Quanto vale u e e a + b + c ? (OBM 2004) 14. 0.PROBLEMAS 14. EXERC´ ICIO PRATICO: 008 .707. h´ o a no tanque 3520 bolinhas. uma por uma. a. envolve as seguintes frutas e ingredientes nas o seguintes propor¸oes: 1 Kg de banana. Se o menino continuasse no mesmo ritmo. c Suponha que em um determinado dia. qual o(s) tipo(s) mais a a adequado ? (Se houver mais de um tipo.4 Problema 4 A soma de dois n´ meros primos a e b ´ 34 e a soma dos primos a e c ´ 33. Descubra-a e e ´ coloque o seu valor no quadrado duplo que segue a defini¸ao. laranja.´ CAP´ ITULO 14.1 Resolva os exerc´ ıcios a seguir Cada um dos exerc´ ıcios a seguir apresenta uma resposta num´rica unica. indique com “1” o melhor. e a renda a da noite foi de 1. pergunta-se Este pacote pode (responda 1) o a ou n˜o pode (responda 0) ser mandado pelo correio ? a 14.9 Problema 9 Um time de futebol ganhou 8 jogos a mais do que perdeu e empatou 3 jogos menos do que ganhou en 31 partidas jogadas.11 1 2 3 4 5 Respostas 183.0 0 14.1.0 14.1 m.85 Kg e cujas a dimens˜es em metros s˜o: 0.7 Problema 7 As letras O. quanto vale O + B + M ? (OBM 2005) 14.7 x 1. Pedro Kantek 88-08. em cent´ ımetros? 14.0 1500.1.0 36.PROBLEMAS 6 7 8 9 10 14. entre motos e carros.1. Como curiosidade. EXERC´ ICIO PRATICO: 008 .8 Problema 8 Na oficina mecˆnica do Z´ Ti˜o.0 20.0 30. O comprimento master ´ o maior e barbante que d´ a volta completa ao pacote.1. O comprimento do maior lado ´ 12 cent´ e ımetros maior do que o menor lado. nesta semana foram reparados 40 ve´ a e a ıculos. (O×B)+M = 46 u e O + (B × M ) = 64.1. Quantas partidas o time ganhou ? (OBM 2006) 14. Supondo um pacote de 2.´ CAP´ ITULO 14.PROBLEMAS ´ CAP´ ITULO 14.10 Problema 10 O correio de um determinado pa´ s´ aceita transportar pacotes com peso inferior a 3 ıs o Kg e comprimento master menor que 250 cent´ ımetros. EXERC´ ICIO PRATICO: 008 .3 x 0.0 10. B e M representam n´ meros inteiros.0 11.0 209 88-08. Se O×B×M = 240. o auxiliar do Z´ Ti˜o contou que o n´ mero total de rodas e a u dos ve´ ıculos reparados foi 100 rodas.6 Problema 6 O per´ ımetro de determinado retˆngulo ´ 16 vezes maior do que o menor lado do retˆna e a gulo. Pergunta-se quantas motos foram reparadas ? 14. Qual o comprimento do maior lado. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 210 vers˜o de 10 de fevereiro de 2008 a .1. 2 Exerc´ ıcio 1 Cap´ ıtulo 15 Exerc´ ıcio pr´tico: 009-Achar o a n´ mero que falta u 15. Um dos n´ meros do final da seq¨ˆncia c˜ u ue ´ representado por um sinal de ?. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 3 6 7 3 5 9 8 7 3 6 7 6 6 1 4 4 6 3 5 4 5 8 4 4 9 4 1 7 7 7 2 4 10 4 7 8 4 8 5 9 4 1 2 3 9 5 3 4 3 8 8 2 12 2 7 4 5 5 1 5 6 3 11 19 15 16 13 4 24 14 19 16 9 8 12 19 18 8 14 3 21 17 7 21 8 18 13 9 14 15 17 17 4 26 35 34 32 21 17 56 21 35 26 19 10 27 47 32 15 32 9 50 33 9 37 18 43 17 18 30 17 39 27 5 63 60 83 57 34 25 136 37 61 48 47 18 66 113 59 26 78 15 121 58 16 62 44 104 30 32 55 47 95 48 6 152 96 200 93 55 46 328 60 103 80 113 28 159 273 100 49 188 27 292 94 25 98 106 251 47 59 91 81 229 79 7 367 145 483 142 89 88 792 99 171 134 273 46 384 659 168 90 454 51 705 143 41 147 256 606 77 109 140 175 553 131 8 886 9 2139 290 2815 10 11 12467 511 16407 508 610 992 26904 689 1213 952 9273 314 13044 22387 1203 1028 15422 579 23949 509 280 513 8696 20586 526 1245 506 2735 18785 920 resposta some em 3 ? 390 Neste folha de exerc´ ıcios.1 Qual o n´ mero que falta ? u N. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a . Os a ue u n´ meros iniciais (1.´ ´ CAP´ ITULO 15. 2 ou 3) a depender da seq¨ˆncia s˜o aleat´rios. Os pr´ximos at´ o u ue a o o e final seguem uma determinada lei de forma¸ao. EXERC´ ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA 15. Vocˆ deve descobrir que n´ mero ´ esse e e u e ? 1166 206 144 159 ? 387 377 + + + + + + + + + + + + + + + + + + + + = ? ? 293 4616 262 459 360 1591 120 2238 ? 11144 425 = ? ? 281 ? 586 3841 194 = Exemplo Veja-se alguns casos N. 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8 4 8 5 4 9 1 3 6 9 8 5 1 5 9 12 7 2 7 8 13 4 7 9 5 1 9 9 4 13 21 3 15 12 17 22 5 16 24 14 7 1 10 9 22 37 14 22 19 33 38 9 32 57 19 16 15 19 13 38 62 24 42 31 58 63 14 57 138 33 24 25 29 22 63 98 41 69 50 94 99 23 93 333 52 47 41 48 35 99 ? ? ? 927 1591 277 165 = 7 147 79 116 81 143 148 37 142 804 85 87 81 77 57 148 8 211 ? ? 131 207 212 60 206 1941 137 158 147 125 ? 212 211 9 292 264 311 212 ? 293 ? ? ? 222 292 ? ? 149 293 10 ? 487 506 ? 388 ? 157 387 11313 ? ? 497 327 241 ? 11 513 895 822 555 509 514 254 508 27312 581 987 913 529 390 514 resposta some em 3 3 ? 9273 740 ? ? 304 2646 171 4109 = + + + + + + + + + + ? 6388 = ? 93 ? 9920 388 173 = ? 207 66 211 618 = ? ? 292 = = ? 3532 201 368 285 687 3223 349 ? 3602 8527 325 ? ? 200 = = ? 385 1361 ? ? 1335 214 212 = = ? ? = 88-08. ser˜o apresentadas diversas seq¨ˆncias de 11 n´ meros. 3 Exerc´ ıcio 2 15.4 Exerc´ ıcio 3 N.´ ´ CAP´ ITULO 15. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 6 6 7 6 6 2 3 5 8 2 1 3 8 2 5 4 8 7 5 7 1 5 2 2 4 9 5 2 8 5 2 2 2 7 4 10 8 8 6 6 6 5 1 5 9 2 6 6 7 3 1 2 7 4 6 4 2 4 7 12 9 3 10 2 21 14 19 1 12 16 20 8 14 4 17 1 12 1 22 14 4 12 4 9 14 15 12 13 10 9 21 18 4 22 10 35 32 35 11 21 28 46 14 27 8 26 12 19 11 34 21 12 17 8 21 26 31 20 28 15 16 37 34 5 54 14 77 78 60 20 34 60 112 22 49 13 47 22 36 18 78 35 19 33 16 37 48 56 44 69 26 25 62 59 6 130 26 147 188 96 32 56 116 270 36 84 25 77 35 60 30 146 56 35 54 32 67 82 92 84 166 42 41 98 95 7 314 50 301 454 145 63 91 236 652 58 141 46 128 69 101 59 302 91 66 91 64 125 138 141 172 401 69 66 147 144 8 758 90 9 1830 166 1197 2646 10 11 10666 562 4781 15422 511 713 630 3756 22148 398 1013 524 899 781 720 665 4782 623 748 645 1024 1425 992 507 2732 13621 478 453 513 510 resposta some em 3 ? 389 435 457 391 323 534 ? ? 135 + + + + + + + + + + + + + + + + + + + + = ? 1096 209 115 148 468 1574 94 233 84 209 126 ? ? 2387 + + + + + + + + + + + + + + + + + + + + = ? 291 ? 390 ? 122 158 210 ? 210 240 ? ? 291 915 1199 = ? 2209 2385 360 474 ? 3800 152 ? ? 1876 = ? ? 135 = ? 293 293 135 ? 155 ? ? 623 = ? 212 = ? 554 = ? 249 8597 ? 230 272 196 1198 238 221 ? 1475 137 ? 222 939 = ? 107 ? 443 = ? 1877 387 386 ? 2386 385 407 397 512 ? 206 205 208 191 ? ? 383 313 1661 451 = ? ? ? 149 = ? ? 4010 734 391 ? 256 421 = ? 229 228 205 340 968 112 = ? ? 210 210 112 828 ? 286 684 2337 ? 610 ? 291 181 1999 147 3800 = ? ? ? 239 ? ? ? 295 280 392 389 = = ? 173 292 289 = ? 1574 243 213 ? ? 651 = ? ? ? 214 = vers˜o de 10 de fevereiro de 2008 a 88-08. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA ´ ´ CAP´ ITULO 15. EXERC´ ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA 15. Pedro Kantek 88-08. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 3 5 1 1 7 7 2 7 3 9 2 8 9 7 9 9 4 3 2 7 4 5 4 7 7 1 7 3 8 3 2 7 9 9 1 11 2 6 11 1 5 3 9 13 1 5 5 7 7 6 5 3 2 8 11 11 8 2 2 6 3 3 16 18 12 9 20 11 6 20 5 23 9 17 22 1 19 14 15 16 15 8 13 9 19 20 20 9 11 7 20 15 4 32 34 23 11 36 15 14 36 11 33 16 26 38 9 43 19 29 32 31 20 22 20 34 36 36 17 24 11 46 27 5 57 59 37 21 61 28 26 61 27 79 29 43 63 11 105 33 59 57 56 33 41 49 60 61 61 26 59 20 112 51 6 93 95 62 41 97 45 46 97 65 145 49 69 99 21 253 52 117 93 92 61 69 118 101 97 97 43 142 33 270 87 7 142 144 101 73 146 75 86 146 157 303 82 112 148 41 611 85 235 142 141 114 116 285 168 146 146 69 343 55 652 147 8 206 9 287 289 268 10 11 508 510 705 841 512 524 982 512 5333 4783 585 767 514 457 20755 581 3755 508 507 1296 829 9681 1192 512 512 474 11651 388 22148 1059 resposta some em 3 3 N. Pedro Kantek 216 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA 15.5 N. EXERC´ ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA ´ ´ CAP´ ITULO 15. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 8 2 5 7 4 2 9 6 1 9 6 4 7 1 2 9 5 9 1 6 9 2 4 5 7 5 7 7 2 4 Exerc´ ıcio 4 2 7 5 8 11 8 9 9 2 9 3 5 8 11 6 6 7 2 4 6 6 7 5 7 5 2 8 11 11 6 6 3 18 9 21 20 17 11 21 10 14 9 17 17 20 8 15 4 12 13 7 9 25 10 15 18 9 16 20 20 15 16 4 28 19 50 36 33 20 33 14 27 21 27 33 36 20 31 20 16 17 14 21 39 18 29 31 11 27 36 36 31 38 5 49 37 121 61 58 31 57 26 45 33 61 58 61 36 56 31 40 30 27 36 89 31 59 57 20 46 61 61 56 92 6 80 75 292 97 94 51 93 42 76 63 115 94 97 76 92 55 72 47 48 66 167 52 117 96 31 76 97 97 92 222 7 132 149 705 146 143 82 153 70 125 117 237 143 146 148 141 106 152 77 89 123 345 86 235 161 51 125 146 146 141 536 8 215 299 1702 210 207 133 249 114 9 10 568 11 921 2389 23949 512 509 563 1065 490 881 1329 3757 509 512 2388 507 1196 2392 526 1019 1401 5465 607 3755 1149 348 874 512 512 507 18208 resposta some em 3 3 ? 597 ? 9920 391 388 348 ? ? ? ? 405 + + + + + + + + + + + + + + + + + + + + = = ? 334 ? 302 543 723 1875 388 ? 213 467 207 210 = ? ? ? 291 596 = ? 1196 386 651 1192 325 554 ? 205 ? 353 = ? 296 124 ? ? 301 414 1369 230 = ? 225 679 ? ? 374 1877 = ? 469 265 ? 434 133 ? 215 539 391 = ? 204 ? 210 205 1294 ? 291 291 = ? 386 ? 3124 ? = 15.´ ´ CAP´ ITULO 15.6 Respostas 1060 2820 658 1060 7066 10503 794 1048 953 995 913 1622 9698 4027 932 977 1970 1115 1103 993 2097 1501 492 3653 3347 1255 1535 1787 1005 5510 7188 624 8685 9663 526 8219 1 12169 2 760 3 5319 4 5654 vers˜o de 10 de fevereiro de 2008 a 215 88-08. Pedro Kantek 88-08. ) soma das linhas 16.7)) 32 (.5)) × (7 .(6 .F.1 Exerc´ ıcio 1.)) ∨ . quando y = 0.V.2 Exerc´ ıcio 1.V.1. v´lido apenas aqui ´ 0 ÷ 0 que aqui a a a e dar´ 1.9)) + (2 .1 Exerc´ ıcio 1 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.7) + (4 + 4)) + (6 + 8)) (6 × 9)+(( ((9 + 7) ÷ (2 + 5))) + (8 + 4)) (((30 div 10) mod 5) mod (16 div 6))-(((6 + 4) + (8 .F.F.´ ´ ´ CAP´ ITULO 16.)∨((.))∧((.9))-(6 × 9) (((11 mod 4) mod 5) div (25 mod 6))-(((3 .7) + (8 × 6)) + (4 .4) .4)) 4 (.1.V.) soma das linhas Cap´ ıtulo 16 16.1.F.7) + (8 . EXERC´ ICIOS PRATICOS: 011 .F.(5 + 3)) 32 (∼(.3)) (((24 div 7) mod 6) mod (22 div 3))+(((5 + 2) + (3 + 3)) × (3 + 5)) (9 + 2)+(((8 + 8) × (3 .4 Exerc´ ıcio 1.) 8 (20 div 6)<( (((3 + 2) + (2 × 5)) ÷ (4 + 8))) 16 (18 mod 4)<(((4 . ∧ .V. matematicamente n˜o est´ definida.5)) ÷ (3 + 6))) ((26 div 5) mod 3)-(((8 + 3) × ( (9 ÷ 7))) + (9 + 3)) (((4 + 7) .F.(5 . lan¸ando e c o total no quadro abaixo (((18 div 9) div 1) div (11 div 6))-(((3 + 7) × (2 + 3)) .2)) ((26 div 7) div 1)-(((4 × 9) .5) × (5 + 2)) + (5 + 4)) 4 (∼(.(7 . ∨ .2 16.(7 + 5)) + (7 × 3)) soma dos valores Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.5 Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.)∨((.9)) .4 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.V. c˜ a a Entretanto.2)) × (2 .F.1 16.) ∧ .4)) ((30 div 6) div 3)-(((3 × 4) + (9 + 2)) × (8 . Pedro Kantek 218 vers˜o de 10 de fevereiro de 2008 a . ∧ . ∧ .2) + (8 . Da mesma a maneira.F. lan¸ando e c o total no quadro abaixo ((27 div 7) mod 2)+( (((9 + 4) . x ÷ 0 n˜o est´ definido.))∧((∼(. ∨ .(8 .(5 × 5)) + (7 . ∨ .6)) (((5 + 9) .4)) .V.(6 .(9 .V.3)+(((3 . para esta folha.1. lan¸ando o total no quadro abaixo c 1 ((26 div 5) mod 4)>(((5 .F.F.F.1.(5 + 2)) soma dos valores Note que a opera¸ao x mod y.(3 .4)) 2 (21 div 1)>(((6 .3) + (4 + 5)) + (6 + 2)) 2 (23 mod 10)>(((6 × 8) .3)) (2 . a 16.F. ∨ .V.6)) .2)) 88-08.7)) .5 Exerc´ ıcio 1. lan¸ando e c o total no quadro abaixo (((14 mod 9) div 1) div (19 mod 8))-(((3 .3 Exerc´ ıcio 1.3 Exerc´ ıcios Pr´ticos: 011 a Matem´tica e L´gica B´sicas a o a 16.8)) (((21 mod 9) mod 5) div (16 mod 7))+(((4 . ∨ . combinar-se-´ que x mod y = x quando y = 0. lan¸ando o total no quadro abaixo c 1 ((29 div 4) div 6)<(((7 + 7) + (3 + 9)) × (6 .2)) .(6 .) 8 (28 div 10)>( (((8 + 7) × (9 × 8)) ÷ (6 + 6))) 217 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.MATEMATICA E LOGICA ´ BASICAS 16 (15 mod 10)>(((6 × 7) × (5 .) ∧ . O caso particular.2))-(6 + 8) ((27 div 3) div 5)+(((8 + 3) + (3 × 3)) × (8 .) ∨ . lan¸ando o total no quadro abaixo c 1 ((23 div 8) mod 6)>(( ((3 + 7) ÷ (2 + 8))) + (4 .6) + (7 × 9)) .10 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.V.F.1.)∧((.5) + (5 .2.8)) + (9 + 6)) ((20 div 6) div 3)-(((4 + 6) × (2 × 3)) + (4 + 3)) 88-08.)∧((.5)) .1. ∧ .4)) + (9 × 5)) ((25 div 6) div 3)-(((5 + 8) × (9 + 5)) + (6 + 8)) (((8 × 6) .F.V.)∨((.) soma das linhas Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.F. ∧ .F.F.F.10 Exerc´ ıcio 1.(6 + 8)) 4 (. lan¸ando e c o total no quadro abaixo (((14 mod 4) mod 6) mod (18 mod 10))-(((5 .V.V.6 Exerc´ ıcio 1.F.)) 8 (27 div 8)>(((9 . Pedro Kantek 219 220 vers˜o de 10 de fevereiro de 2008 a .2) × ( (8 ÷ 7))) . ∧ .1.8 Exerc´ ıcio 1.3)) (((8 + 7) + (6 + 4)) + (5 + 2))-( (8 ÷ 4)) ((19 mod 3) mod 5)+(((7 + 7) + (3 . ∨ .F. ∨ .1.3)) 16 (28 mod 6)<(((8 + 9) × (8 + 5)) + (9 .F.)∨((.V. lan¸ando o total no quadro abaixo c 1 ((14 div 1) div 5)>( (((3 .(3 × 9)) .(7 + 9)) × (3 + 7))-(3 . ∨ . ∧ .(7 + 8)) 16 (13 mod 7)>((( (7 ÷ 4)) + (7 + 8)) + (3 × 8)) 32 (.2) + (5 + 2)) + (2 + 6)) (((26 div 3) mod 5) mod (15 div 1))+(((6 + 8) + (8 + 2)) + (4 × 5)) (3 + 7)+(((9 + 6) × (2 + 6)) × (6 .V.)∧((.9)) + (9 .1 Exerc´ ıcio 2 Exerc´ ıcio 2.) 8 (14 div 2)<(((6 × 4) × (6 .(3 + 7)) .V. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 011 .) ∨ (∼.2) + (3 . ∧ . lan¸ando e c o total no quadro abaixo (((13 mod 9) mod 6) mod (19 mod 4))-(((7 .5) .) ∧ .) ∧ .(4 .) soma das linhas 16.9) + (4 + 9)) + (2 + 4)) (((18 div 1) div 4) div (29 div 10))+(((4 + 4) × (4 .)) soma das linhas 16.V.V.MATEMATICA E LOGICA ´ BASICAS 16 (22 mod 6)<(((4 + 2) . lan¸ando o total no quadro abaixo c 1 ((26 mod 7) mod 6)>(((7 .7) + ( (8 ÷ 2))) .8 Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.´ ´ ´ CAP´ ITULO 16.F. EXERC´ ICIOS PRATICOS: 011 .3)) 32 (.V.3)) ((11 mod 2) mod 3)+(((2 .) ∨ .7 Exerc´ ıcio 1.(2 + 7)) ÷ (2 + 5))) 2 (22 div 4)>(((7 .) ∧ .(5 + 5)) 2 (18 div 10)>( (((9 × 8) + (7 + 7)) ÷ (2 × 6))) 4 (. ∨ . lan¸ando e c o total no quadro abaixo (((19 div 3) div 4) mod (21 div 2))-(((9 .2) soma dos valores Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.4)) .9 Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.7 16.2 16.9 Exerc´ ıcio 1.( (4 ÷ 3))) vers˜o de 10 de fevereiro de 2008 a 16.) ∧ (∼.3) × (4 × 2)) + (5 × 4)) (( ((7 × 3) ÷ (2 + 8))) × (8 + 9))-(2 + 3) soma dos valores ´ ´ ´ CAP´ ITULO 16.F.6)) (((6 .(3 .(3 + 8)) (((12 mod 9) mod 6) mod (13 mod 7))+(((4 + 9) . ∧ .F.2) . ∧ .) 8 (15 div 3)>(((4 + 4) + (9 .V.F.MATEMATICA E LOGICA ´ BASICAS ((19 mod 3) mod 4)-(((8 .)∨((.V.6 16.F.F.V.2)) + (9 .V. ∨ .F.(7 + 7)) + ( (8 ÷ 3))) 32 (.1 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.1.7)) 2 (24 div 10)<(((5 .6))-(2 + 2) soma dos valores 16.2) + (8 + 5)) × (8 + 7)) 4 (. ∨ . lan¸ando o total no quadro abaixo c 1 ((23 div 1) div 4)<(((9 + 6) + (3 + 7)) + (4 . ∧ .4) + (6 × 3)) + (9 + 5)) (((19 mod 10) div 6) mod (12 mod 3))+(((8 + 2) . lan¸ando e c o total no quadro abaixo (((16 mod 10) mod 5) mod (29 mod 8))-(((5 + 7) . ∧ .F.3 Exerc´ ıcio 2.(3 .V.2 Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.3)) + (9 × 6)) (5 .7) + (8 .V. ∧ .F. ∨ .(3 × 8)) ((26 mod 5) mod 5)-(((7 + 6) + (5 × 8)) .) soma das linhas Exerc´ ıcio 2.MATEMATICA E LOGICA ´ BASICAS 16.5)) ((15 div 4) div 2)+(((6 + 8) .V.9)+(((4 . ∧ .(6 × 3)) 16.5 2 (19 div 1)>( (((2 + 4) × (4 + 5)) ÷ (7 + 3))) 4 (.2)) 2 (13 mod 8)<(((2 .(4 .5)) (2 + 7)+(( ((2 .F.8)) soma dos valores ´ ´ ´ CAP´ ITULO 16.5) + (9 + 7)) .4) ÷ (5 .3)) + (4 .F.(5 + 8)) ((( (5 ÷ 5)) .4 Exerc´ ıcio 2.V.5)) + (3 + 2)) (((20 mod 9) div 1) mod (29 mod 8))+(((3 + 7) × (2 + 8)) + (3 .F.F.F.6)) (6 + 7)+(((8 .) ∧ .F.F.2.3 soma dos valores Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.7) (((25 mod 6) div 1) mod (18 mod 7))-(((8 .8) ÷ (7 .V. ∧ .) ∧ .6)) .4)) + (3 + 6)) (((16 div 1) mod 3) mod (18 div 2))+(((5 + 7) × (3 + 4)) .2))) 16 (25 mod 9)>(( ((2 + 9) ÷ (2 + 8))) . lan¸ando o total no quadro abaixo c 1 ((20 mod 8) mod 5)<(((9 + 9) + (2 .2)) 16 (14 div 1)<( (((3 .V.6) .) 8 (23 div 6)>( (((9 .V.2 Exerc´ ıcio 2.(6 + 2)) .5 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.´ ´ ´ CAP´ ITULO 16.) ∧ (∼.)∧((.MATEMATICA E LOGICA ´ BASICAS ( (((7 + 6) + (4 + 4)) ÷ (9 .5) × (5 + 9)) + (8 .V.(8 + 6)) ((24 div 9) div 2)-(((5 + 8) .4 Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.6 Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO. Pedro Kantek 222 vers˜o de 10 de fevereiro de 2008 a .F.4)))-(4 + 8) (((23 div 6) div 2) mod (18 div 3))-(((5 + 3) .8))) .5)) + (8 .9))) 32 (.(7 × 2)) 32 (.) ∧ (∼.V.(4 .7) + (2 + 4)) ÷ (7 .V. Pedro Kantek 88-08.) soma das linhas 16.2.3))) + (2 .2)) 4 (.(4 + 8)) + (2 + 6)) 4 (.)∧((.3)+(( ((3 .2) .) ∧ .(9 .V. ∨ . ∨ .V. ∧ .(7 . EXERC´ ICIOS PRATICOS: 011 . EXERC´ ICIOS PRATICOS: 011 .7)) soma dos valores 16.2.2.F.)∨((. lan¸ando o total no quadro abaixo c 1 ((26 mod 4) mod 3)>(((8 + 2) + (6 + 2)) .)∧((.) 8 (28 mod 6)<(((8 + 5) × (2 .(9 + 9)) (2 .6)) . ∨ .)) 8 (26 div 4)<(((7 .F.F.(5 + 5)) + (8 + 7))-(9 .( (6 ÷ 3))) 32 (. lan¸ando e c o total no quadro abaixo (((28 mod 5) mod 5) mod (27 mod 10))-(((9 + 7) + (7 .2)) 16.V.5) + (2 + 6)) + (5 .V.)∨((.) ∧ .)) soma das linhas vers˜o de 10 de fevereiro de 2008 a 221 88-08. ∨ .V.(3 .(7 + 7)) ÷ (8 .6)) + (8 + 3)) 2 (23 div 8)<(((4 .F.8)) .( (7 ÷ 5))) 16 (30 div 7)<(((6 + 7) + (2 .V.6 Exerc´ ıcio 2.2.)∨((. 5)) ((20 div 2) div 1)-(((3 + 3) . lan¸ando e c o total no quadro abaixo (((18 div 6) mod 6) mod (27 div 5))-(((3 + 3) .9 1.F.2.F.( (8 ÷ 3))) soma dos valores Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.V.F.2)) .3 2.F.F.)∨((.2.8 16. EXERC´ ICIOS PRATICOS: 011 .MATEMATICA E LOGICA ´ BASICAS 16.5 2.9) × (6 + 6)) + (6 . ∨ .5 1. ∨ .2 1. Pedro Kantek 88-08.10 2.V.10 Exerc´ ıcio 2.10 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.7 1.10 -68 19 222 4 -184 8 168 41 379 17 -99 43 213 50 -1 25 684 31 54 24 Respostas Resolva as 6 linhas abaixo e some (aritm´ticamente) os n´ meros das linhas que respone u dem VERDADEIRO.F.4 2.(9 .8 Exerc´ ıcio 2.8 2.)∧((∼(.MATEMATICA E LOGICA ´ BASICAS ´ ´ ´ CAP´ ITULO 16.9)) 32 (.F.2))-(2 + 9) ((28 div 8) div 3)+(((3 .) 8 (17 div 3)<(((4 + 4) .) ∨ .2) soma dos valores vers˜o de 10 de fevereiro de 2008 a 223 88-08.7 Exerc´ ıcio 2.)) ∧ (∼.F.´ ´ ´ CAP´ ITULO 16.(2 + 4)) + (2 + 6)) (4 .F.(6 + 8)) + (6 + 7)) 2 (26 div 5)>(((8 + 7) × (6 + 5)) . ∧ .(8 + 7)) 2 (18 div 4)>(((6 . ∧ .F.(2 + 9)) + (2 + 8)) 16 (22 mod 6)<((( (9 ÷ 7)) × (4 + 2)) .) soma das linhas 16.(6 + 2))-(5 × 7) (((27 mod 7) div 5) mod (16 mod 10))-(((3 × 8) + (8 + 2)) .7 16.6 1. ∨ .6 2.( (9 ÷ 8))) .2.11 1.F. lan¸ando e c o total no quadro abaixo ((16 mod 5) mod 5)+(((2 × 3) × (2 + 9)) × (3 + 6)) ((16 div 10) mod 3)-(((9 + 6) .)) soma das linhas 16.V. lan¸ando o total no quadro abaixo c 1 ((29 div 7) div 4)>((( (9 ÷ 4)) . ∧ .(6 + 2)) (((5 + 3) .2) + (5 + 6)) + (8 .V.(4 + 9)) + (6 + 4)) (((3 + 2) .) ∧ .4 1.1 2. Pedro Kantek 224 vers˜o de 10 de fevereiro de 2008 a .7 2.(9 × 9)) 32 (.1 1.9 Exerc´ ıcio 2.(8 + 6)) .5)) 16 (17 div 5)<(((7 × 6) × (8 + 3)) .F.(2 + 5)) ((30 div 6) div 3)-(((6 . lan¸ando o total no quadro abaixo c 1 ((20 mod 8) mod 3)>((( (7 ÷ 3)) .))∧((. ∨ .(7 .2 2.) ∨ .8 1.9 2.9 Resolva as 6 linhas abaixo e some (aritm´ticamente) os resultados encontrados.(3 + 9)) + (4 .F.V.(6 + 4)) .7) .2))-(6 .2)) 4 (.V.) 8 (16 div 1)<(((7 × 4) + (3 .2.V.(7 + 9)) 4 (∼(. EXERC´ ICIOS PRATICOS: 011 .8)+(((2 + 7) × (9 + 8)) .(2 + 6)) × (2 + 5)) (((19 div 2) div 1) div (23 div 7))+(((5 + 4) + (2 + 4)) + (2 + 4)) (((6 . ∧ .4) + (6 + 2)) + (2 .3 1.)∨((.2. 2 ). F) c˜ 2: se ((F ≤ 1) ∨ (C ≤ 5)) ent˜o a 3: se (D > 5) ent˜o a 4: F←A×C 5: sen˜o a 6: D←C×F 7: fimse 8: D←B+5 9: sen˜o a 10: E←B+5 11: se ((∼ (B = 2)) ∧ (∼ (A ≤ 1))) ent˜o a 12: C←C+2 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ 17. C. 6 ). se a condi¸ao c˜ for falsa.2 Exerc´ ıcio 1. pode ter a alternativa inversa.. 1. D. Comandos internos ao comando ”se”devem estar identados de 3 espa¸os. EXERC´ ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS . E. D. com a seguinte defini¸ao c˜ 1: fun¸ao EX2 (inteiro A. 1.. 2.´ CAP´ ITULO 17.. E. com a seguinte defini¸ao c˜ 1: fun¸ao EX1 (inteiro A. C. com a seguinte defini¸ao c˜ 1: fun¸ao EX3 (inteiro A. B.3 Suponha a chamada EX3 ( 3. fim {se} Alternativa Composta Possui as duas partes... Pedro Kantek 226 vers˜o de 10 de fevereiro de 2008 a .2 Suponha a chamada EX2 ( 4. executar outros comandos. F) c˜ 2: se (((D ≤ 5) ∨ (F ≥ 5)) ∧ (A = 3)) ent˜o a 3: se ((F > 6) ∨ (∼ (D ≤ 2))) ent˜o a 88-08. 3.3 Exerc´ ıcio 1. Cap´ ıtulo 17 17. se <condi¸~o> ca <comando-1> <comando-2> .1. 1. ou seja. 6. 3. B. E.. 6. A primeira. Opcionalc˜ ca mente. D. 4 ).1.. 1. fim {se condi¸~o} ca A seguir diversos algoritmos envolvendo apenas o comando de alternativa. se a condi¸ao for verc˜ dadeira e a segunda se for falsa..1 Exerc´ ıcios Pr´ticos: 017-SEs a compostos e encadeados 17.1 Exerc´ ıcio 1. para c clareza. Siga cada um dos algoritmos e ao final responda qual o valor impresso por cada um deles.1.] fim {se} Alternativa Simples S´ possui a primeira parte do comando (comandos s˜o execuo a tados se a condi¸ao for verdadeira) c˜ se <condi¸~o> ca comando-1 comando-2 . C.. se condi¸~o ca c1 c2 . [sen~o <comando-11> a <comando-12> . 2. F) c˜ 2: se ((E = 5) ∧ (B < 4)) ent˜o a 3: se (F = 1) ent˜o a 4: D←E×5 5: sen˜o a 6: F←E×4 7: fimse 8: F←A+D 9: sen˜o a 10: A←C×D 11: se ((B ≥ 5) ∨ (A = 6)) ent˜o a 12: B←C-D 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ 17.1 SEs compostos e encadeados Permite executar uma ou mais instru¸oes caso uma condi¸˜o seja verdadeira. sen~o a c10 c11 225 Suponha a chamada EX1 ( 1. B. 6.. 2. 5. 4. 2. C. 3. E.5 Exerc´ ıcio 1.4 Suponha a chamada EX4 ( 2. Pedro Kantek 227 228 vers˜o de 10 de fevereiro de 2008 a .6 Exerc´ ıcio 1. C. 3. D. B. 3. F) c˜ 2: se ((∼ (F ≤ 2)) ∧ (∼ (B ≥ 6))) ent˜o a 3: se ((D < 3) ∧ (∼ (B = 6))) ent˜o a 4: C←D-E 5: sen˜o a 6: B←C×F 7: fimse 8: B←A+2 9: sen˜o a 10: B←C-2 11: se (F = 4) ent˜o a 12: F←B-F 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ Respostas 1 2 3 4 5 6 17. 2. F) c˜ 2: se (((∼ (D ≤ 1)) ∧ (B < 1)) ∧ (A > 6)) ent˜o a 3: se (D = 2) ent˜o a 4: D←C×D 5: sen˜o a 6: A←C+4 7: fimse 8: A←F+E 9: sen˜o a 10: B←C×3 11: se (((B = 5) ∧ (F = 1)) ∨ (B > 4)) ent˜o a 12: C←E×5 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ 88-08. C. 3. 1. 17. 2. C. F) c˜ 2: se (((E < 5) ∧ (∼ (C = 1))) ∨ (∼ (D < 3))) ent˜o a 3: se ((E = 2) ∨ (E = 4)) ent˜o a 4: C←C+B 5: sen˜o a 6: C←B×E 7: fimse 8: C←F-C 9: sen˜o a 10: C←A×E 11: se (A ≤ 6) ent˜o a 12: C←D-4 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ Suponha a chamada EX6 ( 1. D.1. 1 ).1 Exerc´ ıcio 2. 6 ).2.4 Exerc´ ıcio 1. EXERC´ ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS 16: B←A-E sen˜o a C←D-E fimse E←C-2 sen˜o a D←A×4 se ((A = 4) ∨ (A < 4)) ent˜o a F←D×B fimse fimse imprima A + B + C + D + E fim {fun¸ao} c˜ fim {fun¸ao} c˜ 17.´ CAP´ ITULO 17. 4.1. EXERC´ ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: ´ CAP´ ITULO 17. D.1.2 Exerc´ ıcio 2 A seguir diversos algoritmos envolvendo apenas o comando de alternativa. 3. B. 5.6 17. E. B. com a seguinte defini¸ao c˜ 1: fun¸ao EX4 (inteiro A.5 Suponha a chamada EX5 ( 5. com a seguinte defini¸ao c˜ 1: fun¸ao EX5 (inteiro A. 2. Pedro Kantek 88-08. Siga cada um dos algoritmos e ao final responda qual o valor impresso por cada um deles. 2. 3. B. com a seguinte defini¸ao c˜ 1: fun¸ao EX1 (inteiro A.1 17. com a seguinte defini¸ao c˜ 1: fun¸ao EX6 (inteiro A. D. F) c˜ 2: se ((∼ (D ≤ 3)) ∨ (∼ (A = 4))) ent˜o a 3: se ((∼ (B < 6)) ∧ (E = 4)) ent˜o a 4: D←C-E 5: sen˜o a 6: F←B×2 7: fimse 8: A←A+5 9: sen˜o a 10: F←B-4 11: se (((D > 4) ∧ (C ≤ 2)) ∧ (C = 5)) ent˜o a 12: F←A×3 13: fimse 14: fimse 15: imprima A + B + C + D + E vers˜o de 10 de fevereiro de 2008 a Suponha a chamada EX1 ( 3. E. 5 ). E. 3 ). D. E.3 Suponha a chamada EX3 ( 4.5 17.2.3 Exerc´ ıcio 2. 6. 2 ). com a seguinte defini¸ao c˜ 1: fun¸ao EX6 (inteiro A. D. F) c˜ 2: se ((∼ (D ≤ 2)) ∨ (E = 6)) ent˜o a 3: se (((D < 6) ∧ (A = 6)) ∧ (∼ (F ≤ 6))) ent˜o a 4: A←C-B 5: sen˜o a 6: B←F×D 7: fimse 8: C←A-5 9: sen˜o a vers˜o de 10 de fevereiro de 2008 a Suponha a chamada EX6 ( 6. B. B. 6. E. 2. D. 3. com a seguinte defini¸ao c˜ 1: fun¸ao EX2 (inteiro A. Pedro Kantek 88-08.6 Exerc´ ıcio 2.5 Exerc´ ıcio 2. 3. EXERC´ ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS 10: 11: 12: 13: 14: 15: 16: 17.4 Exerc´ ıcio 2. 2.2. 1 ). 4. com a seguinte defini¸ao c˜ 1: fun¸ao EX3 (inteiro A. E. com a seguinte defini¸ao c˜ 1: fun¸ao EX5 (inteiro A.2. com a seguinte defini¸ao c˜ 1: fun¸ao EX4 (inteiro A. E. C. E. 4. 2. 1. 6 ). C. 4. Pedro Kantek 229 230 vers˜o de 10 de fevereiro de 2008 a . 2.´ CAP´ ITULO 17. F) c˜ 2: se ((∼ (D ≥ 6)) ∧ (∼ (D > 5))) ent˜o a 3: se ((∼ (D > 1)) ∧ (∼ (C > 1))) ent˜o a 4: A←D×5 5: sen˜o a 6: D←C-3 7: fimse 8: A←E-4 9: sen˜o a 10: C←A-3 11: se ((C < 2) ∨ (F = 5)) ent˜o a 12: D←E-B 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ F←F×2 se (((A < 6) ∨ (∼ (B = 6))) ∨ (∼ (A = 6))) ent˜o a D←B+4 fimse fimse imprima A + B + C + D + E fim {fun¸ao} c˜ 17. B.2. C. 6.6 17. 1. C.4 Suponha a chamada EX4 ( 6. 4. 4 ). B. C. F) c˜ 2: se (∼ (F ≤ 1)) ent˜o a 3: se ((E = 3) ∨ (E > 4)) ent˜o a 4: B←F×2 5: sen˜o a 6: F←E+F 7: fimse 8: C←B×3 9: sen˜o a 10: E←C+E 11: se ((D ≤ 1) ∧ (E ≥ 6)) ent˜o a 12: D←F×E 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ Suponha a chamada EX5 ( 1. EXERC´ ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS ´ CAP´ ITULO 17. F) c˜ 2: se (((B = 1) ∧ (B > 1)) ∧ (∼ (F > 4))) ent˜o a 3: se (∼ (A < 4)) ent˜o a 4: C←A+E 5: sen˜o a 6: C←E×2 7: fimse 8: E←B-4 9: sen˜o a 10: F←F×2 11: se (C > 2) ent˜o a 12: A←F×D 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ 17. D.2 Suponha a chamada EX2 ( 1. F) c˜ 2: se (((∼ (A > 4)) ∨ (∼ (A ≤ 1))) ∨ (∼ (A > 6))) ent˜o a 3: se (∼ (F ≤ 4)) ent˜o a 4: B←F+2 5: sen˜o a 6: C←D×4 7: fimse 8: A←C+3 9: sen˜o a 10: D←A-C 11: se ((∼ (A = 4)) ∨ (E ≤ 3)) ent˜o a 12: F←C-4 13: fimse 14: fimse 15: imprima A + B + C + D + E 16: fim {fun¸ao} c˜ 88-08.2. 3. 3. 2.2 Exerc´ ıcio 2. 5. D. 3 ). B. 6. 4 5 1.5 38 2.1 1.6 19 Respostas 49 24 vers˜o de 10 de fevereiro de 2008 a 231 88-08. EXERC´ ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS 17.´ CAP´ ITULO 17.2 17 1.2. Pedro Kantek 232 vers˜o de 10 de fevereiro de 2008 a .3 15 2.4 29 2.1 2.5 17 1. Pedro Kantek 88-08.2 15 2.7 1. EXERC´ ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS Respostas 1 2 3 4 5 6 ´ CAP´ ITULO 17.6 14 2.3 21 1. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS M←M×4 M←K+2 fim{se} Se os trechos acima forem equivalentes.1. some 2 a resposta. os n´ meros que identificam cada exerc´ devem ser somados. a o Ambos devem ser analisados e deve-se chegar a uma conclus˜o: s˜o equivalentes ? Se a a forem. u ıcio e a soma deve ser respondida. Ao final da s´rie.´ CAP´ ITULO 18.1 Exerc´ ıcios de Fluxos e Pseudoc´digo o A seguir. some 1 a resposta. Pedro Kantek 234 vers˜o de 10 de fevereiro de 2008 a .1 ex001 A>4 v Z←Z-3 Exerc´ ıcio 1 K←L-7 C≤2 v T←Y×5 M←M×4 T←Z+2 M←K+9 T←T÷6 T←Z+6 fim M←K+2 Y←T÷4 fim K←M×9 S←P×5 ex001 se (A>4) ent~o a Z←Z-3 T←Y×5 T←Z+6 sen~o a K←L-7 233 ex004 se (A>8) ent~o a T←Z+2 Y←T÷4 sen~o a se (C>2) ent~o a M←K+9 88-08. s˜o apresentados um fluxograma e a seguir um trecho em pseudo-c´digo. ex002 se (A≤5)∧(B=9) ent~o a Z←Y-8 sen~o a K←N+2 fim{se} Se os trechos acima forem equivalentes. ` Cap´ ıtulo 18 ex002 A>5 ∨ B=9 v Z←Y-8 fim K←N+2 Exerc´ ıcios Pr´ticos: a 018-FLuxogramas 18. ` ex004 A>8 v 18. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ex016 A=7 ∨ B≥3 v C=5 v L←L÷8 S←P-6 N←K×3 S←R÷9 M←M×7 S←P÷2 T←Y-4 N←N×6 S←R-7 X←T-8 fim K←K-2 R←T÷6 U←H+1 ex008 se (A=1) ent~o a se (E=5) ent~o a P←S×7 S←R-7 R←T÷6 sen~o a U←H+1 fim{se} sen~o a se (C=4) ent~o a M←K-7 N←N×6 K←K-2 sen~o a T←Y-4 X←T-8 fim{se} fim{se} Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS K←M×9 sen~o a T←T÷6 S←P×5 fim{se} fim{se} Se os trechos acima forem equivalentes. Pedro Kantek 235 236 vers˜o de 10 de fevereiro de 2008 a . a ex008 A=1 v C=4 v M←K-7 E=5 v P←S×7 X←T×9 fim Y←Z×5 Y←Z÷5 ´ CAP´ ITULO 18.´ CAP´ ITULO 18. some 16 a resposta. ` 88-08. a vers˜o de 10 de fevereiro de 2008 a ex016 se (A=7)∧(B<3) ent~o a se (C=5) ent~o a S←P-6 S←R÷9 S←P÷2 sen~o a L←L÷8 N←K×3 M←M×7 fim{se} sen~o a Y←Z÷5 Y←Z×5 X←T×9 fim{se} Se os trechos acima forem equivalentes. Pedro Kantek 88-08. some 8 ` resposta. some 4 ` resposta. some 32 ` resposta. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ´ CAP´ ITULO 18.´ CAP´ ITULO 18. some 64 a resposta. ` 88-08. a vers˜o de 10 de fevereiro de 2008 a Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ex032 A=6 ∧ B≥1 v C≥6 v Y←Z×2 E=6 v S←P+9 ex064 A≤2 ∨ B≤3 v C≤1 ∨ D>2 v Z←X-2 S←S-6 Y←X-6 M←L+4 T←P×8 J←G÷5 Z←Y+7 fim L←M×4 R←T×6 T←Y+9 fim M←K×2 R←T÷7 H←U÷3 ex032 se (A=6)∨(B<1) ent~o a se (C≥6) ent~o a Y←Z×2 Y←X-6 T←Y+9 sen~o a M←L+4 M←K×2 fim{se} sen~o a se (E=6) ent~o a S←P+9 T←P×8 R←T÷7 sen~o a J←G÷5 H←U÷3 fim{se} fim{se} ex064 se (A≤2)∨(B≤3) ent~o a se (C≤1)∨(D>2) ent~o a S←S-6 R←T×6 sen~o a L←M×4 fim{se} sen~o a Z←X-2 Z←Y+7 fim{se} Se os trechos acima forem equivalentes. Pedro Kantek 88-08. Pedro Kantek 237 238 vers˜o de 10 de fevereiro de 2008 a . some 1 a resposta. Pedro Kantek 240 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ex128 A=6 ∨ B≥9 v C≤9 ∧ D=4 v Y←X×4 ex001 A≥5 v E≥3 ∨ F<1 v R←P×5 Z←X×3 fim K←M-2 L←M×9 Z←Z×9 T←R÷8 X←Y×7 fim N←M÷8 T←P+2 J←U+9 ex001 se (A≥5) ent~o a Z←X×3 sen~o a K←M-2 L←M×9 fim{se} ex128 se (A=6)∧(B<9) ent~o a se (E<3)∧(F≥1) ent~o a R←P×5 T←R÷8 T←P+2 sen~o a J←U+9 fim{se} sen~o a se (C>9)∨(D=4) ent~o a N←M÷8 sen~o a Y←X×4 Z←Z×9 X←Y×7 fim{se} fim{se} Se os trechos acima forem equivalentes. ` ex002 A≤1 ∨ B<2 v T←X+4 fim M←K×3 Se os trechos acima forem equivalentes. some o n´ mero dos exerc´ u ıcios em que o trecho de pseudoc´digo ´ 100% equivo e alente ao fluxograma apresentado vers˜o de 10 de fevereiro de 2008 a 239 88-08. ` 88-08. some 128 ` resposta.1. Pedro Kantek A seguir. some 2 a resposta.2 Exerc´ ıcio 2 Se os trechos acima forem equivalentes. a Responda a soma dos exerc´ ıcios que s˜o equivalentes a ex002 se (A>1)∧(B≥2) ent~o a T←X+4 sen~o a M←K×3 fim{se} 18. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ´ CAP´ ITULO 18.´ CAP´ ITULO 18. a ex008 A≥9 v E>1 v C=4 v X←Z+4 J←H÷3 G←U×2 T←Y-8 K←N×2 X←X-6 fim N←M-3 P←T×5 X←T-5 fim L←L-9 P←T÷5 J←J×3 ex016 se (A=5)∧(B=8) ent~o a T←Y÷2 T←Y-8 X←X-6 sen~o a se (C>8) ent~o a K←N×2 N←M-3 sen~o a P←T×5 fim{se} 88-08. some 4 ` resposta. ` ex016 A=5 ∧ B=8 v T←Y÷2 C>8 v ex004 se (A=6) ent~o a se (C>7) ent~o a T←T-9 R←S+7 sen~o a L←K+7 fim{se} sen~o a T←T-8 fim{se} Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ´ CAP´ ITULO 18.´ CAP´ ITULO 18. Pedro Kantek 88-08. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 241 242 vers˜o de 10 de fevereiro de 2008 a . some 8 a resposta. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ex004 A=6 v C≤7 v T←T-9 T←T-8 fim L←K+7 R←S+7 ex008 se (A<9) ent~o a se (E≤1) ent~o a P←T÷5 sen~o a G←U×2 J←H÷3 J←J×3 fim{se} sen~o a se (C=4) ent~o a L←L-9 sen~o a X←Z+4 X←T-5 fim{se} fim{se} Se os trechos acima forem equivalentes. Pedro Kantek 243 244 vers˜o de 10 de fevereiro de 2008 a . ` 88-08.´ CAP´ ITULO 18. a vers˜o de 10 de fevereiro de 2008 a Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS fim{se} ex064 A=2 ∧ B>3 v ´ CAP´ ITULO 18. some 32 ` resposta. some 16 ` resposta. some 64 a resposta. Pedro Kantek 88-08. a ex032 A=4 ∧ B<2 v C<5 v L←K×2 E>4 v T←R-9 C<5 ∨ D≤5 v T←R-6 X←T÷2 M←M÷5 S←T-2 T←Z÷6 M←L-4 P←P+9 fim G←G÷9 L←K+9 R←P÷3 Z←T+3 fim L←M÷9 P←S×6 ex032 se (A=4)∧(B<2) ent~o a se (C<5) ent~o a T←R-9 P←P+9 P←S×6 sen~o a G←G÷9 fim{se} sen~o a se (E>4) ent~o a L←K×2 M←L-4 L←M÷9 sen~o a Z←T+3 fim{se} fim{se} ex064 se (A=2)∨(B≤3) ent~o a se (C≥5)∧(D>5) ent~o a T←R-6 S←T-2 R←P÷3 sen~o a M←M÷5 L←K+9 fim{se} sen~o a X←T÷2 T←Z÷6 fim{se} Se os trechos acima forem equivalentes. Pedro Kantek 88-08. some 128 ` resposta.´ CAP´ ITULO 18.1. a Responda a soma dos exerc´ ıcios que s˜o equivalentes a 18. EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ex128 A>5 ∧ B≤7 v C=4 ∧ D=4 v K←M×9 E=3 ∨ F≥3 v T←S×5 J←G-8 X←T÷2 fim L←L+4 ex128 se (A>5)∧(B≤7) ent~o a se (C=4)∧(D=4) ent~o a T←S×5 sen~o a J←G-8 fim{se} sen~o a se (E=3)∨(F≥3) ent~o a K←M×9 L←L+4 sen~o a X←T÷2 fim{se} fim{se} Se os trechos acima forem equivalentes. Pedro Kantek 246 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIOS PRATICOS: 018-FLUXOGRAMAS ´ CAP´ ITULO 18.3 1 2 Respostas 153 93 vers˜o de 10 de fevereiro de 2008 a 245 88-08. ` ex004 — A=1 C=7 P←P-5 S←P×8 R←T×4 19.4 ex001 — Exerc´ ıcio 1 v A=1 M←K×8 K←N÷5 K←M×2 f v f v f Z←Z+4 T←Z÷5 Z←X÷9 Y←Z×9 X←X-4 K←L×2 ex001 se (A=1) ent~o a Z←Z+4 T←Z÷5 Z←X÷9 sen~o a M←K×8 K←N÷5 K←M×2 fim{se} Se os trechos acima forem equivalentes. some 2 a resposta.NASSI ex002 — A=5 ∨ B>5 L←M÷3 K←N÷4 v f Cap´ ıtulo 19 Y←Z×3 Exerc´ ıcios Pr´ticos: 018 a Nassi Nassi e Pseudoc´digo: A seguir. some o n´ mero dos exerc´ o u ıcios em que o trecho de pseudo. a 247 ex004 se (A=1) ent~o a se (C=7) ent~o a P←P-5 S←P×8 R←T×4 sen~o a K←L×2 fim{se} sen~o a Y←Z×9 X←X-4 fim{se} 88-08.c´digo ´ 100% equivalente ao diagrama de Nassi apresentado o e L←N÷2 ex002 se (A=5)∨(B>5) ent~o a L←M÷3 K←N÷4 L←N÷2 sen~o a Y←Z×3 fim{se} Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018 .´ CAP´ ITULO 19.0. Pedro Kantek 248 vers˜o de 10 de fevereiro de 2008 a . some 1 ` resposta. a ex016 — A<8 ∧ B=5 v C<6 R←R+7 S←P×5 v v f f Y←T÷1 R←S×9 T←R-3 P←T+6 v T←Z-5 f f N←M+8 ex032 se (A<2)∨(B<4) ent~o a se (C≥3) ent~o a Y←T÷1 sen~o a K←K×3 N←M+8 fim{se} sen~o a se (E>7) ent~o a R←S×9 T←R-3 P←T+6 sen~o a U←G-3 J←U-2 fim{se} fim{se} ex016 se (A≥8)∨(B=5) ent~o a T←Z-5 sen~o a vers˜o de 10 de fevereiro de 2008 a Se os trechos acima forem equivalentes. some 8 ` resposta. Pedro Kantek 88-08. Pedro Kantek 250 vers˜o de 10 de fevereiro de 2008 a .NASSI se (C≥6) ent~o a N←M+8 sen~o a R←R+7 S←P×5 fim{se} fim{se} f f v K←N×3 N←K+3 R←R-7 E>1 H←H×4 G←J-5 f ´ CAP´ ITULO 19. some 4 ` resposta. ` 249 88-08. a ex008 — A≥1 C≥4 v v Z←X÷4 Se os trechos acima forem equivalentes. ` ex032 — A≥2 ∧ B≥4 C≥3 K←K×3 N←M+8 f v E≤7 U←G-3 J←U-2 ex008 se (A<1) ent~o a se (E≤1) ent~o a R←R-7 sen~o a H←H×4 G←J-5 fim{se} sen~o a se (C<4) ent~o a K←N×3 N←K+3 sen~o a Z←X÷4 fim{se} fim{se} Se os trechos acima forem equivalentes.NASSI Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018 .´ CAP´ ITULO 19. EXERC´ ICIOS PRATICOS: 018 . some 16 a resposta. some 32 a resposta. a ex128 — A≤6 ∧ B>6 C=4 ∨ D<1 M←M÷7 f v E≤7 ∨ F>2 H←G+6 19. ` Y←Y÷3 Y←T+3 Z←X÷4 T←T+6 T←T÷2 ex002 — A≥4 ∨ B=8 L←M÷4 N←M×4 N←K+2 v ex128 se (A>6)∨(B≤6) ent~o a se (C=4)∨(D<1) ent~o a Y←Y÷3 Y←T+3 Z←X÷4 vers˜o de 10 de fevereiro de 2008 a f T←Z÷6 T←Z×5 251 88-08. Pedro Kantek 252 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIOS PRATICOS: 018 .0.NASSI sen~o a M←M÷7 fim{se} sen~o a se (E>7)∧(F≤2) ent~o a T←T+6 T←T÷2 sen~o a H←G+6 fim{se} fim{se} Se os trechos acima forem equivalentes. Pedro Kantek 88-08. ` Responda a soma dos exerc´ ıcios que s˜o equivalentes a ex064 — A≥2 ∧ B≤6 v C>5 ∧ D=3 R←S+2 v Z←Z-1 f f N←K×8 K←M÷5 K←M×3 ex064 se (A<2)∨(B>6) ent~o a Z←Z-1 sen~o a se (C≤5)∨(D=3) ent~o a N←K×8 K←M÷5 K←M×3 sen~o a R←S+2 fim{se} fim{se} Se os trechos acima forem equivalentes. some 64 ` resposta. some 1 a resposta.´ CAP´ ITULO 19. EXERC´ ICIOS PRATICOS: 018 .NASSI ´ CAP´ ITULO 19.5 ex001 — Exerc´ ıcio 2 v X←X-9 A=8 K←K÷6 f X←Z÷8 v v f f ex001 se (A=8) ent~o a X←X-9 X←Z÷8 sen~o a K←K÷6 fim{se} Se os trechos acima forem equivalentes. some 128 a resposta. Pedro Kantek 253 254 vers˜o de 10 de fevereiro de 2008 a .NASSI ´ CAP´ ITULO 19. a ex004 — A>8 v C<6 T←P×6 v X←X-2 f f N←N+6 M←K+4 M←L-6 ex008 se (A=5) ent~o a se (C≥1) ent~o a Z←Y+2 Z←T+5 X←Y×7 sen~o a L←L×7 K←L+5 fim{se} sen~o a se (E=1) ent~o a R←S×8 P←S+3 R←R+5 sen~o a J←G+7 G←U÷6 fim{se} fim{se} Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018 .NASSI ex008 — A=5 C≥1 L←L×7 K←L+5 f v E=1 J←G+7 G←U÷6 ex002 se (A≥4)∨(B=8) ent~o a L←M÷4 N←M×4 N←K+2 sen~o a T←Z÷6 T←Z×5 fim{se} v v f f Z←Y+2 Z←T+5 X←Y×7 R←S×8 P←S+3 R←R+5 Se os trechos acima forem equivalentes. a vers˜o de 10 de fevereiro de 2008 a ex016 88-08. some 8 a resposta. Pedro Kantek 88-08.´ CAP´ ITULO 19. ` ex016 — A>6 ∧ B=1 v N←L-7 N←K×3 C≤3 R←T×4 ex004 se (A>8) ent~o a X←X-2 sen~o a se (C≥6) ent~o a N←N+6 M←K+4 M←L-6 sen~o a T←P×6 fim{se} fim{se} v f f T←Z÷9 Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018 . some 2 ` resposta. some 4 ` resposta. a vers˜o de 10 de fevereiro de 2008 a ex128 se (A≥7)∧(B=7) ent~o a se (C=9)∨(D=8) ent~o a Y←X÷4 88-08. Pedro Kantek 255 256 vers˜o de 10 de fevereiro de 2008 a . some 32 ` resposta. Pedro Kantek 88-08.´ CAP´ ITULO 19. EXERC´ ICIOS PRATICOS: 018 .NASSI ex064 — A>1 ∧ B=4 v N←N-2 N←K÷3 C=3 ∧ D=1 R←S-9 S←R×5 P←R÷4 v f f Y←X×7 T←X÷8 Se os trechos acima forem equivalentes.NASSI se (A>6)∧(B=1) ent~o a se (C≤3) ent~o a R←T×4 sen~o a N←L-7 N←K×3 fim{se} sen~o a T←Z÷9 fim{se} ´ CAP´ ITULO 19. some 16 ` resposta. a ex032 — A=8 ∧ B≤7 C<4 N←K+2 L←N×8 L←K+6 f v T←S-9 E≤3 U←G-3 U←J+4 H←H+5 ex064 se (A≤1)∨(B=4) ent~o a se (C=3)∨(D=1) ent~o a R←S-9 S←R×5 P←R÷4 sen~o a N←N-2 N←K÷3 fim{se} sen~o a Y←X×7 T←X÷8 fim{se} v v f f Y←Z÷7 ex032 se (A=8)∨(B>7) ent~o a se (E>3) ent~o a T←S-9 sen~o a U←G-3 U←J+4 H←H+5 fim{se} sen~o a se (C≥4) ent~o a N←K+2 L←N×8 L←K+6 sen~o a Y←Z÷7 fim{se} fim{se} Se os trechos acima forem equivalentes. ` ex128 — A≥7 ∧ B=7 C=9 ∨ D=8 L←M÷5 M←L+7 f v E=2 ∧ F≤4 G←H+2 H←U-2 G←J÷8 v v f f Y←X÷4 X←Y-9 R←S×2 T←P-2 Se os trechos acima forem equivalentes. some 64 a resposta. EXERC´ ICIOS PRATICOS: 018 . a Responda a soma dos exerc´ ıcios que s˜o equivalentes a ´ CAP´ ITULO 19. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 018 .NASSI 19.0. Pedro Kantek 258 vers˜o de 10 de fevereiro de 2008 a .6 1 2 Respostas 12 232 vers˜o de 10 de fevereiro de 2008 a 257 88-08.NASSI X←Y-9 sen~o a L←M÷5 M←L+7 fim{se} sen~o a se (E=2)∧(F≤4) ent~o a R←S×2 T←P-2 sen~o a G←H+2 H←U-2 G←J÷8 fim{se} fim{se} Se os trechos acima forem equivalentes. EXERC´ ICIOS PRATICOS: 018 .´ CAP´ ITULO 19. some 128 ` resposta. B. C 28: fim{fun¸ao} c˜ Exerc´ ıcio 1. com a seguinte defini¸ao a c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A.5 a fun¸˜es simples co 20. B e C.1. B. Em todas. B.3 Suponha a chamada a fun¸ao CALC.5 FUNCOES SIMPLES ¸˜ 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: Cap´ ıtulo 20 Exerc´ ıcios pr´ticos: 021 . com a seguinte defini¸ao ` c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. com a seguinte defini¸ao ` c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. B.1 Suponha a chamada ` fun¸ao CALC. EXERC´ ICIOS PRATICOS: 021 . B. C 3: A ← 1 4: B ← 9 5: C ← 9 6: se (∼ (C > A)) ent˜o a 88-08. 20.´ CAP´ ITULO 20. C fim{fun¸ao} c˜ Exerc´ ıcio 1.1 Fun¸˜es num´ricas co e fimse sen˜o a se (∼ (C = B)) ent˜o a A←C×2 sen˜o a B←A-3 fimse fimse imprima A.2 Suponha a chamada a fun¸ao CALC. B e C s˜o c˜ a a inicializadas no in´ ıcio da fun¸ao. as vari´veis A. Pedro Kantek Os exerc´ ıcios a seguir est˜o indicados para desenvolver as habilidades de a saber resolver condi¸oes l´gicas c˜ o adquirir destreza em avaliar comandos condicionais ganhar disciplina mental para seguir testes de mesma (chineses) Os exerc´ ıcios a seguir implementam fun¸oes. C 3: A ← 5 4: B ← 2 5: C ← 2 6: se (B < C) ent˜o a 7: se (A ≥ C) ent˜o a 8: se (C = B) ent˜o a 9: A←C-4 10: sen˜o a 11: A←A-A 12: fimse 13: sen˜o a 14: se (∼ (C = B)) ent˜o a 15: B←A-4 16: sen˜o a 17: B←C+3 18: fimse 19: fimse 20: sen˜o a 21: se (A < 6) ent˜o a 22: C←B+5 23: sen˜o a 24: A←C×4 25: fimse 26: fimse 27: imprima A. Vocˆ deve seguir a fun¸ao at´ o final e neste ponto c˜ e c˜ e informar os valores de A. C 3: A ← 1 4: B ← 8 5: C ← 7 6: se (B > 5) ent˜o a 7: se (C = A) ent˜o a 8: se (A ≥ B) ent˜o a 9: C←C×5 10: sen˜o a 11: B←B-B 12: fimse 13: sen˜o a 14: se (B ≥ C) ent˜o a 15: A←B-3 16: sen˜o a 17: B←B+2 18: fimse 259 260 vers˜o de 10 de fevereiro de 2008 a .1 Exerc´ ıcio 1 Exerc´ ıcio 1. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 021 .5 FUNCOES SIMPLES ¸˜ 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: ´ CAP´ ITULO 20. B Exerc 2 Var.1. C Exerc 3 Var. B. C 28: fim{fun¸ao} c˜ Respostas Exerc 1 Var. Pedro Kantek 261 262 vers˜o de 10 de fevereiro de 2008 a . C 3: A ← 7 4: B ← 8 5: C ← 8 6: se (A = C) ent˜o a 7: se (C < 3) ent˜o a 8: se (A ≤ 4) ent˜o a 9: B←A+2 10: sen˜o a 11: C←C×C 12: fimse 13: sen˜o a 14: se (∼ (B = 1)) ent˜o a 15: A←A+2 16: sen˜o a 17: C←C+4 18: fimse 19: fimse 20: sen˜o a 21: se (∼ (B ≤ 3)) ent˜o a 22: B←C-4 23: sen˜o a 24: B←C×A 25: fimse 26: fimse 27: imprima A. com a seguinte defini¸ao ` c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. C fim{fun¸ao} c˜ imprima A. C 3: A ← 8 4: B ← 4 88-08. B. B. com a seguinte defini¸ao a c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. EXERC´ ICIOS PRATICOS: 021 .2 Exerc´ ıcio 2 Exerc´ ıcio 2. B. C fim{fun¸ao} c˜ Exerc´ ıcio 1. B.4 Suponha a chamada ` fun¸ao CALC. B Exerc 4 Var.5 Suponha a chamada a fun¸ao CALC. com a seguinte defini¸ao ` c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. B Exerc´ ıcio 1. B Exerc 5 Var.1 Suponha a chamada a fun¸ao CALC. B.´ CAP´ ITULO 20. C 3: A ← 4 4: B ← 8 5: C ← 7 6: se (∼ (B < A)) ent˜o a 7: se (∼ (C < B)) ent˜o a 8: se (B < C) ent˜o a 9: B←C+4 10: sen˜o a 11: B←A×B 12: fimse 13: sen˜o a 14: se (B < A) ent˜o a 15: C←A-B 16: sen˜o a 17: B←C+3 18: fimse 19: fimse 20: sen˜o a 21: se (B = 1) ent˜o a 22: A←A+A 23: sen˜o a 24: B←C-4 25: fimse 26: fimse vers˜o de 10 de fevereiro de 2008 a 20.5 FUNCOES SIMPLES ¸˜ 27: 28: se (C ≥ B) ent˜o a se (B = C) ent˜o a C←B×5 sen˜o a B←B+B fimse sen˜o a se (B > A) ent˜o a C←B-2 sen˜o a C←C+B fimse fimse sen˜o a se (∼ (A = 2)) ent˜o a A←A×5 sen˜o a B←A-2 fimse fimse imprima A. com a seguinte defini¸ao ` c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. EXERC´ ICIOS PRATICOS: 021 . C 3: A ← 9 4: B ← 8 5: C ← 7 6: se (B > C) ent˜o a 7: se (∼ (A = 4)) ent˜o a 8: se (∼ (B < 5)) ent˜o a 9: B←C×4 10: sen˜o a 11: A←B-2 12: fimse 13: sen˜o a 14: se (C < A) ent˜o a 15: C←B-3 16: sen˜o a 17: A←B×5 18: fimse 19: fimse 20: sen˜o a 21: se (∼ (A ≥ 1)) ent˜o a 22: B←A-5 23: sen˜o a 24: A←A-5 25: fimse 26: fimse 27: imprima A. B. B.2 Suponha a chamada ` fun¸ao CALC.5 FUNCOES SIMPLES ¸˜ fimse fimse 27: imprima A.´ CAP´ ITULO 20. C 28: fim{fun¸ao} c˜ Exerc´ ıcio 2.4 Suponha a chamada a fun¸ao CALC. C 3: A ← 3 4: B ← 2 5: C ← 9 6: se (A = 2) ent˜o a 7: se (∼ (C > 1)) ent˜o a 8: se (C ≤ 5) ent˜o a 9: C←A×2 10: sen˜o a 11: B←B×5 12: fimse 88-08. C fim{fun¸ao} c˜ Exerc´ ıcio 2. Pedro Kantek Exerc´ ıcio 2. EXERC´ ICIOS PRATICOS: 021 . com a seguinte defini¸ao a c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. B.3 Suponha a chamada a fun¸ao CALC. Pedro Kantek 88-08. B. C 3: A ← 4 4: B ← 5 5: C ← 7 6: se (A = 1) ent˜o a 7: se (∼ (B ≥ 2)) ent˜o a 8: se (∼ (B = C)) ent˜o a 9: B←A+4 10: sen˜o a 11: B←C×5 12: fimse 13: sen˜o a 14: se (A > C) ent˜o a 15: C←C+C 16: sen˜o a 17: C←C×3 18: fimse 19: fimse 20: sen˜o a 21: se (B = 2) ent˜o a 22: B←C-B 23: sen˜o a 24: A←C×2 vers˜o de 10 de fevereiro de 2008 a 263 264 vers˜o de 10 de fevereiro de 2008 a . com a seguinte defini¸ao ` c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A. B. B. C 28: fim{fun¸ao} c˜ 25: 26: C←5 se (A < C) ent˜o a se (∼ (B > C)) ent˜o a se (C < B) ent˜o a B←B-2 sen˜o a B←A+B fimse sen˜o a se (∼ (C ≤ A)) ent˜o a C←A+5 sen˜o a B←B+B fimse fimse sen˜o a se (B = A) ent˜o a A←A×A sen˜o a C←B+C fimse fimse imprima A.5 FUNCOES SIMPLES ¸˜ 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: ´ CAP´ ITULO 20. B Exerc 4 Var.5 Suponha a chamada ` fun¸ao CALC.´ CAP´ ITULO 20.2 2 2. Pedro Kantek 266 vers˜o de 10 de fevereiro de 2008 a .1 0 1.5 FUNCOES SIMPLES ¸˜ Respostas Exerc 1 Var.2 7 1.3 1 1. C Exerc 2 Var. C 3: A ← 1 4: B ← 6 5: C ← 6 6: se (∼ (C = 2)) ent˜o a 7: se (C = 3) ent˜o a 8: se (A = 2) ent˜o a 9: B←A×4 10: sen˜o a 11: B←A-5 12: fimse 13: sen˜o a 14: se (A > C) ent˜o a 15: C←A+3 16: sen˜o a 17: C←C+5 18: fimse 19: fimse 20: sen˜o a 21: se (B = A) ent˜o a 22: B←B+B 23: sen˜o a 24: A←A×B 25: fimse 26: fimse 27: imprima A.3 28 2. B sen˜o a se (C = 1) ent˜o a A←A×A sen˜o a B←A-4 fimse fimse sen˜o a se (C = 2) ent˜o a A←A+C sen˜o a C←C×A fimse fimse imprima A. B. B Exerc 3 Var. EXERC´ ICIOS PRATICOS: 021 .1 9 2.3 -1 1.4 10 1.5 -4 Respostas Exerc´ ıcio 2. C 28: fim{fun¸ao} c˜ vers˜o de 10 de fevereiro de 2008 a 265 88-08. B. C fim{fun¸ao} c˜ 20. C Exerc 5 Var. com a seguinte defini¸ao a c˜ c˜ 1: fun¸ao CALC c˜ 2: inteiro A.5 4 2 2.1.4 27 2. EXERC´ ICIOS PRATICOS: 021 . Pedro Kantek 88-08. B.5 FUNCOES SIMPLES ¸˜ 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: ´ CAP´ ITULO 20. algoritmos determinados e uma chave secreta para. A a e opera¸ao inversa ´ a desencripta¸ao. c˜ A tr´ ıade CIA (Confidentiality. associados a um documento do qual s˜o fun¸ao. a c˜ mas n˜o a sua confidencialidade. das quais a primeira. u Confidencialidade . Pedro Kantek Cap´ ıtulo 21 Exerc´ ıcios Pr´ticos: 024 -DVs a 21.1 D´ ıgitos Verificadores Seguran¸a da informa¸˜o c ca Seguran¸a de Informa¸ao est´ relacionada com a prote¸ao existente ou necess´ria sobre c c˜ a c˜ a dados que possuem valor para algu´m ou uma organiza¸ao. Entre essas normas est˜o a BS 7799 (elaborada pela British c a Standards Institution) e a NBR ISO/IEC 17799 (a vers˜o brasileira desta primeira). EXERC´ ICIOS PRATICOS: 024 -DVS todas as caracter´ ısticas originais estabelecidas pelo propriet´rio da informa¸ao. e c˜ Existem mecanismos de seguran¸a que ap´iam os controles f´ c o ısicos: Portas / trancas / paredes / blindagem / guardas / etc . Usando fun¸oes de c˜ c˜ ”Hashing”ou de checagem. c˜ a Existem mecanismos de seguran¸a que ap´iam os controles l´gicos: c o o – Mecanismos de encripta¸ao. a o ficaria exposta a altera¸ao n˜o autorizada por elemento mal intencionado. foi publicada em 2005. geralmente eletrˆnico. sistemas biom´tricos. atrav´s de redes eletrˆnicas c˜ e o (p´ blicas ou privadas) se desenvolve. de outro modo. Integrity and Availability) – Confidencialidade. a a c˜ Integridade . consistindo na adi¸ao. Um conjunto de dados encriptados. destruir ou modificar a informa¸ao. Atesta a validade de um documento. ina c˜ cluindo controle de mudan¸as e garantia do seu ciclo de vida (nascimento. encabe¸adas pela ISO 27001 est˜o sendo elaboradas para substituir e c a completar os padr˜es definidos pela BS7799. a Entende-se por informa¸ao todo e qualquer conte´ do ou dado que tenha valor para c˜ u alguma organiza¸ao ou pessoa. c˜ c˜ Um dos padr˜es de seguran¸a mais conhecidos ´ o BS7799. Ela se aplica a todos o a os aspectos de prote¸ao e armazenamento de informa¸oes e dados. a partir de um conjunto de dados n˜o encriptados. ISO 27001. Controles l´gicos: s˜o barreiras que impedem ou limitam o acesso a informa¸ao. por aqueles usu´rios autorizados pelo propriet´rio da a a informa¸ao. o Algumas normas definem aspectos que devem ser levados em considera¸ao ao elaborar c˜ pol´ ıticas de seguran¸a. e Integridade erros poss´ ıveis em digita¸ao c˜ erro oblitera¸ao c˜ repeti¸ao c˜ transposi¸ao c˜ substitui¸ao c˜ fraude 88-08. `quelas autorizadas pelo propriet´rio da informa¸ao. c˜ Disponibilidade . Palavras-chave. ou seja. Integridade e Disponibilidade – representa as principais propriedades que. c˜ Outras propriedades est˜o sendo apresentadas (legitimidade e autenticidade) na mea dida em que o uso de transa¸oes comerciais em todo o mundo. o a c˜ que est´ em ambiente controlado. nem a informa¸oes c˜ a a c˜ eletrˆnicas ou qualquer outra forma mecˆnica de armazenamento.. Medida em que um servi¸o/informa¸ao ´ genuino. atualmente. c˜ – Mecanismos de controle de acesso. pelo ambiente ou infra-estrutura que a cerca ou por pessoas mal intencionadas que tem o objetivo de furtar.propriedade que limita o acesso a informa¸ao t˜o somente `s c˜ a a entidades leg´ ıtimas. c˜ Mecanismos de seguran¸a O suporte para as recomenda¸oes de seguran¸a pode ser c c˜ c encontrado em: Controles f´ ısicos: s˜o barreiras que limitam o contato ou acesso direto a informa¸ao a c˜ ou a infra-estrutura (que garante a existˆncia da informa¸ao)que a suporta. e que. que estabelece melhores o c e pr´ticas para implementa¸ao e na gest˜o da seguran¸a da informa¸ao. c˜ – Integridade. isto ´. orientam a an´lise. c˜ e c˜ – Assinatura digital. ou seja.propriedade que garante que a informa¸ao manipulada mantenha c˜ 267 era 1234 1234 1234 1234 1234 foi digitado 123 12234 1324 7234 5678 268 vers˜o de 10 de fevereiro de 2008 a . a – Mecanismos de garantia da integridade da informa¸ao.´ CAP´ ITULO 21. c˜ Existem duas filosofias por tr´s de qualquer pol´ a ıtica de seguran¸a: a proibitiva (tudo c que n˜o ´ expressamente permitido ´ proibido) e a permissiva (tudo que n˜o ´ proibido a e e a e ´ permitido). manuten¸ao c c˜ e destrui¸ao). o planejamento e a implementa¸ao da seguran¸a para um determia c˜ c nado grupo de informa¸oes que se deseja protejer. Ela pode estar guardada para uso restrito ou exposta ao c˜ p´ blico para consulta ou aquisi¸ao. Utiliza-se para tal. o – Mecanismos de certifica¸ao. produzir uma sequˆncia de dados encriptados. em qualquer forma. u c˜ A seguran¸a de uma determinada informa¸ao pode ser afetada por fatores comporc c˜ tamentais e de uso de quem se utiliza dela. A a ISO come¸ou a publicar a s´rie de normas 27000. esta c c˜ e e protegido contra a personifica¸ao por intrusos. firee walls. e c˜ Possui aspectos b´sicos como confidencialidade. A s´rie de nora c˜ a c c˜ e mas ISO 27000. cart˜es inteligentes. Permitem a transforma¸ao revers´ da inforc˜ c˜ ıvel ma¸ao de forma a torn´-la inintelig´ c˜ a ıvel a terceiros. integridade e disponibilidade da ina forma¸ao e n˜o se aplica ou est´ restrita a sistemas computacionais. em substitui¸ao ` ISO 17799 (e por c e c˜ a conseguinte ` BS 7799). garantindo a integridade do documento associado.propriedade que garante que a informa¸ao esteja sempre dispon´ c˜ ıvei para o uso leg´ ıtimo. que ´ 242. 3.. j´ que os d´ o e c˜ a ıgitos s˜o calculados a de 5 em 5 sinais. isto ´ quase e e a e sempre. calcule o DV do cart˜o 4931 4701 2604 479?. H´ necessidade de um terceiro. B2 . A a resposta deve ser 2. o 5 d´ ıgito ´ convenientemente estabelecido. V19 . j´ que ´ uma fun¸ao de m˜o unica. 22. V11 . o V10 . de 10 d´ o e e ıgitos ´ formado e pelo c´digo do banco (3 posi¸oes. V17 . Note-se e e c˜ a tamb´m que os d´ e ıgitos verificadores s´ aparecem no c´digo num´rico a digitar. Para cada valor que ultrapasse 10. V12 . e O ISBN 13 (em uso a partir de Janeiro de 2007) gera seu d´ ıgito da mesma maneira que o UPC. o resto desta soma por c˜ c 11 deve ser 0. Al´m destes sinais. Este c´digo ´ o chamado entrela¸ado 5-2. V16 . 1111 vira 2121 ent˜o 2+1+2+1 ´ 6.L44 al´m de e e um novo DV base 10. e neste caso as oblitera¸oes s˜o – em geral – descobertas e c˜ a corrigidas. F9 . Este algoritmo tamb´m ´ usado no sistema banc´rio da Noruega. se a resposta for a a 0. e O segundo campo contendo 11 d´ ıgitos ´ formado pelo conjunto L25 . adequado para uma leitura mecˆnica.. e o DV (de maneira a que o ultimo d´ c˜ ´ ıgito do produto na posi¸ao 13) c˜ seja correto. EXERC´ ICIOS PRATICOS: 024 -DVS Para minimizar estes erros. Quando o texto ´ muito importante. dobre o valor dos d´ e ıgitos alternados. Ele ´ calculado de maneira a que multiplicando cada d´ e e ıgito do c´digo o pela sua posi¸ao (come¸ando da direita e em 1) e somando tudo. (de 2x6=12 →1+2=3 e 2x8=16→1+6=7). B3 . V14 . B3 ). e Al´m do c´digo de barras. e O ultimo d´ ´ ıgito (0 13o ) ´ assim obtido: 1. Via de regra. e tanto as barras quanto os espa¸os s˜o usados para o reconhecimento. um tubo de cola Tenaz. Por exemplo. onde o 2 inicial corresponde ao caracter mais a direita. x pode ser 8. (n˜o tem inversa) c˜ e a e c˜ a ´ a Por exemplo DOBRO de 2 ´ 4. Outro exemplo. 9 por 4. e c˜ a o e Pela simples an´lise do DV ´ poss´ detectar grande parte dos erros acima dea e ıvel scritos. J´ a e a 8763 torna-se 7733. Acompanhe o exemplo: Seja o ISBN 85-7001-926-? (idioma-editor-livro-dv). j´ que muitos erros cometidos pelo digitador n˜o podem ser facilmente descobertos a a a por esse mesmo revisor.. o d´ ıgito verificador ´ 1. Seu c´digo ´ 7891200304295. As 3 primeiras posi¸oes do c´digo indicam o pa´ de produ¸ao c˜ o ıs c˜ do bem. suprimir”e ´ sobre isto que ca e e e nos fala esta hist´ria. a ind´ stria procede diferente.L23 . e na sua falta. B1 . o implac´vel imponder´vel a a a sempre d´ as suas caras. Ao inv´s do c´digo do produto a u e o ocupar as posi¸oes 4 a 12. algu´m (meus dedos ?) sumiu com a letra ”s”de escrevemos. ca e Isto ´ comum quando o pensamento ´ mais r´pido que os dedos que digitam.. Aqui eles s˜o desnecess´rios. o a e funcion´rio da IBM. mandam os bons constumes que o digitador leia o que escreveu. Multiplicase 8 por 10. V10 . Soma-se os d´ e ıgitos que ocupam posi¸oes c˜ ´ ımpares (1. mas n˜o na mesma ordem. apresenta os dados na ordem em que eles foram apresentados o acima. V12 . ao subtrair 11 menos o resto da divis˜o. depois que se termina um texto. ´ comum pedir-se a outra pessoa que fa¸a a e e c revis˜o. usa-se o conceito de d´ ıgito verificador.L22 . tome os seus d´ ıgitos juntos. um t´ a ıtulo de um banco pode ser pago em qualquer outro. Some todos os d´ ıgitos juntos. marca ”Japan Stamp”.. ou seja F6 . L20 . foi desenvolvido a e o nos anos 60. O c´digo de barras. al´m de um DV obtido c˜ u a e pelo m´todo de base 10. e soma-se este resultado ao da etapa anterior 3. e ISBN 10 (International Standard Book Number) O ultimo d´ ´ ıgito da s´rie de 10 e do ISBN ´ o DV. no c´digo ISSN e e a o (peri´dicos). eliminar. C´digos de cart˜o de cr´dito Usa-se o algoritmo de Luhn. sen˜o n˜o ´.´ CAP´ ITULO 21. Pedro Kantek 269 88-08. o c´digo do produto passa a ocupar c˜ c˜ o as posi¸oes 5 a 13. A fun¸ao mais usada ´ MOD. 5. o u e Sejam exemplos de um recipiente de tinta de carimbo. B2 . c´digo da moeda (9=real. F6 . Nesta represen` ta¸ao ele ´ o D5 . Subtrai-se o resultado c˜ do pr´ximo m´ ltiplo de 10. a Come¸ando com o d´ c ıgito mais a direita (que ´ o DV)... O quarto campo ´ o DV do conjunto completo.L34 al´m de e e um novo DV base 10.2 Na acep¸˜o 2 do Aur´lio. a 88-08. c˜ e Finalmente. o e Note-se que `s vezes. Soma-se os d´ ıgitos que ocupam posi¸oes pares. enquanto 8763 gera 7733. O resultado ´ o DV. o a a e a a e a e vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 21. como um m´todo para validar c´digos. at´ o vencimento). u Ele protege contra o erro acidental e n˜o contra o ataque malicioso. e portanto o pr´ximo inteiro divis´ por 11 ´ 11 o ıvel e vezes 22.L44 . V15 .. Neste caso. V11 . F8 . ou seja. sendo o DV a posi¸ao 13. V13 . V18 . no n´ mero de identifica¸ao do ve´ o u c˜ ıculo em alguns estados americanos. Quantas vezes ao escrever uma palavra qualquer no micro ecreveo mos (aten¸˜o revis˜o: ´ ecrevemos e n˜o escrevemos) errado ? Vocˆ acabou de ver uma ca a e a e oblitera¸˜o. a S˜o cuidados m´ a ınimos para n˜o pagar mico. L21 .. (Hans Peter Luhn.. como vai-se ver a seguir. existe um c´digo e o a o num´rico. tamb´m conhecido como m´dulo 10.. V15 . Pedro Kantek 270 vers˜o de 10 de fevereiro de 2008 a . M4 ). V14 . 2. 1 ou maior do que 9. O primeiro. e Fazendo-se 242-240=2 que ´ o DV procurado. Mas e e a e n˜o ´ poss´ determinar x em X mod 7 = 1. Seu c´digo ´ 7898076820584. 1896-1964). o c´digo de barra come¸a por um start e termina e o c por um stop. sendo os 4 primeiros o fator de vencimento (dias decorridos desde 07/10/1997) at´ o dia de vencimento.. com centavos. 6 por 2 e o resultado ´ 240. D5 . 7 por 8.L24 do conte´ do livre (´rea do cliente). Logo A METADE de 4 ´ 2. O terceiro campo contendo 11 d´ ıgitos ´ formado pelo conjunto L35 . V16 . e Dividindo 240 por 11 tem-se 21. 1 por 5. V18 . J´ 8 MOD 7 ´ 1. V13 . Ele ´ usado nos n´ meros de cart˜o e o e u a de cr´dito e no c´digo de seguro social do Canad´. o a a O c´digo num´rico ´ formado por 5 campos.F9 .. C´digo de barras da FEBRABAN Este c´digo est´ presente no sistema banc´rio o o a a brasileiro e ele permite o intercˆmbio de pagamentos entre os bancos (ou seja. e depois vem os 10 d´ ıgitos do valor. c a No c´lculo do DV mod 11.. Ent˜o 1111 n˜o ´ v´lido enquanto 8763 ´.. O algoritmo ´ de dom´ e o a e ınio p´ blico. o Brasil ´ 789. e O que ´ oblitera¸˜o ? e ca ..F8 . obliterar ´ ”destruir.) e multiplica-se o resultado por 3. V17 . e pelas o c˜ o posi¸oes L20 . e F7 . Por exemplo 1111 gera 2121. calculado com o d´ e ıgito 11 e pesos 2345678923. Trata-se de um d´ ıgito que ´ obtido como uma fun¸ao matem´tica do c´digo e ´ grudado nele. mas n˜o o o e a no c´digo de barras. que cont´m as mesmas informa¸oes. 2 por 3. a saber: B1 . V19 ... a e Se o total termina em zero (´ m´ ltiplo de 10) o c´digo completo ´ v´lido de acordo e u o e a com a f´rmula de Luhn. M4 . L21 .8. ent˜o 7+7+3+3 ´ 20.. F7 . o e Calcule e ache o resultado correto (4). 5 por 9. EXERC´ ICIOS PRATICOS: 024 -DVS Para testar o algoritmo de Luhn. o quinto campo ´ formado por 14 d´ e ıgitos. a e ıvel Exemplos ´ UPC=C´digo de produto universal E o c´digo de barras que encontramos nos o o produtos do supermercado. 29. no cart˜o de identifica¸ao de israelenses e no Yugoslav Unique Master Citizen Number a c˜ (JMBG). 3.posi¸ao e ´ um MOD 11 de todos os anteriores com o vetor de c˜ e pesos = 543298765432. enfim todas essas parafern´lias que a a todos t˜o bem conhecemos. e o DV1 ´ o que falta para a pr´xima dezena. e Obs: 1: noves fora: se x > 9. d) O DV3 ocupa a 14.cujo resto da divis˜o por 11 ´ 6. noves fora = 5 + 6 × 1 = 6. DVs=1. Com e o isso o primeiro c´digo ´: 76.817/0001. instalaram o software. e a c Estavam as 3 nervosas. Crie vetor P.483.LC = Z. e 88-08. Separe os d´ ıgitos e crie um vetor de pesos adequado. c Multiplique os dois vetores. DV=X) e e Letra Chave Este m´todo tem como resposta uma letra e n˜o um d´ e a ıgito. e assim por diante at´ 999 999 999 . 3. o que por s´ s´ j´ devia ser s´rio ind´ ca ı o a e ıcio de que alguma coisa grave ia acontecer. e c) O DV calculado ´ colocado no seu lugar e o processo refeito. 5. come¸ando com 2 e alternando. 8=SP. Continuando: o e A filial ´ 0001.1 M´dulo 10 o Separe os d´ ıgitos do c´digo a processar.22. Logo o primeiro DV ´ 11 − 4 = 7.1. quais os DVs ? 1 × 10 + 7 × 9 + 6 × 8 + 2 × 7 + 9 × 6 + 4 × 5 + 3 × 4 + 3 × 3 + 8 × 2 = 246. numa espera a imensa e infernal quando chegou a vez delas: Entraram na sala. N˜o preciso descrever como terminou a banca. e fica: 76. 5. m3 = 8 × 2 = 16. alocado ao d´ e ıgito mais a direita.posi¸ao e ´ um MOD 11 de todos os c˜ e anteriores com os pesos = 6543298765432. o software estava muito bom. 6. ´ e que naquele ano eram em n´mero de 9. Ex: p1 = 2. afinal o software era para automatizar uma pequena lojinha de bairro. 2:se deu a dezena. A lei de forma¸ao destes pesos c˜ PODE VARIAR em cada m´todo. sem maiores problemas. o o e d2 = 3.. a b) O DV1 ocupa a 8. Ex: se o c´digo ´ 13865. a b) O primeiro ´ calculado pelo MOD 11. +1 × 2 = 2. o DV ´ igual a 0. R = 1. pois por ser a ultima ´ composta por todos os professores orientadores. 3. seja o CP F = 176. Foi usado na Receita do PR at´ 96.1. 2. p3 = 2. charmosas e tamb´m competentes. a A LC ´ obtida pela equivalˆncia: R = 0.483. R = e e 25. (No BB se R=0. 7. e H´ alguns anos. logo o DV3=11-1=10 ou zero. O DV2 ´ 11 menos o resto de 229 por 11 que ´ 2.1. x ← x − 9 .44. cuja divis˜o por 11 a tem como resto 4. n˜o esque¸amos de afirmar. N´s chamamos esta a ´ ca o banca de magna.´ CAP´ ITULO 21. obliterara uma letra no t´ ıtulo. 8. os alunos – para se formarem – precisam construir um software desde a sua concep¸˜o at´ sua opera¸˜o sem nenhum erro grave. O DV 1 = 7 × 2 = 14.posi¸ao do c´digo e ´ um MOD 10 dos 7 d´ c˜ o e ıgitos iniciais. e O DV = 11− resto da soma dividido por 11.. Apenas informo que as alunas foram a aprovadas. O CPF completo fica sendo a e e 176. 6. Este m´todo se encontra em desuso. u a bonitas. 4. 444 444 444 . O menor peso ´ 2. agora com os pesos: e 11.817/0001-20.2 M´dulo 11 o Separe os d´ ıgitos. geralmente ´ pouco tempo. O resto de 254 dividido por 11 ´ 1. CPF = 222 222 222 .33.338. Assim. e O DV2 ´ igual a: = 7 × 5 + 6 × 4 + 4 × 3 + 8 × 2 + 3 × 9 + 8 × 8 + 1 × 7 + 7 × 6 + e 0 × 5 + 0 × 4 + 0 × 3 + 1 × 2 = 229. essas coisas nunca rolam sem maiores problemas. 4. Crie um vetor de pesos P. os micros. p5 = 2. +4 × 2 = 8. 9. Nessa hora a oblitera¸˜o (a maldita) introduziu-se na hist´ria. 7=ES/RJ. e e DV3=7×6+6×5+4×4+8×3+3×2+8×9+1×8+7×7+0×6+0×5+0×4+1×3+2×2 = 254. O digitador (o maldito) ca o esquecera-se de digitar.4 CNPJ (antigo CGC) 21. 10. as e alunas estavam apresentando uma transparˆncia onde em letras garrafais se dizia ”processae mento de peidos”. a Rolava a apresenta¸˜o. a resposta ´ 0. d3 = 8. eram 3 que aquilo rodava em rede. 21. Mostrou-se uma transparˆncia imensa cujo t´ e ıtulo era ”processamento de pedidos”. +8 × 1 = 8. 6=MG.338 − 75. o canh˜o. com o mesmo n´ mero de d´ u ıgitos. m5 = 2 × 5 = 1 Some os elementos do vetor multiplica¸ao. d4 = 6 e d5 = 5. Pedro Kantek 271 88-08. Eles tˆm 1 ano para essa ca e ca e tarefa e acreditem-me. Por exemplo. p2 = 1. 2. Some e ache o resto de uma divis˜o por 26.. Nesse curso. e e 21. o DV ´ 11 − 6 = 5. p4 = 1. com pesos = 10. Resposta: 40. e a 9=PR/SC e 0=RS. 2. Pedro Kantek Os principais m´todos usados: e ´ CAP´ ITULO 21.1. e contendo 2 e 1. o CNPJ e completo da COPEL ´: 76. Logo DV = 1.00. 6. c) O DV2 ocupa a 13. A soma ´ e 43.483. ou DV1=7. A seq¨ˆncia de ue pesos cresce para a esquerda. +3 × 2 = 6. Ex:2 + 3 + 7 + 6 + 1 = 19 c˜ O que faltar para completar a pr´xima dezena ser´ o DV mod 10. Ex: c˜ m1 = 1 × 2 = 2. 5. seja o CNPJ da COPEL: 7 648 381. Resposta: 27. mas qual o quˆ: a letra roubada fora a terceira letra da terceira palavra. 333 333 333 . o o a que falta a 19 para completar 20 ´ 1. m2 = 3 × 1 = 3. +8 × 1 = 8. d) O segundo d´ ıgito ´ colocado no seu lugar. vers˜o de 10 de fevereiro de 2008 a a) S˜o 3 DVs.294. Pedro Kantek 272 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIOS PRATICOS: 024 -DVS Se o resto ´ 0 ou 1. Maior gravidade n˜o haveria se fosse a qualquer letra. noves fora=7. EXERC´ ICIOS PRATICOS: 024 -DVS A cena ´ o exame final do curso de inform´tica em uma universidade bem conceituada e a de Curitiba. 7. quando. .3 CPF (Cadastro de Pessoas F´ ısicas) 21. LC = A. roendo os dedos que as unhas j´ haviam acabado. No exemplo. NESTE CASO 50..99 e 000 000 000 . Exemplo. tem-se d1 = 1. m4 = 1 × 6 = 6. CPF = 357 432 754 CPF = 247 212 764 . Curiosidade: CPF = 111 111 111. 9. e Veja se acerta: . uma equipe estava na ultima banca para aprova¸˜o. Assim. A equipe em quest˜o era formada por 3 alunas.1.817. Ex: 7. 8.294. LC = B. e Obs: O nono d´ ıgito de um CPF ´ a regi˜o onde foi criado. e a) S˜o 2 DVs. 4. e Refazendo 1×11+7×10+6×9+2×8+9×7+4×6+3×5+3×4+8×3+7×2 = 303. tirando NOVES FORA em cada multiplica¸ao. Calcule os d´ ıgitos dos seguintes CNPJs: 3= 7 4 7 7 8 3 4 4= 8 1 6 0 4 0 0 /0094/0069- - .038. . 1= 3 7 6 9 5 4 9 4 4 vers˜o de 10 de fevereiro de 2008 a . Lacta: 57. . Calcule os d´ ıgitos dos seguintes CNPJs: Some os 10 d´ ıgitos achados : Exerc´ ıcio 6 21. . . . /0093/0059. /0041/0002. 273 88-08. EXERC´ ICIOS PRATICOS: 024 -DVS Veja se acerta os CNPJs a seguir: Carrefour: 45. Calcule os d´ ıgitos dos seguintes CNPJs: Calcule os d´ ıgitos dos seguintes CNPJs: Some os 10 d´ ıgitos achados : Some os 10 d´ ıgitos achados : Exerc´ ıcio 10 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: Exerc´ ıcio 5 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: 1= 4 5 1 2 4 4 4 0 2 2= 4 1 7 0 9 9 8 8 6 - . /0009/0008. Observa¸ao: Alguns CNPJs inexplicavelmente n˜o seguem o aqui escrito. /0005/0003. Pedro Kantek Calcule os d´ ıgitos dos seguintes CNPJs: 88-08. Pedro Kantek 274 vers˜o de 10 de fevereiro de 2008 a .16 /0001Resposta:605. . .003. . 2= 8 8 9 4 0 5 5 3 1 . .88 BC: 00. EXERC´ ICIOS PRATICOS: 024 -DVS . /0005/0099. . . /0045/0042. Resposta:581. /0005/0086.91 /0001 . . /0006/0028. 2= 7 6 8 4 0 6 7 2 6 3= 6 6 1 6 2 3 4 4= 4 6 2 1 4 6 9 ´ CAP´ ITULO 21. 1= 5 5 1 5 9 3 9 0 8 2= 8 6 5 4 7 1 0 3 3 3= 8 0 9 9 4 8 2 4= 9 8 8 2 7 6 7 . Calcule os d´ ıgitos dos seguintes CNPJs: Calcule os d´ ıgitos dos seguintes CNPJs: Some os 10 d´ ıgitos achados : Some os 10 d´ ıgitos achados : Exerc´ ıcio 9 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: Exerc´ ıcio 4 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: 1= 8 0 5 4 5 2 6 7 3 2= 8 1 5 9 7 1 9 3 1 3= 6 0 8 8 8 3 2 4= 9 2 6 9 8 9 4 .2 Exerc´ ıcio 1 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: 1= 3 5 6 9 8 2 1 0 9 . . Por exemplo. Calcule os d´ ıgitos dos seguintes CNPJs: 1= 4 9 6 9 5 5 5 0 2 2= 8 5 3 7 8 0 6 4 3 3= 6 1 5 6 4 0 3 4= 3 4 8 9 2 5 7 . 1= 7 1 2 5 3 4 1 7 8 2= 6 2 5 4 9 3 2 4 3 3= 3 0 6 8 0 0 2 4= 5 2 1 3 4 8 6 . Some os 10 d´ ıgitos achados : Some os 10 d´ ıgitos achados : Exerc´ ıcio 7 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: Exerc´ ıcio 2 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: 1= 6 6 7 6 1 6 4 2 2 2= 6 0 6 9 9 1 4 9 5 3= 6 6 9 5 0 0 3 4= 3 3 9 7 7 2 1 . . 1= 5 5 2 9 5 1 3 3 4 2= 4 3 1 7 3 8 3 0 2 3= 5 6 5 2 2 6 4 4= 2 4 8 7 9 6 3 . .543. o CGC da Light: 66 444 437/0001-46. Calcule os d´ ıgitos dos seguintes CNPJs: Calcule os d´ ıgitos dos seguintes CNPJs: Some os 10 d´ ıgitos achados : Some os 10 d´ ıgitos achados : Exerc´ ıcio 8 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: Exerc´ ıcio 3 Calcule os d´ ıgitos dos Cadastros de Pessoa F´ ısica: 1= 5 2 2 8 4 2 5 3 4 2= 6 8 2 9 1 8 2 0 6 3= 7 2 0 8 7 2 7 4= 6 0 1 1 5 1 5 .´ CAP´ ITULO 21. . . Aparentec˜ a mente foram criados antes da regra. /0061Resposta:152. Pedro Kantek 276 vers˜o de 10 de fevereiro de 2008 a .2. . EXERC´ ICIOS PRATICOS: 024 -DVS Some os 10 d´ ıgitos achados : 21. ´ CAP´ ITULO 21.´ CAP´ ITULO 21. EXERC´ ICIOS PRATICOS: 024 -DVS 3= 5 8 1 2 1 0 9 4= 4 6 3 8 4 6 2 /0043/0039. Pedro Kantek 88-08.1 1 2 3 4 5 6 7 8 9 10 Respostas 33 50 35 47 50 43 30 39 31 38 9301128135 0615956369 4302226736 5507526863 9654840815 8292535036 1333145622 9094330137 3100841347 5230685423 vers˜o de 10 de fevereiro de 2008 a 275 88-08. use a seguinte tabela: 277 278 vers˜o de 10 de fevereiro de 2008 a . funciona legal.00128(18) = ________________(18) 00297(12) ..9 10 11 12 13 E F G H I = = = = = 14 15 16 17 18 J K L M N = = = = = 19 20 21 22 23 O P Q R S = = = = = 24 25 26 27 28 T U V W X = = = = = 29 30 31 32 33 Y = 34 Z = 35 Cap´ ıtulo 22 Nos exerc´ ıcios a seguir. e 94(10) . d´ ıgito a d´ ıgito. a regra ´ simples: se a soma for maior que a base. A resposta final ´ 72. tem-se 4 + 10 = 14. e O um que foi emprestado do 9. a Na soma individual. Somas em base diferente de 10 01402(06) + 01113(06) = ________________(06) 01343(05) + 01104(05) = ________________(05) 001A1(15) + 001B9(15) = ________________(15) 0013I(22) + 00103(22) = ________________(22) 000I2(19) + 00138(19) = ________________(19) 4. e retira-se uma base do total e vai um. tal como a conhecemos.. empresta-se uma base do vizinho esquerdo. se o n´ mero a subtrair ´ maior do que o u e n´ mero do qual vai ser feita a subtra¸ao. Se forem necess´rios mais de 10 d´ a ıgitos. Na subtra¸ao individual.. e 3. e agora tem-se 8 − 5 = 3. Pedro Kantek A aritm´tica. O primeiro digito ´ sempre ZERO.000GP(26) = ________________(26) 000DD(27) . Conversoes de base 10 para base Q 00868(10) = ________________________(22) 00772(10) = ________________________(18) 00642(10) = ________________________(21) 00703(10) = ________________________(09) 00232(10) = ________________________(25) 3.00181(12) = ________________(12) 000LF(26) . n˜o sofre nenhuma mudan¸a conceitual ou operae a c cional se passarmos a usar bases n˜o decimais. o 12o a letra B e a assim por diante at´ o 36o d´ e ıgito que ser´ o Z. tente fazer as convers˜es e as opera¸oes solicitadas: o c˜ 1.1 Aritm´tica n˜o decimal e a 00122(18) = ________________________(10) 000O7(32) = ________________________(10) 00510(12) = ________________________(10) 001C4(24) = ________________________(10) 02120(07) = ________________________(10) 2.. e agora pode-se fazer 14 − 9. d´ c˜ ıgito a d´ ıgito. u c˜ Exemplos: 27(10) + 45(10) = 2 7 + 4 5 ----7 2 Como 7 + 5 = 12 e 12 ´ maior do que a base. considere um conjunto de d´ c˜ ıgitos sujeito as seguintes regras: 1. Para as opera¸oes a seguir.59(10) = 9 4 5 9 ----3 5 Como 4 − 9 n˜o pode ser feito (pois 9 > 4).ARITMETICA NAO DECIMAL 0. desde a c˜ que posicional. e 2. subtrai-se uma base (10) e o resultado ´ e e 2. a c˜ e Com isto. Existem tantos d´ ıgitos quanto ´ o valor da base. Subtra¸oes em base diferente de 10 c 00176(18) . deixa-o valendo apenas 8. O sistema de numera¸ao usado. a solu¸ao ´ emprestar uma base do vizinho.´ ´ ˜ CAP´ ITULO 22. O resultado final ´ 35.9 A B C D = = = = = 0. cujo resultado ´ 5. EXERC´ ICIOS PRATICOS: 027 . Conversoes de Base Q para base 10 Exerc´ ıcios Pr´ticos: 027 a aritm´tica n˜o decimal e a 22. o 11o ser´ a letra A. e ”vai um”.00080(27) = ________________(27) 88-08. e Para facilitar. 1.ARITMETICA NAO DECIMAL ´ ´ ˜ CAP´ ITULO 22."0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" escreval ("Soma e subtracao de numeros de base qualquer . j : inteiro resu : real funcao achaind (ind:caracter) : inteiro 88-08.P. c2 : caracter b : inteiro op1 : vetor [1.op1[i] .10 enquanto (i>=1) faca Se (op1[i] + op2[i]) >= b entao res[i] <.1 fimenquanto i <.i.1)) fimpara fimalgoritmo Algoritmo de convers˜o de base qualquer para base 10 a algoritmo "convers~oQ10" a var c1 : caracter b : inteiro op1 : vetor [1.j . o programa abortar´.i . Note-se que o programa n˜o faz nenhuma consistˆncia. EXERC´ ICIOS PRATICOS: 027 ..1) <> ind) faca k <. Pedro Kantek 280 vers˜o de 10 de fevereiro de 2008 a . Pedro Kantek 00671(09) .k.10 enquanto (i >= 1) faca op2[j] <.i .op1[i] + op2[i] .op1[i] + op2[i] fimse i <.1)) .1 fimenquanto fimse para i de 1 ate 10 faca escreva (copia(let.10] de inteiro op2 : vetor [1.kantek .1 i <. EXERC´ ICIOS PRATICOS: 027 .10 enquanto (i >= 1) faca op1[j] <.1 j <.compr(c2) j <.ARITMETICA NAO DECIMAL i <..1)) .b op1[i-1] <.achaind (copia(c2.ago/07") escreval ("escreva o operador 1: ") leia (c1) escreval ("mais (+) ou menos (-) ? ") leia(sinal) escreval ("escreva o operador 2: ") leia (c2) escreval ("a base: ") leia(b) vers˜o de 10 de fevereiro de 2008 a 279 88-08.op1[i-1] + 1 senao res[i] <.´ ´ ˜ CAP´ ITULO 22.op2[i] fimse i <.i ..1.k + 1 fimenquanto retorne k fimfuncao inicio let <.10 enquanto (i>=1) faca Se op1[i]<op2[i] entao res[i] <. Eis alguns dos poss´ a ıveis erros: Usar n´ meros de comprimento maior que 9 d´ u ıgitos Usar bases maiores do que 36 Escrever opera¸oes de subtra¸ao cujo resultado seja negativo c˜ c˜ Incluir caracteres diferentes de ”0.op1[i-1] .1 Programa VISUALG A seguir um programa escrito em VISUALG que resolve as adi¸˜es e subtra¸oes em co c˜ bases n˜o decimais.i .(res[i]+1).1 j <.j .op2[i] op1[i-1] <.b + op1[i] .10] de inteiro let : caracter i.1 senao res[i] <.1 fimenquanto se sinal = "+" entao i <.achaind (copia(c1.1 fimenquanto senao i <.10] de inteiro let : caracter i. j : inteiro funcao achaind (ind:caracter) : inteiro var k : inteiro inicio k <.1 enquanto (copia(let..v.i.1 ..compr(c1) j <. e se algum a a e erro aparecer.00271(09) = ________________(09) 22.1 i <.10] de inteiro res : vetor [1.Z”nos operandos Usar opera¸oes diferentes de + e c˜ Usar espa¸os em branco entre os d´ c ıgitos dos operandos Usar digitos de valor absoluto maior ou igual do que a base algoritmo "maismenosnaodecimal" var sinal: caracter c1. 10 enquanto (i >= 1) faca op1[j] <.kantek escreval ("escreva o valor a converter ") leia (c1) escreval ("a base: ") leia(b) resto <.1) <> ind) faca k <.v.ago/07") escreval ("escreva o valor a converter ") leia (c1) escreval ("a base: ") leia(b) i <. Pedro Kantek 282 vers˜o de 10 de fevereiro de 2008 a .0 para i de 1 ate 10 faca resu <. Convers˜es de base 10 para base Q o 00888 00588 (10) (10) = = (11) (12) 3.k.1)) fimpara fimalgoritmo 22.j . EXERC´ ICIOS PRATICOS: 027 .resto c1 <.F8 .P.i . Somas em base diferente de 10 G4 163 (29) (19) + GN (29) = = (29) (19) + 1A6 (19) 4.1 j <. Convers˜es de Base Q para base 10 o (10) (10) 2.ARITMETICA NAO DECIMAL var k : inteiro inicio k <.c1 div b i <.1.compr(c1) j <.1 fimenquanto para i de 1 ate 10 faca escreva (copia(let.achaind (copia(c1. Subtra¸oes em base diferente de 10 c˜ 143 13A (17) (20) .1 i <.1 .10 enquanto (resto <> 0) faca resto <.10] de inteiro let : caracter i : inteiro resto : inteiro funcao achaind (ind:caracter) : inteiro var k : inteiro inicio k <.k + 1 fimenquanto retorne k fimfuncao inicio let <."0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" vers˜o de 10 de fevereiro de 2008 a ´ ´ ˜ CAP´ ITULO 22.1) <> ind) faca k <.´ ´ ˜ CAP´ ITULO 22.1 ..k + 1 fimenquanto retorne k fimfuncao inicio let <.1 fimenquanto resu <.c1 mod b op1[i] <.1 i <.1)) .2 460 A3 Exerc´ ıcio 1 (15) = (27) = 1."0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" escreval ("Conversao de numeros de base qualquer para base 10 .v.(op1[i]+1).k.kantek .resu + op1[i] * b ^ (10-i) fimpara escreva (resu) fimalgoritmo Algoritmo de convers˜o de base 10 para base qualquer a algoritmo "convers~o10Q" a var c1 : inteiro b : inteiro op1 : vetor [1.i .1 enquanto (copia(let.1 enquanto (copia(let.1. EXERC´ ICIOS PRATICOS: 027 . Pedro Kantek 88-08.P.i.I0 (17) (20) = = (17) (20) 281 88-08.ARITMETICA NAO DECIMAL escreval ("Conversao de numeros de base 10 para base qualquer . 172 (13) (11) = = (13) (11) 22.ARITMETICA NAO DECIMAL 3.BG (25) = 22. Convers˜es de base 10 para base Q o 00783 00212 (10) (10) = = (13) (30) vers˜o de 10 de fevereiro de 2008 a 283 88-08. Convers˜es de base 10 para base Q o 00939 00319 (10) (10) 1E0 JD (18) .ARITMETICA NAO DECIMAL ´ ´ ˜ CAP´ ITULO 22. Pedro Kantek 88-08.173 (18) = (18) (25) = = (13) (32) (25) .4. EXERC´ ICIOS PRATICOS: 027 .1 3.151 . Convers˜es de Base Q para base 10 o 289 42A (19) = (11) = (10) (10) 2. Somas em base diferente de 10 7J (24) 22. Somas em base diferente de 10 108 IM (22) (29) Respostas 13R 2G9 181 Q3 KM 2D2 5C 8C 6F 5A 93 7M + 7F + 7A (22) (29) = = 1 990 273 738 410 2 985 1175 573 9V 3 883 516 483 72 (22) (29) 4.4 Exerc´ ıcio 3 1.´ ´ ˜ CAP´ ITULO 22. Subtra¸oes em base diferente de 10 c˜ 210 255 (13) (11) . Pedro Kantek 284 vers˜o de 10 de fevereiro de 2008 a . Convers˜es de Base Q para base 10 o 175 535 (28) = (15) = (10) (10) + D3 (24) = = (24) (14) 152 (14) + 180 (14) 4.3 Exerc´ ıcio 2 1. EXERC´ ICIOS PRATICOS: 027 . Subtra¸oes em base diferente de 10 c˜ 2. . R = 5 ´ quinta e R = 6 ´ sexta-feira.2 C´lculo dos feriados m´veis a o S´rie de algoritmos e truques para calcular dias de semana e datas de feriados m´veis e o em nosso calend´rio. o dia em quest˜o ´ a e .C. Existiram outros algoritmos antes a deste. e e e Exemplo: Calculemos o dia da semana de hoje.1.1. a Dado um ano com quatro digitos (maior que 1587). NAO ´ bissexto 6: sen˜o a 7: se (ANO mod 4) = 0 ent˜o a 8: . Cap´ ıtulo 23 E← como R = Exerc´ ıcios Pr´ticos: 031 a Manipula¸˜o de datas ca 23. ano ´ s´bado. a e e 23. Por exemplo o Canon Paschalis devido a Victorius de Aquitania escrito em cerca de 450 a. / / 285 Os 3 feriados m´veis (ter¸a de carnaval.. a SE R4=0 ∧ ((R100 = 0) ∨ (R400 = 0)) o ano ´ bissexto sen˜o n˜o ´.3 Bissexto dia A regra do bissexto pode ser assim descrita: sejam R4 ← resto da divis˜o do ano por 4 a R100 ← resto da divis˜o do ano por 100 e a R400 ← resto da divis˜o do ano por 400..1 C´lculo do dia da semana a O algoritmo seguinte ´ devido ao astrˆnomo napolitano Aloysius Lilius e ao matem´tico e o a alem˜o e jesuita Cristopher Clavius. Dada uma data no formato dia. a primeira coisa a fazer ´ calcular em a e que dia cai a P´scoa. Pedro Kantek 286 vers˜o de 10 de fevereiro de 2008 a . a 23.´ CAP´ ITULO 23.´ bissexto e 9: sen˜o a ˜ e 10: NAO ´ bissexto 11: fimse 12: fimse 88-08. ano (onde ano > 1587). Escrito no s´culo XVI ´ usado pelas igrejas ocia e e dentais para calcular o dia do domingo de P´scoa.. sexta feira santa e Corpus Christi) s˜o baseados o c a todos no dia do domingo de P´scoa. ´ bissexto e 3: sen˜o a 4: se (ANO mod 100) = 0 ent˜o a ˜ e 5: .1. R = 3 ´ ter¸a e a e e e c R = 4 ´ quarta. R = 1 ´ domingo. mes.MANIPULACAO DE DATAS ¸˜ A← B← C← D← F← G← H← I← R← . calcula-se o dia da semana usando a seguinte formula¸ao: c˜ A ← ((12 − mes) ÷ 10) B ← ano − A C ← mes + (12 × A) D ← (B ÷ 100) E ← (D ÷ 4) F ←E+2−D G ← (365..1 Algoritmos de Calend´rio a 23.25 × B) H ← (30.. R = 2 ´ segunda. EXERC´ ICIOS PRATICOS: 031 . mes. dia. Portanto.6001 × (C + 1)) I ← F + G + H + dia + 5 R ← I mod 7 Se R = 0. e a a e Outra maneira de descrever o algoritmo ´ usando SEs encadeados e 1: se (ANO mod 400) = 0 ent˜o a 2: . a P´scoa ´: a e A ← ano mod 19 B ← (ano ÷ 100) C ← ano mod 100 D ← (B ÷ 4) E ← B mod 4 F ← (B + 8) ÷ 25 G ← (1 + B − F ) ÷ 3 H ← ((19 × A) + B + 15 − (D + G)) mod 30 I ← (C ÷ 4) K ← C mod 4 L ← (32 + (2 × E) + (2 × I) − (H + K)) mod 7 M ← ((A + (11 × H) + (22 × L)) ÷ 451) P ← ((H + L + 114 − (7 × M )) ÷ 31) Q ← (H + L + 114 − (7 × M )) mod 31 A P´scoa ´ o dia Q+1 do mˆs P. Calcule dia da semana do dia 16/ 7/1941 e informe: 2. 1=dom..mm.. Calcule o Carnaval de 2114 E o Corpus-Christi de 2114 / / 23... Calcule dia da semana do dia 20/12/2131 e informe: 2. 60.3 Exerc´ ıcio 2 (0=sab. para um ano n˜o bissexto.7 Exerc´ ıcio 6 (0=sab. corresponde ao ´ a e ındice do elemento acima. EXERC´ ICIOS PRATICOS: 031 . se dcxxxx ´ 94. (28/29).. 31. 335 (anos n˜o bissextos) ou a V A ← 1.6 Exerc´ ıcio 5 (0=sab. 153.6=sex) 1.. A← B← C← D← E← F← G← H← I← K← L← M← P← Q← dc ← dccarn dcsexs ← dccorp ← ← 23. 1=dom.6=sex) 23.. dcsexs ← dc − 2 e dccorp ← dc + 60 O mˆs de cada uma dessas datas. ter¸a e quinta respectivamente..6=sex) 1.9 Exerc´ ıcio 8 (0=sab. 30. deve ser lido em VA vis-a-vis o valor de dcxxxx. 1=dom.2 Exerc´ ıcio 1 (0=sab.. essa data corresponde a 4/abril. e Assim. Calcule dia da semana do dia 28/ 2/1605 e informe: 2. Calcule o Carnaval de 1941 E o Corpus-Christi de 1941 / 288 / / / 287 88-08.. 30. e e o dia ser´ (100-91)+1= dia 10.. e a 31. Calcule dia da semana do dia 10/ 7/2143 e informe: 2.MANIPULACAO DE DATAS ¸˜ 23. 13: ´ CAP´ ITULO 23. Por exemplo..´ CAP´ ITULO 23.aa para dc ´ dc = V A[mes] + dia − 1.8 / / Exerc´ ıcio 7 (0=sab... 306. a c dccarn ← dc − 47. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a . 31. Calcule dia da semana do dia 11/ 4/2114 e informe: 2.. 183. 30. 274.. Calcule dia da semana do dia 17/10/2180 e informe: 2. 305. 245.. Calcule o Carnaval de 1605 E o Corpus-Christi de 1605 vers˜o de 10 de fevereiro de 2008 a 1.6=sex) 23.MANIPULACAO DE DATAS ¸˜ fimse Se lembrarmos que os dias de cada mˆs s˜o 31. 275. 92.. 31. 30. 336 (anos bissextos) e calcularmos dc ← V A[P ] + Q ent˜o dc ´ o dia absoluto a partir de 1/janeiro desse ano.6=sex) 1. O mˆs.. 32... Calcule o Carnaval de 1893 E o Corpus-Christi de 1893 / / 23. 1=dom.6=sex) 1... e a Mais formalmente: A passagem de dd. 182. 1=dom. 31.5 Exerc´ ıcio 4 (0=sab. 121. Calcule o Carnaval de 2180 E o Corpus-Christi de 2180 / / 23. 61.. 122. 244. A partir daqui pode-se criar um vetor auxiliar VA com os seguintes valores V A ← 1.6=sex) 1. EXERC´ ICIOS PRATICOS: 031 . 152. 213. o carnaval ´ dc − 47 e Corpus Christi ´ dc + 60 Note e e e que os dias da semana sempre ser˜o sexta. 1=dom. Pedro Kantek 88-08. Calcule o Carnaval de 2143 E o Corpus-Christi de 2143 / / Exemplo: Vamos calcular as 4 datas do ano de 2007 . 91. 1=dom.mm. a e A Sexta feira santa ´ dc − 2. Calcule dia da semana do dia 21/ 7/1893 e informe: 2.6=sex) 1. A e passagem de dc para dd.. 31.. 214.aa ´: O dia corresponde a dc MENOS o maior elemento e de VA menor ou igual a dc MAIS 1. 1=dom. por sua vez.4 Exerc´ ıcio 3 (0=sab. Calcule o Carnaval de 2112 E o Corpus-Christi de 2112 1. se dc ´ 100 e VA ´ 1 32 60 91 121. Calcule o Carnaval de 2131 E o Corpus-Christi de 2131 / / 23. Calcule dia da semana do dia 25/10/2112 e informe: 2. 32. Calcule o Carnaval de 1884 E o Corpus-Christi de 1884 / / 23.MANIPULACAO DE DATAS ¸˜ ´ CAP´ ITULO 23. 1=dom.6=sex) 1. EXERC´ ICIOS PRATICOS: 031 ...11 Exerc´ ıcio 10 (0=sab.MANIPULACAO DE DATAS ¸˜ 23. Calcule dia da semana do dia 20/ 6/1884 e informe: 2. Pedro Kantek 290 vers˜o de 10 de fevereiro de 2008 a ..6=sex) 1. Pedro Kantek 88-08... Calcule dia da semana do dia 29/10/1999 e informe: 2.. Calcule o Carnaval de 1999 E o Corpus-Christi de 1999 / / 23.´ CAP´ ITULO 23. 1=dom.10 Exerc´ ıcio 9 (0=sab.12 1 2 3 4 5 6 7 8 9 10 3 2 6 4 5 3 4 4 6 6 Respostas (ter¸a) c (segunda) (sexta) (quarta) (quinta) (ter¸a) c (quarta) (quarta) (sexta) (sexta) 1/3/2112 22/2/1605 14/2/1893 12/2/2143 27/2/2131 29/2/2180 6/3/2114 25/2/1941 26/2/1884 16/2/1999 16/6/2112 9/6/1605 1/6/1893 30/5/2143 14/6/2131 15/6/2180 21/6/2114 12/6/1941 12/6/1884 3/6/1999 vers˜o de 10 de fevereiro de 2008 a 289 88-08. EXERC´ ICIOS PRATICOS: 031 . ) e e O objetivo do exerc´ ´ descobrir por onde dever´ passar o duto mestre.3 x y Exerc´ ıcios Exerc´ ıcio 1 18 19 4 3 6 10 1 29 23 26 15 16 21 5 13 11 22 9 14 30 Suponha o duto principal no eixo L-W . significando que s˜o necess´rios 54m de e a a duto auxiliar e que o duto principal deve estar entre os pontos 0. ´ claro. se um po¸o estiver nas coordenadas (12. 115 c a 6. 14. 77. 49. no problema x y 19 13 10 12 4 17 1 5 7 23 18 20 8 16 21 11 Suponha que vocˆ tem um terreno de 100 km × 100 km contendo um certo n´ mero de e u po¸os de petr´leo. c Lembrando. Os po¸os se encontram nas seguintes posi¸oes: c c˜ Para este caso.78). a a Assim. a Observa¸oes c˜ Lembre que se o duto principal estiver na dire¸ao norte-sul.5 km. Entretanto vocˆ ´ livre para procurar outro ee algoritmo que seja mais eficiente. vale o mesmo racioc´ c˜ ınio visto acima. tˆm-se: 9. y). 54. antes da transla¸ao.19. 16. estar´ localizado no canto inferior esquerdo do terreno. 0. 14. e 2. correspondendo a ordenada 19.19 e 100. 20. O terreno ir´ ser atravessado integralmente por um duto mestre. 25. a ordenada do duto principal deve ser a m´dia das duas c e ordenadas dos po¸os: 13 + 16 = 29 ÷ 2 = 14. 37. 67. 37. em qual ordenada ele deveria estar ? Proposta de solu¸˜o ca Cap´ ıtulo 24 1. Deslocando a origem dos indices. A primeira a medida de cada po¸o (o x) indicar´ a distˆncia no sentido leste-oeste e o segundo n´ mero c a a u (o y) indicar´ a distˆncia no norte-sul. Para descobrir onde deve passar suponha-o localizado em cada um dos 9 po¸os e c me¸a a quantidade de duto auxiliar necess´rio. Outra coisa que vocˆ deve calcular ´ a quantidade de duto auxiliar necess´rio (medido e e a em kilˆmetros). c funciona e apresenta o resultado correto. Ficando apenas com as ordenadas. 55. a quem poder´ c ıamos chamar de “for¸a bruta”. Como se pode ver o menor valor ´ de 54 km. isto ´. Veja-se o seguinte exemplo: Suponha-se a seguinte ditribui¸ao de po¸os: c˜ c x 11 10 17 5 16 13 1 26 15 y 9 26 19 14 22 20 12 4 25 291 24. o ponto 0.1 Localiza¸˜o de oleoduto ca 5. a c Percebe-se que as distˆncias m´ a ınimas s˜o: 35.´ CAP´ ITULO 24. E razo´vel se supor que o duto esteja entre o ponto 0 e o ponto 22.2 24. 26. a fim de diminuir o trabalho bra¸al por meio de c uma transla¸ao. o algoritmo aqui esbo¸ado. 65. c˜ Exerc´ ıcios Pr´ticos: 035 a Localiza¸˜o de oleoduto ca 24. a entre 4 e 26.LOCALIZACAO DE OLEODUTO ¸˜ Supondo que o duto principal deva ser extendido no sentido leste-oeste.19. 41 que correspona dem aos po¸os 1 e 7. de maneira ıcio e a a minimizar a quantidade de duto auxiliar necess´rio. c 7. A resposta esperada. 59. a metragem de duto auxiliar ´ de e e a posi¸ao do duto principal deve ser c˜ . Se o mesmo valor m´ ınimo for encontrado para 2 po¸os. 83. ele se encontrar´ 12 metros ` c a a direita da origem e 78 metros acima da mesma origem. A resposta deveria ser 35. podem-se desprezar as abcissas. 8.5. portanto ´ 54. 10. conforme explicitado no exerc´ ıcio. 12. e 3. 22. sendo que a origem dos c a ´ ındices. 0. Como o sentido ´ leste-oeste. c o a ao qual ir˜o se ligar (sempre de maneira transversal. e desprezando-se o segundo n´ mero das coordenadas de cada po¸o. 61. 22. apenas mudando “ordenadas” por “abcissas”. (mas que funcione tamb´m. Com isso. Pedro Kantek 292 vers˜o de 10 de fevereiro de 2008 a . fica: 5. 21 c˜ ´ 4. do e ` terceiro po¸o. 35. O duto mestre sempre ser´ instaa a lado no sentido NORTE-SUL ou no LESTE-OESTE. EXERC´ ICIOS PRATICOS: 035 . o valor 35 corresponde a quantidade de duto auxiliar necess´ria. o Os po¸os ser˜o identificados pelas suas coordenadas (x. u c Finalmente. 4. a resposta dever´ ser a m´dia c a e entre as duas ordenadas. 19. Neste caso temos: 80. Por exemplo. fazendo 90 graus) ramais a e auxiliares que conectar˜o cada um dos po¸os ao duto mestre. 15. 88-08. 18. Na realidade. Mais. Os po¸os se encontram nas seguintes posi¸oes: c c˜ x y 23 16 10 14 17 27 18 25 2 26 20 8 22 13 30 1 5 21 4 12 Para este caso. EXERC´ ICIOS PRATICOS: 035 . EXERC´ ICIOS PRATICOS: 035 . um: Suponha o duto principal no eixo L-W . a metragem de duto auxiliar ´ de e e a posi¸ao do duto principal deve ser c˜ .0 58. Os po¸os se encontram nas seguintes posi¸oes: c c˜ x y 19 18 5 8 2 17 14 7 20 16 21 27 23 22 9 3 15 11 Para este caso.0 Para este caso. um: Suponha o duto principal no eixo N-S .4 Exerc´ ıcio 2 Suponha o duto principal no eixo N-S . a metragem de duto auxiliar ´ de e e a posi¸ao do duto principal deve ser c˜ . Os po¸os se encontram nas seguintes posi¸oes: c c˜ x y 20 6 1 3 2 21 10 18 9 11 5 27 16 15 13 17 24 8 ´ CAP´ ITULO 24.0 15. Mais. 24.0 67.0 15. T. et alli.LOCALIZACAO DE OLEODUTO ¸˜ Mais.6 1 2 3 Respostas 82.0 12.0 55. Os po¸os se encontram nas seguintes posi¸oes: c c˜ x y 13 24 1 5 19 11 10 23 12 14 3 18 22 2 4 15 20 7 Para este caso.5 56. Este exerc´ ıcio foi adaptado de CORMEN. Pedro Kantek 294 vers˜o de 10 de fevereiro de 2008 a . a metragem de duto auxiliar ´ de e e a posicao do duto principal deve ser .0 13. Os po¸os se encontram nas seguintes posi¸oes: c c˜ x y 16 15 5 2 14 22 24 8 23 18 1 3 6 19 21 10 Para este caso.0 16. a metragem de duto auxiliar ´ de e e a posicao do duto principal deve ser . vers˜o de 10 de fevereiro de 2008 a 293 88-08.0 10. um: Suponha o duto principal no eixo L-W . Algoritmos. 24. p´g 155 (edi¸ao a c˜ brasileira). a metragem de duto auxiliar ´ de e e a posicao do duto principal deve ser .´ CAP´ ITULO 24.0 56. Pedro Kantek 88-08.5 Exerc´ ıcio 3 Suponha o duto principal no eixo N-S .LOCALIZACAO DE OLEODUTO ¸˜ 24. KUMON DE ALGORITMOS 2: 3: 4: 5: 6: 7: 8: 9: Cap´ ıtulo 25 X ← 14 Y←4 enquanto X >7 fa¸a c Y←Y+3 X←X-4 fimenquanto imprima Y fimfun¸ao c˜ fun¸ao A33 c˜ X←5 para Y de 6 a 20 passo 3 fa¸a c X ← X + Y +9 fimpara imprima X fimfun¸ao c˜ fun¸ao A13 c˜ X ← 20 Y ← 19 enquanto X > 4 fa¸a c Y←Y+X+3 X←X-3 fimenquanto imprima Y fimfun¸ao c˜ fun¸ao A41 c˜ X←3 Y←2 se X > 5 ent˜o a Y←Y+X+4 sen˜o a Y ← Y . fun¸ao A32 c˜ X←0 para Y de 5 a 19 passo 3 fa¸a c X←X+Y fimpara imprima X fimfun¸ao c˜ fun¸ao A12 c˜ 295 9. e 25. 1: ————————– 1: 88-08. EXERC´ ICIOS PRATICOS: 054 . 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 2. 1: 2: 3: 4: 5: 6: 7: ————————– 6. Pedro Kantek .´ CAP´ ITULO 25.(X + 12) fimse imprima Y fimfun¸ao c˜ fun¸ao A22 c˜ X←4 Y←6 repita Y←Y+2 X←X+4 at´ X >17 e imprima Y fimfun¸ao c˜ fun¸ao A34 c˜ 296 vers˜o de 10 de fevereiro de 2008 a ————————– Exerc´ ıcios Pr´ticos: 054 a Kumon de algoritmos 25.1 Treinamento b´sico em Algoritmos a 5. vocˆ deve seguir a l´gica de cada trecho descobrindo e o qual o valor que ´ impresso ao final. 1: 2: 3: 4: 5: 6: 7: ————————– 4.2 1. 1: 2: 3: 4: 5: 6: 7: ————————– 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 3. 1: 2: 3: 4: 5: 6: 7: 8: 9: Nos trechos de algoritmos a seguir. ————————– 7. 1: 2: 3: 4: 5: 6: 7: Exerc´ ıcio 1 fun¸ao A11 c˜ X ← 15 enquanto X >8 fa¸a c X←X-4 fimenquanto imprima X fimfun¸ao c˜ fun¸ao A21 c˜ X←5 repita X←X+4 at´ X >18 e imprima X fimfun¸ao c˜ 8. Pedro Kantek X←6 repita X←X+4 at´ X >13 e imprima X fimfun¸ao c˜ fun¸ao A41 c˜ X←3 Y←4 se X ≤ 8 ent˜o a Y←Y+X+5 sen˜o a Y ← Y . 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 11. 1: 2: 3: 4: 5: 6: 7: 7 8 9 10 11 12 Respostas 13 14 15 16 17 25.KUMON DE ALGORITMOS 2: 3: 4: 5: 6: 7: X←5 para Y de 3 a 21 passo 3 fa¸a c se (Y mod 2) = 0 ent˜o a X←X+Y+4 sen˜o a X←X+Y+1 fimse fimpara imprima X fimfun¸ao c˜ fun¸ao A41 c˜ X←4 Y←4 se X > 8∧ Y>9 ent˜o a Y←Y+X+3 sen˜o a Y ← Y . 1: 2: 3: 4: 5: 6: 7: ————————– 12.(X + 12 ) fimse imprima Y fimfun¸ao c˜ fun¸ao A23 c˜ X←6 Y←9 repita Y←Y+X+3 X←X+2 at´ X ≥ 17 e imprima Y fimfun¸ao c˜ fun¸ao A11 c˜ X ← 18 enquanto X >5 fa¸a c X←X-3 fimenquanto imprima X fimfun¸ao c˜ fun¸ao A32 c˜ X←1 para Y de 17 a 4 passo -3 fa¸a c X←X+Y fimpara imprima X fimfun¸ao c˜ fun¸ao A21 c˜ 297 88-08. 1: vers˜o de 10 de fevereiro de 2008 a 88-08. EXERC´ ICIOS PRATICOS: 054 . 1: Exerc´ ıcio 2 fun¸ao A11 c˜ 2: X ← 19 298 vers˜o de 10 de fevereiro de 2008 a ————————– 14. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 16. EXERC´ ICIOS PRATICOS: 054 . 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 17.(X + 12) fimse imprima Y fimfun¸ao c˜ fun¸ao A13 c˜ X←7 Y←5 enquanto X ≤ 16 fa¸a c Y←Y+X+4 X←X+4 fimenquanto imprima Y fimfun¸ao c˜ fun¸ao A33 c˜ X←5 para Y de 3 a 17 passo 3 fa¸a c X←X+Y+5 fimpara imprima X fimfun¸ao c˜ 1 2 3 4 5 6 ————————– 15.´ CAP´ ITULO 25. Pedro Kantek .KUMON DE ALGORITMOS 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: ´ CAP´ ITULO 25. 1: 2: 3: 4: 5: 6: 7: ————————– 13. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 10.3 1. 1: 2: 3: 4: 5: 6: 7: fun¸ao A32 c˜ X←0 para Y de 3 a 18 passo 3 fa¸a c X←X+Y fimpara imprima X fimfun¸ao c˜ fun¸ao A12 c˜ X←4 Y←4 enquanto X ≤18 fa¸a c Y←Y+2 X←X+3 fimenquanto imprima Y fimfun¸ao c˜ fun¸ao A33 c˜ X←3 para Y de 17 a 7 passo -3 fa¸a c X←X+Y+6 fimpara imprima X fimfun¸ao c˜ fun¸ao A13 c˜ X ← 14 Y ← 20 enquanto X ≥ 3 fa¸a c Y←Y+X+2 X←X-3 fimenquanto imprima Y 299 88-08.KUMON DE ALGORITMOS 3: ´ CAP´ ITULO 25. fun¸ao A23 c˜ X ← 19 3: Y ← 19 1: 2: vers˜o de 10 de fevereiro de 2008 a 88-08. 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 3. 1: 2: 3: 4: 5: 6: 7: 8: ————————– 11. Pedro Kantek ————————– 4. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: ————————– 5.(X + 11) fimse imprima Y fimfun¸ao c˜ fun¸ao A22 c˜ X ← 17 Y ← 20 repita Y←Y+3 X←X-4 at´ X ≤8 e imprima Y fimfun¸ao c˜ fun¸ao A34 c˜ X←7 para Y de 4 a 19 passo 2 fa¸a c se (Y mod 2) = 0 ent˜o a X←X+Y+5 sen˜o a X←X+Y+1 fimse fimpara imprima X fimfun¸ao c˜ fun¸ao A41 c˜ X←1 Y←6 se X = 4∨ Y<4 ent˜o a Y←Y+X+4 sen˜o a Y ← Y .´ CAP´ ITULO 25. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 2. 1: 2: 3: 4: 5: 6: 7: ————————– 10. 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 9. EXERC´ ICIOS PRATICOS: 054 .(X + 10) fimse imprima Y fimfun¸ao c˜ ————————– 7.KUMON DE ALGORITMOS 9: 4: enquanto X >7 fa¸a c X←X-2 5: fimenquanto 6: imprima X 7: fimfun¸ao c˜ fun¸ao A21 c˜ X ← 10 repita X←X+3 at´ X ≥13 e imprima X fimfun¸ao c˜ fimfun¸ao c˜ fun¸ao A41 c˜ X←7 Y←1 se X = 5 ent˜o a Y←Y+X+7 sen˜o a Y ← Y . EXERC´ ICIOS PRATICOS: 054 . 1: 2: 3: 4: 5: 6: 7: ————————– 8. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 6. Pedro Kantek 300 vers˜o de 10 de fevereiro de 2008 a . 1: 2: 3: 4: 5: 6: 7: ————————– 3.´ CAP´ ITULO 25.KUMON DE ALGORITMOS 4: 5: 6: 7: 8: 9: ´ CAP´ ITULO 25. 1: 2: 3: 4: 5: 6: 7: ————————– 4. 1: 2: 3: 4: 5: 6: 7: 25. 1: 2: 3: 4: 5: 6: 7: ————————– 16. EXERC´ ICIOS PRATICOS: 054 . Pedro Kantek imprima Y fimfun¸ao c˜ fun¸ao A33 c˜ X←4 para Y de 5 a 14 passo 3 fa¸a c X ← X + Y +7 fimpara imprima X fimfun¸ao c˜ 1 2 3 4 5 6 ————————– 17. 1: 2: 3: 4: 5: 6: 7: 7 8 9 10 11 12 Respostas 13 14 15 16 17 ————————– 14. 1: 2: vers˜o de 10 de fevereiro de 2008 a 88-08. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 2.KUMON DE ALGORITMOS 8: 9: repita Y←Y+X+4 X←X-4 at´ X <10 e imprima Y fimfun¸ao c˜ fun¸ao A11 c˜ X←9 enquanto X ≤13 fa¸a c X←X+2 fimenquanto imprima X fimfun¸ao c˜ fun¸ao A32 c˜ X←0 para Y de 4 a 15 passo 2 fa¸a c X←X+Y fimpara imprima X fimfun¸ao c˜ fun¸ao A21 c˜ X←7 repita X←X+3 at´ X >17 e imprima X fimfun¸ao c˜ fun¸ao A41 c˜ X←1 Y←2 se X > 2 ent˜o a Y←Y+X+5 sen˜o a Y ← Y .(X + 12) fimse imprima Y fimfun¸ao c˜ fun¸ao A13 c˜ X ← 16 Y ← 20 enquanto X ≥ 3 fa¸a c Y←Y+X+3 X←X-3 fimenquanto 301 88-08. 1: 2: 3: 4: 5: 6: 7: ————————– 13. 1: 2: 3: 4: 5: 6: 7: Exerc´ ıcio 3 fun¸ao A11 c˜ X←6 enquanto X <17 fa¸a c X←X+4 fimenquanto imprima X fimfun¸ao c˜ fun¸ao A21 c˜ X ← 18 repita X←X-2 at´ X ≤7 e imprima X fimfun¸ao c˜ fun¸ao A32 c˜ X←0 para Y de 3 a 18 passo 3 fa¸a c X←X+Y fimpara imprima X fimfun¸ao c˜ fun¸ao A12 c˜ X ← 14 302 vers˜o de 10 de fevereiro de 2008 a ————————– 15. 1: 2: 3: 4: 5: 6: 7: ————————– 12. Pedro Kantek . EXERC´ ICIOS PRATICOS: 054 .4 1. ´ CAP´ ITULO 25. 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 13. 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 11. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 12. 1: 2: 3: 4: 5: 6: 7: ————————– 8. 1: 2: vers˜o de 10 de fevereiro de 2008 a 88-08. 1: 2: 3: 4: 5: 6: 7: ————————– 9. Pedro Kantek ————————– 5. 1: 2: 3: 4: 5: 6: 7: para Y de 4 a 16 passo 2 fa¸a c se (Y mod 2) = 0 ent˜o a X←X+Y+4 sen˜o a X←X+Y+2 fimse fimpara imprima X fimfun¸ao c˜ fun¸ao A41 c˜ X←1 Y←7 se X ≥ 9∨Y<4 ent˜o a Y←Y+X+4 sen˜o a Y ← Y . 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 7. EXERC´ ICIOS PRATICOS: 054 . Pedro Kantek . EXERC´ ICIOS PRATICOS: 054 .KUMON DE ALGORITMOS 3: 4: 5: 6: 7: 8: 9: ´ CAP´ ITULO 25. 1: 2: ————————– 14. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: ————————– 6.KUMON DE ALGORITMOS 3: 4: 5: 6: 7: 8: 9: 10: 11: Y←9 enquanto X ≥7 fa¸a c Y←Y+4 X←X-4 fimenquanto imprima Y fimfun¸ao c˜ fun¸ao A33 c˜ X←4 para Y de 5 a 14 passo 3 fa¸a c X←X+Y+9 fimpara imprima X fimfun¸ao c˜ fun¸ao A13 c˜ X ← 15 Y ← 16 enquanto X ≥ 6 fa¸a c Y←Y+X+4 X←X-2 fimenquanto imprima Y fimfun¸ao c˜ fun¸ao A41 c˜ X←5 Y←5 se X = 1 ent˜o a Y←Y+X+8 sen˜o a Y ← Y .(X + 11) fimse imprima Y fimfun¸ao c˜ fun¸ao A23 c˜ X ← 19 Y ← 18 repita Y←Y+X+2 X←X-2 at´ X < 9 e imprima Y fimfun¸ao c˜ fun¸ao A11 c˜ X←7 enquanto X <13 fa¸a c X←X+3 fimenquanto imprima X fimfun¸ao c˜ fun¸ao A32 c˜ X←0 para Y de 4 a 18 passo 3 fa¸a c X←X+Y fimpara imprima X fimfun¸ao c˜ fun¸ao A21 c˜ X←8 304 vers˜o de 10 de fevereiro de 2008 a ————————– 10.(X + 11) fimse imprima Y fimfun¸ao c˜ fun¸ao A22 c˜ X ← 20 Y ← 14 repita Y←Y+4 X←X-4 at´ X <10 e imprima Y fimfun¸ao c˜ fun¸ao A34 c˜ X←5 303 88-08. EXERC´ ICIOS PRATICOS: 054 . 1: 2: 3: 4: 5: 6: 7: 7 8 9 10 11 12 Respostas 13 14 15 16 17 25.5 1 2 3 Respostas 7 7 18 21 13 6 55 63 63 10 110 112 -13 14 77 66 -17 17 78 91 -11 305 14 105 -12 93 29 135 -5 76 26 103 -5 114 3 15 13 56 54 50 14 12 19 -11 20 -13 50 75 85 70 53 160 88-08. 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 17. EXERC´ ICIOS PRATICOS: 054 . Pedro Kantek 306 vers˜o de 10 de fevereiro de 2008 a .KUMON DE ALGORITMOS repita X←X+4 5: at´ X >16 e 6: imprima X 7: fimfun¸ao c˜ 1: 2: 3: 4: 5: 6: 7: 8: 9: ————————– 15.KUMON DE ALGORITMOS 3: 4: ´ CAP´ ITULO 25. fun¸ao A41 c˜ X←7 Y←6 se X > 9 ent˜o a Y←Y+X+9 sen˜o a Y ← Y .(X + 12) fimse imprima Y fimfun¸ao c˜ fun¸ao A13 c˜ X←7 Y←8 enquanto X ≤ 15 fa¸a c Y←Y+X+4 X←X+4 fimenquanto imprima Y fimfun¸ao c˜ fun¸ao A33 c˜ X←7 para Y de 4 a 20 passo 2 fa¸a c X←X+Y+5 fimpara imprima X fimfun¸ao c˜ 1 2 3 4 5 6 10: ————————– 16. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 88-08.´ CAP´ ITULO 25. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 26. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: fun¸ao seq3 (inteiro xn2 xn1) c˜ ct ← 1 enquanto ct < 9 fa¸a c ax ← (teto(sqrt(xn1))) × xn2 xn2 ← xn1 xn1 ← ax imprima ax ct++ fimenquanto fimfun¸ao c˜ Sendo chamado com seq3( 6 .CONTINUAR SEQUENCIAS 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: Cap´ ıtulo 26 Exerc´ ıcios Pr´ticos: 057 a Continuar sequˆncias ¨e Para este exerc´ ıcio. . 8 ) Gerando os 4 primeiros n´ meros: 4.. a Sendo chamado com seq2( 3 . 6..´ ¨ˆ CAP´ ITULO 26. 12 e se a a chamado com seq1(33. 8. 33.1 Por exemplo fun¸ao seq2 (inteiro alfa xn2 xn1) c˜ ct ← 1 enquanto ct < 9 fa¸a c ax ← (alfa × xn2) + xn1 xn2 ← xn1 xn1 ← ax imprima ax ct++ fimenquanto fimfun¸ao c˜ Seja o seguinte algoritmo: 1: fun¸ao seq1 (inteiro n incr) c˜ 2: ct ← 1 3: enquanto ct < 9 fa¸a c 4: y←2 5: x←2 6: enquanto y < n fa¸a c 7: se 0=n mod y ent˜o a 8: x ← x+1 9: fimse 10: y ← y+1 11: fimenquanto 12: imprima x 13: n ← n+incr 14: ct++ 15: fimenquanto 16: fimfun¸ao c˜ Este algoritmo. 6 u 2. 1: 2: 3: 4: 5: Exerc´ ıcio 1 fun¸ao seq1 (inteiro n incr) c˜ ct ← 1 enquanto ct < 9 fa¸a c y←2 x←2 307 fun¸ao seq4 (inteiro xn) c˜ ct ← 1 enquanto ct < 9 fa¸a c se xn mod 2 = 0 ent˜o a ax ← 1 + 3 × xn sen˜o a ax ← (4 × xn)-1 fimse imprima ax xn ← ax ct++ fimenquanto fimfun¸ao c˜ 308 vers˜o de 10 de fevereiro de 2008 a 88-08. e o oitavo a elemento ser´ 6. . 108. 4. 7 ) Gerando os 4 primeiros n´ meros: 18. se chamado seq1(3.. . 8. Se chamado com seq1(4. EXERC´ ICIOS PRATICOS: 057 . 12.2 1.8) a resposta ser´ 3. vocˆ deve descobrir qual o 8o elemento da seu e q¨ˆncia e escrevˆ-lo na resposta. ue e enquanto y < n fa¸a c se 0=n mod y ent˜o a x ← x+1 fimse y ← y+1 fimenquanto imprima x n ← n+incr ct++ fimenquanto fimfun¸ao c˜ Sendo chamado com seq1( 8 . 4.. 6.. 2. s˜o apresentados 8 algoritmos distintos que geram seq¨ˆncias de a ue n´ meros inteiros. Em cada uma delas. 8. 3 .55) dar´ 4. 385 u 4. 78. 177 u 3. 6. 6 ) Gerando os 4 primeiros n´ meros: 15. 5. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 26. Pedro Kantek ..7) dar´ como resposta 2. 8.. 35. ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS Sendo chamado com seq4( 3 ) Gerando os 4 primeiros n´ meros: 11, 43, 171, 683 u 5. 1: 2: 3: 4: 5: 6: 7: 8: 9: ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS 5: 6: 7: 8: 9: 10: 11: 12: 13: fun¸ao seq5 (inteiro xn1) c˜ ct ← 1 enquanto ct < 9 fa¸a c ax ← xn1 + (ct-1)ct mod 3 imprima ax xn1 ← ax ct++ fimenquanto fimfun¸ao c˜ x ← (ct mod 3)+(ct mod 4)+(ct mod 5) sen˜o a x ← (ct mod 2)+(ct mod 3)+(ct mod 4) fimse x ← x+zz imprima x ct ← ct+1 fimenquanto fimfun¸ao c˜ Sendo chamado com seq8( 9 ) Gerando os 4 primeiros n´ meros: 12, 15, 13, 14 u 1 2 3 4 5 6 7 8 Sendo chamado com seq5( 8 ) Gerando os 4 primeiros n´ meros: 8, 9, 10, 13 u 6. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: fun¸ao seq6 (inteiro xn2 xn1) c˜ ct ← 1 repita ax ← chao(sqrt(xn1)) bx ← 3 × xn2 cx ← ax + bx imprima cx xn2 ← xn1 xn1 ← cx ct++ at´ ct > 8 e fimfun¸ao c˜ Respostas 26.3 1. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: Exerc´ ıcio 2 fun¸ao seq1 (inteiro n incr) c˜ ct ← 1 enquanto ct < 9 fa¸a c y←2 x←2 enquanto y < n fa¸a c se 0=n mod y ent˜o a x ← x+1 fimse y ← y+1 fimenquanto imprima x n ← n+incr ct++ fimenquanto fimfun¸ao c˜ Sendo chamado com seq6( 5 , 4 ) Gerando os 4 primeiros n´ meros: 17, 16, 55, 55 u 7. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: fun¸ao seq7 (inteiro x) c˜ ct ← 1 repita se ct < 3 ent˜o a ax ← x × 4 sen˜o a se ct<6 ent˜o a ax ← x × 3 sen˜o a ax ← x × 2 fimse fimse imprima ax x ← ax ct ← ct+2 at´ ct > 16 e fimfun¸ao c˜ Sendo chamado com seq1( 4 , 5 ) Gerando os 4 primeiros n´ meros: 3, 3, 4, 2 u 2. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Sendo chamado com seq7( 5 ) Gerando os 4 primeiros n´ meros: 20, 60, 180, 360 u 8. 1: 2: 3: fun¸ao seq2 (inteiro alfa xn2 xn1) c˜ ct ← 1 enquanto ct < 9 fa¸a c ax ← (alfa × xn2) + xn1 xn2 ← xn1 xn1 ← ax imprima ax ct++ fimenquanto fimfun¸ao c˜ fun¸ao seq8 (inteiro zz) c˜ ct ← 1 enquanto ct < 9 fa¸a c 4: se ct mod 2 = 0 ent˜o a 309 88-08, Pedro Kantek Sendo chamado com seq2( 5 , 4 , 5 ) Gerando os 4 primeiros n´ meros: 25, 50, 175, 425 u 3. 1: 2: fun¸ao seq3 (inteiro xn2 xn1) c˜ ct ← 1 310 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08, Pedro Kantek ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS 3: 4: 5: 6: 7: 8: 9: 10: ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS 7. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: enquanto ct < 9 fa¸a c ax ← (teto(sqrt(xn1))) × xn2 xn2 ← xn1 xn1 ← ax imprima ax ct++ fimenquanto fimfun¸ao c˜ Sendo chamado com seq3( 5 , 7 ) Gerando os 4 primeiros n´ meros: 15, 28, 90, 280 u 4. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: fun¸ao seq4 (inteiro xn) c˜ ct ← 1 enquanto ct < 9 fa¸a c se xn mod 2 = 0 ent˜o a ax ← 1 + 3 × xn sen˜o a ax ← (4 × xn)-1 fimse imprima ax xn ← ax ct++ fimenquanto fimfun¸ao c˜ fun¸ao seq7 (inteiro x) c˜ ct ← 1 repita se ct < 3 ent˜o a ax ← x × 4 sen˜o a se ct<6 ent˜o a ax ← x × 3 sen˜o a ax ← x × 2 fimse fimse imprima ax x ← ax ct ← ct+2 at´ ct > 16 e fimfun¸ao c˜ Sendo chamado com seq7( 5 ) Gerando os 4 primeiros n´ meros: 20, 60, 180, 360 u 8. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: Sendo chamado com seq4( 8 ) Gerando os 4 primeiros n´ meros: 25, 99, 395, 1579 u 5. 1: 2: 3: 4: 5: 6: 7: 8: 9: fun¸ao seq5 (inteiro xn1) c˜ ct ← 1 enquanto ct < 9 fa¸a c ax ← xn1 + (ct-1)ct mod 3 imprima ax xn1 ← ax ct++ fimenquanto fimfun¸ao c˜ fun¸ao seq8 (inteiro zz) c˜ ct ← 1 enquanto ct < 9 fa¸a c se ct mod 2 = 0 ent˜o a x ← (ct mod 3)+(ct mod 4)+(ct mod 5) sen˜o a x ← (ct mod 2)+(ct mod 3)+(ct mod 4) fimse x ← x+zz imprima x ct ← ct+1 fimenquanto fimfun¸ao c˜ Sendo chamado com seq8( 10 ) Gerando os 4 primeiros n´ meros: 13, 16, 14, 15 u 1 2 3 4 5 6 7 8 Sendo chamado com seq5( 8 ) Gerando os 4 primeiros n´ meros: 8, 9, 10, 13 u 6. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: fun¸ao seq6 (inteiro xn2 xn1) c˜ ct ← 1 repita ax ← chao(sqrt(xn1)) bx ← 3 × xn2 cx ← ax + bx imprima cx xn2 ← xn1 xn1 ← cx ct++ at´ ct > 8 e fimfun¸ao c˜ Respostas 26.4 1. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 88-08, Pedro Kantek Exerc´ ıcio 3 fun¸ao seq1 (inteiro n incr) c˜ ct ← 1 enquanto ct < 9 fa¸a c y←2 x←2 enquanto y < n fa¸a c se 0=n mod y ent˜o a x ← x+1 fimse y ← y+1 312 vers˜o de 10 de fevereiro de 2008 a Sendo chamado com seq6( 9 , 4 ) Gerando os 4 primeiros n´ meros: 29, 17, 91, 60 u vers˜o de 10 de fevereiro de 2008 a 311 88-08, Pedro Kantek ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS 11: 12: 13: 14: 15: 16: ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS 4: 5: 6: 7: 8: 9: fimenquanto imprima x n ← n+incr ct++ fimenquanto fimfun¸ao c˜ ax ← xn1 + (ct-1)ct mod 3 imprima ax xn1 ← ax ct++ fimenquanto fimfun¸ao c˜ Sendo chamado com seq1( 9 , 9 ) Gerando os 4 primeiros n´ meros: 3, 6, 4, 9 u 2. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Sendo chamado com seq5( 4 ) Gerando os 4 primeiros n´ meros: 4, 5, 6, 9 u 6. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: fun¸ao seq2 (inteiro alfa xn2 xn1) c˜ ct ← 1 enquanto ct < 9 fa¸a c ax ← (alfa × xn2) + xn1 xn2 ← xn1 xn1 ← ax imprima ax ct++ fimenquanto fimfun¸ao c˜ Sendo chamado com seq2( 5 , 4 , 6 ) Gerando os 4 primeiros n´ meros: 26, 56, 186, 466 u 3. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: fun¸ao seq6 (inteiro xn2 xn1) c˜ ct ← 1 repita ax ← chao(sqrt(xn1)) bx ← 3 × xn2 cx ← ax + bx imprima cx xn2 ← xn1 xn1 ← cx ct++ at´ ct > 8 e fimfun¸ao c˜ fun¸ao seq3 (inteiro xn2 xn1) c˜ ct ← 1 enquanto ct < 9 fa¸a c ax ← (teto(sqrt(xn1))) × xn2 xn2 ← xn1 xn1 ← ax imprima ax ct++ fimenquanto fimfun¸ao c˜ Sendo chamado com seq6( 6 , 5 ) Gerando os 4 primeiros n´ meros: 20, 19, 64, 65 u 7. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: Sendo chamado com seq3( 6 , 7 ) Gerando os 4 primeiros n´ meros: 18, 35, 108, 385 u 4. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: fun¸ao seq4 (inteiro xn) c˜ ct ← 1 enquanto ct < 9 fa¸a c se xn mod 2 = 0 ent˜o a ax ← 1 + 3 × xn sen˜o a ax ← (4 × xn)-1 fimse imprima ax xn ← ax ct++ fimenquanto fimfun¸ao c˜ fun¸ao seq7 (inteiro x) c˜ ct ← 1 repita se ct < 3 ent˜o a ax ← x × 4 sen˜o a se ct<6 ent˜o a ax ← x × 3 sen˜o a ax ← x × 2 fimse fimse imprima ax x ← ax ct ← ct+2 at´ ct > 16 e fimfun¸ao c˜ Sendo chamado com seq7( 7 ) Gerando os 4 primeiros n´ meros: 28, 84, 252, 504 u 8. 1: 2: 3: 4: 5: 6: 7: 8: 9: Sendo chamado com seq4( 6 ) Gerando os 4 primeiros n´ meros: 19, 75, 299, 1195 u 5. 1: 2: fun¸ao seq5 (inteiro xn1) c˜ ct ← 1 3: enquanto ct < 9 fa¸a c 313 88-08, Pedro Kantek fun¸ao seq8 (inteiro zz) c˜ ct ← 1 enquanto ct < 9 fa¸a c se ct mod 2 = 0 ent˜o a x ← (ct mod 3)+(ct mod 4)+(ct mod 5) sen˜o a x ← (ct mod 2)+(ct mod 3)+(ct mod 4) fimse x ← x+zz 314 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08, Pedro Kantek ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS imprima x ct ← ct+1 12: fimenquanto 13: fimfun¸ao c˜ 10: 11: ´ ¨ˆ CAP´ ITULO 26. EXERC´ ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS Sendo chamado com seq8( 6 ) Gerando os 4 primeiros n´ meros: 9, 12, 10, 11 u 1 2 3 4 5 6 7 8 Respostas 26.5 1 2 3 Respostas 7 4 12 5001 27050 29336 9771300 4513600 9771300 174763 404139 305835 85 85 81 557 617 651 5760 5760 8064 14 15 11 vers˜o de 10 de fevereiro de 2008 a 315 88-08, Pedro Kantek 88-08, Pedro Kantek 316 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 27. EXERC´ ICIOS PRATICOS: 062 - ENGENHARIA REVERSA 723 10 2 3 Percebe-se que a inicializa¸ao original do A foi 1. A resposta deste exemplo portanto, ´ c˜ e 1. Cap´ ıtulo 27 27.2 Exerc´ ıcio 1 A seguir, diversos algoritmos. Em cada um deles, vocˆ deve dizer qual o valor inicial da e vari´vel A. a Exerc´ ıcios Pr´ticos: 062 a Engenharia reversa 27.1 Engenharia Reversa de algoritmos 1 fun¸ao A1 c˜ A← . 3: B ← 7 4: C ← 13 5: enquanto (A + B) > 4 fa¸a c 6: se A > C ent˜o a 7: A←A-1 8: sen˜o a 9: A←A+1 10: fimse 11: B←B-2 12: imprima A, B, C 13: fimenquanto Esta execu¸ao deu como resultado c˜ 6 5 13 7 3 13 8 1 13 9 -1 13 10 -3 13 11 -5 13 12 -7 13 13 -9 13 1: 2: Se a programa¸ao fosse mais engenharia e menos arte, talvez n˜o precis´ssemos tanto c˜ a a usar os dons de Sherlock Holmes para corrigir programas. Infelizmente (ou ser´ feliza mente ??) tal n˜o ocorre, e um programador profissional gasta mais de 50% do seu a tempo procurando e corrigindo erros em programas. ´ ` E tarefa dif´ ıcil, sutil, complexa e delicada. As vezes um ponto fora do lugar p˜e a o ´ a perder um imenso projeto. E t˜o importante a tarefa que se diz que bom programador n˜o ´ aquele de programa bem, mas aquele que depura bem. A prop´sito, depurar ´ a e o e identificar, localizar e corrigir erros, de maneira continuada e integrada para produzir software de qualidade. O exerc´ de hoje, visa estimular esta habilidade. Vocˆ vai receber alguns c´digos e ıcio e o alguns resultados, e dever´ inferir quais as inicializa¸oes originais das vari´veis em cada a c˜ a c´digo. o Por exemplo, no algoritmo 1: fun¸ao EXEMPLO c˜ . 2: A ← 3: B ← 2 4: C ← 3 5: enquanto A < 10 fa¸a c 6: se (B mod 3) = 0 ent˜o a 7: A←A+1 8: sen˜o a 9: A←A+2 10: fimse 11: se (C mod 4) = 0 ent˜o a 12: B←B+2 13: sen˜o a 14: A←A+1 15: fimse 16: imprima A, B, C 17: fimenquanto Analisando as sa´ ıdas, que s˜o: a 423 317 2 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: fun¸ao A2 c˜ . A← B←9 C ← 11 enquanto (C = 0) ∧ (C = 1) fa¸a c se (B mod 5) = 0 ent˜o a B←B-1 fimse se (A mod 3) = 0 ent˜o a A←A+1 fimse se (A > B) ent˜o a A←A+2 fimse C←C-1 318 vers˜o de 10 de fevereiro de 2008 a 88-08, Pedro Kantek Pedro Kantek 320 vers˜o de 10 de fevereiro de 2008 a . vocˆ deve dizer qual o valor inicial da e vari´vel A. A← B ← 15 C ← 13 enquanto (A>10) ∨ (B>10) ∨ (C>10) fa¸a c se A > B ent˜o a C←C-1 fimse se (B mod 3) = 1 ent˜o a A←A-1 fimse 319 88-08. C 13: fimenquanto Esta execu¸ao deu como resultado c˜ 7 5 11 8 3 11 9 1 11 10 -1 11 11 -3 11 12 -5 11 11 -7 11 1: 2: 4 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: fun¸ao A4 c˜ . C 16: A←A-1 17: B←B-1 18: C←C-2 19: fimenquanto Esta execu¸ao deu como resultado c˜ 11 15 13 10 14 11 8 13 9 7 12 7 6 11 5 12: 13: 13 15 18 21 24 27 30 33 36 39 imprima A.ENGENHARIA REVERSA se C > B ent˜o a B←B-3 14: fimse 15: imprima A. B←3 4: C ← 5 5: repita 6: A←A+1 7: B←B+1 8: C←C+1 9: enquanto C > 10 fa¸a c 10: C←C-2 11: fimenquanto 12: se (C = 3) ∨ (B = 2) ent˜o a 13: A←A+2 14: fimse 15: imprima A. C 16: at´ (A + B + C ) > 30 e Esta execu¸ao deu como resultado c˜ 646 957 12 6 8 15 7 9 1: 2: 3: Respostas Escreva aqui os valores presumidos para as 4 vari´veis “A” de cada um dos a 4 algoritmos 1 2 3 4 27. C fimenquanto Esta execu¸ao deu como resultado c˜ 8 10 79 68 57 56 55 54 53 52 51 3 fun¸ao A3 c˜ A← .3 Exerc´ ıcio 2 A seguir. Em cada um deles.´ CAP´ ITULO 27. a 1 fun¸ao A1 c˜ . B. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 88-08. diversos algoritmos. B. EXERC´ ICIOS PRATICOS: 062 . B.ENGENHARIA REVERSA 16: 17: ´ CAP´ ITULO 27. A← 3: B ← 7 4: C ← 11 5: enquanto (A + B) > 4 fa¸a c 6: se A > C ent˜o a 7: A←A-1 8: sen˜o a 9: A←A+1 10: fimse 11: B←B-2 12: imprima A. EXERC´ ICIOS PRATICOS: 062 . B. A← B ← 10 C←9 enquanto (C = 0) ∧ (C = 1) fa¸a c se (B mod 5) = 0 ent˜o a B←B-1 fimse se (A mod 3) = 0 ent˜o a A←A+1 fimse se (A > B) ent˜o a A←A+2 fimse C←C-1 imprima A. C 322 vers˜o de 10 de fevereiro de 2008 a 321 88-08.4 Exerc´ ıcio 3 A seguir. a 1 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: Esta execu¸ao deu como resultado c˜ 736 10 4 7 13 5 8 16 6 9 vers˜o de 10 de fevereiro de 2008 a fun¸ao A1 c˜ A← . Pedro Kantek . C fimenquanto Esta execu¸ao deu como resultado c˜ 10 8 10 7 10 6 10 5 10 4 10 3 10 2 10 1 4 fun¸ao A4 c˜ .ENGENHARIA REVERSA 2 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: ´ CAP´ ITULO 27.ENGENHARIA REVERSA fun¸ao A2 c˜ . Em cada um deles. diversos algoritmos. EXERC´ ICIOS PRATICOS: 062 . C 16: A←A-1 17: B←B-1 18: C←C-2 19: fimenquanto Esta execu¸ao deu como resultado c˜ 12 9 13 11 5 10 1: 2: 16 18 21 24 27 30 33 36 Respostas Escreva aqui os valores presumidos para as 4 vari´veis “A” de cada um dos a 4 algoritmos 3 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 1 2 3 4 fun¸ao A3 c˜ A← . A← 3: B ← 12 4: C ← 13 5: enquanto (A>10) ∨ (B>10) ∨ (C>10) fa¸a c 6: se A > B ent˜o a 7: C←C-1 8: fimse 9: se (B mod 3) = 1 ent˜o a 10: A←A-1 11: fimse 12: se C > B ent˜o a 13: B←B-3 14: fimse 15: imprima A.´ CAP´ ITULO 27. B. vocˆ deve dizer qual o valor inicial da e vari´vel A. B. B. B←8 C←9 enquanto (A + B) > 4 fa¸a c se A > C ent˜o a A←A-1 sen˜o a A←A+1 fimse B←B-2 imprima A. B. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 062 . C at´ (A + B + C ) > 30 e 27. B←2 C←5 repita A←A+1 B←B+1 C←C+1 enquanto C > 10 fa¸a c C←C-2 fimenquanto se (C = 3) ∨ (B = 2) ent˜o a A←A+2 fimse imprima A. C 16: A←A-1 17: B←B-1 18: C←C-2 19: fimenquanto Esta execu¸ao deu como resultado c˜ 15 14 14 13 13 11 12 12 9 11 11 7 1: 2: 3 1: 2: 3: 4: 5: 6: 7: 8: 9: fun¸ao A3 c˜ .ENGENHARIA REVERSA fimenquanto Esta execu¸ao deu como resultado c˜ 769 849 929 10 0 9 9 -2 9 10 -4 9 9 -6 9 13: 10: ´ CAP´ ITULO 27. B.ENGENHARIA REVERSA C←C-2 fimenquanto 12: se (C = 3) ∨ (B = 2) ent˜o a 13: A←A+2 14: fimse 15: imprima A. 3: B ← 14 4: C ← 15 5: enquanto (A>10) ∨ (B>10) ∨ (C>10) fa¸a c 6: se A > B ent˜o a 7: C←C-1 8: fimse 9: se (B mod 3) = 1 ent˜o a 10: A←A-1 11: fimse 12: se C > B ent˜o a 13: B←B-3 14: fimse 15: imprima A. B. Pedro Kantek Respostas Escreva aqui os valores presumidos para as 4 vari´veis “A” de cada um dos a 4 algoritmos 1 2 3 4 27.5 1 Respostas 5 11 3 11 324 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08. C 16: at´ (A + B + C ) > 30 e Esta execu¸ao deu como resultado c˜ 843 11 5 4 14 6 5 17 7 6 20 8 7 11: 2 fun¸ao A2 c˜ . B. A← B←3 C←2 repita A←A+1 B←B+1 C←C+1 enquanto C > 10 fa¸a c 323 88-08. C 17: fimenquanto Esta execu¸ao deu como resultado c˜ 13 8 9 15 7 8 18 6 7 21 5 6 24 5 5 27 5 4 30 5 3 33 5 2 36 5 1 1: 2: 4 fun¸ao A4 c˜ A← . EXERC´ ICIOS PRATICOS: 062 . Pedro Kantek .´ CAP´ ITULO 27. A← 3: B ← 9 4: C ← 10 5: enquanto (C = 0) ∧ (C = 1) fa¸a c 6: se (B mod 5) = 0 ent˜o a 7: B←B-1 8: fimse 9: se (A mod 3) = 0 ent˜o a 10: A←A+1 11: fimse 12: se (A > B) ent˜o a 13: A←A+2 14: fimse 15: C←C-1 16: imprima A. EXERC´ ICIOS PRATICOS: 062 . ´ CAP´ ITULO 27. Pedro Kantek 88-08. Pedro Kantek 326 vers˜o de 10 de fevereiro de 2008 a .ENGENHARIA REVERSA vers˜o de 10 de fevereiro de 2008 a 325 88-08.ENGENHARIA REVERSA 2 3 6 6 14 11 4 5 12 15 ´ CAP´ ITULO 27. EXERC´ ICIOS PRATICOS: 062 . EXERC´ ICIOS PRATICOS: 062 . O.L←1. C←2.Y.1 1 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: Exerc´ ıcio 1 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: fun¸ao programa11 c˜ inteiro A.T. T←2.R.P←3 H←2.´ CAP´ ITULO 28.L A←1. F←3.C. T←1. ENQUANTO.D. W←3. a enquanto.S←3 Q←2.T.N←3.G.B. X←1.H. repita 28. C←3.G.E.Se.V A←2.I.P. B←3. M←3.U←2 V←1. B←1.G←1 R←3 I←2 V←2 D←8 se D=4 ent˜o a P←1 repita H←2 enquanto H≤8 fa¸a c C←3 se C=3 ent˜o a M←M+3 T←T+2 sen˜o a E←E+3 O←O+C+2 K←K+A+1 X←X+D+3 Y←Y+D+1 fimse H←H+1 fimenquanto P←P+1 at´ P>6 e sen˜o a N←3 enquanto N<8 fa¸a c G←2 enquanto G<5 fa¸a c R←R+B+1 I←I+1 V←V+3 G←G+2 fimenquanto N←N+1 fimenquanto fimse imprima K+P+M+V fimfun¸ao c˜ 3 1: fun¸ao programa13 c˜ 328 vers˜o de 10 de fevereiro de 2008 a 88-08.K inteiro X.U.G←3.SE.V.C.D←3.D.D←2. Y←2. I←1.B.E←2.M.O←3 K←3. REPITA 32: 33: imprima L+Q+G+U fimfun¸ao c˜ 2 Cap´ ıtulo 28 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: Exerc´ ıcios Pr´ticos: 065 .I.U←2 repita V←1 enquanto V<7 fa¸a c C←2 se C=4 ent˜o a T←2 enquanto T<2 fa¸a c I←I+2 G←G+3 S←S+A+3 T←T+1 fimenquanto sen˜o a Q←3 repita F←F+D+3 W←W+1 L←L+2 Q←Q+2 at´ Q≥9 e fimse V←V+1 fimenquanto U←U+1 at´ U>5 e 327 fun¸ao programa12 c˜ inteiro A.W.N.Q inteiro F. EXERC´ ICIOS PRATICOS: 065 .S. Pedro Kantek . C.D.´ CAP´ ITULO 28.U.V←3 P←2.F←3.Q.B.Z.D.D←1. EXERC´ ICIOS PRATICOS: 065 . EXERC´ ICIOS PRATICOS: 065 . U←1.S.2 1 1: Exerc´ ıcio 2 fun¸ao programa11 c˜ 330 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08.Y A←2. Z←2.P. ENQUANTO.R.N.H←3 K←3.A←5 se A=3 ent˜o a S←2 enquanto S≤3 fa¸a c Q←2 enquanto Q<8 fa¸a c U←3 enquanto U<3 fa¸a c Z←Z+3 F←F+1 V←V+B+3 U←U+2 fimenquanto Q←Q+2 fimenquanto S←S+2 fimenquanto sen˜o a P←1 repita I←1 repita O←2 repita K←3 repita K←K+1 at´ K≥8 e O←O+2 at´ O≥9 e I←I+2 at´ I≥2 e P←P+1 at´ P≥6 e fimse imprima Z+D+I+F fimfun¸ao c˜ A←8 se A>6 ent˜o a A←7 se A>9 ent˜o a Z←1 repita V←3 enquanto V≤2 fa¸a c D←8 se D≤9 ent˜o a W←W+B+1 F←F+A+1 N←N+C+3 H←H+C+2 K←K+1 sen˜o a S←S+B+2 R←R+D+3 I←I+A+1 P←P+B+1 Q←Q+2 fimse V←V+1 fimenquanto Z←Z+1 at´ Z≥8 e fimse sen˜o a B←7 se B=9 ent˜o a E←2 repita Y←2 repita Y←Y+2 at´ Y≥2 e E←E+2 at´ E>8 e fimse fimse imprima K+B+F+P fimfun¸ao c˜ 1 2 3 4 4 1: 2: 3: 4: 5: 6: 7: 8: 9: fun¸ao programa14 c˜ inteiro A. S←3.Z←1 V←2.K←1. B←1.D←1.K A←3.Z.E. C←3. C←3.S←3 Q←1.V.N←2. O←3.P inteiro I. REPITA 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: ´ CAP´ ITULO 28. ENQUANTO.V.H. B←3.SE.F. W←1.Q.K inteiro S. F←2.SE.F. REPITA 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: inteiro A.O.P←2 Q←3 E←1 Y←3 329 88-08. I←3.I.C.B.W.I←1. R←3. Pedro Kantek . Pedro Kantek Respostas 28. B.I. Pedro Kantek fun¸ao programa13 c˜ inteiro A.G.Q.T.D.V←3.J A←3. B←3. H←2. Q←1. REPITA 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: inteiro A.D←3.K←1.M. ENQUANTO.D←2.N.B.M←2 repita S←2 enquanto S≤8 fa¸a c C←1 se C>7 ent˜o a V←2 enquanto V<1 fa¸a c Q←Q+D+3 Z←Z+A+1 T←T+A+3 V←V+1 fimenquanto sen˜o a H←3 repita K←K+C+1 I←I+D+1 J←J+B+3 H←H+2 at´ H>7 e fimse S←S+1 fimenquanto M←M+1 at´ M>9 e imprima T+A+Z+H fimfun¸ao c˜ I←I+A+1 sen˜o a P←P+B+1 V←V+2 E←E+3 F←F+1 H←H+1 fimse R←R+1 fimenquanto K←K+1 at´ K≥8 e sen˜o a G←2 enquanto G<5 fa¸a c L←2 enquanto L<7 fa¸a c M←M+A+2 J←J+B+2 S←S+1 L←L+2 fimenquanto G←G+1 fimenquanto fimse imprima F+E+J+B fimfun¸ao c˜ 3 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 2 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: fun¸ao programa12 c˜ inteiro A.D.P. K←3.Z←2.D←1. Pedro Kantek .E. R←2.L←2 M←2 J←1 S←3 A←5 se A=1 ent˜o a K←2 repita R←1 enquanto R≤4 fa¸a c A←4 se A≤8 ent˜o a X←X+B+3 331 88-08.X. EXERC´ ICIOS PRATICOS: 065 .´ CAP´ ITULO 28.D.H.C.H inteiro K.X inteiro R.P←2. REPITA 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: ´ CAP´ ITULO 28.S.V.C.C←4 se C<6 ent˜o a M←2 enquanto M<9 fa¸a c U←3 enquanto U<2 fa¸a c N←3 enquanto N≤6 fa¸a c J←J+1 V←V+3 E←E+3 N←N+2 fimenquanto U←U+2 fimenquanto M←M+2 fimenquanto sen˜o a 332 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08.SE. V←1.G←3. I←2. ENQUANTO. B←3.U. B←2. F←3.Z. X←3. I←1.I.K←2 R←3. C←3. C←2.L.K A←2.J←2.M←2 U←3.R.S A←1. N←2.V.SE.E inteiro F.B.C. J←2.I.T←3 H←3. C←1.M. EXERC´ ICIOS PRATICOS: 065 .M←2 S←2. I←3.K.E←3 X←3.V←1 E←3.J.J.M.V. Z inteiro X. C←1. F←2.V A←2.S.D←2.F.K.V.C.N←3 F←2.SE.E←1 repita M←1 enquanto M≤7 fa¸a c D←3 se D<1 ent˜o a F←3 enquanto F<1 fa¸a c L←L+C+3 G←G+C+1 Y←Y+A+1 F←F+2 fimenquanto sen˜o a N←3 repita X←X+A+3 K←K+B+1 334 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08.Y.G←3.3 1 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: Exerc´ ıcio 3 fun¸ao programa11 c˜ inteiro A.M←3.Y A←2. X←2.E←1 M←1. X←2.C. K←3.V←2.W.E. V←3. EXERC´ ICIOS PRATICOS: 065 .I. B←2. REPITA 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: X←3 repita R←3 repita I←3 repita K←3 repita K←K+2 at´ K>7 e I←I+1 at´ I≥8 e R←R+2 at´ R≥8 e X←X+2 at´ X≥4 e fimse imprima M+K+C+R fimfun¸ao c˜ F←F+2 fimenquanto N←N+1 at´ N≥4 e fimse sen˜o a C←4 se C=4 ent˜o a S←2 repita Y←2 repita Y←Y+2 at´ Y>2 e S←S+2 at´ S≥8 e fimse fimse imprima Z+O+D+Y fimfun¸ao c˜ 1 2 3 4 4 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: fun¸ao programa14 c˜ inteiro A. O←3. B←1.SE.I←2 W←3 S←2 Y←1 C←3 se C≥7 ent˜o a C←5 se C≥3 ent˜o a N←2 repita F←2 enquanto F≤8 fa¸a c D←8 se D=1 ent˜o a V←V+3 H←H+1 G←G+D+3 E←E+1 Z←Z+D+1 sen˜o a X←X+C+1 O←O+3 M←M+3 I←I+2 W←W+2 fimse 333 88-08.L.O.D.F. Pedro Kantek Respostas 28.D←3.E←1 Z←1.M.´ CAP´ ITULO 28.Y←1 N←3. REPITA 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: ´ CAP´ ITULO 28.G. Pedro Kantek .N inteiro X.D. EXERC´ ICIOS PRATICOS: 065 .E. C←1. ENQUANTO.G.B.H.M.G←2. L←2.N.B. ENQUANTO. H←1. D←3 se D<7 ent˜o a P←3 enquanto P<9 fa¸a c N←3 enquanto N<2 fa¸a c U←3 enquanto U≤6 fa¸a c M←M+A+1 Y←Y+1 I←I+1 U←U+2 fimenquanto N←N+2 fimenquanto P←P+2 fimenquanto sen˜o a V←3 repita F←2 repita H←3 repita S←2 repita S←S+1 at´ S≥4 e H←H+2 at´ H>9 e F←F+1 at´ F≥6 e V←V+2 at´ V≥3 e fimse imprima V+M+A+D fimfun¸ao c˜ 4 1: fun¸ao programa14 c˜ 336 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 88-08.B.N. F←3.F←2 U←3 Q←2 W←2 D←5 se D=6 ent˜o a N←2 repita M←3 enquanto M≤7 fa¸a c D←5 se D≤6 ent˜o a O←O+2 I←I+1 sen˜o a J←J+2 G←G+B+2 K←K+C+1 P←P+1 E←E+1 fimse M←M+2 fimenquanto N←N+1 at´ N≥9 e sen˜o a T←3 enquanto T<5 fa¸a c F←2 enquanto F≤3 fa¸a c U←U+B+2 Q←Q+C+2 W←W+3 F←F+1 fimenquanto 335 88-08.H.M.N. P←2.J.S←3.D.O.I.T.S A←1. U←3.C. E←1.D←3.J←2. M←1.C.SE.G←1 K←2. H←1.V inteiro F. Pedro Kantek .Q.K inteiro P.G.T←2.N←3 M←1. C←2.Y←2. I←2.I.U.I←1 V←2.W A←2.SE.B.U.D. REPITA T←T+1 fimenquanto 43: fimse 44: imprima I+P+C+J 45: fimfun¸ao c˜ 41: 42: V←V+C+2 N←N+1 at´ N>3 e fimse M←M+2 fimenquanto E←E+1 at´ E≥2 e imprima M+K+C+F fimfun¸ao c˜ 3 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 2 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: fun¸ao programa12 c˜ inteiro A. EXERC´ ICIOS PRATICOS: 065 . REPITA 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: ´ CAP´ ITULO 28.F.Y.P←1 N←1. EXERC´ ICIOS PRATICOS: 065 .D←2. ENQUANTO. ENQUANTO. Pedro Kantek fun¸ao programa13 c˜ inteiro A.M. C←3.´ CAP´ ITULO 28. O←3. B←2.E.P. B←2. O←3 J←2 N←1 K←3 C←8 se C≥8 ent˜o a D←7 se D=6 ent˜o a X←1 repita T←3 enquanto T<3 fa¸a c D←4 se D≤4 ent˜o a Y←Y+D+3 L←L+1 I←I+2 H←H+D+1 Z←Z+2 sen˜o a Q←Q+2 U←U+3 M←M+3 O←O+2 J←J+3 fimse T←T+1 fimenquanto X←X+2 at´ X≥1 e fimse sen˜o a B←8 se B<3 ent˜o a N←3 repita K←1 repita K←K+1 at´ K≥6 e N←N+2 at´ N≥7 e fimse fimse imprima Y+D+X+Q fimfun¸ao c˜ Respostas 28. Pedro Kantek 338 vers˜o de 10 de fevereiro de 2008 a .Z inteiro Q.M.K A←2.U.L.C. REPITA 1 2 3 4 inteiro A.H←3 Z←2. Pedro Kantek 88-08.I.D←1.X.D.I←3. L←1. EXERC´ ICIOS PRATICOS: 065 . ENQUANTO. B←2. Y←3.M←2.4 1 2 3 Respostas 12 17 23 41 10 9 9 17 7 8 11 14 vers˜o de 10 de fevereiro de 2008 a 337 88-08.SE. ENQUANTO.X←1 T←2.B. EXERC´ ICIOS PRATICOS: 065 . REPITA 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: ´ CAP´ ITULO 28.Y.N.T.H.´ CAP´ ITULO 28. Q←1. C←1.J. U←2.SE.O. 1 Exerc´ ıcio 1 A seguir existem 4 algoritmos que foram gerados de maneira aleat´ria.´ CAP´ ITULO 29.4 a algoritmos 29.4 ALGORITMOS Algoritmo 2 1: Algoritmo 2 2: inteiro F. I. P 3: K ← 10 4: L ← 1 5: M ← 7 6: N ← −9 7: P ← 20 8: enquanto (K ≥ −4) fa¸a c 9: L←L+1 10: se (N ≤ −3) ent˜o a 11: enquanto (M ≤ 12) fa¸a c 12: M ←M +6 13: fimenquanto 14: M ←M +1 15: fimse 16: K ←K −3 17: N ←N +1 18: P ←P +2−K 19: enquanto (N mod 3 = 0) fa¸a c 20: N ←N +1 21: fimenquanto 22: fimenquanto 23: imprima (K + L + M + N + P ) Algoritmo 4 339 88-08. N. L. n˜o entram em loop. C. EXERC´ ICIOS PRATICOS: 069 . Execute os testes de mesa pedidos e ao final calcule as 4 somas a pedidas. J 3: F ← −1 4: G ← −3 5: H ← 14 6: I ← −6 7: J ← 12 8: enquanto ((H + J) ≤ (3 × J)) fa¸a c 9: se (F < 1) ent˜o a 10: G ←G+1 11: fimse 12: enquanto ((F > 4) ∨ (G ≤ 16)) fa¸a c 13: G ←G+2 14: F ←F −2 15: se (I > 13) ent˜o a 16: J ←J +3−F 17: fimse 18: fimenquanto 19: H ←H +3 20: fimenquanto 21: imprima (F + G + H + I + J) SOMA = (F+G+H+I+J) Cap´ ıtulo 29 Exerc´ ıcios Pr´ticos: 069 . D. geram valores perfeitamente determinados e todos tˆm a e complexidade aceit´vel. Algoritmo 1 1: Algoritmo 1 2: inteiro A. G. E 3: A ← 5 4: B ← 3 5: C ← 0 6: D ← 16 7: E ← 17 8: enquanto (D > 0) fa¸a c 9: se (A < −7) ent˜o a 10: B ←B+1 11: fimse 12: enquanto (A > (−4 − 6)) fa¸a c 13: B ←A+B+2 14: A ←A−2 15: E ←E+7 16: se (D > (E − 13)) ent˜o a 17: C ← C + −1 18: fimse 19: fimenquanto 20: D ←D−4 21: fimenquanto 22: imprima (A + B + C + D + E) SOMA = (A+B+C+D+E) Algoritmo 3 1: Algoritmo 3 2: inteiro K. H. Todos est˜o o a corretos. M. B. Pedro Kantek 340 vers˜o de 10 de fevereiro de 2008 a . ´ CAP´ ITULO 29. E 3: A ← 1 4: B ← −5 5: C ← 7 6: D ← 11 7: E ← −3 8: enquanto (D > 0) fa¸a c 9: se (A < −1) ent˜o a 10: B ←B+1 11: fimse 12: enquanto (A > (−6 − 6)) fa¸a c 13: B ←A+B+2 14: A ←A−2 vers˜o de 10 de fevereiro de 2008 a Algoritmo 2 1: Algoritmo 2 2: inteiro F. G. H.2 Exerc´ ıcio 2 A seguir existem 4 algoritmos que foram gerados de maneira aleat´ria. N. T. Pedro Kantek 88-08. R. L. Algoritmo 1 1: Algoritmo 1 2: inteiro A. n˜o entram em loop. P 3: K ← 16 4: L ← −2 5: M ← 12 6: N ← 8 7: P ← 15 8: enquanto (K ≥ 0) fa¸a c 9: L←L+1 10: se (N ≤ 17) ent˜o a 11: enquanto (M ≤ −3) fa¸a c 12: M ←M +6 13: fimenquanto 341 88-08.4 ALGORITMOS SOMA = 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: ´ CAP´ ITULO 29. C.4 ALGORITMOS 15: 16: 17: 18: 19: 20: 21: 22: (K+L+M+N+P) Algoritmo 4 inteiro Q. EXERC´ ICIOS PRATICOS: 069 . I. EXERC´ ICIOS PRATICOS: 069 . Execute os testes de mesa pedidos e ao final calcule as 4 somas a pedidas. Todos est˜o o a corretos. Pedro Kantek 342 vers˜o de 10 de fevereiro de 2008 a . J 3: F ← 17 4: G ← 0 5: H ← −9 6: I ← 2 7: J ← 14 8: enquanto ((H + J) ≤ (3 × J)) fa¸a c 9: se (F < 20) ent˜o a 10: G ←G+1 11: fimse 12: enquanto ((F > 3) ∨ (G ≤ −5)) fa¸a c 13: G ←G+2 14: F ←F −2 15: se (I > 5) ent˜o a 16: J ←J +3−F 17: fimse 18: fimenquanto 19: H ←H +3 20: fimenquanto 21: imprima (F + G + H + I + J) SOMA = (F+G+H+I+J) Algoritmo 3 1: Algoritmo 3 2: inteiro K. geram valores perfeitamente determinados e todos tˆm a e complexidade aceit´vel. S. U Q ← −1 R ← 13 S ← 18 T ←3 U ← −9 repita se (Q < −5) ent˜o a R ←R+1 fimse se (T > 11) ent˜o a S ←S+2 fimse enquanto (U ≤ 17) fa¸a c U ←U +4 se (S > 10) ent˜o a T ←T +1 fimse fimenquanto Q←Q+2 at´ ((Q > 0) ∨ (R = 0)) e imprima (Q + R + S + T + U ) (Q+R+S+T+U) E ← E + −7 se (D > (E − 0)) ent˜o a C ←C+8 fimse fimenquanto D ←D−4 fimenquanto imprima (A + B + C + D + E) (A+B+C+D+E) SOMA = SOMA = 29. M. D. B. Todos est˜o o a corretos. R. Pedro Kantek 88-08. Execute os testes de mesa pedidos e ao final calcule as 4 somas a pedidas. Pedro Kantek 344 vers˜o de 10 de fevereiro de 2008 a .´ CAP´ ITULO 29. G. C. D. I. Algoritmo 1 1: Algoritmo 1 vers˜o de 10 de fevereiro de 2008 a Algoritmo 2 1: Algoritmo 2 2: inteiro F.3 Exerc´ ıcio 3 A seguir existem 4 algoritmos que foram gerados de maneira aleat´ria. B. EXERC´ ICIOS PRATICOS: 069 . U 3: Q ← 6 4: R ← −1 5: S ← −3 6: T ← 11 7: U ← −9 8: repita 9: se (Q < 12) ent˜o a 10: R ←R+1 11: fimse 12: se (T > 17) ent˜o a 13: S ←S+2 14: fimse 15: enquanto (U ≤ 19) fa¸a c 16: U ←U +4 17: se (S > −5) ent˜o a 18: T ←T +1 19: fimse 20: fimenquanto 21: Q←Q+2 22: at´ ((Q > 0) ∨ (R = 0)) e 23: imprima (Q + R + S + T + U ) SOMA = (Q+R+S+T+U) 16: 17: 18: 19: 20: 21: 22: inteiro A. J 3: F ← 15 4: G ← 7 5: H ← 1 6: I ← 13 7: J ← 4 8: enquanto ((H + J) ≤ (3 × J)) fa¸a c 9: se (F < 16) ent˜o a 10: G ←G+1 11: fimse 12: enquanto ((F > 2) ∨ (G ≤ 18)) fa¸a c 13: G ←G+2 14: F ←F −2 15: se (I > 8) ent˜o a 16: J ←J +3−F 17: fimse 18: fimenquanto 19: H ←H +3 20: fimenquanto 21: imprima (F + G + H + I + J) SOMA = (F+G+H+I+J) Algoritmo 3 343 88-08. EXERC´ ICIOS PRATICOS: 069 . n˜o entram em loop. T. S. E A ← 14 B ← −4 C ← −1 D←3 E ← −5 enquanto (D > 0) fa¸a c se (A < 17) ent˜o a B ←B+1 fimse enquanto (A > (2 − 6)) fa¸a c B ←A+B+2 A ←A−2 E ← E + −3 se (D > (E − 20)) ent˜o a C ← C + 10 fimse fimenquanto D ←D−4 fimenquanto imprima (A + B + C + D + E) (A+B+C+D+E) SOMA = 29.4 ALGORITMOS 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: M ←M +1 fimse K ←K −3 N ←N +1 P ←P +2−K enquanto (N mod 3 = 0) fa¸a c N ←N +1 fimenquanto fimenquanto imprima (K + L + M + N + P ) (K+L+M+N+P) SOMA = Algoritmo 4 1: Algoritmo 4 2: inteiro Q. H.4 ALGORITMOS 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: ´ CAP´ ITULO 29. geram valores perfeitamente determinados e todos tˆm a e complexidade aceit´vel. Execute os testes de mesa pedidos e ao final calcule as 4 somas a pedidas. D. J 3: F ← 12 4: G ← 15 5: H ← −3 6: I ← −6 7: J ← 2 8: enquanto ((H + J) ≤ (3 × J)) fa¸a c 9: se (F < 17) ent˜o a 10: G ←G+1 11: fimse 12: enquanto ((F > −4) ∨ (G ≤ 1)) fa¸a c 13: G ←G+2 14: F ←F −2 345 88-08. L. EXERC´ ICIOS PRATICOS: 069 . S. U 3: Q ← 8 4: R ← −1 5: S ← 12 6: T ← −9 7: U ← −7 8: repita 9: se (Q < 14) ent˜o a 10: R ←R+1 11: fimse 12: se (T > 17) ent˜o a 13: S ←S+2 14: fimse 15: enquanto (U ≤ 18) fa¸a c 16: U ←U +4 17: se (S > 2) ent˜o a 18: T ←T +1 19: fimse 20: fimenquanto 21: Q←Q+2 22: at´ ((Q > 0) ∨ (R = 0)) e 23: imprima (Q + R + S + T + U ) vers˜o de 10 de fevereiro de 2008 a Algoritmo 2 1: Algoritmo 2 2: inteiro F.´ CAP´ ITULO 29. G. Algoritmo 1 1: Algoritmo 1 2: inteiro A. P K ← 13 L ← −9 M ←0 N ← 19 P ← 15 enquanto (K ≥ −1) fa¸a c L←L+1 se (N ≤ −4) ent˜o a enquanto (M ≤ 18) fa¸a c M ←M +6 fimenquanto M ←M +1 fimse K ←K −3 N ←N +1 P ←P +2−K enquanto (N mod 3 = 0) fa¸a c N ←N +1 fimenquanto fimenquanto imprima (K + L + M + N + P ) (K+L+M+N+P) 29. Pedro Kantek 88-08. M. E 3: A ← 3 4: B ← −2 5: C ← 20 6: D ← 11 7: E ← 1 8: enquanto (D > 0) fa¸a c 9: se (A < −4) ent˜o a 10: B ←B+1 11: fimse 12: enquanto (A > (−9 − 6)) fa¸a c 13: B ←A+B+2 14: A ←A−2 15: E ← E + −5 16: se (D > (E − 12)) ent˜o a 17: C ←C+7 18: fimse 19: fimenquanto 20: D ←D−4 21: fimenquanto 22: imprima (A + B + C + D + E) SOMA = (A+B+C+D+E) SOMA = Algoritmo 4 1: Algoritmo 4 2: inteiro Q. Pedro Kantek 346 vers˜o de 10 de fevereiro de 2008 a . T. R. EXERC´ ICIOS PRATICOS: 069 . B.4 Exerc´ ıcio 4 A seguir existem 4 algoritmos que foram gerados de maneira aleat´ria.4 ALGORITMOS SOMA = (Q+R+S+T+U) Algoritmo 3 inteiro K. geram valores perfeitamente determinados e todos tˆm a e complexidade aceit´vel. n˜o entram em loop. H. C. Todos est˜o o a corretos.4 ALGORITMOS 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: ´ CAP´ ITULO 29. I. N. U 3: Q ← −8 4: R ← 7 5: S ← 6 6: T ← −5 7: U ← −9 8: repita 9: se (Q < 14) ent˜o a 10: R ←R+1 11: fimse 12: se (T > −6) ent˜o a vers˜o de 10 de fevereiro de 2008 a 347 88-08.4 ALGORITMOS 15: 16: 17: 18: 19: 20: 21: ´ CAP´ ITULO 29. Pedro Kantek 348 vers˜o de 10 de fevereiro de 2008 a . T.4 ALGORITMOS 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: se (I > 8) ent˜o a J ←J +3−F fimse fimenquanto H ←H +3 fimenquanto imprima (F + G + H + I + J) (F+G+H+I+J) SOMA = S ←S+2 fimse enquanto (U ≤ 18) fa¸a c U ←U +4 se (S > −2) ent˜o a T ←T +1 fimse fimenquanto Q←Q+2 at´ ((Q > 0) ∨ (R = 0)) e imprima (Q + R + S + T + U ) (Q+R+S+T+U) Algoritmo 3 1: Algoritmo 3 2: inteiro K. P 3: K ← 16 4: L ← 6 5: M ← 5 6: N ← 13 7: P ← 19 8: enquanto (K ≥ 7) fa¸a c 9: L←L+1 10: se (N ≤ 17) ent˜o a 11: enquanto (M ≤ 12) fa¸a c 12: M ←M +6 13: fimenquanto 14: M ←M +1 15: fimse 16: K ←K −3 17: N ←N +1 18: P ←P +2−K 19: enquanto (N mod 3 = 0) fa¸a c 20: N ←N +1 21: fimenquanto 22: fimenquanto 23: imprima (K + L + M + N + P ) SOMA = (K+L+M+N+P) SOMA = 29. EXERC´ ICIOS PRATICOS: 069 . N.´ CAP´ ITULO 29.5 1 2 3 4 Respostas 67 -27 121 -4 32 76 16 32 48 36 32 50 61 47 41 31 Algoritmo 4 1: Algoritmo 4 2: inteiro Q. L. S. M. EXERC´ ICIOS PRATICOS: 069 . Pedro Kantek 88-08. R. ue e a 88-08. Holmes. ue e a Seq¨ˆncia 11 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((x + I)3 ) × y 3: fimpara Para a seq¨ˆncia 2401 3584 5103 7000 9317 12096 15379 19208 23625 28672. EXERC´ ICIOS PRATICOS: 073 . mas faltam a e nele certos parˆmetros (x. Naturalmente. cujos valores ser˜o inteiros e sempre estar˜o entre a a a 2 e 7. pode-se ver que o 10o valor da ue seq¨ˆncia ´ 169. j´ que x = 3. ue e a Seq¨ˆncia 10 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((x + I)2 ) × y 3: fimpara Para a seq¨ˆncia 180 245 320 405 500 605 720 845 980 1125. Depois disso. O programa ´ apresentado.´ ´ CAP´ ITULO 30. vocˆ deve responder qual ser´ o d´cimo valor. s˜o apresentadas diversas seq¨ˆncias de 7 n´ meros. pode-se ver que o ue 10o valor da seq¨ˆncia ´ 4913. inclusive. pode-se ver que o 10o ue valor da seq¨ˆncia ´ 3600. e a 1: Seq¨ˆncia 2 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima x + (I 3 ) 3: fimpara Para a seq¨ˆncia 4 11 30 67 128 219 346 515 732 1003. pode-se ver que o 10o valor da ue seq¨ˆncia ´ 1024. S. devem estar os seguintes. meu caro Watson. ue e a Seq¨ˆncia 8 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((I 2 ) + x) × y 3: fimpara Para a seq¨ˆncia 12 18 28 42 60 82 108 138 172 210. ue e a 1: 2: Cap´ ıtulo 30 Exerc´ ıcios Pr´ticos: 073 a achar o d´cimo termo e Elementar. ue e a Seq¨ˆncia 9 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((I 3 ) + x) × y 3: fimpara Para a seq¨ˆncia 15 50 145 330 635 1090 1725 2570 3655 5010. j´ que x = 5 e y = 5. vocˆ deve inferir ue e tais valores. j´ que x = 6 e y = 7. pode-se ver ue que o 10o valor da seq¨ˆncia ´ 28672.ACHAR O DECIMO TERMO para I de 1 at´ 10 fa¸a e c imprima (x + I)3 3: fimpara Para a seq¨ˆncia 512 729 1000 1331 1728 2197 2744 3375 4096 4913. pode-se ver que o 10o valor da ue seq¨ˆncia ´ 210. ue e a Seq¨ˆncia 3 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima (x + I)2 3: fimpara Para a seq¨ˆncia 16 25 36 49 64 81 100 121 144 169. pode-se ver que o 10o ue valor da seq¨ˆncia ´ 8000. j´ que x = 3. ue e a Seq¨ˆncia 6 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima (x × I)3 3: fimpara Para a seq¨ˆncia 8 64 216 512 1000 1728 2744 4096 5832 8000. j´ que x = 5 e y = 2. pode-se ver que o 10o valor da ue seq¨ˆncia ´ 1003. a seq¨ˆncia j´ impressa deve ser verificada (preferencialmente ue a pelo computador). ue e a e Seq¨ˆncia 1 ue para I de 1 at´ 10 fa¸a e c 2: imprima x + (I 2 ) 3: fimpara Para a seq¨ˆncia 5 8 13 20 29 40 53 68 85 104. Pelo aspecto da seq¨ˆncia e do programa mostrado. pode-se ver que o 10o valor ue da seq¨ˆncia ´ 1125. Pedro Kantek 30. j´ que x = 7. j´ que x = 2. Para cada seq¨ˆncia.1 Exemplos Para este exerc´ ıcio. j´ que x = 4. y e z). a ue u elas s˜o objeto de um programa de computador. j´ que x = 6. j´ que x = 2. Estando os 7 primeiros valores corretos. j´ que x = 2 e y = 5. pode-se ver que o 10o valor da seq¨ˆncia ue ue ´ 104. Seq¨ˆncia 5 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima (x × I)2 3: fimpara Para a seq¨ˆncia 36 144 324 576 900 1296 1764 2304 2916 3600. ue e a Seq¨ˆncia 4 ue 349 350 vers˜o de 10 de fevereiro de 2008 a . ue e a Seq¨ˆncia 7 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima xI 3: fimpara Para a seq¨ˆncia 2 4 8 16 32 64 128 256 512 1024. pode-se ver que o 10o ue valor da seq¨ˆncia ´ 5010. ´ ´ CAP´ ITULO 30. j´ que x = 2 e y = 6. pode-se ver que o 10o ue valor da seq¨ˆncia ´ 1578. j´ que x = 2 e y = 4. y = 4 e z = 5. j´ que x = 6. pode-se ver que o 10o ue valor da seq¨ˆncia ´ 4027.ACHAR O DECIMO TERMO Seq¨ˆncia 12 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((x + I)2 ) + y 3: fimpara Para a seq¨ˆncia 22 31 42 55 70 87 106 127 150 175. pode-se ver que o 10o valor da ue seq¨ˆncia ´ 421. ue e a Seq¨ˆncia 18 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima (((x + I)2 ) × y) + z 3: fimpara Para a seq¨ˆncia 255 346 451 570 703 850 1011 1186 1375 1578. ue e a Seq¨ˆncia 16 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((x + (I 2 )) × y) + z 3: fimpara Para a seq¨ˆncia 25 37 57 85 121 165 217 277 345 421. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a . pode-se ver que o 10o ue valor da seq¨ˆncia ´ 16384. pode-se ver que o 10o ue valor da seq¨ˆncia ´ 2750. y = 6 e z = 3. y = 3 e z = 2. j´ que x = 2. pode-se ver ue vers˜o de 10 de fevereiro de 2008 a ´ ´ CAP´ ITULO 30. pode-se ver que o 10o valor da ue seq¨ˆncia ´ 1030. y = 7 e z = 3. EXERC´ ICIOS PRATICOS: 073 . pode-se ver que o 10o valor da ue seq¨ˆncia ´ 2054. ue e a Seq¨ˆncia 20 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((xI ) + y) × z 3: fimpara Para a seq¨ˆncia 10 14 22 38 70 134 262 518 1030 2054. j´ que x = 5. ue e a Seq¨ˆncia 17 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((x + (I 3 )) × y) + z 3: fimpara Para a seq¨ˆncia 31 59 135 283 527 891 1399 2075 2943 4027. j´ que x = 6. j´ que x = 4.ACHAR O DECIMO TERMO que o 10o valor da seq¨ˆncia ´ 24579. Pedro Kantek 88-08. j´ que x = 3 e y = 6.2 Exerc´ ıcio 1 seq 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 v1 3 6 9 64 9 64 3 40 15 64 256 13 514 8 16 14 17 105 260 12 v2 6 13 16 125 36 512 9 55 50 100 500 20 731 14 32 23 52 135 504 18 v3 11 32 25 216 81 1728 27 80 145 144 864 29 1002 32 64 38 147 169 868 30 v4 18 69 36 343 144 4096 81 115 330 196 1372 40 1333 86 128 59 332 207 1376 54 v5 27 130 49 512 225 8000 243 160 635 256 2048 53 1730 248 256 86 637 249 2052 102 v6 38 221 64 729 324 13824 729 215 1090 324 2916 68 2199 734 512 119 1092 295 2920 198 352 v7 51 348 81 1000 441 21952 2187 280 1725 400 4000 85 2746 2192 1024 158 1727 345 4004 390 10o ? 351 88-08. ue e a Seq¨ˆncia 14 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima (xI ) + y 3: fimpara Para a seq¨ˆncia 8 10 14 22 38 70 134 262 518 1030. ue e a 30. ue e a Seq¨ˆncia 15 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima xI+y 3: fimpara Para a seq¨ˆncia 32 64 128 256 512 1024 2048 4096 8192 16384. ue e a Seq¨ˆncia 19 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima (((x + I)3 ) × y) + z 3: fimpara Para a seq¨ˆncia 2061 3075 4377 6003 7989 10371 13185 16467 20253 24579. ue e a Seq¨ˆncia 13 ue 1: para I de 1 at´ 10 fa¸a e c 2: imprima ((x + I)3 ) + y 3: fimpara Para a seq¨ˆncia 131 222 349 518 735 1006 1337 1734 2203 2750. y = 4 e z = 3. j´ que x = 4 e y = 6. EXERC´ ICIOS PRATICOS: 073 . pode-se ver que o 10o valor da ue seq¨ˆncia ´ 175. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 073 .ACHAR O DECIMO TERMO ´ ´ CAP´ ITULO 30. Pedro Kantek 354 vers˜o de 10 de fevereiro de 2008 a .´ ´ CAP´ ITULO 30.3 seq 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Exerc´ ıcio 2 v1 8 8 25 27 9 64 2 20 6 112 81 28 514 4 64 16 18 74 140 20 v2 11 15 36 64 36 512 4 32 20 175 192 39 731 6 128 25 53 100 325 28 v3 16 34 49 125 81 1728 8 52 58 252 375 52 1002 10 256 40 148 130 630 44 v4 23 71 64 216 144 4096 16 80 132 343 648 67 1333 18 512 61 333 164 1085 76 v5 32 132 81 343 225 8000 32 116 254 448 1029 84 1730 34 1024 88 638 202 1720 140 v6 43 223 100 512 324 13824 64 160 436 567 1536 103 2199 66 2048 121 1093 244 2565 268 v7 56 350 121 729 441 21952 128 212 690 700 2187 124 2746 130 4096 160 1728 290 3650 524 10o ? 30.5 seq 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Exerc´ ıcio 4 v1 3 7 9 64 36 27 2 35 16 144 1372 54 66 4 128 22 45 38 256 24 v2 6 14 16 125 144 216 4 56 30 196 2048 69 127 6 256 40 94 66 438 36 v3 11 33 25 216 324 729 8 91 68 256 2916 86 218 10 512 70 227 102 692 60 v4 18 70 36 343 576 1728 16 140 142 324 4000 105 345 18 1024 112 486 146 1030 108 v5 27 131 49 512 900 3375 32 203 264 400 5324 126 514 34 2048 166 913 198 1464 204 v6 38 222 64 729 1296 5832 64 280 446 484 6912 149 731 66 4096 232 1550 258 2006 396 v7 51 349 81 1000 1764 9261 128 371 700 576 8788 174 1002 130 8192 310 2439 326 2668 780 10o ? 30. EXERC´ ICIOS PRATICOS: 073 .ACHAR O DECIMO TERMO 30.4 seq 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Exerc´ ıcio 3 v1 5 6 25 64 4 64 3 28 42 98 81 30 127 7 16 35 20 348 85 49 v2 8 13 36 125 16 512 9 40 91 128 192 41 218 13 32 53 41 453 196 63 v3 13 32 49 216 36 1728 27 60 224 162 375 54 345 31 64 83 98 572 379 91 v4 20 69 64 343 64 4096 81 88 483 200 648 69 514 85 128 125 209 705 652 147 v5 29 130 81 512 100 8000 243 124 910 242 1029 86 731 247 256 179 392 852 1033 259 v6 40 221 100 729 144 13824 729 168 1547 288 1536 105 1002 733 512 245 665 1013 1540 483 353 v7 53 348 121 1000 196 21952 2187 220 2436 338 2187 126 1333 2191 1024 323 1046 1188 2191 931 10o ? 2 3 4 900 16384 vers˜o de 10 de fevereiro de 2008 a 88-08.6 1 Respostas 102 1005 144 2197 900 64000 59049 4915 59054 8192 311 5012 519 8792 107 1007 196 1728 900 64000 1024 4915 1026 32768 313 5013 452 8645 104 1005 196 2197 400 64000 59049 59053 8192 629 3017 1797 5188 7203 102 1006 144 2197 3600 27000 1024 2199 1026 65536 616 7038 578 5494 535 5010 3078 416 2004 4108 424 7035 728 2014 6156 676 1183 512 8788 5184 5184 148 199 201 261 30. tamb´m conhecido como ıcio e e chinˆs.1 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: Exerc´ ıcio 1 Algoritmo 1 31.3 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: Algoritmo 3 Algoritmo U M cadeia C[80] inteiro I. Pedro Kantek 356 vers˜o de 10 de fevereiro de 2008 a .1.1 31. EXERC´ ICIOS PRATICOS: 077 .´ CAP´ ITULO 31.2 1: Algoritmo 2 O algoritmo TRES dever´ imprimir a Algoritmo DOIS 355 88-08. Vocˆ deve seguir os algoritmos com os dados de entrada fornecidos e ao final e e deve imprimir o resultado gerado pelo algoritmo. Todos os algoritmos est˜o corretos e a fazem alguma computa¸ao util. J I←2 enquanto I ≤ 6 fa¸a c leia V ET [I] I ++ fimenquanto I←3 enquanto (I ≤ 6) fa¸a c V ET [1] ← V ET [I] J ←I −1 enquanto (V ET [J] > V ET [1]) fa¸a c V ET [J + 1] ← V ET [J] J −− fimenquanto V ET [J + 1] ← V ET [1] I ++ fimenquanto imprima V ET [3] Para os dados 43 44 55 68 53 31. J leia(C) I←0 J ←1 enquanto I < 2 fa¸a c se C[J] = “ − ” ent˜o a I ++ fimse J ++ fimenquanto enquanto C[J] = “O” fa¸a c imprima C[J] J ++ fimenquanto Para os dados ONDE-ORA-SE-ADUNA-O-CONCILIO-GUERREIRO O algoritmo UM deve imprimir Algoritmo T RES inteiro V ET [6] inteiro I. I pontoflutuante M ED leia(V ET ) SOM A ← 0 I←1 enquanto I < 7 fa¸a c SOM A ← SOM A + V ET [I] I ++ fimenquanto M ED ← SOM A ÷ 6 I←1 enquanto (I < 7) fa¸a c se V ET [I] > (M ED − 5) ent˜o a imprima V ET [I] fimse I ++ fimenquanto Para os dados 117 190 121 108 167 198 O algoritmo DOIS dever´ imprimir a 31.1. c˜ ´ 19: inteiro V ET [6] inteiro SOM A.1.ALGORITMOS 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: Cap´ ıtulo 31 Exerc´ ıcios Pr´ticos: 077 a Algoritmos O objetivo deste exerc´ ´ o treinamento do ”teste de mesa”. J. Pedro Kantek 88-08.1 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: Exerc´ ıcio 2 Algoritmo 1 31.2. Pedro Kantek . I pontoflutuante M ED leia(V ET ) SOM A ← 0 I←1 enquanto I < 7 fa¸a c SOM A ← SOM A + V ET [I] I ++ fimenquanto M ED ← SOM A ÷ 6 I←1 enquanto (I < 7) fa¸a c se V ET [I] > (M ED − 2) ent˜o a imprima V ET [I] fimse I ++ fimenquanto Para os dados O algoritmo QUATRO dever´ imprimir a 154 142 112 120 173 114 O algoritmo DOIS dever´ imprimir a 31. I. LIN. EXERC´ ICIOS PRATICOS: 077 .ALGORITMOS ´ CAP´ ITULO 31.2 31.´ CAP´ ITULO 31. J I←2 enquanto I ≤ 6 fa¸a c leia V ET [I] I ++ fimenquanto I←3 enquanto (I ≤ 6) fa¸a c V ET [1] ← V ET [I] J ←I −1 enquanto (V ET [J] < V ET [1]) fa¸a c V ET [J + 1] ← V ET [J] J −− fimenquanto V ET [J + 1] ← V ET [1] I ++ fimenquanto imprima V ET [3] Para os dados 70 75 82 79 358 vers˜o de 10 de fevereiro de 2008 a 56 vers˜o de 10 de fevereiro de 2008 a 357 88-08.2. LIN.2 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: Algoritmo 2 Algoritmo QU AT RO inteiro M AT [4][5] inteiro C. J leia(C) I←0 J ←1 enquanto I < 2 fa¸a c se C[J] = “O” ent˜o a I ++ fimse J ++ fimenquanto enquanto C[J] = “A” fa¸a c imprima C[J] J ++ fimenquanto Para os dados AO-VELHO-COITADO-DE-PENAS-RALADO O algoritmo UM deve imprimir Algoritmo T RES inteiro V ET [6] inteiro I.3 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: Algoritmo 3 Algoritmo U M cadeia C[80] inteiro I. COL) I←1 enquanto I ≤ 4 fa¸a c J ←1 enquanto (J ≤ 5) fa¸a c M AT [I][J] ← C C ←C+9 J ++ fimenquanto I ++ fimenquanto imprima M AT [LIN ][COL] Solu¸˜o ca 1 2 2 19: Algoritmo DOIS inteiro V ET [6] inteiro SOM A.ALGORITMOS Algoritmo 4 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 31.2. COL leia (C. EXERC´ ICIOS PRATICOS: 077 . J leia(C) I←0 J ←1 enquanto I < 3 fa¸a c se C[J] = “ − ” ent˜o a I ++ fimse J ++ fimenquanto enquanto C[J] = “A” fa¸a c imprima C[J] J ++ fimenquanto Para os dados DOS-VENCIDOS-TAPUIAS-INDA-CHOREM O algoritmo UM deve imprimir Algoritmo T RES inteiro V ET [6] inteiro I. Pedro Kantek .2. EXERC´ ICIOS PRATICOS: 077 .3.ALGORITMOS O algoritmo TRES dever´ imprimir a ´ CAP´ ITULO 31.3 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: Algoritmo 3 Algoritmo U M cadeia C[80] inteiro I.4 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: Algoritmo 4 Algoritmo QU AT RO inteiro M AT [4][5] inteiro C. LIN. COL leia (C. I pontoflutuante M ED leia(V ET ) SOM A ← 0 I←1 enquanto I < 7 fa¸a c SOM A ← SOM A + V ET [I] I ++ fimenquanto M ED ← SOM A ÷ 6 I←1 enquanto (I < 7) fa¸a c se V ET [I] > (M ED + 3) ent˜o a imprima V ET [I] fimse I ++ fimenquanto Para os dados 169 186 105 179 160 187 O algoritmo DOIS dever´ imprimir a O algoritmo QUATRO dever´ imprimir a 31. Pedro Kantek 88-08.2 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: Algoritmo 2 31.ALGORITMOS 31.3 31.3. J.´ CAP´ ITULO 31.1 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: Exerc´ ıcio 3 Algoritmo 1 31. J I←2 enquanto I ≤ 6 fa¸a c leia V ET [I] I ++ fimenquanto I←3 enquanto (I ≤ 6) fa¸a c V ET [1] ← V ET [I] J ←I −1 enquanto (V ET [J] > V ET [1]) fa¸a c V ET [J + 1] ← V ET [J] J −− fimenquanto V ET [J + 1] ← V ET [1] I ++ fimenquanto imprima V ET [4] Para os dados 45 42 37 59 360 vers˜o de 10 de fevereiro de 2008 a 55 vers˜o de 10 de fevereiro de 2008 a 359 88-08. COL) I←1 enquanto I ≤ 4 fa¸a c J ←1 enquanto (J ≤ 5) fa¸a c M AT [I][J] ← C C ←C+7 J ++ fimenquanto I ++ fimenquanto imprima M AT [LIN ][COL] Para os dados 7 3 5 Algoritmo DOIS inteiro V ET [6] inteiro SOM A.3. EXERC´ ICIOS PRATICOS: 077 . I. LIN. LIN. COL) 5: I ← 1 6: enquanto I ≤ 4 fa¸a c 7: J ←1 8: enquanto (J ≤ 5) fa¸a c 9: M AT [I][J] ← C 10: C ←C+8 11: J ++ 12: fimenquanto 13: I ++ 14: fimenquanto 15: imprima M AT [LIN ][COL] Para os dados 4 2 5 ´ CAP´ ITULO 31. LIN.´ CAP´ ITULO 31.ALGORITMOS O algoritmo QUATRO dever´ imprimir a sectionRespostas 1 SE-ADUNA190 167 198 44 55 -COIT 154 142 173 79 105 IND 169 186 179 187 45 76 2 3 vers˜o de 10 de fevereiro de 2008 a 361 88-08. EXERC´ ICIOS PRATICOS: 077 . COL 4: leia (C.ALGORITMOS O algoritmo TRES dever´ imprimir a subsectionAlgoritmo 4 1: Algoritmo QU AT RO 2: inteiro M AT [4][5] 3: inteiro C. J. Pedro Kantek 362 vers˜o de 10 de fevereiro de 2008 a . Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 077 . I. CODMOV = ’I’) ent˜o a ”Erro: ”.NOME = “ ”) ent˜o a SAI. SAI 13: MOV ME 14: inteiro fun¸ao LECAD c˜ 15: leia ENT 16: se fim-de-arquivo ent˜o a 17: devolva 999999 18: sen˜o a 19: devolva ENT.DA.NOME ← ME.NOME fimse se (ME.CODIGO 20: fimse 21: fim {fun¸ao} c˜ 22: inteiro fun¸ao LEMOV c˜ 23: leia ME 24: se fim-de-arquivo ent˜o a 25: devolva 999999 26: sen˜o a 27: devolva ME.IDADE ← ME.00 ==== MOVIMENTO ==== A 2 22 531.DIVIDA ← ME.CODIGO.00 384.DA.CODMOV =’E’) ent˜o a ”Erro: ”.DA. ”nao existe p/ excluir” sen˜o a SAI.DA.DA.DA.DA.CODIGO. A ou E} 10: CAD DA 11: fim {estrutura} 12: CAD ENT.DIVIDA = 0.NOME ← ME.IDADE fimse se (ME. ME.CODIGO SAI.00 E 5 0 .0) ent˜o a SAI.DA.00 364 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIO PRATICO: 084 BALANCE LINE 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: Cap´ ıtulo 32 Exerc´ ıcio Pr´tico: 084 Balance a LIne 1. CM 31: CC ← LECAD 32: CM ← LEMOV 33: enquanto (CC = 999999 ∨ CM = 999999) fa¸a c 34: se (CC < CM) ent˜o a 363 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: SAI ← ENT imprima (SAI) CC ← LECAD sen˜o a se (CM < CC) ent˜o a se (ME.DIVIDA fimse imprime (SAI) fimse fimse CC ← LECAD CM ← LEMOV fimse fimse fimenquanto fim algoritmo 2. Considere o seguinte algoritmo 1: Algoritmo Balance Line 2: estrutura CAD 3: inteiro CODIGO {n´ mero da pessoa} u 4: cadeia NOME[12] 5: inteiro IDADE 6: pflutuante DIVIDA 7: fim {estrutura} 8: estrutura MOV 9: caracter CODMOV {pode ser I.DA.ME.DIVIDA ← ME.DA. ”nao existe para alterar” sen˜o a se (ME.NOME SAI.IDADE SAI.CODIGO 28: fimse 29: fim {fun¸ao} c˜ 30: inteiro CC.IDADE ← ME.CODIGO ← ME.00 259.DA.DA.”ja existente” SAI ← ENT imprima (SAI) sen˜o a se (ME.IDADE = 0) ent˜o a SAI. Considere os seguintes dados: ==== CADASTRO 4hugo 27 6kica 20 7antonio 23 8ana 23 88-08.00 E 8 0 .CODMOV = ’A’) ent˜o a ”Erro: ”.DA. Pedro Kantek ==== 826.00 E 7 0 .CODIGO.00 792.DIVIDA imprima (SAI) fimse fimse CM ← LEMOV sen˜o a se (ME. ME.CODMOV = ’A’) ent˜o a SAI ← ENT se (ME.´ CAP´ ITULO 32.DA. e ıda responda: 88-08.00 15 919. e ıda responda: Qual a linha numerada do cadastro de sa´ ? 7 ıda 21 28 Qual a mensagem de erro numerada ? 1 17 3.00 15 972.00 21 .00 855.00 A 31 23 927.00 18 1097.00 21 117.00 0 .00 17carmem 24 440.00 650.00 I A I E I E I I A 34 36 37 40 44 47 48 49 50 29 1075.00 18 466.00 .00 4.00 15 602.00 685.00 10kica 18 764.00 0 .00 740.00 E 27 0 .00 24 .00 537.00 27paula 18 767.00 2jose 18 736.00 23 444.00 19 296.00 19 .00 18 .00 16 766.00 29 491.00 27 384.00 11helio 28 578.00 6elaine 16 653.00 E 11 0 .00 16 406.00 26 259.00 20 377.00 8joao 15 211. EXERC´ ICIO PRATICO: 084 BALANCE LINE 12carmem 13felipe 15jorge 17antonio 19elaine 20luis 24kica 26ana 27sara 28paulo 30sara 31jose 32paula 37felipe 39zuza 43kica 44carmem 46luis 48kica 49kica 50pedro 16 609.00 23 1015.00 16 279.00 I 12jose 25 971.00 0 .00 . Numere o cadastro de sa´ e as mensagens de erro.00 16 372. EXERC´ ICIO PRATICO: 084 BALANCE LINE 21 745.00 19 930.00 27 331.00 27 615.00 22 440.00 E 19 0 .00 669.00 15 232.00 .00 E 9 0 .00 I 25sara 28 694.00 .00 21 609.00 49luis 16 528.00 E E E I A A A A A A A I I I I A I E E I I 9 11 12 14 15 20 21 23 24 25jorge 26 29 30 34 35 39biba 42 43 44 45 46carmem 0 .00 22 492.00 885.00 5zuza 23 191.00 19kica 19 218.00 365 88-08.00 673.00 0 .00 . Considere os seguintes dados: ==== CADASTRO ==== 1jose 19 629.00 15 .00 19 283.00 232.00 0 .00 25 971.00 E 20 0 .00 ==== MOVIMENTO ==== E 1 0 .00 A 3hugo 18 .00 .00 112.00 .00 25 792.00 ==== MOVIMENTO E 1 0 E 2 0 E 3 0 E 4 0 A 11 21 I 14hugo 19 E 15 0 E 19 0 A 22hugo 23 I 23 26 A 26 24 A 27joao 29 I 28 29 E 33 0 A 34 16 A 36 29 E 38 0 A 41 27 E 43 0 E 44 0 E 45 0 E 46 0 I 47 18 A 48 18 I 49 26 ==== .00 38helio 28 368.00 17 1082.00 37felipe 38jane 40ana 41hugo 43felipe 46sara 47paula 48carmem 49elaine ´ CAP´ ITULO 32.00 13hugo 20 250.00 424.00 0 .00 .00 228. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 366 vers˜o de 10 de fevereiro de 2008 a .00 12joao 18 533.00 24 685.00 I 15 22 736.00 23zuza 29 466. Numere o cadastro de sa´ e as mensagens de erro.00 I 32 17 694.00 922.00 40sara 27 465.00 28 1016.00 18zuza 16 218.00 745.00 .00 20elaine 18 861. Considere os seguintes dados: ==== CADASTRO 5joao 22 7jane 25 8paulo 29 10jane 24 16elaine 27 17paulo 20 18biba 23 22paula 16 23kica 28 24carmem 29 29hugo 16 31biba 19 32helio 21 33sara 29 34zuza 20 35pedro 24 ==== 558.00 558.00 27 1049.00 26 440.00 934.00 I 10 25 364.00 .00 615.00 431.00 25 764.00 29 791.00 39paula 16 498.00 28 825.00 41jorge 24 528.00 I 2 27 1058.00 5.00 16 406.00 22 1041.00 .00 21 594.00 21 .00 24jane 27 861.00 I 18 21 963.00 .00 25luis 19 218.00 15 922.00 15 .00 16 991.00 47biba 22 250.00 932.00 556.00 .00 50biba 24 1060.00 19 791. Numere o cadastro de sa´ e as mensagens de erro.00 .00 43paulo 23 549.00 15 212.00 . Pedro Kantek 7. e ıda responda: Qual a linha numerada do cadastro de sa´ ? 3 ıda 9 26 Qual a mensagem de erro numerada ? 6 9 6.00 .´ CAP´ ITULO 32.00 126.00 17 856.00 A 4jorge 22 .00 506.00 932. 00 685.00 .00 706.00 724.00 539.00 430.00 .00 392.00 745.00 563.00 614.00 807.00 .00 538.00 .00 868.00 22 21 24 736. Considere os seguintes dados: ==== CADASTRO 2antonio 29 3helio 29 5zuza 24 6carmem 24 7jose 15 8carmem 29 9elaine 18 10hugo 28 15ana 26 16ana 26 18pedro 20 20ana 28 21paulo 21 23felipe 25 25felipe 29 31joao 23 32antonio 25 35sara 26 39jorge 16 40pedro 22 41sara 25 42hugo 21 44paula 27 45kica 27 46ana 21 ==== 653.00 796.00 617.00 963.00 389.00 27 1049.00 /Inclusao 47 duplo /Inclusao 49 duplo 8 / 44paula / 45kica / 48 27 27 21 358.00 600.00 /Alteracao 23 inex /Inclusao 46 duplo 4 / 15 / 37felipe / 49elaine 8.00 693.00 621.00 228. Pedro Kantek 368 vers˜o de 10 de fevereiro de 2008 a . Numere o cadastro de sa´ e as mensagens de erro.00 781.00 358.00 886.00 /Inclusao 45 duplo /Exclusao 50 inex 9. EXERC´ ICIO PRATICO: 084 BALANCE LINE Qual a linha numerada do cadastro de sa´ ? 5 ıda 11 22 Qual a mensagem de erro numerada ? 13 15 2 / 13felipe / 24kica / 50pedro ´ CAP´ ITULO 32.00 .00 388.00 .´ CAP´ ITULO 32.00 . EXERC´ ICIO PRATICO: 084 BALANCE LINE 15 922.00 .00 24 1060.00 .00 994.00 945.00 .00 563.00 .00 307.00 941.00 .00 805.00 .00 693.00 704.00 ==== MOVIMENTO I 3 23 E 4 0 E 6 0 A 8 21 E 10 0 A 11 26 E 14 0 I 15 29 I 19jose 22 E 20 0 A 23 21 E 24 0 I 30 26 E 31 0 I 33ana 18 E 34 0 E 36 0 E 37 0 E 39 0 A 40 18 A 43 24 I 45 28 I 46 21 I 48 21 E 50 0 ==== 775. e ıda responda: Qual a linha numerada do cadastro de sa´ ? 21 ıda 22 24 Qual a mensagem de erro numerada ? 11 13 32.1 Respostas vers˜o de 10 de fevereiro de 2008 a 367 88-08.00 706.00 .00 217.00 18 861. Pedro Kantek 88-08.00 231.00 523.00 538.00 454.00 29 791.00 /Exclusao 1 inex /Alteracao 50 inex 6 / 11helio / 20elaine / 50biba 21 650. 7 6. V [ V [ 4 .5 6 + 1 ] + H ] ] + 4 9. T [ T [ 1 8 - 1 9 8 Exerc´ ıcios Pr´ticos: 110 a indexa¸˜o e indire¸˜o ca ca Sejam os vetores: 1 2 3 4 5 6 V 3 7 1 4 5 2 T 3 5 5 2 2 5 Z 3 2 6 7 6 4 E. Z [ V [ 7 ] + 1 ] + 7 ] ] . 11 12 13 14 15 16 12 9 5 17 4 10 12 8 8 3 18 9 7 5 5 20 6 1 K = 9 e M = −9 3 ] ] ] .H 370 vers˜o de 10 de fevereiro de 2008 a . 9 10 20 14 2 9 10 17 H = 7. Z [ 14 + 2.A 11 1 14 15.M 369 ] ] + 3 1 ] + 2 ] ] + 8 11.INDEXACAO E INDIRECAO ¸˜ ¸˜ 14.1 6 5 1 Exerc´ ıcio 1 5 3 2 3 6 5 4 4 7 8 3 2 8 3 1 4 9 2 7 15 10 2 12 14 11 6 10 11 12 2 9 10 13 14 1 12 14 8 19 16 15 12 16 6 16 20 19 18 Acompanhe os seguintes exemplos 1. V [ 6 + H 10 V [ 14 88-08. V [ 4 1 ] . E = 5.8 ________ ________ ________ 2 1 ] . Z [ T [ 2 ] 1 ] + K ] + A ] + 4 12 V [ T [ 3 Z [ Z [ 8 + 1 T [ V [ Z [ 10 ] . T [ 16 8. Z [ 14 3. V [ 8 + 2 ] ] + 2 1 ] + E ] + 8 17. V [ Z [ Z [ 19. E 7 8 5 3 1 5 8 8 = −5.A ] + M 7 - 8 ] ] . Pedro Kantek 5 .1 ] ] + 4 ________ ________ ________ ________ 2 ] . Z [ V [ Z [ 13 + E Cap´ ıtulo 33 16.H ] . H = −7. Z [ V [ 12 . Z [ Z [ 5. T [ V [ 12.6 2 8 + ] . sejam ainda A = 4.M ] . M = −1 Resolva.K 2 ] + 2 1 ] + E ] 1 ] .´ CAP´ ITULO 33.A ] . K = 1.K ] + 1 ] + 4 ________1. Z [ T [ T [ 13. V [ 3 + 1 3 + 12 V [ 13 + K ] + 5 ] + -2 V [ Z [ 3 + E 5 T [ T [ V [ 3 + A ] ] . Z [ Z [ T [ 10. T [ Z [ T [ 4 .M ] -4 8 24. Z [ 8 ] + M 2 ] .M ] + 23. EXERC´ ICIOS PRATICOS: 110 .M 2 ] - ] .9 1 ] .________ ________ ________ 4.E 33. T [ 9 1 1 2 ] ] ] ] ] Sejam os vetores: 1 2 3 4 V 6 8 8 5 T 6 4 6 8 Z 8 4 2 5 E. sejam ainda A = 1.K 18. T [ T [ Z [ 10 + 7. Z [ 11 20. T [ V [ V [ 12 ] 22.A ] . V [ V [ 3 + A 5 ] ] 8 V [ 5 V [ 12 ] .K 0 -7 10 21. K ] .3 2 ] + K ] + A ________ ________ T [ ´ CAP´ ITULO 33. T [ Z [ 8 + E 2 ] ] Z [ Z [ T [ 10 ] Z [ 18 + H V [ T [ ] . sejam ainda A = −7.M 1 ] + E 7 ] + 8 ] + 7 1 ] ] + V [ Z [ V [ T [ 4 + E V [ V [ Z [ V [ Z [ 9 .6 ] + E ] ] ________ ________ ________ ________ 1 ] ] .K V [ V [ 9 .3 1 6 ] 2 2 + 2 Z [ V [ 14 ] + V [ V [ V [ Z [ 5 + 1 3 - 2 + A ] .K Sejam os vetores: 1 2 3 4 5 6 V 7 4 5 4 8 6 T 3 1 2 7 2 5 Z 1 8 5 2 2 1 E.H 6 ________ ________6.´ CAP´ ITULO 33. ________ ________ 2 ] . H = 7.A ] + A 1 ] ] ] + 6 ________ ________ ________ 1 ] + M ] ] ] . EXERC´ ICIOS PRATICOS: 110 .7 2 ] ] + M 1 ] ] ________ ________ ________ ________5.INDEXACAO E INDIRECAO ¸˜ ¸˜ 8 .1 T [ 13 - 9 .2 Exerc´ ıcio 2 7 8 9 10 11 12 13 2 2 13 9 8 20 13 3 1 20 18 11 4 6 6 5 2 8 7 17 19 E = −1. 14 7 2 6 M 15 16 7 7 7 9 14 20 = 0 Resolva. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 110 .________ V [ T [ Z [ Z [ 11 .E ] ] 1 ] 2 ] ________ ________ ________ 2 ] + 1 ] 1 ] ________ ________ ________ ] + A 2 3 ] + 8 ] + 4 2 5 ] .________ ________ ________ 2 ] + 1 ] ________ ________ ________ 2 ] 1 ] ________ ________ ] ] + 2 ] .8 ] + 2 ] .K V [ T [ ] 4 ] - V [ Z [ 3 - T [ Z [ V [ V [ 5 ] + 5 5 ] + 2 ] - T [ V [ V [ T [ 13 + A 3 + M ] .E ] + A T [ Z [ 15 + A T [ V [ T [ Z [ Z [ V [ 1 ] .________ ] .INDEXACAO E INDIRECAO ¸˜ ¸˜ V [ V [ 2 .________ ] .8 ________4.6 ________ ________ ] 2 ] ] 1 ] + 3 ________ ________3.E ] + E 33.________ T [ Z [ 11 ] ] + 6 T [ V [ Z [ Z [ 10 + M T [ T [ ] 6 ] + 7 ] ] .H ________ ________ ________2.H 1 ] + 1 Z [ Z [ V [ V [ 8 + 2 9 + ] + E T [ V [ ] ] ] + Z [ T [ V [ T [ 6 1 5 + K ] + A 2 V [ Z [ Z [ V [ V [ Respostas 1 ] + E T [ V [ 10 ] + V [ V [ T [ 13 V [ 10 . Pedro Kantek 372 vers˜o de 10 de fevereiro de 2008 a .A 2 V [ V [ 10 + A T [ V [ T [ V [ 17 V [ T [ 2 7 - 3 + K ] .9 7 + 2 ] .A ________ ________ ________ 2 ] ________ ________ ________1.________ ________ ________ 1 ] + A ] ] . K = 8.M ] ] vers˜o de 10 de fevereiro de 2008 a 371 88-08. M = −5 Resolva.E Z [ V [ V [ Z [ 15 + M V [ Z [ 3 + ] . E = −6.H ] + 33.H 8 2 7 + ] ] .K V [ V [ Z [ 13 Z [ 6 ] V [ V [ Z [ V [ 8 .H ] + 6 ] ] . Pedro Kantek .´ CAP´ ITULO 33.________ ] ] ________ ________ ´ CAP´ ITULO 33.M ] + M ] ________ ________ ________5.INDEXACAO E INDIRECAO ¸˜ ¸˜ T [ Z [ T [ T [ 10 ] + 7 V [ T [ 11 ] .A 374 ________ ________ ________ ________ ________ ________ vers˜o de 10 de fevereiro de 2008 a 2 .A ] ________ ________ ________ ________ ] ________ ________ ] .K ] + 3 ________ ________ ________ 1 ] ] ] + A ________ ________ ________ 2 ] .M 3 V [ T [ V [ 15 .E 8 - V [ T [ Z [ Z [ 16 1 ] + K T [ T [ 10 .E 1 ] . Pedro Kantek 88-08.H ] + 8 ] ] .A 1 1 ] .INDEXACAO E INDIRECAO ¸˜ ¸˜ T [ V [ 6 2 ] ] + A ] + 2 ] 1 ] + 8 ________ ________ ________ ] + 7 1 ] .________ ] 1 2 ] .M T [ V [ V [ vers˜o de 10 de fevereiro de 2008 a 5 - 373 88-08.________ Z [ V [ V [ 15 . EXERC´ ICIOS PRATICOS: 110 .________ ________ ] .H T [ Z [ Z [ T [ 11 + T [ V [ 2 ] ] + K ] + K 1 ] 2 6 ] ] + M ] + E 2 V [ V [ 17 - Z [ T [ T [ 10 + Z [ 13 ] T [ Z [ 11 ] + ] + M 4 ] + V [ V [ Z [ Respostas 1 2 4 ] .E V [ 6 ] 4 ] ] ] ] V [ T [ 13 ] + H V [ Z [ Z [ Z [ 14 ] T [ V [ 6 + V [ T [ 10 .A ] ________ ________ ________2.H ] + M 1 ] ] .M T [ T [ T [ 16 ] + H V [ 17 . EXERC´ ICIOS PRATICOS: 110 .E ] + 6 1 ] + H Z [ V [ 10 - ] ] . sejam ainda A = 3.8 ] + 2 4 ] 5 6 ________ ________6.A Sejam os vetores: 1 2 3 4 V 3 4 3 2 T 3 2 7 2 Z 4 7 2 5 V [ T [ 15 + E T [ Z [ Z [ T [ 1 + 1 E.M ] + E ] .H V [ 10 + T [ Z [ 2 8 ] . V [ 13 + H V [ V [ 4 . H = −3.A ] .________ 1 + 1 ] .6 2 1 + ] .M 1 6 - ] .2 ] + 2 ] ] ________ ________3.M ________ ________ ________ 1 ] + E ] 1 ] + H ________ ________ ________ ________4. K = 3.E Z [ V [ V [ Z [ 16 2 ] + 7 6 + 1 ] + 1 ] + E ] ________ ________ ________ ________ ________ ] + 2 1 ] ] .3 Exerc´ ıcio 3 5 3 3 6 6 5 8 5 7 4 5 3 8 5 3 3 9 5 15 18 10 18 13 9 11 20 18 11 12 2 6 14 13 5 10 1 14 14 9 14 15 14 15 7 16 4 19 5 ] + M 2 V [ Z [ T [ V [ 12 + A ] .A ] . M ] ________ ________ ________ V [ T [ V [ 15 V [ 2 + A ] V [ V [ 7 .K ] + 5 ] T [ V [ 1 + A ] ] + 5 ] + A ] ________ ________ ________ Z [ Z [ T [ V [ 13 .5 375 ________4.K T [ V [ 19 .H ] .E ] ________ ________ ________2.K 1 ] .K V [ 9 2 ] ] + K 33.M V [ Z [ ________ ] + M ] .INDEXACAO E INDIRECAO ¸˜ ¸˜ V [ 16 - 1 ] ] + A ] ] .________ 88-08.H ] .K Z [ Z [ V [ 13 + A V [ 7 ] + E 6 ] + K ________ ________ V [ Z [ ] + 1 2 ] .H 4 ] .4 1 2 3 Respostas 37 64 56 82 99 68 47 89 48 72 72 30 17 78 67 51 69 37 V [ V [ 8 ] ] .E ] ________ ________ ________5. EXERC´ ICIOS PRATICOS: 110 .E 8 + E ] 1 T [ Z [ ] + 2 T [ Z [ T [ 10 + V [ 12 ] V [ V [ 14 T [ V [ V [ V [ 4 + 2 8 + 1 V [ V [ ] + 1 1 ] ________ ________ ________ Z [ Z [ Z [ 12 + M V [ 13 ] .A Z [ Z [ V [ Z [ 5 .A ] ] . Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 376 vers˜o de 10 de fevereiro de 2008 a .K V [ T [ Z [ 18 .E Z [ Z [ 18 + H Z [ T [ V [ Respostas 1 2 ] .________ ________ ________ Z [ T [ T [ 12 ] .________ T [ Z [ V [ V [ 3 ] 1 ] ] ] + H ________ ________ T [ T [ 11 + E T [ Z [ T [ Z [ 7 + 1 8 .H ] ] 2 ] .E ] + A ] + V [ V [ 14 ] .A ________ ________ 1 ] + ] 1 ] .K ] .´ CAP´ ITULO 33.INDEXACAO E INDIRECAO ¸˜ ¸˜ ´ CAP´ ITULO 33.A ] ] + ] + 2 ] + ] 2 ] + 4 ________ ________ ________ 7 ] + A ] 2 ] ] 1 ] . Pedro Kantek 88-08.H 1 ] ] .M 2 4 ] + 2 5 ] 6 ________ ________6.________ 8 + E ] - 2 ] ] ________ ________3. EXERC´ ICIOS PRATICOS: 110 .________ ________ ________ ________ ] + M ] ] .8 ________ ________ ________ 1 + ] .A T [ 2 + 2 6 + ] + 5 2 T [ T [ 17 .A ] ________ ________ T [ T [ Z [ 15 Z [ 16 ] V [ Z [ 6 .9 1 ] + K ] ________ ________1.________ T [ V [ Z [ 14 ] ] + H Z [ 8 ] .K ] 3 ] . a tabela dever´ ser mantida ordenada. a Eis o algoritmo inteiro MUNICIPIO[200]. c˜ 88-08.. 377 E. n˜o precisamos criar um vetor com 5000 e a a a n´ meros (5000 s˜o os munic´ u a ıpios brasileiros. Ambos os vetores ser˜o acessados a pelo mesmo ´ ındice. c˜ a duas condi¸oes devem ocorrer: c˜ a) Deve haver espa¸o na estrutura. que come¸a com zero. Pedro Kantek 378 vers˜o de 10 de fevereiro de 2008 a .MANUSEIO DE TABELAS inteiro MUNICIPIO[200]. b) Achar um MUNICIPIO = c 0. CONTADOR[200] para I de 1 at´ 200 fa¸a e c MUNICIPIO[I] ← CONTADOR[I] ← 0 fimpara leia MUNALU enquanto MUNALU ≥ 0 fa¸a c I←1 enquanto MUNALU = MUNICIPIO[I] ∧ MUNICIPIO[I] = 0 fa¸a c I++ se I> 200 ent˜o a .1 Manuseio de tabelas A tabela ´ uma excelente ferramenta para ajudar na programa¸ao. uma esperteza: E de se esperar que existam uns poucos munic´ ıpios que concentrem a maioria das pessoas (esta regra ´ conhecida como Regra de Pareto). Sempre que se e c˜ necessita consultar.erro. Por exemplo. EXERC´ ICIOS PRATICOS: 116 . a e a Suponhamos existir o campo MUNALU. informa ser a primeira vez que este munic´ ıpio est´ aparecendo e seu contador deve ser 1. ao processar cada aluno. u Agora. A segunda. suponhamos querer saber qual o local de a a a nascimento (munic´ ıpio) mais freq¨ ente entre os 1200 alunos do curso. ´ incrementada a cada inclus˜o e pode crescer at´ o c e a e limite (200 no exemplo acima). fimse fimenquanto CONTADOR[I] ← CONTADOR[I] + 1 leia MUNALU fimenquanto // achar o mais freq¨ ente u MELHOR ← −∞ QUAL ← 0 I←1 enquanto I ≤ 200 ∧ MUNICIPIO[I] = 0 fa¸a c se CONTADOR[I] > MELHOR ent˜o a MELHOR ← CONTADOR[I] QUAL ← I fimse I++ fimenquanto imprima MUNICIPIO[QUAL] Opera¸oes fundamentais: inclus˜o Para incluir um novo elemento em uma tabela. A primeira indica que este munic´ ıpio j´ havia aparecido e seu contador deve ser a incrementado em uma unidade. deve-se pesquisar o vetor MUNICIPIO da matriz at´ que uma das trˆs e e coisas aconte¸a: a) Achar um MUNICIPIO = MUNALU. n´ mero aproximado. o ´ ındice de acesso n˜o ´ mais conhecido de antem˜o e precisa ser localizado.´ CAP´ ITULO 34. Se a e sabendo existirem 1200 alunos no curso. n˜o deveria ocorrer e se acontecer a a indicar´ um erro. CONTADOR[200] para I de 1 at´ 200 fa¸a e c 3: MUNICIPIO[I] ← CONTADOR[I] ← 0 4: fimpara 1: 2: Cap´ ıtulo 34 Exerc´ ıcios Pr´ticos: 116 a manuseio de tabelas 34. o primeiro ponto ´ controlado por uma vari´vel global. como sendo o c´digo num´rico do munic´ o e ıpio onde o aluno nasceu.. a tabela ´ a solu¸ao. e c˜ A tabela pode ser de 1 dimens˜o e neste caso ´ chamada vetor. algo mais complexo. o primeiro contendo os c´digos de munic´ o ıpio que forem surgindo e o segundo para guardar os contadores. O problema e ´ que n˜o sabemos quais s˜o. por exemplo QTe a DUSADA. incluir o seguinte comando QTDAL [serie-aluno] ← QTDAL [serie-aluno] + 1 A partir deste ponto.. separar em classes e tarefas similares. Para cada a MUNALU lido. ocorre quando os identificadores da classe n˜o s˜o conhecidos de antem˜o. c) Ultrapassar o limite de I = 200. Em geral. e supondo que cada aluno ´ assim identificado e informa¸ao c˜ significado c´digo o de o n´ mero unico que identifica o u ´ matricula aluno na institui¸ao c˜ nome do aluno s´rie e do em que ano do curso ele est´ (ina aluno teiro?) Como fazer ? Basta criar um vetor 1: inteiro QTDAL [5] 2: QTDAL ← 0 1: Um segundo caso. acumular. o que talvez implique reordea na¸oes. os dois vetores est˜o prontos para receber os dados. A terceira. Por exemplo. u ´ Aqui. Note-se que na inclus˜o de tabelas que sofrer˜o busca a a linear ordenada. quisermos saber quantos alunos h´ em cada um a dos 5 anos do curso. Suponhamos que um limite exagerado (para a quantidade de munic´ ıpios) seja 200.. Naturalmente. b) A chave a incluir deve ser nova (isto ´ conhecido c e como atributo UNIQUE). Criaremos dois vetores. 6 Busca linear ordenada Neste algoritmo. 7: i ← tamanho(TABELA) 8: fimse 9: qtd ← qtd + 1 10: i++ 11: fimenquanto 12: devolva qtd 37 BUSCALIN 98 BUSCALIN 3 BUSCALIN 62 45 61 78 1 94 30 28 4 31 33 92 37 2 23 e 70 98 81 46 29 12 65 40 72 14 20 4 82 2 30 e 29 66 71 42 48 44 69 35 30 37 94 68 36 19 21 e 25 3 30 ´ CAP´ ITULO 34. inteiro TABELA[num]) c˜ 2: inteiro i ← 1.4 Calcule: Exerc´ ıcio 3 89 BUSCALIN 87 BUSCALINORD 60 BUSCALINSEN 88-08...MANUSEIO DE TABELAS Exclus˜o Se necessita diminuir o contador de linhas v´lidas e eventualmente reagrupar a a as linhas (caso a linha a excluir n˜o seja a ultima). qtd ← 0 3: TABELA[ULTIMO+1] ← CHAVE {note que ULTIMO n˜o ´ alterado} a e vers˜o de 10 de fevereiro de 2008 a 92 BUSCALIN 28 BUSCALINORD 29 BUSCALINSEN 77 92 70 35 89 31 59 48 64 80 9 37 11 41 72 1 4 24 25 27 28 29 30 33 35 40 43 50 53 56 3 69 18 25 88 28 97 35 13 72 39 38 52 51 73 e _____ e _____ e _____ 34..7 770...3 2 1777. qtd ← 0 3: enquanto (i ≤ tamanho(TABELA)) ∧ (CHAVE > TABELA[i]) fa¸a c 4: qtd ← qtd + 2 5: i++ 6: fimenquanto 7: se CHAVE = TABELA[i] ent˜o a 8: . a sa´ do la¸o sempre e c ıda ıda c se dar´ pela igualdade de chaves. Assim.2 Calcule: Exerc´ ıcio 1 60 BUSCALIN 29 BUSCALINORD 98 BUSCALINSEN 2 44 67 37 73 12 60 17 65 62 54 97 6 83 81 5 8 14 18 25 31 32 41 62 65 66 71 73 76 99 65 86 60 18 10 67 87 98 56 5 80 8 16 52 37 e _____ e _____ e _____ 34. EXERC´ ICIOS PRATICOS: 116 . 9: fimse 10: devolva qtd 96 BUSCALINORD 5 10 26 34 39 48 56 60 68 70 73 89 92 93 96 e 58 BUSCALINORD 1 2 8 10 12 41 42 47 49 53 58 59 60 62 85 e 96 BUSCALINORD 2 12 21 26 27 37 43 46 52 54 65 79 83 84 89 e 28 20 30 34. inteiro TABELA[num]) c˜ 2: inteiro i ← 1.. . qtd ← 0 3: enquanto i ≤ tamanho(TABELA) fa¸a c 4: qtd ← qtd + 1 5: se CHAVE = TABELA[i] ent˜o a 6: .0 959.ACHOU. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a . e a busca gasta a apenas a metade dos testes da busca linear... A sentinela ´ a chave que se busca e que ´ for¸osamente inclu´ ao final da tabela. inteiro TABELA[num]) c˜ 2: inteiro i ← 1.0 ultima para uma chave inexistente. fimse devolva qtd 38 BUSCALINSEN 24 35 91 18 8 72 10 88 27 54 28 34 43 3 38 e 14 54 BUSCALINSEN 63 17 35 68 27 86 54 53 5 78 41 58 44 51 25 e 6 61 BUSCALINSEN 75 67 51 60 85 38 49 74 73 78 66 35 24 4 2 e 15 Alguns dados experimentais Para o teste a seguir.7 613.3 Calcule: Exerc´ ıcio 2 Busca linear com sentinela A tabela n˜o precisa estar ordenada.3 1063.7 3 1832.3 817.3 749. 1: fun¸ao BUSCALINSEN (inteiro CHAVE.ACHOU.MANUSEIO DE TABELAS 4: 5: 6: 7: 8: 9: 10: 11: enquanto CHAVE = TABELA[i]) fa¸a c qtd++ i++ fimenquanto se i = (ULTIMO + 1) ent˜o a .0 832.ACHOU..3 621..7 607.7 1186.3 6 948. Eis os dados: ´ 4 1244..3 634.ACHOU. O a e algoritmo b´sico ´: a e 1: fun¸ao BUSCALIN(inteiro CHAVE.0 674.. para evitar a existˆncia de buracos a ´ e na tabela Pesquisa Busca Linear Para este algoritmo o conjunto de chaves n˜o ´ mantido ordenado. a Eis o algoritmo: 1: fun¸ao BUSCALINORD (inteiro CHAVE. Para cada m´todo. (onde foi explicitamente colocada) ´ porque ela n˜o se encontrava l´ antes do in´ e a a ıcio do algoritmo. em cada passagem foram 3 tentativas: as primeiras 2 com sucesso e a e passagem Lin Lin Ord Lin Sen 1 1265.´ CAP´ ITULO 34.7 5 1200.9 687.. Pedro Kantek 39 38 52 71 53 23 41 15 66 89 4 48 22 21 11 4 6 14 15 20 46 50 51 59 60 77 80 87 90 92 63 52 64 99 60 20 28 81 8 49 30 26 50 10 68 380 e _____ e _____ e _____ 379 88-08.. Se a chave procurada for encontrada no meio a da tabela.. Se for encontrada no final da tabela. o conjunto de chaves dever´ estar ordenado.3 m´dia e 1378. EXERC´ ICIOS PRATICOS: 116 . fiz 6 passagens de 1000 chaves.0 1314.. ´ CAP´ ITULO 34.5 1 2 3 Respostas 13 3 19 10 10 24 7 15 4 vers˜o de 10 de fevereiro de 2008 a 381 88-08. Pedro Kantek 382 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIOS PRATICOS: 116 .MANUSEIO DE TABELAS 34. EXERC´ ICIOS PRATICOS: 116 .MANUSEIO DE TABELAS ´ CAP´ ITULO 34. Pedro Kantek 88-08. 1 Exerc´ ıcio Pr´tico: 119 a Manuseio de Tabelas II Para todos os algoritmos abaixo suponha-se duas vari´veis globais: a 1: inteiro TABELA[num] 2: inteiro ULTIMO Onde T ABELA cont´m os dados a serem acessados. mas em e a e a compensa¸ao as buscas tendem a ficar mais demoaradas.erro.000 n A segunda estrat´gia ´ incluir algum “indicador” (f iller) que informe que o item e e foi eliminado.000....000 1.MANUSEIO DE TABELAS II 7: 8: 9: 10: 11: 12: 13: Cap´ ıtulo 35 fimse fimenquanto enquanto i < ULTIMO fa¸a c TABELA[i] ← TABELA [i+1] i++ fimenquanto ULTIMO ← ULTIMO . bastando acresa a e a centar o item ao final da ´rea util da tabela... 1: fun¸ao EXCLUSAO1NORD (inteiro CHAVE) c˜ 2: inteiro i ← 1 3: enquanto TABELA[i] = CHAVE fa¸a c 4: i++ 5: se i > ULTIMO ent˜o a 6: . 383 A vantagem desta segunda alternativa ´ que a exclus˜o ´ mais r´pida. a ´ 1: fun¸ao INCLUSAONORD (inteiro CHAVE) c˜ 2: ULTIMO ← ULTIMO + 1 3: se ULTIMO > num ent˜o a 4: .erro.000 n Exclus˜o de itens em tabelas desordenadas H´ duas estrat´gias aqui: a primeira a a e ´ eliminar o item puxando os que ficaram abaixo da exclus˜o para “tampar o e a buraco”.000.. qual o n´ mero c˜ a u m´dio de opera¸oes para achar um item que est´ na tabela e qual o n´ mero m´dio e c˜ a u e de opera¸oes para concluir que um dado n´ mero n˜o est´ na tabela c˜ u a a elementos ops para ops para ops para exclus˜o a achar concluir que n˜o a est´ a 100 10.. qual o n´ mero c˜ a u m´dio de opera¸oes para achar um item que est´ na tabela e qual o n´ mero m´dio e c˜ a u e de opera¸oes para concluir que um dado n´ mero n˜o est´ na tabela c˜ u a a elementos ops para ops para ops para exclus˜o a achar concluir que n˜o a est´ a 100 10. 5: fimse 6: TABELA[ULTIMO] ← CHAVE Qual a quantidade de opera¸oes para fazer uma inclus˜o em tabela n˜o ordenada c˜ a a no caso de uma tabela de elementos opera¸oes c˜ 100 10..000. 1: fun¸ao EXCLUSAO2NORD (inteiro CHAVE) c˜ 2: inteiro i ← 1 3: enquanto TABELA[i] = CHAVE fa¸a c 4: i++ 5: se i > ULTIMO ent˜o a 6: ..000 n Qual a quantidade de opera¸oes para fazer uma exclus˜o do tipo 1. c˜ Busca bin´ria Conjunto ordenado. a Inclus˜o de itens em tabelas desordenadas Esta inclus˜o ´ f´cil.´ CAP´ ITULO 35. EXERC´ ICIO PRATICO: 119 ..000 1... otimo desempenho a ´ 1: fun¸ao BUSCABIN(inteiro CHAVE) c˜ 88-08. Pedro Kantek 384 vers˜o de 10 de fevereiro de 2008 a . num ´ um valor suficiente para e e conter todos os dados necess´rios e U LT IM O ´ um valor que aponta para o ultimo a e ´ valor v´lido da tabela.erro.000 1. 7: fimse 8: fimenquanto 9: TABELA[i] ← 9999999 Qual a quantidade de opera¸oes para fazer uma exclus˜o do tipo 2. sendo todas inteiros. Note que a matriz de entrada est´ ordenada por cidade. imprimindo tamb´m quantas vezes o e o primeiro ´ mais populoso do que o segundo.METADE. Para isso. (ENUNCIADO 2) a Qual a quantidade de opera¸oes para fazer pesquisa e qual o n´ mero m´dio de c˜ u e opera¸oes para concluir que um dado n´ mero n˜o est´ na tabela c˜ u a a elementos ops para ops para conpesquisa cluir que n˜o a est´ a 100 10.FIM INIC ← 1 FIM ← ULTIMO repita METADE ← ((INIC + FIM)/2) se CHAVE ≤ TABELA[METADE] ent˜o a FIM ← METADE . formada por e c´digo da cidade total dos valores de transa¸oes o c˜ Nesta matriz de sa´ ıda. formada por e c´digo da transa¸ao valor da transa¸ao c´digo da cidade o c˜ c˜ o O algoritmo dever´ criar e imprimir uma segunda matriz.000. EXERC´ ICIO PRATICO: 119 .. formada por e c´digo do estado area do estado popula¸ao do estado o ´ c˜ O algoritmo dever´ imprimir o c´digo do estado de maior densidade populacional e o a o c´digo do estado de menor densidade populacional. formada por e n´ mero de parcelas quantidade de vendas u Nesta matriz de sa´ ıda.´ CAP´ ITULO 35.1 sen˜o a INIC ← METADE + 1 fimse at´ TABELA[METADE] = CHAVE ∨ INIC > FIM e se TABELA[METADE] = CHAVE ent˜o a devolva METADE sen˜o a devolva -1 fimse 35.MANUSEIO DE TABELAS II elementos 100 10. (ENUNCIADO 4) e 88-08. a inclus˜o de novos elemene a tos deve ocorrer em seus locais espec´ ıficos e n˜o no final. de nome c˜ MAT-ENT. de apenas duas colunas a MAT-SAI ´ uma matriz de 2 colunas. os valores de d´bito (c´d 2) dever˜o ser totalizados. formada por e n´ mero de parcelas valor da transa¸ao c´digo da cidade u c˜ o O n´ mero de parcelas pode ser de 1 a 6. u O algoritmo dever´ criar e imprimir uma segunda matriz... dever˜o ser mostrados o n´ mero de parcelas campe˜o positivo a u a (em quantidade de vendas) e o campe˜o negativo (idem). cujo conte´ do ´: u e MAT-ENT ´ uma matriz de 3 colunas. Pedro Kantek Qual a quantidade de opera¸oes para fazer uma inclus˜o em tabela ordenada no caso c˜ a de uma tabela de vers˜o de 10 de fevereiro de 2008 a 385 88-08. associado ao n´ mero de vendas a u de cada um. como vimos acima.000 1. (ENUNCIADO 3) Inclus˜o em tabela ordenada A contrapartida para poder fazer a busca ordenada a ´ criar e manter a tabela em ordem.MANUSEIO DE TABELAS II 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: ´ CAP´ ITULO 35.000 n 35. e quando e o a houver quebra de cidade. EXERC´ ICIO PRATICO: 119 . de apenas duas colunas a MAT-SAI ´ uma matriz de 2 colunas.000 1.erro.000. de nome c˜ MAT-VENDAS.. sendo todas inteiros. Pedro Kantek 386 vers˜o de 10 de fevereiro de 2008 a . a 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: fun¸ao INCLUSAOORD (inteiro CHAVE) c˜ ULTIMO ← ULTIMO + 1 se ULTIMO > num ent˜o a . cujo conte´ do ´: u e MAT-ENT ´ uma matriz de 3 colunas. uma nova linha deve ser introduzida na matriz de saida com o total. sendo ambos inteiros.1 Exerc´ ıcio 1 Escreva a seguir um algoritmo de uma fun¸ao que Receba uma matriz global.000 n opera¸oes c˜ inteiro INIC.2 Exerc´ ıcio 2 Escreva a seguir um algoritmo de uma fun¸ao que Receba uma matriz global. cujo conte´ do ´: u e MAT-ENT ´ uma matriz de 3 colunas.3 Exerc´ ıcio 3 Escreva a seguir um algoritmo de uma fun¸ao que Receba uma matriz global. de nome c˜ MAT-ENT. por 2 linhas sendo ambos inteiros. fimse inteiro i ← 1 enquanto TABELA[i] < CHAVE fa¸a c i++ fimenquanto k ← ULTIMO enquanto k > i fa¸a c TABELA[k] ← TABELA[k-1] k−− fimenquanto TABELA[k] ← CHAVE 35. sendo todas inteiros. Pedro Kantek 88-08.MANUSEIO DE TABELAS II ´ CAP´ ITULO 35. sendo ambos inteiros. (ENUNCIADO 1) estado a que pertence vers˜o de 10 de fevereiro de 2008 a 387 88-08. EXERC´ ICIO PRATICO: 119 . cujos conte´ dos s˜o: u a MAT1 ´ uma matriz de 3 colunas. EXERC´ ICIO PRATICO: 119 . apenas as transa¸oes de d´bito dever˜o ser inclu´ c˜ e a ıdas. de c˜ nomes MAT1 e MAT2. formada por c´digo da cidade e o O algoritmo dever´ criar e imprimir uma terceira matriz. sendo todas inteiros. Pedro Kantek 388 vers˜o de 10 de fevereiro de 2008 a .4 Exerc´ ıcio 4 Escreva a seguir um algoritmo de uma fun¸ao que Receba duas matrizes globais. sendo ambos inteiros.´ CAP´ ITULO 35. formada por e estado onde foi efetuada a transa¸ao valor da transa¸ao c˜ c˜ Nesta segunda matriz.MANUSEIO DE TABELAS II 35. formada por e c´digo da transa¸ao valor da transa¸ao c´digo da cidade o c˜ c˜ o MAT2 ´ uma matriz de 2 colunas. de apenas duas colunas a MATSAIDA ´ uma matriz de 2 colunas. As substitui¸oes a fazer s˜o: c˜ a AAA=2 . 1: funcao A02SOMD (N : inteiro) : inteiro 2: M. EEE=T . a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M. vocˆ receber´ 5 algoritmos. A01PRIM(39) = NAOPRIMO . a funcao deve calcular e devolver o n´ mero N X e se n˜o for deve devolver -1. CCC.X. mas precisa apenas determinar que o algoritmo est´ errado.X : inteiro) : inteiro 2: R : inteiro 3: R ← AAA 4: se X > 0 ent˜o a 5: enquanto BBB >0 fa¸a c 6: R ← R CCC N 7: X ← X DDD 1 8: fimenquanto 9: devolva EEE 10: sen˜o a 11: devolva FFF 12: fimse 13: fimfuncao Esta funcao correta. GGG=M .. As substitui¸oes a fazer s˜o: c˜ a 88-08. Pedro Kantek 390 vers˜o de 10 de fevereiro de 2008 a . at´ III. e excluindo-se desta soma ele mesmo e a unidade. n˜o c˜ u a ´ preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N.´ CAP´ ITULO 36. A01PRIM(31) = PRIMO . BBB=N . de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro.CORRECAO DE ¸˜ ALGORITMOS se DDD = 0 ent˜o a devolva EEE 13: sen˜o a 14: devolva FFF 15: fimse 16: fimfuncao Esta funcao correta. Algoritmo 3 Escreva uma fun¸ao que receba dois inteiros N e X Se X for maior que c˜ zero. n˜o ´ c˜ u a e preciso testar) e devolva a cadeia ’primo’ se ele for PRIMO e ’n˜o primo’ sen˜o. Idem para A2 . c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). 11: 12: Cap´ ıtulo 36 Exerc´ ıcios Pr´ticos: 125a a Corre¸˜o de algoritmos ca 36. A4 e A5 . BBB=2 .5 ) 5: para T de AAA a X fa¸a c 6: Z ← BBB mod T 7: se Z = CCC ent˜o a 8: M←M+1 9: fimse 10: fimpara 389 Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. a c˜ Ap´s a substitui¸ao.. III=M . deu os seguintes resultados: A03POTE(3 4) = 81 . DDD=N . A03POTE(4 6) = 4096 .Z : inteiro 3: M ← AAA 4: para T de BBB a CCC fa¸a c 5: Z ← DDD mod EEE 6: se FFF = Z ent˜o a 7: M ← GGG + HHH 8: fimse 9: fimpara 10: devolva III 11: fimfuncao Esta funcao correta.III por valores determinados. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. CCC=0 . deu os seguintes resultados: A01PRIM(30) = NAOPRIMO . u a 1: funcao A03POTE (N. deu os seguintes resultados: A02SOMD(16) = 14 . EXERC´ ICIOS PRATICOS: 125A . BBB. que tˆm algumas lacunas representadas pelas e a e constantes AAA.1 Exerc´ ıcio 1 Construindo e consertando algoritmos . A03POTE(5 6) = 15625 . a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado.T. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA.T : inteiro 3: M ← 0 4: X ← teto(N 0. .parte 1 Nesta folha. CCC=N-1 .. HHH=T . Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. A02SOMD(29) = 0 . FFF=0 .. A3 . As substitui¸oes a fazer s˜o: c˜ a AAA=0 .. A02SOMD(89) = 0 . DDD=M . EEE=primo e FFF=nao primo .. Abaixo de cada algoritmo. Trata-se de algo similar a um chines reverso. foi colocar cada brinquedo em uma esfera colorida. JJJ=12 . M. FFF=29 . Algoritmo 4 Escreva uma fun¸ao que receba trˆs inteiros D. EXERC´ ICIOS PRATICOS: 125A . III=31 .C e retorne e o raio da menor esfera poss´ ıvel. 1: funcao A05DIAG (X. As substitui¸oes a fazer s˜o: c˜ a vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 36. quenos brinquedos. O objetivo da compra. EEE=R . A05DIAG(4 5 10) = 10 . BBB=X . M e A representando c˜ e uma data (D ´ o dia. A04DATA(29 2 1800) = 1 . DDD=. O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 sen˜o. deu os seguintes resultados: A05DIAG(8 5 5) = 10 .CORRECAO DE ¸˜ ALGORITMOS AAA=0 . B e C. GGG=28 . Escreva uma fun¸ao que c˜ receba A. HHH=30 . Pedro Kantek 392 vers˜o de 10 de fevereiro de 2008 a . Pedro Kantek 88-08.CORRECAO DE ¸˜ ALGORITMOS AAA=400 . BBB=A (ano) . a empresa teve a oportunidade de comprar peıs.B. BBB=40 . FFF=-1 . deu os seguintes resultados: A04DATA(29 10 7202) = 0 . Y. Cada brinquedo. Responda R= 391 88-08. todos embalados em caixas retangulares. CCC=vezes (multiplicacao) . Existem esferas de raios 10. 20 e 30 cm. Todos os brinquedos caber˜o a em uma das esferas. A04DATA(29 2 2012) = 0 . medidas em cent´ o ımetros. para revendˆ-los como surpresa. M ´ o mˆs e A ´ o ano). mais e ou menos como o Kinder ovo. EEE=2 . tem as suas 3 dimens˜es A. a 1: funcao A04DATA (D. EXERC´ ICIOS PRATICOS: 125A . A : inteiro) : inteiro 2: biss. CCC=1 e DDD=0 . Brinquedos “PIRRALHOS ENDIABRADOS” ´ um grande distribuidor de pree sentes em todo o pa´ Recentemente. Z : inteiro) : inteiro 2: inteiro diag 3: diag ← (X AAA ) + (Y AAA ) + (Z AAA ) √ 4: diag ← diag 5: se diag > BBB ent˜o a 6: devolva 30 7: sen˜o a 8: se diag > CCC ent˜o a 9: devolva 20 10: sen˜o a 11: devolva 10 12: fimse 13: fimse 14: fimfuncao Esta funcao correta. As substitui¸oes a fazer s˜o: c˜ a AAA=3 .´ CAP´ ITULO 36. A05DIAG(28 25 29) = 30 .(subtracao) . CCC=20 . erro : inteiro 3: se 0 = (A mod AAA) ent˜o a 4: biss←1 5: sen˜o a 6: se 0 = (BBB mod 100) ent˜o a 7: biss←0 8: sen˜o a 9: se 0 = (A mod 4) ent˜o a 10: biss←CCC 11: sen˜o a 12: biss←DDD 13: fimse 14: fimse 15: fimse 16: erro ← 0 17: se M = EEE ent˜o a 18: se biss = 1 ent˜o a 19: se D > FFF ent˜o a 20: erro ← 1 21: fimse 22: sen˜o a 23: se D > GGG ent˜o a 24: erro ← 1 25: fimse 26: fimse 27: sen˜o a 28: se (M=4)∨(M=6)∨(M=9)∨(M=11) ent˜o a 29: se D > HHH ent˜o a 30: erro ← 1 31: fimse 32: sen˜o a 33: se D > III ent˜o a 34: erro ← 1 35: fimse 36: fimse 37: fimse 38: se M > JJJ ent˜o a 39: erro ← 1 40: fimse 41: retorne erro 42: fimfuncao Esta funcao correta. 3: 4: 36. A01PRIM(39) = NAOPRIMO . FFF=0 . Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. n˜o ´ c˜ u a e preciso testar) e devolva a cadeia ’primo’ se ele for PRIMO e ’n˜o primo’ sen˜o. CCC=vezes (multiplicacao) . A3 . Idem para A2 . a funcao deve calcular e devolver o n´ mero N X e se n˜o for deve devolver -1. As substitui¸oes a fazer s˜o: c˜ a AAA=2 . III=M .´ CAP´ ITULO 36. at´ III. M.. EEE=nao primo e FFF=primo . que tˆm algumas lacunas representadas pelas e a e constantes AAA.. EEE=R . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado.T : inteiro 3: M ← 0 4: X ← teto(N 0. 1: funcao A02SOMD (N : inteiro) : inteiro 2: M. CCC=0 . M e A representando c˜ e uma data (D ´ o dia. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. a 1: funcao A04DATA (D. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. BBB=2 . deu os seguintes resultados: A02SOMD(16) = 14 . a c˜ Ap´s a substitui¸ao. GGG=M .Z : inteiro vers˜o de 10 de fevereiro de 2008 a Algoritmo 3 Escreva uma fun¸ao que receba dois inteiros N e X Se X for maior que c˜ zero.X. a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M.2 Exerc´ ıcio 2 Construindo e consertando algoritmos . FFF=-1 . As substitui¸oes a fazer s˜o: c˜ a AAA=0 . EXERC´ ICIOS PRATICOS: 125A .. A01PRIM(23) = PRIMO . CCC=N-1 .(subtracao) .. BBB. A4 e A5 . a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. Abaixo de cada algoritmo. A02SOMD(86) = 45 . BBB=N . mas precisa apenas determinar que o algoritmo est´ errado.parte 1 Nesta folha.. BBB=X . A03POTE(6 3) = 216 .X : inteiro) : inteiro 2: R : inteiro 3: R ← AAA 4: se X > 0 ent˜o a 5: enquanto BBB >0 fa¸a c 6: R ← R CCC N 7: X ← X DDD 1 8: fimenquanto 9: devolva EEE 10: sen˜o a 11: devolva FFF 12: fimse 13: fimfuncao Esta funcao correta. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. CCC.CORRECAO DE ¸˜ ALGORITMOS ´ CAP´ ITULO 36. Trata-se de algo similar a um chines reverso. u a 1: funcao A03POTE (N. EXERC´ ICIOS PRATICOS: 125A . e excluindo-se desta soma ele mesmo e a unidade. Algoritmo 4 Escreva uma fun¸ao que receba trˆs inteiros D. Pedro Kantek 394 vers˜o de 10 de fevereiro de 2008 a . DDD=N .5 ) 5: para T de AAA a X fa¸a c 6: Z ← BBB mod T 7: se Z = CCC ent˜o a 8: M←M+1 9: fimse 10: fimpara 11: se DDD = 0 ent˜o a 12: devolva EEE 13: sen˜o a 14: devolva FFF 15: fimse 16: fimfuncao Esta funcao correta. Pedro Kantek 393 88-08. HHH=T . A : inteiro) : inteiro 2: biss. O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 sen˜o. vocˆ receber´ 5 algoritmos. DDD=. n˜o c˜ u a ´ preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N. DDD=M . M ´ o mˆs e A ´ o ano).CORRECAO DE ¸˜ ALGORITMOS M ← AAA para T de BBB a CCC fa¸a c 5: Z ← DDD mod EEE 6: se FFF = Z ent˜o a 7: M ← GGG + HHH 8: fimse 9: fimpara 10: devolva III 11: fimfuncao Esta funcao correta. A03POTE(6 5) = 7776 . erro : inteiro 3: se 0 = (A mod AAA) ent˜o a 4: biss←1 5: sen˜o a 6: se 0 = (BBB mod 100) ent˜o a 7: biss←0 8: sen˜o a 9: se 0 = (A mod 4) ent˜o a 10: biss←CCC 11: sen˜o a 12: biss←DDD 88-08. deu os seguintes resultados: A03POTE(3 6) = 729 . deu os seguintes resultados: A01PRIM(17) = PRIMO . ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. As substitui¸oes a fazer s˜o: c˜ a AAA=0 .. A02SOMD(29) = 0 .III por valores determinados. EEE=T . .T. . Escreva uma fun¸ao que c˜ receba A. Brinquedos “PIRRALHOS ENDIABRADOS” ´ um grande distribuidor de pree sentes em todo o pa´ Recentemente. Existem esferas de raios 10. de duas uma: o c˜ O algoritmo est´ correto a 88-08.´ CAP´ ITULO 36. Cada brinquedo. 20 e 30 cm. at´ III. BBB=A (ano) . As substitui¸oes a fazer s˜o: c˜ a AAA=400 . CCC=1 e DDD=0 .. Y. tem as suas 3 dimens˜es A. O objetivo da compra. BBB=40 . JJJ=12 . vocˆ receber´ 5 algoritmos. As substitui¸oes a fazer s˜o: c˜ a AAA=2 . CCC=20 . todos embalados em caixas retangulares. Pedro Kantek 395 88-08. a empresa teve a oportunidade de comprar peıs. A04DATA(29 2 2000) = 0 se diag > CCC ent˜o a devolva 20 sen˜o a devolva 10 fimse fimse fimfuncao Esta funcao correta. deu os seguintes resultados: A04DATA(28 11 7636) = 0 .B. HHH=30 . III=30 .. A05DIAG(25 27 28) = 30 .. quenos brinquedos. Abaixo de cada algoritmo. medidas em cent´ o ımetros.III por valores determinados.CORRECAO DE ¸˜ ALGORITMOS 8: 9: 10: 11: 12: 13: 14: fimse fimse fimse erro ← 0 se M = EEE ent˜o a se biss = 1 ent˜o a se D > FFF ent˜o a erro ← 1 fimse sen˜o a se D > GGG ent˜o a erro ← 1 fimse fimse sen˜o a se (M=4)∨(M=6)∨(M=9)∨(M=11) ent˜o a se D > HHH ent˜o a erro ← 1 fimse sen˜o a se D > III ent˜o a erro ← 1 fimse fimse fimse se M > JJJ ent˜o a erro ← 1 fimse retorne erro fimfuncao Esta funcao correta. . EEE=2 . ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA.C e retorne e o raio da menor esfera poss´ ıvel. a c˜ Ap´s a substitui¸ao. BBB. A05DIAG(5 1 7) = 10 . CCC. EXERC´ ICIOS PRATICOS: 125A . A04DATA(27 2 1852) = 0 .parte 1 Nesta folha. Todos os brinquedos caber˜o a em uma das esferas. EXERC´ ICIOS PRATICOS: 125A . deu os seguintes resultados: A05DIAG(2 6 8) = 10 .CORRECAO DE ¸˜ ALGORITMOS 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: ´ CAP´ ITULO 36. 1: funcao A05DIAG (X. para revendˆ-los como surpresa.. FFF=29 .. mais e ou menos como o Kinder ovo. Z : inteiro) : inteiro 2: inteiro diag 3: diag ← (X AAA ) + (Y AAA ) + (Z AAA ) √ 4: diag ← diag 5: se diag > BBB ent˜o a 6: devolva 30 7: sen˜o a vers˜o de 10 de fevereiro de 2008 a 36. que tˆm algumas lacunas representadas pelas e a e constantes AAA. GGG=28 .3 Exerc´ ıcio 3 Construindo e consertando algoritmos . foi colocar cada brinquedo em uma esfera colorida. B e C. Pedro Kantek 396 vers˜o de 10 de fevereiro de 2008 a . Responda R= . As substitui¸oes a fazer s˜o: c˜ a AAA=1 . Idem para A2 . n˜o c˜ u a ´ preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N. EEE=T . EEE=primo e FFF=nao primo . Algoritmo 3 Escreva uma fun¸ao que receba dois inteiros N e X Se X for maior que c˜ zero. A3 . e excluindo-se desta soma ele mesmo e a unidade.X.´ CAP´ ITULO 36. M e A representando c˜ e uma data (D ´ o dia.CORRECAO DE ¸˜ ALGORITMOS Esta funcao correta. deu os seguintes resultados: A01PRIM(26) = NAOPRIMO . M. CCC=0 . III=2 vezes M . A : inteiro) : inteiro 2: biss.CORRECAO DE ¸˜ ALGORITMOS O algoritmo cont´m um erro. A4 e A5 . DDD=. Pedro Kantek 397 88-08. n˜o ´ c˜ u a e preciso testar) e devolva a cadeia ’primo’ se ele for PRIMO e ’n˜o primo’ sen˜o. A02SOMD(71) = 0 . 1: funcao A02SOMD (N : inteiro) : inteiro 2: M.T : inteiro 3: M ← 0 4: X ← teto(N 0. FFF=0 . CCC=+ (adicao) . DDD=N . As substitui¸oes a fazer s˜o: c˜ a AAA=0 . M ´ o mˆs e A ´ o ano).T. FFF=-1 . Algoritmo 4 Escreva uma fun¸ao que receba trˆs inteiros D. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. EEE=R . a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. A01PRIM(71) = PRIMO .5 ) 5: para T de AAA a X fa¸a c 6: Z ← BBB mod T 7: se Z = CCC ent˜o a 8: M←M+1 9: fimse 10: fimpara 11: se DDD = 0 ent˜o a 12: devolva EEE 13: sen˜o a 14: devolva FFF 15: fimse 16: fimfuncao Esta funcao correta. Trata-se de algo similar a um chines reverso. DDD=N . A01PRIM(37) = PRIMO . erro : inteiro 3: se 0 = (A mod AAA) ent˜o a 4: biss←1 5: sen˜o a 6: se 0 = (BBB mod 100) ent˜o a 7: biss←0 8: sen˜o a 9: se 0 = (A mod 4) ent˜o a 10: biss←CCC 11: sen˜o a 12: biss←DDD 13: fimse 14: fimse 15: fimse 16: erro ← 0 17: se M = EEE ent˜o a 18: se biss = 1 ent˜o a 19: se D > FFF ent˜o a 20: erro ← 1 21: fimse 22: sen˜o a 88-08. u a 1: funcao A03POTE (N. As substitui¸oes a fazer s˜o: c˜ a AAA=2 . A02SOMD(27) = 12 . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado.(subtracao) . deu os seguintes resultados: A02SOMD(20) = 21 . deu os seguintes resultados: A03POTE(4 4) = 256 . c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). GGG=M . mas precisa apenas determinar que o algoritmo est´ errado. HHH=T . BBB=2 . EXERC´ ICIOS PRATICOS: 125A . CCC=N-1 .X : inteiro) : inteiro 2: R : inteiro 3: R ← AAA 4: se X > 0 ent˜o a 5: enquanto BBB >0 fa¸a c 6: R ← R CCC N 7: X ← X DDD 1 8: fimenquanto 9: devolva EEE 10: sen˜o a 11: devolva FFF 12: fimse 13: fimfuncao Esta funcao correta. A03POTE(6 4) = 1296 . BBB=N . O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 sen˜o. BBB=X . a funcao deve calcular e devolver o n´ mero N X e se n˜o for deve devolver -1. Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. A03POTE(5 3) = 125 . Pedro Kantek 398 vers˜o de 10 de fevereiro de 2008 a . a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M.Z : inteiro 3: M ← AAA 4: para T de BBB a CCC fa¸a c 5: Z ← DDD mod EEE 6: se FFF = Z ent˜o a 7: M ← GGG + HHH 8: fimse 9: fimpara 10: devolva III 11: fimfuncao vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 36. a 1: funcao A04DATA (D. EXERC´ ICIOS PRATICOS: 125A . Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. CORRECAO DE ¸˜ ALGORITMOS As substitui¸oes a fazer s˜o: c˜ a AAA=2 . a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. O objetivo da compra. Existem esferas de raios 10. CCC=1 e DDD=0 . a a 88-08. todos embalados em caixas retangulares. foi colocar cada brinquedo em uma esfera colorida. III=31 . que tˆm algumas lacunas representadas pelas e a e constantes AAA. A05DIAG(27 26 28) = 30 .. HHH=30 . vers˜o de 10 de fevereiro de 2008 a 36. Cada brinquedo. quenos brinquedos. Pedro Kantek 399 88-08.. EXERC´ ICIOS PRATICOS: 125A . .C e retorne e o raio da menor esfera poss´ ıvel. para revendˆ-los como surpresa. Idem para A2 .. Escreva uma fun¸ao que c˜ receba A. A4 e A5 ...CORRECAO DE ¸˜ ALGORITMOS 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: ´ CAP´ ITULO 36. mas precisa apenas determinar que o algoritmo est´ errado. a c˜ Ap´s a substitui¸ao. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o.´ CAP´ ITULO 36.4 Exerc´ ıcio 4 Construindo e consertando algoritmos . Brinquedos “PIRRALHOS ENDIABRADOS” ´ um grande distribuidor de pree sentes em todo o pa´ Recentemente. A04DATA(29 2 2000) = 0 . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. BBB=A (ano) . A05DIAG(9 7 7) = 10 . Trata-se de algo similar a um chines reverso. EEE=2 . EXERC´ ICIOS PRATICOS: 125A . a empresa teve a oportunidade de comprar peıs. Z : inteiro) : inteiro 2: inteiro diag 3: diag ← (X AAA ) + (Y AAA ) + (Z AAA ) √ 4: diag ← diag 5: se diag > BBB ent˜o a 6: devolva 30 7: sen˜o a 8: se diag > CCC ent˜o a 9: devolva 20 10: sen˜o a 11: devolva 10 12: fimse 13: fimse 14: fimfuncao Esta funcao correta. BBB. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. vocˆ receber´ 5 algoritmos. GGG=28 . 20 e 30 cm. JJJ=12 . medidas em cent´ o ımetros. Abaixo de cada algoritmo. Todos os brinquedos caber˜o a em uma das esferas. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). tem as suas 3 dimens˜es A. deu os seguintes resultados: A04DATA(25 12 8360) = 0 . Responda R= se D > GGG ent˜o a erro ← 1 fimse fimse sen˜o a se (M=4)∨(M=6)∨(M=9)∨(M=11) ent˜o a se D > HHH ent˜o a erro ← 1 fimse sen˜o a se D > III ent˜o a erro ← 1 fimse fimse fimse se M > JJJ ent˜o a erro ← 1 fimse retorne erro fimfuncao Esta funcao correta. deu os seguintes resultados: A05DIAG(4 2 8) = 10 . A04DATA(28 2 1968) = 0 . mais e ou menos como o Kinder ovo.III por valores determinados. 1: funcao A05DIAG (X.B. Pedro Kantek 400 vers˜o de 10 de fevereiro de 2008 a . FFF=29 . de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. As substitui¸oes a fazer s˜o: c˜ a AAA=400 . A3 . Y. CCC. at´ III.. B e C.parte 1 Nesta folha. BBB=20 . CCC=20 . A02SOMD(29) = 0 . deu os seguintes resultados: A02SOMD(24) = 35 .T : inteiro 3: M ← 0 4: X ← teto(N 0. M e A representando c˜ e uma data (D ´ o dia. DDD=M .CORRECAO DE ¸˜ ALGORITMOS R : inteiro R ← AAA 4: se X > 0 ent˜o a 5: enquanto BBB >0 fa¸a c 6: R ← R CCC N 7: X ← X DDD 1 8: fimenquanto 9: devolva EEE 10: sen˜o a 11: devolva FFF 12: fimse 13: fimfuncao Esta funcao correta. a funcao deve calcular e devolver o n´ mero N X e se n˜o for deve devolver -1.X. BBB=2 . EEE=R . FFF=0 . e excluindo-se desta soma ele mesmo e a unidade. A03POTE(3 3) = 27 . A03POTE(5 3) = 125 . CCC=N-1 . Pedro Kantek 401 88-08. III=M . M ´ o mˆs e A ´ o ano).´ CAP´ ITULO 36. EEE=T . Algoritmo 3 Escreva uma fun¸ao que receba dois inteiros N e X Se X for maior que c˜ zero. erro : inteiro 3: se 0 = (A mod AAA) ent˜o a 4: biss←1 5: sen˜o a 6: se 0 = (BBB mod 100) ent˜o a 7: biss←0 8: sen˜o a 9: se 0 = (A mod 4) ent˜o a 10: biss←CCC 11: sen˜o a 12: biss←DDD 13: fimse 14: fimse 15: fimse 16: erro ← 0 17: se M = EEE ent˜o a 18: se biss = 1 ent˜o a 19: se D > FFF ent˜o a 20: erro ← 1 21: fimse 22: sen˜o a 23: se D > GGG ent˜o a 24: erro ← 1 25: fimse 26: fimse 27: sen˜o a 28: se (M=4)∨(M=6)∨(M=9)∨(M=11) ent˜o a 29: se D > HHH ent˜o a 30: erro ← 1 31: fimse 88-08. u a 1: funcao A03POTE (N. Pedro Kantek 402 vers˜o de 10 de fevereiro de 2008 a .5 ) 5: para T de AAA a X fa¸a c 6: Z ← BBB mod T 7: se Z = CCC ent˜o a 8: M←M+1 9: fimse 10: fimpara 11: se DDD = 0 ent˜o a 12: devolva EEE 13: sen˜o a 14: devolva FFF 15: fimse 16: fimfuncao Esta funcao correta. 2: 3: Algoritmo 4 Escreva uma fun¸ao que receba trˆs inteiros D. CCC=vezes (multiplicacao) . EEE=primo e FFF=nao primo .T.CORRECAO DE ¸˜ ALGORITMOS Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M. M. a 1: funcao A04DATA (D. deu os seguintes resultados: A01PRIM(20) = NAOPRIMO . CCC=0 . BBB=N . n˜o ´ c˜ u a e preciso testar) e devolva a cadeia ’primo’ se ele for PRIMO e ’n˜o primo’ sen˜o. GGG=N .Z : inteiro 3: M ← AAA 4: para T de BBB a CCC fa¸a c 5: Z ← DDD mod EEE 6: se FFF = Z ent˜o a 7: M ← GGG + HHH 8: fimse 9: fimpara 10: devolva III 11: fimfuncao Esta funcao correta. n˜o c˜ u a ´ preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 sen˜o. DDD=N . A02SOMD(85) = 22 . HHH=T . deu os seguintes resultados: A03POTE(6 3) = 216 . DDD=+ (adicao) . FFF=-1 .X : inteiro) : inteiro vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 36. A : inteiro) : inteiro 2: biss. A01PRIM(67) = PRIMO . EXERC´ ICIOS PRATICOS: 125A . As substitui¸oes a fazer s˜o: c˜ a AAA=1 . A01PRIM(54) = NAOPRIMO . 1: funcao A02SOMD (N : inteiro) : inteiro 2: M. BBB=X . As substitui¸oes a fazer s˜o: c˜ a AAA=0 . EXERC´ ICIOS PRATICOS: 125A . Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero N (inteiro e positivo. todos embalados em caixas retangulares. JJJ=12 . As substitui¸oes a fazer s˜o: c˜ a AAA=2 . Y. EXERC´ ICIOS PRATICOS: 125A . GGG=28 .B. As substitui¸oes a fazer s˜o: c˜ a AAA=400 . deu os seguintes resultados: A04DATA(25 10 32) = 0 . BBB=40 . Pedro Kantek 404 vers˜o de 10 de fevereiro de 2008 a . a empresa teve a oportunidade de comprar peıs. A04DATA(29 2 1900) = 1 . Escreva uma fun¸ao que c˜ receba A. Existem esferas de raios 10. B e C. BBB=A (ano) . para revendˆ-los como surpresa. 20 e 30 cm. foi colocar cada brinquedo em uma esfera colorida. medidas em cent´ o ımetros.CORRECAO DE ¸˜ ALGORITMOS 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: ´ CAP´ ITULO 36. FFF=29 .´ CAP´ ITULO 36. CCC=1 e DDD=0 . Todos os brinquedos caber˜o a em uma das esferas. 1: funcao A05DIAG (X. III=31 . Pedro Kantek 88-08. tem as suas 3 dimens˜es A. A04DATA(29 2 2080) = 0 . Brinquedos “PIRRALHOS ENDIABRADOS” ´ um grande distribuidor de pree sentes em todo o pa´ Recentemente. EXERC´ ICIOS PRATICOS: 125A .5 1 2 3 4 Respostas 0 5 4 1 0 0 9 7 1 1 3 4 0 8 0 7 1 0 2 0 11 18 8 16 Esta funcao correta. CCC=20 . EEE=2 . HHH=31 . Z : inteiro) : inteiro 2: inteiro diag 3: diag ← (X AAA ) + (Y AAA ) + (Z AAA ) √ 4: diag ← diag 5: se diag > BBB ent˜o a 6: devolva 30 7: sen˜o a 8: se diag > CCC ent˜o a 9: devolva 20 10: sen˜o a 11: devolva 10 12: fimse 13: fimse 14: fimfuncao Esta funcao correta. Cada brinquedo. A05DIAG(28 28 26) = 30 .CORRECAO DE ¸˜ ALGORITMOS sen˜o a se D > III ent˜o a erro ← 1 fimse fimse fimse se M > JJJ ent˜o a erro ← 1 fimse retorne erro fimfuncao 36. Responda R= vers˜o de 10 de fevereiro de 2008 a 403 88-08. quenos brinquedos. O objetivo da compra. A05DIAG(2 6 3) = 10 . mais e ou menos como o Kinder ovo.C e retorne e o raio da menor esfera poss´ ıvel. deu os seguintes resultados: A05DIAG(2 9 2) = 10 . 6 a resposta deve ser 5. que tˆm algumas lacunas representadas pelas e a e constantes AAA. Trata-se de algo similar a um chines reverso.1 Exerc´ ıcio 1 Construindo e consertando algoritmos . at´ III. deu os seguintes resultados: B02ACHK(12.20 30 25 26 21 23 12 14 15 27)=7 . 7. se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta ´ 2. Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. Por exemplo. a resposta ´ -1. N[10] : inteiro) : inteiro 2: inteiro RES. Abaixo de cada algoritmo. Se K=8 e N=1 3 5 7 9 2 4 6 8 10. 8.. desordenado) e uma chave K tamb´m inteira e e devolva a quantidade de vezes que K aparece em N. mas precisa apenas determinar que o algoritmo est´ errado. 7.III por valores determinados. 8. FFF=I . vocˆ receber´ 5 algoritmos. 19.. 8: 9: Cap´ ıtulo 37 Exerc´ ıcios Pr´ticos: 125b a Corre¸˜o de algoritmos ca 37. FFF=11 (ou qualquer > 10) . a c˜ Ap´s a substitui¸ao. a resposta e ´ 0 e se K=1. Se K=13 e N ´ o mesmo. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. a e Se o vetor for 4. GGG=QUA . BBB=MAI .. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). 7. 3. 12. Se n˜o houver K em N. B01ACHM(1 3 4 3 4 4 1 3 3 1) = 3 . A4 e A5 . a resposta deve ser 2.. BBB=1 .. deu os seguintes resultados: B01ACHM(1 1 6 5 3 4 7 5 7 4) = 7 . ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. retornar -1. c 2. 7. EEE=QUA . Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um vetor de 10 n´ meros inteiros e dec˜ u volva a posi¸ao daquele n´ mero que ´ o maior do vetor.I : inteiro 3: I ← AAA 4: BBB ← -99999 5: enquanto CCC < 11 fa¸a c 6: se N[I] > DDD ent˜o a 7: MAI ← N[I] 405 Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero K (inteiro. 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI. a reposta ´ 1. Idem para A2 .N[10] : inteiro) : inteiro 2: inteiro QTD. j´ que o 21 (o maior) ´ o quinto elemento. a resposta deve ser 9. deve retornar o primeiro. a Por exemplo.I 3: RES ← AAA 4: I ← BBB 5: enquanto CCC < 11 fa¸a c 6: se N[I] = DDD ent˜o a 7: RES ← EEE 8: I ← FFF 9: fimse 10: I←I+1 11: fimenquanto 12: devolva GGG 13: fimfuncao Esta funcao correta. A3 . 2. 8. . Por exemplo.QUA. Se K=18. GGG=RES . 1. DDD=K . As substitui¸oes a fazer s˜o: c˜ a AAA=-1 . EXERC´ ICIOS PRATICOS: 125B . a resposta ´ 4. Pedro Kantek 406 vers˜o de 10 de fevereiro de 2008 a . 19.23 30 11 12 25 24 19 15 20 18)=8 . Se K=7 e N ´ o mesmo. Se houver mais de c˜ 1 valor de K em N. DDD=MAI . e e e e 1: funcao B02ACHKK (K.´ CAP´ ITULO 37. e e 1: funcao B03CONK (K. 21.parte 2 Nesta folha. deve-se retornar o endere¸o do primeiro. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. CCC. B02ACHK(15. em princ´ ıpio sem nenhuma ordem (ou seja. B01ACHM(18 8 17 12 4 7 19 10 13 6) = 7 . 12. EEE=I . BBB. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . n˜o ´ preciso c˜ u a e testar) e um vetor N de 10 inteiros e e devolva a posi¸ao de K em N. se o vetor for 4.CORRECAO DE ¸˜ ALGORITMOS EEE ← I fimse 10: FFF ← I + 1 11: fimenquanto 12: devolva GGG 13: fimfuncao Esta funcao correta. B02ACHK(17. Se houver dois ou mais iguais c˜ u e a este maior.I 3: QTD ← AAA 4: para I de BBB a CCC passo DDD fa¸a c 5: se N[I] = EEE ent˜o a 6: QTD ← FFF+ 1 7: fimse 8: fimpara 9: devolva GGG 88-08. 5. CCC=I . a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado.13 37 38 26 34 20 15 33 27 32)=-1 .. CCC=I . 5 6 6 .2. Al´m disso.CORRECAO DE ¸˜ ALGORITMOS O vetor est´ em ordem ? Escreva o algoritmo de uma fun¸ao que receba um vetor a c˜ de 10 inteiros e devolva 0 se o vetor est´ em ordem crescente e 1 sen˜o. GGG=QTD .ASA.MAN. Um vetor V a a est´ em ordem crescente para quaisquer i e j.16.J. A c˜ fun¸ao deve devolver 3 valores (um real e dois inteiros).2. BBB=10 .12 18 13 16 16 15 12 15 13 18)=2 .2. B03CONK(17.inteiro MED : real I. As substitui¸oes a fazer s˜o: c˜ a AAA=0 .10. HHH=J .5. CCC=I . essa express˜o tem c c˜ e a que ser v´lida para todos os pares dentro do vetor.21 a resposta ´ 1 e se for 2.5 2 3 .SOM. Pedro Kantek 88-08. a saber: c˜ m´dia A soma dos elementos dividido por 11 e moda o valor mais freq¨ ente no vetor u mediana O valor do meio (neste caso o N[6]) funcao B04ESTA (N[11] : inteiro) : real. FFF=SOM .3. As substitui¸oes a fazer s˜o: c˜ a AAA=0 . deu os seguintes resultados: B04ESTA(1 2 2 4 4 6 6 7 7 7 8) = 4.MAN 30: fimfuncao Esta funcao correta. ´ v´lida a express˜o a e a a V [j] ≥ V [i]. B04ESTA(1 4 5 5 6 6 6 6 7 7 8) = 5. e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I.2.4. B04ESTA(1 2 2 2 3 3 4 4 6 6 6) = 3. 10: ´ CAP´ ITULO 37.CTDR[11] : inteiro 4: I ← 1 5: SOM ← AAA 6: enquanto I < BBB fa¸a c 7: SOM ← CCC + N[I] 8: I←I+1 9: fimenquanto 10: DDD ← SOM ÷ 11 11: EEE ← N[6] 12: para I de 1 a 11 fa¸a c 13: SOM ← 0 14: para J de 1 a 11 fa¸a c 15: se N[I] = N[J] ent˜o a 16: SOM ← SOM + 1 17: fimse 18: fimpara 19: CTDR[I] ← FFF 20: fimpara 21: MAI ← -9999 22: para J de 1 a 11 fa¸a c 23: se CTDR[J] > GGG ent˜o a 24: MAI ← CTDR[J] 25: ASA ← HHH 26: fimse 27: fimpara 28: III ← N[ASA] 29: devolva MED.7.12 15 13 12 18 14 18 13 15 12)=2 . Pedro Kantek 408 vers˜o de 10 de fevereiro de 2008 a . B03CONK(15.21 a resposta ´ 0. GGG=MAI . deu os seguintes resultados: B05ESOR(2 5 6 7 12 27 35 44 60 86) = 0 .6. EXERC´ ICIOS PRATICOS: 125B .2.5. B05ESOR(5 7 20 35 37 38 68 55 78 79) = 1 . EEE=K . EXERC´ ICIOS PRATICOS: 125B .2. Responda R= 407 88-08.2.CORRECAO DE ¸˜ ALGORITMOS fimfuncao Esta funcao correta. B05ESOR(1 4 17 22 29 41 95 51 92 93) = 1 .16.9. Se o vetor for e 1. DDD=1 . BBB=12 . RES 3: RES ← AAA 4: I ← 1 5: enquanto I < BBB fa¸a c 6: se N[I] >N[I+1] ent˜o a 7: RES ← 1 8: fimse 9: I←I+1 10: fimenquanto 11: devolva CCC 12: fimfuncao Algoritmo 4 Escreva uma fun¸ao que receba um vetor ordenado de 11 inteiros.15 31 16 34 33 25 38 37 17 11)=1 . CCC=SOM .inteiro. CCC=10 .4.2 a resposta ´ 0. a Por exemplo se o vetor for 1.´ CAP´ ITULO 37. FFF=QTD .8. BBB=1 .6. DDD=MED . Note a presen¸a da igualdade na condi¸ao.3. deu os seguintes resultados: B03CONK(18.2. 1: 2: 3: vers˜o de 10 de fevereiro de 2008 a Esta funcao correta. sendo que j > i.10.MOD. EEE=MAN .MOD. III=MOD .9 7 6 . As substitui¸oes a fazer s˜o: c˜ a AAA=0 .7. 18 12 11 13 17 15 17 11 17 11)=3 .J. deve-se retornar o endere¸o do primeiro. BBB=1 . EXERC´ ICIOS PRATICOS: 125B .inteiro MED : real 3: I.21 40 26 16 38 28 15 20 17 19)=9 . 3. FFF=QTD . DDD=K . e e 1: funcao B03CONK (K. CCC. 21. EEE=I .CORRECAO DE ¸˜ ALGORITMOS funcao B02ACHKK (K.CTDR[11] : inteiro 1: 2: 88-08.CORRECAO DE ¸˜ ALGORITMOS ´ CAP´ ITULO 37. Idem para A2 . em princ´ ıpio sem nenhuma ordem (ou seja. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . 7.. 8. Se houver dois ou mais iguais c˜ u e a este maior.14 18 16 18 16 13 13 16 11 17)=2 . deu os seguintes resultados: B02ACHK(17. A3 . Se K=8 e N=1 3 5 7 9 2 4 6 8 10. a reposta ´ 1. EEE=I . Se K=13 e N ´ o mesmo. Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero K (inteiro.´ CAP´ ITULO 37. desordenado) e uma chave K tamb´m inteira e e devolva a quantidade de vezes que K aparece em N. Se K=18. Trata-se de algo similar a um chines reverso. vocˆ receber´ 5 algoritmos. DDD=MAI . 1: 2: 37. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio).I 3: RES ← AAA 4: I ← BBB 5: enquanto CCC < 11 fa¸a c 6: se N[I] = DDD ent˜o a 7: RES ← EEE 8: I ← FFF 9: fimse 10: I←I+1 11: fimenquanto 12: devolva GGG 13: fimfuncao Esta funcao correta. at´ III. 12. Algoritmo 4 Escreva uma fun¸ao que receba um vetor ordenado de 11 inteiros. se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta ´ 2. mas precisa apenas determinar que o algoritmo est´ errado. N[10] : inteiro) : inteiro inteiro RES. BBB=MAI .N[10] : inteiro) : inteiro 2: inteiro QTD. As substitui¸oes a fazer s˜o: c˜ a AAA=-1 . EXERC´ ICIOS PRATICOS: 125B . 8.QUA.parte 2 Nesta folha. B03CONK(17. . B02ACHK(14. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. e e e e vers˜o de 10 de fevereiro de 2008 a Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros.ASA. a c˜ Ap´s a substitui¸ao. 7. 2. FFF=I . 7. BBB=1 . GGG=QUA .. n˜o ´ preciso c˜ u a e testar) e um vetor N de 10 inteiros e e devolva a posi¸ao de K em N. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. a resposta deve ser 9.. FFF=11 (ou qualquer > 10) . B03CONK(17. c 2.MAN. CCC=I . GGG=I . A4 e A5 . GGG=QTD .2 Exerc´ ıcio 2 Construindo e consertando algoritmos . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. a saber: c˜ m´dia A soma dos elementos dividido por 11 e moda o valor mais freq¨ ente no vetor u mediana O valor do meio (neste caso o N[6]) funcao B04ESTA (N[11] : inteiro) : real. Se n˜o houver K em N. a Por exemplo. As substitui¸oes a fazer s˜o: c˜ a AAA=0 . DDD=1 . a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um vetor de 10 n´ meros inteiros e dec˜ u volva a posi¸ao daquele n´ mero que ´ o maior do vetor.SOM. retornar -1. B02ACHK(17. Pedro Kantek 409 88-08. Por exemplo. 6 a resposta deve ser 5. EEE=MAI . ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. a resposta ´ -1. Abaixo de cada algoritmo.I 3: QTD ← AAA 4: para I de BBB a CCC passo DDD fa¸a c 5: se N[I] = EEE ent˜o a 6: QTD ← FFF+ 1 7: fimse 8: fimpara 9: devolva GGG 10: fimfuncao Esta funcao correta. a resposta ´ 4. deve retornar o primeiro. Pedro Kantek 410 vers˜o de 10 de fevereiro de 2008 a .inteiro.14 28 27 21 11 18 12 13 15 17)=10 . que tˆm algumas lacunas representadas pelas e a e constantes AAA. 19.MOD. 8.III por valores determinados. BBB. Por exemplo. j´ que o 21 (o maior) ´ o quinto elemento. 7. 1. a resposta e ´ 0 e se K=1. Se K=7 e N ´ o mesmo. CCC=10 . B01ACHM(4 2 1 5 4 2 5 1 2 2) = 4 . a e Se o vetor for 4. 12..16 17 14 23 22 28 27 25 12 30)=3 ..I : inteiro 3: I ← AAA 4: BBB ← -99999 5: enquanto CCC < 11 fa¸a c 6: se N[I] > DDD ent˜o a 7: MAI ← N[I] 8: EEE ← I 9: fimse 10: FFF ← I + 1 11: fimenquanto 12: devolva GGG 13: fimfuncao Esta funcao correta. deu os seguintes resultados: B01ACHM(2 4 6 6 1 2 6 4 1 7) = 10 . se o vetor for 4. deu os seguintes resultados: B03CONK(18. CCC=I . a resposta deve ser 2. B01ACHM(14 16 5 18 17 8 11 2 19 20) = 10 . 5. 19.23 29 14 24 37 26 15 36 30 20)=0 . Se houver mais de c˜ 1 valor de K em N. A c˜ fun¸ao deve devolver 3 valores (um real e dois inteiros). 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI.. 6 1 5 .2. Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio).MAN 30: fimfuncao Esta funcao correta. a 88-08. vocˆ receber´ 5 algoritmos. B04ESTA(1 1 1 2 6 6 6 7 7 7 8) = 4. EXERC´ ICIOS PRATICOS: 125B . Pedro Kantek 411 88-08. B05ESOR(12 13 41 47 52 66 21 87 90 97) = 1 .3. deu os seguintes resultados: B04ESTA(1 2 3 3 4 4 4 4 6 7 7) = 4. Pedro Kantek 412 vers˜o de 10 de fevereiro de 2008 a .16.2. Responda R= O vetor est´ em ordem ? Escreva o algoritmo de uma fun¸ao que receba um vetor a c˜ de 10 inteiros e devolva 0 se o vetor est´ em ordem crescente e 1 sen˜o. Note a presen¸a da igualdade na condi¸ao.16. a c˜ Ap´s a substitui¸ao. RES 3: RES ← AAA 4: I ← 1 5: enquanto I < BBB fa¸a c 6: se N[I] >N[I+1] ent˜o a 7: RES ← 1 8: fimse 9: I←I+1 10: fimenquanto 11: devolva CCC vers˜o de 10 de fevereiro de 2008 a 37. 4: 5: ´ CAP´ ITULO 37..6.7 1 6 . at´ III.III por valores determinados. Al´m disso. ´ v´lida a express˜o a e a a V [j] ≥ V [i]. B04ESTA(1 1 2 3 4 5 6 6 7 8 8) = 4. CCC=RES .2 a resposta ´ 0.8. sendo que j > i.. BBB.7.4.MOD.2.5. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . que tˆm algumas lacunas representadas pelas e a e constantes AAA. CCC.4.9. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. DDD=MED .21 a resposta ´ 1 e se for 2.3 Exerc´ ıcio 3 Construindo e consertando algoritmos . .7. e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I.parte 2 Nesta folha. B05ESOR(32 38 42 53 59 66 65 74 83 89) = 1 . FFF=SOM .2.10. mas precisa apenas determinar que o algoritmo est´ errado.2. EEE=MAN .3.´ CAP´ ITULO 37.CORRECAO DE ¸˜ ALGORITMOS 12: fimfuncao Esta funcao correta. deu os seguintes resultados: B05ESOR(7 8 36 47 48 50 65 70 89 90) = 0 ..CORRECAO DE ¸˜ ALGORITMOS I←1 SOM ← AAA 6: enquanto I < BBB fa¸a c 7: SOM ← CCC + N[I] 8: I←I+1 9: fimenquanto 10: DDD ← SOM ÷ 11 11: EEE ← N[6] 12: para I de 1 a 11 fa¸a c 13: SOM ← 0 14: para J de 1 a 11 fa¸a c 15: se N[I] = N[J] ent˜o a 16: SOM ← SOM + 1 17: fimse 18: fimpara 19: CTDR[I] ← FFF 20: fimpara 21: MAI ← -9999 22: para J de 1 a 11 fa¸a c 23: se CTDR[J] > GGG ent˜o a 24: MAI ← CTDR[J] 25: ASA ← HHH 26: fimse 27: fimpara 28: III ← N[ASA] 29: devolva MED. Se o vetor for e 1.2.21 a resposta ´ 0.2. CCC=SOM . Um vetor V a a est´ em ordem crescente para quaisquer i e j.5. Abaixo de cada algoritmo. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro.. HHH=J .6. EXERC´ ICIOS PRATICOS: 125B ..10.. BBB=10 . essa express˜o tem c c˜ e a que ser v´lida para todos os pares dentro do vetor. a Por exemplo se o vetor for 1.1 4 4 . III=MOD . GGG=MAI .2. As substitui¸oes a fazer s˜o: c˜ a AAA=0 . BBB=12 . Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. GGG=QUA .29 21 12 23 26 20 16 13 28 24)=6 .I : inteiro 3: I ← AAA 4: BBB ← -99999 5: enquanto CCC < 11 fa¸a c 6: se N[I] > DDD ent˜o a 7: MAI ← N[I] 8: EEE ← I 9: fimse 10: FFF ← I + 1 11: fimenquanto 12: devolva GGG 13: fimfuncao Esta funcao correta. CCC=10 . a Por exemplo. 7.inteiro. CCC=I .MAN. GGG=RES .ASA. EEE=I . 1. N[10] : inteiro) : inteiro 2: inteiro RES. DDD=K . B01ACHM(9 8 18 16 1 13 3 5 14 11) = 3 . 3. desordenado) e uma chave K tamb´m inteira e e devolva a quantidade de vezes que K aparece em N. BBB=1 . B03CONK(17. 5. Idem para A2 . 19. Se K=18. 21.QUA. a saber: c˜ m´dia A soma dos elementos dividido por 11 e moda o valor mais freq¨ ente no vetor u mediana O valor do meio (neste caso o N[6]) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: funcao B04ESTA (N[11] : inteiro) : real. deu os seguintes resultados: B03CONK(14. A c˜ fun¸ao deve devolver 3 valores (um real e dois inteiros). a resposta ´ -1. a e Se o vetor for 4. Se houver dois ou mais iguais c˜ u e a este maior. em princ´ ıpio sem nenhuma ordem (ou seja. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . Se K=7 e N ´ o mesmo. se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta ´ 2. Pedro Kantek . 8. DDD=1 .CTDR[11] : inteiro I←1 SOM ← AAA enquanto I < BBB fa¸a c SOM ← CCC + N[I] I←I+1 fimenquanto DDD ← SOM ÷ 11 EEE ← N[6] para I de 1 a 11 fa¸a c SOM ← 0 para J de 1 a 11 fa¸a c se N[I] = N[J] ent˜o a SOM ← SOM + 1 414 vers˜o de 10 de fevereiro de 2008 a 413 88-08. B03CONK(18. 19. Trata-se de algo similar a um chines reverso.´ CAP´ ITULO 37. se o vetor for 4. 7. FFF=11 (ou qualquer > 10) . a resposta deve ser 9.I 3: RES ← AAA 4: I ← BBB 5: enquanto CCC < 11 fa¸a c 6: se N[I] = DDD ent˜o a 7: RES ← EEE 8: I ← FFF 9: fimse 10: I←I+1 11: fimenquanto 12: devolva GGG 13: fimfuncao vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 37.J. 6 a resposta deve ser 5.I 3: QTD ← AAA 4: para I de BBB a CCC passo DDD fa¸a c 5: se N[I] = EEE ent˜o a 6: QTD ← FFF+ 1 7: fimse 8: fimpara 9: devolva GGG 10: fimfuncao Esta funcao correta.18 31 14 23 40 13 17 24 28 16)=1 . c 2. 8. BBB=1 . 8. deve retornar o primeiro. BBB=MAI . B02ACHK(17. Se n˜o houver K em N. Se K=13 e N ´ o mesmo. FFF=QTD . 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI. EXERC´ ICIOS PRATICOS: 125B .CORRECAO DE ¸˜ ALGORITMOS Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado.13 13 11 17 12 11 14 15 15 14)=2 . a resposta deve ser 2.MOD. FFF=I . e e e e 1: funcao B02ACHKK (K. As substitui¸oes a fazer s˜o: c˜ a AAA=-1 . 7. Se K=8 e N=1 3 5 7 9 2 4 6 8 10. j´ que o 21 (o maior) ´ o quinto elemento. Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero K (inteiro.18 15 17 14 14 17 18 14 12 18)=3 . As substitui¸oes a fazer s˜o: c˜ a AAA=0 .N[10] : inteiro) : inteiro 2: inteiro QTD. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um vetor de 10 n´ meros inteiros e dec˜ u volva a posi¸ao daquele n´ mero que ´ o maior do vetor. a resposta ´ 4. EEE=K . EEE=QUA .SOM. A3 .inteiro MED : real I. B01ACHM(2 5 5 4 5 2 3 1 5 2) = 2 .28 14 30 25 17 20 16 18 13 29)=10 . Pedro Kantek 88-08. 2. e e 1: funcao B03CONK (K.26 24 27 34 23 11 37 25 39 31)=-1 . DDD=MAI . deu os seguintes resultados: B02ACHK(20. a resposta e ´ 0 e se K=1. GGG=I . deu os seguintes resultados: B01ACHM(4 1 4 3 2 5 4 5 2 5) = 6 . Se houver mais de c˜ 1 valor de K em N. deve-se retornar o endere¸o do primeiro. retornar -1. 12. EXERC´ ICIOS PRATICOS: 125B . CCC=N[I] . B02ACHK(29. 12.CORRECAO DE ¸˜ ALGORITMOS Esta funcao correta. A4 e A5 . a reposta ´ 1. Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros. n˜o ´ preciso c˜ u a e testar) e um vetor N de 10 inteiros e e devolva a posi¸ao de K em N. Algoritmo 4 Escreva uma fun¸ao que receba um vetor ordenado de 11 inteiros. Por exemplo. Por exemplo. 7. deve-se retornar o endere¸o do primeiro. FFF=I . Trata-se de algo similar a um chines reverso.2.MOD.III por valores determinados. at´ III. 12. CCC=SOM . Um vetor V a a est´ em ordem crescente para quaisquer i e j.3. deu os seguintes resultados: B01ACHM(4 4 3 2 1 2 6 3 1 4) = 7 . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado.7. DDD=MED . GGG=MAI . ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. BBB=10 . e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I.4.QUA.6. vocˆ receber´ 5 algoritmos. 3. a e Se o vetor for 4. retornar -1. B01ACHM(5 3 3 1 4 1 1 2 2 1) = 1 . a resposta deve ser 2. B01ACHM(11 10 13 12 19 7 5 16 6 17) = 5 . III=MOD ..9. EXERC´ ICIOS PRATICOS: 125B .CORRECAO DE ¸˜ ALGORITMOS fimse fimpara 19: CTDR[I] ← FFF 20: fimpara 21: MAI ← -9999 22: para J de 1 a 11 fa¸a c 23: se CTDR[J] > GGG ent˜o a 24: MAI ← CTDR[J] 25: ASA ← HHH 26: fimse 27: fimpara 28: III ← N[ASA] 29: devolva MED. EEE=QUA .. a resposta deve ser 9. Se o vetor for e 1.´ CAP´ ITULO 37. B05ESOR(23 26 44 46 49 50 20 61 69 70) = 1 . Pedro Kantek 88-08.. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado.I : inteiro 3: I ← AAA 4: BBB ← -99999 5: enquanto CCC < 11 fa¸a c 6: se N[I] > DDD ent˜o a 7: MAI ← N[I] 8: EEE ← I 9: fimse 10: FFF ← I + 1 11: fimenquanto 12: devolva GGG 13: fimfuncao Esta funcao correta. CCC=RES . RES 3: RES ← AAA 4: I ← 1 5: enquanto I < BBB fa¸a c 6: se N[I] >N[I+1] ent˜o a 7: RES ← 1 8: fimse 9: I←I+1 10: fimenquanto 11: devolva CCC 12: fimfuncao Esta funcao correta.10.MAN 30: fimfuncao Esta funcao correta. BBB=MAI . 12.2. deve retornar o primeiro.21 a resposta ´ 1 e se for 2. B04ESTA(2 3 4 5 5 5 6 6 8 8 8) = 5.CORRECAO DE ¸˜ ALGORITMOS 37. CCC.. Se houver mais de c˜ 1 valor de K em N. Se K=13 e N ´ o mesmo.6. n˜o ´ preciso c˜ u a e testar) e um vetor N de 10 inteiros e e devolva a posi¸ao de K em N.2 4 4 . 5. 8. que tˆm algumas lacunas representadas pelas e a e constantes AAA. e e e e O vetor est´ em ordem ? Escreva o algoritmo de uma fun¸ao que receba um vetor a c˜ de 10 inteiros e devolva 0 se o vetor est´ em ordem crescente e 1 sen˜o. BBB=12 . DDD=MAI . a resposta ´ 4. mas precisa apenas determinar que o algoritmo est´ errado. B04ESTA(1 2 3 3 4 4 4 4 7 7 7) = 4. sendo que j > i. Se K=8 e N=1 3 5 7 9 2 4 6 8 10. 8. .parte 2 Nesta folha. Al´m disso.5 5 5 .5. 6 a resposta deve ser 5. EEE=MAN . 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI. Abaixo de cada algoritmo. 21. Idem para A2 . Por exemplo. deu os seguintes resultados: B04ESTA(1 1 2 3 3 4 4 5 6 7 8) = 4. 2. 7. a resposta ´ -1.16. ´ v´lida a express˜o a e a a V [j] ≥ V [i]. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o.2. Pedro Kantek 416 vers˜o de 10 de fevereiro de 2008 a .. HHH=J .21 a resposta ´ 0. 8. 7.2 a resposta ´ 0. As substitui¸oes a fazer s˜o: c˜ a AAA=1 .2.10. BBB. 17: 18: ´ CAP´ ITULO 37. a Por exemplo se o vetor for 1. Se houver dois ou mais iguais c˜ u e a este maior. As substitui¸oes a fazer s˜o: c˜ a AAA=0 . a Por exemplo. CCC=I . 7. As substitui¸oes a fazer s˜o: c˜ a AAA=1 .16. j´ que o 21 (o maior) ´ o quinto elemento. Note a presen¸a da igualdade na condi¸ao. essa express˜o tem c c˜ e a que ser v´lida para todos os pares dentro do vetor.2. 1.4. a c˜ Ap´s a substitui¸ao. A4 e A5 . B05ESOR(3 5 6 11 12 23 72 58 63 75) = 1 .2. 7.4 Exerc´ ıcio 4 Construindo e consertando algoritmos .. deu os seguintes resultados: B05ESOR(11 14 26 43 50 56 63 66 73 96) = 0 . Algoritmo 2 Escreva uma fun¸ao que receba um n´ mero K (inteiro. se o vetor for 4. 19.8. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba um vetor de 10 n´ meros inteiros e dec˜ u volva a posi¸ao daquele n´ mero que ´ o maior do vetor.7. c 2. A3 .2. Se K=7 e N ´ o mesmo.2. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). Se n˜o houver K em N. FFF=SOM . Responda R= vers˜o de 10 de fevereiro de 2008 a 415 88-08. EXERC´ ICIOS PRATICOS: 125B .0 1 4 .5. GGG=QUA . 19.3. I 3: RES ← AAA 4: I ← BBB 5: enquanto CCC < 11 fa¸a c 6: se N[I] = DDD ent˜o a 7: RES ← EEE 8: I ← FFF 9: fimse 10: I←I+1 11: fimenquanto 12: devolva GGG 13: fimfuncao Esta funcao correta.25 15 23 16 17 11 20 19 13 27)=6 . Algoritmo 4 Escreva uma fun¸ao que receba um vetor ordenado de 11 inteiros.3. 5: Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros.MAN. DDD=MED . e e 1: funcao B03CONK (K. FFF=11 (ou qualquer > 10) .MOD.MOD. Pedro Kantek 417 88-08. RES 3: RES ← AAA 4: I ← 1 5: enquanto I < BBB fa¸a c 6: se N[I] >N[I+1] ent˜o a 7: RES ← 1 8: fimse 9: I←I+1 10: fimenquanto 11: devolva CCC 88-08.13 30 25 23 18 27 24 16 20 11)=6 . BBB=0 . As substitui¸oes a fazer s˜o: c˜ a AAA=-1 . EEE=K . Al´m disso. em princ´ ıpio sem nenhuma ordem (ou seja. FFF=QTD . Note a presen¸a da igualdade na condi¸ao. Pedro Kantek 418 vers˜o de 10 de fevereiro de 2008 a .16.2. Se o vetor for e 1. Se K=18. essa express˜o tem c c˜ e a que ser v´lida para todos os pares dentro do vetor. Por exemplo.inteiro MED : real 3: I.I 3: QTD ← AAA 4: para I de BBB a CCC passo DDD fa¸a c 5: se N[I] = EEE ent˜o a 6: QTD ← FFF+ 1 7: fimse 8: fimpara 9: devolva GGG 10: fimfuncao Esta funcao correta.SOM. GGG=MAI .12 18 14 13 15 11 11 13 15 11)=2 . GGG=RES .´ CAP´ ITULO 37. desordenado) e uma chave K tamb´m inteira e e devolva a quantidade de vezes que K aparece em N.7.2.9.25 38 30 12 34 15 33 14 21 32)=-1 .0 2 4 . EEE=I .CORRECAO DE ¸˜ ALGORITMOS funcao B02ACHKK (K.18 17 14 16 12 13 12 17 14 12)=3 . FFF=SOM .5 4 4 . N[10] : inteiro) : inteiro inteiro RES. GGG=QTD . CCC=I .CTDR[11] : inteiro 1: 2: vers˜o de 10 de fevereiro de 2008 a O vetor est´ em ordem ? Escreva o algoritmo de uma fun¸ao que receba um vetor a c˜ de 10 inteiros e devolva 0 se o vetor est´ em ordem crescente e 1 sen˜o. EXERC´ ICIOS PRATICOS: 125B .2. B02ACHK(17. DDD=1 .6. Um vetor V a a est´ em ordem crescente para quaisquer i e j.29 11 21 23 30 39 31 35 16 14)=0 . a resposta e ´ 0 e se K=1. deu os seguintes resultados: B02ACHK(27. a Por exemplo se o vetor for 1. B04ESTA(2 2 2 3 3 4 5 6 6 8 8) = 4. CCC=SOM .16. III=MOD . B02ACHK(11. BBB=12 .ASA.21 a resposta ´ 1 e se for 2. CCC=10 .5. e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I.8. 1: 2: 4: ´ CAP´ ITULO 37. BBB=1 . se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta ´ 2.6.4. a saber: c˜ m´dia A soma dos elementos dividido por 11 e moda o valor mais freq¨ ente no vetor u mediana O valor do meio (neste caso o N[6]) funcao B04ESTA (N[11] : inteiro) : real. As substitui¸oes a fazer s˜o: c˜ a AAA=0 .CORRECAO DE ¸˜ ALGORITMOS I←1 SOM ← AAA 6: enquanto I < BBB fa¸a c 7: SOM ← CCC + N[I] 8: I←I+1 9: fimenquanto 10: DDD ← SOM ÷ 11 11: EEE ← N[6] 12: para I de 1 a 11 fa¸a c 13: SOM ← 0 14: para J de 1 a 11 fa¸a c 15: se N[I] = N[J] ent˜o a 16: SOM ← SOM + 1 17: fimse 18: fimpara 19: CTDR[I] ← FFF 20: fimpara 21: MAI ← -9999 22: para J de 1 a 11 fa¸a c 23: se CTDR[J] > GGG ent˜o a 24: MAI ← CTDR[J] 25: ASA ← HHH 26: fimse 27: fimpara 28: III ← N[ASA] 29: devolva MED. B04ESTA(1 2 2 3 4 4 4 4 4 5 6) = 3. HHH=J .21 a resposta ´ 0.inteiro.7. deu os seguintes resultados: B03CONK(15.4. A c˜ fun¸ao deve devolver 3 valores (um real e dois inteiros).MAN 30: fimfuncao Esta funcao correta.N[10] : inteiro) : inteiro 2: inteiro QTD. As substitui¸oes a fazer s˜o: c˜ a AAA=0 . ´ v´lida a express˜o a e a a V [j] ≥ V [i].2.J.5. B03CONK(12.5 2 4 . EXERC´ ICIOS PRATICOS: 125B . a reposta ´ 1. B03CONK(17.2.2.2. EEE=MAN .2.10. deu os seguintes resultados: B04ESTA(1 2 2 3 3 4 4 5 6 7 7) = 4.3.2 a resposta ´ 0. sendo que j > i. DDD=K .10. Pedro Kantek 420 vers˜o de 10 de fevereiro de 2008 a . CCC=RES . EXERC´ ICIOS PRATICOS: 125B .5 1 2 3 4 Respostas 0 5 3 0 0 7 0 0 0 5 7 2 0 1 1 0 3 0 0 1 15 16 18 11 vers˜o de 10 de fevereiro de 2008 a 419 88-08. B05ESOR(28 39 41 42 49 51 34 78 81 89) = 1 . As substitui¸oes a fazer s˜o: c˜ a AAA=1 .´ CAP´ ITULO 37. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 125B . deu os seguintes resultados: B05ESOR(14 34 41 47 48 51 54 57 62 96) = 0 . B05ESOR(5 21 22 23 28 36 38 57 84 96) = 1 . BBB=10 .CORRECAO DE ¸˜ ALGORITMOS 12: fimfuncao Esta funcao correta. ´ CAP´ ITULO 37.CORRECAO DE ¸˜ ALGORITMOS Responda R= 37. tamb´m e crescente onde a chave K foi inclu´ em seu local correto. A3 .. BBB.. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI. Pedro Kantek 422 vers˜o de 10 de fevereiro de 2008 a . EEE=FIM .. EXERC´ ICIOS PRATICOS: 125C . GGG=INI+1 . . Idem para A2 . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. Trata-se de algo similar a um chines reverso.. Abaixo de cada algoritmo.1 Exerc´ ıcio 1 20: 21: 22: 23: 24: Construindo e consertando algoritmos . III=EPAL . ) = 1 . CCC=FIM . CCC. deu os seguintes resultados: 88-08. V[10] : inteiro) : R[11] inteiro 2: inteiro I.. ) = 1 .FIM.’ fa¸a c TAM ← TAM + 1 fimenquanto INI ← 1 FIM ← BBB EPAL ← 1 enquanto INI < CCC fa¸a c enquanto X[DDD] = ’ ’ fa¸a c INI ← INI + 1 fimenquanto enquanto X[EEE] = ’ ’ fa¸a c FIM ← FIM .´ CAP´ ITULO 38. a c˜ Ap´s a substitui¸ao. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. deu os seguintes resultados: C01PALI(ABRACADABRA. ) = 0 .CORRECAO DE ¸˜ ALGORITMOS 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: Cap´ ıtulo 38 Exerc´ ıcios Pr´ticos: 125c a Corre¸˜o de algoritmos ca 38.III por valores determinados. que tˆm algumas lacunas representadas pelas e a e constantes AAA. mas precisa apenas determinar que o algoritmo est´ errado. DDD=INI . FFF=um sinal de = .. A4 e A5 . vocˆ receber´ 5 algoritmos. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba uma frase (cadeia de at´ 80 caracteres. Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma chave K (Inteiro) c˜ e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. HHH=FIM-1 . c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio).J 3: para I de 1 a AAA fa¸a c 4: R[I] ← V[I] 5: fimpara 6: I ← BBB 7: enquanto (R[I] ≤ CCC)∧(I<DDD) fa¸a c 8: I ← EEE 9: fimenquanto 10: J ← FFF 11: enquanto J ≥ I fa¸a c 12: R[J+1] ← R[J] 13: J ← GGG 14: fimenquanto 15: R[J+1] ← HHH 16: devolva III 17: fimfuncao Esta funcao correta. c˜ e terminada por um ponto) e devolva 1 se a frase for um pal´ ındromo e 0 sen˜o. Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observa¸ao: note que as posi¸oes do espa¸o em branco n˜o s˜o as mesmas na ida e na c˜ c˜ c a a volta. C01PALI(ROMA AMOR. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro.1 fimenquanto se X[INI] FFF X[FIM] ent˜o a EPAL ← 0 fimse INI ← GGG FIM ← HHH fimenquanto devolva III fimfuncao Esta funcao correta.TAM 421 TAM ← 1 enquanto X[TAM] AAA ’.EPAL. at´ III. As substitui¸oes a fazer s˜o: c˜ a AAA=um sinal de = . C01PALI(OTO COME MOCOTO. Um a pal´ ındromo ´ aquela frase que pode ser lida tanto da direita para a esquerda como ao e contr´rio. BBB=TAM-1 .parte 3 Nesta folha. ıda 1: funcao C02INCL (K. C02INCL(2. )=4 .6 12 18 24 30 36 42 48 54 60)=6 12 18 24 30 36 42 48 54 60 67 . devolver o n´ mero da primeira. FFF=11 . EXERC´ ICIOS PRATICOS: 125C .AMP 3: MAI ← AAA 4: MEN ← BBB 5: para I de 1 a 10 fa¸a c 6: se X[I] > CCC ent˜o a 7: MAI ← X[I] 8: fimse 9: se X[I] < DDD ent˜o a 10: MEN ← X[I] 11: fimse 12: fimpara 13: AMP ← MAI . deu os seguintes resultados: C05AMPL(2 45 21 97 52 51 54 44 99 14) = 97 . incluindo zeros ao final se necess´rio. BBB=TAM+1 . 88-08. J : inteiro 3: I ← AAA 4: J ← BBB 5: enquanto I<CCC fa¸a c 6: se V[I] = K ent˜o a 7: R[J] ← V[I] 8: J ← DDD 9: fimse 10: I ← EEE 11: fimenquanto 12: enquanto J < FFF fa¸a c 13: R[J] ← 0 14: J ← GGG 15: fimenquanto 16: devolva R 17: fimfuncao Esta funcao correta.3 7 5 3 8 3 8 1 6 2) = 3 7 5 3 8 3 8 6 2 0 . DDD=MEN . o ultimo util ´ um ponto) e devolva o n´ mero da palavra que ´ a maior da ´ ´ e u e frase.TAM. CCC== . V[10] : inteiro) : R[10] inteiro 2: I. DDD=J+1 . EXERC´ ICIOS PRATICOS: 125C .MEN.’ fa¸a c 6: TAM ← BBB 7: fimenquanto 8: CTP ← 1 9: I ← 1 10: J ← 0 11: enquanto I ≤ TAM fa¸a c 12: se X[I] CCC ’ ’ ent˜o a 13: TMS[CTP] ← I . GGG=I+1 . Se houver empate (mais de uma palavra com o mesmo comprimento). )=3 . C02INCL(154. C03PALM(EMBORA MENOS PERVERSO QUE. EEE=I . DDD=11 .QUA : inteiro 4: TAM ← AAA 5: enquanto X[TAM] = ’. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . Pedro Kantek 423 88-08. HHH=K .´ CAP´ ITULO 38. As substitui¸oes a fazer s˜o: c˜ a AAA=-9999 . CCC=K . Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I. Por exemplo. 1: funcao C04EXCL (K.CORRECAO DE ¸˜ ALGORITMOS Algoritmo 4 Escreva o algoritmo de uma fun¸ao que receba uma chave K (inteiro) e c˜ um vetor V de 10 inteiros. CCC=11 . vers˜o de 10 de fevereiro de 2008 a Esta funcao correta. deu os seguintes resultados: C04EXCL(1. BBB=1 .J.J 14: TMS[CTP] ← TMS[CTP]-1 15: CTP ← DDD 16: J ← EEE 17: fimse 18: I←I+1 19: fimenquanto 20: TMS[CTP] ← I . se chamada com 22 e 1 7 21 a 22 23 24 28 29 22 90 deve responder 1 7 21 23 24 28 29 90 0 0. a maior palavra tem 3 u letras ´ como h´ empate a resposta deve ser 1. Pedro Kantek 424 vers˜o de 10 de fevereiro de 2008 a .J 21: TMS[CTP] ← TMS[CTP] . Na frase ”OUVIRAM DO IPIRANGA e a AS MARGENS”a resposta deve ser 3. As substitui¸oes a fazer s˜o: c˜ a AAA=11 . HHH=I . C04EXCL(91. Por exemplo.MAI. 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I. C05AMPL(4 6 5 6 5 1 7 2 2 2) = 6 . A fun¸ao deve excluir de V todas as ocorrˆncias (se houver) c˜ e de K.MAI.CTP. FFF=2 .CORRECAO DE ¸˜ ALGORITMOS C02INCL(67.16 22 28 34 40 46 52 58 64 70)=2 16 22 28 34 40 46 52 58 64 70 .FFF 22: MAI ← -99999 23: para I de 1 a GGG fa¸a c 24: se TMS[I] > MAI ent˜o a 25: MAI ← TMS[I] 26: QUA ← HHH 27: fimse 28: fimpara 29: devolva MAI 30: fimfuncao Esta funcao correta.MEN 14: RRRR ← AMP 15: fimfuncao 16: Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma frase (cadeia de 80 c˜ caracteres.44 9 23 50 41 21 40 3 48 17) = 44 9 23 50 41 21 40 3 48 17 . BBB=1 . EEE=I+1 . GGG=CTP . DDD=CTP+1 . C03PALM(DECORRIDO ENTRE O DESAPARECIMENTO.7 14 21 28 35 42 49 56 63 70)=7 14 21 28 35 42 49 56 63 70 154 . C05AMPL(35 64 39 91 51 36 68 55 79 62) = 56 . GGG=J-1 . III=QUA . III=R . FFF=10 . As substitui¸oes a fazer s˜o: c˜ a AAA=1 . BBB=-9999 . CCC=MAI . deu os seguintes resultados: C03PALM(ATE O PONTO DE FAZER INFERENCIA.3 5 5 8 8 1 6 1 10 6) = 3 5 5 8 8 1 6 1 10 6 . na frase ”IVO VIU A UVA”. EEE=I+1 . )=6 . C04EXCL(4. ´ CAP´ ITULO 38. deu os seguintes resultados: C01PALI(BRASIL E LISARB. ıda 1: funcao C02INCL (K. As substitui¸oes a fazer s˜o: c˜ a AAA=um sinal de = . FFF=um sinal de = . A4 e A5 .CORRECAO DE ¸˜ ALGORITMOS Responda R= ´ CAP´ ITULO 38. Pedro Kantek 426 vers˜o de 10 de fevereiro de 2008 a .. EEE=FIM .. DDD=FIM .parte 3 Nesta folha.’ fa¸a c 5: TAM ← TAM + 1 6: fimenquanto 7: INI ← 1 8: FIM ← BBB 9: EPAL ← 1 10: enquanto INI < CCC fa¸a c 11: enquanto X[DDD] = ’ ’ fa¸a c 12: INI ← INI + 1 13: fimenquanto 14: enquanto X[EEE] = ’ ’ fa¸a c 15: FIM ← FIM . tamb´m e crescente onde a chave K foi inclu´ em seu local correto. V[10] : inteiro) : R[11] inteiro 2: inteiro I. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA.TAM 3: TAM ← 1 4: enquanto X[TAM] AAA ’.CORRECAO DE ¸˜ ALGORITMOS contr´rio.J 3: para I de 1 a AAA fa¸a c 4: R[I] ← V[I] 5: fimpara 6: I ← BBB 7: enquanto (R[I] ≤ CCC)∧(I<DDD) fa¸a c 8: I ← EEE 9: fimenquanto 10: J ← FFF 88-08. Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma chave K (Inteiro) c˜ e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros. mas precisa apenas determinar que o algoritmo est´ errado. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva uma fun¸ao que receba uma frase (cadeia de at´ 80 caracteres. EXERC´ ICIOS PRATICOS: 125C ..FIM. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. BBB.III por valores determinados. ) = 1 . 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI. ) = 1 . Um a pal´ ındromo ´ aquela frase que pode ser lida tanto da direita para a esquerda como ao e vers˜o de 10 de fevereiro de 2008 a 425 88-08. a c˜ Ap´s a substitui¸ao. .2 Exerc´ ıcio 2 Construindo e consertando algoritmos . de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. ) = 0 .1 16: fimenquanto 17: se X[INI] FFF X[FIM] ent˜o a 18: EPAL ← 0 19: fimse 20: INI ← GGG 21: FIM ← HHH 22: fimenquanto 23: devolva III 24: fimfuncao Esta funcao correta. c˜ e terminada por um ponto) e devolva 1 se a frase for um pal´ ındromo e 0 sen˜o. EXERC´ ICIOS PRATICOS: 125C . c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observa¸ao: note que as posi¸oes do espa¸o em branco n˜o s˜o as mesmas na ida e na c˜ c˜ c a a volta. que tˆm algumas lacunas representadas pelas e a e constantes AAA.´ CAP´ ITULO 38. Pedro Kantek 38. III=EPAL . vocˆ receber´ 5 algoritmos. C01PALI(XUCRICUNICO. CCC.. Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. C01PALI(OTO COME MOCOTO... Trata-se de algo similar a um chines reverso.EPAL. CCC=FIM . Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. HHH=FIM-1 . Idem para A2 . A3 . at´ III. Abaixo de cada algoritmo. GGG=INI+1 . BBB=TAM-1 . deu os seguintes resultados: C03PALM(DECORRIDO ENTRE O DESAPARECIMENTO. EEE=I .MEN 14: RRRR ← AMP 88-08. III=QUA .TAM. As substitui¸oes a fazer s˜o: c˜ a AAA=1 .MAI. )=5 . HHH=I . CCC=11 .5 1 8 3 5 8 6 8 2 5) = 5 1 8 3 5 8 6 8 5 0 .CTP. FFF=10 . C02INCL(174. DDD=11 . C02INCL(5.CORRECAO DE ¸˜ ALGORITMOS 11: 12: 13: 14: 15: 16: 17: ´ CAP´ ITULO 38. a maior palavra tem 3 u letras ´ como h´ empate a resposta deve ser 1. EEE=I+1 . C04EXCL(6. J : inteiro 3: I ← AAA 4: J ← BBB 5: enquanto I<CCC fa¸a c 6: se V[I] = K ent˜o a 7: R[J] ← V[I] 8: J ← DDD 9: fimse 10: I ← EEE 11: fimenquanto 12: enquanto J < FFF fa¸a c 13: R[J] ← 0 14: J ← GGG 15: fimenquanto 16: devolva R 17: fimfuncao Esta funcao correta.2 2 3 9 9 7 9 3 8 5) = 2 2 3 9 979385.8 16 24 32 40 48 56 64 72 80)=8 16 24 32 40 48 56 64 72 80 174 . Se houver empate (mais de uma palavra com o mesmo comprimento). se chamada com 22 e 1 7 21 a 22 23 24 28 29 22 90 deve responder 1 7 21 23 24 28 29 90 0 0. BBB=1 . EXERC´ ICIOS PRATICOS: 125C . GGG=CTP . GGG=J+1 .15 20 25 30 35 40 45 50 55 60)=5 15 20 25 30 35 40 45 50 55 60 .AMP 3: MAI ← AAA 4: MEN ← BBB 5: para I de 1 a 10 fa¸a c 6: se X[I] > CCC ent˜o a 7: MAI ← X[I] 8: fimse 9: se X[I] < DDD ent˜o a 10: MEN ← X[I] 11: fimse 12: fimpara 13: AMP ← MAI . o ultimo util ´ um ponto) e devolva o n´ mero da palavra que ´ a maior da ´ ´ e u e frase. FFF=2 .31 47 13 45 18 40 2 12 7 17) = 31 47 13 45 18 40 2 12 7 17 .’ fa¸a c 6: TAM ← BBB 7: fimenquanto 8: CTP ← 1 9: I ← 1 10: J ← 0 11: enquanto I ≤ TAM fa¸a c 12: se X[I] CCC ’ ’ ent˜o a 13: TMS[CTP] ← I . C04EXCL(82. Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I. deu os seguintes resultados: C04EXCL(2.´ CAP´ ITULO 38.J. V[10] : inteiro) : R[10] inteiro 2: I.MEN. BBB=TAM+1 . A fun¸ao deve excluir de V todas as ocorrˆncias (se houver) c˜ e de K.6 12 18 24 30 36 42 48 54 60)=6 12 18 24 30 36 41 42 48 54 60 . GGG=J+1 . C03PALM(REDATOR E MOSTRAR TENDO. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . )=1 .QUA : inteiro 4: TAM ← AAA 5: enquanto X[TAM] = ’. Por exemplo.J 14: TMS[CTP] ← TMS[CTP]-1 15: CTP ← DDD 16: J ← EEE 17: fimse 18: I←I+1 19: fimenquanto 20: TMS[CTP] ← I . na frase ”IVO VIU A UVA”. CCC=K . BBB=1 . FFF=11 . CCC=sinal de igual (=) . deu os seguintes resultados: C02INCL(41. Por exemplo. DDD=J+1 . Na frase ”OUVIRAM DO IPIRANGA e a AS MARGENS”a resposta deve ser 3.J 21: TMS[CTP] ← TMS[CTP] . 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I. Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma frase (cadeia de 80 c˜ caracteres. C03PALM(MAS SE NAO PODEMOS IMAGINAR. )=4 . Pedro Kantek 428 vers˜o de 10 de fevereiro de 2008 a .MAI. 1: funcao C04EXCL (K.CORRECAO DE ¸˜ ALGORITMOS Esta funcao correta.FFF 22: MAI ← -99999 23: para I de 1 a GGG fa¸a c 24: se TMS[I] > MAI ent˜o a 25: MAI ← TMS[I] 26: QUA ← HHH 27: fimse 28: fimpara 29: devolva MAI 30: fimfuncao vers˜o de 10 de fevereiro de 2008 a 427 88-08. HHH=K . devolver o n´ mero da primeira. As substitui¸oes a fazer s˜o: c˜ a AAA=10 . Algoritmo 4 Escreva o algoritmo de uma fun¸ao que receba uma chave K (inteiro) e c˜ um vetor V de 10 inteiros. incluindo zeros ao final se necess´rio. III=R . DDD=CTP+1 . EEE=I+1 . EXERC´ ICIOS PRATICOS: 125C . Pedro Kantek enquanto J ≥ I fa¸a c R[J+1] ← R[J] J ← GGG fimenquanto R[J+1] ← HHH devolva III fimfuncao Esta funcao correta. C01PALI(BRASIL E LISARB. GGG=INI+1 . Trata-se de algo similar a um chines reverso. EXERC´ ICIOS PRATICOS: 125C .. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. Pedro Kantek fimfuncao Esta funcao correta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI. FFF=um sinal de = . que tˆm algumas lacunas representadas pelas e a e constantes AAA.´ CAP´ ITULO 38. ) = 1 . BBB=+9999 . tamb´m e crescente onde a chave K foi inclu´ em seu local correto. CCC=FIM .. deu os seguintes resultados: C01PALI(ROTOR.EPAL.. C05AMPL(3 4 7 3 2 2 5 8 7 1) = 7 . ıda 1: funcao C02INCL (K.. As substitui¸oes a fazer s˜o: c˜ a AAA=-9999 .parte 3 Nesta folha. at´ III. BBB=TAM-1 . c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. DDD=INI .CORRECAO DE ¸˜ ALGORITMOS Algoritmo 1 Escreva uma fun¸ao que receba uma frase (cadeia de at´ 80 caracteres.J 3: para I de 1 a AAA fa¸a c 4: R[I] ← V[I] 5: fimpara 6: I ← BBB 7: enquanto (R[I] ≤ CCC)∧(I<DDD) fa¸a c 88-08. ) = 1 .TAM 3: TAM ← 1 4: enquanto X[TAM] AAA ’. CCC.’ fa¸a c 5: TAM ← TAM + 1 6: fimenquanto 7: INI ← 1 8: FIM ← BBB 9: EPAL ← 1 10: enquanto INI < CCC fa¸a c 11: enquanto X[DDD] = ’ ’ fa¸a c 12: INI ← INI + 1 13: fimenquanto 14: enquanto X[EEE] = ’ ’ fa¸a c 15: FIM ← FIM . III=EPAL . Abaixo de cada algoritmo. c˜ e terminada por um ponto) e devolva 1 se a frase for um pal´ ındromo e 0 sen˜o.. Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observa¸ao: note que as posi¸oes do espa¸o em branco n˜o s˜o as mesmas na ida e na c˜ c˜ c a a volta. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. CCC=MAI . HHH=FIM-1 . vocˆ receber´ 5 algoritmos. Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma chave K (Inteiro) c˜ e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros. EXERC´ ICIOS PRATICOS: 125C . a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. Um a pal´ ındromo ´ aquela frase que pode ser lida tanto da direita para a esquerda como ao e contr´rio. .3 Exerc´ ıcio 3 Construindo e consertando algoritmos . DDD=MEN . EEE=FIM . a c˜ Ap´s a substitui¸ao. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) vers˜o de 10 de fevereiro de 2008 a 429 88-08. Responda R= 38.FIM. Pedro Kantek 430 vers˜o de 10 de fevereiro de 2008 a .1 16: fimenquanto 17: se X[INI] FFF X[FIM] ent˜o a 18: EPAL ← 0 19: fimse 20: INI ← GGG 21: FIM ← HHH 22: fimenquanto 23: devolva III 24: fimfuncao Esta funcao correta. As substitui¸oes a fazer s˜o: c˜ a AAA=um sinal de = . ) = 0 .III por valores determinados. C05AMPL(81 32 36 13 55 83 6 27 23 30) = 77 . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. A4 e A5 . A3 . deu os seguintes resultados: C05AMPL(11 65 45 96 60 59 88 89 80 35) = 85 . mas precisa apenas determinar que o algoritmo est´ errado.CORRECAO DE ¸˜ ALGORITMOS 15: 16: ´ CAP´ ITULO 38. BBB. Idem para A2 . C01PALI(XUCRICUNICO. V[10] : inteiro) : R[11] inteiro 2: inteiro I.. MAI. C02INCL(2. Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I. FFF=11 . C04EXCL(9. incluindo zeros ao final se necess´rio.40 27 3 29 49 18 8 32 11 26) = 40 27 3 29 49 18 8 32 11 26 .AMP 3: MAI ← AAA 4: MEN ← BBB 5: para I de 1 a 10 fa¸a c 6: se X[I] > CCC ent˜o a 7: MAI ← X[I] 8: fimse 9: se X[I] < DDD ent˜o a 10: MEN ← X[I] 11: fimse 12: fimpara 88-08.7 14 21 28 35 42 49 56 63 70)=7 14 14 21 28 35 42 49 56 63 70 . EXERC´ ICIOS PRATICOS: 125C . Pedro Kantek Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma frase (cadeia de 80 c˜ caracteres. HHH=I . Pedro Kantek 432 vers˜o de 10 de fevereiro de 2008 a .QUA : inteiro 4: TAM ← AAA 5: enquanto X[TAM] = ’. Se houver empate (mais de uma palavra com o mesmo comprimento).CORRECAO DE ¸˜ ALGORITMOS devolva MAI fimfuncao Esta funcao correta. a maior palavra tem 3 u letras ´ como h´ empate a resposta deve ser 1.TAM. o ultimo util ´ um ponto) e devolva o n´ mero da palavra que ´ a maior da ´ ´ e u e frase. Por exemplo. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . EEE=I+1 .MEN. CCC=sinal de igual (=) .CTP. )=2 . GGG=J+1 . As substitui¸oes a fazer s˜o: c˜ a AAA=1 . Na frase ”OUVIRAM DO IPIRANGA e a AS MARGENS”a resposta deve ser 3. Por exemplo. BBB=1 . C03PALM(VOCE OBSERVOU EM SUAS NOTAS. deu os seguintes resultados: C03PALM(DE DOMINGO E ANTES DA MEIA NOITE.’ fa¸a c 6: TAM ← BBB 7: fimenquanto 8: CTP ← 1 9: I ← 1 10: J ← 0 11: enquanto I ≤ TAM fa¸a c 12: se X[I] CCC ’ ’ ent˜o a 13: TMS[CTP] ← I . J : inteiro 3: I ← AAA 4: J ← BBB 5: enquanto I<CCC fa¸a c 6: se V[I] = K ent˜o a 7: R[J] ← V[I] 8: J ← DDD 9: fimse 10: I ← EEE 11: fimenquanto 12: enquanto J < FFF fa¸a c 13: R[J] ← 0 14: J ← GGG 15: fimenquanto 16: devolva R 17: fimfuncao Esta funcao correta.J 21: TMS[CTP] ← TMS[CTP] . na frase ”IVO VIU A UVA”. devolver o n´ mero da primeira. III=R .FFF 22: MAI ← -99999 23: para I de 1 a GGG fa¸a c 24: se TMS[I] > MAI ent˜o a 25: MAI ← TMS[I] 26: QUA ← HHH 27: fimse 28: fimpara vers˜o de 10 de fevereiro de 2008 a 431 88-08. BBB=1 . EXERC´ ICIOS PRATICOS: 125C . As substitui¸oes a fazer s˜o: c˜ a AAA=10 . CCC=11 . 8: 9: 29: 30: ´ CAP´ ITULO 38.5 10 15 20 25 30 35 40 45 50)=5 10 15 20 25 30 35 40 45 50 183 . BBB=TAM+1 . GGG=CTP . GGG=J-1 . DDD=11 . CCC=K . FFF=10 .3 10 6 10 1 4 10 4 3 2) = 3 10 6 10 1 4 10 4 3 2 . deu os seguintes resultados: C02INCL(14. DDD=CTP+1 . A fun¸ao deve excluir de V todas as ocorrˆncias (se houver) c˜ e de K. HHH=K .5 7 7 7 5 5 8 7 2 5) = 5 7 7 7 5 5 8 7 2 5 .´ CAP´ ITULO 38. EEE=I . C04EXCL(35.CORRECAO DE ¸˜ ALGORITMOS I ← EEE fimenquanto 10: J ← FFF 11: enquanto J ≥ I fa¸a c 12: R[J+1] ← R[J] 13: J ← GGG 14: fimenquanto 15: R[J+1] ← HHH 16: devolva III 17: fimfuncao Esta funcao correta. Algoritmo 4 Escreva o algoritmo de uma fun¸ao que receba uma chave K (inteiro) e c˜ um vetor V de 10 inteiros. )=4 . V[10] : inteiro) : R[10] inteiro 2: I. 1: funcao C04EXCL (K. se chamada com 22 e 1 7 21 a 22 23 24 28 29 22 90 deve responder 1 7 21 23 24 28 29 90 0 0. DDD=J+1 .MAI. FFF=1 . III=QUA .J 14: TMS[CTP] ← TMS[CTP]-1 15: CTP ← DDD 16: J ← EEE 17: fimse 18: I←I+1 19: fimenquanto 20: TMS[CTP] ← I .J. deu os seguintes resultados: C04EXCL(3. C03PALM(DECORRIDO ENTRE O DESAPARECIMENTO.18 26 34 42 50 58 66 74 82 90)=2 18 26 34 42 50 58 66 74 82 90 . )=2 . C02INCL(183. EEE=I+1 . 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I. EEE=INI .. A4 e A5 . EXERC´ ICIOS PRATICOS: 125C . a a vers˜o de 10 de fevereiro de 2008 a Algoritmo 1 Escreva uma fun¸ao que receba uma frase (cadeia de at´ 80 caracteres.MEN RRRR ← AMP 15: fimfuncao 14: 16: Esta funcao correta. Pedro Kantek 433 88-08. Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado.FIM. )=0. BBB. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI. C01PALI(XUCRICUNICO. Pedro Kantek 434 vers˜o de 10 de fevereiro de 2008 a .. C01PALI(OTO COME MOCOTO.III por valores determinados. mas precisa apenas determinar que o algoritmo est´ errado.. vocˆ receber´ 5 algoritmos. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. CCC. Idem para A2 .´ CAP´ ITULO 38.’ fa¸a c 5: TAM ← TAM + 1 6: fimenquanto 7: INI ← 1 8: FIM ← BBB 9: EPAL ← 1 10: enquanto INI < CCC fa¸a c 11: enquanto X[DDD] = ’ ’ fa¸a c 12: INI ← INI + 1 13: fimenquanto 14: enquanto X[EEE] = ’ ’ fa¸a c 15: FIM ← FIM . V[10] : inteiro) : R[11] inteiro 2: inteiro I. A3 . a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado.parte 3 Nesta folha. C05AMPL(20 7 17 43 83 93 85 75 37 66) = 86 . at´ III. Abaixo de cada algoritmo.. BBB=TAM-1 . ) = 1 ..EPAL. III=EPAL . Responda R= 38. Trata-se de algo similar a um chines reverso. Um a pal´ ındromo ´ aquela frase que pode ser lida tanto da direita para a esquerda como ao e contr´rio. Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observa¸ao: note que as posi¸oes do espa¸o em branco n˜o s˜o as mesmas na ida e na c˜ c˜ c a a volta. a c˜ Ap´s a substitui¸ao. As substitui¸oes a fazer s˜o: c˜ a AAA=um sinal de = . HHH=FIM-1 . c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). As substitui¸oes a fazer s˜o: c˜ a AAA=-9999 . . ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. deu os seguintes resultados: C01PALI(ARA. C05AMPL(1 5 1 8 7 3 6 5 3 2) = 7 .CORRECAO DE ¸˜ ALGORITMOS 13: ´ CAP´ ITULO 38.CORRECAO DE ¸˜ ALGORITMOS Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) AMP ← MAI . deu os seguintes resultados: C05AMPL(19 10 60 68 27 48 75 15 22 8) = 67 .. Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma chave K (Inteiro) c˜ e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros. DDD=MEN .4 Exerc´ ıcio 4 Construindo e consertando algoritmos .J 3: para I de 1 a AAA fa¸a c 4: R[I] ← V[I] 88-08. FFF=um sinal de = . EXERC´ ICIOS PRATICOS: 125C . tamb´m e crescente onde a chave K foi inclu´ em seu local correto.1 16: fimenquanto 17: se X[INI] FFF X[FIM] ent˜o a 18: EPAL ← 0 19: fimse 20: INI ← GGG 21: FIM ← HHH 22: fimenquanto 23: devolva III 24: fimfuncao Esta funcao correta. ıda 1: funcao C02INCL (K. ) = 1 .TAM 3: TAM ← 1 4: enquanto X[TAM] AAA ’. DDD=INI . Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. GGG=INI+1 . c˜ e terminada por um ponto) e devolva 1 se a frase for um pal´ ındromo e 0 sen˜o. que tˆm algumas lacunas representadas pelas e a e constantes AAA. CCC=FIM . CCC=MEN . BBB=+9999 . 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I. BBB=1 . HHH=K . EEE=I+1 . DDD=CTP+1 . se chamada com 22 e 1 7 21 a 22 23 24 28 29 22 90 deve responder 1 7 21 23 24 28 29 90 0 0. Algoritmo 4 Escreva o algoritmo de uma fun¸ao que receba uma chave K (inteiro) e c˜ um vetor V de 10 inteiros.7 14 21 28 35 42 49 56 63 70)=7 14 21 28 35 42 49 56 63 70 176 . C02INCL(7. CCC=sinal de igual (=) . C04EXCL(68.J 21: TMS[CTP] ← TMS[CTP] . FFF=10 .CTP. 5: 6: 26: 27: ´ CAP´ ITULO 38. HHH=I . EEE=I .7 14 21 28 35 42 49 56 63 70)=7 14 21 28 35 42 49 56 63 70 98 . Na frase ”OUVIRAM DO IPIRANGA e a AS MARGENS”a resposta deve ser 3. EXERC´ ICIOS PRATICOS: 125C . C02INCL(176. EEE=I+1 . Por exemplo. )=1 . deu os seguintes resultados: C04EXCL(6. deu os seguintes resultados: C02INCL(98.FFF 22: MAI ← -99999 23: para I de 1 a GGG fa¸a c 24: se TMS[I] > MAI ent˜o a 25: MAI ← TMS[I] vers˜o de 10 de fevereiro de 2008 a 435 88-08. )=2 .QUA : inteiro 4: TAM ← AAA 5: enquanto X[TAM] = ’. na frase ”IVO VIU A UVA”. III=R . C03PALM(DE DOMINGO E ANTES DA MEIA NOITE. III=MAI . As substitui¸oes a fazer s˜o: c˜ a AAA=10 . )=2 . Por exemplo. deu os seguintes resultados: C03PALM(SE PERMITIRMOS QUE SUPONHA TAL. 1: funcao C04EXCL (K. FFF=2 . Pedro Kantek 436 vers˜o de 10 de fevereiro de 2008 a . GGG=J+1 . Pedro Kantek Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma frase (cadeia de 80 c˜ caracteres.´ CAP´ ITULO 38. A fun¸ao deve excluir de V todas as ocorrˆncias (se houver) c˜ e de K. J : inteiro 3: I ← AAA 4: J ← BBB 5: enquanto I<CCC fa¸a c 6: se V[I] = K ent˜o a 7: R[J] ← V[I] 8: J ← DDD 9: fimse 10: I ← EEE 11: fimenquanto 12: enquanto J < FFF fa¸a c 13: R[J] ← 0 14: J ← GGG 15: fimenquanto 16: devolva R 17: fimfuncao Esta funcao correta. C04EXCL(9.15 20 25 30 35 40 45 50 55 60)=7 15 20 25 30 35 40 45 50 55 60 .10 3 9 9 9 5 8 7 6 3) = 10 358763000.CORRECAO DE ¸˜ ALGORITMOS fimpara I ← BBB 7: enquanto (R[I] ≤ CCC)∧(I<DDD) fa¸a c 8: I ← EEE 9: fimenquanto 10: J ← FFF 11: enquanto J ≥ I fa¸a c 12: R[J+1] ← R[J] 13: J ← GGG 14: fimenquanto 15: R[J+1] ← HHH 16: devolva III 17: fimfuncao Esta funcao correta. V[10] : inteiro) : R[10] inteiro 2: I.AMP 3: MAI ← AAA 4: MEN ← BBB 5: para I de 1 a 10 fa¸a c 6: se X[I] > CCC ent˜o a 7: MAI ← X[I] 8: fimse 9: se X[I] < DDD ent˜o a 88-08. C03PALM(REDATOR E MOSTRAR TENDO. Se houver empate (mais de uma palavra com o mesmo comprimento). CCC=K .MAI. GGG=CTP . GGG=J+1 . FFF=11 . CCC=11 . Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I. BBB=1 .MAI.4 1 7 7 1 8 6 4 1 6) = 4 1 7 7 1 8 4 1 0 0 .TAM. As substitui¸oes a fazer s˜o: c˜ a AAA=1 . o ultimo util ´ um ponto) e devolva o n´ mero da palavra que ´ a maior da ´ ´ e u e frase. DDD=11 .CORRECAO DE ¸˜ ALGORITMOS QUA ← HHH fimse 28: fimpara 29: devolva MAI 30: fimfuncao Esta funcao correta.’ fa¸a c 6: TAM ← BBB 7: fimenquanto 8: CTP ← 1 9: I ← 1 10: J ← 0 11: enquanto I ≤ TAM fa¸a c 12: se X[I] CCC ’ ’ ent˜o a 13: TMS[CTP] ← I . EXERC´ ICIOS PRATICOS: 125C . As substitui¸oes a fazer s˜o: c˜ a AAA=1 . devolver o n´ mero da primeira. DDD=J+1 .21 19 18 11 29 8 43 10 39 27) = 21 19 18 11 29 8 43 10 39 27 .J 14: TMS[CTP] ← TMS[CTP]-1 15: CTP ← DDD 16: J ← EEE 17: fimse 18: I←I+1 19: fimenquanto 20: TMS[CTP] ← I . a maior palavra tem 3 u letras ´ como h´ empate a resposta deve ser 1. incluindo zeros ao final se necess´rio.MEN.J. BBB=TAM+1 . 5 1 2 3 4 Respostas 0 4 0 5 1 7 0 7 3 0 6 9 7 0 0 0 2 0 3 0 1 28 11 24 vers˜o de 10 de fevereiro de 2008 a 437 88-08. C05AMPL(7 6 5 3 5 1 2 6 4 1) = 6 . CCC=MAI . DDD=MEN .MEN RRRR ← AMP fimfuncao Esta funcao correta.´ CAP´ ITULO 38. Responda R= 38. BBB=+9999 . Pedro Kantek 438 vers˜o de 10 de fevereiro de 2008 a . As substitui¸oes a fazer s˜o: c˜ a AAA=-9999 . Pedro Kantek 88-08. deu os seguintes resultados: C05AMPL(76 38 36 62 50 19 55 79 73 78) = 60 . C05AMPL(30 61 95 72 10 43 33 64 48 73) = 85 . EXERC´ ICIOS PRATICOS: 125C .CORRECAO DE ¸˜ ALGORITMOS MEN ← X[I] fimse fimpara AMP ← MAI . EXERC´ ICIOS PRATICOS: 125C .CORRECAO DE ¸˜ ALGORITMOS 10: 11: 12: 13: 14: 15: 16: ´ CAP´ ITULO 38. 1: fun¸ao D02MSMI (M[1. vocˆ receber´ 5 algoritmos.3 5 7. a c˜ Ap´s a substitui¸ao.10 4 13 10)= .. D01VESO (5 6 1.0 4: para AAA de 1 a 3 fa¸a c 5: BBB ← 0 6: para CCC de 1 a 3 fa¸a c 7: SOM ← SOM + M[I] [J] 8: fimpara 9: V[DDD] ← SOM 10: fimpara 439 Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 4 colunas de n´ meros inteiros.7 1. 1: fun¸ao D03MEHO (M[1..III por valores determinados.. A fun¸ao deve gerar um vetor de 4 n´ meros reais.. Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont´m o menor e valor em cada linha.1 7 8) = 16 16 20 . 2 16 18 4. ..18 18 18 4. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 9 inteiros c˜ (3 linhas por 3 colunas). deu os seguintes resultados: c˜ D01VESO (6 4 9. BBB=J-1 . DDD=J . 11: 12: Cap´ ıtulo 39 Exerc´ ıcios Pr´ticos 125d a Corre¸˜o de Algoritmos ca 39. FFF=NUM .CORRECAO DE ALGORITMOS ¸˜ retorne V fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=J .0 .DEN.´ CAP´ ITULO 39.. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado... D01VESO (3 3 7.4][1.3] : inteiro) V[1.1 . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado.10 1 13 10)= . O u c˜ u elemento k da resposta ´ calculado como a soma dos elementos da coluna k.4]:inteiro c˜ 2: I. Abaixo de cada algoritmo. D02MSMI ( 9 1 11 3.I : inteiro 3: para J de 1 a 4 fa¸a c 4: NUM ← AAA 5: DEN ← 0 6: para I de 1 a BBB fa¸a c 7: NUM ← NUM + M[I][EEE] 8: fimpara 9: para I de CCC a 4 fa¸a c 10: DEN ← DEN + M[DDD][J] 11: fimpara 12: V[J] ← FFF ÷ DEN 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=0 (zero) .2 1.. at´ III. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o.1 .0 .MEN : inteiro 3: para I de 1 a 4 fa¸a c 4: MEN ← AAA 5: para J de 1 a BBB fa¸a c 6: se M[I][CCC] < MEN ent˜o a 7: MEN ← M[I][J] 8: fimse 9: fimpara 10: V[I] ← DDD 11: fimpara 12: retorne V 13: fimfun¸ao c˜ 88-08. CCC=1 (um) . Esta fun¸ao correta. D02MSMI (18 20 3 7. k + 1.4] [1. EEE=J . EXERC´ ICIOS PRATICOS 125D ...4] : inteiro) V[1. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro.NUM.9 3 3. A4 e A5 .. deu os seguintes resultados: c˜ D02MSMI ( 5 1 12 13..5 .3] [1. 4.SOM : inteiro 3: V ← 0.5]:inteiro) V[1.0. A3 .9 3 7) = 23 12 11 .1 5 3) = 7 13 17 .9 5 3.3]:inteiro c˜ 2: I.5 1. que est˜o e a acima da linha k.0 . CCC. BBB=SOM . dividido pela soma dos elementos que est˜o na coluna k e nas linhas a k. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio).J..20 3 3 17.0 . mas precisa apenas determinar que o algoritmo est´ errado. 1: fun¸ao D01VESO (M [1. Pedro Kantek 440 vers˜o de 10 de fevereiro de 2008 a . ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. Idem para A2 .. DDD=I . .1 Exerc´ ıcio 1 Construindo e consertando algoritmos .14 9 4 1.19 8 13 16)= . que tˆm algumas lacunas representadas pelas e a e constantes AAA. 4 12 1 3.. 6 4 1 15.. CCC=I .9 3. totalize as colunas e devolva um vetor de 3 totais.J. Trata-se de algo similar a um chines reverso.4]:real c˜ 2: J.. BBB.parte 4 Nesta folha. Esta fun¸ao correta.2 . BBB=5 . 10 800. D03MEHO ( 7 2 1 9 8. vence o candidato da linha 1 (por hip´tese ´ o mais velho).3][1.. isto ´ a c˜ a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas.´ CAP´ ITULO 39. deu os seguintes resultados: c˜ D04MUMA (5 6 6 5. Esta fun¸ao correta. EXERC´ ICIOS PRATICOS 125D .5 2 6 2.9 4 3 7 10.. 80 320. Abaixo de cada algoritmo. D05ELEI ( 60 60. GGG=QUEM .4 1 0. Algoritmo 4 Escreva uma fun¸ao que receba duas matrizes conform´veis. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). BBB=999 . a 1: fun¸ao D04MUMA (A[1..CORRECAO DE ALGORITMOS ¸˜ 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: NUL ← VOT[I][2] fimse fimpara TOT ← VAL ÷ 2 se NUL > DDD ent˜o a retorne -1 sen˜o a MAI ← -999999 para I de 1 a 6 fa¸a c se VOT[I][EEE] > MAI ent˜o a FFF ← VOT[I][2] QUEM ← VOT[I][1] fimse fimpara se (GGG = 998) ∨ (GGG=999) ent˜o a retorne 1 sen˜o a retorne QUEM fimse fimse fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=6 . Esta fun¸ao correta. mas precisa apenas determinar que o algoritmo est´ errado.58 68 42 . deu os seguintes resultados: c˜ D03MEHO ( 3 2 2 3 2. Se o vencedor for o branco ou o nulo..10 9 3 3 1)=1 3 1 1 . 0 0.998 180. A segunda coluna cont´m a e a quantidade de votos a cada candidato e tamb´m brancos e nulos.45 41 44 . at´ III.2 4 10 5 9.MAI. D05ELEI ( 70 80.4 6 6 2.3]:inteiro) 3: V[1. a c˜ Ap´s a substitui¸ao. EXERC´ ICIOS PRATICOS 125D . 10 100. D03MEHO (4 6 7 4 10. DDD=J . 60 220.. EEE=K .. 9 6 6 9 1)=2 2 1 1 . DDD=K .2 4 2 5.5 4 6.4]:inteiro. DDD=NUL . Responda R= 39.3 2 10 3 3)=4 2 3 2 . 88-08.6 2 0 6. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. 9 7 4 9 1.2 4 2) = 18 24 12.6 5 6. CCC=J . e e c 4: I.III por valores determinados.3][1. D04MUMA (2 0 0 3.6][1.6 6 3. Pedro Kantek 441 88-08. 70 140.K..998 80.999 390) = 1 .2 5 1 2.TOT.. Existem dois c´digos em especial que estar˜o sempre a a o a presentes e que s˜o 998=votos em branco e 999=votos nulos.5 1 2. .. 0 0. CCC. o e 1: fun¸ao D05ELEI (VOT[1. Trata-se de algo similar a um chines reverso. 10 200.3 4 1 5. FFF=K ..4 3 3.4][1. D04MUMA (0 1 5 3. BBB=3 . que tˆm algumas lacunas representadas pelas e a e constantes AAA.2 Exerc´ ıcio 2 Construindo e consertando algoritmos .. a e u c˜ a Uma elei¸ao ´ v´lida quando o total de votos dados a candidatos mais os votos em c˜ e a branco corresponderem a 50% mais 1 voto do total de votantes. Pedro Kantek 442 vers˜o de 10 de fevereiro de 2008 a . A fun¸ao deve c˜ multiplicar as duas matrizes. A primeira coluna corresponde ao c˜ n´ mero do candidato.. EEE=2 .998 320.82 74 70. 0 0.QUEM:inteiro 3: VAL ← 0 4: para I de 1 a AAA fa¸a c 5: se VOT[I][1] = BBB ent˜o a 6: VAL ← VAL + VOT[I][CCC] 7: sen˜o a vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 39.10 3 1 10 3.999 60) = 1 . 5 7 2 6 10.5 1 6. c˜ 2: B[1. CCC=2 .39 18 50 . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado. sendo que nem todas as linhas estar˜o preenchidas..I.68 47 58.47 29 64. 4 4 8 3 8.999 120) = 40 .4 1 2.CORRECAO DE ALGORITMOS ¸˜ As substitui¸oes a fazer s˜o: c˜ a AAA=999999 . FFF=MAI . Neste caso as u a linhas n˜o usadas conter˜o zeros. BBB.3]:real // at´ aqui ´ o cabe¸alho.2]:inteiro):inteiro c˜ 2: VAL..1 5 4) = 38 41 44. Algoritmo 5 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 6 linhas c˜ por 2 colunas contendo o resultado de uma elei¸ao.. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado.SOM:inteiro 5: para I de 1 a AAA fa¸a c 6: para J de 1 a BBB fa¸a c 7: SOM ← 0 8: para K de 1 a CCC fa¸a c 9: SOM ← SOM+(A[I][DDD]×B[EEE][J]) 10: fimpara 11: V[FFF][J] ← SOM 12: fimpara 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=3 . de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. gerando o resultado que ter´ 3 linhas por 3 colunas. vocˆ receber´ 5 algoritmos. CCC=4 .NUL.1 3 5..J. e A fun¸ao deve devolver o n´ mero do candidato eleito.parte 4 Nesta folha. ou -1 se a elei¸ao n˜o for c˜ u c˜ a v´lida. Esta fun¸ao correta. O eleito ´ aquele que obteve o maior n´ mero de votos se a elei¸ao foi v´lida.4 3 5) = 79 42 86. deu os seguintes resultados: c˜ D05ELEI ( 40 1400. 3][1. Algoritmo 4 Escreva uma fun¸ao que receba duas matrizes conform´veis.2 .4] [1.CORRECAO DE ALGORITMOS ¸˜ Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 4 colunas de n´ meros inteiros.6 3 0) = 44 50 18. BBB=3 . que est˜o e a acima da linha k.6 3 5 5. D01VESO (3 5 5.3 2 5 3.1 3 1.J.3]:inteiro c˜ 2: I..6 6 2.SOM:inteiro 5: para I de 1 a AAA fa¸a c 6: para J de 1 a BBB fa¸a c 7: SOM ← 0 8: para K de 1 a CCC fa¸a c 9: SOM ← SOM+(A[I][DDD]×B[EEE][J]) 10: fimpara 11: V[FFF][J] ← SOM 12: fimpara 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=3 ..8 7 4 9 5..4]:inteiro. CCC=4 . 1 2 20 15)= .0 .11 17 8 14)= . EEE=K . 1: fun¸ao D03MEHO (M[1. isto ´ a c˜ a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas.0 5 4.3 7 2) = 11 10 5 .´ CAP´ ITULO 39. c˜ 2: B[1. vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 39. Pedro Kantek 443 88-08.MEN : inteiro 3: para I de 1 a 4 fa¸a c 4: MEN ← AAA 5: para J de 1 a BBB fa¸a c 6: se M[I][CCC] < MEN ent˜o a 7: MEN ← M[I][J] 8: fimse 9: fimpara 10: V[I] ← DDD 11: fimpara 12: retorne V 13: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=0 (zero) . Idem para A2 .5]:inteiro) V[1.5 2. 3 4 18 17. e e c 4: I.3]:real // at´ aqui ´ o cabe¸alho.4]:real c˜ 2: J. FFF=NUM . a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 9 inteiros c˜ (3 linhas por 3 colunas).4 1 3 1.7 2. FFF=I . D03MEHO (2 10 2 10 5.3]:inteiro) 3: V[1. D04MUMA (0 6 5 1. A primeira coluna corresponde ao c˜ 88-08.SOM : inteiro 3: V ← 0. DDD=MEN .4] : inteiro) V[1. D02MSMI (16 13 18 5.9 1 9) = 17 12 23 .4][1..3 5 2 0. CCC=J .3][1. EXERC´ ICIOS PRATICOS 125D . EEE=J .3 4 5. gerando o resultado que ter´ 3 linhas por 3 colunas. deu os seguintes resultados: c˜ D03MEHO (5 3 4 7 3..J. dividido pela soma dos elementos que est˜o na coluna k e nas linhas a k.K. 1: fun¸ao D02MSMI (M[1.38 58 28 .3 0 4.0 3 2.. A fun¸ao deve c˜ multiplicar as duas matrizes. CCC=J ..8 . a 1: fun¸ao D04MUMA (A[1.0 .DEN. DDD=J . DDD=J . BBB=SOM ..27 35 13. k + 1. 8 3 7 14)= .0 3 1) = 17 45 28.11 10 6 16... 7 8 8 5 10)=3 2 2 5 . deu os seguintes resultados: c˜ D01VESO (7 2 2.3 3 1 1.3] : inteiro) V[1.. totalize as colunas e devolva um vetor de 3 totais.0 1 3.4 .12 31 22.3 2 10 3 1.J.9 2 9 2 4)=3 4 1 2 . 1: fun¸ao D01VESO (M [1. D03MEHO ( 5 9 6 5 3.5 6 9.. Pedro Kantek 444 vers˜o de 10 de fevereiro de 2008 a . 4.0. DDD=K . A4 e A5 . 6 33 24 . EXERC´ ICIOS PRATICOS 125D .33 43 58... A fun¸ao deve gerar um vetor de 4 n´ meros reais.11 18 17 15.0 2..6 2 1 1 4. . D01VESO (6 4 7. 5 35 20 . O u c˜ u elemento k da resposta ´ calculado como a soma dos elementos da coluna k.. deu os seguintes resultados: c˜ D02MSMI (11 5 15 5.0 4: para AAA de 1 a 3 fa¸a c 5: BBB ← 0 6: para CCC de 1 a 3 fa¸a c 7: SOM ← SOM + M[I] [J] 8: fimpara 9: V[DDD] ← SOM 10: fimpara 11: retorne V 12: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=J .0 .3 2 1 6 3)=2 1 1 1 .. BBB=J-1 .3 7 8.1 6 3. Esta fun¸ao correta.I : inteiro 3: para J de 1 a 4 fa¸a c 4: NUM ← AAA 5: DEN ← 0 6: para I de 1 a BBB fa¸a c 7: NUM ← NUM + M[I][EEE] 8: fimpara 9: para I de CCC a 4 fa¸a c 10: DEN ← DEN + M[DDD][J] 11: fimpara 12: V[J] ← FFF ÷ DEN 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=0 (zero) .16 18 20 20.2 2 2.0 4 0) = 15 24 24. Esta fun¸ao correta.3] [1.5 . CCC=J .5 5 3) = 14 16 18 .12 3 4 11..17 20 4 13.8 8 10 7 1.NUM. Esta fun¸ao correta.1 5 1 6.10 9 9 2 8.4]:inteiro c˜ 2: I. 9 7 2 4 5.CORRECAO DE ALGORITMOS ¸˜ Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont´m o menor e valor em cada linha. D04MUMA (1 0 4 2.4][1. BBB=5 . A3 .. deu os seguintes resultados: c˜ D04MUMA (6 2 1 1. Esta fun¸ao correta. D02MSMI ( 3 17 16 5. Algoritmo 5 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 6 linhas c˜ por 2 colunas contendo o resultado de uma elei¸ao.9 2.1 2.1 1 1.. 999 210) = 50 . ..CORRECAO DE ALGORITMOS ¸˜ 39. 60 400. Neste caso as u a linhas n˜o usadas conter˜o zeros.3 Exerc´ ıcio 2 Construindo e consertando algoritmos .. EEE=2 . deu os seguintes resultados: c˜ D01VESO (2 8 8. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA. D05ELEI ( 40 340. O u c˜ u elemento k da resposta ´ calculado como a soma dos elementos da coluna k. Esta fun¸ao correta. ou -1 se a elei¸ao n˜o for c˜ u c˜ a v´lida. 50 360.´ CAP´ ITULO 39. 30 20.998 340. D01VESO (3 5 7.NUM.4]:real c˜ 2: J. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado.. 1: fun¸ao D01VESO (M [1. . vence o candidato da linha 1 (por hip´tese ´ o mais velho).6][1. A3 .TOT.SOM : inteiro 3: V ← 0. totalize as colunas e devolva um vetor de 3 totais. A segunda coluna cont´m a e a quantidade de votos a cada candidato e tamb´m brancos e nulos. CCC...0.I : inteiro 3: para J de 1 a 4 fa¸a c 4: NUM ← AAA 88-08. Idem para A2 .2 5 6. D05ELEI ( 90 360.. CCC=2 .999 60) = 1 . dividido pela soma dos elementos que est˜o na coluna k e nas linhas a k. deu os seguintes resultados: c˜ D05ELEI ( 40 160.998 200.. D01VESO (6 5 5. e A fun¸ao deve devolver o n´ mero do candidato eleito. DDD=TOT .NUL. 70 260. GGG=QUEM . Abaixo de cada algoritmo. BBB. o e 1: fun¸ao D05ELEI (VOT[1. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro.3] : inteiro) V[1. 4.CORRECAO DE ALGORITMOS ¸˜ n´ mero do candidato. Existem dois c´digos em especial que estar˜o sempre a a o a presentes e que s˜o 998=votos em branco e 999=votos nulos. Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado.998 280. Trata-se de algo similar a um chines reverso. vocˆ receber´ 5 algoritmos. DDD=J . EXERC´ ICIOS PRATICOS 125D .3] [1.J.. sendo que nem todas as linhas estar˜o preenchidas. at´ III.DEN.9 1 2. Pedro Kantek 446 vers˜o de 10 de fevereiro de 2008 a .. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 9 inteiros c˜ (3 linhas por 3 colunas). A fun¸ao deve gerar um vetor de 4 n´ meros reais. Pedro Kantek Responda R= vers˜o de 10 de fevereiro de 2008 a 445 88-08. EXERC´ ICIOS PRATICOS 125D ..1 3 2) = 14 11 11 .2]:inteiro):inteiro c˜ 2: VAL. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o.. que tˆm algumas lacunas representadas pelas e a e constantes AAA. a e u c˜ a Uma elei¸ao ´ v´lida quando o total de votos dados a candidatos mais os votos em c˜ e a branco corresponderem a 50% mais 1 voto do total de votantes. Se o vencedor for o branco ou o nulo. mas precisa apenas determinar que o algoritmo est´ errado.7 3 4.4] : inteiro) V[1. O eleito ´ aquele que obteve o maior n´ mero de votos se a elei¸ao foi v´lida. ´ CAP´ ITULO 39. a c˜ Ap´s a substitui¸ao. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). A4 e A5 . 20 260. Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 4 colunas de n´ meros inteiros.999 450) = 1 . 1: fun¸ao D02MSMI (M[1. k + 1.I. Esta fun¸ao correta.4 9 8) = 8 22 22 .. BBB=SOM .. CCC=I .3]:inteiro c˜ 2: I. que est˜o e a acima da linha k. 60 80. 20 40.III por valores determinados.0 4: para AAA de 1 a 3 fa¸a c 5: BBB ← 0 6: para CCC de 1 a 3 fa¸a c 7: SOM ← SOM + M[I] [J] 8: fimpara 9: V[DDD] ← SOM 10: fimpara 11: retorne V 12: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=J .4 7 9) = 16 13 18 .MAI.QUEM:inteiro 3: VAL ← 0 4: para I de 1 a AAA fa¸a c 5: se VOT[I][1] = BBB ent˜o a 6: VAL ← VAL + VOT[I][CCC] 7: sen˜o a 8: NUL ← VOT[I][2] 9: fimse 10: fimpara 11: TOT ← VAL ÷ 2 12: se NUL > DDD ent˜o a 13: retorne -1 14: sen˜o a 15: MAI ← -999999 16: para I de 1 a 6 fa¸a c 17: se VOT[I][EEE] > MAI ent˜o a 18: FFF ← VOT[I][2] 19: QUEM ← VOT[I][1] 20: fimse 21: fimpara 22: se (GGG = 998) ∨ (GGG=999) ent˜o a 23: retorne 1 24: sen˜o a 25: retorne QUEM 26: fimse 27: fimse 28: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=6 . 10 220. BBB=999 .parte 4 Nesta folha. FFF=MAI ..4] [1. 50 180.... 3 2.6 4 4) = 23 36 36. 4 7 6 7 3. DDD=K . o e 1: fun¸ao D05ELEI (VOT[1.2 .10 16 16 .QUEM:inteiro 3: VAL ← 0 4: para I de 1 a AAA fa¸a c 5: se VOT[I][1] = BBB ent˜o a 6: VAL ← VAL + VOT[I][CCC] 7: sen˜o a 8: NUL ← VOT[I][2] 9: fimse 10: fimpara 11: TOT ← VAL ÷ 2 12: se NUL > DDD ent˜o a 13: retorne -1 14: sen˜o a 15: MAI ← -999999 16: para I de 1 a 6 fa¸a c 17: se VOT[I][EEE] > MAI ent˜o a 18: FFF ← VOT[I][2] 19: QUEM ← VOT[I][1] 20: fimse 21: fimpara 22: se (GGG = 998) ∨ (GGG=999) ent˜o a 23: retorne 1 24: sen˜o a 25: retorne QUEM 88-08. D02MSMI (18 20 7 10.4][1.3][1.20 8 17.K.10 10 7 6 2)=2 3 3 2 . deu os seguintes resultados: c˜ D02MSMI (20 12 6 6.10 4 3 10 3.J. 2 19 17 16. 8: 9: Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont´m o menor e valor em cada linha.3]:inteiro) 3: V[1... 7 9 9 5 3. BBB=5 . Existem dois c´digos em especial que estar˜o sempre a a o a presentes e que s˜o 998=votos em branco e 999=votos nulos.6 5 4. deu os seguintes resultados: c˜ D04MUMA (2 1 5 3..7 1 6 1 3. e e c 4: I.0 1 4 4. D04MUMA (0 3 1 2.. EXERC´ ICIOS PRATICOS 125D . EEE=J . A segunda coluna cont´m a e a quantidade de votos a cada candidato e tamb´m brancos e nulos.0 . CCC=4 . BBB=J-1 .0 5 3 1. vence o candidato da linha 1 (por hip´tese ´ o mais velho). 1: fun¸ao D03MEHO (M[1.. 1 3 4 4 8)=2 3 1 1 ..8 1. 9 8 3 3.14 5 4 9. a 1: fun¸ao D04MUMA (A[1.SOM:inteiro 5: para I de 1 a AAA fa¸a c 6: para J de 1 a BBB fa¸a c 7: SOM ← 0 vers˜o de 10 de fevereiro de 2008 a Algoritmo 5 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 6 linhas c˜ por 2 colunas contendo o resultado de uma elei¸ao..45 28 21.28 34 15 . isto ´ a c˜ a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. 8 15 1 16)= . A fun¸ao deve c˜ multiplicar as duas matrizes.4 .5 5 4.4 0 1. a e u c˜ a Uma elei¸ao ´ v´lida quando o total de votos dados a candidatos mais os votos em c˜ e a branco corresponderem a 50% mais 1 voto do total de votantes.40 39 41.5]:inteiro) V[1. 2 13 5 18.20 12 11 17)= . deu os seguintes resultados: c˜ D03MEHO ( 2 10 8 3 7.. Se o vencedor for o branco ou o nulo.3 5 4 6 3.1 3 0.. D04MUMA (3 6 3 1.J.´ CAP´ ITULO 39. EEE=K .13 8 8 12.. sendo que nem todas as linhas estar˜o preenchidas.0 1 4 6.3]:real // at´ aqui ´ o cabe¸alho.0 .TOT.4]:inteiro.MEN : inteiro 3: para I de 1 a 4 fa¸a c 4: MEN ← AAA 5: para J de 1 a BBB fa¸a c 6: se M[I][CCC] < MEN ent˜o a 7: MEN ← M[I][J] 8: fimse 9: fimpara 10: V[I] ← DDD 11: fimpara 12: retorne V 13: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=999999 . 5: 6: ´ CAP´ ITULO 39. EXERC´ ICIOS PRATICOS 125D . c˜ 2: B[1. Esta fun¸ao correta. CCC=J . FFF=I .10 4 2 1 1...CORRECAO DE ALGORITMOS ¸˜ para K de 1 a CCC fa¸a c SOM ← SOM+(A[I][DDD]×B[EEE][J]) 10: fimpara 11: V[FFF][J] ← SOM 12: fimpara 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=3 .4 2 2 3.MAI.0 .1 3 3. Esta fun¸ao correta.7 2.7 .NUL.5 4 3) = 19 22 10. Neste caso as u a linhas n˜o usadas conter˜o zeros.2]:inteiro):inteiro c˜ 2: VAL.5 .I.17 10 1 12. O eleito ´ aquele que obteve o maior n´ mero de votos se a elei¸ao foi v´lida.9 .1 5 0 0.6][1. D03MEHO (5 2 10 5 8. Esta fun¸ao correta.0 3 2.9 .4][1.3 1 3. BBB=4 . D02MSMI (16 16 5 19.20 7 12 13)= . D03MEHO ( 3 2 7 7 7. gerando o resultado que ter´ 3 linhas por 3 colunas. DDD=I .2 6 4) = 50 36 40. ou -1 se a elei¸ao n˜o for c˜ u c˜ a v´lida. e A fun¸ao deve devolver o n´ mero do candidato eleito.0 0 4 1. Pedro Kantek 448 vers˜o de 10 de fevereiro de 2008 a ..5 7 4 10 6)=2 1 3 4 . Pedro Kantek 447 88-08.0 3 5. DDD=J .31 45 35 . CCC=J .5 3 2. Algoritmo 4 Escreva uma fun¸ao que receba duas matrizes conform´veis. A primeira coluna corresponde ao c˜ n´ mero do candidato.3][1.4]:inteiro c˜ 2: I.CORRECAO DE ALGORITMOS ¸˜ DEN ← 0 para I de 1 a BBB fa¸a c 7: NUM ← NUM + M[I][EEE] 8: fimpara 9: para I de CCC a 4 fa¸a c 10: DEN ← DEN + M[DDD][J] 11: fimpara 12: V[J] ← FFF ÷ DEN 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=1 (um) . FFF=NUM . SOM : inteiro 3: V ← 0.. BBB=999 .3 . 10 300. . mas precisa apenas determinar que o algoritmo est´ errado...III por valores determinados. D05ELEI ( 40 120.8 4 2) = 13 13 13 .. de duas uma: o c˜ O algoritmo est´ correto a O algoritmo cont´m um erro. vocˆ receber´ 5 algoritmos. que tˆm algumas lacunas representadas pelas e a e constantes AAA..6 1.DEN.14 19 15 3. deu os seguintes resultados: c˜ D05ELEI ( 20 320. 4. a c˜ Ap´s a substitui¸ao.4] [1.998 380.6 6 5. totalize as colunas e devolva um vetor de 3 totais. 9 5 4 13.4] : inteiro) V[1.0. CCC=J .. 20 40..CORRECAO DE ALGORITMOS ¸˜ retorne V fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=I ... Pedro Kantek 449 88-08. deu os seguintes resultados: c˜ D01VESO (2 1 9.999 330) = 1 . deu os seguintes resultados: c˜ D02MSMI (11 12 11 13. 30 300. Esta fun¸ao correta.5]:inteiro) V[1.4 9 5. Identifique qual(is) dos 5 algoritmos est˜o corretos definindo An como: A1 ← 1 se o a algoritmo 1 est´ correto e A1 ← 0 sen˜o. DDD=J . A4 e A5 . D02MSMI (16 11 13 5. 1: fun¸ao D02MSMI (M[1. DDD=I . 80 320. 26: 27: ´ CAP´ ITULO 39.0 . CCC=2 .. 3 14 15 2)= .0 4: para AAA de 1 a 3 fa¸a c 5: BBB ← 0 6: para CCC de 1 a 3 fa¸a c 7: SOM ← SOM + M[I] [J] 8: fimpara 9: V[DDD] ← SOM 10: fimpara vers˜o de 10 de fevereiro de 2008 a Algoritmo 2 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 4 colunas de n´ meros inteiros.. FFF=MAI . D05ELEI ( 50 160.998 380. 1: fun¸ao D03MEHO (M[1.12 9 7 8)= . Este erro deriva-se de uma (e apenas uma) substie tui¸ao de constante por um valor errado.. GGG=QUEM .4 Exerc´ ıcio 3 Construindo e consertando algoritmos . D01VESO (2 1 1. Esta fun¸ao correta.´ CAP´ ITULO 39. Esta fun¸ao correta. Abaixo de cada algoritmo.MEN : inteiro 3: para I de 1 a 4 fa¸a c 4: MEN ← AAA 5: para J de 1 a BBB fa¸a c 6: se M[I][CCC] < MEN ent˜o a 7: MEN ← M[I][J] 8: fimse 9: fimpara 10: V[I] ← DDD 11: fimpara 12: retorne V 13: fimfun¸ao c˜ 88-08. CCC=I . . BBB.0 .5 7 4) = 11 17 10 .11 5 4 11. k + 1. 11: 12: Responda R= 39. c˜ Vocˆ n˜o precisa determinar onde est´ o erro (se bem que isso ´ um interessante e a a e desafio). Algoritmo 3 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 4 linhas c˜ por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont´m o menor e valor em cada linha. EEE=2 .parte 4 Nesta folha.3]:inteiro c˜ 2: I.. O u c˜ u elemento k da resposta ´ calculado como a soma dos elementos da coluna k. D02MSMI ( 2 18 8 19. BBB=SOM . 50 220. A3 . DDD=TOT .4 2. 40 60. EXERC´ ICIOS PRATICOS 125D ...0 . EXERC´ ICIOS PRATICOS 125D . CCC. a a Responda o resultado R R = (A1 × 1) + (A2 × 2) + (A3 × 4) + (A4 × 8) + (A5 × 16) Algoritmo 1 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 9 inteiros c˜ (3 linhas por 3 colunas). BBB=J-1 . 2 13 8 12. 40 260.1 5.10 20 2 1)= . EEE=J .CORRECAO DE ALGORITMOS ¸˜ fimse fimse 28: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=6 .999 240) = 1 .0 . 2 4 14 20.3] : inteiro) V[1.NUM.4 7 8) = 12 21 22 .J. Idem para A2 .4]:real c˜ 2: J..4][1.J. que est˜o e a acima da linha k.14 7 13 11. a Uma boa maneira de verificar isto ´ acompanhar as 3 execu¸oes do algoritmo (correto) e c˜ que acompanham o enunciado. Trata-se de algo similar a um chines reverso.I : inteiro 3: para J de 1 a 4 fa¸a c 4: NUM ← AAA 5: DEN ← 0 6: para I de 1 a BBB fa¸a c 7: NUM ← NUM + M[I][EEE] 8: fimpara 9: para I de CCC a 4 fa¸a c 10: DEN ← DEN + M[DDD][J] 11: fimpara 12: V[J] ← FFF ÷ DEN 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=0 (zero) .5 37. dividido pela soma dos elementos que est˜o na coluna k e nas linhas a k.0 . D01VESO (2 8 9.3 . Pedro Kantek 450 vers˜o de 10 de fevereiro de 2008 a . 30 360. 90 300.4]:inteiro c˜ 2: I. ´ listada uma legenda e e que permitir´ a substitui¸ao das constantes AAA.. at´ III.3 8 2.3] [1.999 570) = 1 . A fun¸ao deve gerar um vetor de 4 n´ meros reais. 1: fun¸ao D01VESO (M [1.8 14. FFF=NUM .998 240.. e e c 4: I. Neste caso as u a linhas n˜o usadas conter˜o zeros..0 0 6. a 1: fun¸ao D04MUMA (A[1. EEE=2 . 0 0.998 300.. 50 340.39 22 28. ou -1 se a elei¸ao n˜o for c˜ u c˜ a v´lida.998 320. vence o candidato da linha 1 (por hip´tese ´ o mais velho).30 37 39 .. D05ELEI ( 10 120.999 180) = 50 . 20 400. CCC=4 .2 5 0) = 18 54 16. Existem dois c´digos em especial que estar˜o sempre a a o a presentes e que s˜o 998=votos em branco e 999=votos nulos.3 1 6) = 22 34 64. D04MUMA (5 0 5 4. deu os seguintes resultados: c˜ D03MEHO (2 8 4 9 1.. 9 21 8 .NUL.6 2 1 3. CCC=I .4 4 6 1.3 5 3. D03MEHO ( 8 10 6 3 3. 40 260.4 4 6 5.998 180. 0 0. A fun¸ao deve c˜ multiplicar as duas matrizes.4][1. BBB=3 . A primeira coluna corresponde ao c˜ n´ mero do candidato.999 90) = 20 .999 60) = 30 .J.35 49 50 .. D04MUMA (2 3 1 4. sendo que nem todas as linhas estar˜o preenchidas. deu os seguintes resultados: c˜ D04MUMA (5 1 1 3.MAI.10 2 10 1 9.7 10 8 9 5)=1 1 2 5 . gerando o resultado que ter´ 3 linhas por 3 colunas. DDD=TOT . Responda R= 39. CCC=2 .5 4 2 7 6. 30 140. BBB=5 .6][1.2]:inteiro):inteiro c˜ 2: VAL. a e u c˜ a Uma elei¸ao ´ v´lida quando o total de votos dados a candidatos mais os votos em c˜ e a branco corresponderem a 50% mais 1 voto do total de votantes. FFF=MAI . Pedro Kantek 88-08. deu os seguintes resultados: c˜ D05ELEI ( 70 380. GGG=QUEM . EXERC´ ICIOS PRATICOS 125D . BBB=999 . Esta fun¸ao correta.3 4 6) = 23 32 35.3][1..4]:inteiro.TOT. c˜ 2: B[1.5 Respostas linhas onde ocorreu o erro 03464 34100 01420 10310 soma dos certos 1 24 17 18 n´ mero do exerc´ u ıcio 1 2 3 4 451 88-08.4 6 6 5.7 7 7 8 9)=1 4 1 7 . Pedro Kantek 452 vers˜o de 10 de fevereiro de 2008 a .0 5 0 3.2 1 0 1.6 2 2.I.K.1 6 2. e A fun¸ao deve devolver o n´ mero do candidato eleito.1 3 2. 9 7 1 2 5. FFF=I . 50 80. 0 0.32 105 44. D03MEHO (9 6 7 4 1. EXERC´ ICIOS PRATICOS 125D .3]:inteiro) 3: V[1. o e 1: fun¸ao D05ELEI (VOT[1. EEE=K ..6 2 5 5 1.SOM:inteiro 5: para I de 1 a AAA fa¸a c 6: para J de 1 a BBB fa¸a c 7: SOM ← 0 8: para K de 1 a CCC fa¸a c 9: SOM ← SOM+(A[I][DDD]×B[EEE][J]) 10: fimpara 11: V[FFF][J] ← SOM 12: fimpara 13: fimpara 14: retorne V 15: fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=4 . D05ELEI ( 90 1300. A segunda coluna cont´m a e a quantidade de votos a cada candidato e tamb´m brancos e nulos.QUEM:inteiro 3: VAL ← 0 4: para I de 1 a AAA fa¸a c 5: se VOT[I][1] = BBB ent˜o a 6: VAL ← VAL + VOT[I][CCC] 7: sen˜o a vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 39.2 6 2.3 3 5. Esta fun¸ao correta..´ CAP´ ITULO 39. Algoritmo 4 Escreva uma fun¸ao que receba duas matrizes conform´veis.1 6 4.57 59 78.1 9 2 3 7. Algoritmo 5 Escreva o algoritmo de uma fun¸ao que receba uma matriz de 6 linhas c˜ por 2 colunas contendo o resultado de uma elei¸ao. Esta fun¸ao correta.3]:real // at´ aqui ´ o cabe¸alho.. 30 2000.CORRECAO DE ALGORITMOS ¸˜ 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: NUL ← VOT[I][2] fimse fimpara TOT ← VAL ÷ 2 se NUL > DDD ent˜o a retorne -1 sen˜o a MAI ← -999999 para I de 1 a 6 fa¸a c se VOT[I][EEE] > MAI ent˜o a FFF ← VOT[I][2] QUEM ← VOT[I][1] fimse fimpara se (GGG = 998) ∨ (GGG=999) ent˜o a retorne 1 sen˜o a retorne QUEM fimse fimse fimfun¸ao c˜ As substitui¸oes a fazer s˜o: c˜ a AAA=6 . 8 4 2 3 3)=3 1 1 2 .. DDD=MEN .9 7 4 7 7.CORRECAO DE ALGORITMOS ¸˜ As substitui¸oes a fazer s˜o: c˜ a AAA=999999 . Se o vencedor for o branco ou o nulo.3][1.5 3 2. isto ´ a c˜ a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. O eleito ´ aquele que obteve o maior n´ mero de votos se a elei¸ao foi v´lida. DDD=K . d) qual a amplitude de dias ? e) Quantos dias respondem por 50% das vendas ? etc etc. Para responder a perguntas como essas. VD[22] fun¸ao SOMA (real VENDAS[22][7]) c˜ 2: inteiro J. e 1: real R[n] fun¸ao RSEL (real A[n][n+1]) c˜ 2: real OLA 3: inteiro I. Acompanhe o algoritmo 1: real VF[7]. M ter´ j e a linhas por i colunas. K 3: para J de 1 at´ i fa¸a e c 4: para K de 1 at´ i fa¸a e c 5: se K < J ent˜o a 6: MZ[J][K] ← 0 7: sen˜o a 8: MZ[J][K] ← M[J][K] 9: fimse 10: fimpara 11: fimpara 12: devolva MZ 13: fim{fun¸ao} c˜ multiplica¸˜o matricial Este ´ um algoritmo famoso na matem´tica. Acompanhe: o o Seja a matriz M composta pelo resultado das vendas de 7 filiais (7 colunas) nos 22 dias uteis (linhas) do mˆs passado. de i linhas por m colunas. Pretende-se responder algumas perguntas: ´ e a) Qual a maior filial ?. A matriz de adjacˆncia de um digrafo (grafo direcionado) usa e todas as linhas da matriz. B[k][m]) {j tem que ser igual a k} c˜ 2: inteiro AUX 3: inteiro IND1.´ CAP´ ITULO 40. onde a matriz coluna B ocupa a e (n + 1)-´sima coluna de A. c) Qual a e amplitude de filiais ? (a maior menos a menor). Dadas as ca e a matrizes A (de i linhas por j colunas) e B (de k linhas por m colunas). b) qual o dia do mˆs de maior movimento?. obter a matriz C. a parte abaixo da diagonal principal precisa ser zerada. Eis o algoritmo que o faz: 1: real MZ[i][i] fun¸ao ZERAB (real M[i][i]) c˜ 2: inteiro J. O parˆmetro do a algoritmo ´ uma matriz de n linhas e n + 1 colunas. a partir de c˜ C[i][m] = j A[i][x] × B[x][m] x=1 Para implement´-lo. a matriz transposta de M. Se este grafo passar a ser considerado como n˜o direa cionado. IND2.J. IND3 4: para IND1 = 1 at´ i fa¸a e c 5: para IND2 = 1 at´ m fa¸a e c 6: AUX ← 0 7: para IND3 = 1 at´ j fa¸a e c 8: AUX ← AUX + A[IND1][IND3] × B[IND3][IND2] 9: fimpara 10: C[IND1][IND2] ← AUX 11: fimpara 12: fimpara 13: devolva C 14: fim{fun¸ao} c˜ Solu¸˜o de sistema de equa¸oes lineares Seja A a matriz de coeficientes e seja B ca c˜ a matriz coluna de termos independentes em um sistema Ax + B = 0. multiplica¸ao de A por B. onde j = k. Acompanhe o algoritmo 1: (real TRA[j][i]) fun¸ao ACHATRANSP (real M[i][j]) c˜ 2: inteiro K. h´ que se criar um vetor de 7 valores a (soma das filiais) e um de 22 valores para a soma dos dias.MATRIZES Zerando a matriz abaixo da diagonal principal Este ´ um problema t´ e ıpico em teoria de grafos. tem-se o a 1: real C [i][m] fun¸ao MM (real A[i][j]. L 3: para K de 1 at´ i fa¸a e c 4: para L de 1 at´ j fa¸a e c 5: TRA[L][K] ← M[K][L] 6: fimpara 7: fimpara 8: devolva TRA 9: fim{fun¸ao} c˜ 453 454 vers˜o de 10 de fevereiro de 2008 a . reconhecida como φM = M ´ aquela obtida rotacionando-se seus elementos. EXERC´ ICIOS PRATICOS: 128 .K 4: I ← 1 5: enquanto I < n fa¸a c 6: J←n 7: enquanto J > I fa¸a c 8: se A[J-1][I] = 0 ent˜o a 88-08. Pedro Kantek Cap´ ıtulo 40 Exerc´ ıcios Pr´ticos: 128 a Matrizes ´ Totaliza¸˜o de matrizes E comum ter-se uma matriz de valores referentes a um dado ca fenˆmeno e pretender-se obter totais em qualquer uma das duas dimens˜es. K 3: VF ← 0 4: VD ← 0 5: para J de 1 at´ 22 fa¸a e c 6: para K de 1 at´ 7 fa¸a e c 7: VD[J] ← VD[J] + VENDAS[J][K] 8: VF[K] ← VF[K] + VENDAS[J][K] 9: fimpara 10: fimpara 11: fim {fun¸ao} c˜ Transposta Supondo a matriz M de i linhas por j colunas. ´ CAP´ ITULO 40. EXERC´ ICIOS PRATICOS: 128 - MATRIZES troque as linhas A[J] e A[J-1] fimse 11: se A[J-1][I] = 0 ent˜o a 12: OLA ← 0 13: sen˜o a 14: OLA ← −A[J][I] ÷ A[J-1][I] 15: fimse 16: para K de 1 at´ n+1 fa¸a e c 17: A[J][K] ← A[J][K]+(A[J-1][K]× OLA) 18: fimpara 19: J←J-1 20: fimenquanto 21: I←I+1 22: fimenquanto 23: I ← n 24: enquanto I≥ 1 fa¸a c 25: R[I] ← A[I][I+1] ÷ A[I][I] 26: para K = 1 at´ n fa¸a e c 27: A[K][I] ← A[K][I+1]-(A[K][I]× R[I]) 28: fimpara 29: I←I-1 30: fimenquanto 31: devolva R 32: fim{fun¸ao} c˜ Este algoritmo, pela sua complexidade vale alguma explica¸ao. Seja o seguinte sisc˜ tema: —————— A solu¸ao de um sistema de equa¸oes lineares, do tipo c˜ c˜ c11 .x1 + c12 .x2 + c13 .x3 + ... = t1 c21 .x1 + c22 .x2 + c23 .x3 + ... = t2 c31 .x1 + c32 .x2 + c33 .x3 + ... = t3 ... cn1 .x1 + cn2 .x2 + cn3 .x3 + ... = tn Passa pela estrat´gia de diagonaliza¸ao, como segue. Seja e c˜ a.x + b.y + c.z = M d.x + e.y + f.z = N g.x + h.y + i.z = P O objetivo inicial ´ zerar g, e para isso, a nova linha (3) passar´ a ser a linha (3) e a somada com a linha (2) esta devidamente multiplicada por −g e fica d a.x + b.y + c.z = M d.x + e.y + f.z = N 0.x + h .y + i .z = P Depois, o objetivo ´ zerar d e para isso a nova linha (2) passa a ser a linha (2) somada e com a linha (1) esta devidamente multiplicada por −d e fica a a.x + b.y + c.z = M 0.x + e .y + f .z = N 0.x + h .y + i .z = P Finalmente, zera-se h e para isso a linha (3) passa a ser a linha (3) somada com a linha (2) esta devidamente multiplicada por −h e fica e a.x + b.y + c.z = M 0.x + e .y + f .z = N 0.x + 0.y + i .z = P Note que neste ponto, z pode ser calculado, fazendo-se z = P . i 9: 10: vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 40. EXERC´ ICIOS PRATICOS: 128 - MATRIZES Conhecido z, a coluna 3 da matriz pode ser toda calculada e jogada para a coluna do termo independente. Ao fazer isto, passa-se a ter um sistema de 2 equa¸oes e 2 c˜ inc´gnitas, x e y. o Agora o processo se repete at´ o final. Vamos ver um exemplo disto. Seja o sistema e 2x + 3y + 1z = 11 5x + -2y + 3z = 10 2x + y + -z = 1 Ao se zerar a primeira coluna 2x + 3y + 1z = 11 + -9.5y + 0.5z = -17.5 + 1.8y + -2.2z = -3 Zerando a segunda coluna, fica: 2x + 3y + 1z = 11 -9.5y + 0.5z = -17.5 -2.11z = -6.33 Com isto, recupera-se o valor z = 3, que aplicado no sistema, 2x + 3y = 8 -9.5y = -19 E daqui, sai y = 2. Aplicando-o fica 2x = 2 E finalmente x = 1. 40.1 Exerc´ ıcio 1 Resolva (a m˜o ou via computador, vocˆ decide ;-) o seguinte sistema de 8 equa¸oes a e c˜ lineares a 8 inc´gnitas: o -1 2 1 2 -1 1 1 2 47 4 1 1 -5 3 -1 1 1 26 2 2 -2 3 -1 -1 2 1 39 5 -5 1 1 2 1 2 2 67 3 2 -3 2 1 3 2 -1 31 2 -2 1 2 2 3 1 3 78 1 -1 5 4 2 -2 2 -2 88 -2 3 2 3 3 4 -4 -3 34 E, informe o valor das 8 vari´veis encontradas: a x1 x2 x3 x4 x5 x6 x7 x8 40.2 Exerc´ ıcio 2 Resolva (a m˜o ou via computador, vocˆ decide ;-) o seguinte sistema de 8 equa¸oes a e c˜ lineares a 8 inc´gnitas: o 2 1 1 2 2 2 1 -3 41 2 1 3 4 6 1 -1 1 104 2 1 2 2 3 -3 2 1 43 5 2 1 -2 -2 2 1 3 38 3 2 -4 -1 4 4 5 -1 51 1 -1 2 1 3 1 2 4 89 -2 -3 5 3 2 -2 1 1 60 -1 2 2 1 -4 4 -2 -2 8 88-08, Pedro Kantek 455 88-08, Pedro Kantek 456 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 40. EXERC´ ICIOS PRATICOS: 128 - MATRIZES E, informe o valor das 8 vari´veis encontradas: a x1 x2 x3 x4 x5 x6 x7 x8 ´ CAP´ ITULO 40. EXERC´ ICIOS PRATICOS: 128 - MATRIZES 40.3 Exerc´ ıcio 3 Resolva (a m˜o ou via computador, vocˆ decide ;-) o seguinte sistema de 8 equa¸oes a e c˜ lineares a 8 inc´gnitas: o 1 2 1 1 2 3 -1 3 65 3 2 4 3 1 1 2 2 100 1 1 3 1 -2 -3 1 1 3 5 -4 1 -1 1 1 2 3 68 2 2 -3 1 2 1 6 -1 75 2 -2 -1 1 3 3 2 2 81 1 -3 1 1 1 -1 2 -1 24 -2 3 3 2 2 2 3 -1 84 E, informe o valor das 8 vari´veis encontradas: a x1 x2 x3 x4 x5 x6 x7 x8 40.4 Exerc´ ıcio 4 Resolva (a m˜o ou via computador, vocˆ decide ;-) o seguinte sistema de 8 equa¸oes a e c˜ lineares a 8 inc´gnitas: o 2 1 2 1 1 3 3 2 75 2 3 4 -5 1 2 -1 1 43 2 2 3 3 2 3 2 3 107 3 -3 2 -1 2 2 2 1 15 -2 3 -2 -2 3 5 5 -2 35 1 2 1 1 2 1 -1 3 52 -1 1 3 2 2 2 2 -1 64 -2 1 3 2 1 3 -2 1 42 E, informe o valor das 8 vari´veis encontradas: a x1 x2 x3 x4 x5 x6 x7 x8 40.5 1 2 3 4 Respostas 7 1 4 2 5 2 2 10 10 10 7 9 9 3 3 6 6 8 9 3 2 9 8 1 4 5 10 7 8 6 5 5 vers˜o de 10 de fevereiro de 2008 a 457 88-08, Pedro Kantek 88-08, Pedro Kantek 458 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 41. EXERC´ ICIOS PRATICOS: 135 - O CUBO RUBIK 3. Note que as 6 pe¸as centrais das 6 faces s˜o fixas e n˜o mudam de orienta¸ao entre c a a c˜ si (umas em rela¸ao a outras). c˜ ` Cap´ ıtulo 41 Exerc´ ıcios pr´ticos: 135 - O a cubo RUBIK Criado por Erno Rubik em 1974, tem um mecanismo simples que surpreende tanto do ponto de vista mecˆnico – ao estudar seu interior, como pela complexidade das a combina¸oes que se conseguem ao girar suas faces. c˜ O invento, descendente de um prot´tipo que tinha apenas duas faces ´ um tipo de o e quebracabe¸as que consiste de um cubo em que cada uma das 6 faces est´ dividida em c a 9 pe¸as. Elas se articulam gra¸as ao mecanismo da pe¸a interior central que fica oculta c c c dentro do cubo. O resto das pe¸as s˜o vis´ c a ıveis e pode-se observar 3 tipos de pe¸as que c n˜o perdem sua condi¸ao, a despeito de qualquer movimento que o cubo sofra. S˜o elas: a c˜ a Central As 6 pe¸as centrais definem a cor da face. Mant´m sempre a orienta¸ao relativa c e c˜ entre elas. No modelo original o branco se opunha ao amarelo, o vermelho ao laranja e o verde ao azul. Aresta Pe¸as formadas por 2 cores, em n´ mero de 12. c u V´rtices Pe¸as dos cantos do cubo, em n´ mero de 8 e formadas por 3 cores. e c u Representa¸˜o ca Para representar em 2D um cubo (que ´ 3D), vai-se fazer o seguinte mapeamento: e 1. As 6 cores ser˜o representadas como 123456. a 2. Cada instˆncia de cubro vai ser mostrado como a 123 456 789 abc ABC jkl JKL def DEF mno MNO ghi GHI pqr PQR stu vxy z() SSS SSS SSS EEE FFF DDD PPP EEE FFF DDD PPP EEE FFF DDD PPP III III III 4. Finalmente, para economia de papel, a configura¸ao acima vai ser apresentada c˜ como 123456789abcdefghiABCDEFGHI jklmnopqrJKLMNOPQRstuvxyz() Operadores Na tentativa de escrever um programa de computador que resolva o cubo de Rubik, usa-se em geral o algoritmo A* (Hart, 68 e 72). Uma parte importante do algoritmo ´ e a lista de operadores que se aplicam a um estado qualquer. Para os operadores que vir˜o a seguir, considere o estado inicial como a ou 123 456 789 abc ABC jkl JKL def DEF mno MNO ghi GHI pqr PQR stu vxy z() onde a face marcada com 1 corresponde ` aresta superior do cubo. A 2 ´ a face a e esquerda, a 3 ´ a frontal, a 4 ´ a direita e a 5 ´ a face posterior. Finalmente, a e e e face 6 ´ a face inferior do cubo. e 459 Podem-se definir os seguintes operadores: 88-08, Pedro Kantek 460 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 41. EXERC´ ICIOS PRATICOS: 135 - O CUBO RUBIK nome 1=cubo vertical antihor´rio a como ficou 369 258 147 JKL abc ABC jkl MNO def DEF mno 5=face PQR ghi GHI pqr frontal antizvs hor´rio a (xt )yu ´ CAP´ ITULO 41. EXERC´ ICIOS PRATICOS: 135 - O CUBO RUBIK 41.1 Exerc´ ıcio 1 1. Aplique o operador 8 ao cubo )H1 yEB ubC rqp I4j 98L atP onm F5f Deh vxM lkA c2i Gdg z(J 7Ks 6NO 3QR e obter´ como resposta um cubo que ter´, na face frontal na posi¸ao L= 2 e C= a a c˜ 3 o valor 2. Aplique o operador 6 ao cubo lO7 852 Lmg 3Ba 1FR zKc AdJ 4no MN6 kef DEb jqr PQp uhi GH9 )(I yxv Cts e obter´ como resposta um cubo que ter´, na face direita na posi¸ao L= 2 e C= a a c˜ 3 o valor 3. Quais (2) operadores devem ser usados no cubo 36c 25F 14I JKL abu pmA 7kl def DEy qnB 8NO ghi GH) roC 9QR stP vxM z(j a fim de resolvˆ-lo ? e 2=cubo frontal antihor´rio a 3=cubo lateral hor´rio a antihor´rio a (observador a ` esquerda) lor knq jmp 369 CFI uy) PMJ 258 BEH tx( QNK 6=face 147 ADG svz ROL lateralD cfi antibeh hor´rio a adg (observador a ` esABC querda) DEF GHI cfi stu pmj 987 beh vxy qnk 654 7=face adg z() rol 321 superior RQP hor´rio a ONM LKJ 123 456 jmp ab9 CFI ukl JKL de8 BEH tno MNO nome gh7 ADG sqr PQR 8=face frontal cfi hor´rio a vxy z() como ficou 123 456 ifc abs GDA 7kl JKL det HEB 8no MNO ghu IFC 9qr PQR pmj vxy z() 4=face superior antihor´rio a 369 258 147 JKL abc ABC jkl def DEF mno MNO ghi GHI pqr PQR stu vxy z() 12C 45F 78I abc ABu pmj 9KL def DEy qnk 6NO ghi GH) rol 3QR 9=face lateral stP direita vxM hor´rio a z(J (observador ` a es741 querda) 852 963 ABC jkl JKL abc def DEF mno MNO ghi GHI pqr PQR stu vxy z() 12P 45M 78J abc AB3 lor )KL def DE6 knq yNO ghi GH9 jmp uQR stC vxF z(I Observa¸ao importante: Note que quando ocorrem giros na face direita, a posi¸ao do c˜ c˜ operador SEMPRE ´ a esquerda do cubo. Se tiver d´ vidas sobre este operador, olhe as e u tabelas acima nos casos 3, 6 e 9. Exerc´ ıcio 2 1. Aplique o operador 8 ao cubo IHA KNd g43 88-08, Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 461 88-08, Pedro Kantek 462 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 41. EXERC´ ICIOS PRATICOS: 135 - O CUBO RUBIK p2R zbl JO7 ctu knQ (xo Mef D56 jmP )y1 ahi G89 rqL FEv CBs e obter´ como resposta um cubo que ter´, na face superior na posi¸ao L= 1 e a a c˜ C= 3 o valor 2. Aplique o operador 9 ao cubo 741 heB ro3 Av) PMl J8L abc t5( QNF mx6 kEH s2z ROI py9 jDG gdu Knq ifC e obter´ como resposta um cubo que ter´, na face superior na posi¸ao L= 3 e a a c˜ C= 1 o valor 3. Quais (2) operadores devem ser usados no cubo 741 852 IFC ABu pmj 9KL abc def DEy qnk 6NO ghi GH) rol 3QR stP vxM z(J a fim de resolvˆ-lo ? e ´ CAP´ ITULO 41. EXERC´ ICIOS PRATICOS: 135 - O CUBO RUBIK e obter´ como resposta um cubo que ter´, na face esquerdo na posi¸ao L= 1 e a a c˜ C= 3 o valor 2. Aplique o operador 4 ao cubo cfl yEo uBr 7qp I8) PMJ 3DA F5O deH tx( Qnm C2R ghG sba Lkj zvi KN4 961 e obter´ como resposta um cubo que ter´, na face superior na posi¸ao L= 2 e a a c˜ C= 3 o valor 3. Quais (2) operadores devem ser usados no cubo 987 654 321 jkl JKL abc ABC def DEF mno MNO ghi GHI pqr PQR stu vxy z() a fim de resolvˆ-lo ? e 41.3 Exerc´ ıcio 4 1. Aplique o operador 4 ao cubo pms bEt aBC u41 L8j 9HG iFI M52 KeD fx( Qno P63 JdA cvz Rqr lO7 kNh )yg e obter´ como resposta um cubo que ter´, na face direita na posi¸ao L= 1 e C= a a c˜ 1 o valor 2. Aplique o operador 6 ao cubo 463 88-08, Pedro Kantek 88-08, Pedro Kantek 41.2 Exerc´ ıcio 3 1. Aplique o operador 2 ao cubo AB3 DEh GHg cfi stR zvl J87 y54 beQ (xo Mnq u21 adC 96r Pmp LOj KNk IF) vers˜o de 10 de fevereiro de 2008 a 464 vers˜o de 10 de fevereiro de 2008 a EXERC´ ICIOS PRATICOS: 135 . na face frontal na posi¸ao L= 3 e C= a a c˜ 1 o valor 3.O CUBO RUBIK uy) tx( RFC IHz gmj 9QP rqp ONv hnk 6ED fed LKs iol 3BA cba GMJ 258 147 e obter´ como resposta um cubo que ter´. Quais (2) operadores devem ser usados no cubo 12A 45B ifC abs GDj 987 cKL det HEy qnk 6NO ghu IF) rol 3QR pmP vxM z(J a fim de resolvˆ-lo ? e ´ CAP´ ITULO 41.´ CAP´ ITULO 41. EXERC´ ICIOS PRATICOS: 135 .O CUBO RUBIK Respostas 1 2 3 4 4 A g L K r B i 9 4 7 9 7 9 7 5 vers˜o de 10 de fevereiro de 2008 a 465 88-08. Pedro Kantek 466 vers˜o de 10 de fevereiro de 2008 a . Pedro Kantek 88-08. os nossos problemas de sala de aula ı podem dar a entender que o mundo ´ certinho. A entrada do algoritmo cont´m diversas linhas: a primeira linha de um caso de teste e cont´m um inteiro N indicando o n´ mero de cercas na ilha (1 ≤ N ≤ 20). tamb´m importante. As cercas usadas pelo Zing ser˜o verticais ou e a horizontais e vˆm em tiras que tem diversas alturas e comprimentos. s´ 4 dire¸oes precisam ser examinadas.´ CAP´ ITULO 42. X2 .. dada a altura que a mar´ vai alcan¸ar e e c ˜ e a posi¸ao e altura de todas as cercas. Agora. X2 . c quando a mar´ sobe a ilha ´ inundada pela ´gua do mar.2 Truques usados na implementa¸˜o ca Para passar das coordenados do mundo (−500 ≤ X1 . Zing Zhu decidiu estabelecer uma fazenda de ostras na ilha. e a seguir. conhece-se de antem˜o c˜ a ONDE o algoritmo achado falha e quais problemas ele deixa de resolver. mas e ` a com os valores de cota de submers˜o.L e 1. Age-se assim para criar um espa¸o adicional onde c representar as cercas (que lembrando.OSTRAS -10 0 20 0 200 99 0 E a resposta neste caso dever´ ser 400 m2 . Duas cercas podem e se interceptar em um ponto n˜o necessariamente no seu final ou come¸o. Y2 ≤ 500. no problema original tˆm largura 0). Fica como sugest˜o melhorar este aspecto. S˜o a 6 problemas similares a este com cerca de 5 horas para sua solu¸ao em equipes de 4 c˜ pessoas mais um t´cnico.C da matriz de trabalho. a resposta ao pedido ´ apenas uma opera¸ao a e c˜ de compara¸ao (da cota com a altura da mar´) e de contagem de metros quadrados.´. quando na falta de solu¸ao melhor. Y2 e H representando respectivamente o e o ponto de in´ de uma cerca (X1 . Exerc´ ıcios pr´ticos: 139 a Ostras 42. Nesta nova e matriz. Vocˆ pode assumir que a largura das cercas ´ muito fina quando e e e comparada aos tamanhos de terra envolvida e para o prop´sito do c´lculo da ´rea total. para cada espa¸o da matriz ´ feita uma an´lise a c e a de submers˜o.. a c Vocˆ foi contactado pelo Zing para calcular. o a u 42. Cada uma das e u N pr´ximas linhas cont´m 5 inteiros: X1 . que n˜o vai ser inundada). Al´m disso X1 = X2 ou e Y1 = Y2 (mas n˜o ambos). Para cada ponto examinado. o programa deve devolver a quantidade total de ´rea de ilha que vai permanecer seca (i. a ´rea total de terra que NAO vai ser inudada c˜ a durante a mar´ alta. j´ c˜ e a que lembrando. H ≤ 1000. o menor valor dos 4 e a retornados na pesquisa acima). o a a as cercas podem ser consideradas como tendo largura zero. usa-se a que se tem. Y2 ). ` a a a prova d’´gua para controlar as ´reas que dever˜o ser inundadas e as ´reas que dever˜o a a a a a ficar secas durante a subida da mar´. X2 .1.1 A fazenda de ostras de Zing Zhu Zing Zhu possue uma ilha que vem a ser um peda¸o de terra chata. e mais do que isso. as alturas em cent´ a ımetros. usam-se as express˜es: o ESCADA ← 1 + (2 × M AIORY − M EN ORY ) L← 1 + abs((1 + (2 × (Y − M EN ORY ))) − ESCADA) C ← 1 + (2 × (X − M EN ORX)) Note o c´lculo da ESCADA que serve para inverter a ordem de crescimento das a linhas (no mundo cartesiano. Y1 . O fim a dos dados ´ indicado por N = 0 e A sa´ ıda Para cada conjunto de dados de entrada. e 1 ≤ W . onde L e C s˜o o n´ mero de linhas e colunas da matriz o a u proposta originalmente pelo problema. a e A terceira observa¸ao. na expectativa de que uma c˜ quase-solu¸ao ´ melhor do que nenhuma-solu¸ao. ´ que para problemas complexos nem c˜ e e sempre se acha uma solu¸ao 100% correta. as cercas s˜o dispostas. Pedro Kantek 468 vers˜o de 10 de fevereiro de 2008 a . ´ hora de retornar a matriz original (j´ sem as cercas). regionais e a fase final que envolve o planeta. Y1 . Todos os dias. Y1 ) e o ponto de fim (X2 . aqui a falha deste algoritmo). Age-se assim. Esta estrat´gia pressup˜e que ap´s a primeira cerca est´ e o o a o mar (o que nem sempre pode ser correto. e a e Embora a vida real a´ fora seja exatamente assim. a e a Exemplo Seja a entrada 4 -20 20 20 20 200 20 20 20 -20 200 0 0 0 20 100 467 Este problema apresenta algumas novidades interessantes. ´ ele ter sido e ´ extra´ da lista de problemas da maratona de programa¸ao da ACM de 2004. Ele usar´ um sofisticado sistema de cercas de pl´stico. a Cap´ ıtulo 42 42. As ´ e e coordenadas s˜o dadas em metros. Assim.. mas que n˜o costuma freq¨ entar as nossas e a a u aulas ´ o fato de n˜o existir nenhuma estrat´gia “evidente” para resolver o problema.1. sempre tem solu¸ao. a Estabelecido este valor. A primeira. e A segunda. −500 ≤ X1 . todas as dimens˜es s˜o de n´ meros inteiros. E um mapeamento simples. o c˜ escreve-se em qual altura de mar´ ele ficar´ submerso (na verdade. Isso n˜o ´ verdade. Vem em nosso socorro o fato de que as cercas s˜o verticais ou horizontais a a apenas. Depois de muito pensar e e e a tamb´m pedir conselhos a alguns membros de sua fam´ e ılia. os dados do problema (as cercas) s˜o transpostas a suas novas a a ` ´ coordenadas da matriz. Y2 ≤ 500) para as coordenadas 1. que nem ´ t˜o novidade assim. 88-08. as linhas crescem de baixo paa cima e no mundo da programa¸ao crescem de cima para baixo. Y1 .. ıcio A ultima linha da entrada cont´m um inteiro W que representa a altura da mar´. a solu¸ao ´ unica e e c˜ c˜ e ´ 100% correta e assim por diante. e a altura da cerca. c˜ Feita esta convers˜o. c˜ e c˜ A proposta de solu¸ao que vai ser sugerida aqui ´ a de construir uma nova matriz de c˜ e dimens˜es 2 × L + 1 e 2 × C + 1.1 Resolvendo. EXERC´ ICIOS PRATICOS: 139 . E uma ıdo c˜ disputa mundial com fases locais. 4 Exerc´ ıcio 3 Na instˆncia a seguir. a Toda a fazenda ´ assim mapeada. cujas cercas tˆm a seguinte distribui¸ao a e c˜ 6 10 3 3 13 13 3 2 10 14 14 5 5 10 17 13 13 3 3 19 10 14 5 5 14 380 340 140 80 140 160 O senhor Zing Zhu quer saber qual a ´rea seca quando a mar´ chegar a a e altura mar´ e 90 cm 110 cm m2 170 cm m2 230 cm m2 a ´rea seca O senhor Zing Zhu quer saber qual a area seca quando a mar´ chegar a ´ e altura mar´ e 70 cm 90 cm m2 150 cm m2 230 cm m2 area seca ´ m2 m2 42. o problema foi ligeiramente adaptado `s caracter´ a a ısticas usuais da fam´ VIVO de problemas. ılia Suponha ent˜o uma fazenda de ostras. ılia Suponha ent˜o uma fazenda de ostras.OSTRAS Nas linhas (e colunas) ´ ımpares desta nova matriz est´ o espa¸o para a coloca¸ao a c c˜ das cercas. O enunciado segue mais ou menos o mesmo.2 Exerc´ ıcio 1 42. ea ´ altura mar´ e 70 cm 90 cm area seca ´ ´ CAP´ ITULO 42. cujas cercas tˆm a seguinte distribui¸ao a e c˜ 6 9 3 3 14 14 3 3 9 13 13 4 4 9 17 14 14 3 3 17 9 13 4 4 13 380 280 80 100 180 200 470 vers˜o de 10 de fevereiro de 2008 a O senhor Zing Zhu quer saber qual a ´rea seca quando a mar´ chegar a a e vers˜o de 10 de fevereiro de 2008 a 469 88-08. O menor desses ´ quatro valores estabelece quando a ´gua vai chegar.OSTRAS m2 m2 170 cm m2 230 cm m2 42. pela retirada das cercas (linhas e colunas e ´ ımpares) o que sobra ´ ´rea util da fazenda. O enunciado segue mais ou menos o mesmo. o problema foi ligeiramente adaptado as caracter´ a ` ısticas usuais da fam´ VIVO de problemas. c baixo e esquerda. o problema foi ligeiramente adaptado `s caracter´ a a ısticas usuais da fam´ VIVO de problemas.´ CAP´ ITULO 42. Pedro Kantek . ılia Suponha ent˜o uma fazenda de ostras. ılia Suponha ent˜o uma fazenda de ostras. O enunciado segue mais ou menos o mesmo. olhando para cima.5 Exerc´ ıcio 4 Na instˆncia a seguir. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 139 . olhando o que (altura) impede a entrada da agua. o problema foi ligeiramente adaptado as caracter´ a ` ısticas usuais da fam´ VIVO de problemas. direita. cujas cercas tˆm a seguinte distribui¸ao a e c˜ 6 10 3 5 14 14 5 3 10 13 13 5 5 10 19 14 14 5 5 18 10 13 5 5 13 400 360 200 160 80 80 Na instˆncia a seguir. Nas linhas (e colunas) pares est˜o representados os metros quadrados da a fazenda. Lan¸adas as cercas. EXERC´ ICIOS PRATICOS: 139 . cujas cercas tˆm a seguinte distribui¸ao a e c˜ 6 10 2 4 14 14 4 3 9 13 13 4 4 10 18 14 14 4 4 17 9 13 4 4 13 240 400 160 100 100 200 Na instˆncia a seguir. O enunciado segue mais ou menos o mesmo. anda-se nas linhas e colunas pares.3 Exerc´ ıcio 2 42. Depois. EXERC´ ICIOS PRATICOS: 139 . Pedro Kantek 472 vers˜o de 10 de fevereiro de 2008 a .´ CAP´ ITULO 42.OSTRAS m2 42. Pedro Kantek 88-08.OSTRAS O senhor Zing Zhu quer saber qual a ´rea seca quando a mar´ chegar a a e altura mar´ e 70 cm 90 cm m2 110 cm m2 190 cm m2 a ´rea seca ´ CAP´ ITULO 42. EXERC´ ICIOS PRATICOS: 139 .6 1 2 3 4 Respostas 90 72 90 99 24 12 63 55 0 0 0 30 0 0 0 0 vers˜o de 10 de fevereiro de 2008 a 471 88-08. 000 (100 × 1.ROMANOS 43. Neste sistema as cifras escrevem-se com determinadas letras.2 1: 2: 3: Convers˜o de ar´bico para romano a a (cadeia RESP[10]) fun¸ao ARD (inteiro A. I.0. e um ”M”com h´ ıfen superior correspondia ao valor 1. Se estas letras se situam ` frente de um V. Este m´todo permitia escrever e cifras realmente altas. u a respectivamente. EXERC´ ICIOS PRATICOS: 144 . um L. a Uma caracter´ ıstica importante ´ que os n´ meros romanos n˜o s˜o unicos. Por exeme u a a ´ plo. ou trˆs X.000 × 1. 473 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: inteiro fun¸ao R2A (cadeia NROM[n]) c˜ cadeia CADAUX [7] ← ’IVXLCDM’ inteiro VALAUX[7] ← 1 5 10 50 100 500 1000 inteiro SUM. ou trˆs C a e e e em qualquer n´ mero.000.000). ou um D. N˜o se devem escrever mais de trˆs I. K. Por exemplo. LDVLIV. a Os romanos desconheciam o zero.000. introduzido posteriormente pelos ´rabes. um ”C”com h´ ıfen superior correspondia ao valor 100. u As equivalˆncias dos numerais romanos com o sistema decimal s˜o as seguintes: e a Decimal Romana Decimal Romana Decimal Romana 1 I 10 X 100 C 5 V 50 L 500 D 1000 M No sistema de numera¸ao romano as letras devem situar-se da ordem de maior valor c˜ para a de menor valor. Apresentam-se v´rios exemplos de n´ meros romanos. VDIV e finalmente ID. TAM TAM ← tamanho da cadeia NROM SUM ← 0 I←1 enquanto I < TAM fa¸a c K←1 enquanto CADAUX[K] = NROM[I] fa¸a c K++ fimenquanto se (I+1)≥TAM ent˜o a M←1 enquanto CADAUX[M] = NROM[I+1] fa¸a c M++ fimenquanto se VALAUX[K] < VALAUX[M] ent˜o a SUM ← SUM + VALAUX[M] . O h´ ıfen multiplicava o valor da letra por 1.0. Pedro Kantek 474 vers˜o de 10 de fevereiro de 2008 a .000 (1. a c˜ Para cifras elevadas os romanos utilizavam um h´ ıfen colocado por cima da letra correspondente.VALAUX[K] I←I+2 sen˜o a SUM ← SUM + VALAUX[K] I←I+1 fimse sen˜o a SUM ← SUM + VALAUX[K] I←I+1 fimse fimenquanto devolva SUM fim {fun¸ao} c˜ Converta para ar´bico: a Exerc´ ıcios de aquecimento XVI XXXVII XLVI XCVI CI CDXCVI CIV XXV XLV MDXI 43. As letras s˜o sempre mai´ sculas.´ CAP´ ITULO 43. podemos considerar corretas as seguintes representa¸oes de 499: CDXCIC. com as suas equivalˆncias deca u e imais: Decimal Romana Decimal Romana Decimal Romana 1 I 2 II 3 III 4 IV 5 V 6 VI 7 VII 8 VIII 9 IX 10 X 104 CIV 1444 MCDXLIV Deve-se notar que cada numeral romano b´sico ´ superior a todos os numerais roa e manos b´sicos de menor valor e cada numeral romano b´sico ´ subordinado a todos os a a e numerais romanos b´sicos de maior valor. de forma a que n˜o existe nenhuma forma de representa¸ao deste valor. j´ que no alfabeto romano n˜o u a u a a existem as min´ sculas. subtrai-se o seu valor ` cifra das ditas letras.1 1: 2: 3: 4: Convers˜o de romano para ar´bico a a Cap´ ıtulo 43 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: Exerc´ ıcios pr´ticos: 144 a romanos O sistema de numera¸ao romana desenvolveu-se na antiga Roma e utilizou-se em todo c˜ o seu imp´rio. que repree sentam os n´ meros. c˜ XCIX. cadeia LETRAS[3]) c˜ cadeia AUX[10] inteiro K 4: se A ≥ 0 ent˜o a 88-08.000). ´ CAP´ ITULO 43.2 Exerc´ ıcio 2 Implemente os programas acima e a seguir responda: Converta para ar´bico a CDLXVII DCCCXCIII MCDLVIII CDLXV DXIX MDCX 88-08. Pedro Kantek Responda: vers˜o de 10 de fevereiro de 2008 a 475 88-08. Pedro Kantek 476 vers˜o de 10 de fevereiro de 2008 a .D × 10 AUX ← AUX + D ARD ’XLC’ AUX ← AUX + V ARD ’IVX’ devolva AUX fim{fun¸ao} c˜ 43.D × 100 AUX ← AUX + D ARD ’CDM’ D ← V ÷ 10 V ← V . EXERC´ ICIOS PRATICOS: 144 .1 Exerc´ ıcio 1 Implemente os programas acima e a seguir responda: Converta para ar´bico a CCIX CDIX MMCCXCV DCCXL CCCXIII MMDCCCXXIX Responda: Converta para romano Responda: 2404 382 187 85 466 2510 43. EXERC´ ICIOS PRATICOS: 144 .D × 1000 AUX ← AUX + (-D) ARD ’M’ D ← V ÷ 100 V ← V .ROMANOS 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: ´ CAP´ ITULO 43.ROMANOS Exerc´ ıcios de aquecimento 38 44 35 104 496 107 665 388 1002 843 Converta para romano: se A=0 ent˜o a devolva ” sen˜o se A=1 ent˜o a a devolva LETRAS[1] sen˜o se A=2 ent˜o a a devolva LETRAS[1]+LETRAS[1] sen˜o se A=3 ent˜o a a devolva LETRAS[1]+LETRAS[1]+LETRAS[1] sen˜o se A=4 ent˜o a a devolva LETRAS[1]+LETRAS[2] sen˜o se A=5 ent˜o a a devolva LETRAS[2] sen˜o se A=6 ent˜o a a devolva LETRAS[2]+LETRAS[1] sen˜o se A=7 ent˜o a a devolva LETRAS[2]+LETRAS[1]+LETRAS[1] sen˜o se A=8 ent˜o a a devolva LETRAS[2]+LETRAS[1]+LETRAS[1]+LETRAS[1] sen˜o se A=9 ent˜o a a devolva LETRAS[1]+LETRAS[3] fimse sen˜o a K←1 enquanto K < abs(A) fa¸a c AUX[K] ← LETRA[1] K++ fimenquanto devolva AUX fimse fim{fun¸ao} c˜ (cadeia RESP[10]) fun¸ao A2R (inteiro V) c˜ inteiro D cadeia AUX[10] AUX ← ” D ← V ÷ 1000 V ← V . ´ CAP´ ITULO 43.CDLXVI.2295. 313.DCCCV. 864.MMDX 467.XLI. Pedro Kantek 88-08.LXXXV.1610.CCCLXXXII. 409.MMCDIV. 465. 893.2009.MMXCI.2829. EXERC´ ICIOS PRATICOS: 144 .ROMANOS 43.3 Exerc´ ıcio 3 Implemente os programas acima e a seguir responda: Converta para ar´bico a DCCXIX XLII MMDCCXCIII DCCCLXIV IV MMIX Responda: Converta para romano Responda: 2091 41 97 1931 547 859 43.MMMCDII.CLXXXVII. Pedro Kantek 478 vers˜o de 10 de fevereiro de 2008 a . 42. EXERC´ ICIOS PRATICOS: 144 .CDX.DCCCLIX vers˜o de 10 de fevereiro de 2008 a 477 88-08.1458. 519.4 1 2 3 Respostas 209. 740.MMMCCLXI 719.CXCVIII.XCVII.DCCCXLIV.ROMANOS Converta para romano Responda: 3402 844 805 410 198 3261 ´ CAP´ ITULO 43.MCMXXXI.DXLVII. 4.2793. . indicando respectivamente o n´ mero de disciplinas avan¸adas do curso e o n´ mero u c u m´ximo de disciplinas que podem ser cursadas por semestre.DIVERSOS seguintes tem o formato STRO K STR1 STR2 . Mais precisamente.. Sendo muito s´bio... O reitor resolveu disponibilizar um programa de computador para ajudar os o alunos a fazerem suas escolhas de disciplinas. A prioridade das disciplinas ´ determinada pela a c e ordem em que elas aparecem pela primeira vez na entrada: a que aparece primeiro tem maior prioridade. a prioridade de cada c˜ e disciplina. a Defini¸˜o: considere as cadeias de caracteres Sa = al a2 .. N˜o h´ circular´ a a idade nos pr´-requisitos (ou seja. 1 ≤ K ≤ 15 ´ o n´ mero de e c e u disciplinas que s˜o pr´-requisitos de STR0 e STR1. bn . este ano o reitor introduziu uma regra adicional limitando a o n´ mero de disciplinas que cada estudante pode cursar por semestre a um certo valor u N. No novo sistema ıvel e c˜ os alunos podem escolher as disciplinas que desejam cursar em um semestre com a unica ´ restri¸ao de n˜o poderem cursar uma dada disciplina A sem antes terem cursado todas c˜ a as disciplinas que tiverem sido estabelecidas como pr´-requisitos de A. no formato mostrado no exemplo de sa´ abaixo. A primeira linha deve conter a frase ’Formatura em S semestres’. EXERC´ ICIOS PRATICOS: 148 . Se N ou menos disciplinas podem ser cursadas em um determinado semestre. am e Sb = bl b2 . Se mais do que N e ıda disciplinas podem ser cursadas em um determinado semestre (obedecendo ao sistema pr´e requisitos). < Z . E a´ que vocˆ entra e na est´ria. Ap´s alguns e o semestres o reitor notou que muitos estudantes estavam sendo reprovados em muitas disciplinas. o programa deve sugerir que o aluno matricule-se em todas as disciplinas dispon´ ıveis. A sa´ deve ser escrita na sa´ padr˜o... onde S ´ o n´ mero de semestres necess´rios para concluir o curso segundo a sugest˜o do reitor.2 Exerc´ ıcio 1 1.1 Universidade de Pinguinhos / cubos Estes dois exerc´ ıcios foram retirados da Maratona de Programa¸ao da ACM de 2005. c˜ onde apareceram com os nomes de “Curso Universit´rio” e “cubos coloridos”.´ CAP´ ITULO 44. a H´ alguns anos atr´s. ıda ıda a Exemplo Exemplo de entrada 2 2 B02 3 A01 A02 A03 C01 2 B02 B01 Sa´da para o exemplo ı Formatura em 4 semestres Semestre 1 : A01 A02 Semestre 2 : A03 B01 Semestre 3 : B02 Semestre 4 : CO1 Formatura em 4 semestres Semestre 1 : ARTE1 MAT1 Semestre 2 : ARTE2 PROG1 Semestre 3 : PROG2 Semestre 4 : PROG3 Cap´ ıtulo 44 Exerc´ ıcios Pr´ticos: 148 a diversos 44. no entanto. e u a a As S linhas seguintes (levem conter a descri¸ao das disciplinas a serem cursadas em cada c˜ semestre. STR2. < 9 < A < B < . o aluno deve cursar (e passar!) toc das as disciplinas b´sicas e avan¸adas. e solicitou sua ajuda. ıda Para cada semestre. a1 = b1 e a cadeia a2 a3 . Pedro Kantek 480 vers˜o de 10 de fevereiro de 2008 a . e o n´ mero m´ximo de disciplinas por semestre. Para concluir o curso. Sa ca precede Sb em ordem lexicogr´fica se e apenas se Sb ´ n˜o-vazia e uma das seguintes a e a condi¸oes ´ verdadeira: c˜ e Sa ´ uma cadeia vazia. STRK onde STRO ´ o nome de uma disciplina avan¸ada. Seja uma instˆncia composta de a 88-08..... fez com que os alunos ficassem muito confusos na ´ ı hora de escolher as disciplinas a serem cursadas em cada semestre. segundo a sugest˜o do reitor. O nome de uma disciplina ´ uma cadeia com no a e e m´ ınimo um e no m´ximo sete caracteres alfanum´ricos mai´ sculos (’A’-’Z’ e ’O’-’9’). a Sa´ ıda Para cada caso de teste da entrada seu programa deve produzir a sa´ na ıda seguinte forma. seu programa deve calcular u a o n´ mero necess´rio de semestres para concluir o curso. A e e a a e c primeira linha de um caso de teste cont´m dois inteiros 1 ≤ N ≤ 100 e 1 ≤ M ≤ e 10. simplesmente porque os estudantes estavam cursando muitas disciplinas por semestre. a lista das disciplinas deve ser dada em ordem lexicogr´fica. Entrada A entrada. O final da entrada ´ indicado por N = M = 0.. direta ou indiretamente). A cada disciplina ´ atribu´ uma prioridade. Essa regra adicional. a Universidade de Pinguinhos introduziu um novo sistema a a flex´ de cr´ditos para os alunos ingressantes de cursos de gradua¸ao.bn .. Se uma disciplina n˜o tem qualquer e a a pr´-requisito ela ´ denominada b´sica . o programa deve sugerir que o aluno matricule-se nas N disciplinas de maior prioridade. a e u Note que as disciplinas b´sicas s˜o aquelas que aparecem apenas como pr´-requisito de a a e alguma disciplina avan¸ada. Cada uma das N linhas a 479 3 2 ARTE2 1 ARTE1 PROG3 1 PROG2 PROG2 2 MAT1 PROG1 0 0 44.. Alguns estudantes chegavam a se matricular em at´ quinze disciplinas em um e semestre. e u a a a lista de disciplinas que o aluno deve matricular-se em cada semestre. dadas a descri¸ao de pr´-requisitos para cada disciplina. se a disciplina B tem como pr´-requisito a disciplina e e A ent˜o A n˜o tem B como pr´-requisito.. o reitor quer que o programa sugira as disciplinas a serem cursadas durante o curso da seguinte forma. e a e A entrada deve ser lida da entrada padr˜o. e a1 < b1 na ordem O < l < 2 < . um semestre por linha. STRK s˜o os nomes das a e a disciplinas que s˜o pr´-requisitos de STRO. O n´ mero total de a a e u disciplinas ´ no m´ximo igual a 200. cont´m v´rios casos de teste. e a que aparece por ultimo tem a menor prioridade.am precede a cadeia b2 b3 .. Portanto.caso contr´rio ela ´ denominada avan¸ada. . EXERC´ ICIOS PRATICOS: 148 . etc. resposta = 2 7 2. as faces do cubo tˆm cores de 1 a 6. a Sa´ ıda Para cada caso de teste seu programa deve imprimir uma linha contendo um unico ´ inteiro. EXERC´ ICIOS PRATICOS: 148 . Entrada A entrada cont´m v´rios casos de teste. Pedro Kantek . no formato dado no exemplo abaixo. Cada face de cada cubo ´ de uma cor. a face com cor 1 est´ no lado oposto da face e a com a cor 3. Seja uma instˆncia composta de a 6 FORT 2 QUIM 4 ENGE 4 MEDI 2 ENGA 4 RETO 4 0 0 4 PORT FRAN CMAM PORT BAND BAND ENGC MATB DISC INGL GEOL ALGO 44. Elas passam horas criando ’casas’. O irm˜ozinho de Tomaz acabou de ganhar um conjunto de blocos coloridos a no seu anivers´rio. ele decidiu descobrir quantos ”tipos”diferentes de cubos o seu irm˜oza inho ganhou. Na descri¸ao as cores ser˜o identificadas c˜ a pelos n´ meros de O a 9. Pedro Kantek 88-08. e a. Seja uma instˆncia composta de a 6 GEOL 2 ESDA 2 LOGI 3 DISC 4 ENGE 4 3 PORT ENGC FRAN PORT FRAN CALE CALC INFO INGL LATI MEDI CARI COBO LATI PORT 482 vers˜o de 10 de fevereiro de 2008 a 481 88-08. A descri¸ao de cada cubo ser´ dada em trˆs linhas mostrando as u c˜ a e cores das seis faces do cubo ”aberto”. correspondendo ao n´ mero de tipos de cubos no conjunto dado.DIVERSOS 6 MEDI 4 ENGC 2 CALC 2 GEOA 3 PORT 4 INGL 3 0 0 4 ENGM DISC CARI LOGI ENGM CALE ´ CAP´ ITULO 44. 3. ’pr´c e dios’.2.3 4 5 9 1 4 9 4 Exerc´ ıcio 1a 1 4 4 9 5 9 9 4 4 9 5 1 4 4 5 1 9 9 ENFE GEOM CALC MATB MATB ALEM INGL INFO Quantos cubos diferentes ? Resolva-a e informe: semestresmateria 1 do semestre 5 materia 1 do semestre 3 44. 4 e 6. Vocˆ pode ajud´-lo? Dois cubos s˜o considerados do mesmo tipo se for e a a poss´ rotacionar um deles de forma que as cores nas faces respectivas dos dois cubos ıvel sejam iguais.4 Exerc´ ıcio 2 3 CALE ALGO BAND COBO PORT FISI 1. Como Tomaz ´ uma crian¸a a e e c muito anal´ ıtica. 1 2 4 5 6 3 vers˜o de 10 de fevereiro de 2008 a RETO COBO DISC GEOL CMAM DBAS INFO ENGA FRAN QUIM COBO MEDI CALE Resolva-a e informe: semestresmateria 3 do semestre 4 materia 2 do semestre 3 2.´ CAP´ ITULO 44. e A entrada deve ser lida da entrada padr˜o. No exemplo abaixo. A primeira linha do caso de teste cont´m um e a e inteiro N especificando o n´ mero de cubos no conjunto (1 < N < 1000). e est´ no lado oposto da e a face com cor 5.DIVERSOS O final da entrada ´ indicado por N = 0. ıda ıda a Exemplos ENFE CALE COBO CALE LATI ENGE GEOL ENGA CARI GEOM RETO LATI Resolva-a e informe: semestresmateria 3 do semestre 3 materia 3 do semestre 2 3 0 0 7 2 3 1 0 1 2 3 7 0 3 0 0 2 1 . u A sa´ deve ser escrita na sa´ padr˜o. face com cor 2 ´ vizinha das faces 1. Seja uma instˆncia composta de a 6 CULI 4 ENGE 4 ENFE 3 GEOA 2 GEOM 2 ALEM 4 0 0 44.1 Cubos Coloridos Crian¸as adoram brincar com pequenos cubos. As pr´ximas u o 3 × N linhas descrevem os cubos do conjunto. DIVERSOS Resolva-a e informe: semestresmateria 2 do semestre 4 materia 1 do semestre 7 materia 3 do semestre 3 44.DIVERSOS ALGO 3 INGL CMAM ENFE 0 0 Resolva-a e informe: semestresmateria 1 do semestre 5 ´ CAP´ ITULO 44. Seja uma instˆncia composta de a 6 CALE 3 INFO 2 PORT 4 GEOA 2 CALC 2 RETO 4 0 0 4 CARI QUIM CULI ALGO DBAS FRAN QUIM ENFE ENGE INGL BAND ENGM GEOL ESDA GEOM MATB ENGC vers˜o de 10 de fevereiro de 2008 a 483 88-08. EXERC´ ICIOS PRATICOS: 148 .7 44. Pedro Kantek 88-08. Seja uma instˆncia composta de a 6 GEOA 4 ALGO 3 LATI 4 ESDA 2 MEDI 3 CALC 2 0 0 3 CALE CARI COBO ENGE DBAS FRAN INFO BAND BAND INGL FRAN COBO QUIM LOGI ENGA CMAM GEOM CMAM Resolva-a e informe: semestresmateria 1 do semestre 3 materia 2 do semestre 6 2.5 4 2 4 8 8 3 4 Exerc´ ıcio 3a 9 6 9 7 1 9 9 9 1 9 7 6 1 9 7 9 6 9 Exerc´ ıcio 2a 3 8 4 8 2 4 2 4 4 8 3 8 8 4 3 4 8 2 4 9 9 7 9 6 1 Quantos cubos diferentes ? Quantos cubos diferentes ? 44.6 Exerc´ ıcio 3 1. EXERC´ ICIOS PRATICOS: 148 .´ CAP´ ITULO 44.8 1 1a 2 2a 3 3a 6 3 8 4 7 2 Respostas LATI DISC 13 ENGE FRAN COBO ESDA 12 14 24 6 ALEM CALC 7 CARI INGL 7 ESDA RETO 44. Pedro Kantek 484 vers˜o de 10 de fevereiro de 2008 a . os azulejos devem ser usados inteiros).0 800 2. imprima uma linha com trˆs inteiros descrevendo respectivamente as quantidades de e azulejos pequenos.0 3.´ CAP´ ITULO 45.0 0. Pedro Kantek 486 vers˜o de 10 de fevereiro de 2008 a . 15 centavos e 50 centavos respectivamente. em tempo para o ver˜o do ano a a que vem. Se ´ poss´ e ıvel recobrir completamente a piscina com o estoque dispon´ ıvel.0 1.1 700 2. Cada azulejo desses tamanhos custa 2 centavos. Se o ıvel e estoque for suficiente.4 400 1.0 4.5 1.1 A Piscina O Centro Comunit´rio decidiu construir uma nova piscina. com dimens˜es X por Y e com profundidade a o Z.5 12.0 3. Y e Z.0 1000 1000 1000 a resposta dever´ ser a Exerc´ ıcios Pr´ticos: 151 a diversos Estes exerc´ ıcios foram retirados da Maratona de Programa¸ao da ACM de 2005 e 2004. m´dios e grandes para recobrir toda a piscina com o menor custo e 485 45. Cada caso de teste ´ composto por e a e duas linhas. peq 1 2 3 az. M e e u e G.1 900 0 0 0 Exerc´ ıcio 1 5.9 700 6. G ≤ 2000000). EXERC´ ICIOS PRATICOS: 151 .0 1200 5. A piscina ser´ recoberta com um novo tipo de azulejo cerˆmico de alta tecnologia que a a ´ produzido em trˆs tamanhos distintos: 5 × 5. Os azulejos devem ser usados para recobrir completamente toda a superf´ ıcie da piscina sem deixar qualquer espa¸o sem azulejos e sem deixar sobras de azulejos transpasc sando as bordas da piscina. A primeira linha cont´m trˆs n´ meros reais X. Sa´ ıda Para cada caso de teste da entrada seu programa deve produzir uma linha de sa´ ıda.6 5000 0 3000 a resposta dever´ ser a 4464 0 2501 3.0 e 0 < Z ≤ 2. Vocˆ deve escrever um programa que determine se e o estoque de azulejos dispon´ na loja ´ suficiente para azulejar toda a piscina. imprima uma linha contendo a palavra impossivel (note a a ausˆncia de acentua¸ao). 15 × 15 e 30 × 30 (em cent´ e e ımetros). e c˜ Alguns exemplos Para as entradas Cap´ ıtulo 45 3.5 500 Seja a entrada Resolva-as e informe: inst az. grande 88-08. Os azulejos s˜o de alta qualidade.0 1. representando a quantidade dispon´ de azulejos de tamanho pequeno.0 700 6. A nova piscina ser´ retangular.DIVERSOS poss´ ıvel. Caso contr´rio. representando as e e u dimens˜es e a profundidade da piscina. m´dio e ıvel e grande (0 ≤ P. com precis˜o de uma casa decimal o a (0 < X. Y ≤ 50. respectivamente. m´dio e az. A segunda linha cont´m trˆs n´ meros inteiros P . Entrada A entrada cont´m v´rios casos de teste. c˜ 752 0 268 3.0 1300 4.0 300 300 300 0 0 0 a resposta dever´ ser a impossivel 45.9 300 300 300 a resposta dever´ ser a 0 0 220 12. O final da entrada ´ indicado por e X = Y = Z = 0. M. seu programa deve determinar tamb´m o n´ mero de azulejos de e u cada tamanho que s˜o necess´rios para que o custo de azulejar a piscina seja o menor a a poss´ ıvel. ´ A Unica loja local que vende esse tipo de azulejo tem em estoque uma certa quantidade de azulejos de cada tamanho. feitos de um material que n˜o pode ser cortado (ou a a seja.2 5.0). em metros. 3 M´gico a Um m´gico inventou um novo truque de cartas e apresentou-o na prestigiosa American a Conference of Magicians (ACM). J=valete.. EXERC´ ICIOS PRATICOS: 151 . EXERC´ ICIOS PRATICOS: 151 . Saber´ tamb´m que o valor da carta escondida n˜o est´ a mais de 6 posi¸oes a e a a c˜ a ` direita de y. (No exemplo. sem que o m´gico as veja. esconda a carta x.. de outra carta y do mesmo naipe. copas e paus). o assistente esconde a dama de ouros). < T < J < Q < K < A < 2 < . – z3 . Cada uma das 6 ordens poss´ ıveis em que as cartas s˜o mostradas deve ser a interpretada pelo m´gico como sendo um n´ mero: a u – z1 .. escolher quais quatro ser˜o mostradas. depois de olhar as 5 cartas. escolha o de menor ordem.. a 45. A♣. A primeira linha contem N . Desta maneira. a vers˜o de 10 de fevereiro de 2008 a ♦ < ♠ < ♥ < ♣ (ouros. Para fazer u isto ele ordena as trˆs cartas (digamos z1 . Ap´s mostrar 4 dessas cartas a a o ao m´gico. z3 significa 1. Assuma que o expectador escolheu as cartas J♥. Cada instˆncia e a a a ´ composta por uma unica linha na qual est˜o 4 cartas separadas por brancos. 2♥. Isto ser´ sempre poss´ a ıvel. a Sa´ ıda A sa´ deve ser composta pela quinta carta. a Usar-se-´ a seguinte ordem a ´ A < 2 < . Neste ponto ele saber´ o naipe da carta escondida (o mesmo a a de y). z2 . As cartas vem na ordem em que s˜o apresentadas pelo assistente. respectivamente. Pedro Kantek 88-08. 8♠ e Q♦ (valete de copas. Cada e ´ a carta tem 1 caracteres para seu valor e um caracter para o seu naipe. z1 . 7♦.2 1000 4. T =10. mostrando as 4 cartas. z2 significa 2. z2 e z3 ) em ordem. peq 1 2 3 az.3 900 2. a O truque funciona pelo fato do assistente. como visto acima. z1 significa 4. – z1 . O c´digo ´ baseado em uma dada ordena¸ao do baralho. e mostre y ao m´gico.5 1200 0 0 0 Exerc´ ıcio 2 6. onde A=As.DIVERSOS ´ CAP´ ITULO 45.4 600 5. – z2 . – z3 . onde z1 < z2 < e z3 . 8♣. Pedro Kantek 488 vers˜o de 10 de fevereiro de 2008 a . z3 significa 3. < 9 < T < J < Q < K. do naipe n que esteja a no m´ximo 6 posi¸oes ` direita na a c˜ a tabela c´ ıclica A < 2 < . z1 . 8♣. ele informa ao m´gico qual ´ a quinta carta. As cartas o e c˜ s˜o ordenadas primeiro por naipe e depois pelo seu valor de face.9 900 1. onde e a N ´ a quantidade de instˆncias que vir˜o a seguir (1 ≤ N ≤ 10000). com as 3 cartas sobrantes. escolha a que tem o menor valor de face. J♥ T♠..5 800 6. e 45.7 300 2. no exemplo). o Elas s˜o passadas ao assistente. grande 487 88-08.0 900 4. 7 de ouros. 5♦ o programa dever´ responder Q♦ e A♠. m´dio e az.4 Exerc´ ıcio 1a Seja a entrada 3 2♥ K♠ A♦ 9♣ Q♦ 7♠ 9♠ 2♥ 4♠ 4♥ 6♥ 4♦ Resolva-a e informe: inst1 inst2 inst3 45. espadas. e ele as escolhe de modo a codificar a informa¸ao para o m´gico a c˜ a sobre a quinta carta. z3 . O truque requer 3 participantes: o m´gico. j´ que existem apenas 13 cartas do a mesmo naipe. em uma determinada ordem. 8♠. ıda Exemplos Para a entrada 2 7♦. z2 significa 5.5 5. o assistente codifica um n´ mero entre 1 e 6.DIVERSOS Entrada A entrada cont´m diversas instˆncias. ele magicamente adivinha a quinta carta. Q=dama e K=rei.´ CAP´ ITULO 45. um exe a pectador e um assistente.4 1000 Seja a entrada Resolva-as e informe: inst az. 8 de espadas e dama de ouros). – z2 . z3 . z1 significa 6.. Se mais do que um naipe aparecem duas vezes. a e Sua tarefa ´ desenvolver um programa que receba as 4 cartas mostradas pelo assise tente e informe ao m´gico qual a quinta carta. Durante o truque o expectador deve embaralhar um conjunto de 52 cartas (baralho completo sem os coringas) e depois escolher 5 cartas aleat´rias. O truque ´ muito interessante e ele recebeu o prˆmio e e ”Best Magic Award”na conferˆncia. 8 de paus. A estrat´gia do assistente ´ a e e seguinte: Ache o naipe n que aparece ao menos duas vezes no conjunto de cartas escolhidas (ouros. z2 . Se duas ou mais cartas satisfazem o crit´rio acima. 9 Respostas 263 0 0 724 0 0 -1 772 994 0 140 54 0 784 693 464 186 998 420 62 198 500 829 724 Seja a entrada 3 5♦ Q♥ Q♣ 7♠ 5♣ 6♠ Q♥ K♦ 8♦ 4♥ T♣ K♠ Resolva-a e informe: inst1 inst2 inst3 1 809 1a 6O 2E JP 2 -1 2a 9E 7E JC 3 -1 3a QE 3O 3C 45.´ CAP´ ITULO 45.0 1100 4.9 800 1. peq 1 2 3 az.9 800 1.DIVERSOS 45.7 5. m´dio e az.9 1100 0 0 0 Exerc´ ıcio 3 6. Pedro Kantek 490 vers˜o de 10 de fevereiro de 2008 a .9 900 2.8 Exerc´ ıcio 3a Seja a entrada 3 T♣ 8♦ 5♠ Q♥ T♠ 4♦ T♣ K♥ J♦ 6♠ 7♠ A♣ Resolva-a e informe: inst1 inst2 inst3 vers˜o de 10 de fevereiro de 2008 a 489 88-08. EXERC´ ICIOS PRATICOS: 151 .1 500 5. grande 45.9 700 5.6 Exerc´ ıcio 2a 45.5 1400 4. EXERC´ ICIOS PRATICOS: 151 .DIVERSOS ´ CAP´ ITULO 45. Pedro Kantek 88-08.0 1000 Seja a entrada Resolva-as e informe: inst az. Nesta festa. Os barcos s˜o adimensionais.´ CAP´ ITULO 46. ter-se-´ uma ilumina¸ao fe´rica que precisa ser controlada. . supondo a entrada 12 3 1 6 -1 2 -1 88-08. Os obst´culos est˜o dispostos de tal forma que os mesmos n˜o se interceptam. A primeira linha cont´m o n´ mero N de lˆmpadas (10 ≤ N ≤ 100) e u a 2. O final da entrada ´ representada por uma e linha contendo xi = yi = xf = yf = n = 0.00 respectivamente. com a a u ` K ≥ 0. Para ajustar o acende-apaga. y1 ) e (x2 . De forma a a a similar. ou seja as lˆmpadas 1.20 e 10. haver´ uma festa de congra¸amento.. x2 . ue Sa´ ıda A sa´ dever´ ter todas as configura¸oes poss´ ıda a c˜ ıveis de serem alcan¸adas aperc tando C vezes algum dos quatro bot˜es e que satisfa¸am as restri¸oes de aceso e apagado o c c˜ da entrada. ıcio c˜ 46. yf . Por exemplo. Vocˆ deve idealizar um algoritmo que receba infore e ma¸oes de entrada conforme descritas baixo e mostre quais as configura¸oes poss´ c˜ c˜ ıveis de lˆmpadas acesas e apagadas s˜o poss´ a a ıveis. ıcio c˜ Na pr´xima final da IOI. as coordenadas do ponto de chegada (xf . A terceira cont´m uma seq¨ˆncia de nenhuma. cientistas da computa¸ao do mundo todo se encontram para c˜ a famosa Regata dos Cientistas. A competi¸ao consiste em uma corrida de barcos c˜ com obst´culos pelo oceano. Entrada A entrada ´ composta por 4 linhas.) a a u Este exerc´ foi retirado da Maratona de Programa¸ao da ACM de 2005. Uma equipe que toca ou transpassa um obst´culo ´ automaticamente a e desclassificada. O oceano ´ considerado um plano infinito. yf ) ıcio e a quantidade de obst´culos n (n ≤ 150). uma ou duas lˆmpadas que dever˜o ´ e ue a a estar APAGADAS ao final. ou seja as acesas apagam e as apagadas a a acendem.3 Ilumina¸˜o da festa ca Este exerc´ foi retirado da Maratona de Programa¸ao da IOI de 1998. 7. y1 . n. Vocˆ foi contratado pela equipe brasileira e para desenvolver um programa que calcule o comprimento da menor rota v´lida poss´ a ıvel do ponto de partida ao ponto de chegada. Pedro Kantek 492 vers˜o de 10 de fevereiro de 2008 a . h´ 4 bot˜es cujos comportamentos s˜o: c a o a bot˜o 1 Todas as lˆmpadas trocam de estado. A seq¨ˆncia termina com -1. Cada uma das n linhas seguintes de um caso a de teste corresponde a quatro n´ meros inteiros (x1 . Considere que as coordenadas x. c˜ a c˜ e A ilumina¸ao ser´ composta por N lˆmpadas.. 3. y2 ) que s˜o as coordenadas u a dos dois extremos de um obst´culo. 4. representando respectivamente e u as coordenadas do ponto de in´ (xi . a representados por um ponto no plano e os obst´culos possuem espessura desprez´ a ıvel. partindo de um ponto a e em comum. para comemorar as o a c premia¸oes. os pontos de in´ e chegada da competi¸ao n˜o s˜o interceptados por nenhum ıcio c˜ a a obst´culo.) bot˜o 3 Trocam de estado as lˆmpadas de n´ mero par (2. incrementa-se um contador C. A seq¨ˆncia termina com -1. No in´ c˜ a a ıcio da festa. ue 4. y2 ). A segunda. y de qualquer a ponto.. yi .. a Cada vez que um dos bot˜es ´ pressionado.REGATA DE CIENTISTAS E LUZES DA FESTA Sa´ ıda Para cada caso de teste. satisfazem −5000 ≤ x. . yi ). xf .2 Regata de cientistas Todos os anos desde 1996. a 46. a Entrada A entrada ´ composta por v´rios casos de teste. todas as lˆmpadas a come¸am acesas. A equipe vencedora ´ aquela que primeiro atinge o ponto de chegada (o e ponto de chegada ´ distinto do ponto de in´ e ıcio). imprima uma linha contendo o comprimento da menor rota v´lida poss´ a ıvel. alcan¸ar o ponto de chegada sem que nenhum obst´culo seja tocado ou c a transpassado.1 Exerc´ ıcio 1 As respostas a estes dois casos s˜o 10. a saber: e 1. cont´m o valor final do contador C de bot˜es (1 ≤ C ≤ 10000) e o 3. A ultima cont´m uma seq¨ˆncia de nenhuma. A primeira linha de um e a caso de teste cont´m 5 n´ meros inteiros xi . 4. e onde cada obst´culo ´ localizado em uma posi¸ao fixa e representado por um segmento a e c˜ de reta dado pelos seus dois extremos (x1 . Exemplos Cap´ ıtulo 46 0 5 0 5 0 0 10 0 1 -1 5 1 0 10 0 1 0 5 1 0 0 0 0 Exerc´ ıcios Pr´ticos: 152 a Regata de cientistas e Luzes da Festa 46. y ≤ 5000. 491 bot˜o 4 Trocam de estado as lˆmpadas de cujo n´ mero obedece a regra 3K + 1.. bot˜o 2 Trocam de estado as lˆmpadas de n´ mero ´ a a u ımpar (1. . que no in´ o e ıcio sempre cont´m o valor 0 (zero). arredondada para duas casas decimais. uma ou duas lˆmpadas que dever˜o e ue a a estar ACESAS ao final.. EXERC´ ICIOS PRATICOS: 152 . onde o objetivo de cada equipe ´. dada a entrada: 11 3 4 8 ´ CAP´ ITULO 46. a a a a as lˆmpadas n˜o citadas aqui. os bot˜es ser˜o pressionados 3 vezes. e ao final as a a o a lˆmpadas 1 e 6 dever˜o estar acesas e a lˆmpada 2 dever´ estar apagada.REGATA DE CIENTISTAS E LUZES DA FESTA Sugere que haver´ 12 lˆmpadas. a c˜ o Para vocˆ fazer e Considere a seguinte entrada. EXERC´ ICIOS PRATICOS: 152 .´ CAP´ ITULO 46. para o problema da regata -60 -60 20 130 20 -20 100 100 60 10 170 -10 60 160 240 140 20 40 20 180 3 3 3 494 vers˜o de 10 de fevereiro de 2008 a vers˜o de 10 de fevereiro de 2008 a 493 88-08. Naturalmente.4 Exerc´ ıcio 2 46. EXERC´ ICIOS PRATICOS: 152 .5 Exerc´ ıcio 3 Para vocˆ fazer e Considere a seguinte entrada.6 Exerc´ ıcio 4 Regata de cientistas Para vocˆ fazer e Considere a seguinte entrada. Pedro Kantek . poder˜o estar em qualquer estado. para o problema da regata -60 -190 10 30 -10 20 100 240 0 -40 120 60 120 0 60 90 80 0 80 -70 60 230 130 100 280 340 0 160 40 20 -20 230 10 -20 20 0 3 regata 1 46. 3 e 4.REGATA DE CIENTISTAS E LUZES DA FESTA 130 190 0 70 90 0 140 240 0 40 10 0 0 Considere a seguinte entrada para as luzes 13 3 5 13 9 -1 -1 8 -1 9 -1 regata 2 luzes A resposta ser´ a 00111000111 Que corresponde `s aplica¸oes dos bot˜es 1. para o problema da regata -20 -40 130 230 10 30 -10 110 60 80 10 90 200 70 210 330 240 80 220 10 -10 -20 150 20 3 Para vocˆ fazer e Considere a seguinte entrada. para o problema da regata -70 -110 -50 120 -70 -50 60 140 0 -50 60 110 80 20 80 70 80 0 90 0 70 230 90 40 140 260 0 190 -10 30 10 210 0 0 -20 0 3 3 3 0 Considere a seguinte entrada para as luzes 11 3 3 7 0 Considere a seguinte entrada para as luzes 6 10 -1 -1 regata 2 luzes 11 3 9 6 regata 1 -1 10 -1 regata 2 luzes regata 1 46. Pedro Kantek 88-08. a a a Outro exemplo. 18 295.7 1 2 3 4 Respostas 247. Pedro Kantek 88-08. EXERC´ ICIOS PRATICOS: 152 .61 318.´ CAP´ ITULO 46.REGATA DE CIENTISTAS E LUZES DA FESTA 0 Considere a seguinte entrada para as luzes 10 3 3 4 5 7 -1 -1 regata 2 luzes regata 1 46. Pedro Kantek 496 vers˜o de 10 de fevereiro de 2008 a .REGATA DE CIENTISTAS E LUZES DA FESTA 30 150 220 0 100 60 80 0 80 180 290 0 40 30 0 0 ´ CAP´ ITULO 46.44 280.28 288.03 01101101101 0110110110110 10101010101 0110110110 1 1 1 1 1 1 1 1 4 4 3 4 vers˜o de 10 de fevereiro de 2008 a 495 88-08.87 254.70 276.30 278. EXERC´ ICIOS PRATICOS: 152 . onde x e y s˜o inteiros e a a a positivos. e vocˆ acaba de ganhar o jogo e e Uma estrat´gia de solu¸˜o e ca Construa-se uma tabela. O maior peda¸o ´ preservado e ent˜o apresentado ao seu oponente. Polˆnia 2005. 2 e 2. ıcio ıdo o 47. O outro joga vertical.000. basta montar um dos triˆngulos (acima ou abaixo da diagonal a a a principal). O corte deve ser unico. 1 e fica 3. N): inteiro c˜ 2: inteiro LIMM. Marque a posi¸ao 2. que vocˆ deve procurar a jogada a fazer. N) 8: se XX = 1 ent˜o a 9: jogue (M-(I+1)). Se o corte dividiu o retˆngulo a o a em duas metades. deve existir um inteiro k que a torne verdadeira a express˜o a m + 1 = (n + 1) × 2k . ´ E baseada nesta f´rmula. 1 e o novo retˆnc e a gulo ´ 3. vertical ou horizontal. A tarefa ´ escrever um programa a e que jogue e ganhe o jogo do retˆngulo. aa a Prossiga at´ montar o mapa completamente. e c˜ a 497 498 vers˜o de 10 de fevereiro de 2008 a .I. no caso as posi¸oes 1. perde o jogo. digamos 15 × 15.XX 3: LIMM ← M ÷ 2 4: LIMN ← N ÷ 2 5: I ← 1 6: enquanto (I ≤ LIMM) fa¸a c 7: XX ← podeparar (M-I.J. As dimens˜es x e y ser˜o inteiros emtre 1 e a o a 100. IOI. H´ um ret˜ngulo x × y. Ao menos uma das dimens˜es ´ maior do que 1. 2 como a c˜ c˜ perdedora. verifique o que caracteriza as posi¸oes perdedoras. c˜ Note que para que m e n sejam um retˆngulo perdedor. Pedro Kantek Cap´ ıtulo 47 Exerc´ ıcios pr´ticos: 153a a Jogo do Retˆngulo a Exerc´ extra´ da 17. digamos horizontal. Note que como a matriz ´ absolutae e mente sim´trica em rela¸ao ` diagonal principal (tanto faz usar a vertical ou a horizontal. 1 e fica 1. Nova jogada sua. o e Quando o programa come¸a. N-J) 17: se XX = 1 ent˜o a 18: jogue M.000. c e a Exemplo de intera¸ao: c˜ 1. 3. O jogador que recebe um retˆngulo de 1×1. Use o algoo e ritmo: 1: fun¸ao JOGUE (inteiro M. 1 e estas s˜o vencedoras. 1. 1. 4. que ´ a a c˜ e – de acordo com a defini¸ao – a 1. 2 ou 2. Os a c ´ retˆngulos resultados devem ambos ter dimens˜es inteiras. Marque com uma o as posi¸oes vencedoras que c˜ c˜ conduzem ` perdedora. EXERC´ ICIOS PRATICOS: 153A . pois ela invariavelmente conduzir´ ` 1. uma delas ´ descartada. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Depois de ter preenchido este quadro. a e 3. digamos vertical.LIMN. e repassa o maior dos dois retˆngulos a a para que o advers´rio fa¸a o seu corte. 2.´ ˆ CAP´ ITULO 47. 1 e o novo retˆngulo ´ 3. Seu oponente joga horizontal. 1. Cada jogador faz um corte no retˆngulo. 1. Vocˆ joga vertical. ele recebe o retˆngulo original e deve fazer o primeiro c a corte.N 10: caiafora 11: fimse 12: I++ 13: fimenquanto 14: J ← 1 15: enquanto (J ≤ LIMN) fa¸a c 16: XX ← podeparar (M. Assinale com um X a primeira posi¸ao perdedora. 1 e fica 2.JOGO DO RETANGULO elas s˜o intercambi´veis). N-(J+1) 19: caiafora 20: fimse 21: J++ 22: fimenquanto{casos perdedores} 23: se M=1 ∧ N=1 ent˜o a 88-08. O jogo come¸a com 4. representando poss´ ıveis 225 tabuleiros (de dimens˜o m´xima 15) cada. 3 e 2.1 Jogo do retˆngulo a Considere-se um jogo de 2 jogadores. e e a que portanto n˜o pode mais fazer cortes. 1 5. Vocˆ deve jogar algo. 18 1 2 3 47.2 Exerc´ ıcio 1 35. E para 38. Idem para 47.B) : inteiro c˜ inteiro VOLTA.32 1 2 3 47.39 Trate de ganhar o jogo ! Se for imposs´ ganhar esta instˆncia.33 Trate de ganhar o jogo ! Se for imposs´ ganhar esta instˆncia. EXERC´ ICIOS PRATICOS: 153A . Pedro Kantek 500 vers˜o de 10 de fevereiro de 2008 a . MAIOR. N // e seja o que Deus quiser fimse fimfun¸ao c˜ fun¸ao podeparar (inteiro: A. Idem para 18.30 3. E para 25.JOGO DO RETANGULO 24: 25: 26: 27: 28: 29: 30: 31: 32: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: ´ ˆ CAP´ ITULO 47. fa¸a o primeiro lance para c 40. fa¸a o primeiro lance para c 25. responda ”PERDI” ıvel a no quadro pr´prio. K se A ≥ B ent˜o a MAIOR ← A MENOR ← B sen˜o a MAIOR ← B MENOR ← A fimse K←0 VOLTA ← 0 enquanto 2K ≤ MAIOR fa¸a c se MAIOR = ((2K )× MENOR) + (2K ) − 1 ent˜o a VOLTA ← 1 K←∞ fimse K++ fimenquanto retorne VOLTA fimfun¸ao c˜ 47. Seguindo os algoritmos acima. Seguindo os algoritmos acima. o 2.4 Exerc´ ıcio 3 1. Seguindo os algoritmos acima.´ ˆ CAP´ ITULO 47. responda ”PERDI” ıvel a no quadro pr´prio. Seguindo os algoritmos acima. fa¸a o primeiro lance para c 39.(N-1) // e seja o que Deus quiser sen˜o a jogue (M-1). Idem para 31.3 Exerc´ ıcio 2 1. MENOR. responda ”PERDI” ıvel a no quadro pr´prio. responda ”PERDI” ıvel a no quadro pr´prio.33 3.33 1 2 3 37. EXERC´ ICIOS PRATICOS: 153A .5 Exerc´ ıcio 4 1. Idem para vers˜o de 10 de fevereiro de 2008 a 499 88-08. o 2.30 Trate de ganhar o jogo ! Se for imposs´ ganhar esta instˆncia. fa¸a o primeiro lance para c 25. Pedro Kantek 88-08.JOGO DO RETANGULO perdi caiafora fimse se x < 2 ent˜o a jogue M. o 2.12 Trate de ganhar o jogo ! Se for imposs´ ganhar esta instˆncia. o 2. E para 1.37 3. 35 3.6 1 2 3 4 Respostas 30 30 0 0 39 39 16 33 0 0 16 33 30 30 17 35 33 33 25 25 0 0 0 0 vers˜o de 10 de fevereiro de 2008 a 501 88-08. EXERC´ ICIOS PRATICOS: 153A .´ ˆ CAP´ ITULO 47. Pedro Kantek 502 vers˜o de 10 de fevereiro de 2008 a . E para 21.JOGO DO RETANGULO 47. EXERC´ ICIOS PRATICOS: 153A .JOGO DO RETANGULO 31. Pedro Kantek 88-08.10 1 2 3 ´ ˆ CAP´ ITULO 47. (2. em todos os instantes de tempo. as cadeias ”SOLA”. dado o tabuleiro 4×4 a seguir.(11. a e Exemplo Seja procurar a palavra PRECISAM no tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| D S T Q B V W Y G C Z Z 2| Y Y Q Z L I D C O P C Y 3| R D H V C A S M X S F Q 4| S J Z Y Y F E U Q U J F 5| L X B G Z X X E R V Y D 6| F H M Q Z F G J I U Z J 7| F A O S H P K D P E L H 8| S I L V Y S J L A P C G 9| R C Q X D Y P K O A V O 10| E A N Y S S Y F Q A P J 11| J W P Y H Q D H G W L R 12| M A E R E X R D V U W P O caminho ´ (12.. n1 ) que cont´m a letra a1 e para cada letra a1 + 1. ni+1 ) que cont´m ai+1 e sendo que (mi . nk ) ser´ chamada de caminho de A no tabue a uleiro. Desta maneira. ”HORA”nem ”HALA”. s˜o adjacentes todas as casas que rodeiam uma dada. ni+1 ) s˜o adjacentes no tabuleiro e a 503 504 vers˜o de 10 de fevereiro de 2008 a . a mesma flue para qualquer um dos 8 vizinhos c que tem altura menor que a casa original. a Para ”HOLA”s˜o (1. Dada uma casa alcan¸ada pela lava. nj ) s˜o adjacentes se para a primeira compoa nente: |mi − mj | ≤ 1 ou ent˜o |mi − mj | = M − 1. Aquela casa que est´ na linha M e na coluna N ´ u a e identificada pela dupla (m.1).3). EXERC´ ICIOS PRATICOS: 155A . (mk .* . Duas casas diferentes (mi . as casas adjacentes ` (2. . a lava se desloca 1 casa nas 8 dire¸oes. e Vulc˜o a Neste caso se deseja simular o deslocamento da lava de um vulc˜o ao largo da encosta a do mesmo. No desenho a seguir. ` a a esquerda e (1. a Cap´ ıtulo 48 S I E O H O Z H A L E D Z G F I Exerc´ ıcios Pr´ticos: 155a a Caminhos no tabuleiro e Descarga do vulc˜o a 48. A lava flue desde a casa na qual est´ situada a cratera do vulc˜o a a 2. 1). conhece-se a altura dela em rela¸ao ao n´ c˜ ıvel do mar. k ≥ 1 diz-se que A est´ u a contida no tabuleiro se ´ verdade que e existe uma casa (m1 . marca-se com um asterisco. existe uma casa (mi+1 .* . u O comportamento da lava se rege pelas seguintes regras: 1.. e que o caminho A ´ unico.* * . (2. 1).12).* * * . . a Caminhos Seja um tabuleiro de dimens˜es M × N . (1. Representar-se-´ o vulc˜o por uma superf´ retangular quadriculada. onde 1 ≤ M ≤ 20 e 1 ≤ N ≤ 20.2) e (6.(8..(7. No instante de tempo t=1. a ultima fila est´ unida ` primeira. (4..ak . (4.1) ` direita.3).. n). a . 3). sendo este n´ mero entre 1 e 9. c 88-08.(10. pode-se u afirmar que A est´ contida no tabuleiro.CAMINHOS NO TABULEIRO ˜ E DESCARGA DO VULCAO A seq¨ˆncia de casas (m1 . 3). Quando construir o programa. Para ”ADIOS”o caminho ´ (1. a A segunda componente tem express˜o semelhante: a |ni − nj | ≤ 1 ou ent˜o |ni − nj | = N − 1. A cada instante de tempo. ni ) e (mi+1 . 3). a e Dado um tabuleiro com as caracter´ ısticas citadas e uma palavra A composta de letras mai´ sculas..* * * . (2. a2 .* . ni ) e (mj . mas n˜o ocorre o mesmo com ”GOZA”.´ CAP´ ITULO 48.2)..1). 2). ”HOLA”e ”ADIOS”est˜o a contidas nele. 4). 3. 1). n1 ). ambas em tabuleiros 4 × 4.. 1 ≤ i ≤ k. c˜ 4. tal que cada o casa contenha uma letra mai´ scula. Pedro Kantek Estes exerc´ ıcios foram baseados em similares pedidos na Olimp´ ıada Espanhola de Inform´tica.(9.2). (2. Para a a ıcie cada uma das casas.(8.1 Exerc´ ıcio 1 No caso de ”SOLA”. 3). (4. as casas que formam o caminho s˜o (1. e Pede-se a confec¸ao de um mapa das encostas do vulc˜o que identifique os pontos c˜ a alcan¸ados pela lava. e a mesma coisa para as ´ a a colunas. 2). imagia nando que no tabuleiro. a Em outras palavras. 2)..* Dada uma palavra A de k letras mai´ sculas A = a1 . se pede calcular o caminho de A..* .* * * . 3) e (3. apenas 1 casa (a cratera) cont´m lava. (1.12). 2 Exerc´ ıcio 2 Caminhos Para vocˆ fazer e Seja a palavra COMPLETA e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| N B L X B R R S D V N P 2| L I P R N K I I S G B K 3| N Q J C Z V P H Y J C Z 4| Z K U H N O Z K V A P B 5| D Q T H B N S H O Z U X 6| J F Z F V A H N P O Q A 7| H A M P Y O V G X Z H M 8| L T Z T X E H Y Z L O P 9| E O I O X Z G N G J P C 10| K I O G C Y R F V L E E 11| H Q J M W U Y D Z C Y C 12| M O W A F Q R I M G E Y Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc˜o a 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 2 8 9 5 4 6 9 4 4 5 9 6 2| 1 6 7 2 8 8 7 6 2 7 1 6 3| 1 5 8 5 9 5 4 2 1 6 5 5 4| 7 4 9 2 2 9 7 8 8 7 7 4 5| 1 3 6 9 2 7 2 1 4 2 7 1 6| 9 1 6 4 3 2 5 1 7 3 4 6 7| 1 3 1 2 7 9 1 3 8 1 6 7 505 88-08. Pedro Kantek 506 vers˜o de 10 de fevereiro de 2008 a . para t=3.coluna) da cratera. t=4 e 48. nos diversos instantes de tempo. gerou os deslocamentos de lava: para t=1. Informa-se tamb´m a coordenada (linha. Pedro Kantek 88-08. Neste ponto.CAMINHOS NO TABULEIRO ˜ E DESCARGA DO VULCAO 5| 6| 7| 8| 9| 10| 11| 12| 7 8 6 5 8 5 5 6 7 5 2 3 5 1 3 2 9 4 4 6 9 6 4 7 3 4 3 3 1 3 6 1 6 9 1 2 5 8 3 1 2 1 4 2 5 6 1 7 7 9 3 6 4 6 7 1 1 9 9 7 7 6 3 5 9 7 1 9 8 5 1 6 6 7 3 4 4 2 4 9 2 7 4 3 7 7 5 9 2 3 1 1 2 9 2 8 com a cratera disposta no plato (linha. EXERC´ ICIOS PRATICOS: 155A .10).CAMINHOS NO TABULEIRO ˜ E DESCARGA DO VULCAO Entrada A entrada ´ uma matriz de 12 linhas. contendo a altura dos 144 platˆs das e o encostas. pois a lava n˜o tem para onde ir.´ CAP´ ITULO 48. e Sa´ ıda A quantidade de platos que a lava atinge.coluna): 2 5 Pergunta-se quantos platˆs s˜o atingidos nos instantes t=3. t=4 e t=5 ? o a caminhos: linha e coluna da sexta letra? vulc˜o: a t=5? em t=3. o programa p´ra. o Q=17. para t=4. Quantidade de platˆs imersos=1. para t=2. a a Para vocˆ fazer e Seja a palavra ACIONADAS e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| L H J L X R E B F J O Q 2| C I F R H X E T U J S Z 3| X A N X K K X C B C A I 4| O A D X E U F G T Q D N 5| S C T O W E Y U Q B A N 6| O B P B F O E W G C X Z 7| O E D H F K P Q P L Q V 8| C N S Y F H M B T N O P 9| O C P M B G Z V J E H S 10| G D L C E R L P S N H L 11| J A F C L M Y G F P N W 12| F C T I N S X B E T P O Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc˜o a 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 2 9 6 7 8 9 4 3 6 9 5 4 2| 2 7 4 3 9 8 3 3 8 1 3 2 3| 9 7 5 1 5 1 9 9 8 9 7 6 4| 4 3 3 6 1 4 6 6 4 2 8 3 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 48. EXERC´ ICIOS PRATICOS: 155A . Q=7. Q=11. Exemplo 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 5 8 1 9 9 4 2 5 3 4 3 9 2| 6 9 7 9 7 6 5 2 8 5 9 4 3| 2 1 8 3 8 1 5 4 8 5 5 5 4| 6 9 4 3 7 8 6 5 9 1 1 7 5| 9 5 5 4 4 5 1 2 4 3 2 9 6| 2 5 7 1 8 7 2 5 7 2 2 3 7| 8 1 4 4 3 7 1 6 8 7 3 5 8| 9 9 4 5 5 3 2 1 1 8 5 8 9| 7 6 1 3 9 2 8 8 9 8 4 3 10| 9 7 7 7 2 6 9 5 1 6 4 7 11| 8 4 7 8 8 2 9 7 3 5 9 7 12| 9 2 7 8 1 7 8 5 3 2 3 2 Com a cratera disposta em (9. Q=16 e para t=5. ´ CAP´ ITULO 48. EXERC´ ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO ˜ E DESCARGA DO VULCAO 8| 9| 10| 11| 12| 8 7 9 8 1 6 2 7 5 5 2 8 8 4 5 6 6 8 2 3 1 9 6 6 3 6 4 8 8 9 9 1 6 2 6 4 9 2 4 9 8 7 5 1 8 2 2 1 8 1 5 8 2 7 9 6 4 9 9 8 ´ CAP´ ITULO 48. EXERC´ ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO ˜ E DESCARGA DO VULCAO 11| 12| 5 3 4 2 1 3 4 7 9 6 3 3 2 5 6 9 2 2 1 8 8 8 3 9 com a cratera disposta no plato (linha,coluna): 5 3 Pergunta-se quantos platˆs s˜o atingidos nos instantes t=3, t=4 e t=5 ? o a com a cratera disposta no plato (linha,coluna): 10 1 Pergunta-se quantos platˆs s˜o atingidos nos instantes t=3, t=4 e t=5 ? o a caminhos: linha e coluna da sexta letra? vulc˜o: a t=5? em t=3, t=4 e caminhos: linha e coluna da sexta letra? vulc˜o: a t=5? em t=3, t=4 e 48.4 48.3 Exerc´ ıcio 3 Exerc´ ıcio 4 Caminhos Para vocˆ fazer e Seja a palavra SERVINDO e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| S M V H B Z X E I R W H 2| S U B U H N O H N H K L 3| R D Z F R G W D A E N Y 4| I D S X O Q D U T Q H D 5| N A W V R K T P R R G G 6| I V W G I U X F K N R B 7| C H I D W E P Y I O D E 8| G O R E L N Q R K S V K 9| V C H J X D R U V S U J 10| A E T K O T G H T I D J 11| G B S S N H W A G D N S 12| A O O E S S W L T V E O Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc˜o a 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 3 1 7 4 2 7 9 9 8 8 1 5 2| 5 8 2 6 8 4 3 4 9 8 4 9 3| 5 2 4 3 7 3 7 6 9 9 1 4 4| 8 9 2 4 5 3 8 4 9 3 6 1 5| 3 3 9 9 7 1 8 7 7 6 2 3 6| 5 7 8 2 8 7 1 4 3 2 7 1 7| 5 6 8 4 8 8 6 1 8 2 9 2 8| 3 8 7 1 7 8 9 7 2 6 7 6 9| 4 8 8 3 9 8 3 8 9 8 2 6 10| 7 9 7 1 3 7 1 2 8 6 2 1 11| 1 1 2 5 5 6 2 9 7 5 8 8 12| 7 9 3 7 7 7 6 1 8 6 8 7 88-08, Pedro Kantek 88-08, Pedro Kantek Caminhos Para vocˆ fazer e Seja a palavra TRABALHAM e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| E T R Z J G C W S S U A 2| C E F Y C I I X T L D H 3| K A Q M O O U L M C S U 4| R R C G A A C A H W W S 5| Q N B T F B X A M Q U L 6| N H X A G H U T Z Y G K 7| C I U A H H S W K U H L 8| A W M P L B A X M V N A 9| B P P A O A A M U G X O 10| F X M H X R F F I R V Z 11| U U D D O T T O I Z U F 12| Q L F M T H R H O S N Y Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc˜o a 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 6 7 3 2 1 4 8 8 5 8 2 5 2| 8 8 8 8 1 1 6 3 8 2 3 6 3| 7 2 6 9 7 8 5 6 1 5 1 9 4| 5 4 3 4 9 8 4 6 8 6 5 3 5| 9 7 9 4 3 8 4 4 3 4 4 7 6| 4 7 6 3 2 1 6 2 9 4 7 6 7| 2 8 7 5 1 3 3 7 5 5 9 3 8| 1 6 8 4 1 8 8 5 9 6 1 4 9| 6 6 3 5 6 5 9 9 2 8 6 6 10| 4 3 5 2 6 9 1 6 8 8 9 4 vers˜o de 10 de fevereiro de 2008 a 507 508 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 48. EXERC´ ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO ˜ E DESCARGA DO VULCAO com a cratera disposta no plato (linha,coluna): 711 Pergunta-se quantos platˆs s˜o atingidos nos instantes t=3, t=4 e t=5 ? o a ´ CAP´ ITULO 48. EXERC´ ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO ˜ E DESCARGA DO VULCAO caminhos: linha e coluna da sexta letra? vulc˜o: a t=5? em t=3, t=4 e 48.5 1 2 3 4 Respostas 5 11 9 1 8 5 2 9 14 10 17 15 17 16 21 21 18 17 22 22 vers˜o de 10 de fevereiro de 2008 a 509 88-08, Pedro Kantek 88-08, Pedro Kantek 510 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 49. EXERC´ ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS Exemplo de Entrada 2 4 AC TGGT 4 25 CATA TCATATGCAAATAGCTGCATACCGA 0 0 Cap´ ıtulo 49 Exerc´ ıcio pr´tico: 156 a Genoma e Palavras Cruzadas 49.1 Projeto Genoma Sa´ de Dados: Seu programa deve produzir uma sa´ onde para cada conjunto de ıda ıda teste do arquivo de entrada seu programa deve produzir duas linhas. Na primeira linha deve aparecer a lista, em ordem crescente, com a posi¸ao inicial de cada ocorrˆncia, c˜ e na forma direta, do padr˜o p na seq¨ˆncia t. Na segunda linha deve aparecer a lista, a ue em ordem crescente, com a posi¸ao inicial de cada ocorrˆncia, na forma complementar c˜ e invertida, do padr˜o p na seq¨ˆncia t. a ue Um grande projeto mundial est´ em curso para mapear todo o material gen´tico do ser a e humano: o Projeto Genoma Humano. As mol´culas de DNA (mol´culas que contˆm e e e material gen´tico) podem ser representadas por cadeias de caracteres que usam um e alfabeto de apenas 4 letras: ‘A’, ‘C’, ‘T’ e ‘G’. Um exemplo de uma tal cadeia ´: e TCATATGCAAATAGCTGCATACCGA Nesta tarefa vocˆ dever´ produzir uma ferramenta muito utilizada no projeto Genoma: e a um programa que procura ocorrˆncias de uma pequena cadeia de DNA (que vamos e chamar de p) dentro de uma outra cadeia de DNA (que vamos chamar de t). Vocˆ e dever´ procurar dois tipos de ocorrˆncia: a ”direta”e a ”complementar invertida”. Uma a e ocorrˆncia direta ´ quando a cadeia p aparece como subcadeia dentro de t. Por exemplo, e e se p = CATA e t = TCATATGCAAATAGCTGCATACCGA Exemplo de Sa´da ı Teste 1 ocorrencia direta: 0 ocorrencia complementar invertida: 3 Teste 2 ocorrencia direta: 2 18 ocorrencia complementar invertida: 4 (esta sa´da corresponde ao exemplo de entrada acima) ı Este exerc´ ´ igual ao proposto na OBI99. ıcio e 49.2 Palavras Cruzadas ent˜o p ocorre na forma direta na posi¸ao 2 e na posi¸ao 18 de t. Uma ocorrˆncia a c˜ c˜ e complementar invertida depende da seguinte correspondˆncia entre as letras do DNA: e ‘A’ ⇐⇒ ‘T’ e ‘G’ ⇐⇒ ‘C’. ”Complementar o DNA”significa trocar as letras de uma cadeia de DNA seguindo essa correspondˆncia. Se complementarmos a cadeia CATA, e vamos obter GTAT. Mas al´m de complementar, ´ preciso tamb´m inverter, ou seja, de e e e GTAT obter TATG. E ´ esta cadeia que dever´ ser procurada, no caso da ocorrˆncia e a e complementar invertida. Assim, se p e t s˜o as mesmas cadeias do exemplo anterior, a ent˜o p ocorre na forma complementar invertida na posi¸ao 4 de t. a c˜ Tarefa: Sua tarefa ´ escrever um programa que, dadas duas cadeias p e t, onde o e comprimento de p ´ menor ou igual ao comprimento de t, procura todas as ocorrˆncias e e diretas e todas as ocorrˆncias complementares invertidas de p em t. e Entrada de Dados: A entrada cont´m v´rios conjuntos de teste. Cada conjunto de e a teste ´ composto por trˆs linhas. A primeira linha cont´m dois inteiros positivos, M e N, e e e M N, que indicam respectivamente o comprimento das cadeias de DNA p e t, conforme descrito acima. A segunda linha do conjunto de teste cont´m a cadeia p, e a terceira e linha cont´m a cadeia t, onde p e t s˜o compostas utilizando apenas os caracteres ‘A’, e a ‘C’, ‘G’ e ‘T’. O final do arquivo de testes ´ indicado quando M = N = 0 (este ultimo e ´ conjunto de testes n˜o ´ v´lido e n˜o deve ser processado). a e a a 511 O conhecido passatempo de palavras cruzadas ´ composto por uma grade retangular de e quadrados brancos e pretos e duas listas de defini¸oes. Uma das listas de defini¸oes ´ c˜ c˜ e para palavras escritas da esquerda para a direita nos quadrados brancos (nas linhas) e a outra lista ´ para palavras que devem ser escritas de cima para baixo nos quadrados e brancos (nas colunas). Uma palavra ´ uma seq¨ˆncia de dois ou mais caracteres do e ue alfabeto. Para resolver um jogo de palavras cruzadas, as palavras correspondentes as ` defini¸oes devem ser escritas nos quadrados brancos da grade. c˜ As defini¸oes correspondem as posi¸oes das palavras na grade. As posi¸oes s˜o c˜ ` c˜ c˜ a definidas por meio de n´ meros inteiros seq¨ enciais colocados em alguns quadrados branu u cos. Um quadrado branco ´ numerado se uma das seguintes condi¸oes ´ verificada: (a) e c˜ e tem como vizinho a esquerda um quadrado preto e como vizinho a direita um quadrado ` ` branco; (b) tem como vizinho acima um quadrado preto e como vizinho abaixo um quadrado branco; (c) ´ um quadrado da primeira coluna a esquerda e tem como vizinho e ` a direita um quadrado branco; d) ´ um quadrado da primeira linha acima e tem como ` e vizinho abaixo um quadrado branco. Nenhum outro quadrado ´ numerado. A numere a¸ao come¸a em 1 e segue seq¨ encialmente da esquerda para a direita, de cima para c˜ c u baixo. A figura abaixo ilustra um jogo de palavras cruzadas com numera¸ao apropriada. c˜ 88-08, Pedro Kantek 512 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 49. EXERC´ ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 23 0 26 29 0 99 27 0 ´ CAP´ ITULO 49. EXERC´ ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 0 24 0 0 0 0 0 0 0 99 0 99 0 0 99 30 0 99 28 0 0 25 0 0 0 0 99 0 0 0 0 0 Este exerc´ est´ baseado (mas l´ ´ diferente), na prova da OBI 99. ıcio a ae 49.3 Exerc´ ıcio 1 Para o problema do Genoma, seja a entrada: 4 40 TGGT GAAGGGGATGGTGCAGGGCATGGTGTACCATTGTTTCGTC 5 44 GGACT CTGTGGACAGTAGTATTGAGTCCGGACTCTGACTTGTCAAGCAG 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada instˆncia) a Sejam os tabuleiros de palavras cruzadas 7 9 7 9 15 20 38 40 46 52 57 59 8 8 10 13 24 27 29 34 39 50 53 56 0 0 ´ Pergunta-se 3 valores para cada instˆncia: o valor da linha 1 e os PENULTIMOS valores a da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2 Uma palavra horizontal ´ escrita em uma seq¨ˆncia de quadrados brancos em uma e ue linha, iniciando-se em um quadrado numerado que tem um quadrado preto ` esquerda a ou que est´ na primeira coluna ` esquerda. A seq¨ˆncia de quadrados para essa palavra a a ue continua da esquerda para a direita, terminando no quadrado branco imediatamente anterior a um quadrado preto, ou no quadrado branco da coluna mais ` direita da a grade. Uma palavra vertical ´ escrita em uma seq¨ˆncia de quadrados brancos em uma e ue coluna, iniciando-se em um quadrado numerado que tem um quadrado preto acima ou que est´ na primeira linha acima. A seq¨ˆncia de quadrados para essa palavra a ue continua de cima para baixo, terminando no quadrado branco imediatamente anterior a um quadrado preto, ou no quadrado branco da coluna mais abaixo da grade. Tarefa: Sua tarefa ´ escrever um programa que recebe como entrada uma especifica¸ao e c˜ de um tabuleiro de palavras cruzadas e deve produzir 3 coisas: * A quantidade total de casas numeradas * a lista de casas iniciais para as palavras HORIZONTAIS * a lista de casas iniciais para as palavras VERTICAIS Entrada de Dados: A entrada cont´m 2 linhas. Na primeira linha h´ dois inteiros e a positivos, M e N, que indicam respectivamente o n´ mero de linhas e o n´ mero de colunas u u do jogo de palavras cruzadas. A segunda linha cont´m os n´ meros das casas pretas do e u tabuleiro. As casas do tabuleiro foram numeradas de 1 (a mais alta ` esquerda) ate a M × N , a mais baixa ` direita. a Exemplo de Entrada 10 10 2 13 18 20 23 24 37 47 57 72 75 77 86 89 95 Sa´ de Dados: A saida deve produzir o maior n´ mero achado, a lista de casas que ıda u iniciam palavras horizontais e a lista ... verticais. 30 2 8 10 11 12 15 18 19 20 21 22 23 24 25 26 28 29 30 1 3 4 5 6 7 9 13 14 16 17 27 28 (esta sa´da corresponde ao exemplo de entrada acima) ı Apenas para referˆncia, eis como ficou a numera¸ao do tabuleiro acima (99 ´ preto) e c˜ e 1 8 11 15 19 21 99 9 0 0 0 0 2 99 99 16 0 0 3 10 99 17 0 0 4 0 12 0 0 0 5 0 0 0 0 0 6 0 0 99 99 99 0 99 13 18 20 22 7 0 0 0 0 0 513 0 99 14 0 0 0 88-08, Pedro Kantek 49.4 Exerc´ ıcio 2 Para o problema do Genoma, seja a entrada: 5 34 AAAGT ATGTTTGTTAAAGTAAGTAAAGTTACTTTGCTAG 6 46 CATGCC TGCAATCCTAGACCATGCCGAGCTGGCTGCAGGCATGATGCCCGAC 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada instˆncia) a Sejam os tabuleiros de palavras cruzadas 88-08, Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 514 vers˜o de 10 de fevereiro de 2008 a ´ CAP´ ITULO 49. EXERC´ ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 7 7 8 20 21 27 31 32 40 45 8 8 3 4 12 16 17 22 37 43 46 61 0 0 ´ Pergunta-se 3 valores para cada instˆncia: o valor da linha 1 e os PENULTIMOS valores a da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2 ´ CAP´ ITULO 49. EXERC´ ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 4 38 GGTT GTTCCCCGTAGAAGTGTAGTAGAACCGGGTTGCCAGCA 5 50 GTAGA TCTACGTCTACATGTAGTAGATAGATGTAACAAGTACTAAGTAACGATGA 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada instˆncia) a Sejam os tabuleiros de palavras cruzadas 8 7 5 7 10 12 23 28 35 42 55 8 8 4 8 13 31 33 36 41 49 53 56 0 0 ´ Pergunta-se 3 valores para cada instˆncia: o valor da linha 1 e os PENULTIMOS valores a da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2 49.5 Exerc´ ıcio 3 Para o problema do Genoma, seja a entrada: 4 40 CCTT CTGGGAGTGCGCACGTGACTGAAGGTATCCTTTTATTTAT 5 49 TGGCA ACAGTGGCAGGGTGCCAGACGATTGTGGCACGTTGATTTGCAGGGCCCC 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada instˆncia) a Sejam os tabuleiros de palavras cruzadas 6 8 3 9 10 11 16 18 26 41 10 10 14 18 21 22 24 27 58 61 63 69 71 74 75 78 88 0 0 ´ Pergunta-se 3 valores para cada instˆncia: o valor da linha 1 e os PENULTIMOS valores a da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2 49.7 1 2 3 4 Respostas 9 21 10 19 29 0 28 0 0 0 0 0 27 25 22 23 0 0 0 0 0 0 0 0 24 0 14 0 5 26 17 0 0 0 0 0 19 32 13 1 0 0 0 7 0 0 0 0 18 19 13 17 17 14 18 14 11 9 15 13 20 25 30 21 19 24 29 20 15 22 27 16 49.6 Exerc´ ıcio 4 Para o problema do Genoma, seja a entrada: vers˜o de 10 de fevereiro de 2008 a 515 88-08, Pedro Kantek 88-08, Pedro Kantek 516 vers˜o de 10 de fevereiro de 2008 a ). que cont´m cinco valores. A CaraCola utiliza o peso do carregamento para calcular o custo dos transporte por trem e por caminh˜o e decidir qual empresa transportadora contratar. Neste caso. em e a kilogramas. Para o ocupar a fun¸ao de Dona Mercedes os engenheiros da empresa adaptaram um robˆ exc˜ o istente. O primeiro valor ´ um e e e n´ mero inteiro positivo K que representa o peso. e o ponto N-1 ´ distinto do e e ponto 0 (veja a regra 4 abaixo). que informam as condi¸oes de pre¸o vigentes no momento. 0 0 .85 3. ao qual acoplaram uma m´quina de caf´. Suponha ainda que a transportadora e por caminh˜o informa que seu custo fixo ´ A = R$ 230. EXERC´ ICIO PRATICO 157 2354 1000 2327 0 450. e a cada um apresentando uma lista de custos. e girar sobre o seu eixo (para colocar-se de frente para o seu pr´ximo ponto o destino). e a As transportadoras informam os seus custos na forma de duas vari´veis.70 2. para completar o percurso. Cada conjunto e a de teste ´ composto por uma linha. As duas transportadoras competem agressivamente para conseguir o servi¸o. atrav´s de todos os pontos dados. ´ a e a a Exemplo de Entrada 517 Dona Mercedes. no sentido do rel´gio. 2 -3 . Para isso ela pode utilizar uma transportadora que trabalha com caminh˜es ou uma transportadora que trabalha com o trens. e a outra parcela ´ um custo vari´vel B que depende do peso do carregamento.2 RoboCoffee A produtora de refrigerantes CaraCola precisa enviar com freq¨ˆncia grandes carregaue mentos para as suas distribuidoras em outros estados. o 2. Os custos s˜o apresentados sempre com precis˜o de a a a dois algarismos decimais. seguido por N pares de n´ meros u u inteiros que correspondem ao valor das coordenadas X e Y de um ponto.Y). etc. represena tando duas parcelas. ´ e O ponto i ´ sempre distinto do ponto i+1. a e c˜ o novo robˆ tem uma opera¸ao bem simples.70.00 411. A linha de um conjunto de testes cont´m um inteiro positivo. -3 3 . a CaraCola consulta as duas transportadoras. c˜ o e e ue numerados de 0 a N-1 (o robˆ desenvolvido n˜o sobe escadas. observando o e as seguintes regras: 1. 70 × 2354. fabricante de robˆs industriais. A e B representam respectivamente o custo fixo e o custo vari´vel por kilograma informado pela empresa que utiliza trem. o o de um angulo α (0o ≤ α < 360o). B. 2 2 . O robˆ inicia no ponto 0 de frente para o ponto 1.50 2. No final. andar para a e a frente.00 411. Cada ponto ´ determinado por coordenadas inteiras (X. pois 450 + 3. Os u quatro valores restantes s˜o n´ meros reais A.50 556. a Entrada de Dados A entrada cont´m v´rios conjuntos de teste. que indica o o e n´ mero de pontos presentes no conjunto de teste. baseado nas informa¸oes das transportadoras. o Entrada de Dados Cada conjunto de teste corresponde a uma programa¸ao do c˜ robˆ. 1 1 .00 e o seu custo por kilograma a e ´ B = R$ 3.00 a CaraCola prefere o transporte por c trem. Pedro Kantek 518 vers˜o de 10 de fevereiro de 2008 a . Chegando ao ponto i (0 ≤ i ≤ N-1) o robˆ gira sobre seu eixo. Sua tarefa c˜ c ´ escrever um programa que. C e D que representam os custos a u informados pelas empresas de transporte. N. c˜ a Exemplo de Sa´da: 1.50. vai aposentar-se em breve. 1 0 .50 3. A programa¸ao do robˆ ´ feita atrav´s de uma seq¨ˆncia de N pontos no plano. do carregamento. O final do arquivo de testes c ´ indicado quando N = 0 (este ultimo conjunto de teste n˜o ´ v´lido e n˜o deve ser e ´ a e a a processado). Se a e diferen¸a entre os custos for menor do que R$ 1.50 325.00 3. Exemplo de Entrada 4 . -2 -1 0 88-08. a e 4. Uma parcela ´ um custo fixo A que independe do peso do carregae mento. A cada carregamento. o robˆ movimenta-se do ponto N-1 para o o ponto 0. mas felizmente a empresa o a ocupa um unico pavimento). e gira de modo a ficar de frente para o ponto 1. 1 e 2 (corresponde ` entrada acima) ı a Exerc´ ıcio pr´tico 157 a 50. separados por espa¸o em branco (-1000 ≤ X ≤ 1000. para o estado desejado. Para diminuir os custos de fabrica¸ao. suponha que a transportadora por trem informa que o seu custo fixo ´ A = R$ e 450. -1000 ≤ Y ≤ 1000). sendo capaz de apenas trˆs movimentos o c˜ e b´sicos: ficar parado (para que os empregados possam servir-se de caf´). Tarefa Sua tarefa ´ escrever um programa que. para um carregamento que pesa 2354 kg a CaraCola decide e que ´ melhor fazer o envio por trem.00 e o seu custo por kilograma ´ B = R$ 3. para 0 ≤ i < N. O final do arquivo de testes ´ indicado quando K = 0 (este e ultimo conjunto de testes n˜o ´ v´lido e n˜o deve ser processado). dada a seq¨ˆncia de N pontos no e ue plano que corresponde a programa¸ao do robˆ. C e D a representam respectivamente o custo fixo e o custo vari´vel por kilograma informado a pela empresa que utiliza caminh˜o. Tarefa Sua tarefa ´ escrever um programa que recebe como entrada v´rios casos. e determina se a CaraCola deve enviar o carregamento por trem ou por caminh˜o. O robˆ move-se a partir do ponto 0. o 3. se h´ ou n˜o caminh˜es dispon´ a a o ıveis. Por a exemplo. em kilogramas. mas c seus custos dependem do momento (por exemplo. e faz uma pausa para que os usu´rios possam servir-se de caf´. decida se o e c˜ melhor ´ enviar o carregamento por trem ou por caminh˜o. O robˆ move-se sempre para a frente.1 Trem ou Caminh˜o? a 50. a eficiente funcion´ria respons´vel pela distribui¸ao de cafezinho na a a c˜ empresa RoboCamp.00 Cap´ ıtulo 50 Sa´ de Dados Para cada conjunto de teste do arquivo de entrada seu programa deve ıda produzir a informa¸ao 1=trem ou 2=caminh˜o.´ CAP´ ITULO 50.85 3.10 230. 50 × 2354 < 230 + 3. de modo a ficar de frente para o ponto (i+1) ˆ mod N. 0 1 4 . determina quantas voltas completas sobre ` c˜ o o seu eixo o robˆ perfaz durante seu percurso. calcula o n´ mero m´ximo de pessoas que est˜o u a a presentes ao mesmo tempo dentro do restaurante. 1.48 1. A mesma coisa para S. Para melhorar o atendimento a unicoMP ´ planeja fazer uma reforma nos refeit´rios. -4 5 -2 0. ambos de comprimento igual a N. -5 4 0 3. -1 2. Os elementos de E e S s˜o inteiros positivos que indicam o n´mero de minutos a u transcorridos desde a abertura do restaurante.34 1. Para a a o isso a unicoMP. e a terceira linha cont´m os elementos do vec e tor S. separados por espa¸o em branco. 0 -3 4 4 0 -2 11 12 13 18 23 26 27 31 32 37 19 23 27 29 34 39 41 45 47 50 10 13 17 21 22 23 24 29 30 16 17 19 20 23 24 28 30 33 13 16 21 22 26 29 32 34 23 25 29 34 38 42 45 48 Responda T1 T2 T3 Rb1 Rb2 Rb3 R1 R2 R3 50. A entrada e a sa´ do restaurante se faz ıda por uma unica catraca.38 171 438 314 1. quem entra tem a preferˆncia de uso da e catraca. Exemplo de Sa´da: 1 e 3 (corresponde a entrada) ı ` 1471 1116 1975 0 0 Robot 930 824 900 1. O final do arquivo de testes ´ indicado quando c e N = 0 (este ultimo conjunto de testes n˜o ´ v´lido e n˜o deve ser processado). 0 -1. EXERC´ ICIO PRATICO 157 3.´ CAP´ ITULO 50.47 Transporte: 6 2 -4.75 308 270 290 ´ CAP´ ITULO 50. ´ a e a a Exemplo de Entrada 3 14 67 98 1890 1900 2123 2 200 1800 1543 2324 0 Sa´ de Dados Para cada conjunto de teste do arquivo de entrada seu programa ıda deve produzir o n´ mero m´ximo de pessoas presentes simultaneamente no restaurante. Se acontecer de uma ´ pessoa entrar e outra sair no mesmo minuto. 3 4. Um vetor S. -3 -2 2. A segunda linha do conjunto de teste cont´m os elementos do e vetor E. N.27 2.64 1. em que E[i] representa o instante de tempo em que a pessoa i entrou no restaurante. -2 2. -3 -2. Entrada de Dados Cada conjunto de teste ´ composto por trˆs linhas. -3 -2. u a encontrado pelo seu programa.4 Exerc´ ıcio 1 Transporte: vers˜o de 10 de fevereiro de 2008 a 10 5 10 14 15 19 22 13 15 17 21 24 27 10 1 5 7 9 11 16 15 16 18 19 24 28 11 88-08. coletou os seguintes dados: ´ o Um vetor E. Nos elementos de E n˜o h´ valores repetidos. 0 0 Restaurante 12 4 7 13 14 11 3 6 12 14 10 4 9 14 19 0 0 2 -4. que possui catracas eletrˆnicas.5 483 1002 1090 0 0 Robot Exerc´ ıcio 2 965 721 653 1. -1 -1 1 2 50. em que S[i] representa o instante de tempo em que a pessoa i saiu do restaurante. dados dois vetores de inteiros E e e S. onde passa apenas uma pessoa por vez. que indica o comprimento dos vetores E e S. mas para isso necessita saber qual o n´ mero o u m´ximo de pessoas que s˜o atendidas simultaneamente em um mesmo refeit´rio.58 2. Exemplo de Sa´da: 3 e 1 (corresponde a entrada acima) ı ` 5 -4 1. 0 -5.3 Restaurante A unicoMP (Universidade Independente de Computa¸ao) possui v´rios refeit´rios que ´ c˜ a o servem seus milhares de alunos e professores. 2 3. -5 -3.35 2. 4 -2 0. 1 3.56 50.99 2. separados por espa¸o em branco.49 1. -3 -5. cone forme descrito acima. A primeira e e linha cont´m um inteiro positivo. Pedro Kantek 520 vers˜o de 10 de fevereiro de 2008 a . ordenado crescentemente. -2 0 0 Restaurante 3. u c˜ o encontrado pelo seu programa. Pedro Kantek 24 25 28 30 28 33 38 41 18 23 25 27 33 38 43 46 519 88-08. a a Tarefa Sua tarefa ´ escrever um programa que. -1 3. EXERC´ ICIO PRATICO 157 Sa´ de Dados Para cada conjunto de teste do arquivo de entrada seu programa ıda deve indicar o n´ mero de rota¸oes completas efetuadas pelo robˆ durante seu percurso. 4 4 -1. -1 2 2 -2. -3 -2. 2 0. Pedro Kantek 88-08.36 353 412 123 2. 0 -4.´ CAP´ ITULO 50.28 271 417 294 2.80 Transporte: vers˜o de 10 de fevereiro de 2008 a 521 88-08.31 2. -2 2. -3 4 3 -3. 4 -2 -2. -4 4. 1 0 0 Restaurante 11 3 4 8 13 17 20 24 15 17 20 25 29 32 35 10 3 8 9 10 13 15 19 11 13 17 20 21 22 24 13 1 5 6 10 15 20 24 15 20 25 30 32 34 39 0 0 Responda T1 T2 0 -3. -5 -2. -3 -1.6 677 459 668 0 0 Robot Exerc´ ıcio 3 930 852 711 1. 2 -3.19 3.15 1.72 1. 4 -3. -2 4.8 1 2 3 4 Respostas 1 2 2 2 1 2 1 1 2 2 2 1 3 2 4 2 2 2 3 2 2 3 2 3 5 3 7 4 3 5 4 4 5 3 5 6 6 9 10 12 13 18 23 25 23 25 29 32 33 38 40 43 10 12 15 18 19 24 28 31 16 21 25 26 27 28 30 32 6 8 13 17 18 19 20 22 27 29 14 19 20 25 28 29 31 34 35 37 Responda T1 T2 T3 Rb1 Rb2 Rb3 R1 R2 R3 50. 0 0 Restaurante 10 2 5 14 19 10 1 6 11 15 12 3 5 11 13 0 0 50. ´ CAP´ ITULO 50.24 3. 5 5. 3 1 3 1 T3 28 33 36 40 40 43 45 48 22 24 27 28 32 37 3 5 0. 1 -3.7 961 692 1943 0 0 Robot Exerc´ ıcio 4 690 690 624 2. EXERC´ ICIO PRATICO 157 4 -3. Pedro Kantek 522 vers˜o de 10 de fevereiro de 2008 a .76 2.86 Transporte: 27 31 32 33 38 42 43 44 47 50 54 56 Rb1 Rb2 Rb3 R1 R2 R3 6 1 -1. 5 2 3. 0 -2 50. 2 -1.71 1.48 2. EXERC´ ICIO PRATICO 157 1 6 7 12 14 17 21 25 26 27 28 11 12 13 16 17 21 24 25 30 34 39 0 0 Responda T1 T2 T3 Rb1 Rb2 Rb3 R1 R2 R3 4 1 -4. -1 0. 4 7 -1 1. a c˜ Entrada de Dados O n´ mero m´ximo de cidades. Esta ´ empreitada requer que sejam abertas novas picadas na mata. pois o menor v˜o encontrado no e a e a caminho. 2 3 12 . para um dado par de cidades X e Y. O primeiro par do conjunto de teste cont´m dois a e inteiros positivos X e Y que representam respectivamente as cidades origem e a cidade destino da carga (1 ≤ X ≤ N. Para possibilitar a com´ nica¸ao entre todas as tabas ´ necess´rio que todas elas u c˜ e a 88-08. e c˜ e Agora. 1 . planejam montar uma rede de fibra otica interligando todas as tabas. passando por reservas de flora e fauna. Exemplo de Sa´da ı 12 . 10 (esta sa´da corresponde ao exemplo de entrada acima) ı Uma seq¨ˆncia de 0’s e 1’s ´ chamada de seq¨ˆncia-H se ´ composta por um unico 0 ou ue e ue e ´ se ´ composta por um 1 seguido de duas seq¨ˆncias-H. a cidade onde a estrada termina e a altura do viaduto ou t´ nel mais baixo no trajeto de A para B. Por exemplo. Cada descri¸ao ´ composta por trˆs inteiros A. Pedro Kantek 524 vers˜o de 10 de fevereiro de 2008 a . se utilizarmos as estradas BR-1001 e BR-1024. A primeira providˆncia foi a distribui¸ao de telefones celulares a todos os paj´s. conhecendo todas a as estradas da regi˜o e a altura de todos os t´ neis e viadutos dessas estradas. B e C. composta de d´ e ue ıgitos 0’s e 1’s (sem espa¸os em branco c intermedi´rios). a a Tarefa Sua tarefa ´ determinar. E a ıvel de hidroel´trica. mas 10. que em cima do caminh˜o mede 7 metros de altura. ´ de 9 metros. No caso geral. 3 1 5 .´ CAP´ ITULO 51. pois muitas vezes a carga ´ mais alta do que o v˜o do viaduto sob o qual o e a ´ poss´ tranportar uma turbina caminh˜o deve passar. EXERC´ ICIO PRATICO 158 Cap´ ıtulo 51 Exerc´ ıcio pr´tico 158 a 51. a Exemplo de Entrada 0 10100 10010 -1 Sa´ de Dados Para cada conjunto de teste do arquivo de entrada seu programa ıda deve produzir o d´ ıgito 1 se a seq¨ˆncia ´ uma seq¨ˆncia-H. 100 e 10100 s˜o e ue a seq¨ˆncias-H. da cidade Xis da e a Serra para a cidade Ypsilon Bonito? 523 Os caciques da regi˜o de Tutua¸u pretendem integrar suas tribos a chamada ”aldeia a c ` global”.2 Carga Pesada Um dos maiores problemas no transporte de cargas pesadas por rodovias ´ a altura dos e viadutos. O final da entrada ´ indicado quando os primeiros caracteres da linha de teste e s˜o -1. e ue e a ue Entrada de Dados Cada conjunto de teste ´ composto por uma unica linha. Cada instˆncia u a do problema ocupa 2 linhas. ou o d´ ue e ue ıgito 0 se a seq¨ˆncia ue n˜o ´ uma seq¨ˆncia-H. 1 ≤ Y ≤ N). 0. Ser´ a que vocˆ consegue ajud´-los a projetar a rede de fibra otica? e a ´ Tarefa Vamos denominar uma liga¸ao de fibra otica entre duas tabas de um ramo c˜ ´ de rede. 1 4 5 . As triplas seguintes contˆm cada uma e a descri¸ao de uma estrada. ue a a Tarefa Sua tarefa ´ determinar se uma dada seq¨ˆncia ´ ou n˜o uma seq¨ˆncia-H. a resposta pode n˜o ser t˜o evidente. Conscientes da necessidade de preservar o m´ximo poss´ a ıvel o meio ambiente. O final do arquivo de testes ´ indicado quando X = Y = e 0 (este ultimo conjunto de testes n˜o ´ v´lido e n˜o deve ser processado). 111 e 10010 n˜o s˜o. 0 0 0 0 0 Sa´ de Dados Na resposta deve aparecer a altura m´xima da carga. que e ´ cont´m a seq¨ˆncia a ser testada. 2 4 12 . os caciques encomendaram um estudo do impacto ambiental do projeto.3 Rede ´tica o 51. O final da seq¨ˆncia ´ indicado pelo primeiro espa¸o em branco da a ue e c linha. qual a carga e mais alta que pode ser transportada de X para Y por meio rodovi´rio. 0 0 0 1 3 . encontrada ıda a pelo seu programa. 1 3 8 . Considere a u que todas as estradas tˆm limita¸ao de altura e que a interliga¸ao das estradas ao redor e c˜ c˜ das cidades n˜o tem restri¸ao de altura. e com dezenas de cidades e estradas. 0 (esta sa´da corresponde ao exemplo de entrada acima) ı 51. ´ a e a a Exemplo de Entrada 2 4 . Considere o mapa abaixo. 1 2 10 . N. em cada teste ´ 100. c˜ c˜ e e representando respectivamente a cidade onde a estrada inicia. As u a e cidades s˜o numeradas de 1 a N.1 Sequˆncias ¨e Neste caso ´ f´cil perceber que a resposta ´ sim. a e ue Exemplo de Sa´da ı 1 . Um ramo ´ descrito por um par de tabas e X e Y .3 5 5.3 4 6.4 6 20.3 1 3.1 3 9.0 0 0 4 3.2 1 3.5 3 3. 1 5 12.5 6 22. EXERC´ ICIO PRATICO 158 5 3.2 3 11.1 2 18.0 0 0 5 2.2 4 8. Y e Z.3 4 7. direta (utilizando um ramo de rede) ou indiretamente (utilizando mais de um ramo).´ CAP´ ITULO 51.3 5 7.1 4 12.1 6 20.1 4 5. 1 2 6. 2 4 13 .4 5 4.2 6 21. 4 6 4. imprima apenas uma delas. As tabas s˜o numeradas de 1 a N.2 4 21. Alguns ramos.2 6 14. 2 3 10 . causando o menor u c˜ impacto ambiental poss´ ıvel.4 5 19.5 Exerc´ ıcio 2 Seq¨ˆncia-H: ue 1101010011110110010011110010011000000 110011001110100100100 1110010111101010110000100110000 1110010100100 -1 Carga Pesada 5 4.2 3 4. Os caciques conseguiram a informa¸ao do impacto ambiental que c˜ causar´ a constru¸ao dos ramos.2 5 12.5 1 6. Se houver mais de uma solu¸ao poss´ c˜ c˜ ıvel.2 5 6. no entanto. de forma a possibilitar a com´ nica¸ao entre todas as tabas.5 4 1.1 3 23 0 Responda S1 S2 S3 S4 C1 C2 R1 R2 Sua tarefa ´ escrever um programa para determinar quais ramos devem ser cone stru´ ıdos.2 5 5. 2 5 .4 2 10.1 3 5.5 1 11. O final da entrada ´ indicado quando e ıvel e N = 0.1 6 23 0 Responda S1 S2 S3 S4 C1 C2 R1 R2 51.3 4 19. Carga Pesada ´ CAP´ ITULO 51.4 5 4. EXERC´ ICIO PRATICO 158 estejam interligadas.1 3 9. pois sua constru¸ao ´ imposs´ c˜ e ıvel.2 3 10.5 6 7.1 5 18.1 5 5.1 2 16.1 3 4. 4 1 6.1 4 6. 1 2 10 . 1 3 12 .1 4 17.3 6 14.3 6 6. Entrada A entrada ´ composta de v´rios conjuntos de teste.2 4 8. com X < Y. 2 5 12.5 2 4. Os ramos de rede podem ser listados em qualquer ordem. 4 1 3.0 0 0 0 0 Rede otica ´ 6.1 4 17.4 Exerc´ ıcio 1 Seq¨ˆncia-H: ue 111011001000100 110101110001101101111010010100000 1101010010101100110100110101000 11101100111010001001000 -1 vers˜o de 10 de fevereiro de 2008 a 525 88-08. 4 6 4. 2 3 .5 6 17.5 2 5.3 5 19. 3 2 7. 2 5 11.2 1 6.4 5 20 6.3 4 12.0 0 0 0 0 Rede otica ´ 6. mas n˜o a deve haver repeti¸ao. 1 2 3.1 6 7. Exemplo de Entrada 3 . 1 3 9. As e u a M indica¸oes seguintes contˆm trˆs inteiros positivos X. Com os conjuntos de teste a dados sempre ´ poss´ interligar todas as tabas. Pedro Kantek 88-08.2 3 19.1 2 6. 4 5 4.2 4 15. A primeira linha de e a um conjunto de teste cont´m o n´ mero de tabas. 3 1 10 5 . Exemplo de Sa´da ı 1 2 .3 5 15.3 5 5.5 3 8.2 6 10. 1 3 1 3 .4 2 9.1 6 16.1 2 11.2 1 2. 2 5 5 . 1 2 15 .2 3 13. 2 3 4. Pedro Kantek 526 vers˜o de 10 de fevereiro de 2008 a .4 6 8.3 5 5.1 5 5. 3 4 (esta sa´da corresponde ao exemplo de entrada acima) ı 51. 4 5 14. que indicam que o ramo c˜ e e de rede que liga a taba X ` taba Y tem impacto ambiental Z.3 4 15. 4 1 9.2 6 10.1 3 9.5 1 10.3 6 9.5 6 21.1 5 9. nem foram considerados no a c˜ estudo ambiental.3 5 6.5 3 7. 3 2 6 . 3 4 6 0 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir uma lista ıda dos ramos de redes que devem ser constru´ ıdos. 1 4 12.4 3 8.2 4 8.1 5 11.2 5 11.3 6 22 6. 2 5 9.3 2 4. Pedro Kantek 528 vers˜o de 10 de fevereiro de 2008 a .2 4 3. 2 6 4.2 3 16.0 0 0 0 0 Rede ´tica o vers˜o de 10 de fevereiro de 2008 a 527 88-08.5 6 16. 2 5 4.1 4 7.3 5 9.3 6 7.5 3 6.4 6 16. 1 3 6. 1 5 12.1 5 19.4 5 22.2 6 22.5 1 4.2 4 5.4 3 3.6 Exerc´ ıcio 3 Seq¨ˆncia-H: ue 1011110000100 1110011100000010100 11110101001011001000100 111101010100100011001010111010000 -1 Carga Pesada 4 1.1 6 20.5 2 9.2 3 6. 4 1 3. 1 2 4.1 4 5. 3 5 8.3 5 23 0 Responda S1 S2 S3 51.2 5 17.4 6 15.1 6 8. 4 5 4.1 3 19.2 4 23 6.1 4 2.3 6 14. 1 2 3. EXERC´ ICIO PRATICO 158 ´ CAP´ ITULO 51.3 5 9.1 3 6.1 4 10.1 5 9. 3 4 5.1 2 12. 3 4 4.1 4 9.3 4 23 6.7 Exerc´ ıcio 4 Seq¨ˆncia-H: ue 1110011001000 11010111001001011000000 1100101111001000100 1100101101000101000 -1 Carga Pesada 2 5.5 4 6.3 5 8.5 6 20.4 6 21.5 1 4.1 5 5.3 2 6.2 5 9.2 4 8.8 1 2 3 4 1 1 1 1 Respostas 0 1 0 0 1 1 1 1 1 1 1 0 9 6 5 6 6 9 6 6 46 45 36 26 14 13 45 14 12 34 34 13 35 56 25 35 13 26 14 23 23 46 34 45 25 35 16 24 16 36 23 34 24 24 36 13 36 13 25 16 S4 C1 C2 R1 R2 51.4 5 15.3 4 7.3 5 7.2 5 5.0 0 0 0 0 Rede ´tica o 6.3 1 8.2 6 20.2 1 8.4 5 7.1 2 18.3 2 5. Pedro Kantek 88-08.0 0 0 1 4.4 1 1.1 3 15.5 2 5.1 6 5.1 3 5. 3 6 5.2 3 5.3 6 20.1 4 10.1 2 11.1 5 21.2 3 23 0 Responda S1 S2 S3 S4 C1 C2 R1 R2 51.5 6 17. 1 6 13.4 5 6. 2 5 11.2 1 7.1 2 13.4 3 6. EXERC´ ICIO PRATICO 158 6.5 1 4. 2 4 13. 1 2 8.0 0 0 4 1.3 5 22.1 3 7.´ CAP´ ITULO 51.5 6 12.4 3 3.2 3 6.2 3 7.3 4 6.4 6 17.2 5 5.2 6 10.4 3 6.2 3 10.2 4 3. Sua tarefa ´ escrever um programa que determine em qual per´ e ıodo o time conseguiu acumular o maior saldo de gols. notou uma caracter´ ıstica not´vel: havia apenas um caso. em princ´ o e ıpio o sorteio seria. Coleciona flˆmulas. sua tarefa ´ dee terminar o n´ mero do ingresso premiado. O final da entrada ´ indicado por V = 0. resolveu montar um banco de dados com os resultados de todos os jogos de seu time ocorridos desde a sua funda¸ao. A linha seguinte cont´m a sequˆncia. Os clientes do banco utilizam os caixas eletrˆnicos para efetuar retiradas de o um certo n´ mero inteiro de Bits. A festa prometia ser um sucesso. determine o n´ mero de cada uma das notas necess´rio u a para totalizar esse valor. Como ´ um e reino recente. decidiu doar um computador para o a ser sorteado entre os que comparecessem. Pedro Kantek 530 vers˜o de 10 de fevereiro de 2008 a . Sua tarefa ´ escrever um programa que. havia sido a i-´sima pessoa e a entrar no gin´sio.2 Bits Trocados Cap´ ıtulo 52 Exerc´ ıcio pr´tico . a pipoca.. a em que o participante que possuia o ingresso numerado com i. Os alunos prepararam barracas de quent˜o. B$10. B$10. em toda a lista. em 1909.00. um funcion´rio inseriu. Na entrada.00. Por e exemplo. J.00 e duas de B$1. c˜ a Tarefa Os caixas eletrˆnicos das Ilhas Weblands operam com todos os tipos de notas o dispon´ ıveis. figurinhas de jogadores. Verificando a lista o c de presentes.. K indica o u e u e n´ mero de c´dulas de B$5.00 e L indica o n´ mero de c´dulas de B$1. Quando ganhou um computador de presente em uma festa. Depois de inseridos os dados. pois o pai de um dos formandos. Por exemplo.00. K e L que representam o resultado encontrado pelo seu programa: I indica o n´ mero de c´dulas de B$50. onde A B. n˜o sabe programar muito bem.00.1 Quermesse Os alunos do ultimo ano resolveram organizar uma quermesse para arrecadar fundos ´ para a festa de formatura. O final da entrada ´ indicado quando N = 0. Te´filo. Para cada conjunto de teste da entrada e haver´ um unico ganhador. O n´ mero do ingresso serviria para o sorteio do computador. segunda partida: 1 x 2. mantendo um estoque de c´dulas para cada valor (B$ 50. existem notas de B$ 50. numerada seq¨ encialmente a partir de 1. de modo a minimizar a quantidade de c´dulas entregues. B$5. Um per´ ıodo ´ definido pelos n´ meros e u de seq¨ˆncia de duas partidas. onde passa uma pessoa por vez. ensaiaram a quadrilha e colocaram ` venda ingressos numerados sequena cialmente a partir de 1. u a c˜ Entrada A entrada ´ composta de v´rios conjuntos de teste.00). e Exemplo de Entrada 1 72 0 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir quatro ıda inteiros I.3 Saldo de gols Hip´lito ´ um torcedor fan´tico de um grande clube curitibano. sabendo que o ganhador ´ o unico participante u e ´ que tem o n´ mero do ingresso igual ` sua posi¸ao de entrada na festa.00. u Ficou acertado que Te´filo decidiria o m´todo de sorteio. claro. A e B.00 e e B$1. O saldo de gols acumulado entre A e ue B ´ dado pela soma dos gols marcados pelo time em todas as partidas realizadas entre e 88-08. por ordem de chegada.00. dos e e N ingressos das pessoas que participaram da festa.159 a 52. ´ necess´rio entregar uma nota de B$50. dado o valor u e de Bits desejado pelo cliente. ele deseja saber qual foi o per´ ıodo em que o seu time acumulou o maior saldo de gols.00. Como Hip´lito o tem o computador h´ muito pouco tempo. a sociedade ´ muito influenciada pela inform´tica. computadorizado. Hip´lito come¸ou c˜ o c a ficar curioso sobre estat´ ısticas de desempenho do time. 529 As Ilhas Weblands formam um reino independente nos mares do Pac´ ıfico. A moeda oficial ´ o e a e Bit. Cada conjunto de teste e a ´ composto por uma unica linha. Se o cliente deseja retirar B$72. conforme determinado ıda ıda u pelo seu programa. a u na ordem de chegada dos participantes. com os resultados u de todos os jogos do time (primeira partida: 3 x 0. o e a a bandeiras.00 e B$1. terceira partida: 0 x 5 . dono de uma loja de inform´tica. O local escolhido para a festa foi o gin´sio da escola. B$5. que indica e ´ e u o valor solicitado pelo cliente. Te´filo ficou t˜o encantado com a coincidˆncia que decidiu que o a o a e sorteio n˜o seria necess´rio: esta pessoa seria o ganhador do computador.). o n´ mero do ingresso.00. Vocˆ foi contratado(a) para e ajudar na programa¸ao dos caixas autom´ticos de um grande banco das Ilhas Weblands. a ´ Exemplo de Entrada 4 4 5 3 1 10 9 8 7 6 1 4 3 2 12 10 0 Sa´ A sa´ deve conter o n´ mero do ingresso do ganhador.00.´ CAP´ ITULO 52. em uma lista no computador da escola. Entrada A entrada ´ composta de v´rios conjuntos de teste. e a duas de B$10. Depois da entrada de todos os participantes. se o cliente deseja retirar B$50.00. u e u e Exemplo de Sa´da ı 0 0 0 1 e 1 2 0 2 (esta sa´da corresponde ao exemplo de entrada acima) ı 52. que possui uma roleta.159 Exemplo de Sa´da ı 3 e 10 (esta sa´da corresponde ao exemplo de entrada acima) ı 52. J indica o n´ mero de c´dulas de B$10. recortes de jornal. doces. Te´filo come¸ou a trabalhar no computador para preparar o sorteio.00. em ordem de entrada. basta entregar uma unica nota de cinquenta ´ Bits. que cont´m um n´ mero inteiro positivo V. A entrada dos participantes foi a pela porta principal. ´ Tarefa E dada uma lista.00. EXERC´ ICIO PRATICO . A primeira linha de e a um conjunto de teste cont´m um n´ mero inteiro positivo N que indica o n´ mero de e u u participantes da festa. a a Tarefa Conhecendo a lista de participantes. camisetas e tudo o mais que se refira a seu time preferido. e precisa de a a sua ajuda. que indica o n´ mero de partidas e a u realizadas pelo time (o valor N = 0 indica o final da entrada).2 3. neste caso a segunda linha deve conter a express˜o ”nenhum”. Exemplo de Entrada 2 2 3 .2 2. 7 1 9 2 2 . Seguem-se N linhas.2 3. A primeira linha de um a conjunto de teste cont´m um inteiro n˜o negativo.2 3. N. 3 8 e nenhum acima) ´ CAP´ ITULO 52.1 2. 1 5 .1 4. o per´ ıodo em que B . 0 4 0 Sa´ ıda Para cada conjunto de teste da entrada seu programa deve produzir um par de inteiros I e J que indicam respectivamente a primeira e ultima partidas do melhor ´ per´ ıodo.5 1.1 1. escolha o maior per´ ıodo (ou seja.1 2.1 1.5 3.1 1.3 2. Se ainda assim houver mais de uma e solu¸ao poss´ c˜ ıvel. 6 2 . escolha qualquer uma delas como resposta.2 3. 1 4 .3 6.6 Exerc´ ıcio 3 10 17 19 20 14 4 6 17 12 3 19 20 9 1 13 16 1 7 20 19 6 14 5 12 10 1 3 19 Quermesse 5 11 1 13 2 18 16 15 8 9 3 12 7 15 8 16 10 6 18 14 7 13 2 11 5 4 3 12 2 11 10 5 4 17 18 9 14 15 8 9 17 4 6 13 7 2 11 20 16 15 8 18 0 531 88-08. exceto quando o saldo de gols do melhor per´ ıodo for menor ou igual a zero. 0 3 .2 3. 0 5 3 0 2 .2 2.´ CAP´ ITULO 52. 5 1 .2 1. EXERC´ ICIO PRATICO . As a o partidas s˜o numeradas sequencialmente a partir de 1.1 1 0 Responda q1 q2 q3 q4 n1 n2 n3 n4 s1 s2 s3 52.5 5.3 1 0 Responda q1 q2 q3 q4 n1 n2 n3 n4 s1 s2 s3 (esta sa´da corresponde ao exemplo de entrada ı 52.2 1.1 6.4 3. Entrada Seu programa deve ler v´rios conjuntos de teste.4 Exerc´ ıcio 1 5 9 20 1 4 16 18 10 6 19 18 8 9 17 15 19 Quermesse 17 10 2 8 16 11 19 7 14 4 12 13 18 3 15 6 11 7 17 3 9 15 19 1 12 8 6 5 13 20 2 14 20 5 9 16 4 13 2 15 1 17 14 12 7 10 3 11 6 5 10 3 18 8 20 1 4 16 11 7 14 13 2 12 0 Notas 185 254 130 168 0 Saldo de gols 7 7 1. a Exemplo de Sa´da ı 2 2.5 5 7 2 4.2 1. cada uma contendo um par de n´ meros inteiros n˜o negativos X e Y que representam u a o resultado da partida: X s˜o os gols a favor e Y os gols contra o time de Hip´lito.5 5.5 5. na ordem em que aparecem na a entrada.2 1.1 1. Se houver mais de um per´ ıodo com o mesmo saldo de gols.A ´ maior).5 3 8 vers˜o de 10 de fevereiro de 2008 a 52.159 1 4.5 4.2 1. 0 5 .4 2 9 9 6.4 4. Pedro Kantek 532 vers˜o de 10 de fevereiro de 2008 a .3 1.1 2. conforme determinado pelo seu programa.159 A e B (incluindo as mesmas) menos a soma dos gols marcados pelos times advers´rios a no per´ ıodo. EXERC´ ICIO PRATICO . 0 0 .1 1.1 3.5 Exerc´ ıcio 2 Quermesse 13 6 17 16 7 14 1 20 2 3 10 15 18 4 8 11 12 5 19 9 17 5 9 16 6 4 2 11 12 15 3 19 8 7 14 18 10 13 1 20 10 8 2 12 20 18 17 13 3 9 15 6 7 14 11 1 16 5 4 19 5 16 6 18 7 12 4 19 1 14 9 17 13 15 3 20 8 2 10 11 0 Notas 255 247 239 271 0 Saldo de gols 7 9 6. 6 2 .5 3 9 6 1.5 2. Pedro Kantek 88-08. 3 3.3 2.1 2.1 6. EXERC´ ICIO PRATICO .1 4.1 7.5 3.1 1.8 1 2 3 4 15 19 12 14 Respostas 13 20 11 16 12 14 19 12 11 13 14 19 3 5 5 5 3 0 3 3 1 1 0 1 0 0 1 4 5 4 3 2 0 4 4 2 0 1 1 0 4 2 2 3 2 4 4 4 3 3 2 0 0 1 1 1 0 4 3 3 3 5 5 4 1 2 0 3 1 0 0 1 3 1 0 1 1 1 2 3 9 5 6 9 8 2 5 1 9 9 9 4 1 1 1 4 6 9 9 9 n2 n3 n4 s1 s2 s3 52.1 1.3 1.6 6.6 3.4 2.7 Exerc´ ıcio 4 Quermesse 16 10 2 2 0 18 5 17 1 3 15 11 12 20 4 9 10 14 7 6 8 19 2 13 13 4 18 1 17 6 11 20 3 12 19 5 7 8 16 9 2 14 15 11 7 5 19 16 1 18 8 6 4 12 17 13 10 9 15 20 3 14 14 17 20 9 7 16 5 4 18 13 11 8 6 12 10 3 15 19 1 Notas 289 123 208 236 0 Saldo de gols 7 1 6.7 2.5 4.3 1.8 6 9 9 4.1 3.1 1. Pedro Kantek 534 vers˜o de 10 de fevereiro de 2008 a .3 1.2 1 9 1 7.2 1. EXERC´ ICIO PRATICO .2 2.3 2 0 Responda q1 q2 q3 q4 n1 Responda q1 q2 q3 q4 n1 ´ CAP´ ITULO 52.1 2.2 1.159 n2 n3 n4 s1 s2 s3 52.5 3.8 2.2 4.3 3.2 1 9 6 4.4 4.2 2.2 2.2 1.3 4.1 3.8 3.1 3.159 Notas 281 197 228 250 0 Saldo de gols 6 4 7.3 2.´ CAP´ ITULO 52.3 2 9 6 3.8 2. Pedro Kantek 88-08.3 1 0 vers˜o de 10 de fevereiro de 2008 a 533 88-08. das quais consomem preferencialmente frutos e brotos. Um c˜ c grande esfor¸o foi feito pelos primatologistas para aumentar a popula¸ao dos macacosc c˜ prego-do-peito-amarelo. a Exemplo de Entrada (horizontalizados. Pedro Kantek 536 vers˜o de 10 de fevereiro de 2008 a . lagartas e r˜s. definida como a interse¸ao de todas as c˜ regi˜es dadas. a Exemplo de Sa´da ı 2 4 6 3 e nenhum (esta sa´da corresponde ao exemplo de entrada acima) ı Exerc´ ıcio pr´tico . o visitante pode efetuar um movimento horizontal ou diagonal. e preferem as florestas mais densas. semelhante a um gorro. a segunda linha deve conter a exc˜ press˜o ”nenhum”. Al´m disso. A prioridade ´ um n´ mero inteiro. Tarefa As regi˜es prop´ o ıcias para o macaco-prego-do-peito-amarelo foram determinadas como retˆngulos cujos lados s˜o todos verticais ou horizontais. Para determinar a o melhor local do pa´ para criar uma nova reserva ambiental para os macacos-pregoıs do-peito-amarelo. Apesar de ser o macaco mais comum nas matas do pa´ uma de suas sub-esp´cies encontra-se ıs. o MASP O MASP (Museu de Arte de S˜o Paulo) tem o melhor acervo de obras de arte da Am´rica a e Latina. Sua tarefa ´ a a e encontrar o local ideal para a reserva ambiental. Entrada Seu programa deve ler v´rios conjuntos de teste. Seguem-se N linhas.2 O macaco-prego ´ um animal irrequieto e barulhento. o MASP ´ diferente de museus e e tradicionais porque seus quadros n˜o s˜o pendurados em paredes (j´ que as ‘paredes’ a a a do MASP s˜o janelas de vidro). encimada por uma densa pelagem negra ou c marrom-escura. Caso a interse¸ao seja vazia. d) um passo consiste em mover-se da coluna i para a coluna i+1 em uma linha adjacente. Movimentos legais s˜o mostrados na figura abaixo: a e) para dificultar ainda um pouco mais o problema. Alimentam-se tamb´m de muitos animais. A trajet´ria otima ´ aquela que tem o ´ e a menor soma total das prioridades das obras visitadas. u c) uma trajet´ria de visita ´ composta de uma seq¨ˆncia de passos. A sua cabe¸a. no mesmo formato a c˜ utilizado na entrada. maior a prioridade de que a obra seja apreciada (note u que a prioridade pode ser negativa). Uma grande exposi¸ao est´ em curso. a primeira e ultima linhas (linhas ´ de n´ mero 1 e N) da matriz s˜o consideradas adjacentes (o que n˜o ´ poss´ no u a a e ıvel MASP!).160 a 53. EXERC´ ICIO PRATICO . Y. iniciando na coluna 1 (primeira coluna) e terminando na coluna M (´ ltima coluna). a cada passo o o e ue visitante aprecia uma obra. e u quanto menor o n´ mero. regi˜es com frutos. U e V que descrevem uma regi˜o: o par X. sendo reconhecido mundialmente. considere as duas exposi¸oes abaixo (a unica diferen¸a entre as duas exposi¸oes ´ a prioridade das c˜ ´ c c˜ e obras da ultima linha): ´ 88-08.1 Macaco-prego 53. torna seu aspecto inconfund´ ıvel. Como exemplo. preferene cialmente lesmas. Tarefa Sua tarefa ´ escrever um programa que determine a trajet´ria otima para e o ´ uma visita ao museu..) 535 f ) cada obra tem associada uma prioridade de visita. N. Ajude a salvar os macacos-prego-do-peito-amarelo. Sabe-se que eles se alimentam de plantas. Ou seja. V representa a coordenada do canto inferior direito de um retˆngulo. obedecendo as regras acima. mas sim apresentados em cavaletes no meio da sala de a exposi¸ao. Y representa u a a coordenada do canto superior esquerdo e o par U. cada uma contendo quatro n´ meros inteiros X. que se distingue c c˜ das demais pela colora¸ao amarelada do peito e da parte anterior dos bra¸os. e seriamente amea¸ada de extin¸ao: o macaco-prego-do-peito-amarelo. regi˜es o o o com muitos brotos.. que indica o n´ mero de regi˜es e a u o (o valor N = 0 indica o final da entrada). b) o visitante pode apenas mover-se da esquerda para a direita. ocupando todo o sal˜o de exposi¸oes. etc.´ CAP´ ITULO 53. c˜ c˜ a a c˜ Considere que: a) as obras est˜o organizadas no sal˜o de exposi¸oes no formato de uma matriz de N a a c˜ linhas por M colunas. merecedor tamb´m dos adjetivos e e desordeiro e despudorado.160 3 0 6 8 1 1 5 6 3 2 4 9 0 3 0 4 4 0 3 1 7 -3 6 4 10 0 0 Cap´ ıtulo 53 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir as coorıda denadas do retˆngulo de interse¸ao encontrado pelo seu programa. A primeira linha de um a conjunto de teste cont´m um inteiro n˜o negativo. o governo fez um levantamento das regi˜es no pa´ onde as condi¸oes o ıs c˜ preferidas desses animais ocorrem: regi˜es de floresta densa. seu programa deve imprimir a trajet´ria de menor ordem lexicogr´fica (veja o formato de Sa´ o a ıda. Entrada A entrada ´ composta de v´rios conjuntos de teste. a Exemplo de Sa´da ı Teste 1 1 2 3 4 4 5 Teste 2 1 2 1 5 4 5 Teste 3 1 1 (esta sa´da corresponde ao exemplo de entrada acima) ı 53. EXERC´ ICIO PRATICO . No caso o o de haver mais de uma trajet´ria ´tima poss´ o o ıvel. Note que a o o c˜ a trajet´ria ´tima para a exposi¸ao da direita utiliza a propriedade da adjacˆncia entre a o o c˜ e primeira e a ultima linhas.160 -2 5 -8 -13 -5 0 4 0 Masp As trajet´rias ´timas para as duas exposi¸oes s˜o indicadas na figura. e Exemplo 5 6 3 4 1 2 6 1 8 2 5 9 3 9 8 4 1 3 3 7 2 8 de Entrada 8 7 9 2 6 6 4 5 6 4 (horizontalizados.3 4 3 -12 -11 10 10 10 Exerc´ ıcio 1 Macaco prego 15 9 5 -6 0 -1 537 88-08. que indicam e u respectivamente o n´ mero de linhas e o n´ mero de colunas da matriz. ´ No caso de haver mais de uma trajet´ria ´tima poss´ o o ıvel. descrita por uma seq¨ˆncia de M inteiros (separados por um espa¸o em o o ue c branco). seu programa deve imprimir a trajet´ria o de menor ordem lexicogr´fica (a primeira achada). Pedro Kantek 6 6 8 4 5 8 7 5 88-08. representando as linhas da matriz que constituem a trajet´ria ´tima. abaixo).160 0 0 Responda macaco1 macaco2 masp1 masp2 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir a traıda jet´ria ´tima.. A primeira linha e a de um conjunto de teste cont´m dois n´ meros inteiros positivos N e M.. EXERC´ ICIO PRATICO .4 4 -5 -2 -14 -5 5 -5 -13 3 -13 -7 0 Masp 8 8 9 8 14 6 13 12 8 Exerc´ ıcio 2 Macaco prego 9 -13 5 -14 6 -9 14 -8 9 -13 13 -11 11 -5 9 -14 8 -3 53. O final da entrada ´ indicado por N = M = 0. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 538 vers˜o de 10 de fevereiro de 2008 a . As N linhas u u seguintes cont´m cada uma M n´ meros inteiros que representam as prioridades das e u obras.) 5 6 2 2 3 4 1 2 8 6 9 10 6 1 8 2 7 4 9 10 5 9 3 9 9 5 8 4 1 3 2 6 3 7 2 8 6 4 6 6 9 2 8 8 4 2 8 4 8 1 1 2 6 6 6 2 8 1 5 7 6 6 1 1 4 2 0 0 5 5 4 1 1 7 4 5 7 3 3 3 9 3 7 5 8 8 8 7 3 9 9 9 7 6 9 5 7 8 1 9 2 2 8 4 8 8 2 6 9 9 7 7 4 9 9 7 13 5 5 11 14 5 4 6 -15 14 -5 10 -4 15 -15 10 13 -2 ´ CAP´ ITULO 53.´ CAP´ ITULO 53. 160 9 4 1 7 8 5 1 5 2 3 6 6 6 7 4 3 2 5 5 7 4 2 2 1 0 0 7 6 4 9 5 4 2 1 5 5 1 1 3 5 9 5 8 2 5 2 1 7 2 3 7 3 2 7 1 1 7 8 6 8 2 4 9 7 7 6 1 8 3 3 Responda macaco1 macaco2 masp1 ´ CAP´ ITULO 53.´ CAP´ ITULO 53.5 4 -9 -4 -6 -13 5 -14 -1 -14 1 -12 0 Masp 6 6 6 2 9 5 9 6 4 8 3 9 6 8 6 6 6 6 8 4 8 4 1 8 2 6 8 2 0 0 7 5 9 4 3 7 2 4 4 3 2 9 5 5 7 7 6 7 1 6 3 6 2 3 15 6 15 15 5 13 14 12 5 Exerc´ ıcio 3 Macaco prego 10 -11 13 -1 7 -13 10 -8 7 -13 13 -10 12 -9 10 -4 12 -7 9 3 3 5 5 9 9 6 4 5 4 3 2 7 1 7 9 5 4 2 2 5 4 3 5 8 2 1 9 4 2 4 7 6 6 6 7 5 4 5 6 2 2 8 1 5 4 3 Responda macaco1 macaco2 masp1 masp2 53. Pedro Kantek 540 vers˜o de 10 de fevereiro de 2008 a . EXERC´ ICIO PRATICO .160 masp2 53. Pedro Kantek vers˜o de 10 de fevereiro de 2008 a 88-08.7 Respostas 5 0 7 -1 8 4 4 3 1 2 5 8 5 7 5 4 8 -3 7 -4 5 1 6 5 1 1 5 6 1 1 4 1 2 1 4 2 1 2 4 2 6 2 3 3 6 3 5 3 5 4 5 2 6 4 4 3 1 3 3 2 1 2 3 2 1 3 3 3 1 2 1 3 10 2nenhum 3 -4 5 4 0 8 539 88-08. EXERC´ ICIO PRATICO .6 4 -10 0 -15 -6 5 2 -7 -9 -9 -6 0 Masp 6 6 1 4 9 8 7 8 5 3 9 6 6 4 6 6 9 3 5 8 8 9 1 1 4 1 8 8 0 0 3 6 5 6 9 6 9 9 3 9 7 9 8 4 7 2 4 4 5 2 3 5 2 2 12 7 7 8 12 12 8 9 10 Exerc´ ıcio 4 Macaco prego 8 -13 11 -2 15 4 15 0 15 1 5 0 8 -15 15 -15 13 -12 Responda macaco1 macaco2 masp1 masp2 53. A segunda linha cont´m o vetor de inteiros positivos L. .C. em que C[i] indica o n´ de chatea¸ao ocasionado se o ıvel c˜ prazo L[i] n˜o for obedecido (1 ≤ i ≤ N)..B. E. E........B......C. E... D............´ CAP´ ITULO 54..... .... D... D.BBB.ABAA D. determine qual a seq¨ˆncia c˜ e ue de empilhamento (de baixo para cima) que foi utilizada na constru¸ao da pilha.. Os e balaios de Maria s˜o muito bem feitos e tˆm grande aceita¸ao na regi˜o.. Todos os pedidos... Pode ocorrer que mais de uma seq¨ˆncia de produ¸ao ue c˜ gere a mesma chatea¸ao m´ c˜ ınima.... E.. .B.ACCCA. ela ter´ uma chatea¸ao de n´ 125.E... . Portanto. Esmeralda ´ muito boazinha e. . e Exemplo de Entrada (horizontalizado. EEEEEE.2 Considere os seguintes an´is quadrados..... e a ıvel Entrada A entrada ´ composta de v´rios conjuntos de teste...... Coronel Zoio precisa de um para o dia 4. representando a vista superior da pilha de an´is. ..B. come¸ando c pelo anel 1 (que fica por baixo de todos) e terminando com o anel 5 (em cima de todos)..B... .BBBB... 3 .... DCCC.... DDDDDD. ....E. Exemplo de Sa´da ı EDABC e (ABC ou ACB ou BAC ou BCA ou CAB ou CBA) Exerc´ ıcio pr´tico .. A espessura das e c paredes do anel ´ de exatamente um caractere e o comprimento dos lados nunca ´ menor e e do que trˆs caracteres. ...B. sem descanso... 4 ..D. Pelo menos uma parte de cada um dos lados do anel ´ vis´ e e ıvel (note que um canto conta como vis´ para dois lados). mas como a resposta deve ser o valor do m´ ınimo. .... .. com as datas-limite de entrega.. .A ....AAAA EEEEEE.... . Algu´m poderia ajudar Maria? e Tarefa Sua tarefa ´ escrever um programa que determine qual a melhor ordem e de entrega dos balaios de Maria... ..... EEEEEE. este fato n˜o tem importˆncia. O e e final da entrada ´ indicado quando X = Y = 0.D.... Balaio Os an´is s˜o formados por letras mai´ sculas.. 541 Maria mora no interior de Minas Gerais e ´ especialista em fabricar balaios de junco.. e u respectivamente.) 9 8 10 10 0 0 .... ..CCC.... se for considerar as datas-limite impostas pelos seus clientes...B. cada anel com uma letra diferente.....A.AAAAA.’) ´ utilizado para representrar espa¸os vazios... .. isso vai causar uma chatea¸ao de n´ 13.. Maria n˜o sabe dizer n˜o....... O e a u caractere ponto (‘.....C. DDDDDD... 5 . .. . ..161 a 54.. E..... e assim por diante. neste caso pode ser 5 2 4 3 6 7 1) 88-08.1 An´is quadrados e 54. E.. A chatea¸ao total ´ dada pela soma a c˜ ıvel c˜ e das chatea¸oes causadas por todos os atrasos..B...........B. em que L[i] e que indica a data-limite para entrega do pedido i (1 ≤ i ≤ N).... .. do mais abaixo para o e mais acima.. . se atrasar o balaio do c˜ a ıvel Coronel Zoio.. a altura e a largura da matriz que cont´m os an´is.. DCBCDB... a a Exemplo de Sa´da ı 0 e 30 (a seq. 2 ..... .. a e Exemplo de Entrada (horizontalizado) 3 7 10 6 4 4 2 4 3 1 4 6 21 0 125 10 60 50 40 30 20 10 0 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir a chatea¸ao ıda c˜ total m´ ınima daquela entrada. de forma a minimizar a chatea¸ao total causada por c˜ eventuais atrasos na entrega.BBBB. Agora coloque um anel sobre o outro.. DCBCDB..A DDDDAD... 1 .A. dada a configura¸ao de uma pilha de an´is. .. A medida da chatea¸ao utiliza um sistema de medi¸ao c˜ c˜ desenvolvido por Maria.B... que indica quantidade de e u pedidos pendentes..AC. .......... A terceira linha cont´m e o vetor de inteiros positivos C...... cada um definido em uma matriz de 8 colunas e por 9 linhas.....E.A . No c˜ exemplo acima a resposta ´ EDABC.. e agora percebeu a a que aceitou mais pedidos do que vai conseguir produzir. No entanto.... Esmeralda para o dia 6..D. ve-se => D..AAAA . e os dias s˜o numerados sequencialmente a partir de 1. So h´ uma ordem poss´ de empilhamento..B...CCC...BBBB. a Entrada A entrada ´ composta de v´rios conjuntos de teste.. .161 D...BBBB..ABAA D. por experiˆncia anterior: ela sabe que se atrasar o balaio de e Narciso.... Com a ıcio crescente demanda.AAAAA...... O final da entrada ´ indicado por N = 0..A E.... olhando a pilha de cinco an´is pelo lado de cima vemos o seguinte: e ... Maria come¸ou a aceitar pedidos para o futuro: Narciso precisa de c um balaio para o dia 10.. .. .. Cada balaio a e c˜ a demora exatamente um dia de trabalho para ser confeccionado: Maria come¸a a tecer c um balaio no in´ do dia e no final do dia entrega o produto para um cliente....... Tarefa Sua tarefa ´ escrever um ıvel e programa que.ACCCA... As X linhas e e seguintes contˆm Y caracteres cada.. Considere que Maria trabalha todos os c˜ dias. A primeira linha de e a um conjunto de teste cont´m um n´ mero inteiro positivo N......E.A E... A primeira linha e a de um conjunto de teste cont´m dois n´ meros inteiros positivos X e Y que indicam....AAAA EEEEEE.. EXERC´ ICIO PRATICO ..CCC. ECBCBB......... na ordem em que estes foram empilhados.... Cap´ ıtulo 54 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir uma lista ıda das letras dos an´is..AAAA . Pedro Kantek 542 vers˜o de 10 de fevereiro de 2008 a .. . DCCC..E..B.. . conforme a figura abaixo.AC.E.C. se c˜ ıvel e Maria atrasar a sua entrega...... ..... est˜o anotados a computador que o filho de Maria comprou. ECBCBB...A DDDDAD...CA...CCC.. .BBB..CA.. a chatea¸ao ser´ n´ 0. ... . EXERC´ ICIO PRATICO .. ıcie a Z´ Fel´ ´ um fazendeiro que adora astronomia e descobriu um portal na Internet e ıcio e que fornece uma lista das posi¸oes onde ca´ c˜ ıram meteoritos. Y1. Com base nessa lista.... SSXXSSSS......´ CAP´ ITULO 54. vers˜o de 10 de fevereiro de 2008 a Responda aneis1 543 88-08... ou meteoros.XX. Meteoros s˜o na verdade part´ a ıculas de poeira de pequenas dimens˜es que.ZZZZZZZ...161 ´ CAP´ ITULO 54.. a As linhas que delimitam a fazenda s˜o paralelas aos eixos cartesianos. D.XX. 0 0 Balaio 7 3 5 3 2 1 3 1 80 34 17 43 90 54 73 7 1 3 2 4 2 3 1 70 17 74 94 92 84 29 0 Meteoros 9 6 18 10 16 8 19 6 1 6 10 25 12 23 26 22 0 0 0 7 22 10 7 27 11 0 aneis2 balaio1 balaio2 met1 met2 14 23 22 28 17 11 23 26 22 6 54. D... A primeira linha de a um conjunto de testes quatro n´ meros inteiros X1..ZND.. EXERC´ ICIO PRATICO .. D. e em poucos segundos desaparecem de vista: s˜o a as chamadas estrelas cadentes. que a e indica o n´ mero de meteoritos. Y2) ´ a coordenada do canto inferior e direito do retˆngulo que delimita a fazenda. .. cada uma contendo dois n´ meros u u inteiros X e Y. c c˜ Tarefa S˜o dados: a uma lista de pontos no plano cartesiano.. onde (X1. Exemplo de Entrada (horizontalizado) 2 4 5 1 2 4 3 2 0 0 0 0 2 3 1 2 1 1 3 3 2 2 3 3 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir o n´ mero ıda u de meteoritos que ca´ ıram dentro da fazenda. Entrada Seu programa deve ler v´rios conjuntos de testes. Z´ Fel´ c˜ e ıcio deseja saber quantos meteoritos ca´ ıram dentro de sua propriedade.C.3 Meteoros Em noites sem nuvens pode-se muitas vezes observar pontos brilhantes no c´u que se e deslocam com grande velocidade..XX.ZND.BN. Y1) ´ a u e coordenada do canto superior esquerdo e (X2. . O final da entrada ´ a e indicado por X1 = Y1 = X2 =Y2 = 0.4 Exerc´ ıcio 1 Aneis quadrados 10 10 SSSSSSSS..ZNNNNNN.D... C.ZZZZZZZ. D.. podem n˜o queimar-se completamente na atmosfera e dessa a a forma atingem a superf´ terrestre: nesse caso s˜o chamados de meteoritos.. X2 e Y2.. Ele precisa de sua ajuda para escrever um programa de computador que fa¸a essa verifica¸ao automaticamente.S.. onde cada ponto corresponde ` posi¸ao a c˜ onde caiu um meteorito. Se os meteoros o s˜o suficientemente grandes.. 10 10 DDDDD. CBXXVCVV. Sua tarefa ´ a e escrever um programa que determine quantos meteoritos ca´ ıram dentro da fazenda (incluindo meteoritos que ca´ ıram exatamente sobre as linhas que delimitam a fazenda). D. CCXXCCVV. S.ZNNNNNN. Pedro Kantek 88-08.. A segunda linha cont´m um inteiro. as coordenadas de um retˆngulo que delimita uma fazenda...C.V.. ao penetrar na atmosfera terrestre.. e conhecendo a localiza¸ao de sua fazenda..161 C... Pedro Kantek 544 vers˜o de 10 de fevereiro de 2008 a .... correspondendo `s coordenadas de cada meteorito. queimam-se o rapidamente (normalmente a uma altura entre 60 e 120 quilˆmetros).XX. D.BN. N. D. .V.. DDDDD... Seguem-se N linhas...XX. Exemplo de Sa´da ı 1 e 2 (esta sa´da corresponde ao exemplo de entrada acima) ı 30 2 54.. BBXXBBBB. .Z.DTFTH.. Pedro Kantek 54. . .... Pedro Kantek . IZZWWIWW.. 10 10 IIIIII.161 5 6 17 15 0 0 0 0 Responda aneis1 aneis2 balaio1 balaio2 met1 met2 54.TTT.D VZVD...CL.CL.. C.F.. . . IZVDDDDDDD IIIDII.... EXERC´ ICIO PRATICO .I.D ...D. ......III.. .TNT.... ..5 Exerc´ ıcio 2 Aneis quadrados 10 10 .L.. ..Y..DTFTH.D...DTTTFFF.ZZDDDDDDD .. ...I. ..L.Z..... CCLLLLLL.L.LLLLLL.W....F. .6 Exerc´ ıcio 3 Aneis quadrados 10 10 .... YIOOOOOOL..W... .MM. . .L.I... .161 ´ CAP´ ITULO 54........YRRRRMYMM CYMMMRMYMM CYRRRRCY.IIMM. CYYYYYYY.L. 0 0 Balaio 7 3 3 2 1 5 5 3 18 21 69 82 39 72 28 7 4 2 1 4 4 5 5 68 72 72 95 78 59 70 0 Meteoros 6 6 17 23 18 7 30 8 2 6 27 13 7 27 6 28 2 13 545 88-08... .L. C.. YIOOOOOOL..L. EXERC´ ICIO PRATICO .F..D VZVDWWWW.. .´ CAP´ ITULO 54.I.LLLLLL..... IVVW.......DDDDDDD.L. . 10 10 .....DTFTFFF..L..D VVVD....DTFTH...D.L.. 0 0 Balaio 25 28 10 22 26 30 27 21 26 9 7 1 1 5 2 5 4 3 49 87 28 62 84 39 14 7 4 2 3 4 5 4 4 11 12 58 63 34 27 79 0 29 3 Meteoros 5 6 25 15 12 1 546 vers˜o de 10 de fevereiro de 2008 a 28 21 1 vers˜o de 10 de fevereiro de 2008 a 88-08..YYYYYYY. ..YL..W.D... I.KVK..KVK. OMISSM. V. .161 Responda aneis1 21 5 54. V.. VVVVSSSSS.´ CAP´ ITULO 54.I.8 1 2 3 4 Respostas NZDFB 133 116 DIVWZ 39 127 TFDHN 63 23 MOSIF 50 53 5 3 5 4 5 4 4 4 XSCVB YRMLC OMIYL KVSHU 547 88-08..V.KKK.. OMOOOMOOO.IO..M.. EXERC´ ICIO PRATICO ..I. V. V...S.S. V. V... EXERC´ ICIO PRATICO .... OMI..M..M.KKKUUUS. ... Pedro Kantek 88-08..S. 0 0 Balaio 7 3 5 4 5 3 3 4 22 63 58 96 96 78 28 vers˜o de 10 de fevereiro de 2008 a Responda aneis1 balaio1 balaio2 met1 met2 54.MMMMM.S.7 Exerc´ ıcio 4 Aneis quadrados 10 10 VVVV.. . Pedro Kantek 548 vers˜o de 10 de fevereiro de 2008 a .I..KVK..161 15 20 15 30 1 6 3 13 23 30 5 7 0 0 0 8 26 20 12 24 30 0 aneis2 balaio1 balaio2 met1 met2 6 13 24 13 25 7 5 1 5 4 2 3 3 78 74 50 36 72 17 84 0 25 4 Meteoros 7 6 11 11 26 4 8 2 1 6 22 21 15 29 4 18 0 0 0 3 25 12 16 19 14 0 aneis2 12 8 21 27 16 16 28 22 27 10 ´ CAP´ ITULO 54.. V..SVSSSSS.IO.. 10 10 OOOOOOOOO.. V.IO.MI.. . OMMMMMIIO. OMI..IIIIII.SVUUUUS.... obedecendo e ıvel c ue as regras do jogo de domin´. em metros contados a partir do in´ da praia (U < V.2 Sorvete Cap´ ıtulo 55 Exerc´ ıcios pr´ticos . EXERC´ ICIOS PRATICOS . alguns dias acontece de nenhum sorveteiro passar pelo local onde eles est˜o. Seguem-se S linhas. 1 4 . e a Exemplo de Sa´da ı 110 180 . 10 1000 . Jo˜ozinho conseguiu e a a ainda a informa¸ao dos pontos de in´ c˜ ıcio e fim da regi˜o percorrida por cada um dos a sorveteiros. nao e sim (esta sa´da corresponde ao exemplo de entrada acima) ı 55. de forma que pelo menos um sorveteiro passe naquele local. 0 1 2 .1 Domin´ o Todos conhecem o jogo de domin´s. As N linhas seguintes contˆm. 5 6 0 0 Sa´ Para cada conjunto de teste da entrada seu programa deve indicar O MAIOR ıda ´ intervalo cont´ ıguo de praia que ´ servido por um sorveiteiro. cada sorveteiro percorre todos os dias a mesma regi˜o. 2 1 . Jo˜ozinho quer descobrir os locais da praia onde o pai dele a deve parar o carro. e. 4 1 . P e S. 0 0 . Entrada Seu programa deve ler v´rios conjuntos de teste. Cada pe¸a tem dois valores X e Y. 400 1000 10 2 . Pedro Kantek 550 vers˜o de 10 de fevereiro de 2008 a . e instala sua fam´ em um ponto ılia na praia em frente ao carro. seguindo seu senso art´ a ıstico. o Entrada A entrada ´ composta de v´rios conjuntos de teste. mas enquanto estuda procura trabalhos tempor´rios a a durante suas f´rias escolares. E obvio que se s´ houver e o um intervalor. que indicam respectivamente e a o comprimento em metros da praia e o n´ mero de sorveteiros. 110 180 1000 3 . 3 0 0 de Entrada (horizontalizado) . c o c com X e Y variando de 0 a 6 (X pode ser igual a Y). cada u uma contendo dois n´ meros inteiros U e V que descrevem o intervalo de trabalho de u cada um dos sorveteiros. 2 1 . e a a a est´ pedindo a sua ajuda.162 Exemplo de Sa´da ı sim. a Al´m disto. 1 6 . 0 6 . O final da entrada ´ indicado por N = 0. a a 549 Joana quer ser artista pl´stica. c e Exemplo 3 . 0 21 . este ´ que ser´ a resposta. a e ` Eles freq¨ entam sempre a mesma praia. 88-08. O objetivo desta tarefa ´ determinar se ´ poss´ colocar todas as pe¸as e e ıvel c de um conjunto dado em uma forma¸ao v´lida. e n˜o querendo mais ficar sem tomar seu sorvete semanal. onde ficou sabendo que a e c˜ cada sorveteiro passa o dia percorrendo uma mesma regi˜o da praia. em que pe¸as com dois valores devem ser colocadas o c na mesa em seq¨ˆncia.´ CAP´ ITULO 55. a descri¸ao de uma pe¸a. e Jo˜ozinho est´ pensando se seria poss´ utilizar e a a ıvel o computador para ajud´-lo nesta tarefa. cada uma. 0 ≤ U ıcio ≤ P e 0 ≤ V ≤ P). Intrigado com isto. A transportadora recebeu um enorme carregamento de caixas de mesma altura mas com largura e profundidades diferentes. S´ que o o volume de dados ´ muito grande. a Tarefa Vocˆ deve escrever um programa que leia os dados obtidos pelo Jo˜ozinho e e a imprima uma lista de intervalos da praia por onde passa pelo menos um sorveteiro. No entanto Jo˜ozinho n˜o sabe programar. 2 3 55. mas cada semana o pai de Jo˜ozinho estaciona u a o carro em um local diferente ao longo da praia. Sua tarefa ´ escrever um programa e que determine se ´ poss´ organizar todas as pe¸as recebidas em seq¨ˆncia. Contudo. e adora de tomar sorvete na a e a praia. e Exemplo de Entrada (horizontalizada) 200 2 . indo e voltando. 0 0 . Jo˜ozinho ´ muito comil˜o. O final da entrada ´ indicado por S=0 e P=0. Uma e c˜ c pe¸a ´ descrita por dois inteiros X e Y (0 ≤ X ≤ 6 e 0 ≤ Y ≤ 6) que representam os c e valores de cada lado da pe¸a. a a Jo˜ozinho foi at´ a Associa¸ao dos Sorveteiros da Praia (ASP). Com base nestes dados. A primeira linha de e a um conjunto de testes cont´m um n´ mero inteiro N que indica a quantidade de pe¸as e u c do conjunto. Joana ´ a e ` c˜ e respons´vel por armazenar o carregamento de caixas.162 a 55. A primeira linha de um a conjunto de teste cont´m dois inteiros n˜o negativos. c˜ a Jo˜ozinho ´ um menino que costuma ir a praia todos os finais de semana com seus pais. de tal forma que os valores de pe¸as imediatamente vizinhas ue c sejam iguais.3 Pirˆmide a Sa´ ıda Para cada conjunto de teste da entrada seu programa deve produzir a express˜o ”sim”se for poss´ a ıvel organizar todas as pe¸as em uma forma¸ao v´lida ou a c c˜ a express˜o ”nao”caso contr´rio. Joana conseguiu emprego como auxiliar de almoxarifado e em uma grande transportadora. 1 1 6 . 1 4 (esta sa´da corresponde ao exemplo acima) ı ´ Tarefa E dado um conjuto de pe¸as de domin´. 80 200 . As caixas podem ser empilhadas indefinidamente mas n˜o podem ser deitadas em outra posi¸ao (todas a c˜ tˆm que ser armazenadas obedecendo a indica¸ao ”Este lado para cima”). 10 400 . 2 6 . Entrada A entrada c˜ ´ composta de v´rios conjuntos de teste. 9 8.17 2. 1 5. cada uma. 0 7 . 3 13. 4 9. 7 5 .19 4. 2 8.270 310 6 .1 5.200 220. 8 12.162 quer construir com as caixas a pilha mais alta poss´ na forma de uma ”pirˆmide”.110 120 6. c e Exemplo de Entrada (horizontalizada) 3 .3 4 .5 2.100 260 Pirˆmide de caixas a 5 . 3 4 . 0 2.1 1.´ CAP´ ITULO 55.6 4 . 0 8 .4 3.280 370.0 2. uma pilha constru´ de tal forma que uma caixa A ´ empilhada sobre uma outra ıda e caixa B somente se as dimens˜es de A (largura e a profundidade) n˜o s˜o maiores do o a a que as dimens˜es de B (as caixas podem ser viradas de forma a trocar a profundidade o com a largura).3 1.150 190. 0 8 .4 4. 7 2 .180 200.1 2. 9 6 . 6 0. 80 150.11 13.4 6.15 1 .5 5. 3 5.6 1. 1 17 .0 6 .11 20. 0 8 . 10 2 0 Sa´ Para cada conjunto de teste da entrada seu programa deve produzir o n´ mero ıda u m´ximo de caixas que podem ser empilhadas na forma de uma pirˆmide. A primeira linha de um conjunto de testes e a cont´m um n´ mero inteiro N que indica a quantidade de caixas do conjunto.390 500.4 6.11 Responda d1 d2 d3 3 . 1000 2000 .2 6.170 280.0 2.460 650 5.6 4 .380 460.3 0. 3 3.1 1.18 7 . 40 170. EXERC´ ICIOS PRATICOS .1 4.6 Domin´ o Exerc´ ıcio 3 6 .210 380.0 3 .4 0. 8 4.15 12 . 1 1. 4 0.4 Domin´ o Exerc´ ıcio 1 55. 3 7.6 6. 480 540.11 12 . 19 14. a descri¸ao de uma caixa. 1 7 .0 2.200 210.280 300.4 5.3 1. 250 410 5.6 1. 0 9.16 8. 0 Sorvete 930 970 750 0 0 4. 0 s1 s2 s3 p1 p2 p3 Responda d1 d2 d3 s1 s2 s3 p1 p2 p3 vers˜o de 10 de fevereiro de 2008 a 551 88-08.13 19.18 17.6 6.230 320. 9 8. 5 7 .470 640.200 250.19 7.220 410.280 450.220 390. 3 4. 1 2.14 6 . 8 2.350 430. 6 7.150 180.220 270. 5 15.0 4. 0 Sorvete 960 790 780 0 0 4. 0 6.5 0. O final da entrada ´ indicado por N = 0.0 2.280 350 6. 4 (esta sa´da corresponde ao exemplo de entrada acima) ı ´ CAP´ ITULO 55.13 20.240 420. 0 3. 5 8.16 7 .170 220 5.0 5. 0 7 .340 430. 1 2 .200 390.6 1. 2000 500 6 .3 1.360 390.1 4.6 6.13 19. 380 550. 100 100 .6 4.0 6. Pedro Kantek 552 vers˜o de 10 de fevereiro de 2008 a . 18 6 .3 4 . Vocˆ pode ajud´-la? e a ´ Tarefa E dado um conjuto de caixas de mesma altura mas com largura e profundidades diferentes.1 0.360 460. 1 12 . 0 Sorvete 1000 770 580 0 0 4. 5 19.1 3.160 240. 13 17.1 4.5 3. 0 Pirˆmide de caixas a 5 .130 200. 20 8. conforme a a determinado pelo seu programa. 1 3. 8 14. 2 7.290 310 6.250 400. 5 10. Uma caixa ´ descrita por e c˜ e dois inteiros X e Y (1 ≤ X ≤ 15000 e 1 ≤ Y ≤ 15000) que representam os valores de cada lado da pe¸a.3 5.220 410. 2 6 . As N e u linhas seguintes contˆm. 1 0. 50 70. Pedro Kantek 88-08. 70 170.150 310 Pirˆmide de caixas a 5 . EXERC´ ICIOS PRATICOS .14 5. 0 s1 s2 s3 p1 p2 p3 55. Sua tarefa ´ escrever um programa que determine qual a pilha de e caixas mais alta que Joana pode construir com as restri¸oes acima.12 20. 0 5.14 6. 0 6. 0 7 . 7 10.4 1. 4 1.4 5.2 0 .18 11.230 270. Exemplo de Sa´da ı 3 . 11 4. 3 19. 100 120.4 5.162 55.5 Domin´ o Exerc´ ıcio 2 6 . 1 5 . ou ıvel a seja. 2 Responda d1 d2 d3 5.2 1. 4 4 .3 1.3 1 .6 5. 8 1 2 3 4 0 0 1 0 Respostas 1 0 1 0 0 0 0 1 130 250 170 100 380 550 410 270 340 80 280 20 500 190 430 330 200 40 70 40 460 390 460 220 3 3 3 3 4 2 4 3 5 5 5 1 vers˜o de 10 de fevereiro de 2008 a 553 88-08.150 250. 0 8 .2 4.4 1 .0 5.10 5.190 200.4 3.´ CAP´ ITULO 55.1 4.100 270.2 3. 5 8.410 460 5.320 430.4 3.1 1. 10 6 .162 55. Pedro Kantek . 0 8. 1 16.6 3.11 14. 9 15. 1 12 .2 1 .11 13.250 330 6.6 2. 0 s1 s2 s3 p1 p2 p3 Responda d1 d2 d3 55.250 270.370 560.7 Domin´ o Exerc´ ıcio 4 6 . 0 Sorvete 870 770 920 0 0 4. 90 180 Pirˆmide de caixas a 5 .13 3. 3 4. 6 10 .0 2. 1 12.440 450.0 2.190 250. 0 7 .4 3. 2 4.5 4.4 6.350 460.18 3. 4 5. 5 8 . EXERC´ ICIOS PRATICOS . 9 9.6 3. 6 16. 1 7 .4 3 .170 220. 20 220. 7 14.18 4. 40 190. 0 4.