Sei sulla pagina 1di 553

Pedro Kantek

Algoritmos

Unicenp Jul/07, dez/07 Curitiba

verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

Sumrio a
1 Contrato Pedaggico o 2 Cincia da Computao e ca 2.1 Representao do conhecimento . . . . . ca 2.2 Algoritmo . . . . . . . . . . . . . . . . . 2.2.1 Qualidades de um bom algoritmo 2.2.2 Como se escreve um algoritmo . 2.3 Portugol . . . . . . . . . . . . . . . . . . 2.4 Programao Estruturada . . . . . . . . ca 2.5 A mquina de Turing . . . . . . . . . . a 2.6 Linguagens de programao . . . . . . . ca 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 Variveis . . . . . . . . . . . a 3.2.1 Tipos de variveis . a 3.2.2 Cdigo de caracteres o 3.3 Comando de atribuio . . ca 3.4 Expresses . . . . . . . . . . o 3.4.1 Aritmticas . . . . . e 3.4.2 Relacionais . . . . . 3.4.3 Lgicas . . . . . . . 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

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . . 3

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

SUMARIO 4 Comandos 4.1 Viso Top down e Bottom up . . . . . . . . . . . . a 4.2 Seqncia de execuo . . . . . . . . . . . . . . . . ue ca 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 repetio . . . . . . . . . . . . . . . ca 4.5.1 Repetio com condio no in ca ca cio: enquanto 4.5.2 Repetio com varivel de controle: para . ca a 4.5.3 Repetio com condio no nal: repita . . ca ca 4.5.4 Comando de mltipla escolha: Escolha . . . u 4.5.5 Abandono de iterao: abandone . . . . . . ca 75 75 75 76 76 77 77 77 78 78 83 83 84 86 96 97

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

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 zes por Newton-Raphson 6.2.3 Depurao de algoritmos . . . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 109 114 116 117 118

7 Modularizao: funes ca co 119 7.1 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 co 7.1.1 Variveis globais e locais . . . . . . . . . . . . . . . . . . . . . . . . 120 a 8 Vetores e Matrizes 8.1 Denio de Vetor . . . . . . . . . . . . ca 8.1.1 Origem dos ndices . . . . . . . . 8.2 Operaes Bsicas . . . . . . . . . . . . co a 8.3 Ordenao . . . . . . . . . . . . . . . . . ca 8.4 Operaes fundamentais na Informtica co a 8.5 Tabelas . . . . . . . . . . . . . . . . . . 8.6 Merge (intercalao) de dois vetores . . ca 8.7 Pesquisa seqencial . . . . . . . . . . . . u 8.8 Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 . 123 . 124 . 125 . 129 . 130 . 133 . 135 . 137 . 149

9 Registros 157 9.1 Denio de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 ca 9.2 Processamento de Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 9.2.1 Calendrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 a 10 Exerc cios prticos: 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

verso de 10 de fevereiro de 2008 a

SUMARIO 10.6 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 11 Exerc cios Prticos: 004-Introduo a ca 11.1 Algoritmos . . . . . . . . . . . . . . . . . . . 11.1.1 Mximo Divisor Comum . . . . . . . . a 11.1.2 Algoritmo do Mximo 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 prtico: 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 Prtico: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 Exerc cio Prtico: 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 . . . . . . . . .
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

SUMARIO 14.1.7 Problema 7 . 14.1.8 Problema 8 . 14.1.9 Problema 9 . 14.1.10 Problema 10 14.1.11 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 prtico: 009-Achar o a 15.1 Qual o nmero 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 Prticos: 011 - Matemtica 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 . . . . . . . . . . . .

Lgica Bsicas o a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . encadeados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17 Exerc cios Prticos: 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

verso de 10 de fevereiro de 2008 a

SUMARIO 17.2.6 Exerc 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 cio 17.2.7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 18 Exerc cios Prticos: 018-FLuxogramas a 18.1 Exerc cios de Fluxos e Pseudocdigo . 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

Prticos: 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 prticos: 021 - 5 funes a co 20.1 Funes numricas . . . . . . . . . co e 20.1.1 Exerc 1 . . . . . . . . . cio 20.1.2 Exerc 2 . . . . . . . . . cio 20.1.3 Respostas . . . . . . . . . .

21 Exerc cios Prticos: 024 -DVs a 21.1 D gitos Vericadores . . . . . . . . . . . . 21.1.1 Mdulo 10 . . . . . . . . . . . . . . o 21.1.2 Mdulo 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 Prticos: 027 - aritmtica a e 22.1 Aritmtica no 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 . . . . . . . . . . .

no decimal a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23 Exerc cios Prticos: 031 - Manipulao de datas a ca 23.1 Algoritmos de Calendrio . . . . . . . . . . . . . . a 23.1.1 Clculo do dia da semana . . . . . . . . . . a 23.1.2 Clculo dos feriados mveis . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . .
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

SUMARIO 24 Exerc cios Prticos: 035 - Localizao de oleoduto a ca 24.1 Localizao de oleoduto . . . . . . . . . . . . . . . . ca 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 Prticos: 054 - Kumon de a 25.1 Treinamento bsico em Algoritmos . a 25.2 Exerc 1 . . . . . . . . . . . . . . cio 25.3 Exerc 2 . . . . . . . . . . . . . . cio 25.4 Exerc 3 . . . . . . . . . . . . . . cio 25.5 Respostas . . . . . . . . . . . . . . . 26 Exerc cios Prticos: a 26.1 Por exemplo . . . 26.2 Exerc 1 . . . cio 26.3 Exerc 2 . . . cio 26.4 Exerc 3 . . . cio 26.5 Respostas . . . . algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

057 - Continuar sequncias e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

27 Exerc cios Prticos: 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 Prticos: a 28.1 Exerc 1 . . . cio 28.2 Exerc 2 . . . cio 28.3 Exerc 3 . . . cio 28.4 Respostas . . . . 29 Exerc cios Prticos: 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 Prticos: 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 . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

327 . 327 . 330 . 334 . 338 339 . 339 . 341 . 343 . 346 . 348 349 349 352 353 353 354 354

algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

073 - achar o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

dcimo e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

termo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

verso de 10 de fevereiro de 2008 a

SUMARIO 31 Exerc cios Prticos: 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

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

32 Exerc cio Prtico: 084 Balance LIne a 363 32.1 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 33 Exerc cios Prticos: a 33.1 Exerc 1 . . . cio 33.2 Exerc 2 . . . cio 33.3 Exerc 3 . . . cio 33.4 Respostas . . . . 110 - indexao e indireo ca ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 370 372 374 376 377 377 380 380 380 381 383 386 386 386 387

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

34 Exerc cios Prticos: 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 Prtico: 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

36 Exerc cios Prticos: 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 Prticos: a 37.1 Exerc 1 . . . cio 37.2 Exerc 2 . . . cio 37.3 Exerc 3 . . . cio 37.4 Exerc 4 . . . cio 37.5 Respostas . . . .
verso de 10 de fevereiro de 2008 a

125a - Correo de algoritmos ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125b - Correo ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 de . . . . . . . . . . algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

389 . 389 . 393 . 396 . 400 . 404 405 . 405 . 409 . 412 . 416 . 419

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

88-08, Pedro Kantek

SUMARIO 38 Exerc cios Prticos: 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 - Correo de algoritmos ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Correo de Algoritmos ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 421 425 429 433 437 439 439 442 446 449 452 453 456 456 457 457 457

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

39 Exerc cios Prticos 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 Prticos: 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 prticos: a 41.1 Exerc 1 . . . cio 41.2 Exerc 3 . . . cio 41.3 Exerc 4 . . . cio

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

42 Exerc cios prticos: 139 - Ostras a 42.1 A fazenda de ostras de Zing Zhu . . . . . 42.1.1 Resolvendo... . . . . . . . . . . . . 42.1.2 Truques usados na implementao ca 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 prticos: 144 - romanos a 43.0.1 Converso de romano para arbico a a 43.0.2 Converso de arbico 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 Prticos: 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

. . . . . . . .

. . . . . . . .

. . . . . . . .

10

verso de 10 de fevereiro de 2008 a

SUMARIO 44.8 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 45 Exerc cios Prticos: a 45.1 A Piscina . . . . 45.2 Exerc 1 . . . cio 45.3 Mgico . . . . . . a 45.4 Exerc 1a . . . cio 45.5 Exerc 2 . . . cio 45.6 Exerc 2a . . . cio 45.7 Exerc 3 . . . cio 45.8 Exerc 3a . . . cio 45.9 Respostas . . . . 151 - diversos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 485 486 487 488 488 489 489 489 490 491 491 491 492 493 494 494 495 497 497 499 500 500 500 501

46 Exerc cios Prticos: 152 - Regata de cientistas e Luzes da Festa a 46.1 Exerc 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cio 46.2 Regata de cientistas . . . . . . . . . . . . . . . . . . . . . . . . . . . 46.3 Iluminao da festa . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca 46.4 Exerc 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cio 46.5 Exerc 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cio 46.6 Exerc 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . cio 46.7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Exerc cios prticos: 153a - Jogo do Retngulo a a 47.1 Jogo do retngulo . . . . . . . . . . . . . . . . . a 47.2 Exerc 1 . . . . . . . . . . . . . . . . . . . . cio 47.3 Exerc 2 . . . . . . . . . . . . . . . . . . . . cio 47.4 Exerc 3 . . . . . . . . . . . . . . . . . . . . cio 47.5 Exerc 4 . . . . . . . . . . . . . . . . . . . . cio 47.6 Respostas . . . . . . . . . . . . . . . . . . . . . 48 Exerc cios Prticos: a 48.1 Exerc 1 . . . cio 48.2 Exerc 2 . . . cio 48.3 Exerc 3 . . . cio 48.4 Exerc 4 . . . cio 48.5 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

155a - Caminhos no tabuleiro e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Descarga do vulco503 a . . . . . . . . . . . 503 . . . . . . . . . . . 506 . . . . . . . . . . . 507 . . . . . . . . . . . 508 . . . . . . . . . . . 509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 511 512 514 514 515 515 516 517 517 518 519 519 520 521

49 Exerc cio prtico: 156 - Genoma e Palavras Cruzadas a 49.1 Projeto Genoma . . . . . . . . . . . . . . . . . . . . . . 49.2 Palavras Cruzadas . . . . . . . . . . . . . . . . . . . . . 49.3 Exerc 1 . . . . . . . . . . . . . . . . . . . . . . . . . cio 49.4 Exerc 2 . . . . . . . . . . . . . . . . . . . . . . . . . cio 49.5 Exerc 3 . . . . . . . . . . . . . . . . . . . . . . . . . cio 49.6 Exerc 4 . . . . . . . . . . . . . . . . . . . . . . . . . cio 49.7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Exerc cio prtico 157 a 50.1 Trem ou Caminho? a 50.2 RoboCoee . . . . . 50.3 Restaurante . . . . . 50.4 Exerc 1 . . . . . cio 50.5 Exerc 2 . . . . . cio 50.6 Exerc 3 . . . . . cio
verso de 10 de fevereiro de 2008 a

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . . 11

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

88-08, Pedro Kantek

SUMARIO 50.7 Exerc 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 cio 50.8 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 51 Exerc cio prtico a 51.1 Seqncias . . ue 51.2 Carga Pesada 51.3 Rede tica . . o 51.4 Exerc 1 . cio 51.5 Exerc 2 . cio 51.6 Exerc 3 . cio 51.7 Exerc 4 . cio 51.8 Respostas . . 52 Exerc cio prtico a 52.1 Quermesse . . 52.2 Bits Trocados 52.3 Saldo de gols 52.4 Exerc 1 . cio 52.5 Exerc 2 . cio 52.6 Exerc 3 . cio 52.7 Exerc 4 . cio 52.8 Respostas . . 53 Exerc cio prtico a 53.1 Macaco-prego 53.2 MASP . . . . 53.3 Exerc 1 . cio 53.4 Exerc 2 . cio 53.5 Exerc 3 . cio 53.6 Exerc 4 . cio 53.7 Respostas . . 158 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 523 523 524 525 526 527 527 528 529 529 530 530 531 532 532 533 534 535 535 536 537 538 539 540 540 541 541 542 543 543 545 546 547 548 549 549 550 550 551 552 552 553 553

159 . . . . . . . . . . . . . . . . . . . . . . . . 160 . . . . . . . . . . . . . . . . . . . . .

54 Exerc cio prtico - 161 a 54.1 Anis quadrados . . e 54.2 Balaio . . . . . . . . 54.3 Meteoros . . . . . . 54.4 Exerc 1 . . . . . cio 54.5 Exerc 2 . . . . . cio 54.6 Exerc 3 . . . . . cio 54.7 Exerc 4 . . . . . cio 54.8 Respostas . . . . . .

55 Exerc cios prticos - 162 a 55.1 Domin . . . . . . . . o 55.2 Sorvete . . . . . . . . 55.3 Pirmide . . . . . . . . a 55.4 Exerc 1 . . . . . . cio 55.5 Exerc 2 . . . . . . cio 55.6 Exerc 3 . . . . . . cio 55.7 Exerc 4 . . . . . . cio 55.8 Respostas . . . . . . .

88-08, Pedro Kantek

12

verso de 10 de fevereiro de 2008 a

Cap tulo 1

Contrato Pedaggico o
Regras da disciplina Uma aula dupla tem 100 minutos, que sero em princ assim divididos: 10 minutos a pio para os bons dias, 30 minutos de teoria, 30 de apresentao do exerc prtico e mais ca cio a 30 minutos para os alunos fazerem o seu exerc cio. Cada aluno vai receber um exerc individual e unico. cio O exerc dever ser devolvido feito at a data escrita na prpria folha do exerc cio a e o cio. Se entregue atrasado pagar 50% da nota de multa. Em outras palavras, a nota do a exerc ser dividida por 2. cio a No haver segunda chamada de exerc a a cios perdidos. No sero aceitos xerox, fax ou e-mail de exerc a a cios. Apenas o exerc original que cio contiver o nome do aluno ser aceito. Se o aluno quiser (alguns querem), tire cpia a o xerox do exerc para guardar a coleo deles. Entretanto, todo exerc entregue ao cio ca cio professor ser corrigido e devolvido ao aluno. a A nota bimestral ser obtida fazendo a mdia aritmtica dos exerc a e e cios do bimestre, com peso de 60% e a prova bimestral, esta com peso 40%. As provas tambm so individuais e diferentes para cada aluno. e a Exerc cios Individuais Cada exerc tem um identicador unico, chamado seqncia com as seguintes inforcio ue maes: aaLGM101, que deve ser assim interpretada: [aa] Ano atual;[LG] disciplina co de Algoritmos; [M ou N] Turno;[1] 1o bimestre do ano letivo [01] Primeiro exerc deste cio bimestre;

Algoritmo da raiz quadrada


cdigo: 3 o nalizado em 12/11/07 Implementa o algoritmo (antigamente aprendido no inicio do ciclo fundamental, hoje no mais) que permite calcular ` mo a raiz quadrada. E um processo razoavelmente a a a complexo e ele permite vivenciar exatamente o que um algoritmo faz.

Introduo a algoritmos ca
cdigo: 4 o nalizado em 20/12/05 13

CAP ITULO 1. CONTRATO PEDAGOGICO Apresenta os conceitos de diviso inteira e resto e a seguir pede para analisar o algoa ritmo de mdc (mximo divisor comum) devido a Euclides (aprox 400aC). Alm disso, o a e exerc pede um algoritmo de uma tarefa trivial do dia a dia do aluno. cio

Jogo da vida
cdigo: 6 o nalizado em 23/10/07 Um exercicio simples, no qual o Jogo da Vida (Conway, 1970) apresentado e so feitos e a comentrios sobre a sua importncia na Cincia da Computao. As 4 regras do jogo a a e ca so apresentadas e depois dado um tabuleiro 10 10. Pede-se ao aluno que simule 4 a e geraes e informe depois como caram 4 clulas do tabuleiro especialmente escolhidas. co e O objetivo do exerc divertir e depois trabalhar ainda informalmente os conceitos cio e de: matriz, algoritmo, iterao, entre outros. ca

GPS: Global Positioning System


cdigo: 7 o nalizado em 02/01/06 Este exerc cio comea descrevendo o acidente do avio VARIG 254 que se perdeu no c a Mato Grosso achando estar no Par. A seguir o princ de funcionamento dos sistemas a pio GPSs mostrado. Uma simulao em 2D pedida ao aluno, usando-se caracter e ca e sticas da f sica e operaes da geometria anal co tica.

Problemas introdutrios o
cdigo: 8 o nalizado em 29/08/06 Apresenta 2 questes comuns sobre regras de nomes de variveis e tipos de varivel a o a a usar em determinados algoritmos. Depois gera uma coleo de 10 exerc ca cios matemticos a individuais sobre racioc nio. A resposta sempre um nmero. e u

Achar um n mero em uma sequencia u


cdigo: 9 o nalizado em 12/12/07 So mostradas 30 sequencias de 11 nmeros cada. A lei de formao no est explicitada a u ca a a e deve ser descoberta pelo aluno. Um dos 11 nmeros est faltando e o aluno precisa u a descobrir qual . Os nmeros buscados so somados de 3 em 3 para facilitar a correo. e u a ca Este exerc cio nasceu de uma inspirao obtida olhando os exerc ca cios da Olimp ada Brasileira de Informtica. a

Matemtica e lgica bsicas a o a


cdigo: 11 o nalizado em 01/09/06 60 exerc cios (30 de matemtica e 30 de lgica) so apresentados ao aluno. Ele deve a o a achar 10 respostas (cada grupo de 6 exerc cios tem suas respostas somadas. Isto facilita a correo). ca
88-08, Pedro Kantek

14

verso de 10 de fevereiro de 2008 a

CAP ITULO 1. CONTRATO PEDAGOGICO

SEs compostos e encadeados


cdigo: 17 o nalizado em 28/01/06 6 exerc cios (funes) nos quais 6 valores numricos aleatrios so fornecidos no in co e o a cio. A seguir uma srie de comandos alternativos (SE) tanto compostos como encadeados, e usando os conectivos (e), (ou) e (no). Depois pede-se o resultado da soma de 5 a variveis. a

Pseudocdigo X Fluxograma o
cdigo: 18 o nalizado em 05/05/07 8 trechos de programa so apresentados atravs de um uxograma e atravs do pseua e e docdigo equivalente. Entretanto, em alguns desses 8 trechos ambos so equivalentes o a e em alguns outros trechos houve uma sutil alterao ou no uxograma ou no pseuca docdigo de maneira que ambos deixaram de ser equivalentes. O aluno deve investigar o quais dos 8 trechos so efetivamente equivalentes. a

Pseudocdigo X Diagramas de Nassi-Schneidermann o


cdigo: 18 o nalizado em 05/05/07 8 trechos de programa so apresentados atravs de um diagrama de Nassi-Schneidermann a e e atravs do pseudocdigo equivalente. Entretanto, em alguns desses 8 trechos ambos e o so equivalentes e em alguns outros trechos houve uma sutil alterao ou no diagrama a ca ou no pseudocdigo de maneira que ambos deixaram de ser equivalentes. O aluno deve o investigar quais dos 8 trechos so efetivamente equivalentes. a

Chines de funes simples co


cdigo: 21 o nalizado em 03/04/06 So apresentadas 5 funes de mesma estrutura com at 3 n a co e veis de IFs encadeados. No h ainda estruturas de repetio. As funes inicializam as variveis A, B e C no a a ca co a comeo, e ao nal, o exerc c cio pergunta qual o valor de uma delas (que seguramente mudou de valor durante o processamento).

D gitos vericadores
cdigo: 24 o nalizado em 04/02/01 Mostra-se a importncia dos DVs e depois mostra-se os algoritmos de clculo do CPF e a a do CNPJ. O aluno deve calcular os DVs de 2 CPFs e de 2 CNPJs.

Aritmtica no decimal e a
cdigo: 27 o nalizado em 28/11/01 E mostrada uma generalizao da aritmtica para bases no decimais, variando entre ca e a base = 3 e base = 33, excetuando-se as bases 2, 10 e 16. Converses, somas e subtraes o co nestas bases so pedidas. a
verso de 10 de fevereiro de 2008 a

15

88-08, Pedro Kantek

CAP ITULO 1. CONTRATO PEDAGOGICO

Clculo de calendrios a a
cdigo: 31 o nalizado em 25/02/02 Mostra o algoritmo de Aloysius Lilius e Cristopher Clavius do sculo XVI para calcular e o Domingo da Pscoa, do qual decorrem todos os feriados mveis de nosso calendrio: a o a Carnaval, Sexta da Paixo e Corpus Christi. Alm de mostrar a distribuio de bissextos, a e ca o exerc mostra o clculo de qualquer dia da semana. Finalmente, o exerc sugere cio a cio um ano hipottico (entre 1600 e 2400) e pede que o aluno calcule o dia da semana de e um dia qualquer e os 3 feriados mveis deste ano o

Localizao de um oleoduto ca
cdigo: 35 o nalizado em 27/12/02 9 poos de petrleo so dispostos sobre uma grade de 100m 100m. Pede-se que o aluno c o a calcule de que maneira lig-los atravs de tubos de maneira a minimizar a quantidade a e de tubos usados. Exerc extra do livro do Cormen, pg 155 da edio brasileira. cio do a ca

Kumon de algoritmos
cdigo: 54 o nalizado em 23/06/06 Esta folha para treinar os comandos bsicos de algoritmos (se, enquanto, repita e e a para). So 17 exerc a cios simples, de apenas um unico comando cada um deles.

Gerao de sequncias ca e
cdigo: 57 o nalizado em 30/12/05 Neste exerc so apresentadas 8 funes que contm laos (loops). Na parte nal de cio a co e c cada lao h a impresso de uma varivel. O exerc c a a a cio mostra os primeiros 4 valores impressos e pede que o aluno ache o oitavo elemento impresso. Otimo exerc para ser cio implementado.

Engenharia reversa de algoritmos


cdigo: 62 o nalizado em 31/01/06 Este exerc mostra 4 funes. Em cada uma h 3 variveis, cujos valores so inicialcio co a a a izados no comeo. Mas, apenas 2 destes valores so mostrados ao aluno, cabendo a ele, c a descobrir qual a inicializao da terceira varivel a partir do comportamento da funo ca a ca e dos resultados que ela gera ao ser executada.

Funes envolvendo se, enquanto e repita co


cdigo: 65 o nalizado em 20/04/06 Este exerc gera 4 funes razoavelmente complexas, nas quais se misturam comandos cio co se, enquanto e repita, alm de um conjunto de cerca de 15 variveis em cada funo. e a ca O aluno deve seguir o uxo e informar ao nal qual o valor que ser impresso. E um a convite ` implementao. a ca
88-08, Pedro Kantek

16

verso de 10 de fevereiro de 2008 a

CAP ITULO 1. CONTRATO PEDAGOGICO

Chines de algoritmos II
cdigo: 69 o nalizado em 29/02/00 4 funes geradas aleatoriamente, mas que garantidamente executam em tempo nito co so mostradas. Cada funo recebe 5 valores mostrados. Pede-se que o aluno calcule e a ca informe, ao nal da execuo de cada funo, o valor da soma das 5 variveis originais. ca ca a

Genrico de construo de algoritmos e ca


cdigo: 70 o nalizado em 02/01/06 Este exerc comporta uma base de dados de exerc cio cios para uso em muitas aulas de algoritmos. Para cada uma das aulas, a base contm cerca de 10 exerc e cios distintos. Ao gerar as folhas para os alunos, cada um deles receber 4 (5 ou 6, depende da aula) a de exerc cios distintos. Todos eles exigem implementao nas aulas de laboratrio. ca o

Achar o 10o termo de uma sequncia e


cdigo: 73 o nalizado em 04/06/06 Este exerc mostra 20 seqncias de 7 nmeros cada. Cada uma resultado de um cio ue u e ciclo para no qual esto envolvidas 1, 2 ou 3 variveis, cujo valor desconhecido. Ao a a e aluno cabe:
sugerir valores para x, y e z vericar se os valores sugeridos geram a seqncia dada ue corrigir se necessrio e voltar a testar a aps o acerto, gerar e responder o 10o termo. o

Chines de algoritmos
cdigo: 77 o nalizado em 21/02/00 4 funes usuais na informtica so mostradas: busca em cadeias, mdias em um vetor co a a e numrico, ordenao por insero e soma de colunas em uma matriz. Dados de entrada e ca ca so fornecidos, junto com o cdigo de cada funo pedindo-se ao aluno que inra os a o ca resultados que sero produzidos. a

Balance Line
cdigo: 84 o nalizado em 02/03/00 O algoritmo de balance line mostrado e discutida a sua importncia para atualizao e e a ca em lote de grandes volumes de dados. O exerc oferece dois arquivos de 30 registros cio cada (o arquivo de cadastro antigo e o arquivo de movimentaes), pedindo-se ao aluno co que gere o novo cadastro atualizado bem como o relatrio de incompatibilidades da o atualizao. Perguntas so feitas sobre o contedo dessas duas sa ca a u das
verso de 10 de fevereiro de 2008 a

17

88-08, Pedro Kantek

CAP ITULO 1. CONTRATO PEDAGOGICO

Indexao e indireo ca ca
cdigo: 110 o nalizado em 18/02/01 Dados 3 vetores de 16 valores numricos cada e dadas 5 variveis numricas globais, o e a e exerc pede que o aluno ache o resultado de 48 operaes de indexao e de indireo. cio co ca ca

Busca simples em tabela


cdigo: 116 o nalizado em 07/08/06 Este exerc descreve o mecanismo das tabelas, suas operaes de incluso e exclusao. cio co a Na parte de busca, apresenta e compara 3 tcnicas (busca linear, busca linear ordenada e e busca linear com sentinela). O aluno deve implementar os 3 algoritmos e inferir o desempenho deles nas 3 tcnicas. e

Manuseio de tabelas II
cdigo: 119 o nalizado em 10/08/06 So mostrados 5 algoritmos: incluso em tabelas desordenadas, excluso puxando os a a a sobrantes, excluso preenchendo com um indicador de excluso, busca binria e incluso a a a a em tabela ordenada. Por enquanto, a folha pede apenas o preenchimento de algumas complexidades. As folhas so todas iguais entre si. a

Certicao de algoritmos bsicos ca a


cdigo: 125 o nalizado em 11/07/07 Neste exerc so apresentados 5 algoritmos bsicos (um nmero primo ?, soma dos cio a a u e divisores de um nmero, achar a potncia de um nmero, validar uma data e alocar u e u bolas de brinquedo). Os algoritmos podem ou no conter um pequeno erro. O aluno a deve descobrir quais esto errados e quais esto certos. a a

Certicao de algoritmos de vetor ca


cdigo: 125 o nalizado em 11/07/07 Neste exerc so apresentados 5 algoritmos de vetor (achar o maior elemento, onde cio a est uma determinada chave, quantas vezes um elemento existe no vetor, calcular a a mdia, moda e mediana e responder se o vetor est em ordem). Os algoritmos podem e a ou no conter um pequeno erro. O aluno deve descobrir quais esto errados e quais a a esto certos. a

Certicao de algoritmos de vetor ca


cdigo: 125 o nalizado em 11/07/07 Neste exerc so apresentados 5 algoritmos de vetor (ver se uma frase pal cio a e ndromo, incluir uma chave em um vetor, achar o nmero da maior palavra em uma frase, excluso u a de todos os valores k no vetor V e achar a amplitude de um vetor). Os algoritmos podem ou no conter um pequeno erro. O aluno deve descobrir quais esto errados e quais esto a a a certos.
88-08, Pedro Kantek

18

verso de 10 de fevereiro de 2008 a

CAP ITULO 1. CONTRATO PEDAGOGICO

Certicao de algoritmos de matriz ca


cdigo: 125 o nalizado em 11/07/07 Neste exerc so apresentados 5 algoritmos de matriz (achar o vetor soma na vertical, cio a calcular uma mdia ad-hoc na matriz, achar o vetor menor na horizontal, calcular o e produto de duas matrizes e dada uma matriz com dados eleitorais, tesponder quem ganhou a eleio). Os algoritmos podem ou no conter um pequeno erro. O aluno deve ca a descobrir quais esto errados e quais esto certos. a a

Matrizes
cdigo: 128 o nalizado em 22/08/06 Apresenta 5 algoritmos de matrizes. Uma totalizao nos dois sentidos, o clculo da ca a matriz transposta, uma matriz com elementos abaixo da diagonal principal zerados (um grafo no dirigido ?), depois a multiplicao de 2 matrizes e nalmente a soluo de a ca ca um sistema de equaes lineares. O algoritmo mostrado e um exemplo completo est co e a descrito na folha. Finalmente, o aluno convidado a resolver (a mo ou usando o e a computador, a escolha dele) um sistema com 8 equaes e 8 incgnitas. e co o

Manipulaoes no cubo Rubik c


cdigo: 135 o nalizado em 21/09/06 O cubo Rubik apresentado e sugerida uma estrutura de dados que suporte manipe e ulaoes sobre ele. Depois uma lista de 9 operadores tambm mostrada, aplicada ` c e e a estrutura de dados recm denida. O aluno convidado a aplicar dois operadores soe e bre 2 cubos aleatrios e depois o deve resolver uma instncia trivial do cubo (apenas 2 a movimentos).

Fazenda de ostras de Zing Zhu


cdigo: 139 o nalizado em 24/09/06 Este problema foi retirado da Maratona de Programao da ACM do ano de 2004. Ele ca apresenta uma quase-soluo, j que resolve apenas algumas instncias (e no outras). ca a a a O objetivo do exerc exatamente discutir a freqncia com o prossional encontra cio e ue esta situao no mundo real, quando nem sempre h um algoritmo conhecido e correto. ca a Existe uma ilha rasa e o seu proprietrio estabelece uma srie de cercas. Dada uma a e certa altura da mar, pergunta-se quanto de rea da ilha permanece seco. e a

N meros romanos u
cdigo: 144 o nalizado em 16/09/06 Apresenta o sistema romano de numerao. Os algoritmos de converso de arbico ca a a para romano e vice-versa so apresentados. H 6 converses em cada sentido para a a o o aluno fazer. Deve-se alertar o fato de que na converso de arbico romano h a a a vrias respostas poss a veis (todas corretas) devendo o aluno fazer aquela que dada pelo e algoritmo estudado. Isto atrapalha o uso de conversores livremente dispon veis para resolver o problema proposto.
verso de 10 de fevereiro de 2008 a

19

88-08, Pedro Kantek

CAP ITULO 1. CONTRATO PEDAGOGICO

Universidade Pinguinhos
cdigo: 148 o nalizado em 07/10/06 Problema retirado da Maratona de Programao de 2005 da ACM. D-se um curso ca a universitrio composto de cerca de 15 matrias com diversas relaes de pr-requisitos. a e co e Estabelecida a prioridade das matrias, e a quantidade mxima de matrias por semestre, e a e pede-se que o aluno monte a grade proposta.

Piscina/Mgico a
cdigo: 151 o nalizado em 28/10/06 Dois exerc cios retirados da maratona de Programao da ACM dos anos de 2005 e 2004 ca respectivamente. O primeiro, d um estoque de azulejos de tamanho pequeno mdio e a e grande respectivamente e pede a disposio de custo m ca nimo para azulejar uma piscina de dimenses dadas. O segundo descreve um truque de adivinhao de cartas e pede o ca que o aluno resolva 3 instncias desse truque. a

Regata e Luzes da festa


cdigo: 152 o nalizado em 03/08/07 O primeiro exerc cio da olimp e ada ACM de 2005 e o segundo da IOI de 1998. A regata apresenta as coordenadas de um ponto de origem e de um ponto de destino, alm e de diversos obstculos (dados pelas coordenadas de suas extremidades). O aluno deve a calcular qual o menor caminho da origem ao destino. O exerc das luzes, sugere N cio lmpadas inicialmente acesas, que podem ser controladas atravs de 4 botes (1=chaveia a e o todas, 2=s as impares, 3=s as pares 4=1,4,7...) O exerc informa algumas lmpadas o o cio a que devem car acesas e outras apagadas, e pergunta como caram todas as N lmpadas, a aps a aplicao dos botes de controle. o ca o

Jogo do Retngulo a
cdigo: 153 o nalizado em 09/11/07 Este exerc extra da Olimp cio do ada Internacional de Informtica de 2005, ocorrido na a Polnia, oferece um retngulo de dimenses inteiras. Cada jogador pode fazer 1 corte o a o (vertical ou horizontal) sempre em unidades inteiras. Feito o corte, o menor pedao c e desprezado e segue o jogo. Quem car com o retngulo 11 perde. So dados os mtodo a a e de soluo e os algoritmos. Dadas 3 instncias (2 vencedoras e 1 perdedora) pede-se que ca a o aluno identique a perdedora e oferea o lance ganhador nas outras 2. c

Caminho e Vulco a
cdigo: 155 o nalizado em 11/08/07 Dois exerc cios baseados em similares pedidos na Olimp ada Espanhola de Informtica. a No primeiro, uma matriz de letras estabelecida e pede-se o caminho que estabelece e uma palavra dada. Note-se que a matriz tem as extremidades ligadas, o que torna mais complexa a busca. No segundo, um vulco descrito pelas altitudes de seus plats, 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, Pedro Kantek

20

verso de 10 de fevereiro de 2008 a

CAP ITULO 1. CONTRATO PEDAGOGICO

Genoma e Palavras cruzadas


cdigo: 156 o nalizado em 31/12/07 2 problemas baseados na prova da OBI de 1999. No primeiro problema so dadas duas a cadeias de DNA e o aluno deve localizar as correspondncias da cadeia original e de sua e complementar. No segundo problema, um tabuleiro de palavras cruzadas de dimenso a conhecida dado e so dadas as localizaes das casas pretas. O aluno deve numerar o e a co tabuleiro e informar os endereos das palavras na horizontal e na vertical. c

Trem/caminho, robo e restaurante a


cdigo: 157 o nalizado em 03/01/08 3 problemas baseados na prova da OBI. No primeiro problema so dadas informaes a co sobre frete e o aluno deve escolher o transporte por trem ou por caminho. 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. No terceiro, dados de entrada e saida de pessoas em um a restaurante so dados e pergunta-se: qual o maior nmero de pessoas que estiveram em a u um dado momento dentro do recinto ?

Seq.H, carga pesada e rede tica o


cdigo: 158 o nalizado em 04/01/08 3 problemas baseados na prova da OBI. No primeiro problema denido um critrio e e denidor de uma seqncia binria. 4 seqncias do dadas e pergunta-se se elas atendem ue a ue a ou no ao critrio (recursivo). No segundo um mapa de estradas com alturas mximas a e a so dadas e pede-se qual a carga mais alta que pode ser levada de uma cidade a outra. a Finalmente, no terceiro problema, da-se uma rede tica com seus custos por ramo e o pede-se o menor custo de ligao (rvore de cobertura m ca a nima).

Quermesse, troca de notas e saldo de gols


cdigo: 159 o nalizado em 04/01/08 3 problemas baseados na prova da OBI. No primeiro problema pede-se quem ganhou um concurso (fcil). No segundo problema, usando notas de 50, 10, 5 e 1, deve-se informar a quantas e quais notas compe um valor (fcil). No terceiro, deve-se escolher qual o o a per odo em que um certo grande time teve o maior saldo de gols (no to fcil). a a a

Macaco prego e visita ao MASP


cdigo: 160 o nalizado em 08/01/08 2 problemas baseados na prova da OBI. No primeiro problema pede-se qual a delimitao ca de uma reserva orestal que congregue o maior nmero poss u vel de macacos prego a partir dos dados parciais de suas aparies. No segundo, o roteiro de uma visita `s co a obras do MASPdeve ser estabelecido minimizando o esforo e priorizando as obras mais c importantes. Trata-se de um problema de minimizao. ca
verso de 10 de fevereiro de 2008 a

21

88-08, Pedro Kantek

CAP ITULO 1. CONTRATO PEDAGOGICO

Anis quadrados, Balaios e Meteoros e


cdigo: 161 o nalizado em 08/01/08 3 problemas baseados na prova da OBI. No primeiro problema pede-se qual a conguraao quando vrios anis quadrados so vistos de cima. O segundo pede determinar c a e a qual a seqncia de produo de balaios que minimiza a multa por atraso e o terceiro ue ca determina uma fazenda e diversos locais de queda de meteoritos, perguntando quantos ca ram dentro da fazenda.

Domin, sorvete e pirmide de caixas o a


cdigo: 162 o nalizado em 09/01/08 3 problemas baseados na prova da OBI. No primeiro problema pergunta-se se um dado conjunto de pedras de domin podem ou no formar um jogo. No segundo, do-se o a a diversos trajetos de sorveteiros e pergunta-se qual a parte da praia que car atendida a por pelo menos um sorveteiro, e no terceiro, do-se diversas caixas de diversas dimenses a o e pergunta-se qual a altura da maior pilha poss vel, desde que uma caixa nao ultrapasse nenhuma dimenso da caixa que est abaixo a a

Tesouro, Aeroporto e Pedgio na Coria a e


cdigo: 163 o nalizado em 17/01/08 3 problemas baseados na prova da OBI. No primeiro problema do-se 2 valores (de Joo a a e de Jos) e o contedo de uma arca do tesouro. A pergunta se poss e u e e vel ambos terem o mesmo valor. O segundo pergunta qual aeroporto car mais congestionado, a e o terceiro pergunta quais cidades uma pessoa pode alcanar gastando no mximo P c a pedgios. a

Finlndia, Supermercado e N mero de Erdos a u


cdigo: 164 o nalizado em 18/01/08 3 problemas baseados na prova da OBI. No primeiro problema pede-se quantas cidades um ciclista pode visitar na Finlndia, desde que no tenha que subir nada. No segundo, a a pede-se a melhor localizao para um centro de distribuio de uma rede de supermeca ca rcados. No terceiro, do-se diversos artigos com seus autores, e pede-se o nmero de a u Erdos de 3 deles.

Furos, Senha bancria e Orkut a


cdigo: 165 o nalizado em 22/01/08 3 problemas baseados na prova da OBI. No primeiro problema pede-se qual o menor dimetro de uma chapa redonda que cobre todos os furos cujos centros so dados. No a a segundo so dadas 2, 3 ou 4 digitaes de senhas em um banco eletrnico, pedindo-se a co o ao aluno que deduza a senha original correta e no terceiro pede-se que o aluno indique se ou no poss criar uma comunidade Orkut com as regras que l so dadas. e a e vel a a
88-08, Pedro Kantek

22

verso de 10 de fevereiro de 2008 a

CAP ITULO 1. CONTRATO PEDAGOGICO

Colheita de minhocas, furos e frota de taxis


cdigo: 166 o nalizado em 22/01/08 3 problemas baseados na prova da OBI. No primeiro problema pde-se determinar o valor da colheita usando a trajetria otimizada de uma mquina de colheita de minhocas. No o a segundo, denem-se os buracos de minhoca como ligaes entre partes do universo e co a partir do mapa delas, pergunta-se se todos os planetas desse universo podem ser acessados. Finalmente, no terceiro o aluno deve decidir se abastece uma frota com lcool ou com gasolina. a

10 problemas a base de papel e lpis a


cdigo: 170 o nalizado em 17/12/07 10 problemas baseados na prova da OBI de 2003. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca Apenas de soluo de problemas. ca

5 problemas a base de papel e lpis-a a


cdigo: 171 o nalizado em 18/12/07 5 problemas baseados na prova da OBI de 2004. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca Apenas de soluo de problemas. So eles: supermercado(2), maionese(1) e mapas da ca a prefeitura(2)

5 problemas a base de papel e lpis-k a


cdigo: 171 o nalizado em 18/12/07 10 problemas baseados na prova da OBI de 2004. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca Apenas de soluo de problemas. So eles: Atendimento ao consumidor(2), Clara e Luiz ca a (1) e Economia do transporte(2).

10 problemas a base de papel e lpis a


cdigo: 172 o nalizado em 19/12/07 10 problemas baseados na prova da OBI de 2005. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca Apenas de soluo de problemas. So eles: Equipe de software (2), Flores (2), Pane seca ca a (1) Linguagem de programao (2), Semana de provas (1) e Futebol(2). ca

7 problemas a base de papel e lpis-a a


cdigo: 173 o nalizado em 22/12/07 7 problemas baseados na prova da OBI de 2006. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca
verso de 10 de fevereiro de 2008 a

23

88-08, Pedro Kantek

CAP ITULO 1. CONTRATO PEDAGOGICO Apenas de soluo de problemas. So eles: Excurso dos alunos(2), Conjunto de rock ca a a (2), azulejos (1) e transporte de alunos (2).

6 problemas a base de papel e lpis-b a


cdigo: 173 o nalizado em 22/12/07 6 problemas baseados na prova da OBI de 2006. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca Apenas de soluo de problemas. So eles: Pantanal (2), Torneio de tenis (2), hidrologia ca a (1) e Tornado (1).

6 problemas a base de papel e lpis-c a


cdigo: 173 o nalizado em 22/12/07 6 problemas baseados na prova da OBI de 2006. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca Apenas de soluo de problemas. So eles: Ciclo de palestras (2), Analista (2), Casa ca a mal afamada (1) e Notao ps-xa (1). ca o

7 problemas a base de papel e lpis-d a


cdigo: 173 o nalizado em 22/12/07 7 problemas baseados na prova da OBI de 2006. So da fase introdutria (para alunos a o de 2.grau) e portanto no exigem nenhum conhecimento especializado de programao. a ca Apenas de soluo de problemas. So eles: Mapas a colorir (2), MP3 (3), Horta da Maria ca a (1) e Sanduiche do Joo (1). No esto neste material e sero aplicados diretamente em a a a a sala de aula. Bibliograa para Algoritmos FOR05 FORBELLONE, A. L. V. e EBERSPACHER, H. F. - Lgica de Programao. o ca FAR85 FARRER, Harry et all. Algoritmos estruturados. Rio de Janeiro, Guanabara, 1985. 241p. (Programao estruturada de computadores). ca FOR72 FORSYTHE, Alexandra I. et all. Cincia de Computadores - 1. curso. Volume e 1. Rio de Janeiro, Ao Livro Tcnico. 1972. 234p. e FOR72b FORSYTHE, Alexandra I. et all. Cincia de Computadores - 1. curso. Vole ume 2. Rio de Janeiro, Ao Livro Tcnico. 1972. 560p. e GUI75 GUIMARAES, Angelo de Moura & LAGES, Newton Alberto de Castilho. Algoritmos e estruturas de dados. Rio de Janeiro, LTC, 1975. 216p. KNU71 KNUTH, Donald E. The Art of Computer Programming. Volumes 1 e 2. Reading, Massachussets, Addisonb Wesley Publishing Company, 1971, 624p. SIL90 SILVA PINTO, Wilson. Introduo ao desenvolvimento de algoritmos e estruca turas de dados. So Paulo, ERICA, 1990, 201p. a WIR89 WIRTH, Niklaus. Algoritmos e estruturas de dados. Rio de Janeiro, PrenticeHall do Brasil, 1989, 245p.

88-08, Pedro Kantek

24

verso de 10 de fevereiro de 2008 a

CAP ITULO 1. CONTRATO PEDAGOGICO

O autor, pelo autor

Meu nome Pedro Luis Kantek Garcia Navarro, conhecido como Kantek, ou Pedro e Kantek. Nasci em Curitiba h mais de 50 anos. Sou portanto brasileiro, curitibano e a coxa-branca com muito orgulho, mas sendo lho de espanhis (meus 7 irmos nasceram o a l), tenho tambm a nacionalidade espanhola. Aprendi a falar em castellano, o pora e tugus portanto meu segundo idioma. Estudei no Colgio Bom Jesus e quando chegou e e e a hora de escolher a prosso, l por 1972, fui para a engenharia civil, mas sem muita a a convico. Durante a copa do mundo de futebol de 1974 na Alemanha, ao folhear a ca Gazeta do Povo, achei um pequeno anncio sobre um estgio na rea de processamento u a a de dados (os nomes informtica e computao ainda no existiam). L fui eu para um a ca a a estgio na CELEPAR, que hoje, mais de 30 anos aps, ainda no acabou. Na CELEPAR a o a j fui de tudo: programador, analista, suporte a BD (banco de dados), suporte a TP a (teleprocessamento), coordenador de auto-servio, coordenador de atendimento, ... Atc ualmente estou na rea de governo eletrnico. Desde cedo encasquetei que uma boa a o maneira de me obrigar a continuar estudando a vida toda era virar professor. Comecei essa desaante carreira em 1976, dando aula num lugar chamado UUTT, que no existe a mais. Passei por FAE, PUC e cheguei `s Faculdades Positivo em 1988. Sou o decano a do curso de informtica e um dos mais antigos professores da casa. Na dcada de 80, a e virei instrutor itinerante de uma empresa chamada CTIS de Bras lia, e dei um monte de cursos por este Brasil afora (Manaus, Recife, Bras lia, Rio, So Paulo, Fortaleza, a Floripa, ...). Em 90, resolvi voltar a estudar e fui fazer o mestrado em informtica ina dustrial no CEFET. Ainda peguei a ultima leva dos professores franceses que iniciaram o curso. Em 93 virei mestre, e a minha dissertao foi publicada em livro pela editora ca Campus (Downsizing de sistemas de Informao. Rio de Janeiro: Campus, 1994. 240p, ca ISBN:85-7001-926-2). O primeiro cheque dos direitos autorais me manteve um ms em e Nova Iorque, estudando ingls. Alis, foi o quarto livro de minha carreira de escritor, e a antes j havia 3 outros (MS WORD - Guia do Usurio Brasileiro. Rio de Janeiro: Cama a pus, 1987. 250p, ISBN:85-7001-507-0, Centro de Informaes. Rio de Janeiro: Campus, co 1985. 103p, ISBN:85-7001-383-3 e APL - Uma linguagem de programao. Curitiba. ca CELEPAR, 1982. 222p). Depois vieram outros. Terminando o mestrado, rapidamente para no perder o flego, engatei o doutorado em engenharia eltrica. Ele se iniciou em a o e 1994 na UFSC em Florianpolis. S terminou em 2000, foram 6 anos inesquec o o veis, at e porque nesse meio tive que aprender o francs - mais um ms em Paris aprendendo-o. e e Finalmente virei engenheiro, 25 anos depois de ter iniciado a engenharia civil. Esqueci de dizer que no meio do curso de Civil desist (c pra ns o assunto era meio chato...) em a o favor de algo muito mais emocionante: matemtica. Nessa poca ainda no havia cursos a e a superiores de informtica. Formei-me em matemtica na PUC/Pr em 1981. Em 2003, a a habilitei-me a avaliador de cursos para o MEC. Para minha surpresa, fui selecionado e virei delegado do INEP (Instituto Nacional de Pesquisas Educacionais) do Governo Brasileiro. De novo, visitei lugares deste Brasilzo que sequer imaginava existirem (por a exemplo, Rondonpolis, Luizinia, Rio Grande, entre outros), sempre avaliando os curo a sos na rea de informtica: sistemas de informao, engenharia e cincia da computao. a a ca e ca Atualmente estou licenciado da PUC e no UNICENP respondo por 4 cadeiras: Algoritmos (1. ano de sistemas de informao), Estrutura de Dados (2.ano, idem) e Tpicos ca o Avanados em Sistemas de Informao (4.ano, idem), alm de Inteligncia Articial (lc ca e e u timo ano de Engenharia da Computao). J z um bocado de coisas na vida, mas acho ca a que um dos meus sonhos um dia ser professor de matemtica para crianas: tentar e a c despert-las para este mundo fantstico, do qual lastimavelmente boa parte delas a a nunca chega sequer perto ao longo de sua vida.
verso de 10 de fevereiro de 2008 a

25

88-08, Pedro Kantek

CAP ITULO 1. CONTRATO PEDAGOGICO

O autor, h muitos anos, quando ainda tinha abundante cabeleira a

88-08, Pedro Kantek

26

verso de 10 de fevereiro de 2008 a

Cap tulo 2

Cincia da Computao e ca
Programas de qualquer tamanho esto sujeitos a conterem bugs(erros). a Alguns deles acabam custando caro. Em 22/jul/62 um foguete foi lanado com a misso de chegar a Venus. Esta c a foi a primeira tentativa de explorar qualquer planeta. O foguete desviou-se do curso e foi destruido. Investigaes posteriores revelaram que o responsvel pelo problema foi um co a erro de programao dos computadores. Apesar de testes e depuraes exca co tensas, a omisso de um simples h a fen num dos comandos de um programa no foi detectada. Este erro causou a falha da misso inteira a um custo de a a US$ 18,5 milhes. Trecho do livro Software Testing Techniquesde Boris Beizer. o Se o construtores constru ssem edif cios da mesma forma que os programadores escrevem programas, o primeiro pica-pau poderia destruir a civilizao. Gerald Weinberg, citado por James Martin, em O manifesto. ca Se alguma coisa pode dar errada, dar errada. a
Lei de Murphy

2.1

Representao do conhecimento ca

Se olharmos a histria deste nosso pequeno planeta e abstrairmos a hiptese Teolgica o o o (j que cienticamente ela no tem comprovao) veremos uma histria mais ou menos a a ca o assim: 1. H uns 3.000.000.000 de anos, surgem os primeiros seres vivos, capazes de entre a outras coisas se reproduzirem por cpia de si mesmos. Aparece aqui o DNA o (cido desoxi-ribonucleico) o elemento comunicador da herana. Foi o primeiro e a c at hoje bem importante local onde se armazenou o conhecimento. e 2. Mais tarde, surge o sexo. Ele tem enorme importncia nesta histria ao permitir a o que os lhos herdem um poco do DNA do pai e um pouco da me, acelerando a a evoluo. ca 3. Um bocado de tempo depois, surgem os animais superiores e nestes o crebro e passa a ser responsvel pelo local onde o conhecimento produzido e armazenado. a e Denomina-se esta fase ` do conhecimento extragentico. a e 4. Enquanto limitado ao conhecimento localmente produzido, o crebro pode are mazenar pouco. O prximo estgio de ampliao quando surge a fala. Agora o a ca e o contedo de um crebro pode ser repassado a outro, com resultados melhores e u e crescentes. O nome conhecimento extrassomtico e a 27

CAP ITULO 2. CIENCIA DA COMPUTACAO 5. Com a fala, os dois sujeitos tem que estar tte-`-tte. A seguir, surge a escrita. e a e Agora a comunicao poss na modalidade um-muitos (Antes era um-um) e ca e vel mesmo um crebro morto pode se comunicar pela escrita. e 6. Enquanto a escrita manuscrita, est naturalmente limitada. A prxima novidade e a o a imprensa que ao automatizar a produo de textos, amplia signicativamente e ca o acesso e a disseminao de informaes. ca co 7. Finalmente, o ultimo estgio da ampliao do conhecimento reside no software. a ca Hoje, 23 milhes de brasileiros sabem declarar seu IR, sem precisar fazer um o exaustivo aprendizado sobre as regras da declarao, graas a um... software. O ca c nome inteligncia extrassomtica. e e a Durante o sculo XX a maior indstria foi a do petrleo. Depois, a do automvel e u o o e nalmente no nal do sculo, a indstria de computadores passou a ser a maior. A e u tendncia para o futuro de que ela suplante todas as demais. Hoje o homem mais rico e e do mundo construiu a sua fortuna vendendo um software. O computador nasce na cabea de um cientista ingls (Alan Matheson Turing em c e 1937) e constru para a guerra pelos ingleses em 1942. A seqncia de escopo do e do ue computador e guerra a idia aqui usar o computador como otimizador dos recursos blicos, cripe e e tograa, pesquisa operacional, tabelas bal sticas... aritmtica o computador se transforma em super-calculadora. A matemtica passa a e a ser a linguagem da informtica, por excelncia. O FORTRAN dessa poca... a e e e negcios em plena sociedade capitalista, os negcios passam a ser otimizados pelo o o computador. Dessa poca o COBOL a linguagem representante... e e aldeia global Negcios, governos, universidades e organizaes sociais passam a como co partilhar o ciberespao. Surge e se robustece a Internet... c lazer o computador vira um eletrodomstico. As casas de classe mdia passam a contar e e com um (ou mais de um) computador. Jogos, msica, lmes, e-mule, mp3, ... u ... realidade virtual No se sabe direito o que vir por aqui. As tcnicas de simulao a a e ca levadas ao paroxismo permitiro criar realidades virtuais, com toda a contradio a ca exposta no t tulo. Talvez retornemos ` dvida de Plato (o universo existe ou a u a e apenas uma sensao que eu tenho? ). ca O computador se diferencia de qualquer outra mquina pela sua generalidade. No a texto original de Turing isto ca claro pela conceituao de uma mquina universal. ca a Assim, diferentemente de um liquidicador (que s serve para picar comida e tem apeo nas um boto de liga-desliga), um computador precisa antes de qualquer coisa ser a programado para fazer algo. De fato, se comprar um computador vazio e lig-lo, ele no a a vai fazer nada. Tecnicamente, chama-se a parte f sica do computador de hardware signicando ferragem, duro (hard), componente f sico, etc. J a programao recebe o nome de a ca software signicando mole (soft em oposio a hard), componente lgico, no f ca o a sico, programa de computador. A fabricao de hardware engenharia. Sua produo pode ser planejada e otimizada ca e ca e isso de fato feito. A fabricao de software, a despeito de ser chamada de engenharia, e ca c entre ns, no o muito. Est mais para arte do que para engenharia. a o a e a
88-08, Pedro Kantek

28

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO Talvez, como seres humanos, devamos dar graas aos cus por esta situao. Pois enc e ca quanto a produo de hardware (ou pode ser) em grande parte robotizada, a produo ca e ca de software ainda exige um bom crebro cinzento por trs. e a As restries que ainda existem sobre o software e que talvez nunca deixem de existir, co impedem a programao dos computadores em linguagem natural. Hoje ainda no ca a e poss vel dialogar com um computador como se fala com uma pessoa medianamente inteligente. Os computadores ainda no conseguem tal proeza. a Para programar um computador necessitamos uma linguagem. O hardware s eno tende uma linguagem de pulsos eltricos (chamada de linguagem de mquina). Para e a facilitar a nossa vida (j que muito dicil para o homem programar nela), criaram-se a e programas tradutores que recebem comandos e dados em uma linguagem articial e a convertem em linguagem de mquina. A maioria desses tradutores recebeu o mesmo a nome da linguagem que eles traduzem. Assim, temos o Java, o Cobol, Pascal, Apl, Clipper, Dbase, Basic, Natural, Fortran, C, Php, Lisp, Prolog, Modula, entre outras. Veja no s www.tiobe.com o tio ndice TPC que mensalmente lista as 100 linguagens mais usadas no mundo. Quando os primeiros computadores foram construidos, a unica linguagem por eles entendida era a binria. Seqncias interminveis de uns e zeros, 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. Era um autntico e samba do crioulo doido. Chamou-se a isto, mais tarde, linguagem de primeira gerao. ca A seguir, o primeiro melhoramento: o assembler (ou montador), programa que era capaz de entender instrues escritas em uma linguagem um pouco mais humana, e co traduzir cada uma destas instrues em sua expresso binria equivalente. Junto com co a a este programa criou-se a primeira linguagem digna deste nome: o assembler, at hoje e usado, se bem que muito raramente. Programar em assembler ainda exige muito talento e pacincia. A mquina precisa e a ser conhecida em inmeros detalhes de construo, os programas so longos e dif u ca a ceis (principalmente sua manuteno). Entretanto esta a linguagem mais eciente do ca e ponto de vista dos consumo dos recursos da mquina, isto , ela gera programas velozes a e e pequenos. Depois, vieram as linguagens de terceira gerao: a primeira foi o FORTRAN, deca pois COBOL, PL/I, PASCAL, C, C++, Java, LISP, Prolog e outras menos votadas: BASIC, ADA, APL. H um distanciamento do programador em relao ` mquina, e a ca a a uma aproximao do mesmo em relao ao problema a resolver. Estas linguagens so ca ca a mais fceis de aprender e embora gerem programas maiores e mais lentos, aumentam a em muito a produtividade humana de escrever cdigo de programao. o ca Um exemplo diferente para mostrar todos estes conceitos de linguagens poderia ser o seguinte: Suponha um engenheiro brasileiro, que s conhece o idioma portugus. Ele o e precisa transmitir certas ordens de fabricao para um colega sovitico, que s conhece ca e o o idioma russo, com escrita cir lica. Os dois podem tentar conversar quanto quiserem, mas provavelmente no haver nenhum resultado prtico util. E necessria a presena a a a c de um tradutor, algum que ouvindo o portugus consiga transformar as ordens em e e suas equivalentes russas. Finalmente, o engenheiro brasileiro ver se as ordens foram a corretamente traduzidas e executadas analisando o resultado nal do trabalho. Neste exemplo, o engenheiro brasileiro o programador. O colega sovitico a e e e mquina (que ao invs de russo, s entende a linguagem eltrica). O tradutor a a e o e e linguagem de programao. ca Podemos ainda estabelecer dois n veis para linguagens de programao: baixo e alto. ca Linguagem de baixo n vel aquela que requer a especicao completa do problema e ca nos seus m nimos detalhes. No nosso exemplo, equivaleria ao engenheiro brasileiro descrevendo tin-tin por tin-tin todos os passos para montar uma engenhoca qualquer. J a as linguagens de alto n vel, pressupe uma traduo inteligente, o que libera o engeno ca
verso de 10 de fevereiro de 2008 a

29

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO heiro brasileiro de informar todas as etapas. Ele diz o que deve ser feito, sem precisar estabelecer como isto vai ser realizado. Todas as linguagens compartilham uma estrutura parecida, j que rodam todas no a mesmo computador que constru usando a chamada Arquitetura de Von Neumann. e do Bem resumido, essa arquitetura prev a existncia da memria, de uma unidade arite e o mtico lgica, canais e o elemento ativo: a unidade de controle. Essa estrutura comporta e o os seguintes tipos de comandos (ordens): entrada-sa de dados, aritmtica, movimenda e taao em memria, condicional e desvio. c o Com apenas essas 5 ordens, so constru a dos todos os programas que existem ou que existiro em nosso mundo usando este tipo de computador. a Uma pergunta que se pode fazer aqui, se melhor aprender tudo de uma linguagem e e e se tornar um especialista nela, ou se melhor conhecer vrias, ainda que no chegando e a a a muita profundidade em nenhuma. No h resposta fcil, mas apostar todas as suas chas em uma unica pode ser a a a perigoso. A tecnologia tem substitu a linguagem da vez mais ou menos a cada 8, do 10 anos. Pior, ao se xar em uma linguagem, corre-se o risco de misturar questes do o problema (do algoritmo) com questes do programa (da linguagem). o Como na vida real, parece ser melhor buscar ser poliglota, ainda que obviamente haja uma linguagem preferida. Neste caso, todo o esforo deve ser no ncleo mais c u ou menos comum a todas as linguagens e deixar em segundo plano o aprendizado das idiossincrasias de cada uma.

Exerc cio 1 Lembrando que existe muita semelhana entre seguir um programa de c computador e uma receita culinria, prepare um uxograma da seguinte receita: a Bolo de nozes da Dona Filustreca Ingredientes: 250g de chocolate em p, 250g de passas, 3 x o caras de aucar, meia x c cara de leite condensado, meia x cara de leo, 1 colher de ch de baunilha, 250g de manteiga e o a 1 colher de ch de sal. a Modo de fazer: ponha o leite, o leo, o aucar, o chocolate e o sal em uma panela e o c leve ao fogo, mexendo at a fervura. Reduza o fogo e continue a fervura at o ponto de e e caramelo. Retire do fogo e deixe esfriar por 10 min. Em seguida, bata com a manteiga e a baunilha at a mistura car homognea. Distribua as passas no fundo de uma forma grande e e untada de manteiga. Derrame a massa sobre as passas. Deixe esfriar por 10 minutos, corte em pedaos e o bolo est pronto para ser comido. c a Exerc cio 2 Seja agora um exemplo numrico. Eis aqui a seqncia de Fibonacci e ue
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... Escreva um procedimento que informe a soma dos primeiros 1000 nmeros da seqncia de u ue Fibonacci. Fica claro por estes dois exemplos, que programar um computador emprestar ine teligncia ao computador. Ou seja, para programar a soluo de um problema, h que e ca a saber resolver esse problema. E, no apenas resolver em tese, mas descrever detalhadaa mente todas as etapas da soluo. ca De fato, a programao detalhista ao extremo. ca e Como se disse acima, o computador surge em 1937, descrito em um artigo denominado on a computable numbers. Este artigo era to indito que quase no publicado: a e a e faltavam revisores que o atestassem. O conceito matemtico de computador est l, a a a quase 10 anos de existir algo f sico que lembrasse o conceito.
88-08, Pedro Kantek

30

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO Ao mesmo tempo, o exrcito nazista alemo comea a usar um esquema criptogre a c a co muito inteligente atravs de uma mquina denominada ENIGMA, a qual, tinham e a eles certeza, era inexpugnvel. Mal sabiam que do outro lado do canal da Mancha esa tava Turing. Ele criou um computador, batizado COLOSSUS, que quebrava o cdigo o ENIGMA em poucas horas. Foi o primeiro computador constru pelo homem. O do ENIAC de que os americanos se gabam tanto, veio depois. No meio da guerra, Turing foi enviado aos Estados Unidos e l teve contacto com a Von Neumann. Este o autor da assim chamada arquitetura de Von Neumann, que a e e que usamos at hoje em qualquer computador. e

2.2

Algoritmo
Algorithms are the most important, durable, and original part of computer science because they can be studied in a language and machine independent way. This means that we need techniques that enable us to compare algorithms without implementing them. Skiena, Steven - The Algorithm Design Manual.

Segundo mestre Aurlio, algoritmo Processo de clculo, ou de resoluo de um e e a ca grupo de problemas semelhantes, em que se estipula, com generalidade e sem restries, co regras formais para a obteno do resultado ou da soluo do problema. ca ca Algoritmo a idia que est por trs de um programa de computador. E a coisa e e a a que permanece igual ainda que esteja em um programa Java para rodar num PC em Curitiba, ou esteja em um programa PASCAL rodando em um Cray em Valladolid na Espanha. Do ponto de vista da informtica, algoritmo a regra de soluo de um problema, a e ca isto , surgida uma necessidade buscar-se- uma soluo, ou construir-se- um algoritmo e a ca a capaz de solucionar o problema. J um programa de computador, (segundo Wirth) uma formulao concreta de a e ca algoritmos abstratos, baseados em representaes e estruturas espec co cas de dadose devidamente traduzido em uma linguagem de programao. ca Outra denio de algoritmo, esta dos autores Angelo Guimares e Newton Lages: ca a Algoritmo a descrio de um padro de comportamento, expressado em termos de e ca a um repertrio bem denido e nito de aes primitivas, das quais damos por certo o co que elas podem ser executadas. Para encerrar, e tomando alguma liberdade, podemos considerar um algoritmo como sendo uma receita de bolo. O conceito de algoritmo deve ser entendido, para sua correta compreenso, em seus a dois aspectos, a quem chamaremos esttico e temporal. Na sua viso esttica, um a a a algoritmo um conjunto de ordens, condies, testes e vericaes. No seu aspecto e co co temporal, o algoritmo passa a ser algo vivo, pois atua sobre um conjunto de dados de entrada, para gerar os correspondentes dados de sa da. Tais caracter sticas no podem ser separadas, elas esto instrinsicamente ligadas. A a a diculdade em fazer bons algoritmos, ter em mente, enquanto se escreve o algoritmo e (aspecto esttico) o que ele vai fazer com seus dados (aspecto temporal). a Vamos exemplicar esta discusso, comentando sobre o algoritmo de soluo de uma a ca equao do segundo grau. ca Dada a equao Ax2 + Bx + C = 0, para encontrar as duas raizes, segundo a ca inesquec frmula de Bhaskara, procedemos da seguinte forma: vel o
Calculamos DELTA, que B ao quadrado, menos o produto de 4,A e C. e Se DELTA < 0, as raizes no existem no campo dos nmeros reais a u
verso de 10 de fevereiro de 2008 a

31

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO


Se DELTA = 0, as raizes so iguais a A primeira raiz (-B) + DELT A dividido por 2A e A segunda raiz (-B) - DELT A dividido por 2A. e

No seu aspecto dinmico, ter a amos que gerar uma srie de dados de entrada (triplas e A,B,C), seguir o algoritmo, e vericar se os resultados que ele gera so aqueles esperaa dos de antemo. a

Dado um problema, para o qual temos que escrever um algoritmo, usualmente no a h soluo unica. Quanto mais complexo o problema a resolver, maior a quantidade a ca de poss veis algoritmos corretos. Cada um certamente ter as suas qualidades e os seus a defeitos. Alguns so muito bons, e outros muito ruins, mas entre um e outro existem a inmeras variaes, que nem sempre so facilmente reconhecidas. u co a Pode-se dizer que um algoritmo um programa de computador do qual se faz a e abstrao da linguagem de programao. Neste sentido o algoritmo independe de qual ca ca ser sua implementao posterior. Quando pensamos em algoritmos, no nos preocua ca a pamos com a linguagem. Estamos querendo resolver o aspecto contedo. Mais tarde, u quando programarmos, a linguagem passa a ser importante, e agora a preocupao ca e com a forma.

2.2.1

Qualidades de um bom algoritmo

Se um programa fcil de ler, ele provavelmente um bom programa; se e a e ele dif de ler, provavelmente ele no bom.(Kernighan e Plauger) e cil a e Clareza O algoritmo uma ferramenta de entendimento e soluo de um problema. e ca Deve portanto, ser o mais claro poss vel. 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. Nunca sacricar clareza por ecincia; nunca sacricar clareza pela e oportunidade de revelar sua inteligncia.Jean Paul Tremblay. e Impessoalidade Nem sempre quem vai examinar, depurar, corrigir, alterar etc , um algoritmo seu autor. Portanto, nada de usar macetes, regras pessoais, nomes que e s tem sentido para o autor etc. Neste ponto de muita ajuda a existncia de um o e e bem organizado conjunto de normas de codicao e de elaborao de algoritmos ca ca para a organizao. As melhores e mais bem organizadas empresas de informtica ca a dedicam parcela signicativa de seus esforos a esta atividade. c Simplicidade Poucos programadores resistem ` tentao de elaborar uma genial sa a ca da para um problema. Nada contra isso, desde que essa sa no ra os princ da a pios de simplicidade que todo algoritmo deve procurar satisfazer. Nem sempre fcil e a fazer algoritmos descomplicados, principalmente porque em geral os problemas que enfrentamos no so simples. Transformar algo complicado em solues singelas, a a co parece ser a diferena entre programadores comuns e grandes programadores. c Reaproveitamento Existe inmera bibliograa sobre algoritmos. Grandes instalaes u co de informtica costumam criar o conceito de biblioteca de algoritmos. Muitos a softwares tambm esto partindo para esta sa e a da. O programador no deve se a esquecer nunca de que um algoritmo novo, custa muito caro para ser feito, e custa muito mais caro ainda para ser depurado. Se j existir um pronto e testado, tanto a melhor.
88-08, Pedro Kantek

32

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO Capricho Tenha sempre em mente que a principal funo de um algoritmo transmitir ca e a soluo de um problema a outrem. Desta maneira, um m ca nimo de capricho indispensvel a m de no assustar o leitor. Letra clara, identao correta, e a a ca nomes bem atribu dos, tudo isto em papel limpo e sem borres. Como o leitor j o a pode estar imaginando, esta caracter stica fundamental em provas, avaliaes e e co trabalhos. A primeira conseqncia prtica desta regra : faa seus algoritmos a ue a e c lpis. a Documentao Nem sempre o texto que descreve o algoritmo muito claro. Alm do ca e e que, ele informa o que feito, mas no porque feito, ou quando feito. Assim, o e a e e programador pode e deve lanar mo de comentrios sempre que sentir necessidade c a a de claricar um ponto. Bons comentrios no podem melhorar uma m codicao, mas maus a a a ca comentrios podem comprometer seriamente uma boa codicao. Jean a ca Paul Tremblay. Correo (ou integridade ou ainda robustez) Um algor ca tmo ntegro aquele onde e os clculos esto satisfatoriamente colocados, e atuam corretamente para todos a a os dados poss veis de entrada. No adianta um algoritmo sosticado e cheio de a estruturas de controle, se suas operaes aritmticas elementares no estiverem co e a corretas. E mais comum (e perigoso) o algoritmo que funciona em 95% dos casos, mas falha em 5% deles. Ecincia Esta caracter e stica tem a ver com economia de processamento, de memria, o de comandos, de variveis etc. Infelizmente, quase sempre uma caracter a e stica oposta ` da clareza e da simplicidade, sendo estas mais importantes do que a ea cincia. Entretanto, em alguns casos, (principalmente na programao real - dentro e ca das empresas), a ecincia pode ser fundamental. Neste caso, perde-se facilidade, e para se ter economia. O bom programador aquele que alia a simplicidade ao e mximo de ecincia poss a e vel. Generalidade Dentro do poss vel, um algoritmo deve ser o mais genrico que puder. e Isto signica que vale a pena um esforo no sentido de deixar nossos algoritmos cac pazes de resolver no apenas o problema proposto, mas toda a classe de problemas a semelhantes que aparecerem. Usualmente o esforo gasto para deixar um algoritmo c genrico pequeno em relao aos benef e e ca cios que se obtm desta preocupao. e ca Modularidade Algoritmos grandes dicilmente cam bons se usarmos uma abordagem linear. E praticamente imposs garantir clareza, impessoalidade, documentao vel ca etc, quando se resolve um algoritmo de cima a baixo. Uma conveniente diviso a em mdulos (isto , em sub-algoritmos), para que cada um possa ser resolvido a o e seu tempo. No podemos esquecer que a regra urea da programao estruturada a a ca dividir para conquistar. e Comentrios Permitem a agregao de informaes destinadas ao leitor humano do a ca co algoritmo. Seu contedo no levado em considerao na anlise da integridade e u a e ca a correo do algoritmo. Tem nalidade apenas explicativa e informativa. Mas isso no ca a signica que eles sejam desprez veis. Pelo contrrio, comentrios so importantes em a a a algoritmos de um modo geral. Os comentrios so delimitados por um abre-chave({) e um fecha-chave(}). 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. e Exemplo {Isto um comentrio} e a
verso de 10 de fevereiro de 2008 a

33

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO H dois tipos de comentrios aqui: aqueles encerrados entre chaves e aqueles colocaa a dos depois de uma dupla barra. {Isto um comentrio, que s ser encerrado quando se encontrar e a o a o fecha chave, ainda que ele ocupe mais de uma linha } // isto tambm um comentrio, desde a dupla barra at o fim da linha e e a e

2.2.2

Como se escreve um algoritmo

A questo agora : como se escreve um algoritmo? Usando uma ferramenta adequada a e para comunicar algum tipo de computao que o algoritmo execute. Qualquer linguagem ca poderia ser adequada, mas melhor inventar uma sublinguagem derivada do portugus e e (ou do ingls em livros nesse idioma) que ajude a treinar o pensamento criativo em e algoritmos. A idia que a ferramenta ajude a fazer a tarefa. Por analogia, experimente aparae e fusar algo pequeno usando um p de cabra. e O nome da sublinguagem que usaremos portugus estruturado, tambm conhecida e e e como portugol.

2.3

Portugol

Figura 2.1: Qual a melhor linguagem ?

Figura 2.2: Como se entender com ele ? Como vimos, portugus estruturado uma linguagem inventada aqui para simplicar e e a tarefa de aprender a construir, depurar e documentar algoritmos estruturados. Existem inmeras verses, cada professor de lgica tem a sua. E importante salientar que a u o o
88-08, Pedro Kantek

34

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO s ntaxe e a construao de portugus estruturado so arbitrados por algum, segundo c e a e seus critrios, mas uma vez estabelecido um padro, pele precisa ser seguido. e a Esta restrio tem duas vertentes. A primeira, que h que haver um m ca e a nimo de concordncia para que outras pessoas possam ler e entender o que escrevemos. A a segunda, que uma das principais caracter e sticas do bom programador a disciplina e intelectual. Nada mais apropriado que comearmos a exercitar esta dif qualidade c cil desde j. a Por que PORTUGOL e no PORTUGUES ? Portugus (como qualquer idioma a e natural) tem inmeras desvantagens: u
No entendido pela mquina (exige traduo complex a e a ca ssima)

E amb guo E muito extenso Vejamos por exemplo, uma orientao extra do manual de organizao de uma Emca da ca presa. O funcionrio far jus ao PREMIO PRODUTIVIDADE se estiver trabala a hando h mais de 6 meses da poca de distribuio (fevereiro de cada ano), e a e ca trabalhar na rea de vendas, ou ento se tiver sido especialmente citado como a a tendo tido alta produtividade. Perdem o direito, funcionrios que tiverem a mais de 2 faltas e mais de 5 atrasos, ou que tiverem fruido licena sade do c u INSS no per odo aquisitivo. Parece claro, no ? Agora tentemos responder: a e
Joo tem 3 meses de casa e foi citado como de alta produtividade. Ganha ou a no? a Maria teve 3 faltas. Perde ou no ? a

Outro exemplo, minha tia tem uma gatinha e ela muito bonita. Quem bonita, e e a tia ou a gatinha ? O linguajar acima, no adequado para expressarmos algoritmos pois inexato, a e e dbio, e deixa muita margem de interpretao, usa verbos e comandos proibidos, isto u ca , que o computador no saber executar. Devemos lembrar sempre que a margem de e a a interpretao do computador, qualquer computador, sempre ZERO, e os computadores ca e tem a pssima mania de fazer o que mandamos eles fazerem, e no o que queremos que e a eles faam. c Por que PORTUGOL e no uma linguagem qualquer como Java? ou qualquer a outra linguagem de programao? ca Uma linguagem de programao, ainda que de alto n ca vel, caso do Java, exige um conhecimento da mquina que ainda no temos. Tambm importante salientar que a a e e idealmente falando, no boa pol a e tica enfrentar dois problemas interligados ao mesmo tempo. Isto , no convm misturar diculdades de lgica, (advindas do problema que e a e o se quer resolver) com diculdades da linguagem (advindas do ambiente tecnolgico onde o o programa vai rodar), pois ambas somadas podem ser demais para a cabea do autor. c J dizia Dijkstra deve-se reconhecer que tem-se uma cabea pequena, e que melhor a c e tratar de conviver com ela e respeitar suas limitaes. Aproveitando a citao, mais co ca de uma do mesmo autor: A regra urea da programao estruturada dividir para a ca e reinar.
verso de 10 de fevereiro de 2008 a

35

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO Os programas em PORTUGOL vo deixar de lado inmeras chateaes, (que so a u co a imprescind veis para o programa rodar em um computador real) tais como: instrues co de ambientao na compilao de programas, descries de operaes de entrada/sa ca ca co co da complexas, pouca ou nenhuma preparao de controles etc. ca E claro, que anexo a esta disciplina, existe outra de laboratrio de programao, o ca onde vai se aprender o Java. Nessa hora, os algoritmos j devem estar consolidados, e a a preocupao passa a ser a mquina e seu ambiente. Na nossa cadeira de algoritmos, ca a devemos esquecer a mquina e nos concentramos no problema e na sua soluo. a ca Portugus estruturado Cada autor tem a sua viso do que seja o ideal em termos e a de linguagem de especicao de algoritmos. Veja, por exemplo, o quadro ca

O que um computador entende Baseado na arquitetura de Von Neumann, (um processador, uma unidade de controle, uma ULA, memria e registradores), todo computador constru neste paradigma o do e capaz de obedecer, l no n mais baixo, a um pequeno conjunto de ordens. Note-se a vel como ele restrito. e Entrada/Sa da Este tipo de ordem, para orientar o computador no sentido de e adquirir um dado externo (entrada), ou para divulgar alguma coisa que ele calculou (sa da). Aritmtica Estas ordens so similares aquelas que aprendemos no primeiro grau, e e a destinam-se a informar ao computador como ele deve efetuar algum clculo. Esa tas ordens so: adio, subtrao, multiplicao, diviso, potenciao, funes a ca ca ca a ca co trigonomtricas etc. No se esquea que a linguagem universal dos computadores e a c
88-08, Pedro Kantek

36

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO a matemtica. Escrever um programa de computador correto como demonstrar e a e um teorema. Alternativa E talvez a ordem mais importante no universo da computao. E ela que ca d ao computador condies de ser inteligente e decidir qual de dois caminhos a co deve se seguido. Sempre tem a forma de uma pergunta, seguida por duas ordens distintas. Se a pergunta for respondida armativamente, a primeira ordem ser a executada, e se a pergunta for negada, a segunda ordem ser executada. a Desvio Esta ordem para dar ao computador habilidade de saltar algumas ordens e e executar outras. Um programa de computador nem sempre obrigado a seguir as e instrues seqencialmente comeando no comeo e terminando no m. O desvio co u c c e potencialmente perigoso quando usado sem critrio, e por isso veremos em seguida e que uma das regras da programao estruturada o estabelecimento de r ca e gidos controles sobre os desvios. Movimentao na memria Embora parea estranho, esta ordem mais comum em ca o c e um programa. Considerando o tamanho das memrias de computador e a quano tidade de coisas que so l colocadas, imprescind que os programas tenham a a e vel a habilidade de manusear todas estas coisas. Fazendo uma gura de linguagem, suponha que a memria do computador um grande supermercado. Se os artigos o e no puderem se mexer de lugar, bem poucas coisas acontecero. a a Outra observao, que o verbo mover, quando usado em manipulaes dentro ca e co da memria usado por razes histricas, e certamente contm um equ o e o o e voco. O correto seria usar o verbo copiar, j que quando um contedo levado de um a u e lado a outro, sua instncia anterior no desaparece. Usa-se aqui uma regra jocosa, a a mas que sempre verdadeira. computador no usa apagador. e a ciclo de vida Qual a histria de vida de um programa de computador ? Isto como nasce, cresce e o e morre um programa ? Grosso modo, pode se dizer que as principais etapas so: a
estudo do problema: Espera-se que haja algum problema ou diculdade esperando e ser resolvido pelo programa de computador. E pr-requisito antes de tentar a soluo de qualquer questo, estud-la, compreender o entorno, as limitaes, os ca a a co balizadores, os recursos dispon veis. Uma boa maneira de estudar e compreender um problema fazer hipteses, estudar comportamentos, projetar simulaes. S e o co o se pode passar adiante se boa parte do entorno do problema for entendida. Note-se que nem sempre poss aguardar at ter 100% do conhecimento antes de seguir e vel e ` adiante. As vezes no d tempo, mas o percalo principal nem esse: que muitas a a c e e vezes o conhecimento no existe e s vai aparecer quando se cutucar o problema. a o Como se diz em espanhol los caminos se hacen al caminar. Quando isto ocorrer, e ocorre muitas vezes, no tem jeito: anda-se para frente e para trs, e a cada a a passada o conhecimento maior. e bolar ou procurar o algoritmo. Agora hora de converter a soluo encontrada e ca em algo prximo a um algoritmo. Isto , algo formal, com condies iniciais, reo e co sultado nal, e manipulaes entre o que entra e o que sai. Usam-se os comandos co permitidos em algoritmos e s estes. Usualmente, h aqui o que se chama de aproo a fundamento interativo. Comea-se com uma declarao genrica que vai sendo c ca e detalhada e especicada at chegar ao n e vel bsico, no qual os comandos algoa r tmicos (entrada/sa da, aritmticos, alternativos, movimentao e de repetio) e ca ca
verso de 10 de fevereiro de 2008 a

37

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO podem ser usados. Note que pode-se copiar ou aproveitar um algoritmo j exisa tente. Entretanto este re-uso dicilmente imediato. Sempre h que estudar e e a eventualmente modicar um algoritmo j existente, a menos que quando este foi a feito seu autor j tinha a preocupao com o reuso. a ca transcrever em LP. E hora de escolher um computador, um ambiente operacional e sobretudo uma linguagem de programao que esteja dispon e seja conhecida. ca vel Dessas 3 opes (computador, ambiente e linguagem) surge a plataforma denitiva: co agora poss escrever, testar, depurar e implementar o programa de computae vel dor.
depurar. Usualmente h uma seqncia de testes: a ue

compilao correta: nenhum erro apresentado pelo compilador ca testes imediatos sem erro: testes ad hoc para este programa (e s para ele) o do os resultados esperados. a teste alfa: um esforo completo de testes, inclusive integrando este programa c aos seus antecessores e sucessores. Usualmente o teste feito pelo(s) autor(es) e do programa. teste beta: um teste completo feito por terceiros. H uma regra aqui de que a quem faz (programador) no deve ser quem testa (testador). a
implementar e rodar. Com o programa testado e liberado hora de rod-lo em e a produo. Nesta hora ocorre o que tem sido chamado de deploy (dizem as ms ca a l nguas que sempre associado a seu irmo gmeo, o delay). Dependendo do porte a e da instalao e do sistema, `s vezes esta passagem complexa e trabalhosa. ca a e manuteno. Seria muito bom se a histria acabasse na etapa anterior. No o ca o a e que ocorre, j que o mundo muda e os programas precisam mudar com ele. Se a a manuteno pequena, usualmente pode-se faz-la sem muito transtorno, mas ca e e caso no seja, este ciclo recomea. Note-se que aps algumas manutenes grandes a c o co o programa comea a dar mostrar de instabilidade a popular colcha de retalhos c e hora de comear tudo de novo, na nova verso do programa. e c a

Como se aprende algoritmos? No fcil aprender algoritmos. No que tm de engenharia, mais fcil. H frmulas, a e a e e a a o procedimentos, prticas consagradas prontas a serem usadas. Mas, no que so arte, tais a a receitas desaparecem. E mais ou menos como tentar ensinar algum a desenhar (outra e arte) ou a compor msica (outra ainda). u Olhando como se aprende a desenhar, poss e vel ter alguns insights. Aprendizes de desenho copiam desenhos e partes de desenho extensivamente. Pode-se tentar algo parecido aqui. Em resumo, estas seriam as indicaes co
Estudando algoritmos prontos. Pegue bons livros de algoritmos, e estude as implementaes que l aparecem. Transcreva tais algoritmos em um simulador (tipo co a visualg) ou mesmo em uma linguagem de programao. Execute os algoritmos. ca Busque entender o que cada parte do mesmo faz. Sugira hipteses sobre o funo cionamento e provoque pequenas mudanas no cdigo para conrmar (ou rejeitar) c o suas hipteses. o Tenha intimidade com algum ambiente de compilao e testes. Esta proposta ca importante para poder testar algoritmos. Se car embatucado diante de uma e simples implementao, voc ter grandes diculdades de escrever algoritmos. ca e a
88-08, Pedro Kantek

38

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO


Escreva pequenos algoritmos. Tente fazer os exerc cios (comeando sempre pelos c mais simples) de qualquer bom livro de algoritmos. Treine a interpretao dos enunciados. Enquanto no entender o que deve ser ca a feito, no adianta olhar para o algoritmo, pois o motivador das aes que ele toma a co estar ausente. Nunca se deve comear a estudar ou a construir um algoritmo se a c no houver um claro entendimento do que o algoritmo deve fazer. a

2.4

Programao Estruturada ca

O termo programao estruturada veio ` luz pela primeira vez, nos ns da dcada ca a e de 60, quando Edsger Dijkstra (L-se como Dikster ) escreveu um artigo, publicado e em Communications of the ACM, cujo t tulo O comando GO TO prejudicial. e e Viv amos a poca de ouro do COBOL, e o comando GO TO a instruo de desvio desta e e ca linguagem. Dijkstra observou que a qualidade dos programadores decai em funo do ca nmero de GO TOs usados em seus programas. Segundo ele, Comandos GO TO tendem u a criar caminhos de lgica confusos e programas pouco claros. A sua recomendao foi o ca de que o comando em questo fosse banido das linguagens de alto n a vel. Nessa poca tambm (1966) dois professores italianos, Giuseppi Jacopini e Core e rado Bohm, provaram matematicamente que qualquer lgica de programao poderia o ca ser derivada de trs tipos bsicos de procedimentos, a saber: seqncia, alternativa e e a ue repetio. ca Chegou-se ento ao mago da programao estruturada, que trocar a instruo a a ca e ca de desvio pelas instrues de repetio. Ao fazer isto, todos os componentes de um co ca programa passam a ter uma entrada e sa unicas. Atente-se que ao usar uma instruo da ca de desvio, essa regra de uma entrada e uma sa violada: o conjunto passa a ter no da e m nimo duas sa das. Sequncia simples Trata-se de um conjunto de comandos simples, que seguem um e ao outro e que so executados na ordem em que aparecem. Exemplo a A 10 BA + 5 X1 + 2 Dentro de uma seqncia simples de comandos a entrada sempre pelo primeiro coue e mando e a sa sempre pelo ultimo. Graas ao princ da e c pio da programao estruturada ca (uma entrada e uma sa da), uma seqncia simples pode ser substitu por um bloco ue da com entrada e sa unicas. da Alternativa E um comando que permite dois caminhos alternativos, da o nome, a depender de alguma condio. Na matemtica convencional isto j existe, por exemplo ca a a na frmula de Bhaskhara. No momento de calcular a raiz quadrada de , h que se o a tomar uma deciso. Se < 0 os clculos cessam e a resposta de ra imaginrias deve a a zes a ser dada. Se 0, a raiz pode ser extra e um ou dois valores de ra da zes emergem. O ponto importante aqui que em algum lugar os dois ramos se juntam novamente, e e a regra de ouro da programao estruturada (entrada unica e sa unica tambm) ca da e continua verdadeira. Tal como na seqncia, um comando alternativo, por mais complexo que seja, pode ue ser substitu por unica caixa. do
verso de 10 de fevereiro de 2008 a

39

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO Repetio O terceiro bloco da programao estruturada a resposta ` necessidade ca ca e a de usar o comando de desvio. Perceba-se que aqui existe um desvio impl cito, j que ao a se terminar o bloco, h que se desviar para o in do mesmo, que o que caracteriza a cio e uma repetio. A restrio a obedecer no a ausncia de desvio de resto, imposs ca ca a e e vel de obedecer mas sim a regra da entrada e sa unicas. Em outras palavras no da a e proibido usar o desvio, desde que ele esteja contido em limites bem determinados. Tal como na seqncia e na alternativa, um comando de repetio, por maior ou ue ca mais complexo que seja, pode ser substitu por unica caixa. do A importncia desta descoberta para o software teve tanto impacto quanto a de que a qualquer forma lgica de hardware pode ser construida pelas combinaes de portas o co AND, OR e NOT. A grande vantagem dos trs elementos da programao estruturada que possuem e ca e a caracter stica de pacote ou caixa preta, uma vez que todos tem uma unica entrada e uma unica sa da. Isto signica que partes de programas construidos com estas estruturas podem ser tambm considerados pacotes, sempre com entradas e saidas unicas. Esta a e e melhor qualidade da programao estruturada, e por esta caracter ca e stica que o GOTO deve ser desprezado na construo de bons algoritmos. Tanto isto verdadeiro, que as ca e linguagens mais modernas, no tem mais a instruo de desvio, banida por perniciosa e a ca desnecessria. a

2.5

A mquina de Turing a

Embora a humanidade use o conceito de algoritmo h milnios (O de MDC devido a a e e Euclides), e o prprio nome algoritmo derive do autor rabe de um tratado de lgebra o a a escrito por volta de 800 dC, a denio precisa do que seja um algoritmo geral apenas ca e de 1930. Ela devida a Turing, atravs do seu conceito de Mquina de Turing. Esta e e a no uma mquina real, sendo apenas uma abstrao matemtica, da o seu poder de a e a ca a encanto. Em 1900, o matemtico alemo Hilbert apresentou em um congresso uma lista de a a problemas que segundo ele estariam ocupando as mentes matemticas no sculo que a e ora se iniciava. O dcimo problema de Hilbert, dizia: ...haver algum procedie a mento mecnico geral que possa em princ a pio resolver todos os problemas da matemtica ? 1 a Em 1937, Turing respondeu a esta pergunta atravs do conceito de Mquina de e a Turing. Ela composta por um nmero nito de estados, ainda que possa ser muito e u grande. Deve tratar um input innito. Tem um espao exterior de armazenagem tambm c e innito. Turing imaginou o espao exterior para dados e armazenamento como sendo c uma ta, que pode mover-se para frente e para trs. Alm disso a mquina pode ler a e a e escrever nesta ta. A ta est composta por quadrados (ou seja, o nosso ambiente a discreto). Apenas 2 s e mbolos podem ser escritos nos quadrados da ta, digamos 0 signicando quadrado em branco e 1 (quadrado preenchido), ou vice-versa. Isto posto, lembremos que: 1. os estados internos do aparelho so nitos em nmero a u 2. o comportamento da mquina totalmente determinado pelo seu estado interior a e e pelo input.
1 Eis o problema original, 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 coecients: to devise a process according to which it can be determined by a nite number of operations whether the equation is solvable in rational integers

88-08, Pedro Kantek

40

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO Ou seja, dado o estado inicial e um s mbolo de input, o aparelho deve ser determin stico 2 . Logo ele,
muda seu estado interno para outro, e/ou Muda o simbolo que foi lido pelo mesmo ou por outro, e/ou movimenta-se para a direita ou para a esquerda, 1 quadrado, e/ou Decide se continua ou interrompe e para.

Denio de uma mquina de Turing Para especicarmos nossa mquina de Turca a a ing, 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.PARE 2 1 66 1 E Esta denio acima, adequada para a tarefa de numerao das Mquinas de Turca e ca a ing, fenmeno esse que central na teoria. Entretanto, para operar com esta mquina, 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 mquinas de Turing Para ver isso funcionando, precisa-se numerar as a mquinas de Turing. Necessita-se um pouco de esperteza aqui. Primeiro, converte-se D, a E, PARE, e v rgula como os nmeros 2, 3, 4, 5 e 6. Ou usando um sistema unrio, u a 110, 1110, 11110, 111110 e 1111110. Zero ser 0, e 1 ser 10, como j se viu. As colunas a a a 4 e 5 nas tabelas no precisam separao, j que o contedo da coluna 5 apenas 1 ou a ca a u e zero e sempre ocupa 1 caracter. Pode-se dar ao luxo de no codicar nenhuma seta, nem nada do que as antecede a (colunas 1, 2 e 3) desde que se organize os comandos em rigorosa ordem crescente (e tomando cuidado para preencher comandos que no modo tradicional no seriam escritas a por nunca ocorrerem na mquina). a Fazendo tudo isso, e escrevendo toda a programao da mquina que soma 1 a um ca a nmero unrio, ela ca: u a 101011011010010110101001110100101101011110100001110100101011 10100010111010100011010010110110101010101101010101101010100. Convertendo este nmero binrio para decimal chegamos a 450813704461563958982113775643437908 u a O que signica que a mquina que soma 1 em unrio a 450.813.704.461.563.958.982.113.775.643.437.908a a a e
2 um fenmeno deterministico quando gera sempre o mesmo resultado a partir das mesmas condies o e co iniciais. Por exemplo, soltar um corpo em queda livre. Ao contrrio um fenmeno probabil a o stico (ou randmico ou estocstico) o fenmeno no qual dadas as mesmas condies iniciais o resultado o a e o co e imprevis vel. Por exemplo, lanar um dado c

verso de 10 de fevereiro de 2008 a

41

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO mquina de Turing. Naturalmente, mudando-se (otimizando-se) alguma coisa na proa gramao, esta mquina muda de nmero. ca a u A mquina que soma 1 em unrio a 177.642a mquina. A que multiplica 2 em a a e a binrio expandido 10.389.728.107a mquina e a que multiplica por 2 um nmero unrio a e a u a a 1.492.923.420.919.872.026.917.547.669 a mquina. e a E assim vai. A T7 , no corretamente especicada, j que existem uma seqncia e a a ue de 5 uns, e ela emperra ao processar tal seqncia. ue Mquina Universal de Turing Teremos uma mquina U, que antes de mais nada a a ler as informaes na ta de entrada para que ela passe a se comportar como a mquina a co a T. Depois disso vem os dados de input que seriam processados pela mquina T, mas que a sero pela U, operando como se fosse a T. a Dizendo que quando a n-sima mquina de Turing atua sobre o nmero m produz e a u o nmero p, podemos escrever Tn (m) = p. Podemos pensar nesta relao como sendo u ca uma funo de 2 parmetros (n e m) que leva a p. Esta funo, pelo que vimos ca a ca e totalmente algoritmica. Logo, ela pode ser realizada por uma mquina de Turing, a a quem chamaremos de U . Ento, fornecendo o par (n, m) a U , obtemos como resposta a p. Podemos escrever U (n, m) = Tn (m) A mquina U quando alimentada primeiro com o nmero n, passa a se comportar a u como a Tn Como U uma mquina de Turing, ela uma Talgumacoisa . Quanto essa alguma e a e e coisa ? E mais ou menos 7.24 101688 , ou seja o nmero 724 seguido de 1686 zeros. u Todos os computadores modernos, desde um humilde Z80 at um Cray multi-vetorial e so mquinas de Turing. a a Acabamos de ser apresentados a um moderno computador: em U (n, m) = p, U o e hardware, n o software (ou programa), m so os dados de entrada e nalmente p o e a e resultado esperado. Para efeito de entender a MT, pode-se desenhar algo como segue: Usar como modelo a MT que multiplica por 2 em unrio Construir o modelo acima no quadro e depois a testar as sequencias 000010000, 00001100000 e 00001110000. Todas vo funcionar. a

2.6
2.6.1

Linguagens de programao ca
Assembler

O assembler no uma linguagem de alto nivel. E apenas um tradutor de cdigos a e o e portanto est muito prximo da linguagem de mquina. Utiliz-lo um autntico a o a a e e calvrio, j que todas as operaes que o computador precisa realizar cam por conta a a co do programador. A produtividade muito baixa, e a unica vantagem que se consegue e e a ecincia: os programas voam. e Por outro lado, tamanha aderncia `s entranhas da mquina cobra seu preo: na e a a c mudana de plataforma tecnolgica um monte de coisas precisa ser reestudado e recic o clado. No uma boa idia programar prossionalmente em assembler. Mas, quem domina a e e esta tcnica, bastante valorizado no mercado. Mesmo que trabalhando em outras e e linguagens, quem conhece o assembler, conhece o interior da mquina. Sem dvida a u alguma, isto tem o seu valor. A seguir um trecho pequeno de um programa em assembler para plataforma Intel. L100: MOV AH,2AH ;pega a data
88-08, Pedro Kantek

42

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO

INT 21H PUSH AX ;DEPOIS VOU DAR POR EXTENSO MOV BX,10 MOV DI,OFFSET DIA MOV AH,0 MOV AL,DL DIV BL OR AX,3030H STOSW MOV AL," " STOSB

MOV AH,0 MOV AL,DH PUSH AX ;DEPOIS VOU DAR POR EXTENSO DIV BL OR AX,3030H STOSW MOV AL," " STOSB

2.6.2

Fortran

Fortran uma linguagem muito antiga, originalmente sugerida pela IBM na dcada de e e 50. Seu texto se assemelha a uma descrio matemtica e de fato, FORTRAN signica ca a
verso de 10 de fevereiro de 2008 a

43

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO FORmula TRANslation. E, ou pelo menos era, uma linguagem franciscana de to pobre a em recursos. Foi a unica linguagem ensinada em escolas de engenharia at a dcada de e e 80. O primeiro compilador de FORTRAN foi desenvolvido para o IBM 704 em 1954-57 por uma equipe da IBM cheada por John W. Backus. A incluso de um tipo de dados de nmero complexo na linguagem tornou a lina u guagem Fortran particularmente apta para a computao cient ca ca. As principais reviso so a Fortran 66, 77, 90 e 95. A mais famosa e usada a a a e Fortran 90. Sua principal vantagem a ecincia em calculo numrico pesado. e e e A seguir, um exemplo de FORTRAN C 1 2 3 4 5 6 C2345678901234567890123456789012345678901234567890123456789012345 PROGRAM BASKHARA C REAL A,B,C, DELTA, X1,X2, RE, IM C PRINT *, "Este programa resolve uma equa~o de 2o.grau" ca PRINT *, "do tipo: a*x**2 + b*x + c = 0" C PRINT 10, "Digite a,b,c: " 10 FORMAT(A,1X,$) 20 READ(*,*,ERR=20) A,B,C C DELTA=B*B-4.*A*C C IF (DELTA.GT.0) THEN ! (DUAS RAIZES REAIS) X1=(-B-SQRT(DELTA))/(2.*A) X2=(-B+SQRT(DELTA))/(2.*A) PRINT *, "RAIZES: X1=",X1 PRINT *, " X2=",X2 ELSE IF (DELTA.EQ.0) THEN ! (DUAS RAIZES REAIS IGUAIS) X1=-B/(2.*A) X2=X1 PRINT *, "RAIZES: X1=X2=",X1 ELSE ! (DUAS RAIZES COMPLEXAS) RE=-B/(2.*A) IM=SQRT(-DELTA)/(2.*A) PRINT *, "RAIZES COMPLEXAS: X1=",RE," -",IM,"i" PRINT *, " X2=",RE," +",IM,"i" ENDIF C END

2.6.3

Lisp

LISP a segunda linguagem de alto nivel mais antiga. e O LISP nasce como lho da comunidade de Inteligncia Articial. Na origem, 4 e grupos de pessoas se inseriram na comunidade de IA: os lingistas (na busca de um u tradutor universal), os psiclogos (na tentativa de entender e estudar processos cerebrais o humanos), matemticos (a mecanizao de aspectos da matemtica, por exemplo a a ca a demonstrao de teoremas) e os informticos (que buscavam expandir os limites da ca a cincia). e
88-08, Pedro Kantek

44

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO O marco inicial o encontro no Dartmouth College em 1956, que trouxe duas e conseqncias importantes: a atribuio do nome IA e a possibilidade dos diferentes ue ca pesquisadores se conhecerem e terem suas pesquisas beneciadas por uma interfecundaao intelectual. c A primeira constatao foi a de que linguagens existentes privilegiavam dados numrica e cos na forma de arrays. Assim, a busca foi a criao de ambientes que processassem ca s mbolos na forma de listas. A primeira proposta foi IPL (Information Processing Language I, por Newel e Simon em 1956). Era um assemblo com suporte a listas. A IBM a engajou-se no esforo, mas tendo gasto muito no projeto FORTRAN decidiu agregar-lhe c capacidade de listas, ao invs de criar nova linguagem. Nasceu a FLPL (Fortran List e Processing Language). Em 1958, McCarthy comeou a pesquisar requisitos para uma linguagem simblica. c o Foram eles: recurso, expresses condicionais, alocao dinmica de listas, desalocao a o ca a ca automtica. O FORTRAN no tinha a menor possibilidade de atend-las e assim Mca a e Carthy junto com M. Minsky desenvolveu o LISP. Buscava-se uma funo Lisp Universal ca (como uma mquina de Turing Universal). A primeira verso (chamada LISP pura) era a a completamente funcional. Mais tarde, LISP foi sofrendo modicaes e melhoramenco tos visando eliminar inecincias e diculdades de uso. Acabou por se tornar uma e linguagem 100% adequada a qualquer tipo de resoluo de problema. Por exemplo, o ca editor EMACS que um padro no mundo UNIX est feito em LISP. e a a Inmeros dialetos LISP apareceram, cada um queria apresentar a sua verso como u a sendo a melhor. Por exemplo, FranzLisp, ZetaLisp, LeLisp, MacLisp, Interlisp, Scheme, T, Nil, Xlisp, Autolisp etc. Finalmente, como maneira de facilitar a comunicao entre ca todos estes (e outros) ambientes, trabalhou-se na criao de um padro que foi denomca a inado Common Lisp. Como resultado o Common Lisp cou grande e um tanto quanto heterogneo, mas ele herda as melhores prticas de cada um de seus antecessores. e a Seja agora um exemplo de uma funo lisp: ca > (defun li (L1 L2) ; 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

2.6.4

Prolog

O nome Prolog para a linguagem concreta foi escolhido por Philippe Roussel como uma abreviao de PROgrammation LOGique. Foi criada em meados de 1972 por Alain ca Colmerauer e Philippe Roussel, baseados no conceito de Robert Kowalski da interpretaao procedimental das clusulas de Horn. A motivao para isso veio em parte da c a ca vontade de reconciliar o uso da lgica como uma linguagem declarativa de representao o ca do conhecimento com a representao procedimental do conhecimento. ca *Histrico o
Precursores: Newell, Shaw e Simon, com sua Logic Theory Machine, que buscava a prova automtica de teoremas, em 1956. a Robinson, 65, no artigo A machine oriented logic based on the resolution principle. Propunha o uso da frmula clausal, do uso de resoluo e principalmente do o ca algoritmo de unicao. ca
verso de 10 de fevereiro de 2008 a

45

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO


Green em 1969, escreveu o Question Answer System, que respondia perguntas sobre um dado dom nio. Na mesma poca, Winograd escreveu o software Planner. e Todos estes tinham problemas de ecincia, por causa, entre outras coisas, da e exploso combinatria. a o Em 1970, em Edinbourg, Kowalski bolou o seguinte esquema:

Limitou a expressividade `s clusulas de Horn a a Criou uma estratgia de resoluo, no completa, mas muito eciente e ca a
Em 72, em Edinbourg e Marselha, surgiu a linguagem PROLOG. Em 77, Waren escreve o primeiro compilador de PROLOG. Comea o sucesso de c PROLOG na Europa. Nos EUA, sempre deu-se maior ateno ao LISP. ca Foi a base para o computador de 5a gerao do Japo. ca a

A seguir, um pequeno trecho de uma sesso PROLOG: a parent(maria,jorge):-true. parent(joao,jorge):-true. parent(jorge,ana):-true. ... parent(cris,paulo):-true. Da podemos perguntar: : ? parent(joao,jorge) YES ? parent(celia,cris) NO ? parent(cris,carlos) NO ? parent(X,jorge) X=maria X=joao no (significando acabou) ? parent(X,Y) X=maria Y=jorge X=joao Y=jorge ... ? parent(X,Y),parent(Y,paulo) X=jorge Y=cris

[ler esta vrgula como OU]

2.6.5

Cobol

O nome vem da sigla de COmmon Business Oriented Language (Linguagem Comum Orientada aos Negcios), que dene seu objetivo principal em sistemas comerciais, o nanceiros e administrativos para empresas e governos. O COBOL foi criado em 1959 pelo Comit de Curto Prazo, um dos trs comits proe e e postos numa reunio no Pentgono em Maio de 1959, organizado por Charles Phillips a a
88-08, Pedro Kantek

46

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO do Departamento de Defesa dos Estados Unidos. O Comit de Curto Prazo foi fore mado para recomendar as diretrizes de uma linguagem para negcios. Foi constitu o do por membros representantes de seis fabricantes de computadores e trs rgos govere o a namentais, a saber: Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Rand, e Sylvania Electric Products, e a Fora Area dos Estados c e Unidos, o David Taylor Model Basin e a Agncia Nacional de Padres (National Bureau e o of Standards ou NBS). Este comit foi presidido por um membro do NBS. Um comit de e e Mdio Prazo e outro de Longo Prazo foram tambm propostos na reunio do Pentgono. e e a a Entretanto, embora tenha sido formado, o Comit de Mdio Prazo nunca chegou a fune e cionar; e o Comit de Longo Prazo nem chegou a ser formado. Por m, um subcomit e e do Comit de Curto Prazo desenvolveu as especicaes da linguagem COBOL. e co As especicaes foram aprovadas pelo Comit de Curto Prazo. A partir da foram co e aprovadas pelo Comit Executivo em Janeiro de 1960, e enviadas ` grca do governo, e a a que as editou e imprimiu com o nome de Cobol 60. O COBOL foi desenvolvido num per odo de seis meses, e continua ainda em uso depois de mais de 40 anos. O COBOL foi denido na especicao original, possuia excelentes capacidades de ca autodocumentao, bons mtodos de manuseio de arquivos, e excepcional modelagem de ca e dados para a poca, graas ao uso da clusula PICTURE para especicaes detalhadas e c a co de campos. Entretanto, segundo os padres modernos de denio de linguagens de o ca programao, tinha srias decincias, notadamente sintaxe prolixa e falta de suporte da ca e e variveis locais, recorrncia, alocao dinmica de memria e programao estruturada. a e ca a o ca A falta de suporte ` linguagem orientada a objeto compreens a e vel, j que o conceito era a desconhecido naquela poca. Segue o esqueleto de um programa fonte COBOL. e IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. * ENVIRONMENT DIVISION. * DATA DIVISION. * PROCEDURE DIVISION. PARA-1. DISPLAY "Al^, Mundo.". o * STOP RUN.

2.6.6

APL

Ela nasceu do trabalho de um professor de matemtica canadense de nome Keneth a Iverson. Sua proposta original era a de produzir uma nova notao matemtica, menos ca a sujeita `s ambigidades da notao convencional. a u ca Na dcada de 60, trabalhando na IBM em conjunto com Adin Falco, ambos produzie ram a primeira verso de APL, quando um interpretador da linguagem cou dispon a vel. A principal caracter stica de APL o uso de um conjunto especial de caracteres que e incluem algumas letras gregas (rho, iota...), s mbolos matemticos convencionais (o sinal a de vezes, o de dividido...) e alguns s mbolos especialmente inventados. Este fato sempre limitou a disseminao da linguagem. At o advento das interfaces ca e grcas, como o windows, por exemplo, exigia-se um hardware especial para poder a programar em APL. Programas em APL em geral sempre so muito pequenos, embora poderosos. A a linguagem est preparada para tratar arranjos de grandes dimenses. Por exemplo, a o quando em APL se escreve A+B, se A e B forem escalares (isto um nmero unico), e u
verso de 10 de fevereiro de 2008 a

47

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO a resposta tambm o ser. Se A e B so vetores de 100 nmeros, a resposta tambm o e a a u e ser. Idem para matrizes e at arrays-nd. Em algumas verses de APL este n chega a a e o 256 dimenses. o Este um comando EDIT (troca algo, de... para...) e

2.6.7

Basic

A linguagem BASIC (acrnimo para Beginners All-purpose Symbolic Instruction Code), o foi criada, com ns didticos, pelos professores John G. Kemeny e T. Kurtz em 1963 no a Dartmouth College. BASIC tambm o nome genrico dado a uma grande fam de linguagens de e e e lia programao derivadas do Basic original. Provavelmente existem mais variaes de ca co Basic do que de qualquer outra linguagem de programao. ca Basic uma linguagem imperativa de alto n e vel, pertencente ` terceira gerao, que a ca normalmente interpretada e, originalmente, no estruturada, por ter sido fortemente e a baseada em FORTRAN II. Um programa em Basic tradicional tem suas linhas numeradas, sendo que quase que e padro usar nmeros de 10 em 10 (o que facilita a colocao de linhas intermedirias). a u ca a Os comandos so poucos, simples e facilmente compreens a veis na l ngua inglesa (LET, IF, ...). Um programa em Basic, que calcula a frmula de Bhaskara caria 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,B,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",(-B+SQR(D))/(2*A) PRINT "SEGUNDA SOLUCAO",(-B-SQR(D))/(2*A) GOTO 20 PRINT "SOLUCAO UNICA",(-B)/(2*A) GOTO 20 PRINT "A DEVE SER DIFERENTE DE ZERO" GOTO 20 PRINT "NAO HA SOLUCOES REAIS" GOTO 20 DATA 10,20,1241,123,22,-1 END 48
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO O programa demonstra a falta de estruturao da linguagem original, pois o IF funciona ca como um GOTO condicional, o que favorece o cdigo espaguete. o

2.6.8

Clipper

Tudo comeou com o dbase, que foi o precursor de bancos de dados para micros. Por c volta de 83, 84 surgiu o dbase 2 (nunca houve o 1) para micros de 8 bits com memrias o t picas de 64Kb e um ou dois disquetes de 8 polegadas e cerca de 512 KB de capacidade em cada um. O dbase j era um gerenciador de dados, dentro da viso relacional, com m a a nima redundncia de dados e com todas as garantias de acesso e uma linguagem estruturada, a no melhor padro, de uso geral, capaz de garantir um aumento na produtividade na a programao. ca A histria do dBASE comea em 74, no Jet Propulsion Laboratory, conhecido como o c JPL, e instalado em Pasadena, Califrnia. o Nesta instalao da NASA trabalhava Jeb Long, pesquisador que lidava com dados ca obtidos nas pesquisas espaciais atravs de naves no tripuladas. Estes, por serem em e a grande nmero, comearam a trazer problemas e dissabores a Jeb Long, que desenvolveu, u c ento, um programa de computador capaz de gerenciar tais informaes. Este programa a co com nome de JPLDIS, foi conclu e alcanou razovel sucesso tendo sido bastante do c a comentado pelo pessoal tcnico. Foi o que bastou para que um analista de sistemas e (Wayne Ratli) comeasse a desenvolver um programa gerenciador de dados, genrico, c e mas tendo como modelo o JPLDIS. Rapidamente o novo trabalho tornou-se melhor do que o original, e Ratli desenvolveuo cada vez mais. Em 79, Ratli achou que o programa j estava maduro e pronto para enfrentar o a mercado, e ele foi anunciado com o nome de VULCAN. Foi, entretanto, um fracasso: no se chegou a vender sequer 50 cpias. a o Alguns meses depois, um grande distribuidor de programas de micros, George Tate, tomou conhecimento do dBASE. Testou-o e cou entusiasmado. Achou que o que faltava a Ratli era suporte comercial, uma vez que seu trabalho era muito bom. Rapidamente providenciaram-se algumas mudanas cosmticas no proc e grama, seu nome foi mudado para dBASE II (nunca houve o dBASE I, tratava-se de estratgia comercial, para apresentar o produto como um melhoramento), e uma nova e empresa (ASHTON TATE) foi criada para vender este produto. Em pouco tempo, dBASE tornou-se um marco na histria de softwares para microo computadores. A grande vantagem de um banco de dados retirar a amarrao entre programas e e ca dados. A explicao desta vantagem que dados so muito mais estveis do que os proca e a a cedimentos (=programas). Separando-os garante-se que longevidade aos dados, que em geral so os mais custosos para adquirir. a O dbase como linguagem era interpretado, o que trazia desempenho p nas aplio caes, alm da eventual falta de segurana (qualquer um podia alterar os dados). Para co e c corrigir estas duas decincias, logo surgiram inmeros compiladores, dos quais o mais e u famoso foi o CLIPPER. Eis um programa em CLIPPER, por acaso um trecho do programa que emite provas aleatrias e diferentes: o w_nomq = space(8) w_file = "LIXO " @ 08,45 say "Nome Arquivo: " get w_file pict "@!" @ 09,5 say "Qual a turma ? " get w_turm pict "@!"
verso de 10 de fevereiro de 2008 a

49

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO @ 09,40 say "OU arquivo de nomes " get w_nomq pict "@!" oba := 1 do while oba == 1 oba := 0 W_mess := " " @ 11,15 say "Questao 1:" @ 12,20 say "Topico: " get w_top1 @ 12,50 say "Grupo: " get w_gru1 pict "99"

2.6.9

Natural

NATURAL uma linguagem de quarta gerao que pode ser utilizada, indistintamente e ca por usurios nais trabalhando em auto-servio, ou por programadores prossionais em a c suas atividades normais no CPD. Embora possa ler arquivos seqenciais, o Natural mais indicado para ler bancos u e de dados ADABAS, que a partir da dcada de 90 foi o padro de bancos de dados em e a nosso pa e em boa parte do mundo. 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,ZZZ,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.6.10

Pascal

E uma linguagem de programao estruturada que recebeu este nome em homenagem ca ao matemtico Blaise Pascal. Foi criada em 1970 pelo suco Niklaus Wirth, tendo em a mente encorajar o uso de cdigo estruturado. o Segundo o autor, Pascal foi criada simultaneamente para ensinar programao estruca turada e para ser utilizada em sua fbrica de software. A linguagem reete a liberao a ca pessoal de Wirth aps seu envolvimento com a especicao de ALGOL 68, e sua sugo ca esto para essa especicao, o ALGOL W. a ca A linguagem extremamente bem estruturada e muito adequada para ensino de e linguagens de programao. E provavelmente uma das linguagens mais bem resolvidas ca entre as linguagens estruturadas, e certamente um dos exemplos de como uma linguagem especicada por uma pessoa pode ser bem melhor do que uma linguagem especicada por um comit. e
88-08, Pedro Kantek

50

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO Pascal originou uma enorme gama de dialetos, podendo tambm ser considerada uma e fam de linguagens de programao. Grande parte de seu sucesso se deve a criao, na lia ca ca dcada de 80, da linguagem Turbo Pascal, inicialmente dispon e vel para computadores baseados na na arquitetura 8086 (com verses para 8080 no seu in o cio). Pascal normalmente uma das linguagens de escolha para ensinar programao, e ca junto com Scheme, C e Fortran. S mais recentemente o Java entrou nesta lista. o Comercialmente, a linguagem foi sucedida pela criao da linguagem Object Pascal, ca atualmente utilizada nas IDEs Borland Delphi, Kylix e Lazarus. Academicamente, seus sucessores so as linguagens subseqentes de Niklaus Wirth: Modula-2 e Oberon. a u A partir da verso 2005, o Delphi passou a se referir a sua linguagem de programao a ca como Delphi Language. Assim como a Linguagem C, que padronizado pela ANSI (Ansi C), o Pascal possui e padres pela ISO, como o Pascal Standard e o Advanced Pascal. Um exemplo: o program Teste; var a,b:integer; uses crt; begin writeln (Digite um nmero para A); u readln (a); writeln (Digite o nmero para B); u readln (b); if (a > b) then { Se A maior que B ent~o } e a writeln (A maior que B) e else { Sen~o... } a writeln (B maior que A); e end

2.6.11

C uma linguagem de programao estruturada e padronizada criada na dcada de e ca e 1970 por Dennis Ritchie e Ken Thompson para ser usada no sistema operacional UNIX. Desde ento espalhou-se por muitos outros sistemas operacionais, e tornou-se uma das a linguagens de programao mais usadas. ca C tem como ponto-forte a sua ecincia e a linguagem de programao de prefere e ca ncia para o desenvolvimento de software bsico, apesar de tambm ser usada para e a e desenvolver aplicaes. E tambm muito usada no ensino de cincias da computao, co e e ca mesmo no tendo sido projetada para estudantes e apresentando algumas diculdades a no seu uso. Outra caracter stica importante de C sua proximidade com a linguagem e de mquina, que permite que um projetista seja capaz de fazer algumas previses de a o como o software ir se comportar ao ser executado. a C tem como ponto fraco a falta de proteo que d ao programador. Praticamente ca a tudo que se expressa em um programa em C pode ser executado, como por exemplo pedir o vigsimo membro de um vetor com apenas dez membros. Os resultados muitas e vezes totalmente inesperados e os erros so dif a ceis de encontrar. Muitas linguagens de programao foram inuenciadas por C, sendo que a mais ca utilizada atualmente C++, que por sua vez foi uma das inspiraes para Java. O e co exemplo: #include <stdio.h> struct pessoa { unsigned short idade;
verso de 10 de fevereiro de 2008 a

51

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO char nome[51]; /*vector de 51 chars para o nome*/ unsigned long bi; }; /*estrutura declarada*/ int main(void) { struct pessoa Sousa={16,"Diogo Sousa",123456789}; /*declaracao de uma variavel tipo struct pessoa com o nome Sousa*/ printf("Idade: %d\n",(int)Sousa.idade); /* "%d" espera um int */ printf("Nome: %s\n",Sousa.nome); printf("BI: %lu\n",Sousa.bi); return 0; }

2.6.12

Java

Java uma linguagem de programao orientada a objeto desenvolvida na dcada de 90 e ca e pelo programador James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que so compiladas para cdigo nativo, a linguagem Java a o e compilada para um bytecode que executado por uma mquina virtual. e a Desde seu lanamento, em maio de 1995, a plataforma Java foi adotada mais rapic damente do que qualquer outra linguagem de programao na histria da computao. ca o ca Em 2003 Java atingiu a marca de 4 milhes de desenvolvedores em todo mundo. Java o continuou crescendo e hoje uma referncia no mercado de desenvolvimento de software. e e Java tornou-se popular pelo seu uso na Internet e hoje possui seu ambiente de execuo ca presente em web browsers, mainframes, SOs, celulares, palmtops e cartes inteligentes, o entre outros. Principais Caracter sticas da Linguagem Java A linguagem Java foi projetada tendo em vista os seguintes objetivos: Orientao a objeto - Baseado no modelo de Smalltalk e Simula67 ca Portabilidade - Independncia de plataforma - write once run anywhere e Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperao com ca protocolos TCP/IP, como HTTP e FTP Segurana - Pode executar programas via rede com restries de execuo c co ca Sintaxe similar a Linguagem C/C++ Facilidades de Internacionalizao - Suporta nativamente caracteres Unicode ca Simplicidade na especicao, tanto da linguagem como do ambientede execuo (JVM) ca ca E distribu com um vasto conjunto de bibliotecas (ou APIs) da Possui facilidades para criao de programas distribu ca dos e multitarefa (mltiplas linhas u de execuo num mesmo programa) ca Desalocao de memria automtica por processo de coletor de lixo (garbage collector) ca o a Carga Dinmica de Cdigo - Programas em Java so formados por uma coleo de classes a o a ca armazenadas independentemente e que podem ser carregadas no momento de utilizao. ca Eis um exemplo: public abstract class Animal { public abstract void fazerBarulho(); } public class Cachorro extends Animal { public void fazerBarulho() { System.out.println("AuAu!"); }
88-08, Pedro Kantek

52

verso de 10 de fevereiro de 2008 a

CAP ITULO 2. CIENCIA DA COMPUTACAO } public class Gato extends Animal { public void fazerBarulho() { System.out.println("Miau!"); } }

2.6.13

PHP

PHP (um acrnimo recursivo para PHP: Hypertext Preprocessor) uma linguagem de o programao de computadores interpretada, livre e muito utilizada para gerar contedo ca u dinmico na Web. a A linguagem surgiu por volta de 1994, como um subconjunto de scripts Perl criados por Rasmus Lerdof, com o nome Personal Home Page Tools. Mais tarde, em 1997, foi lanado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta c Forms Interpreter, que era na verdade um interpretador de comandos SQL. Trata-se de uma linguagem modularizada, o que a torna ideal para instalao e uso ca em servidores web. Diversos mdulos so criados no repositrio de extenses PECL o a o o (PHP Extension Community Library) e alguns destes mdulos so introduzidos como o a padro em novas verses da linguagem. Muito parecida, em tipos de dados, sintaxe e a o mesmo funes, com a linguagem C e com a C++. Pode ser, dependendo da congurao co ca do servidor, embutida no cdigo HTML. Existem verses do PHP dispon o o veis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, IRIX e Solaris Construir uma pgina dinmica baseada em bases de dados simples, com PHP. Este a a e prov suporte a um grande nmero de bases de dados: Oracle, Sybase, PostgreSQL, e u InterBase, MySQL, SQLite, MSSQL, Firebird etc, podendo abstrair o banco com a biblioteca ADOdb, entre outras. PHP tem suporte aos protocolos: IMAP, SNMP, NNTP, POP3, HTTP, LDAP, XML RPC, SOAP. E poss abrir sockets e interagir com outros protocolos. E as bibliotecas vel de terceiros expandem ainda mais estas funcionalidades. Veja um exemplo de PHP <? ... $tipss =mysql_result($result,0,SSERVTIPSS); $porss =mysql_result($result,0,SSERVPORSS); $daali =mysql_result($result,0,SSERVDAALI); $anexo =mysql_result($result,0,SSERVANEXO); $query = "select * from ANDAM where ANDAMNSERV =$nserv1 " ; $result = mysql_query($query); $quantos = mysql_num_rows($result); $quantos++; ?> <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>
verso de 10 de fevereiro de 2008 a

53

88-08, Pedro Kantek

CAP ITULO 2. CIENCIA DA COMPUTACAO

2.6.14

Para os que acharam APL uma linguagem meio sem ps nem cabea, eis aqui J. Olhando e c para o J, o APL passa a ser to comportada quanto um COBOL da dcada de 70. a e Para entender o J, precisamos estudar a vida do cara que inventou o APL, o canadense Ken Iverson. Na minha opinio, o sujeito foi um gnio. Coloco-o sem nenhum medo a e de errar na galeria dos grandes matemticos da humanidade, talvez o primeiro (junto a com Mandelbroot) que tenha realmente conseguido casar com sucesso a matemtica e a a computao. ca Depois de propor o APL como uma notao matemtica (dcada de 50), de liderar ca a e o grupo que converteu o APL em linguagem de programao (dcada de 60 na IBM) e ca e de liderar a popularizao da linguagem (anos 70 e comeos dos 80), em meados dos 80, ca c ele chegou a algumas concluses: o
o uso de um alfabeto no usual (para ser educado), restringia o uso do APL a (lembremos que ainda no havia o windows e portanto para usar APL havia que a comprar hardware especializado - e caro). o desenvolvimento continuado por 30 anos da linguagem apontou algumas inconsistncias tericas no modelo. No esqueamos que o Iverson era um matemtico e o a c a da pesada o custo que o APL sempre teve inviabilizava seu uso pelos menos aquinhoados

Dessas elocubraes nasceu a linguagem J. O nome no tem explicao, exceto a co a ca dada por um de seus autores (Why J ? It is easy to type.). H quem diga que J segue a Ino alfabeto, sendo este Ia notao Iverson. Seja como for, J no tem nada a ver ca a com Java. Para maiores detalhes veja www.jsoftware.com. Eis a seguir um programa J: gerasima =: 3 : 0 r=.(2$y)$(1+?200$2 2 2 2 2 3 3 3 4 4 4 5 6)*2+-<.1.5*?200$2 1 1 1 2 1 2 xx=.(y?(<.y*1.6)) z=.+/|:r*($r)$xx r,.((y,1)$z),.(y,1)$xx ) Equivale ao programa gerasima do workspace vivo128, que gera um sistema de n incgo nitas e n equaes, depois o resolve para obter os termos independentes e possibilitar co propor ao aluno que descubra as incgnitas. o

88-08, Pedro Kantek

54

verso de 10 de fevereiro de 2008 a

Cap tulo 3

Escrevendo algoritmos
Para escrever algoritmos usando portugus estruturado (portugol), primeiro necessita-se e estabelecer algumas regras de notao e de s ca ntaxe. Comea-se descrevendo qual a forma c de ler os quadros indicativos da s ntaxe da linguagem. Esta notao resume a linguagem de especicao de algoritmos. Ela um apanhado ca ca e de no m nimo 4 linguagens (Java, PASCAL, CLIPPER e APL), e tem a nalidade de expressar o funcionamento do algoritmo em bom portugus, da maneira mais clara pose s e completamente descompromissado das idiossincrasias dessas e outras linguagens vel de programao. ca S mbolo no formato Signicado palavra Na escrita desse comando, palavradeve ser escrita exatamente como aparece no formato. <palavra> <palavra> deve ser substitu do por algum tipo de palavra aceitvel neste contexto a [ palavra ] ou [ < O fato de algo estar escrito entre colchetes sigpalavra > ] nica que OPCIONAL e ... (reticncias) e Repetio (de 0 a n vezes) de um determinado ca item. As reticncias, `s vezes tambm aparee a e cem na omisso de uma parte opcional em um a comando qualquer { opo 1 | opo 2 | ... A barra vertical indica que uma de vrias ca ca a } opes deve ser a escolhida co Eis como usar esta tabela. Seja por hiptese a seguinte especicao de comando: o ca <nome> gostaria [muito] de {comer | beber}

A partir da especicao acima, seriam vlidos os comandos ca a Joo gostaria de beber a Maria gostaria muito de comer Antnio gostaria de comer... o

3.1

Nome

O elemento bsico da linguagem o nome, tambm conhecido como identicador. Sua a e e construo dada pelo diagrama a seguir ca e 55

CAP ITULO 3. ESCREVENDO ALGORITMOS

Dentro deste diagrama, (e nos prximos que tiverem este formato) qualquer caminho o seguido, levar a identicadores vlidos. Consideram-se letra, as 26 letras do alfabeto a latino maisculas, e d u gito, os 10 d gitos de 0 a 9. Deve-se atentar que o branco no a faz parte do rol de caracteres vlidos, o que faz com que o identicador no possa ser a a constitu de mais de uma palavra. Pode-se usar neste caso o separador ( ), chamado do sublinha. Atente-se para a importncia dos nomes criados pelo programador serem a escritos em maiscula. u Exemplos vlidos a NOME SOM_TERMOS RAIZ1 SALDO08 SALDO_09 Exemplos no vlidos a a nome (usa-se letras minsculas) u Saldo Devedor (usa-se duas palavras) SaldoDevedor (mistura-se letras maisculas e minsculas) u u 123SALDO (comea por um dgito numrico) c e Embora a maioria dos livros de lgica no faam distino entre o uso de maisculas o a c ca u e minsculas para efeito de estabelecimento de identicadores, aqui vai-se padronizar u nossos identicadores sempre EM LETRAS MAIUSCULAS. Isto pode incomodar um pouco no in cio, mas se revelar uma grande vantagem na anlise de algoritmos feitos a a por terceiros, ou mesmo fde autoria prpria, mas feitos h tempos. o a O autor do algoritmo tem total autoridade para nomear seus identicadores como queira. Entretanto, h uma regra de bom senso impl a cita. Cada identicador deve ter um nome o mais prximo poss o vel de sua funo. Exemplo: Se precisarmos um ca identicador para representar uma somatria, poderemos cham-lo de SOMA, SOMAT, o a SM, etc, mas nunca de ABC, ou XYZ, ou ainda AKLJHJKH. Quanto ao tamanho do identicador, tambm s h uma regra: BOM SENSO. Nem e o a to pequeno que que quase imposs a vel identic-lo pelo nome, nem to longo que a a seja cansativo escrev-lo. Exemplo. Ao gerar um identicador para conter a quantie dade total de horas trabalhadas deve-se cham-lo como QTHT, ou QTDHORAS, ou a HORTRAB, ou similar, mas seria um exagero chamar o identicador de QUANTIDADE DE HORAS TRABALHADAS NO MES. Finalmente, deve-se discutir se as palavras que compe o algoritmo devem ou no ser o a acentuadas. Parece uma discusso bizantina, mas no o necessariamente. Se o leitor a a e do algoritmo for um ser humano, pode-se acentu-lo sem nenhum problema. Entretanto, a se o algoritmo for no futuro processado por algum programa, h que se ter em mente, a que em geral, para qualquer programa diferente de a e esta regra vale para todas a e as letras. Tambm diferente de c. e c e
88-08, Pedro Kantek

56

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS

3.2

Variveis a

Ao identicador atribui-se um valor, que ser usado nas computaes futuras. Quando a co este valor pode variar ao longo do processamento, diz-se que o identicador representa uma varivel. (No contrrio, dir-se-ia que o identicador representa uma constante). a a Outra denio para varivel : Um lugar onde se guarda uma valor. ca a e Por norma do portugus estruturado, todas as variveis devem ser declaradas antes e a de poderem ser utilizadas. Chama-se ` ateno, pois esta no uma regra obrigatria. a ca a e o Inmeras linguagens de programao, permitem que se dena uma varivel no instante u ca a em que ela passa a ser necessria e em qualquer ponto do programa. (Exemplo: BASIC, a dbase, APL etc) Em portugol (e em Pascal, Cobol, Fortran, C, Java etc), isto no a e poss vel. Assim, nossos programas tero dois blocos: O primeiro o de denio de a e ca variveis, e o segundo o de procedimentos, sempre nesta ordem. a e

3.2.1

Tipos de variveis a

Existem cinco tipos de variveis bsicas em portugol: inteiro, real, caracter, lgico e a a o cadeia. Inteiro E uma varivel que pode conter nmeros inteiros (positivos ou negativos, no importa). a u a Exemplos: 5, 1009, -6730 etc. O conceito de inteiro familiar a ns. Qualquer operao e o ca de contagem, pode ser estabelecida a partir do conjunto dos valores inteiros. Uma quantidade discreta 1 (i.. enumervel) sempre pode ser processada com base nos inteiros. e a Embora possam ter uma denio formal, para ns suciente a seguinte descrio: Uma ca o e ca varivel inteira a que pode armazenar qualquer um dos nmeros do conjunto: a e u , ... (n + 1), n, ..., 2, 1, 0, 1, 2, ..., n, n + 1, ..., + Real E outra varivel numrica que pode conter qualquer nmero real, isto , inteiro ou a e u e fracionrio. Ex.: 1.5, -0.99, 1700,78 etc. Claramente salta aos olhos que armazenar a uma varivel real mais caro(em tempo e em recursos) do que processar uma varivel a e a inteira. Alis, esta uma das razes porque existem variveis inteiras. Outra a a e o a e caracter stica da enumerabilidade que no est presente no conjunto dos nmeros reais. a a u Caracter Uma varivel que pode conter um unico caracter, como uma letra, ou um unico d a gito. O real contedo de uma varivel caracter depende do cdigo bsico que est em uso. u a o a a Mas, por enquanto, pode-se simplicar esta questo dizendo que qualquer caracter que a esteja no teclado do computador pode ser colocado em uma varivel caracter. a Cadeia ou string E um tipo de varivel formado por um ou mais de um caracteres. Por exemplo, um nome: a JOSE, ou uma cidade como CURITIBAetc. Ou seja, a diferena entre uma varivel c a caracter e uma varivel cadeia que a primeira tem tamnho 1 (um unico caracter) e a a e segunda tem tamanho maior que um, ou seja, vrios caracteres. a
1 discreta

= quantia que exprime valores inteiros, objetos, coisas, enm grandezas no cont a nuas

verso de 10 de fevereiro de 2008 a

57

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS Lgico ou booleano o O nome booleando vem de George Boole, um matemtico. E uma varivel que pode a a conter apenas 2 valores, conhecidos pelas palavras: VERDADEIRO e FALSO. Algumas linguagens no tm este tipo (C ou APL, por exemplo) usando artif a e cios para simular o conceito.

O tipo cadeia traz consigo uma pequena diculdade, que a necessidade de estae belecer - quando da denio da varivel - qual o seu tamanho mximo, em nmero ca a a u de caracteres. Esta atitude necessria para informar a quem l o algoritmo (seja um e a e homem ou um computador) quanto de espao reservar para conter esta varivel. c a Esta diculdade no existe nas variveis numricas nem nas lgicas que tem tamanhos a a e o predeterminados e principalmente xos. Existe uma caracter stica das linguagens de programao conhecida como tipagem. ca H linguagens de tipagem forte (por exemplo Pascal) e as h de tipagem fraca (por a a exemplo C). Este conceito tem a ver com restries e vericaes que a linguagem deterco co mina ou executa a cada comando. A tipagem forte torna as linguagens um pouco mais demoradas, mas evita erros cometidos pelo programador ao no vericar as operaes a co que comandou. Este tipo de erro, de resto muitas vezes dif de localizar e corrigir, 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. Outra vertente de linguagens fracamente a tipadas quando a linguagem tem regras de converso entre tipos diversos e elas so e a a aplicadas antes de qualquer comando.

3.2.2

Cdigo de caracteres o

No momento de representar caracteres, aparece um problema: Qual sua lei de formao ca e representao ?. Tal problema no aparece nos nmeros: a matemtica ajuda. Entreca a u a tanto, no h uma aritmtica para caracteres, e portanto precisa-se construir uma srie a a e e de propriedades e relaes entre os caracteres. Para no criar um novo conceito, vai-se co a aproveitar o cdigo de representao padro em uso nos computadores atuais. Trata-se o ca a do cdigo ASCII (American standard Code for Information Interchange). A seguir, uma o parte do prprio: o

Cdigo de caracteres Existem diversos cdigos usados no mundo da computao. O o o ca mais usual o cdigo ASCII (American Standard Code for Intrechange of Informations), e o embora se usem tambm o BCD, EBCDIC e mais recentemente haja uma tendncia no e e uso do UNICODE. Como exemplo, eis uma parte do cdigo ASCII. o
88-08, Pedro Kantek

58

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS dec 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 carac sp ! # $ % & ( ) * + , . / 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 : ; < = > ? 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 { | }

ue e Esta seqncia ASCII, muito importante pois permite estabelecer o atributo de ordem no universo dos caracteres. Olhando para ela, podemos armar, por exemplo, que o caractere a menor do que o caractere b. Da mesma maneira, o aminsculo maior e u e do que o Amaisculo (alis, isto vale para todas as letras), e qualquer d u a gito numrico e menor do que qualquer letra. e Um especial cuidado deve ser tomado, pois esta no a unica seqncia poss a e ue vel, e nem sequer a melhor. Cada mquina e cada implementao pode ter a sua. Alguns outa ca ros cdigos: BRASCII (Cdigo padro BRASILEIRO para intercmbio de informaes), o o a a co EBCDIC (Extended binary-coded decimal interchange coded), Z-Code etc. Outra observao que na tabela ASCII no existem caracteres acentuados. Duas ca e a conseqncias advm deste fato: nem sempre se podem usar tais caracteres e se eles ue e forem usados, no se sabe qual a sua ordem no conjunto. Trocando em midos, se se a u solicitar a ordenao de uma lista de palavras contendo AMORA, ANCORA BROA, ca CAFE, ARROZ, CEREAL, no ser nenhuma surpresa se a resposta for AMORA, a a ARROZ, BROA, CAFE, CEREAL e ANCORA.

Exerc cio 3 Uma salada de frutas, produzida industrialmente leva ma, banana, abaca caxi e aucar nas propores de 1 Kg : 2 Kg : 0,5 Kg : 0,5 Kg respectivamente. Denir c co algoritmo que leia 4 quantidades representando os pesos dispon veis dos quatro ingredientes, calcule e escreva a quantidade de salada que poder ser construida, desprezando-se as quantiSe for lido s sero usadas logo total o a 10,10,10,10 5,10,2.5,2.5 20Kg dades que ultrapassam a proporo. Exemplos: ca 10,20,10,10 10,20,5,5 40Kg 10,10,1,1 2,4,1,1 8Kg Exerc cio 4 Imagine que voc tem uma entrada com um par de nmeros reais. Eles e u representam as dimenses x e y medidas em metros, de um retngulo. Escreva o algoritmo o a que leia esse par de nmeros e escreva x, y e a rea do retngulo de lados x e y, apenas se u a a o per metro deste mesmo retngulo for superior a 12.0 m. a Exerc cio 5 Dena e escreva uma funo que receba trs nmeros reais, encontre e ca e u devolva o maior deles.
verso de 10 de fevereiro de 2008 a

59

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS

Exerc cio 6 Dena um algoritmo capaz de comparar dois nmeros inteiros e positivos u e imprimir a mensagem IGUAIS ou DIFERENTES em funo dos valores de tais nmeros. ca u Eles sero considerados IGUAIS quando sua diferena for menor a 10% do maior nmero. a c u Sero considerados diferentes quando sua diferena for maior ou igual a 10% do valor do a c maior. O algoritmo termina quando for lido um nmero negativo. u Exerc cio 7 Dena e escreva um algoritmo que leia um nmero e determine se ele u e divis por 3. Se for o algoritmo deve imprimir a mensagem E DIVIS vel IVEL, e se no for a deve imprimir NAO E DIVIS IVEL . Exerc cio 8 Escrever um algoritmo que leia um conjunto de trs variveis que indicam e a respectivamente: Nome do funcionrio (cadeia-30), nmero de horas (inteiro) e valor da a u hora trabalhada (real). Se o nmero de horas maior que 40, calcule o valor a pagar, sabendo que as horas u e extras so remuneradas a base de 1,5 x a hora normal. Se o salrio for maior que R$ 650,00 a a retire 10% do salrio para o governo (imposto). escreva nome, horas, valor da hora, valor a a receber e valor do imposto. Dados terminam quando for lido um nmero de horas igual a u zero. Por exemplo, Lido Impresso Joo,50,100 Joo,50,100,4950,550 a a Maria,30,10 Maria,30,10,300,0 XXX,0,0 m. 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 previdncia. e Assim, escreva um algoritmo capaz de calcular o desconto para o INSS, sujeito `s seguintes a regras:
Inicialmente o programa deve ler o valor do salrio de referncia a e Depois deve ler uma srie de dados compostos por RG e salrio bruto. e a A srie termina quando for lido um RG = 0. e Para um salrio bruto at 10 S.R. o desconto 8% do salrio bruto a e e a Para um salrio entre 10,01 S.R. e 20 S.R. desconto 9% do salrio bruto a e a Acima de 20 S.R. o desconto de 10% do salrio bruto. e a Ao nal, imprimir o RG, o salrio bruto, o desconto e o salrio l a a quido.

Exerc cio 10 Pretende-se informatizar um estacionamento. Nele existem 3 tipos de preos: 2 R $ por hora ou frao para carros pequenos, 2,50 R$/hora para carros mdios e 3 c ca e R$/hora para carros grandes. Denir algoritmo que leia uma serie de informaes formadas co por: Tipo do carro: caracter; hora-entrada: inteiro, minuto-entrada: inteiro; hora-saida: inteiro, minuto-saida: inteiro. Para cada conjunto de informaes lidas, o algoritmo deve co imprimir a quantidade de dinheiro devida.
88-08, Pedro Kantek

60

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS

3.3

Comando de atribuio ca

Comando de atribuio aquele que permite colocar/alterar valores de contedo em ca e u variveis. Para tanto usaremos o s a mbolo . 2 Quando dizemos expresso, podemos estar querendo dizer valor (que a forma a e mais simples de expresso), ou simplesmente um conjunto de valores e operadores (que a a denio de expresso). e ca a Exemplos: A 1 (aqui, a expresso apenas um valor) a e B 1 + 2 (neste caso, a expresso um conjunto de 2 valores e uma operao, no a e ca caso, a adio) ca E importante notar, que a expresso que se encontra do lado direito da echa de a atribuio () deve ser compat com o tipo de varivel que foi denida. Em outras ca vel a palavras, no comando A 1+1, a expresso 1+1 tem que ser compat com a varivel a vel a A, ou seja A dever ter sido denida como inteira ou real, mas no como caracter, cadeia a a ou lgica. o Na atribuio de variveis do tipo inteira, a expresso dever ser uma expresso ca a a a a inteira, isto , sem parte fracionria. Para variveis do tipo real, a expresso dever e a a a a ser numrica sem nenhuma outra restrio. Esta a unica exceo ` regra acima, pois e ca e ca a podemos colocar um valor inteiro em uma varivel real. a Na atribuio de variveis cadeia, o valor dever estar envolvido entre aspas simples ca a a (). Ele no dever ter um tamanho maior do que aquele estabelecido para a varivel. a a a Se isto acontecer, o valor ser truncado. Entretanto, no boa norma de programao a a e ca usar esta facilidade (ou caracter stica) pois ela diculta a compreenso do algoritmo. a Finalmente, nas variveis lgicas, deveremos usar as palavras VERDADEIRO e a o FALSO, ou quando no houver risco de confuso, podemos usar as abreviaturas F ou V. a a Exemplos de atribuies: co X1 XAC 1 + 1 + 1 DEV 2000 23 N -1 B 1.89 XAD 1 3 N -1.0009 ALF 1000900 X1 NOME ALFREDO COD ABCDEabcde ALFA abcde12345 SIM VERDADEIRO NAO FALSO VARLOG V VARLOG2 F

variveis inteiras a

variveis reais a

variveis cadeia a

variveis lgicas a o

2 A questo do s a mbolo da atribuio bem complicada. Poucos ambientes (como o APL) dispe do ca e o s mbolo nativo . Os outros improvisam, com os s mbolos := do Pascal, ou simplesmente = do C e Java. No primeiro caso, so 2 s a mbolos, ao invs de um unico, e no segundo surge a confuso entre A=1 e a (signicando A recebe 1) e A=1 (signicando a pergunta: A igual a 1 ?). Da o C e o Java fazerem a e pergunta com ==. No h uma sa fcil. a a da a

verso de 10 de fevereiro de 2008 a

61

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS NOME A XUNXO X variveis caracter a NUM 1 AST * Duas perguntas a responder:
A 1 A varivel numrica ou caracter ? e a e B V B varivel lgica ou cadeia ? e a o

Como regra geral, sempre que houver mistura entre elementos inteiros e reais, nas operaes +, e o resultado ser real. co a Exemplos de uso de operadores em expresses numricas o e A 1 1,78 3 B trunc(3.1416) C abs (-6 + trunc (3.4)) D 1 + 10 + 100 - 1000 etc Uma observao nal e bem importante que dentro de um mesmo algoritmo uma ca e varivel pode ter diversos (isto , mais de um) comandos de assinalamento. Isto no a e a e erro, e ao contrrio bem freqente. Nestes casos, a varivel ter o valor que foi nela a e u a a colocado por ultimo. Por exemplo, em 1: A 1 2: ... 3: A 10 4: ... 5: escreva (A) 6: ... Se nos comandos representados com ... no houver nenhuma alterao na varivel A, a ca a o resultado impresso ao nal ser 10 (e no 1). a a

3.4

Expresses o

Expresses so conjuntos de variveis, valores, operaes e eventualmente parnteses, o a a co e que demandam algum tipo de computao determinada na expresso e produzem um ca a resultado. As expresses se classicam em geral devido ao tipo de operaes que existem o co dentro da expresso, podendo ser aritmticas, condicionais, lgicas e de caracteres. a e o

3.4.1

Aritmticas e

As expresses aritmticas so aquelas que envolvem variveis numricas, valores idem e o e a a e as operaes aritmticas, dando como resultado um nmero (que obviamente pode ser co e u real ou inteiro). Notao Exponencial Para os casos em que seja necessrio representar nmeros ca a u muito grandes ou muito pequenos, pode-se lanar mo da notao exponencial, que c a ca ser escrita de acordo com a seguinte regra: A primeira parte do nmero ser escrita a u a como um nmero convencional, podendo ter o ponto decimal (constante ponto utuante) u ou no (constante inteira). Depois, vem a letra maiscula E, indicando elevado a. a u Um segundo nmero inteiro, positivo ou negativo indicando a potncia de 10 ` qual a u e a primeira parte do nmero est elevada. u a
88-08, Pedro Kantek

62

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS Por exemplo: o nmero deve ser entendido como u 3E4 3 104 ou 3 10000 ou 30000 6.3E-2 6.3 102 ou 6.3 0.01 ou 0.063 -4.22E6 4.22 106 ou 4.22 1000000 ou -4220000

verso de 10 de fevereiro de 2008 a

63

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS Operaes usuais co

Funao c Adiao c

Formato Objetivo A+B Adicionar A e B

Tipos operandos inteiro ou real

Subtrao ca

A-B

Subtrair B de A O produto de A eB O quociente de A por B A elevado ` B a

Multiplicao B ca A Diviso a real Potncia e Absoluto AB 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 Fracionrio frac(A) A parte fraa cionria a de A Exponencial exp(A) E (2.718...) elevado a A Log Nat- log(A) Logaritmo natuural ral de A Arredondamento round(A)Arredonda A para o inteiro mais prximo o Raiz sqrt(A) Raiz quadrada quadrada de A Quadrado Somar 1 sqr(A) A++ O quadrado de A A varivel 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 so inteiros, a A+B ine teiro. Se pelo menos um dos dois real, 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-23 e 312 36 e 102 5 e 25 32 e abs(4) 4 e sin(3.14...) e 1 cos(3.14...) e 0 trunc(2.5) 2 e frac(2.5) .5 e

inteiro real inteiro real real

ou ou

real real inteiro

exp(1) 2.718 log(1) 0 e

round(3.6) e 4 sqrt(4) 2 e

inteiro real, 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, e A++ coloca 11 em A.

88-08, Pedro Kantek

64

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS Subtrair 1 Diviso a inteira Resto A A varivel A a e decrementada de 1 unidade o quociente inteiro da diviso a de A por B O resto da diviso inteira de a A por B inteira real inteiros ou O mesmo de A inteiro Se A 10, e A coloca 9 em A. 4 div 3 1 e

A div B A mod B

inteiros

inteiro

10 mod 7 3 e

Prioridades Na execuo de um comando complexo, podemos encontrar duas ou mais ca operaes numricas uma ao lado da outra, e neste caso, pode surgir a pergunta: Qual co e realizar antes ? Exemplo: 2 + 3 4 igual a 14 ou 20 ? Anal, 2 + (3 4) 14, e(2 + 3) 4 20. e e e Embora na matemtica tradicional j se tenha uma lista de prioridades que deve ser a a obedecida, aqui no portugus estruturado tambm h uma lista, que se resume a: e e a 1. Primeira Prioridade: Parnteses e 2. Prioridade: Funes co 3. Prioridade: Menos unrio (oposto) a 4. Prioridade: Potenciao ca 5. Prioridade: Multiplicao e diviso ca a 6. Prioridade: Adio e subtrao ca ca 7. Prioridade: Comparaes (>, <, =, , , =) co 8. Prioridade: Operadores lgicos, , , . o Se houverem duas operaes de mesma prioridade, as mesmas sero realizadas em qualco a quer direo convencionada, por exemplo, da esquerda para a direita. ca E dif decorar esta tabela, alm do que, algumas linguagens de computador podem cil e implementar tabelas ligeiramente diferentes desta. Assim, resta como sugesto ao aluno: a
Denir linhas pequenas (clareza e auto-documentao). Se for necessrio, quebrar ca a um comando complexo em vrios simples. a Usar e abusar de parnteses, ainda que redundantes, pois eles reforam a ordem e c de execuo e desobrigam de conhecer e consultar a tabela de prioridades. ca

Round e Trunc Arredondar um nmero converter um real em inteiro aproximando-o do inteiro mais u e prximo. A regra bsica que nmeros cuja parte fracionria menor do que 0.5 so o a e u a e a trazidos para o inteiro menor e nmeros cuja parte fracionria igual ou maior a 0.5 u a e so arredondados para mais. a J o truncamento simplesmente despreza a parte fracionrio, trazendo o resultado a a sempre para o inteiro menor ou igual ao nmero dado. u As funes round e trunc operam sobre nmeros positivos e negativos. Quando for co u este ultimo caso, a denio continua prevalecendo, o resultado encontrado como se ca e o operando fosse positivo, e a seguir o sinal de menos colocado sobre o resultado. e Acompanhe nos exemplos:
verso de 10 de fevereiro de 2008 a

65

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS trunc(1.8) 1 e trunc(-1.8) -1 e round(1.8) 2 e round(-1.8) -2 e

Duas consideraes nais: co


Podemos considerar a existncia no portugus estruturado de uma constante chamada e e MAXINT, contendo sempre o MAIOR valor poss de ser representado em uma vel varivel inteira. Em outras palavras, desde que A seja inteira, quando comparaa rmos A com MAXINT, A ser menor ou no mximo igual a MAXINT, nunca a a maior. Para todos os efeitos prticos esse o nosso innito (). a e Podem ser introduzidos pela pessoa que est escrevendo o algoritmo quaisquer a novos operadores matemticos, desde que estes no sejam amb a a guos e sejam facilmente entend veis, a m de poderem ser seguidos mais tarde.

Div e Mod Existem duas importantes funes matemticas, a quem chamar-se- div e mod e que co a a so usadas em matemtica inteira. Ambas atuam sobre nmeros inteiros e do como a a u a resultado tambm nmeros inteiros. Div devolve o resultado inteiro de uma diviso. e u a J mod devolve o resto inteiro da diviso de dois nmeros. Em ambos operadores, o a a u segundo termo tem que ser diferente de zero. Em resumo, A div B, o resultado inteiro da diviso de A por B. 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 diviso de A por B. 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 funes se completam na expresso I mod J = I (I div J) J. co a Exemplo: 20 mod 6 2 2 2 = = = = 20 - (20 div 6) * 6 20 - 3 * 6 20 - 18 2

c.q.d.

Um especial cuidado deve ser tomado quando o primeiro operando de div for menor que o segundo, por exemplo em 2 div 3. Neste caso, a resposta 0. Esta regra segue e vlida se o primeiro nmero 0. Por exemplo, em 0 div 5, a resposta segue sendo zero a u e e no h erro nesta chamada. a a A mesma considerao pode ser feita na funo mod. 2 mod 3 2 e 0 mod 5 zero, ca ca e e sem erro nos dois casos.
88-08, Pedro Kantek

66

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS suc, pred, ord e chr Para os tipos ordinais pr-denidos (caracter, inteiro e lgico), existem algumas funes e o co que podem ser usadas. Para cada tipo de operandos os universos so: a inteiros neste caso, a seqncia de ordenao aquela dos nmeros inteiros da matemtica: ue ca e u a ... , ..., -2, -1, 0, 1, 2, ... +. caracteres aqui a seqncia dada pelo cdigo nativo do ambiente, no caso o ASCII. ue e o booleanos a seqncia FALSO, VERDADEIRO. ue e Ord A Funo ord devolve o ordinal do operando dentro do seu universo original. ca Assim, a ord de um operando caracter, devolve o ordinal dentro do cdigo ASCII. A ord o de um lgico, considera o universo de 2 valores (V e F). e a ord de um nmero inteiro, o u e o prprio nmero inteiro. Embora atue sobre os 3 tipos acima, na verdade ela se aplica o u verdadeiramente aos caracteres. Por exemplo: ORD(-3) -3. e ord(a) 97. e ord(FALSO) 0. e ord(7) 55, e ord(W) 87, e ord(z) 122, e No caso dos caracteres, a resposta ` funo ord se encontra na tabela vista anteria ca ormente. Consultamos o operando de ord na coluna referente a ASCII, e a resposta de ord o nmero decimal que estiver na mesma linha. e u Chr A funo chr a funo inversa da funo ord, porm s funciona para caracca e ca ca e o teres. Dado um nmero inteiro entre 0 e 255, para o cdigo ASCII e 0 e 64536 para u o o cdigo UNICODE, a funo chr deste nmero devolve o caractere correspondente a o ca u ele. Para simular como o portugol faz isto, dado um nmero, procura-se na tabela em u qual linha ele ocorre sob a coluna decimal, e a seguir responde-se com o caractere ASCII correspondente ` mesma linha. a Exemplo, CHR(97) a, etc. e Suc Trata-se da funo sucessora, que nos devolve o prximo valor ao do operando ca o considerado o seu universo original. Esta funo s se aplica a operandos ordinais prca o e denidos (inteiro, caracter e lgico). Se o operando for inteiro, a resposta tambm ser. o e a Se o operando for lgico, a resposta tambm ser. Da mesma maneira se o operando for o e a caracter. suc(a) b e suc(FALSO) VERDADEIRO e suc(23) 24, e assim por diante e suc(1) 2, e CUIDADO ====> succ(9) : e succ(9) 10. e e Uma aplicao interessante para esta funo a substituio do incremento de varca ca e ca iveis. a Por exemplo, em vez de fazer: I I + 1; podemos fazer I suc(I);
verso de 10 de fevereiro de 2008 a

67

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS Pred Esta funo devolve o predecessor, e tambm s se aplica a ordinais pr-denidos. ca e o e Tambm (tal como no suc) o tipo da resposta o mesmo tipo do operando. Exemplos: e e pred(b) a e pred(FALSO) VERDADEIRO e pred(23) 22, e assim por diante. e

3.4.2

Relacionais

As expresses relacionais so as que envolvem os operadores =, =, >, , < e . Este o a operadores visam a estabelecer se uma dada proposio falsa ou verdadeira. E comum ca e em qualquer linguagem de programao, comparar-se 2 valores, perguntando, por exca emplo, se o primeiro maior do que o segundo. A resposta, na forma lgica, dir se a e o a armao ou no verdade. ca e a e So eles: igual (=), diferente (=), maior (>), maior ou igual (), menor (<) e menor a ou igual (). Estes operadores sempre relacionam duas variveis ou constantes de tipos coma pat veis. Por exemplo ao perguntar 3 > 5?, a resposta ser falso. a Note que no permitido (ou seja gera-se um erro), misturar valores de tipos distina e tos. Ento, a comparao A = 3, embora logicamente pudesse estar correta (ou seja a ca a letra A no igual ao nmero 3), d erro em qualquer linguagem de programao e a e u a ca portanto est proibida de ser usada na construo de algoritmos. a ca A exceo ` regra acima quando se comparam dois nmeros, sendo um deles do tipo ca a e u inteiro e outro do tipo real. Embora de tipos diferentes (inteiro e real), a matemtica a permite fazer essa comparao, j que ambos so nmeros. ca a a u Tem-se ento que os operandos podero ser de qualquer tipo, desde que compat a a veis, mas a resposta sempre ser do tipo lgico. a o Funo ca Formato Objetivo Operando Resultado Exemplo Igual A = B Comparar o ambos .V. se A = B 3 = 4 .F., e contedo de A e inteiros, u e .F. se A = 66.0 = 66 .V., e de B reals ou al- B. AB= ab .F. e fanumricos e Diferente A = B igual ao anterior igual ao an- .V. se A = B 3 = 4 .V., 66.0 e terior e .F. se A = = 66 .F. e B. AB= AB e .F. Maior A > B igual ao anterior ambos in- .V. se A > B 5 > 2 .V. e teiros ou e .F. se A 2 > 5 .F. e reais B. Maior ou A B igual ao anterior igual ao an- .V. se A B 5 2 .V. e igual terior e .F. se A < 2 2 .V. e B. Menor A < B igual ao anterior igual ao an- .V. se A < B 5 < 2 .F. e terior e .F. se A 2 < 5 .V. e B. Menor ou A B igual ao anterior igual ao an- .V. se A B 2 5 .V. e igual terior e .F. se A > 2 2 .V. e B.

3.4.3

Lgicas o

As expresses lgicas envolvem valores lgicos (verdadeiro e falso) conectados por opo o o eradores lgicos, que so 3: E (), OU () e NAO ( ou ). Estes operadores o a
88-08, Pedro Kantek

68

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS destinam-se as operaes lgicas entre operandos. Eles atuam sobre os valores V (verco o dade) e F (falso). Acompanhe a seguir as tabelas verdade: Em termos verbais a expresso A B ser verdadeira quando A e B forem verdadeiros a a e ser falsa seno. a a Vendo na tabela a seguir: verdadeiro falso verdadeiro verdadeiro falso falso falso falso

A expresso A B ser verdadeira quando A for verdadeiro ou B for verdadeiro ou a a ainda quando ambos forem verdadeiros. A expresso s ser falsa quando A e B forem a o a falsos. Veja: verdadeiro falso verdadeiro verdadeiro verdadeiro falso verdadeiro falso

Finalmente, a expresso A (lida como NAO A), devolve o valor lgico oposto ao de a o A. Ento verdadeiro falso e falso verdadeiro. a e e ou verdadeiro falso Funao c E-lgico o falso verdadeiro Operando ambos lgio cos Resultado .V. se A e B so .V., .F. a em caso contrrio a .V. se A ou B so .V., .F. a em caso contrrio a .V. se A .F. e .F. se A .V. e Exemplo .V. .V. .V. e .V. .F. .F. e .F. .V. .F. e .F. .F. .F. e .V. .V. .V. e .V. .F. .V. e .F. .V. .V. e .F. .F. .F. e .F. .V. e .V. .F. e

Formato Objetivo A B Realizar a operao E-lgico ca o

OUlgico o NAOlgico o

AB

Realizar a operao OU-lgico ca o

ambos cos

lgio

A ou A

Nega logicamente A

lgico o

As palavras verdadeiro e falso bem como os s mbolos Ve F podem ser considerados constantes lgicas tambm chamadas booleanas e podem ser empregados livremente o e na construo dos algoritmos. As duas constantes, formam um conjunto ordenado, e ca podemos dizer que o F (falso) precede o V (verdadeiro). Como uma ajuda, podemos associar o Falso ao zero, e o Verdadeiro ao 1. Com isto todas as relaes numricas entre co e 0 e 1 continuam verdadeiras entre FALSO e VERDADEIRO. A grande importncia dos valores lgicos em portugol, decorre do fato de que quala o quer comparao usando os operadores relacionais sempre devolve um lgico. ca o A importncia das expresses lgicas que elas permitem conectar duas ou mais a o o e expresses relacionais, formando uma nova e maior expresso relacional. Veja-se nos o a exemplos:

verso de 10 de fevereiro de 2008 a

69

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS expresso lgica a o (A B) C D (E F) G ser verdadeira quando... a A e C forem verdadeira ou B e C forem verdadeiras D for falsa E e F forem verdadeiras ou ento 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. Quais variveis seriam necessrias e como elas seriam denidas a a ? Exerc cio 12 Quando criana Gauss resolveu a somatria 1 + 2 + 3 + ... + 4998 + c o 4999 + 5000, de uma forma brilhante, intuindo toda a teoria de progresses. Se voc tivesse o e que resolver o problema de Gauss, quais variveis deniria, e como elas seriam denidas ? a Exerc cio 13 Para cada uma das frmulas a seguir, supor que ser criado um algoritmo, o a no qual voc dever dizer quais variveis sero necessrias e como sero denidas: e a a a a a
1. per metro de um retngulo a 2. clculo do terceiro ngulo de um tringulo, dados 2 ngulos. a a a a 3. clculo da quantidade de azulejos a serem colocados em um banheiro. a 4. Volume de uma lata de leite 5. Preo a pagar pelo estacionamento de um ve c culo.

Exerc cio 14 Informe qual o resultado esperado para a varivel VAR1 a


VAR1 VAR1 VAR1 VAR1 VAR1 VAR1 VAR1 (1 + (2 (3 + 1) 2)) - 2 sqr(3) 2 trunc(1.999) abs(-(3 - 4)) trunc(1.5) - frac(1.5) sen(3.14154) cos(3.14154) 2 (2 3)

Exerc cio 15 Nos exerc a seguir, o aluno deve: cios


Achar o resultado da expresso a Descobrir-lhe o tipo Denir uma varivel para conter este resultado. a

Exemplo: 1 + 1 + 2, ter como resposta: 4, inteiro, SOM:inteiro; SOM 4 a 1. 1 2 2. 1 + 3 1 3. trunc (3.5 + 2) 4. sen (1) 5. sen (0.33333) + cos (0.33333) 6. 1 2 3 4 5 -6
88-08, Pedro Kantek

70

verso de 10 de fevereiro de 2008 a

CAP ITULO 3. ESCREVENDO ALGORITMOS 7. 2 > 3 8. 1 + 3 < 4 9. 5 = 4 + 1

Exerc cio 16 Na srie de exerc a seguir, considere o seguinte conjunto de variveis: e cios a
X 5 (inteiro) Y 1 (inteiro) AA 0.5 (real) BB 4.9 (real) CC 3 (real) Para cada expresso pedida, calcule o resultado e determine o tipo (inteiro ou real) do a resultado. 1. (AA - X) CC 2. CC + abs(trunc(BB)) 3. frac(AA) - AA 4. X + Y + CC 5. sqrt(trunc(BB-AA)) 6. (round(AA+BB)) mod CC 7. 1 + sqr(X - Y) 8. 1 + sqr(X) - Y 9. 5 X round(BB) 10. AA - abs(BB) 11. abs (AA - BB) 12. abs (AA) - abs (BB) 13. frac (int (BB)) 14. (X + Y) AA 15. trunc (Y + AA) 16. X + Y + AA + CC 17. X + CC 18. X + Y 19. cos (int(AA)) 20. round (AA) 21. round (BB + AA) 22. trunc (AA - BB)
verso de 10 de fevereiro de 2008 a

71

88-08, Pedro Kantek

CAP ITULO 3. 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 18 Informe qual o valor nal para VAR3


VAR3 (3 2) (1 = 3) VAR3 (1 + 1) = (3 - 1) VAR3 (trunc(1.5 4) > 6) (1 = 2)

Exerc cio 19 Informe qual o valor da varivel VAR2 a


VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VAR2 VERDADEIRO FALSO VERDADEIRO ( ...Eu no disse que nunca viajaria...) a FALSO FALSO VERDADEIRO ( VERDADEIRO) ( FALSO) ( VERDADEIRO) (FALSO OU VERDADEIRO) ( VERDADEIRO) FALSO FALSO FALSO FALSO VERDADEIRO ( VERDADEIRO) VERDADEIRO VERDADEIRO

Exerc cio 20 Informe qual o valor para a varivel VAR4. a


VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 ((frac(0.999) - 1) > 0 1=2 1+2=2 0.5 2.5 - trunc(2.9000) 3>1+1 1+34 2 sqr(3 2 + 1) 12340+1 ((2 2) + 2) 3 33 > (32 + trunc(2.45) - frac(0.5)) 0.20 - 0.5 234+234 (4 (2 2 2) 3.5) (1 = 3 0) (trunc (sen (3.14/2)) = 1) VERDADEIRO FALSO ((1 + 2) > (6 div 3)) 72
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 VAR4 (5 div 2) > (trunc (3.5) + frac(3.5)) 72+2>0 5+5-5 (10 + frac(0) + trunc(0) - 10) > 5 5 > 6 div 3 + 2 mod 1 + 0 mod 6 2842 (1 + trunc (13.5) 2) (1 (2 + 1))

verso de 10 de fevereiro de 2008 a

73

88-08, Pedro Kantek

CAP ITULO 3. ESCREVENDO ALGORITMOS

88-08, Pedro Kantek

74

verso de 10 de fevereiro de 2008 a

Cap tulo 4

Comandos
4.1 Viso Top down e Bottom up a

Estes termos, consagrados no jargo da informtica, signicam maneiras de atacar e a a resolver um problema em computador. A maneira top down, que pode ser traduzido como de cima para baixo, pressupe estudar o problema como um todo, e depois ir o realizando a montagem do esquema completo, atravs da execuo das partes, mas sem e ca nunca esquecer o modelo completo. A viso bottom up, parte da construo individual de todos os elementos, que postea ca riormente so juntados e testados. E poss fazer sistemas de computador usando as a vel duas tcnicas. e Fazendo uma analogia (meio mambembe, mas v l) com a montagem de um carro, a a na viso top down a primeira coisa a fazer seria juntar a carroceria e as rodas, de a maneira que o carro conseguisse se mover. Depois, os diversos sistemas e componentes iriam sendo instalados pea a pea no carro e a cada etapa o carro continuaria a andar c c em suas prprias rodas. A montagem terminaria quando o carro andasse sozinho. o J na viso bottom up cada um dos sistemas (motor, bancos, instrumentao, ...) a a ca seria montado isoladamente, testado e em caso de sucesso levado aonde o carro est a sendo constru e a posto em conexo com os outros sistemas do carro. O processo do a tambm termina quando o carro sair andando. e O exemplo no dos melhores, porque um carro diferente de um programa de coma e e putador. L se lida com coisas f a sicas que ocupam espao e pesam para ser carregadas. c Aqui se fala de entidades abstratas (dados e programas). Outro exemplo, este talvez algo melhor a proposta de escrever um livro. Antes de tudo h que se ter o plano e a completo da obra, mas depois poss visualizar a construo top down e a construo e vel ca ca bottom up.

4.2

Sequncia de execuo ca e

Vale lembrar que a menos que o comando em questo determine outro caminho, os a comandos dentro de um algoritmo vo sendo executado seqencialmente, comeando a u c no primeiro e terminando no ultimo, e sempre esperando terminar este para comear o c prximo. Diz-se nestes casos que o uxo cai por decantao. Assim, por exemplo, na o ca seqncia ue 1: A 1 2: B 2 + A 75

CAP ITULO 4. COMANDOS Pode-se armar com certeza que primeiro ser executado o comando 1. Depois dele a que ser executado o comando 2, e a o valor da varivel A j estar estabelecido e a a a a corretamente.

4.3

Entrada/Sa da

A maioria dos algoritmos necessitar receber dados externos, e em algum momento do a seu processamento precisar comunicar respostas. Para resolver estes dois problemas a existem os chamados comandos de entrada/sa da. E atravs deles que o algoritmo se e comunica com o mundo externo. Desprezando as complexidades inerentes a um processo de transferncia de dados em e um computador real eis a a principal vantagem do portugol , os comandos que se usaro so dois: leia e escreva. O verbo ou comando leia signicar uma entrada de a a a dados externos para dentro do algoritmo. A forma desta entrada, isto se os dados vo e a entrar pelo teclado, vo ser lidos do disco ou viro por uma linha telefnica questo a a o e a que no interessa agora. Nos prximos anos do curso, haver muitas horas de aula sobre a o a estas questes. Agora s interessa o fato de que o dado entra para o algoritmo e pronto. o o Da mesma forma, para a sa dos dados, usar-se- o comando escreva, que tambm da a e no signica obrigatoriamente impresso em papel. Estes dados podem estar saindo no a a v deo, em um plotter, em um disco, linha telefnica etc. o O formato destes comandos : e leia (nome1, [nome2, ...]) Ao lado do verbo leia, e entre parnteses, deve-se escrever as variveis que devero e a a ter seus valores fornecidos neste comando. Os identicadores citados j devero ter sido a a denidos anteriormente no programa. Em geral (regra heur stica) dados que vo ser a lidos no precisam ser inicializados antes. a O comando de impresso : a e escreva ([mensagem] nome1) Este comando externa um resultado dispon vel a quem est operando o algoritmo. E a claro que os valores a imprimir tero que ter sido inicializados e/ou calculados antes da a impresso. As variveis a escrever tem seu nome citado entre parnteses. a a e Exemplos de leitura: VALOR1, VALOR2: inteiro leia (VALOR1, VALOR2) De impresso a VALOR1: inteiro VALOR1 .... escreva (O valor obtido , VALOR1) e Na impresso comum se colocar constantes alfanumricas, mensagens ou textos a e e explicativos antes ou depois dos dados para clarear e facilitar a leitura humana posterior. Por exemplo, ao calcular uma raiz na varivel RZ, muito melhor escrever escreva a e (A raiz e,RZ), do que simplesmente escreva (RZ). Neste ultimo caso, o dado caria perdido (no v deo, no papel, ...) sem que o operador soubesse o que era aquilo. Identicamente, para imprimir uma rea, melhor fazer escreva (AR,m2), do que fazer s a e o escreva(AR).

4.3.1

Comando de Entrada

Permite a introduo de valores para variveis previamente denidas. ca a


88-08, Pedro Kantek

76

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS leia (<nome-1> [,<nome-2>,...]) Por exemplo, 1: A, B : inteiro 2: RAIZ : real 3: leia (A, B, RAIZ)

4.3.2

Comando de Sa da

Permite a gerao de resultados por parte do algoritmo. Permite mesclar variveis e ca a expresses. Em geral, as expresses alfanumricas inclu o o e das no comando servem para auxiliar na interpretao dos resultados gerados. ca escreva (<nome-1> | <express~o-1> [,<nome> | <express~o> ...]) a a Por exemplo, 1: escreva (a raiz procurada e , RAIZ)

4.4

O comando alternativo

Como j se disse este o comando que permite versatilidade e generalidade aos algoa e ritmos. Ao permitir-se modicar caminhos tendo em vista certas condies que o co e algoritmo habilita o computador a pensar (as aspas, por favor).

4.4.1

Alternativa simples

Existem oportunidades em que um determinado comando dentro de um algoritmo s o deve ser executado se certas condies o permitirem. Por exemplo, ao olhar se uma co pessoa est quites com as suas obrigaes militares, isto deve ser feito apenas se o sexo a co da pessoa masculino. Em nosso pa mulheres esto desobrigadas de tais tratativas. e s, a O comando que identica uma ao condicional o comando SE, que tem o seguinte ca e formato: se <condi~o> ent~o ca a a~o ca fimse A condio uma expresso cujo resultado nal do tipo lgico, isto VERca e a e o e DADEIRO ou FALSO. A ao pode ser um comando simples ou uma seqncia de ca ue comandos. Exemplo: 1: se DELTA < 0 ento a 2: escreva (no poss extrair esta raiz); a e vel 3: mse Para efeito de clareza na leitura de um algoritmo, costuma-se identar os comandos subordinados a uma condio. Esta a razo pela qual se deixou 3 espaos em banco ca e a c ao in do comando escreva no exemplo acima. cio A margem deve ser trazida ao que era antes do comando se, apenas quando se escrever o mse correspondente.
verso de 10 de fevereiro de 2008 a

77

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS

in cio

1: 2: 3: 4: 5: 6: 7: 8: 9:

se condio ento ca a c1 c2 ... seno a c10 c11 ... mse

condio ca v c1 c2 ... c10 c11 ...

4.4.2

Alternativa composta

E uma extenso da alternativa simples. Neste caso podemos determinar o que fazer se a a condio verdadeira, e o que fazer se a condio for falsa. O formato deste comando ca ca (` esquerda em linguagem algor e a tmica, portugol, e ` direita em uxograma. a Se a condio estabelecida verdadeira, so executados os comandos c1, c2, ... e ca e a no so executados os comandos c10, c11.... Se a condio falsa, so executados os a a ca e a comandos c10, c11, ..., mas no os primeiros. a Neste caso a identao tambm importante. Os comandos se, seno e mse ca e e a comeam na margem corrente. Todos os demais comandos internos a este deixam uma c identao de 3 caracteres. ca Exemplo:

in cio DELTA 4 ACsqr(B)

DELTA < 0

1: 2: 3: 4: 5: 6:

DELTA 4 A C - sqr(B) se DELTA < 0 ento a escreva (raizes imaginrias) a seno a X sqrt(DELTA) mse

v escreva (raizes imaginrias) a X sqrt(DELTA)

4.4.3

Alternativas aninhadas

Nada impede que exista uma condio dentro de outra, (regra da programao estruca ca turada) e assim por diante. Nestes momentos a identao mais importante ainda. ca e Repare no exemplo a seguir: Para ver a vantagem da identao analisar-se- exatamente o mesmo cdigo, porm ca a o e escrito sem este recurso:
88-08, Pedro Kantek

78

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS

in cio

A=0 v B0

C=0 v D0

1: 2: 3: 4: 5: 6: 7: 8:

se A = 0 ento a B0 se C = 0 ento a D0 F3 mse G 77 mse se A = 0 B0 C=0 D0 F3 fimse G 77 fimse

F3

G 77

1: 2: 3: 4: 5: 6: 7: 8:

Exerc cio 21 Reescreva as condies acima usando a condio de igual. co ca


Cada se tem que ter um mse correspondente. Ao percorrer o uxo, encontrando um mse encerra-se o ultimo se aberto. Esta regra importante para determinar o m de e SEs aninhados. Ao examinar um comando se, deve-se agir da seguinte forma: Se a condio que acompanha o se for verdadeira, os comandos internos ao se devem ca ser executados. Se, ao contrrio, a condio no for verdadeira, ento, todos os comandos a ca a a seguintes devem ser pulados at ser encontrado o comando mse correspondente. e Agora hora de voltar um pouco na teoria e relembrar o conceito das operaes e co com operadores lgicos (VERDADEIRO e FALSO). Tais operaes eram: , e . o co Usando-as, em conjunto com o comando se simples ou composto, podemos criar trechos de algoritmo muito ricos. Veja-se alguns exemplos: Denir se um valor esta compreendido entre 10 e 35, inclusive: 1: se VALOR > 9 VALOR < 36 ento a
verso de 10 de fevereiro de 2008 a

79

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS


2: 3: 4: 5:

... valor OK ... seno a ... valor ERRADO ... mse

Denir se um valor numrico representativo de um ms, est correto e e a 1: se MES > 0 MES < 13 ento a 2: ... mes OK ... 3: seno a 4: ... mes ERRADO ... 5: mse Um certo cdigo pode assumir os seguintes valores: 10, 15, 17, 18 e 30. Testar se ele o est ou no correto. a a 1: se COD = 10 COD = 15 COD = 17 COD = 18 COD = 30 ento a 2: ... cdigo OK ... o 3: seno a 4: ... cdigo ERRADO ... o 5: mse As vezes mais fcil organizar a sa correta atravs do SENAO e no do ENTAO, e a da e a o que inverte o comando. Vejamos um exemplo. Um indicador estar errado, se assumir os valores: 1, 4, 5, 6, 7, ou 9. Organizar o comando: 1: se IND = 1 IND = 4 IND = 5 IND = 6 IND = 7 IND = 9 ento a 2: ... indicador ERRADO ... 3: seno a 4: ... indicador CERTO ... 5: mse Se entretanto, quisssemos no inverter as saidas, precisar e a amos negar as condies. co Atente-se a que a negao de um conjunto de OUs um conjunto de Es. ca e 1: se IND = 1 IND = 4 IND = 5 IND = 6 IND = 7 IND = 9 ento a 2: ... indicador CERTO ... 3: seno a 4: ... indicador ERRADO ... 5: mse Outra maneira de escrever o comando acima, seria: se (IND = 1) (IND > 3 IND < 8) (IND = 9) ento a 2: ... indicador ERRADO ... 3: seno a 4: ... indicador CERTO ... 5: mse Finalmente, se quisssemos manter as saidas sem inverso: e a 1: se (IND = 1) (IND 3 ou IND 8) (IND = 9) ento a 2: ... indicador CERTO ... 3: seno a 4: ... indicador ERRADO ... 5: mse
88-08, Pedro Kantek

1:

80

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS

Em resumo, a negao 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 lgica: Um aluno estar aprovado se: o a
Tiver mdia maior ou igual a 7,00 E e Tiver assistido a 45 ou mais aulas

Supondo que a mdia a varivel M, e que o nmero de aulas assistidas a varivel e e a u e a AA, poderia car usando SEs aninhados Veja na gura 4.4.3

in cio

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:

se MD 7 ento a se AA 45 ento a ...APROVADO seno a ...REPR. FREQUENCIA mse seno a se AA 45 ento a ...REPR. MEDIA seno a ...REPR. NOS 2 mse mse

MD 7 v AA 45 v ...APROVADO ...REPR. FREQUENCIA AA 45 v ...REPR. MEDIA ...REPR. NOS 2

usando SEs compostos 1: se MD 7 AA 45 ento a 2: ...APROVADO 3: mse 4: se MD 7 AA < 45 ento a 5: ...REPROVADO POR FREQUENCIA 6: mse 7: se MD < 7 AA 45 ento a 8: ...REPROVADO POR MEDIA 9: mse 10: se MD < 7 AA < 45 ento a 11: ...REPROVADO NOS 2 CRITERIOS 12: mse
verso de 10 de fevereiro de 2008 a

81

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS misturarando tudo Funciona, embora no seja uma boa idia. a e 1: se MD 7 AA 45 ento a 2: ...APROVADO 3: seno a 4: se AA 45 ento a 5: ...REPROVADO POR MEDIA 6: seno a 7: se MD 7 ento a 8: ...REPROVADO POR FREQUENCIA 9: seno a 10: ...REPROVADO NOS 2 CRITERIOS 11: mse 12: mse 13: mse Na programao, o demnio se esconde nos detalhes, Niklaus Wirth ca o

Exerc cio 22 Dena um algoritmo que receba sries de 3 valores reais indicativos de e
lados de um tringulo, medidos em cent a metros. Para cada tripla, o programa deve responder as seguintes perguntas: 1. Tais lados podem formar um tringulo ? a 2. Este tringulo retngulo ? a e a 3. Este tringulo equiltero ? a e a 4. Este tringulo issceles ? a e o 5. Este tringulo escaleno ? a e 6. Este tringulo acutngulo ? a e a 7. Este tringulo obtusngulo ? a e a Condies do problema co triangulo ? maior < A+B e retangulo maior2 = A2 + B2 equilatero A=B=C issceles o (A = B) ou (B = C) ou (A = C) escaleno (A = B) e (A = C) acutngulo a maior2 < A2 + B2 obtusngulo maior2 > A2 + B2 a Por exemplo se for lido dever ser impresso a 3,4,5 sim, retngulo, escaleno a 3,3,3 sim, equiltero, acutngulo a a 1,2,7 no a 10,18,10 sim, issceles, acutngulo o a

Exerc cio 23 Um cdigo est certo se for maior que 100, ou igual a 50. Escrever um o a algoritmo portugol que receba este valor e some 1 no cdigo se ele estiver errado. o Exerc cio 24 Uma data vem acompanhada de um campo chamado DIASEM, cujo valor 1 para domingo, 2 para segunda, ... , 7 para sbado. Escrever um algoritmo portugol e a que receba DIASEM e verique se o dia corresponde a um dia util. (semana inglesa).
88-08, Pedro Kantek

82

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS

Exerc cio 25 Escrever um algoritmo portugol que receba (no importa como) trs a e valores numricos (chamados A,B e C), e devolva a informao OKquando se satiszerem e ca as seguintes condies: (A deve ser maior que 10 e menor do que 100) OU (B deve ser co diferente de C E C deve ser maior que 50). Se a condio no for satisfeita, o algoritmo ca a deve devolver a mensagem ERRO

4.5

Estruturas de repetio ca

Para obedecer ` terceira estrutura da programao estruturada e visando o reaproveitaa ca mento de cdigo, ver-se-o agora as possibilidades de repetir partes do algoritmo. Estas o a estruturas contm impl e cito um comando de desvio (go to) e nas linguagens mais modernas o unico desvio que aceito. e e Os trechos de programas que so repetidos ao se usar as estruturas de repetio so a ca a conhecidos genericamente com o nome de loops ou em portugus laos. Assim, um erro e c de programao bastante comum o chamado loop innito, quando inadvertidamente a ca e condio de sa tal, que nunca alcanada. ca da e e c

4.5.1

Repetio com condio no in ca ca cio: enquanto

Parece razovel que um algoritmo deve ser criado para a execuo de um unico conjunto a ca de valores fornecidos como entrada. Por exemplo, ao escrever o algoritmo de aprovao ca de alunos na cadeira de algoritmos do Unicenp, o programador s precisa se preocupar o com um unico aluno, pois a regra de um vale para todos. No teria sentido descrever a os mesmos procedimentos para todos os alunos, isto seria interminvel, alm de deixar a e o algoritmo espec co para um determinado nmero de alunos. u Falando em termos mais genricos, ao escrever um programa de computador que e calcule o salrio de um empregado, deve-se imaginar apenas um empregado e no os a a milhares que o computador processar. a A chave para este problema est no reaproveitamento de instrues do algoritmo. a co Em outras palavras, uma vez escrito o caminho principal do algoritmo (o chamado caminho das pedras), ns vamos fazer todos os funcionrios (ou alunos) passarem por este o a caminho. Uma das chaves para este procedimento o comando chamado ENQUANTO. e Seu formato: enquanto <condi~o> faa ca c c1 c2 ... fimenquanto Este comando deve ser assim interpretado. A condio avaliada. Se ela for falsa, ca e o algoritmo deve saltar todos os comandos subordinados e continuar a execuo aps ca o o comando menquanto. Entretanto, se a condio for verdadeira, os comandos subca ordinados so executados, at se encontrar o comando menquanto. Neste momento, a e h um desvio na seqncia de processamento e um retorno ao comando enquanto. a ue A condio novamente avaliada. Se falsa, pulam-se os comandos subordinados. Se ca e verdadeira, os comandos so novamente executados, e assim por diante. a Se a condio for uma verdade eterna, isto , algo como 1 = 1, tem-se um lao inca e c nito, pois os comandos nunca deixaro de ser executados. Por outro lado se a condio a ca for uma tautologia (sempre falsa), ento os comandos subordinados nunca sero execua a tados. Exemplo Calcular a soma dos nmeros inteiros at 100. u e
verso de 10 de fevereiro de 2008 a

83

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS

in cio

SOMA:real NUMERO:inteiro SOMA 0 NUMERO 1

NUMERO < 101 v SOMA SOMA + NUMERO NUMERO NUMERO + 1

1: 2: 3: 4: 5: 6: 7: 8: 9:

SOMA:real NUMERO:inteiro SOMA 0 NUMERO 1 enquanto NUMERO < 101 faa c SOMA SOMA + NUMERO NUMERO NUMERO + 1 menquanto escreva (SOMA)

NUMERO < 101

escreva (SOMA)

Comandos internos ao comando enquanto devem estar identados de 3 espaos, para c clareza. enquanto <condi~o> ca <comando-1> <comando-2> ... fimenquanto faa c

1: 2: 3: 4: 5:

Por exemplo: leia A enquanto A < 11 faa c escreva A AA+1 menquanto

4.5.2

Repetio com varivel de controle: para ca a

O segundo comando que se usa para controlar laos, atende pelo nome de para. Ele c pressupe a existncia de uma varivel de controle que ir (como o nome diz) controlar o e a a o in e o m do lao. cio c O formato do comando para e para varivel DE valor-1 ATE valor-2 [PASSO valor-3] faa a c comando 1 comando 2
88-08, Pedro Kantek

84

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS ... comando n fimpara A regra de funcionamento do para : e


Antes de comear o trecho inclu no para, a varivel mencionada no comando c do a inicializada com o valor-1. e Se este valor for menor ou igual ao valor-2 o trecho subalterno executado. e Ao chegar ao nal dos comandos, a varivel incrementada com o valor-3 (ou com a e 1 se nada for referenciado) H um desvio incondicional, ao in do comando para, e o teste denido no passo a cio <2> acima refeito, com idnticas sa e e das. Dentro dos comandos subalternos ao para, a varivel de controle no pode ser a a alterada pelos comandos escritos pelo usurio. a Os valores 1, 2 e 3 podem ser valores auto-declarados (caso mais comum) ou podem ser quaisquer variveis numricas. Neste caso, elas tambm no podem ser a e e a alteradas dentro do para. Por conveno, quando o valor do passo for 1, toda a clusula pode ser omitida. ca a Exemplo: o comando PARA K DE 1 ATE 10 equivale ao comando PARA K DE 1 ATE 10 PASSO 1.

Uma especial observao deve ser feita quando o valor-3 (o incremento) for negativo. ca Nestes casos h vrias inverses no comando, a saber: a a o
O valor 1 deve ser maior do que o valor 2, j que a varivel de controle vai diminuir a a ao invs de aumentar. e O teste de saida para maior ou igual, por idntica razo. e e a

Veja-se dois exemplos para ajudar a entender e a guardar estas questes: o para J de 1 at 9 passo 2 faa e c escreva J mpara Aqui sero impressos os valores 1, 3, 5, 7 e 9. J em a a 1: para J de 9 at 1 passo -2 faa e c 2: escreva J 3: mpara Sero impressos os valores 9, 7, 5, 3 e 1. a Devemos lembrar que todo comando para pode ser convertido em seu equivalente enquanto. D mais trabalho (so 3 comandos) mas sempre poss a a e vel. J a rec a proca nem sempre verdadeira. S poss transformar um enquanto em um para equive oe vel alente, quando se souber o nmero exato de iteraes que o enquanto faria. Quando u co isto for desconhecido a converso no poss a a e vel. 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 II + 2 fimenquanto
1: 2: 3:
verso de 10 de fevereiro de 2008 a

85

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS

4.5.3

Repetio com condio no nal: repita ca ca

Alm da instruo enquanto, a maioria das linguagens de alto n e ca vel oferece outras formas de repetir uma parte do programa. A rigor, com uma unica estrutura poder-se ia resolver todos os problemas (como, demonstraram aqueles dois professores italianos). Entretanto, criar um programa no um exerc a e cio acadmico, ou no s isso. Na e a e o universidade, no h pressa, e o rigor cient a a co o que importa. Na vida prtica h e a a pressa, e o rigor importante na medida em que garante qualidade, ele no um m e a e em s mesmo. Portanto, visando facilitar, acelerar e simplicar, tem-se aqui um outro comandos de repetio: ca repita comando 1 comando 2 ... comando n at <condi~o> e ca Os comandos internos ao repita so executados enquanto a condio contida na a ca clusula at no for satisfeita. Isto , quando o uxo chega ao at, a condio a e a e e ca e avaliada. Se for verdadeira, o uxo segue aps o at. Se for falsa, o uxo retorna ao o e comando imediatamente seguinte ao repita. Embora parecido com o enquanto, o repita tem algumas diferenas, a saber c
Os comandos internos ao repita so executados sempre ao menos uma vez, indea pendente da condio. J no enquanto, tais comandos podem no ser executados ca a a nem uma vez. O lao do enquanto ser realizado se a condio for VERDADEIRA. J o lao do c a ca a c repita ser realizado se a condio for FALSA. a ca A estrutura enquanto testa e faz. A estrutura repita faz e testa.

Em geral tudo o que se faz com um deles se pode fazer com o outro. A vantagem que para determinadas situaes (que so espec e co a cas de cada algoritmo) um ou outro pode ser mais indicado, isto pode resolver o problema com menos lgica adicional (o e o chamado overhead) tais como contadores, chaves, testes etc. Uma observao meio extempornea, mas ainda assim importante aos java-parlantes ca a ou aos C-parlantes: Nestas duas linguagens o comando de repetio com condio no ca ca in cio e no nal o mesmo. Trata-se do comando while. Muda apenas o local da e condio. Por esta razo, no existe a inverso lgica de sa explicitada acima. Em ca a a a o da Java e em C, a sa quando a condio aparece depois do bloco quando a condio da ca e ca e FALSA. E o contrrio do comando repita acima descrito. a Veja-se em exemplos: No portugol acima descrito tem-se Neste trecho sero impressos os valores 4, 7, 10, 13, 16, 19 e 1000. J em Java o a a trecho caria 1: J = 4 2: while { 3: system.out.println (J) // assim mesmo ? e 4: J = J + 3 5: J > 20 6: system.out.println (1000) } Ser impresso pelo Java: 4, 1000. a
88-08, Pedro Kantek

86

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS

in cio

J4

escreva J JJ+3

J > 20

J4 repita escreva J 4: JJ+3 5: at J > 20 e 6: escreva 1000


1: 2: 3:

v escreva 1000

tipos de algoritmos (algo jocoso) Uma categorizao com algo de chacota, mas que ajuda a entender os algoritmos: ca 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, mas no gera resultado nenhum externo ao a computador. (Por exemplo, um programa que atualize o relgio da mquina) o a Inventa e imprima o algoritmo no recebe nada, mas ao ser acionado gera um rea sultado (Por exemplo, o algoritmo que estabelece letra pequena na impressora matricial. Inventa e esquece ???

Exerc cio 26 Denir algoritmo que escreva a soma dos primeiros 100 nmeros inteiros u
(1, 2, 3, ... , 100)..

Exerc cio 27 Denir algoritmo que escreva a soma dos primeiros 100 nmeros pares u inteiros (2, 4, 6, ... , 200). Exerc cio 28 Denir algoritmo que some todos os mltiplos de 7 compreendidos entre u 100 e 10000, e informe ao nal, quantos foram os mltiplos e quanto resultou sua soma. u Exerc cio 29 Escreva um algoritmo que leia dois nmeros inteiros n e m e: u
Teste se m > n, se no for dar uma mensagem de erro e terminar o processamento a Somar todos os mltiplos de 13 que estiverem compreendidos entre n e m, inclusive u Imprimir a soma ao nal

Exerc cio 30 Denir algoritmo que leia 17.000 nmeros reais e informe, quantos: u
1. foram maiores do que 100;
verso de 10 de fevereiro de 2008 a

87

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS 2. foram pares; 3. foram inteiros; 4. foram negativos;

Exerc cio Resolvido 1 Escreva um algoritmo que leia uma srie de notas (que se e
encerram quando for lido um nmero negativo) e ao nal escreva as duas maiores notas que u apareceram. Por exemplo, se as notas lidas forem 8, 3, 2, 1, 10, 7, 8, 9, 5, 4 e 3, o algoritmo deve imprimir 10, 9 Como o exerc um pouco mais complexo, vamos ver diversas estratgias para a sua cio e e soluo: ca 1. primeira estratgia e 1: enquanto ... faa c 2: leia(N) 3: se N > P ento a 4: PN 5: mse 6: se N > S ento a 7: SN 8: mse 9: menquanto DEFEITO: ao nal, P e S tero o mesmo valor (o maior) a 2. segunda abordagem 1: enquanto ... faa c 2: leia(N) 3: se N > P ento a 4: PN 5: mse 6: se N > S ento a 7: se N = P ento a 8: SN 9: mse 10: mse 11: menquanto DEFEITO: Com a srie 1, 10, 2, 8, 5 funciona e Com a srie 1, 8, 7, 2, 9 no funciona e a 3. terceira abordagem 1: inteiro NUM, NOT, PNU, PNO, SNU, SNO, X 2: X 1 3: PNO 0 4: SNO 0 5: enquanto X < 100 faa c 6: leia (NUM, NOT) 7: se NOT > PNO ento a 8: se PNO > SNO ento a 9: SNO PNO 10: SNU PNU
88-08, Pedro Kantek

88

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS


11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:

mse PNO NOT SNO NUM mse se NOT > SNO ento a se NOT = PNO ento a SNO NOT SNU NUM mse mse menquanto escreva (PNO,PNU) escreva (SNO,SNU)

Eis a lista de variveis usada acima a NUM = nmero do aluno atual u NOT = nota do aluno atual PNU = nmero do aluno com a melhor nota at agora u e PNO = melhor nota at agora e SNU = nmero 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 31 Denir algoritmo capaz de jogar com o operador oJOGO DO PALITO,
e de vencer, sempre que poss vel. Este jogo tem a seguinte regra.
So dois jogadores, a quem chamaremos: mquina (programa) e humano. a a O humano escolhe um nmero de palitos qualquer entre 20 e 30. u A mquina retira 1, 2 ou 3 palitos. a O humano tambm retira 1, 2 ou 3 palitos, e a seqncia prossegue, at que reste e ue e apenas um palito. Quem tirar o ultimo palito perde. O programa deve atentar para impedir retiradas diferentes de 1 2 ou 3.

Dica: Estratgia vencedora: deixar o adversrio sempre com 1, 5, 9, 13, 17, 21, 25 ou 29 e a

Exerc cio 32 Dena algoritmo que calcule e escreva o somatrio expresso pela seguinte o
srie: e S= 500 480 460 20 + + + ... + 2 3 4 26

Exerc cio 33 Escreva um algoritmo que leia uma seqncia de nmeros positivos (a ue u
condio de m a leitura do nmero -1) e escreva ao nal, qual o nmero mais prximo ca e u u o de 100 que foi lido. DESAFIO: escreva o nmero par mais prximo a 100. u o

Exerc cio 34 Escreva um algoritmo que leia uma seqncia de nmeros positivos (a ue u
condio de m a leitura do nmero -1) e escreva ao nal, qual o ultimo nmero que foi ca e u u lido. DESAFIO: escreva o ante-penltimo, ou -1 se no houver ante-penltimo u a u
verso de 10 de fevereiro de 2008 a

89

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS

Exerc cio 35 Dados o seguinte trecho de lgica escritos usando o enquanto, escrever o
trecho equivalente usando o repita 1: Z 10 2: enquanto Z > 0 faa c 3: ZZ-3 4: escreva (Z) 5: menquanto

Exerc cio 36 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto. 1: GH 5 2: repita 3: escreva (ABC) 4: at GH = 5 e

Exerc cio 37 Escreva o trecho a seguir, usando


1. o comando Enquanto e 2. o comando Repita
1: 2:

para J de 2 at -10 passo -3 faa e c K sqr(J) 3: escreva K 4: mpara

maior que 3), e escreva PRIMOse ele for primo, ou NAO PRIMO ele for divis se vel. Por PRIMO e se for lido 11, dever dizer exemplo, se for lido 10, o programa dever dizer NAO , PRIMO.

Exerc cio 38 Escrever um algoritmo que leia um unico nmero (que por denio u ca e

Exerc cio 39 Denir algoritmo que leia uma seqncia de valores numricos inteiros ue e e determine, ao nal se eles estavam em ordem ascendente ou no. Se estiverem, deve a imprimir EM ORDEM e se no estiverem, deve imprimir FORA DE ORDEM , a . Exerc cio 40 Dena algoritmo que calcule e escreva o somatrio expresso pela seguinte o srie. O nmero de termos deve ser lido a priori. e u
1 1 1 1 S = 1 + 2 + 3 + ... + n 2 3 4 n+1

Exerc cio 41 Escreva o algoritmo que leia N e escreva S, onde


S= N 1 2 3 + + + ... + 2 3 4 N +1

Exerc cio 42 Dados o seguinte trecho de lgica escritos usando o enquanto, escrever o
trecho equivalente usando o repita. 1: A 10 2: B 20 3: enquanto (A + B) < 50 faa c 4: AA+5 5: B B + 10 6: escreva (A+B)
88-08, Pedro Kantek

90

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS


7:

menquanto

Exerc cio 43 Dados o seguinte trecho de lgica escritos usando o enquanto, escrever o
trecho equivalente usando o repita. 1: K 5 2: enquanto K < 10 faa c 3: K K + 1.5 4: escreva (K) 5: menquanto

Exerc cio 44 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto. 1: T 0 2: repita 3: T T + 0.5 4: escreva (T 2) 5: at T > 10 e

Exerc cio 45 Escreva o trecho a seguir, usando


1. o comando Enquanto e 2. o comando Repita para T de 1 at 2 passo 2 faa e c escreva T 3: mpara
1: 2:

Exerc cio 46 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto. a) 1: A 10 2: repita 3: AA+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.5 4: escreva (T * 2) 5: at (T > 10) e

Exerc cio 47 Um comercial de rdio tem seu custo em funo de 2 variveis, a saber: a ca a durao e hora de irradiao, segundo a tabela: ca ca
Durao ca At 10 segundos e De 11 a 30 segs Acima de 30 segs de 0 a 5h59min 5 US$ 12 US$ 16 US$ Horrio a de 6 a 20h59min 12 US$ 21 US$ 26 US$ 91 de 21 a 24h 8 US$ 17 US$ 22 US$
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS e Obs: o preo acima para o comercial inteiro, ou seja, NAO por segundo de comercial. c e Denir algoritmo que: 1. leia o valor da cotao do dlar naquele dia ca o 2. leia srie de duplas (durao,hora) escreva a dupla e o valor a ser cobrado em reais. e ca A durao est dada em segundos. ca a Os dados terminam quando for lida uma dupla com durao igual a zero. ca Valores vlidos: 0 Durao 60, 0 Hora 23 a ca Por exemplo, se o dlar estiver cotado a R$ 2,20 e o forem lidos dever ser impresso 10,4 26,40 R$ 20,23 37,40 R$ 10,23 17,60 R$ 0,0 m...

Exerc cio 48 Escreva um algoritmo capaz de determinar o valor da seguinte srie: e


2 3 4 5 6 + + + ... 1 4 9 16 25 O nmero de termos da srie deve ser lido, e nunca ser maior que 25. Ao nal do u e a processamento, o algoritmo deve imprimir o valor da srie. e S=

Exerc cio 49 Denir um algoritmo que leia uma srie indeterminada de valores posie tivos, sendo que a marca de m a leitura do nmero -1. O algoritmo deve imprimir qual o e u ultimo nmero lido, imediatamente antes do nmero -1. Por exemplo, se for lida a srie 3, u u e 7, 21, 4, -1, o algoritmo deve imprimir 4. Exerc cio 50 Dena e escreva um algoritmo para imprimir todos os nmeros perfeitos u entre 1 e 500. Um nmero perfeito aquele que igual a soma de todos os seus fatores. O u e e primeiro nmero perfeito o 6 (6=1+2+3), logo por denio o nmero 1 no perfeito. u e ca u a e Usar uma funo para determinar se um nmero ou no perfeito. Outros nmeros so: ca u e a e u a 28, 496. Depois disso, descobrir qual o prximo nmero perfeito, maior que 500. o u Exerc cio 51 Dena um algoritmo que calcule e escreva a soma da srie a seguir, e considerando 50 termos:
S= 100 2 4 6 + + + ... + 3 5 7 101

Exerc cio 52 Denir algoritmo que receba uma srie de triplas de nmeros inteiros. e u Para cada tripla deve ser gerada uma progresso aritmtica supondo que: a e
O primeiro elemento da tripla o termo inicial e O segundo elemento da tripla a razo e a O terceiro elemento da tripla o nmero de termos e u

Os elementos da PA devero ser impressos. O processo termina quando for lido um nmero a u de termos igual a zero.

Exerc cio 53 Escreva um algoritmo que leia uma srie de nmeros inteiros e positivos e u e ao nal do processamento escreva qual o maior deles. O processamento se encerra quando for lido qualquer nmero negativo que no deve ser considerado para efeitos de comparao. u a ca
88-08, Pedro Kantek

92

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS

Exerc cio 54 Escrever um algoritmo, que receba conjuntos de 3 notas de um aluno. O primeiro valor corresponde a mdia do primeiro semestre. O segundo valor mdia do e e e segundo semestre, e o terceiro valor correspondendo a nota nal. Existe uma varivel no a algoritmo (pr-denida) chamada QTD-APROV. Para cada aluno aprovado, o algoritmo e deve somar 1 em QTD-APROV. Regra de aprovao: ca
(N1 3 + N2 3 + N3 4) 10 7 Os dados terminam quando o primeiro valor da srie for negativo. Por exemplo, se QTDe APROV tiver o valor 0, e forem lidas as triplas (5,7,2), (8,8,6), (1,10,5) e (-1,0,0) o resultado nal de QTD-APROV ser 1. a

Exerc cio 55 Denir um algoritmo que leia uma srie de pares de valores inteiros que e representam COMPRIMENTO e LARGURA de um retngulo. Calcular e imprimir a rea do a a retngulo se o per a metro do mesmo for superior a 25. Os dados se encerram quando for lida a dupla zero,zero. Por exemplo, se forem lidas as duplas (2,2), (10,8), (10,1) e (0,0) s ser o a impressa a rea 80, equivalente ` dupla (10,8). a a Exerc cio Resolvido 2 Imagine um relgio analgico de ponteiros. No existe o o o a
ponteiro de segundos, e os ponteiros realizam movimentos discretos, isto , eles s se movem e o a cada 60 segundos. Escreva um algoritmo que leia diversos conjuntos de hora e minuto, e para cada conjunto lido, informe qual o menor ngulo que os dois ponteiros fazem entre a si ao representar a hora informada. O algoritmo termina quando for lida a dupla 0,0. Os valores permitidos para hora esto entre 0 e 11 e para minuto os valores vlidos esto entre a a a 0 e 59. A sa do resultado pode ser em graus e dcimos de grau, ou se o aluno preferir da e em graus e minutos. 1: algoritmo ponteiro 2: inteiro h m 3: real ah am qtm angulo 4: leia (h,m) 5: enquanto h = 99 faa c 6: qtm (h * 60) + m 7: ah qtm * 0,5 8: am qtm * 6 9: enquanto ah 360 faa c 10: ah ah - 360 11: menquanto 12: enquanto am 360 faa c 13: am am - 360 14: menquanto 15: se se ah > am ento a 16: angulo ah - am 17: seno a 18: angulo am - ah 19: mse 20: se se angulo > 180 ento a 21: angulo 360 - angulo 22: mse 23: escreva (angulo) 24: leia(h,m) 25: menquanto 26: m{algoritmo}
verso de 10 de fevereiro de 2008 a

93

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS

Exerc cio 56 Interprete o seguinte trecho de algoritmo, informando (em portugus) o e que faz ou para que serve o algoritmo analisado. Estude e informe a condio de m. Se ca necessrio, realize um chins a e sobre os dados. 1: inteiro CA,CE 2: leia(CA,CE) 3: enquanto CA = CE faa c 4: se CA < CE ento a 5: escreva(CA) 6: mse 7: escreva(CE) 8: leia(CA,CE) 9: menquanto Exerc cio 57 Interprete o seguinte trecho de algoritmo, informando o que faz ou para que serve o algoritmo analisado. Estude e informe a condio de m. Se necessrio, realize ca a um chins e sobre os dados. 1: inteiro A,B,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 faa c 10: se A < B ento a 11: BA 12: mse 13: leia(A) 14: menquanto 15: escreva (B/2) Exerc cio 58 Interprete o seguinte trecho de algoritmo, informando o que faz ou para que serve o algoritmo analisado. Estude e informe a condio de m. Se necessrio, realize ca a um chins e sobre os dados. 1: real PI,R,C 2: {R e } 3: {C e } 4: PI 3.141592 5: leia(R,C) 6: enquanto (R = 0) (C = 0) faa c 7: se R = 0 ento a 8: C 2 PI R 9: seno a 10: R C (2 PI) 11: mse 12: escreva(R,C) 13: leia(R,C) 14: menquanto Exerc cio 59 Siga o seguinte algoritmo, e informe quais os valores de A, B, C e D que so impressos ao nal. a
88-08, Pedro Kantek

94

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:

inteiro A, B, C, D A0 B 10 CB3 DB+C+A enquanto D < 0 faa c AA+1 DD+1 menquanto se A > 0 ento a DD2 seno a BB2 mse escreva (A,B,C,D)

A:__________ B:__________ C:__________ D:__________

Exerc cio 60 BrinquedosPIRRALHOS ENDIABRADOS um grande distribuidor de e presentes em todo o pa Recentemente, a empresa teve a oportunidade de comprar 15.000 s. pequenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend-los como surpresa, mais ou e menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem um nmero de ordem, e as suas 3 dimenses A, B e C, medidas em cent u o metros. Denir um algoritmo que leia 15.000 qudruplas (ordem,A,B,C) e para cada uma delas escreva a a ordem do brinquedo e o raio da esfera necessrio. Todos os brinquedos cabero em uma das a a esferas. Exerc cio 61 Supondo um trecho de cdigo escrito em pseudo-cdigo: o o
para I de 1 at 100 faa e c para J de 3 at 11 passo 2 faa e c para K de 5 at 25 passo 5 faa e c 4: escreva (I,J,K) 5: mpara 6: mpara 7: mpara Imagine que voc precisa re-escrever este cdigo e a sua nova linguagem no estruturada, e o a e o que signica que no existem as estruturas para ... mpara, enquanto ... menquanto e a nem repita ... at. Voc s conta com labels, testes e desvios. e e o Eis como caria: 1: algoritmo qualquer 2: I 1 3: J 3 4: K (*1) 5: L1: se (I > 100) 6: vpara FIM a 7: seno a 8: se (J > 11) 9: vpara L2 a 10: seno a 11: se (K > (*2)) 12: vapara L3
1: 2: 3:
verso de 10 de fevereiro de 2008 a

95

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS seno a escreva (I,J,K) K K + (*3) vpara L1 a mse mse mse 20: L3: J J + (*4) 21: K 5 22: vpara L1 a 23: L2: I++ 24: J (*5) 25: K 5 26: vpara L1 a 27: malgoritmo Os valores propostos para (*1) (*2) (*3) (*4) e (*5) para que os dois trechos sejam equivalentes so a
13: 14: 15: 16: 17: 18: 19:

a) b) c) d) e)

5, 5, 5, 1, 1,

25, 5, 25, 25, 25,

5, 5, 5, 1, 1,

2, 2 2, 11 2, 11 1, 2 2, 1

Resposta certa: letra (a)

4.5.4

Comando de m ltipla escolha: Escolha u

Nos casos em que h mltiplas sa a u das para um determinado teste, ns podemos usar o a estrutura de alternativas simples e compostas, devidamente encadeadas. Tal uso (de acordo com os dois mestres italianos) sempre suciente para a soluo de qualquer e ca problema. Entretanto, para simplicar a poss soluo, inmeras linguagens tem o comando vel ca u de teste mltiplo (COBOL tem o GOTO depending ON, PASCAL tem o comando u CASE, dbase tem o CASE, APL tem o desvio para um vetor etc). Aqui, usar-se- o a seguinte formato: escolha <express~o> a caso valor-1 [: valor-2 caso valor-a [: valor-b ... sen~o : comando-z a fimescolha ...] : comando-1 ...] : comando-a

O funcionamento deste comando simples: A expresso que aparece ao lado do e a comando Escolha avaliada, e deve gerar um resultado determinado. Este resultado e ser comparado com os valores colocados ao lado direito das palavras caso. Quando um a valor igual for encontrado, o comando colocado o seu lado ser executado. Finalmente, a se nenhum valor for igual, e existir a clusula seno, esta ser executada. Exemplo a a a 1: ESCOLHA (A + 1) 2: CASO 1 : comando-1; 3: CASO 2 : 3 : 4 : comando-2; 4: SENAO: omando-3; 5: FIMESCOLHA
88-08, Pedro Kantek

96

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS Aqui, se A for zero, ser executado o comando-1. a Se A for 1, 2 ou 3, ser executado o comando-2. a Se A tiver qualquer valor diferente de 0, 1, 2 ou 3, ser executado o comando-3. a

4.5.5

Abandono de iterao: abandone ca

Este comando exige uma sa incondicional de cada uma das estruturas de repetio da ca (enquanto, repita ou para), independente de condies. Geralmente, este comando co e colocado dentro de um se. O desvio sempre se d para o comando seguinte ao m da a estrutura que est sendo usada. Eis o formato do comando a abandone Este comando s tem sentido quando emitido dentro de um lao de processamento o c (dentro de um enquanto, repita ou para). Ele utilizado quando se deseja - a partir e de uma determinada condio - abandonar o processo iterativo em curso. Seu funcionaca mento simples: ao ser executado, este comando provoca um desvio incondicional para e o comando subseqente ao m do lao. u c Exemplo 1: enquanto A > 10 faa c 2: comando 1... 3: comando 2... 4: se B = 5 ento a 5: abandone 6: mse 7: comando 10... 8: menquanto 9: comando 20... 10: ... Neste caso, quando abandone for executado, independente do estado da varivel A (e a do teste (A > 10), ser executado o comando 20. Assim, quando abandone executado a e dentro de um para, desvia-se para o comando seguinte ao mpara. Da mesma forma, quando dentro de um repita executa-se o seguinte a at ... . e Se existirem dois ou mais laos (um dentro do outro), e for emitido um abandone, c ele vale para o lao mais interno. Exemplo c 1: enquanto (X = 10) faa c 2: comando 1 ... 3: enquanto (Y > 20) faa c 4: comando 10 ... 5: se (Z = 8) ento a 6: abandone 7: mse 8: comando 30 ... 9: menquanto 10: comando 40... 11: menquanto 12: comando 50... Neste caso, ao ser executado o abandone, ser executado o comando 40 e no o a a comando 50 como poderia parecer a primeira vista.

Exerc cio 62 Dados o seguinte trecho de lgica escritos usando o enquanto, escrever o
trecho equivalente usando o repita.
verso de 10 de fevereiro de 2008 a

97

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS


1: 2: 3: 4: 5:

A0 enquanto A = 3 faa c AA+1 escreva (A) menquanto

Exerc cio 63 Dado o seguinte algoritmo que utiliza o comando repita escrever comandos equivalentes usando o comando enquanto. 1: A 10 2: repita 3: AA+1 4: at A > 10 e

Exerc cio 64 Dado o trecho a seguir, escrito usando o comando para, reescreve-lo
usando o comando enquanto 1: para J de 1 at 20 faa e c 2: XJ3 3: escreva (X) 4: mpara

Exerc cio 65 Dado o trecho a seguir, escrito usando o comando para, reescreve-lo
usando o comando enquanto 1: para SEMENTE de 0 at 100 passo 2 faa e c 2: SEM1 SEMENTE 2 3: SEM2 SEMENTE + 1.5 ABC 4: MEDIA (SEM1 + SEM2) 2 5: escreva MEDIA 6: mpara

Exerc cio 66 Escreva o trecho a seguir, usando


1. o comando Enquanto e 2. o comando Repita
1: 2: 3:

para K de 5 at 25 passo 3 faa e c escreva K+1 mpara

Exerc cio Resolvido 3 Dois nmeros so considerados amigosquando um nmero u a u igual a soma dos fatores do outro nmero. Por exemplo, 220 e 284 so amigos, pois 220 e u a igual a soma dos fatores de 284 (142,71,4,2,1) e 284 a soma dos fatores de 220 (110 e e 55 44 22 20 11 10 5 4 2 1). Denir algoritmo que escreva os pares de nmeros amigos u existentes entre 1 e 500. 1: inteiro i,j,k,l,m,n 2: inteiro funo somf (inteiro a) ca 3: inteiro var ind,som 4: som 0 5: para ind 1 to a-1 faa c 6: se a mod ind = 0 ento a 7: som som + i 8: mse 9: mpara
88-08, Pedro Kantek

98

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS


10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:

retorne som m{funo} ca para i 1 to 500 faa c escreva i para j i to 500 faa c m somf(i) n somf(j) se (m = j) (n = i) ento a escreva (i,j) mse mpara mpara

Exerc cio Resolvido 4 Escreva uma funo que receba um nmero inteiro positivo ca u
k, calcule e devolva o prximo nmero primo x, onde k x. o u Soluo Para resolver este exerc ca cio, consideraremos denida e operante a funo EPca RIMO, com o seguinte cabealho lgico fun~o EPRIMO (inteiro x), que devolve VERc o ca DADEIRO quando x primo e FALSO seno. e a Eis a resposta 1: inteiro funo PROXPRIM (inteiro K) ca 2: enquanto 1=1 faa c 3: se EPRIMO(K) ento a 4: retorne K 5: abandone 6: mse 7: K++ 8: menquanto 9: mfuno ca Atente para a condio terminadora do enquanto. J que a sa se dar atravs do ca a da a e abandone, qualquer condio sempre verdadeira pode ser colocada a ca .

Exerc cio Resolvido 5 Voc tem uma coleo seqencial de 10.000.000 de apose ca u
tas na sena. Para cada apostador, existem os 6 nmeros em que ele jogou e mais o u nmero da aposta, que posteriormente identicar o apostador. Suponha uma funo u a ca lgico ganhou (inteiro a1, a2, a3, a4, a5, a6) que devolve VERDADEIRO se esta o aposta vencedora e FALSO seno. Suponha tambm que a condio de m de dados a e a e ca e leitura de a1 negativo. Soluo Para resolver este exerc ca cio, duas hipteses podem ser consideradas: a primeira o faz uma dupla leitura (uma fora e outra dentro do loop). 1: algoritmo SENA 2: inteiro a1, a2, a3, a4, a5, a6, apostador 3: leia (a1, a2, a3, a4, a5, a6, apostador) 4: enquanto a1 > 0 faa c 5: se ganhou (a1, a2, a3, a4, a5, a6) ento a 6: escreva apostador 7: mse 8: leia (a1, a2, a3, a4, a5, a6, apostador) 9: menquanto 10: m{algoritmo}
verso de 10 de fevereiro de 2008 a

99

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS A segunda abordagem, faz apenas uma leitura, mas a funo nitidamente menos limpa ca e e clara: 1: algoritmo SENA2 2: inteiro a1, a2, a3, a4, a5, a6, apostador 3: a1 1 {poderia ser qualquer valor maior que zero} 4: enquanto a1 > 0 faa c 5: leia (a1, a2, a3, a4, a5, a6, apostador) 6: se a1 > 0 ento {pode ter chegado o negativo} a 7: se ganhou (a1, a2, a3, a4, a5, a6) ento a 8: escreva apostador 9: mse 10: mse 11: menquanto 12: m{algoritmo}

Exerc cio Resolvido 6 Seja agora a tarefa, muito comum em programao, de ca


obter nmeros constru u dos segundo uma certa lei de formao, a princ desconhecida. S ca pio o se conhecem os primeiros nmeros de uma seqncia deles, e o que pedido, o resto dos u ue e e nmeros. u Por exemplo, se a seqncia for 1,2,3,4,5,6 e for pedido o prximo nmero, a resposta ue o u e 7, por que a lei de formao a dos nmeros naturais. ca e u Entretanto, outras seqncias podem ser menos evidentes e conseqentemente mais ue u trabalhosas. 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 ... 64 ... 67 ... 134 ... 68 ... 515 ... 121 ... 3375 ... 2304 ... 4096

Uma estratgia pesquisar os poss e e veis valores de x, y e z, usando intuio, pistas, ca experincias passadas, ao estilo de Sherlock Holmes. Uma segunda estratgia usar da e e e informao de que 2 x, y, z, 7 e adotar a fora bruta, fazendo ca c 1: para X de 2 at 7 faa e c 2: para Y de 2 at 7 faa e c 3: para Z de 2 at 7 faa e c 4: para I de 1 at 10 faa e c 5: escreva ... 6: mpara 7: escreva ... 8: mpara 9: mpara 10: mpara

Exerc cio 67 Escrever um algoritmo que leia uma srie indeterminada de nmeros e u positivos. A leitura deve prosseguir at ser lido o nmero 1203, quando o programa dar e u a mensagem 1203 ENCONTRADO e terminar o processamento. Se este nmero no for u a encontrado, ao nal dos dados (quando for lido um nmero negativo) o programa deve u
88-08, Pedro Kantek

100

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS imprimir o nmero lido mais prximo de 1203, com a mensagem xxx MAIS PROXIMO u o , onde xxx o nmero em questo. e u a

Exerc cio 68 Dena um algoritmo capaz de somar os primeiros 50 nmeros mltiplos u u de 4, comeando no 4 (isto : 4, 8, 12, ...400). O algoritmo deve imprimir o resultado ao c e nal. Exerc cio 69 Escreva um algoritmo capaz de calcular e imprimir o valor da somatria o dada pela srie a seguir. O nmero de termos lido ao in do algoritmo. e u e cio
S= 12 22 32 + + + ... 1 2 4

Para resolver este tipo de exerc cio, deve-se buscar a frmula do termo genrico. Sem esta o e frmula dif programar a soluo. Fica: o e cil ca Tn = e sobretudo S=
i=1

12 + (n 1) 10 2 (n 1)
n

Tn

ou S=

n i=1

12 + (n 1) 10 2 (n 1)

Exerc cio 70 Suponha


X2 Y5 enquanto (X < 5) (Y < 3) faa c X++ Y- 6: menquanto
1: 2: 3: 4: 5:

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 71 Seja


1: 2: 3: 4: 5: 6:

A 56 B 10 enquanto (A+B) mod 14 = 0 faa c A A + 10 BA+2 menquanto


quais os valores de A e B ao nal ? Se A comear com 52, o que acontece com o algoritmo ? c

Exerc cio 72 Qual o 30 nmero primo ? e u Exerc cio 73 Escreva o algoritmo de uma funo que receba um nmero inteiro posica u tivo X e devolva o prximo primo maior ou igual a X. o
verso de 10 de fevereiro de 2008 a

101

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS

Exerc cio 74 Dois inteiros positivos a e b so relativamente primos se no tiverem a a fatores comuns exceto 1. Por exemplo, 4 e 25 so relativamente primos, apesar de nenhum a deles o ser. Escreva uma funo que receba X e Y e devolva .V. se eles forem primos relativos ca e .F. seno. a A propsito, os nmeros 17.773 e 14.973 so relativamente primos ? o u a Exerc cio 75 Diamantes so classicados atravs de 3 testes distintos, como segue: a e
Dureza maior do que 12 Percentagem de impurezas menor que 45 Resistncia ` trao maior que 600 Kgf e a ca

Se o diamante passa nos trs testes, ele ganha o grau 50. Se passa em dois, ganha o grau e 40, se passa apenas em um teste, ganha 30, e se no passa em nenhum ganha o grau 15. a Escrever um algoritmo que leia um conjunto de variveis formado por Nmero da partida a u (inteiro), dureza (real), percentagem de impurezas (real), resistncia (real); e escreva o e nmero da partida e a nota do diamante. Os dados terminam quando for lida a partida u nmero zero. A nota do diamante deve ser calculada por uma funo. u ca

Exerc cio 76 Escreva algoritmo capaz de criar e imprimir uma tabela de ngulos, senos a
e cossenos, para todos os ngulos de 0 a 90 graus. a Exemplo ANGULO SENO COSSENO 0o 0 1 1o 0.01745240644 0.9998476952 2o 0.0348994967 0.999390827 3o 0.05233595624 0.9986295348 4o 0.06975647374 0.9975640503 5o 0.08715574275 0.9961946981 6o 0.1045284633 0.9945218954 7o 0.1218693434 0.9925461516 ...

Exerc cio 77 Denir um algoritmo que escreva a diferena entre o 21. nmero primo c u e o 13. nmero primo. u Exerc cio 78 Resolver o seguinte problema usando o comando ESCOLHA. Numa organizao, o nmero de dependentes limita a quantidade de dias que um empregado pode ca u faltar anualmente. Assim, empregados com menos de 3 dependentes podem faltar 5 dias. Quem tem 4, 5 ou 6 dependentes pode faltar 8 dias, e quem tem mais de 6 dependentes pode faltar 11 dias. Escrever algoritmo que leia o nmero de dependentes e escreva a quantidade u de dias que podem ser fruidos anualmente para cada caso. Exerc cio 79 Um concurso de vendas realizado dentro de uma empresa. Por razes e o territoriais, cada venda unitria, d direito a um bnus cujo valor depende do estado em que a a o foi feita a venda, segundo a tabela: PR e SC do direito a a 5 bnus o RS, SP e RJ 4 bnus o MG, GO, MS e TO 3 bnus o BA e PE 2 bnus o demais estados no citados 1 bnus a o
88-08, Pedro Kantek

102

verso de 10 de fevereiro de 2008 a

CAP ITULO 4. COMANDOS Denir algoritmo que receba uma srie de vendas no formato (valor, estado) e para cada e uma informe a quantidade de bnus de direito. Os dados terminam quando for lido um o estado igual a XX ou um valor de vendas negativo.

Exerc cio 80 Denir um algoritmo que leia uma srie de nmeros inteiros e positivos e u (condio de m: leitura de um negativo). O algoritmo deve calcular e imprimir a mdia ca e dos nmeros lidos EXCLU u IDOS os zeros. Exerc cio 81 Existe um conjunto de muitos nmeros inteiros e positivos, agrupados u trs a trs. Deve-se escrever um algoritmo capaz de: e e
Ler os trs nmeros e u Identicar o maior deles, e rejeit-lo a Calcular a mdia entre os dois nmeros restantes e u Imprimir os dois nmeros selecionados e a mdia. u e

A pesquisa termina quando o primeiro nmero dos trs lidos, for negativo. u e

Exerc cio 82 Dados conjunto de 20 pares de nmeros, realizar sobre eles o seguinte u
processamento:
Se ambos forem pares, eles devem ser somados Se ambos forem mpares, devem ser multiplicados Se um for par e outro mpar, deve-se imprimir zero.

Para cada conjunto lido, deve-se imprimir os dois nmeros e o resultado obtido segundo as u regras acima.

Exerc cio 83 Uma eleio anulada se a somatria de votos brancos e nulos superior ca e o e
` metade dos votos totais. Suponha que numa eleio existem 3 candidatos e para apur-la, a ca a deveremos ler um conjunto indeterminado de votos (nmeros inteiros), usando a regra: u
1 = voto no candidato nmero 1 u 2 = voto no candidato nmero 2 u 3 = voto no candidato nmero 3 u 8 = voto em branco 9 = voto nulo.

A entrada de dados termina quando for lido um voto igual a zero. Caso ocorra um empate, dever ser vencedor o candidato mais velho. As idades so: 1=55 anos, 2=58 anos e 3=47 a anos. Escrever um algoritmo que: 1. Verique se a eleio foi vlida ca a 2. Se foi, quem a venceu.

Exerc cio 84 Escreva um algoritmo que leia uma sequncia de nmeros positivos (a e u leitura um depois do outro, por restrio do problema no se pode usar um vetor) com e ca a condio de m igual a leitura de um nmero negativo e escreva o ultimo nmero lidos que ca u u tenha sido maior que 100.
verso de 10 de fevereiro de 2008 a

103

88-08, Pedro Kantek

CAP ITULO 4. COMANDOS

Exerc cio 85 Calcular a soma total e o produto total de uma srie de nmeros inteiros e u e positivos que sero fornecidos. A srie termina quando for lido o nmero -1. a e u Exerc cio 86 Escreva um algoritmo capaz de move atribu a atletas de ginstica das a ol mpica. Tal como na prtica, este algoritmo deve eliminar a maior e a menor notas, e a a seguir calcular e imprimir a mdia entre as duas notas restantes. e

88-08, Pedro Kantek

104

verso de 10 de fevereiro de 2008 a

Cap tulo 5

Nassi-Schneiderman
Fluxos e Nassi-Schneiderman
Alm da maneira pela qual descreveremos nossos algoritmos (que atravs do Portugol), e e e existem outras formas de representar algoritmos. Falaremos de mais duas: a primeira a linguagem dos uxogramas. Tem importncia histrica na informtica, pois foi a e a o a primeira (e durante muito tempo unica) representao de programas e similares. ca A seguir uma lista dos principais s mbolos usados em uxogramas
Iniciador/terminador Processo Alternativa

Conector

Entrada/sada Fluxo de processamento

Fluxogramas perderam sua condio de unicas ferramentas, entre outras razes, pelas ca o a seguir expostas:
Prestam-se mal ` programao estruturada, pois permitem a construo de algoa ca ca ritmos no estruturados. a Exigem capricho, dando muito trabalho para serem feitos e mantidos. So necessrias quantidades enormes de papel, pois h um overhead muito grande, a a a isto , s se escreve dentro dos quadrinhos, e boa parte do papel se perde. e o Embora hoje j existam programas para fazer e guardar uxos em computador a (como por exemplo o FLOWCHART e o AUTOFLOW), eles no so muito prtia a a cos para este trabalho. Assim para seguir a tendncia moderna (que guardar e e matriz da documentao em computador e no em papel) o uxograma resulta ca a incmodo. o

105

CAP ITULO 5. NASSI-SCHNEIDERMAN Outra possibilidade de representao atravs dos diagramas de NASSI & SHNEIDERca e e MAN, tambm conhecidos como mapas de CHAPIN ou estructogramas. Alguns autores e negam importncia a este trabalho, armando tratar-se de pseudo-cdigo (no caso, PORa o TUGOL), apenas escrito de outra maneira. Outros, reconhecem fora e inovao nesta c ca idia. e A idia destes diagramas formatar em um retngulo todas as informaes do proe e a co cessamento usando marcas que identiquem as diversas operaes permitidas. Tem a co vantagem sobre os uxogramas de no permitirem o desvio. Os s a mbolos usados so: a nome da estrutura objetivo
comando inicial objetivo (nome do procedimento) nome da entrada caminho cr tico

condiao a testar c falso, ao ca

verdadeiro, ao 1 ca verdadeiro, ao 2 ca comando a repetir condio de m ca condio ca comando a executar item do caso condio 1 ca comando a executar condiao 2 c

condiao 3 c comando a executar

comando 1 a executar comando 2 a executar

seleao c caso 1 nome entrada 1 comando a executar nome entrada 2 comando cr tico a executar comando no a cr tico a executar a atraso de 10seg seno aes do seno co a

A seguir, alguns exemplos de algoritmos feitos em um e noutro esquema Seja o seguinte algoritmo Algoritmo Calcular {a soma dos nmeros inteiros at 100} u e real SOMA inteiro NUMERO SOMA 0 NUMERO 1 enquanto {NUMERO < 101}
88-08, Pedro Kantek

106

verso de 10 de fevereiro de 2008 a

CAP ITULO 5. NASSI-SCHNEIDERMAN SOMA SOMA + NUMERO NUMERO NUMERO + 1 fim{enquanto} imprima SOMA fim{algoritmo} calcular soma os 100 primeiros nmeros u
real SOMA inteiro NUMERO SOMA 0 NUMERO 1 NUMERO < 101 SOMA SOMA + NUMERO NUMERO NUMERO + 1 imprima SOMA

5.1

Chines

Tambm conhecido como teste de mesa, o chines a execuo manual, passo a passo, de e e ca um algoritmo pelo programador. Em geral, atravs do chines que o autor do algoritmo e e se certica de que ele funciona. Infelizmente, o chines costuma apontar onde e quando o algoritmo falha, mas no a garante de que o algoritmo esteja 100% correto, pois o caminho eventualmente errado pode no ter sido seguido durante o chines. a As regras a seguir para um proveitoso chines, so: a Obter uma massa de dados signicativa O conjunto a testar no deve ser extenso, a mas precisa ser abrangente e incluir as condies que esto sendo testadas. Escolher bem co a os dados a testar uma arte. Se mal escolhidos no vo certicar nada e s vo dar e a a o a trabalho. Obter o resultado correto Com os dados de entrada em mos, o programador a precisa obter o resultado esperado que estes dados vo gerar. Como fazer isto, varia de a caso a caso, mas imprescind que antes de comear o chines, se saiba qual resultado e vel c esperar. Listar os parmetros e variveis Deve-se providenciar no alto de uma folha de a a papel, o nome de todos os parmetros e variveis que o algoritmo manuseia. Deve haver a a bastante espao abaixo dos nomes, a m de que os valores que iro sendo lanados, c a c caibam. Seguir o algoritmo Em geral, com a ponta cega de uma lapiseira, o programador segue cada um dos comandos escritos. Se houver a necessidade de uma pausa para
verso de 10 de fevereiro de 2008 a

107

88-08, Pedro Kantek

CAP ITULO 5. NASSI-SCHNEIDERMAN raciocinar, a ponta da lapiseira ca sobre o ponto de interrupo. A tabela de valores ca das variveis vai sendo lida (consultada) e escrita (alterada) durante o chines a Deciso Quando o algoritmo e o chines terminam, um resultado obtido. Ento, a e a ele comparado com o resultado esperado, acima calculado. Se for diferente, um erro e aconteceu. Raras vezes no processo manual de obteno do resultado, mas quando e ca isso ocorre o algoritmo pode estar certo e o resultado obtido que est errado. Mas, na e a maioria das vezes, o algoritmo que est errado. E hora de procurar o erro e refazer e a todo o ciclo. Se ambos so iguais, o algoritmo funcionou para este caso de teste. Quanto deste a funcionamento adequado pode ser generalizado para qualquer caso de testes ca em aberto.

Exerc cio 87 Faa um chines com o algoritmo a seguir: c


inteiro funo CALCU (inteiro A, B) ca se A B ento a devolva A seno a 5: devolva B 6: mse
1: 2: 3: 4:

88-08, Pedro Kantek

108

verso de 10 de fevereiro de 2008 a

Cap tulo 6

Visualg
O VISUALG um programa que auxilia o aprendizado de algoritmos na medida em e que permite a entrada e execuo de um algoritmo escrito em portugol, conforme aqui ca descrito. Escrito pela empresa Apoio, pode ser obtido em www.apoioinformatica.com.br.

6.1

Regras de Visualg

Em visualg, valem as regras:


cada comando de visualg deve estar em uma linha no h separadores (;), nem blocos (como { e {) nem goto a a todas as palavras reservadas no tem acentos ou cedilha a no h separao entre maisculas e minsculas nos comandos ou variveis a a ca u u a o limite de variveis de 500 (cada item de vetor conta como 1 varivel) a e a

e o ponto decimal o ponto


valores caractere esto entre aspas duplas a O s mbolo de atribuio <-. Na verdade so dois s ca e a mbolos Existe recursividade

Algoritmo E a unidade bsica de escrita de algoritmos. a formato 1: algoritmo <nome> 2: var 3: variveis a 4: se houver, a funo entra aqui ca 5: inicio 6: comandos 7: malgoritmo exemplo 1: algoritmo teste 2: var 3: N : inteiro 4: inicio 5: leia (N) 6: escreva (N * 2) 7: malgoritmo

Comentrios so caracterizados por comear por \\. a a c 109

CAP ITULO 6. VISUALG Funo A funo uma unidade no autnoma de programao. Ela sempre precisa ca ca e a o ca receber seus dados (atravs de uma lista de parmetros) e devolver um resultado a quem e a a chamou. Em Visualg so colocadas imediatamente antes da palavra inicio do bloco a a que se referem. Formato 1: funcao <nome>( <parametros>) : <tipo-resultado> 2: var 3: variveis locais a 4: inicio 5: comandos 6: ... retorne ... 7: mfuncao Exemplo 1: funcao teste(N : inteiro; A, B:real) : inteiro 2: var 3: inicio 4: retorne (N * 2) 5: mfuncao O <nome-de-funo> obedece as mesmas regras de nomenclatura das variveis. Por ca a outro lado, a <seqncia-de-declaraes-de-parmetros> uma seqncia de ue co a e ue [var] <seqncia-de-parmetros>: <tipo-de-dado> ue a separadas por ponto e v rgula. A presena (opcional) da palavra-chave var indica pasc sagem de parmetros por referncia; caso contrrio, a passagem ser por valor. a e a a Por exemplo, eis alguns cabealhos de funes c co 1: funcao CALC22 (A, B : inteiro; C : real) : real Deniu-se uma funo de nome CALC22, que recebe 3 parmetros, sendo os dois ca a primeiros inteiros e o terceiro real. A funo devolve um resultado real. ca 1: funcao EQA6 (X : inteiro) : inteiro Deniu-se uma funo de nome EQA6, que recebe um unico nmero inteiro e devolve ca u outro nmero inteiro. u 1: funcao EXA (var X : inteiro) A funo EXA recebe um parmetro inteiro. A presena da palavra var implica ca a c em que a passagem por referncia, ou seja o que a funo modicar na varivel X e e ca a permanecer modicado aps o retorno da funo EXA. a o ca Nomes Ao construir algoritmos necessrio dar nomes a muitas coisas. A regra de e a construo de nomes ca e
Uma unica palavra Composta de letras e nmeros u Comeando com uma letra c Escrita em maisculo u

Tipos Os tipos poss veis so 4: inteiro, real, lgico, caracter. a o


88-08, Pedro Kantek

110

verso de 10 de fevereiro de 2008 a

CAP ITULO 6. VISUALG Tipo inteiro real caracter logico Contedo u qualquer nmero inteiro, variando entre u e + qualquer nmero inteiro ou no inteiro u a uma cadeia somente pode conter os valores VERDADEIRO e FALSO Exemplo inteiro A A,B,C : inteiro A : real X,Y,Z : real A : caracter // o tamanho no expl a e cito A : logico

Vetor Um vetor (ou matriz) denido, escrevendo-se o nome, dois pontos (:) a palavra e vetor e as especicaes de repetio. Veja nos exemplos: co ca Formato <nome> : vetor [inicio..m] [inicio..m] ... de <tipo> Exemplo AAA : vetor [1..10] de real BBB : vetor [0..4] [1..8] de inteiro

Comandos Os comandos em pseudo-cdigo so poucos < (recebe), leia, escreva, o a se...mse, enquanto...menquanto, para...mpara, repita...at, retorne e abandone. e Leia Serve para introduzir um dado externo para dentro do algoritmo. As variveis a citadas no comando j tero que ter sido denidas e tipadas. a a formato leia (<lista de variveis >) a exemplo leia (A)

Escreva Serve para produzir um dado como resposta do algoritmo. As variveis a citadas no comando j tero que ter sido devidamente atribu a a das. formato escreva (<lista de variveis >) a exemplo escreva (o valor procurado e ,x)

Para variveis numricas, pode-se especicar var:tamanho:decimais. a e < Este comando permite inicializar uma varivel ou alterar-lhe o contedo. a u exemplo A<B B < CURITIBA C < A + 23

formato a a <varivel> < <varivel> OU <varivel> < <constante> OU a <varivel> < <expresso> a a

Expresso Numrica Qualquer combinao compat de funes que acabem gerando a e ca vel co um unico resultado numrico. e
verso de 10 de fevereiro de 2008 a

111

88-08, Pedro Kantek

CAP ITULO 6. VISUALG Formato adio (+), subtrao (), multiplica ca cao (), diviso real (/) ca a diviso inteira (barra ao contrrio) 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; p,n:inteiro):caracter xxx(a:real):real a div b exp(b,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,c:caracter):inteiro quad(a:real):real radpgrau(a:real):real raizq(a:real):real ou O que faz o usual da aritmtica e s usa inteiros o o resto da diviso 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 ser sen,cos,tan,cotan Exemplo A+3 A/2.5 5\2 2 e 5%2 1 e abs(3) 3; abs(-3) e e 3 xxx pode ser cos, sen e tan

Expresso Relacional Qualquer combinao compat a ca vel de relaes que acabem co gerando um unico resultado lgico. o Formato O que faz Exemplo Igual (=) devolve VERDADEIRO se seus operan- 3=3 VERDADEIRO e dos so iguais e FALSO seno a a Diferente (<>) devolve VERDADEIRO se seus operan- 3<>3 FALSO e dos so diferentes e FALSO seno 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, Pedro Kantek

112

verso de 10 de fevereiro de 2008 a

CAP ITULO 6. VISUALG Expresso Lgica Qualquer combinao compat a o ca vel de expresses relacionais e/ou o lgicas que acabem gerando um unico resultado lgico. o o Formato E O que faz Em A E B, devolve VERDADEIRO se A e B so verdadeiros e devolve FALSO a seno a Em A OU B, devolve VERDADEIRO se A ou B ou ambos so VERa DADEIRO e devolve FALSO seno a Inverte o valor lgico do operando o Exemplo VERDADEIRO E VERDADEIRO VERDADEIRO e Todas as outras combinaes do co a FALSO FALSO OU FALSO FALSO Toe das as outras combinaes do co a VERDADEIRO NAO VERDADEIRO FALSO e e NAO FALSO VERDADEIRO e

Ou

No (NAO) a

Se Este comando denominado alternativo, pois permite escolher caminhos da proe gramao dependendo de uma condio (expresso lgica). Note que o trecho entre ca ca a o sen~o e o comando imediatamente anterior a fim{se} so opcionais, razo pela qual no a a a formato eles aparecem entre colchetes. Os comandos entre ent~o e sen~o ou fim{se} a a (se no houver seno) sero executados apenas se a condio do comando for verdadeira. a a a ca Se houver comandos entre sen~o e fim{se} os mesmos sero executados apenas se a a a condio for falsa. ca formato se <condio> entao ca comando1 comando2 ... senao comando11 comando12 mse exemplo se A >= 4 entao B<B+1 C<C+D+A X<0 senao escreva (N * 2) Y<0 mse

Enquanto Este comando permite a realizao de laos (loops) dentro de programas. ca c Comeando o comando, a condio avaliada. Se ela for falsa, h um desvio para o coc ca e a mando seguinte ao fim{enquanto}. Se a condio for verdadeira os comando internos ao ca enquanto so executados. Ao se encontrar o fim{enquanto} h um desvio incondicional a a ao in do enquanto e a condio inicial reavaliada. cio ca e exemplo A<5 enquanto A <= 9 faca escreva (A) A<A+3 menquanto sero impressos os valores 5 e 8. a

formato enquanto < condio > faca ca comando1 comando2 ... menquanto

Repita mas.

Este comando tambm permite a realizao de laos (loops) dentro de prograe ca c

verso de 10 de fevereiro de 2008 a

113

88-08, Pedro Kantek

CAP ITULO 6. VISUALG exemplo A<5 repita escreva (A) A<A+3 ate A > 9 sero impressos os valores 5 e 8. a

formato repita comando1 comando2 ... ate < condio > ca

Para Este comando tambm permite a realizao de laos (loops) dentro de programas. e ca c No in cio a varivel citada no comando inicializada com <constante1>. Depois a e e feita a condio. Se o passo est ausente ou positivo, a variavel testada para ca a e e <constante2>. (Se o passo negativo, o teste com ). Se o resultado VERDADEIRO e e e os comandos internos so executados. Ao nal deles, a varivel incrementada (ou a a e decrementada se o passo negativo) e depois h um retorno ao teste inicial. Quando o e a passo no explicito, ele vale 1. a e formato para <var> de <constante1> ate <constante2> [passo <constante3>] exemplo faa c para K de 3 ate 8 passo 2 faca comando1 escreva (A) comando2 mpara ... mpara sero impressos os valores 3, 5 e 7. a

Retorne Usado exclusivamente dentro de funes, tem a nalidade de devolver um co resultado a quem chamou esta funo. Ao contrrio do C, no necessariamente encerra ca a a a execuo da funo. ca ca exemplo se A > 5 entao retorne A mpara

formato retorne < expresso compat > a vel

Outros Comandos aleatorio arquivo <nome-de-arquivo> algoritmo lendo do arquivoarquivo teste.txt timer on / timer o pausa debug eco cronmetro o

6.2

Exemplos de Visualg

Exemplo 1 algoritmo "primos" var J,K,R: inteiro


88-08, Pedro Kantek

114

verso de 10 de fevereiro de 2008 a

CAP ITULO 6. VISUALG

funcao QP(N: inteiro): inteiro var A,B:inteiro inicio A <- 2 B <- 1 enquanto B <= N faca se EPRIMO(A) entao B <- B + 1 fimse A <- A + 1 fimenquanto retorne A - 1 fimfuncao funcao EPRIMO(M: inteiro): logico var QT,DI:inteiro inicio QT <- 0 DI <- 2 enquanto DI < M faca se M % DI = 0 entao QT<- QT + 1 fimse DI <- DI + 1 fimenquanto retorne QT = 0 fimfuncao inicio leia (J,K) R <- QP(K)-QP(J) escreva (R) escreva (QP(K)) escreva (QP(J)) fimalgoritmo Exemplo 2 algoritmo "palito" var N,SEQ,J,TV:inteiro inicio N<-0 enquanto ((N<20) ou (N>30)) faca escreval ("com quanto comecamos ?") leia (N) fimenquanto enquanto (N>0) faca SEQ <- 1 enquanto ((N-SEQ)>=0) faca
verso de 10 de fevereiro de 2008 a

115

88-08, Pedro Kantek

CAP ITULO 6. VISUALG SEQ <- SEQ + 4 // escreval ("depuracao... N=",N," SEQ=",SEQ) fimenquanto J<-4+(N-SEQ) se (J=0) entao J<-1 fimse escreval ("eu joguei ",J) N<-N-J escreval ("Existem ",N," palitos") se (N<=0) entao escreva ("por incrivel que pareca,... perdi,... ") interrompa fimse TV<-0 enquanto ((TV<1) ou (TV>3)) faca escreval ("jogue") leia (TV) fimenquanto N <- N - TV escreval("existem ",N," palitos") se (N<=0) entao escreval("burrao, eu ganhei...") interrompa fimse fimenquanto fimalgoritmo

6.2.1

Criando uma raiz quadrada

Suponha que o VisualG no tem a funo raiz quadrada. Como poder a ca amos construir uma ? Eis uma poss formulao vel ca Dado um nmero real x, u x > 0, calcular a raiz quadrada dele.

Pensando sobre o que j aprendemos sobre a raiz quadrada de x, tem-se que y a raiz a e quadrada de x se e somente se y 2 = x. Ou reescrevendo, y = x . Isto nos d uma idia a e y de algoritmo:
Chute um valor g para y e teste-o. Calcule Se
x g x g

sucientemente perto de g, retorne g, seno tente com um chute melhor. e a

Se o processo estiver funcionando adequadamente, o chute inicial poder ser qualquer a nmero, ento vai-se padronizar o primeiro chute como sendo 1. Com isso a funo sqrt u a ca em VisualG ca funcao sqrt(N:real):real retorne teste(N,1) fimfuncao A seguir, escreve-se a funo teste e ca ca
88-08, Pedro Kantek

116

verso de 10 de fevereiro de 2008 a

CAP ITULO 6. VISUALG funcao teste(X,G:real):real inicio escreval(X,G) se perto((X/G),G) entao retorne G senao retorne teste(X, melhor(X,G)) fimse fimfuncao Sobram 2 funes, melhor e perto. Ei-las: co funcao melhor(X,G:real):real inicio retorne (G+(X/G))/2 //a media entre G e X/G fimfuncao funcao perto(A,B:real):logico inicio retorne (B*0.001) > abs(A-B) fimfuncao

6.2.2

Achando ra zes por Newton-Raphson

Agora o algoritmo para achar ra n-simas. Ou seja, dados w e n quaisquer, o que se e zes e pretende agora achar n w. Para isto, deve-se procurar x tal que xn = w. Reescrevendo e xn w = 0. Portanto, em f (x) = xn w procura-se encontrar o valor de x quando f (x) = 0, isto , onde a curva corta o eixo dos x. e Em outras palavras e mais genericamente, dada f (x) como descobrir onde a funo ca corta o eixo x?. Para poder resolver este problema far-se-o 3 hipteses: a o
a funo cruza o eixo x apenas em um lugar ca a funo cont ca e nua, vale dizer diferencivel e a a derivada no intervalo sempre positiva ou sempre negativa e

Supondo uma funo qualquer (sujeita `s restries acima), imagina-se um chute ca a co original g (no eixo x) e f (g) no eixo y. Calculando a derivada no ponto g e vericando onde esta derivada (que nada mais do que a inclinao da curva no ponto g) cruza o e ca eixo x obtem-se um novo e melhor chute para a raiz procurada. Este, em essncia, o e e mtodo de Newton. e Eis o desenvolvimento, para achar a raiz n do valor w funcao raiz(w:real;n:inteiro):real inicio retorne acharn(w,1,n) fimfuncao funcao acharn(w,g:real;n:inteiro):real var novo:real inicio

verso de 10 de fevereiro de 2008 a

117

88-08, Pedro Kantek

CAP ITULO 6. VISUALG novo <- g-(f(w,g,n) / fprime(g,n)) // escreval(w,g,n,novo) se perton(novo,g) entao retorne novo senao retorne acharn (w,novo,n) fimse fimfuncao funcao f(w,g:real;n:inteiro):real inicio retorne (g^n)-w fimfuncao

funcao fprime(g:real;n:inteiro):real inicio retorne n * (g^(n-1)) fimfuncao funcao perton(a,b:real):logico inicio retorne abs(a-b) < abs(b * 0.01) fimfuncao

6.2.3

Depurao de algoritmos ca

Na atividade prossional ou amadora da construo de programas ecientes e ecazes, ca a programao ocupa apenas uma parte. E, no a maior nem a principal parte. O ca a e que toma tempo e preocupao a atividade de depurar os programas. Entende-se por ca e depurao a arte da descoberta, isolamento e correo de erros. ca ca Alis, o programador mais talentoso no o que comete poucos ou nenhum erro a a e (imposs vel), mas aquele que em os cometendo localiza-os e corrige-os com rapidez. Programar ir das causas para o resultado, e depurar ao contrrio, ir do resultado e e a para as causas. S que nesta segunda parte, conspiram contra a atividade: o
o ru ambiente do o fato do programa poder ter sido feito por outro a presso do tempo e do $. a

Exerc cio 88 Na vspera desta aula, os alunos sero divididos em 4 grupos. A cada e a
grupo ser dado um conto de Sherlock Holmes, SEM A PARTE FINAL do mesmo. O grupo a ter entre 5 e 10 minutos para contar a histria e toda a turma ser convidada a descobrir a o a o que aonteceu. Depois deste prazo, o professor contar o nal da histria. a o

88-08, Pedro Kantek

118

verso de 10 de fevereiro de 2008 a

Cap tulo 7

Modularizao: funes ca co
7.1 Funoes c

Existem 2 maneiras de denir um algoritmo. A primeira, denindo um cdigo come o pleto, auto-suciente, capaz de ser facilmente traduzido em um programa completo e auto-suciente capaz de ser rodado em computador gerando resultados ao instante. Este algoritmo por um cabealho reconhecido pela palavra constante e c algoritmo <nome> Note que a especicao <nome> deve ser substitu por um nome que identique este ca da algoritmo. O bloco se encerra pela especicao ca fimalgoritmo Entre estas duas constantes, deve ser escrito o bloco do algoritmo que sempre ser a formado por 2 componentes: a descrio de variveis e os procedimentos que o algoritmo ca a far. Eles devem aparecer nesta ordem: primeiro a denio de variveis e depois os a ca a procedimentos. Uma diculdade aqui a necessidade de obter os dados do algoritmo do meio ame biente (possivelmente fazendo uma operao de leitura) e gerar os dados de sa para ca da serem aproveitados, usualmente atravs de uma operao de impresso. e ca a Como uma funo Em computao, o uso da palavra funo ligeiramente diferca ca ca e ente do uso similar na matemtica, embora os 2 conceitos tenham muitas similaria dades. Aqui, o uso da palavra funo indicar um sub-programa separado do programa ca a principal que computa alguns valores. A especicao do cabealho de uma funo ca c ca ser a 1: funo <nome> ([var] <lista-vars> : <tipo> [;...]) : <tipo-resultado> ca Com a seguinte regra de leitura: <nome> tal como no algoritmo, identica um nome unico <lista-vars> uma seqncia de nomes de variveis separadas por v ue a rgulas. Se houver a palavra var no in a passagem ser por cio a referEncia e seno por valor a <tipo> tipo das variveis da lista anterior a ; separador em as listas de variveis (Se mais de uma houver) a <tipo-resultado> especica qual o tipo que ser devolvido por esta funo a ca aps os clculos que realizar. Pode ser um dos 5 tipos o a a conhecidos at agora e A funo de encerra pela especicao ca ca 119

CAP ITULO 7. MODULARIZACAO: FUNCOES fimfun~o ca A parte de denio de variveis locais em uma funo nem sempre necessria, ca a ca e a logo opcional, mas se presente deve aparecer logo aps o cabealho da funo e antes e o c ca dos procedimentos. Esta denio mais simples do que a do algoritmo completo. Os dados no precisam ca e a ser obtidos do exterior, eles sero entregues ` funo simplesmente por referenci-los a a ca a no cabealho da funo. Identicamente no necessrio imprimir resultados bastando c ca a e a retorn-los (a quem chamou a funo). a ca Acompanhe um mesmo problema resolvido dos dois jeitos. Seja escrever um algoritmo que calcule a mdia entre dois nmeros e u como algoritmo como funo ca algoritmo MEDIA funo MEDIA (A, B : real) : real ca real A B M retorne (A + B) / 2 leia A B mfuno ca MA+B/2 escreva M malgoritmo Do ponto de vista da disciplina de algoritmos, ambos os resultados acima so equivaa lentes. Entretanto, se algum quisesse testar a segunda implementao (a funo), teria e ca ca que escrever o programa chamador, que poderia ter o seguinte aspecto: algoritmo T2 real A B leia A B escreva MEDIA (A, B) fimalgoritmo O conceito de funo permite a modularizao dos algoritmos. Deve-se denir e usar ca ca uma funo sempre que: ca
Um processamento espec co 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 etc

7.1.1

Variveis globais e locais a

Uma varivel global existe desde que criada e pode ser consultada e alterada por a e qualquer algoritmo ou funo que rode enquanto ela existe. Dito de outra maneira, ca todas as funes subalternas que forem chamadas aps a criao da varivel global a co o ca a enxergaro e podero modic-la. a a a O uso de variveis globais deve ser fortemente reprimido, pois elas so responsveis a a a por um dos maiores eventos causadores de erros em programas, o chamado efeito colateral. Tanto isto verdade, que a grande vantagem do paradigma funcional de prograe mao no ter varivis globais. E, com isto ele acaba gerando programas que tm uma ca e a a e quantidade inacreditavelmente menor de erros. Quando um programa dene variveis e em seguida chama uma funo, aquelas a ca variveis que o programa deniu so consideradas como globais pela funo chamada. a a ca Se esta primeira funo chamar uma segunda funo, esta ultima tambm enxergar as ca ca e a variaveis denidas pelo programa, como sendo variveis globais. a
88-08, Pedro Kantek

120

verso de 10 de fevereiro de 2008 a

CAP ITULO 7. MODULARIZACAO: FUNCOES J a varivel local a uma funo denida dentro da funo e quando esta funo a a ca e ca ca se encerrar o programa original no ter mais acesso a elas. Entretanto se esta primeira a a funo chamar uma segunda, as variveis denidas como locais dentro da primeira funo ca a ca passam a ser globais e so enxergadas pela segunda funo. a ca A funo pode ter suas prprias variveis internas, tambm conhecidas como variveis ca o a e a locais ` funo. Existe um comando, tambm opcional, chamado retorne, que signica a ca e devolver para o algoritmo que chamou esta funo, qual o valor calculado por ela. O ca tipo deste resultado deve ser igual aquele especicado depois da palavra funo. ca Toda funo usada dentro de um programa deve ter sido denida antes de ser ca chamada. Em resumo, a regra de alcance das variveis : uma varivel denida em um local a e a global para todas as funes chamadas a seguir, mas no enxergada pelas funes e co a e co chamadas previamente. Por exemplo: 1: algoritmo ALFA 2: var 3: A, B : inteiro 4: funcao BETA (C, D : inteiro) : inteiro 5: var 6: E : inteiro 7: inicio 8: ... 9: mfuncao {funcao BETA} 10: inicio 11: ... 12: malgoritmo Aninhamento de Funes Quando existe uma funo dentro de outra, as variveis co ca a da funo externa so locais para ela e globais para as funes internas. J as variveis ca a co a a da funo interna so locais a ela e so desconhecidas pela funo externa. ca a a ca Quando existe conito de nomes (duas variveis com mesmo nome, sendo uma local a e outra global), vale a denio local, e a global deixa de poder ser acessada (Embora ca continue existindo normalmente). Mas, este um procedimento que deve ser evitado e pelo programador, tanto quanto poss vel. A especicao dos parmetros nada mais do que uma denio de todas as varca a e ca iveis que existem na lista-de-parmetros. a a

Exerc cio Resolvido 7 Um exemplo de algoritmo Escreva uma funo que receba ca
2 nmeros inteiros, X e Y, (X ( Y) e devolva a diferena entre o X-simo e o Y-simo u c e e nmeros primos. Por exemplo, se X = 10 e Y = 8 a funo dever devolver 6, pois o 10 u ca a nmero primo 23 e o 8 17 e 23 - 17 = 6 u e e Vericao se um nmero primo: ca u e Entrada: um inteiro X qualquer Sa da: .V. se X for primo e .F. seno a 1: lgico funo EPRIMO (inteiro X) o ca 2: inteiro DV, QT 3: QT 0 4: DV 2 5: enquanto (DV (X div 2)) faa c 6: se X mod DV = 0 ento a 7: QT++
verso de 10 de fevereiro de 2008 a

121

88-08, Pedro Kantek

CAP ITULO 7. MODULARIZACAO: FUNCOES


8: 9: 10: 11: 12:

mse DV++ menquanto retorne QT = 0 mfuno ca Localizao do n-simo primo: ca e

Entrada: um inteiro K qualquer Sa da: o k-simo numero primo e 1: inteiro funo PRIMO (inteiro K) ca 2: inteiro Z, QTD 3: QTD 1 4: Z 1 5: enquanto (Z K) faa c 6: se EPRIMO(QTD) ento a 7: Z++ 8: mse 9: QTD++ 10: menquanto 11: retorne QTD - 1 12: mfuno ca Diferena entre 2 nmeros primos: c u Entrada: dois inteiros M e N Sa da: a diferena entre o m-simo e o n-simo nmeros primos c e e u 1: inteiro EXEMPLO1 (inteiro M, N) 2: retorne PRIMO(M) - PRIMO(N) 3: mfuno ca

88-08, Pedro Kantek

122

verso de 10 de fevereiro de 2008 a

Cap tulo 8

Vetores e Matrizes
Se partirmos da premissa que algoritmos sozinhos so incapazes de ajudar a resolver a problemas, necessitando de completas estruturas de denio de dados, veremos que os ca quatro tipos de dados vistos at aqui (inteiro, real, alfanumrico e lgico) so insue e o a cientes. Por exemplo, vejamos o caso de um programa capaz de calcular a diferena entre c o salrio e a mdia salarial de um grupo de 50 pessoas. O algoritmo em si fcil, a e e a entretanto se faz necessrio: a
a criao de 50 variveis para conter os salrios, permitir o clculo da mdia, e ca a a a e depois das diferenas individuais, OU c A dupla leitura dos dados, a primeira para calcular a mdia, e a segunda para e obter as diferenas individuais. c

Nenhuma das duas alternativas conceitualmente correta, pois ambas complicam e desnecessariamente algo que simples. A soluo para resolver este e inmeros problee ca u mas similares, e a introduo do conceito de vetor. ca A caracter stica principal do vetor , a criao de muitas variveis de mesmo tipo, e ca a que atendero pelo mesmo nome, e que sero acessadas pelo seu deslocamento dentro a a do vetor, ou seja pelo seu nmero. u No caso acima (dos 50 salrios), ao usar a soluo de vetores, criar a ca amos uma unica varivel de nome SALAR, na forma de vetor, contendo 50 ocorrncias de uma varivel a e a tipo real. O conjunto poderia ser referenciado na totalidade com o nome de SALAR, ou cada um dos valores poderia ser acessado individualmente atravs do seu e ndice. A principal caracter stica que determina o uso de vetores para resolver problemas de programao o seu acesso direto ou via ca e ndice. Isto signica que, em um vetor, dado um valor de ndice, imediata o acesso ao elemento do vetor, seja para obt-lo (leitura) e e seja para alter-lo (escrita). a Um vetor uma coleo HOMOGENEA de coisas. Essas coisas so referenciadas e ca a pela sua posio dentro do vetor, j que so todas iguais. A cadeia um vetor de ca a a e caracteres, mas to comum que acaba sendo um tipo fundamental. No precisaria. e a a

8.1

Denio de Vetor ca

Na criao de vetores , apenas necessrio indicar qual o fator de ocorrncia daquela ca e a e varivel. Este valor numrico inteiro, ser escrito entre colchetes logo aps o nome do a e a o vetor. Cuidado, que aqui o colchete no signica opcional. Azares de quem tem um a universo limitado de caracteres a utilizar para escrever seus algoritmos. 123

CAP ITULO 8. VETORES E MATRIZES Esta especicao indica mltiplas ocorrncias de uma varivel em uma unica dica u e a menso a <nome> : vetor [inicio..m] de <tipo> // exemplo: A : vetor [1..10] de inteiro Exemplos Vejamos alguns exemplos: 1. Quantidade de carros em cada dia da semana QTD-CARR : vetor [1..7] de inteiro 2. Valor recebido por dia ao longo do mes VALOR : vetor [1..31] de real

Exerc cio Resolvido 8 Seja denir um vetor para conter as taxas inacionarias
dos ultimos 12 meses: INFLACAO : vetor [1..12] de real

Exerc cio Resolvido 9 Imaginemos agora a utilizao de um vetor para conter as ca


notas de uma turma de 60 alunos: NOTA : vetor [1..60] de real

Exerc cio Resolvido 10 Podemos ter um vetor para guardar as populaes brasileiras, co
ano a ano, nos ultimos 20 anos: POPAA : vetor [1..20] de inteiro Exemplo:
V : vetor [1..5] de inteiro {denio} ca V 20 10 35 65 47. O vetor V tem 5 inteiros. V[1] 20, V[4] 65. V[6] erro. e e e X : vetor [1..9] de caracter ou cadeia X {no segundo caso o tamanho impl e cito} X ABCDEFGHI. O vetor X tem 9 caracteres ( portanto, uma cadeia). X[1] e A. X[5] E. X[32] erro. e e e A : vetor [1..3] de logico A verdadeiro, falso, falso. A um vetor de lgicos. A[2] falso. e o e F : vetor [1..6] de real F 10.9 10 11 11.2 13 19. F um vetor de reais. (Lembrar que um inteiro um e e real tambm. V[1] 10.9, V[2] 10.0, e assim por diante. e e e

O ndice em um vetor tem que obrigatoriamente ser: 1. inteiro e positivo 2. menor ou igual ao tamanho do vetor

8.1.1

Origem dos ndices

A origem da contagem varia entre 0 e 1. Ns sempre que NADA for dito em contrrio, o a usaremos 1. Quando a origem zero, conta-se: 0, 1, 2, ... n-1 (para contar n elementos). e Quando a origem 1, a contagem a trivial: 1, 2, ... , n. Repare que a notao [inie e ca cio..nal] a rigor permitiria quaisquer valor inicial e nal, mas o mundo da programao ca j sucientemente complexo. Assim, vai-se combinar que o in semore ser 1 (como ae cio a no COBOL, PASCAL, BASIC, APL, ...), ou mais raramente 0 (como no C, C++, Java, ...), mas nunca algo diferente de 0 ou 1.
88-08, Pedro Kantek

124

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES

8.2

Operaes Bsicas co a

Vetores podem ser processados coletivamente ou elemento a elemento. Por exemplo: V : vetor[1..6] de inteiro V 0 {coletivamente} V 10,20,30,40,50,60 {idem} **** OU **** I1 enquanto I 6 faa c V[I] I 10 {elemento a elemento} II+1 menquanto Na leitura a mesma coisa e Y : vetor[1..5] de real leia Y {5 pfs so lidos e colocados em Y} a **** OU **** I1 enquanto I 5 faa c leia Y[I] {leitura individual de cada elemento} II+1 menquanto Atribuio ca Trata-se de modicar o contedo dos elementos do vetor. u 1: A[i] A[i] + 1 Inicializao ca E a colocao do valor inicial dos elementos de um vetor , usualmente antes de comear ca c o processamento. 1: B[j] 0 Enumerao ca Percorre-se todos os elementos de um vetor, executando sobre eles uma mesma operao. ca Por exemplo, seja contar quantos elementos so negativos. a 1: inteiro VALS[200] 2: inteiro I, QTOS 3: leia VALS 4: QTOS 0 5: para para I de 1 a 200 faa c 6: se VALS[I] 0 ento a 7: QTOS++ 8: mse 9: mpara Acumulao ca Parecido com a enumerao, mas com o carter de acumulao sobre os resultados da ca a ca operao. Exemplo: seja somar todos os elementos de um vetor ca
verso de 10 de fevereiro de 2008 a

125

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES


1: 2: 3: 4: 5: 6: 7:

inteiro VALS[200] inteiro I, SOMA leia VALS SOMA 0 para para I de 1 a 200 faa c SOMA SOMA + VALS[I] mpara

Insero ca Colocao de um novo elemento dentro do vetor. Usualmente, este novo elemento enca e caixado em alguma posio do vetor, e todos os elementos anteriores que tinham ca ndice igual ou maior a esta posio so deslocados uma posio. Exemplo: Seja manter um veca a ca tor de 10 notas, com as melhores notas at ento aparecidas. e a 1: NOTAS : vetor[1..10] de real 2: NOTAS ... as notas at aqui e 3: NOVANOTA 4: I 1 5: enquanto (I < 11) (NOVANOTA < NOTAS[I]) faa c 6: II+1 7: menquanto 8: se I = 11 ento a 9: escreva (a nota nova e menor do que as 10 j existentes) a 10: seno a 11: J9 12: enquanto (J > 0) (NOTAS[J] < NOVANOTA) faa c 13: NOTAS[J+1] NOTAS[J] 14: JJ-1 15: menquanto 16: NOTAS[I] NOVANOTA 17: mse Supresso a Operao inversa ` da insero. Retira-se um elemento, trazendo todos os que estavam ca a ca uma posio abaixo dele uma posio acima. ca ca Busca No acesso direto, dado um ndice, obtemos o valor do elemento no vetor. Aqui ocorre o contrrio. Dado um valor do vetor, queremos saber qual seu a ndice (isto , onde ele e est?). a Ordenao ca Reordenar os elementos de um vetor com vistas a deix-los obedecendo alguma relao a ca de ordem.

Acesso aos dados dentro de um vetor


Dado um vetor, seus valores podem ser acessados das seguintes maneiras:
88-08, Pedro Kantek

126

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES Genericamente Neste caso, considera-se um unico valor para todas as ocorrncias do vetor. Por exemplo, 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.

Conjuntamente Neste caso, um conjunto da de mesmo nmero de elementos usado na referncia ao u e e vetor. 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 contedos diferentes. Os valores devem aparecer entre parnteses, e devem o u e ser em mesmo nmero do que a denio original do vetor u ca

Individualmente E o caso mais comum, e pressupe a existncia de um comando para cada elemento do o e vetor. 1: real VETVEN [10] 2: VETVEN [1] 0.1 3: VETVEN [2] 0.01 4: VETVEN [5] 1 5: ... 6: VETVEN [8] 100 7: VETVEN [9] 10 8: VETVEN [10] 1000 Estas 3 maneiras de referenciar, no se aplicam apenas ` inicializao, mas tambm as a a ca e demais aes poss co veis em . Assim, podemos ter testes: seVETVEN = 0 - signicando setodos os elementos de VETVEN, leituras: leia (VETVEN) - signicando leiatodos os elementos, gravaao: escreva (VETVEN) - signicando escrevatodos..., etc. c Todos os comandos vistos podem e devem ser usados junto com o conceito de vetores. Entretanto, existe um que muito orientado para estas estruturas. Trata-se do comando e para. Vejamos um exemplo, em que o para usado para calcular a soma dos elementos e de um vetor. 1: algoritmo exemplo 2: inteiro I,SOMA 3: inteiro VET [120] 4: leia(VET) 5: SOMA 0 6: para I de 1 ate 120 faa c 7: SOMA SOMA + VET[I] 8: mpara 9: escreva(SOMA) 10: m algoritmo
verso de 10 de fevereiro de 2008 a

127

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES

Leitura e Impresso de Vetores a


Em algoritmos , podemos ter a necessidade de ler ou imprimir um vetor de uma s vez. o Ento faremos: a 1: inteiro VET1 [10] 2: ... 3: leia(VET1) 4: ... O caso acima, o mais comum, e nos assegura que o vetor inteiro foi lido sem e complicao ou diculdade. Entretanto, algumas vezes necessitaremos ler ou imprimir ca um vetor, elemento a elemento. Ficar ento: a a 1: inteiro VET1[10] 2: inteiro I 3: ... 4: para I de 1 at 10 faa e c 5: leia(VET1[I]) 6: mpara Nem sempre fcil acostumar-se a trabalhar com vetor. Os conceitos de e a ndice e contedo costumam atrapalhar quem nunca lidou com isto. Mas com um pouco de u prtica verica-se que a coisa no muito complicada. Na tentativa de ajudar, vo aqui a a e a alguns exemplos. Sugiro que voc os leia e os estude atentamente, at entender cada e e um e todos eles. Se tiver alguma diculdade insanvel, ou no conseguir entender o que a a est acontecendo, procure ajuda junto ao professor. a Exemplos: Para executar estes exemplos valem as seguintes denies: co 1: inteiro VET1,VET2,VETX [10] 2: inteiro I,J,K,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 ento 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!

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, ou em termos mais rigorosos, o erro acontece quando se usa para ndice de um valor no compreendido no intervalo da denio do vetor. Este erro ocorre quase sempre em a ca tempo de execuo (o que torna mais dif sua correo). ca cil ca
88-08, Pedro Kantek

128

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES Exemplo 1: real W [20] 2: inteiro A 3: A 15 4: escreva(W[A+10]) Indireo ca A indireo uma dupla (ou tripla ou n-upla) indexao. Usualmente representada ca e ca e por diversos colchetes. Veja no exemplo 1: escreva A[A[x]] O que est se pedindo acima a dupla indexao de A. A maneira de resolver o pedido a e ca (e descobrir o valor de A[A[x]]) e usando o valor de x, recuperar o contedo da posio u ca A[x]. De posse deste valor usa-se-o como ndice nal para saber o valor de A[A[x]]. Se houver muita diculdade 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. b) tipo do indice denido inadequadamente (ex: inteiro X[30]; caracter Y; Y <- 2; X[Y] d erro) Note que a maioria das linguagens exige inteiro a (ou real mas sem decimais).

8.3

Ordenao ca

Importncia do estudo da ordenao a ca


Na dcada de 70, James Martin sugeriu que 40% do tempo de TODOS os come putadores gasto neste algoritmo. e O conceito de ordem fundamental em programao e ca Excelente tpico para estudar algoritmos e estudar comportamentos e complexio dades

Antes de comearmos a estudar a classicao, vamos denir o problema: c ca Seja X um conjunto composto por i elementos entre os quais se pode estabecer uma relaao de ordem. Dados Xi e Xj com i = j, sempre pode-se estabelecer Xi > Xj ou c Xi = Xj ou Xi < Xj .
X estar em ordem crescente se e somente se Xi Xj , i < j. a X estar em ordem estritamente crescente se e somente se Xi < Xj i < j. a X estar em ordem decrescente se e somente se Xi Xj , i < j. a X estar em ordem estritamente decrescente se e somente se Xi > Xj i < j. a
verso de 10 de fevereiro de 2008 a

129

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES Um algoritmo de ORDENACAO aquele que recebe um X qualquer (possivelmente e desordenado), permuta seus elementos e devolve X em ordem. Tipicamente fazem parte de Xi um conjunto de informaes. Neste caso, haver co a uma parte de Xi denominada CHAVE e identicada por k (k=key) pela qual se fara a ordenao. Embora devamos ter em mente a existncia dos outros campos, apenas a ca e chave ser tratada nos algoritmos. a Existem 2 classes de algoritmos de ordenao: os que trazem todos os dados para ca a memria (sort interno) e os que ordenam dados em m o dia magntica seqencial (sort e u externo). Note que neste caso o algoritmo apenas acessa uma parte do subconjunto total. Um algoritmo de ordenao estvel se no caso particular em que se k[i] = k[j], a ca e a ordem original dos dados preservada. E sempre bom que um mtodo de ordenao e e ca seja estvel. a Antes de prosseguir, vale uma lembrana. Para conjunto de dados pequenos (quanto?) c no h necessidade de grandes pesquisas e deve-se usar o algoritmo mais simples poss a a vel. O conjunto completo (completo?) de algoritmos de ordenao ser visto e estudado ca a no segundo ano (na disciplina de estrutura de dados), mas por enquanto vamos usar um algoritmo simples e fcil (mas ineciente) para ordenar vetores: a Algoritmo de movimentao ca 1: inteiro[1000] {funo} MOVIMENTA (inteiro V[1000]) ca 2: inteiro Y[1000] 3: inteiro MAIOR, QUAL 4: inteiro I,J 5: para I de 1 at 1000 faa e c 6: MAIOR 7: para J de 1 at 1000 faa e c 8: se V[J] > MAIOR ento a 9: MAIOR X[J] 10: QUAL J 11: mse 12: mpara 13: Y[I] X[QUAL] 14: V[QUAL] 15: mpara 16: retorne Y 17: m{funo} ca Este algoritmo estvel. e a

Exerc cio 89 Exerc faa um chins com 4, 12, 8, 3, 9, 1, 5 cio: c e

8.4

Operaes fundamentais na Informtica co a

Dado um conjunto S de chaves, as 3 operaes fundamentais em informtica so as co a a seguintes: Pesquisa Dada uma chave desconhecida x, pesquis-la contra S signica vericar se a x pertence ou no ao conjunto S. Em termos matemticos, x S ? Esta funo a a ca retorna um valor booleano.
88-08, Pedro Kantek

130

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES Insero Dada uma chave x que reconhecidamente no pertence ainda a S (e isto pode ca a ser vericado pela operao acima), a operao de insero signica inserir x em ca ca ca S. Ou S S {x}. A funo pode retornar apenas um indicativo de sucesso. ca Excluso Dada uma chave x que sabidamente pertence a S, a operao de excluso a ca a signica retirar x do conjunto S. Ou S S {x}. Pode-se retornar apenas um indicativo de sucesso. Mximo Dado um conjunto S, descobrir-lhe seu mximo obter o valor x, tal que a a e y = x S, x y. Esta funo retorna um ponteiro ou um cursor para o elemento ca x. M nimo Muito semelhante ao anterior, s que busca-se x tal que y = x S, x y. o Sucessor Esta operao busca descobrir qual o seguinteelemento do conjunto segundo ca um critrio qualquer. A funo recebe como entrada um valor x que est presente e ca a em S e devolve um apontador ou cursor para o nmero imediatamente maior a x u em S. Outra hiptese de retorno um terminador, caso x j seja o maior elemento o e a em S. Antecessor Esta operao busca descobrir qual o anteriorelemento do conjunto seca gundo um critrio qualquer. A funo recebe como entrada um valor x que est e ca a presente em S e devolve um apontador ou cursor para o nmero imediatamente u menor a x em S. Outra hiptese de retorno um terminador, caso x j seja o o e a menor elemento em S.

Exerc cio 90 Pal ndromo (adj.) Diz-se da frase que quer se leia da direita para a esquerda, quer da esquerda para a direita, tem o mesmo sentido (Aurlio). 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 ingls: a man, a plan, a cat, a canal, panama e
murder for a jar of red rum rotor, radar, me v se a panela da moa de ao 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

verso de 10 de fevereiro de 2008 a

131

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES anotaram a data da maratona a droga da gorda o romano acata amores a damas amadas e roma ataca o namoro s d tapas e sapatadas a a Denir algoritmo capaz de ler uma frase de at 80 caracteres e decidir se a mesma e e ou no um pal a e ndromo. O algoritmo deve imprimir a letra S for, e N no for. se se a Desconsiderar os brancos que esto ` direita da frase e tambm aqueles que esto entre as a a e a palavras. Para executar este exerc valem as seguintes denies: cio co 1. inteiro Vet1[10] Vet2[10] Vetx[10] 2. inteiro I J K 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. I3 7. JI+1 8. I5 9. K3 10. L6

Exerc cio 91 Quanto : e


1. Vet1[2] 2. Vet2[J] 3. Vet1[K+1] 4. Vet1[K]+1 5. Vet2[vet3[4]] 6. Vet1[1+2+L] 7. Vet2[22-Vet2[2]] 8. Vet3[Vet1[10]-2]+1 9. Vet2[(3*Vet1[5])-5] 10. Vet1[4+Vet1[2]]

Exerc cio 92 Escrever um trecho de algoritmo que dena um vetor de 7 elementos inteiros, e inicialize todos os elementos com o valor 5.
88-08, Pedro Kantek

132

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES

Exerc cio 93 Escrever um trecho de algoritmo que dena um vetor de 365 elementos reais, e inicial todos os elementos com o valor 0. ze Exerc cio 94 Escrever um trecho de algoritmo que dena um vetor de 12 elementos
lgicos, e inicial os primeiros 6 com VERDADEIRO e os outros 6 com FALSO. o ze

Exerc cio 95 Escreva um algoritmo capaz de denir e ler um vetor de 28 reais e a seguir calcular e imprimir a somatria dos elementos do vetor. Cada elemento deste vetor o representa o valor da d vida de cada estado brasileiro para com a unio, e o que se deseja a obter impresso o valor total desta d e vida.

8.5

Tabelas

Pesquisa sequencial
Dada um vetor, uma das aes mais comuns sobre ela, a pesquisa para saber se co e determinado elemento se encontra ou no contido nela. A maneira mais simples de fazer a esta pesquisa percorrer a tabela em ordem seqencial, at que: e u e
O elemento (denominado CHAVE) seja encontrado, ou Chegue-se ao m da tabela, quando ento concluiremos que o elemento CHAVE a no existe na tabela. a

Embora seja um algoritmo simples de se imaginar e de implementar, ele no dos a e mais ecientes, principalmente para tabelas muito grandes e com muitas pesquisas por unidade de processamento. Um primeiro melhoramento que podemos fazer, classicar a tabela, para diminuir e a quantidade de acessos at chegar a uma concluso sobre a existncia ou no da chave. e a e a Com a tabela classicada em ordem (digamos ascendente), a pesquisa da chave deve ser feita at que: e
A chave seja encontrada, OU Um elemento maior do que a chave seja encontrado, quando ento concluiremos a pela no existncia da chave na tabela. a e

A seguir o algoritmo para fazer esta pesquisa: 1: inteiro V[1000] 2: inteiro I, CHAVE 3: leia V 4: leia CHAVE 5: I 1 6: enquanto I < 100 faa c 7: se VET[I] = CHAVE ento a 8: escreva encontrou 9: abandone 10: mse 11: II+1 12: menquanto 13: se I = 101 ento a 14: escreva No encontrou a 15: mse
verso de 10 de fevereiro de 2008 a

133

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES


16:

m?

Exerc cio 96 Como exerc indique qual a modicao que se deveria fazer no algocio, ca ritmo acima, se o vetor lido estiver em ordem ascendente, a m de no ter que percorr-lo a e at o m para certicar-se da no existncia da chave. e a e Exerc cio Resolvido 11 Imagine um poss renamento para tornar mais rpido vel a
o acesso seqencial a uma tabela (de tamanho grande) classicada. u R: Basta aumentar o tamanho do salto, de 1 linha para 10, 20 ou qualquer outro valor.

Pesquisa binria a
Trata-se da um signicativo melhoramento em termos de pesquisa a tabela. Agora a tabela percorrida aos saltos, e no elemento a elemento. A reduo de acessos grande e a ca e e garante muita ecincia ao processo. e Para poder usar esta pesquisa a tabela PRECISA estar ordenada. Se no estiver os a resultados da tcnica so imprevis e a veis. 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. Se este for menor, e a primeira parte da tabela abandonada. Se for maior abandona-se a segunda e parte. A pesquisa prossegue pela diviso ao meio da parte que cou. a Rapidamente as sucessivas divises ao meio esgotam a tabela. O processo termina o quando a chave for encontrada, ou quando a parte que restou da diviso for nula. a

Vejamos no algoritmo abaixo 1: inteiro V[100] 2: inteiro INIC,METADE,FIM,CHAVE 3: leia VET,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] ento a 9: FIM METADE - 1 10: seno a 11: INIC METADE + 1 12: mse 13: at VET[METADE] = CHAVE INIC > FIM e 14: se VET[METADE] = CHAVE ento a 15: escreva achou na posio ,metade ca 16: seno a 17: escreva no achou a 18: mse Vamos acompanhar um exemplo, (chinesinho) neste algoritmo. Seja o vetor: 1 7 12 20 40 41 47 49 60 88 Vamos fazer uma pesquisa binria para encontrar (ou no) a chave 77 nele. a a primeira iterao: INIC 1, FIM 10, METADE 5. Como VET[5] 40, e 40 ca e < 77, temos: INIC METADE + 1 ou INIC 6.
88-08, Pedro Kantek

134

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES segunda iterao: INIC 6, FIM 10, METADE 8. Como VET[8] 49, e 49 ca e < 77, temos: INIC METADE + 1 ou INIC 9. terceira iterao: INIC 9, FIM 10, METADE 9. Como VET[9] 60 e 60 < ca e 77, temos: INIC METADE + 1 ou INIC 10. quarta iterao: INIC 10, FIM 10, METADE 10. Como VET10] 88 e 88 ca e > 77, temos FIM METADE - 1 ou FIM 9. Neste ponto o ciclo se encerra, pois IN ICIO > FIM. Finalmente descobrimos que a chave no est presente pois, VET [10] 88 que diferente de 77. a a e e Note-se que o nmero mdio de acessos em uma pesquisa binria da ordem de u e a e log2 N , onde N o nmero de elementos da tabela. e u

Exerc cio 97 Mediante a regra acima, determine qual o nmero mdio de acessos em u e
uma pesquisa binria para uma tabela de: a 1. 5 elementos: 2. 10 elementos: 3. 20 elementos: 4. 50 elementos: 5. 100 elementos: 6. 1.200 elementos: 7. 15.000 elementos: 8. 1.000.000 elementso:

Exerc cio 98 Dado o vetor: 1 4 5 6 8 10 13 18 21 60, realizar o chinez para descobrir


a presena ou no das chaves, atravs do algoritmo de pesquisa binria: c a e a 1. 8 2. 9 3. 50 4. 200

8.6

Merge (intercalao) de dois vetores ca

Este um problema tradicional em PD: Suponhamos que existam dois vetores, com as e caracter sticas:
Idnticos lay-outs e Uma chave de controle (em geral no repetida> a Ambos classicados pela chave de controle.

O objetivo intercalar os dois vetores formando um s, e que continue classicado. Por e o exemplo:
verso de 10 de fevereiro de 2008 a

135

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES vetor 1 -----------------------Chave 3 Chave 8 Chave 36 Chave 87 Chave 500 vetor2 -------------------------Chave 1 Chave 9 Chave 10 Chave 11 Chave 450 Chave 490

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, no formato dia,ms, escrever um algoe
ritmo que as leia, escreva-as e calcule e escreva a diferena em dias entre ambas. c

Exerc cio Resolvido 12 Dadas duas datas na dcada de 80, no formato dia,ms,ano, e e
escrever um algoritmo que as leia, escreva-as e calcule e escreva a diferena em dias entre c ambas. 1: d1,m1,a1,d2,m2,a2,qt1,qt2 : inteiro 2: V1, V1B [1..12] vetor de inteiro 3: V2 [80..89] vetor de inteiro 4: V1 (0,31,59,90,120,151,181,212,243,273,304,334) 5: V1B (0,31,60,91,121,152,182,213,244,274,305,335) 6: V2 (0,366,731,1096,1461,1827,2192,2557,2922,3288) 7: qt1 qt2 0 8: leia (d1,m1,a1,d2,m2,a2) 9: escreva (d1,m1,a1,d2,m2,a2) 10: se a2 = 80 a2 = 84 a2 = 88 ento a 11: qt2 d2 + v1b[m2] + v2[a2] 12: seno a 13: qt2 d2 + v1[m2] + v2[a2] 14: mse 15: se a1 = 80 a1 = 84 a1 = 88 ento a 16: qt1 d1 + v1b[m1] + v2[a1] 17: seno a 18: qt1 d1 + v1[m1] + v2[a1] 19: mse 20: escreva (qt2-qt1)

Exerc cio 100 Denir 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 unio. Os elementos a
88-08, Pedro Kantek

136

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES esto colocados em ordem decrescente (isto as maiores d a e vidas na frente) e escreva a quantidade de estados que so necessrios para apresentar uma d a a vida de no m nimo 50% do total ?

Exerc cio 101 Denir um algoritmo equivalente para a leitura de um vetor de 200 elementos, seguido do clculo e impresso da soma dos elementos que so maiores que a a a 1000. Deve ser impressa tambm a quantidade de maiores de 1000. e Exerc cio 102 Escrever um algoritmo que seja capaz de ler um conjunto de 10 valores, calcular a mdia, e imprimir todos os valores do conjunto, a mdia, e a diferena entre cada e e c valor individual e a mdia calculada. e Exerc cio 103 Escreva um algoritmo que leia um vetor de 36 elementos e determine
qual maior, e qual seu ndice, imprimindo ambas as informaes, mesmo que haja mais de co um.

Exerc cio 104 Denir algoritmo que leia um vetor de 278 inteiros e escreva-o de trs a
para a frente.

Exerc cio 105 Escreva um algoritmo, que leia de uma s vez um vetor de 100 elemeno tos numricos reais, e escreva aqueles que forem maiores do que o valor 150, e tambm a e e quantidade deles. Exerc cio 106 Escreva um algoritmo que leia 200 valores (um a um), e crie um vetor
com tais valores, informando a seguir qual a mdia dos valores positivos e qual a mdia dos e e valores negativos.

Exerc cio 107 Denir algoritmo que leia uma frase de 80 caracteres e escreva a quantidade de vogais minsculas que apareceram na frase. u Exerc cio 108 Denir algoritmo que leia uma frase de 90 caracteres e escreva a quantidade de consoantes maisculas que apareceram na frase. u Exerc cio 109 Denir algoritmo que leia uma frase de 100 caracteres e escreva a quantidade de palavras que apareceram na frase.

8.7

Pesquisa sequencial

Dada um vetor, uma das aes mais comuns sobre ela, a pesquisa para saber se co e determinado elemento se encontra ou no contido nela. A maneira mais simples de fazer a esta pesquisa percorrer a tabela em ordem seqencial, at que: e u e
O elemento (denominado CHAVE) seja encontrado, ou Chegue-se ao m da tabela, quando ento concluiremos que o elemento CHAVE a no existe na tabela. a

Embora seja um algoritmo simples de se imaginar e de implementar, ele no dos a e mais ecientes, principalmente para tabelas muito grandes e com muitas pesquisas por unidade de processamento. Um primeiro melhoramento que podemos fazer, classicar a tabela, para diminuir e a quantidade de acessos at chegar a uma concluso sobre a existncia ou no da chave. e a e a Com a tabela classicada em ordem (digamos ascendente), a pesquisa da chave deve ser feita at que: e
verso de 10 de fevereiro de 2008 a

137

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES


A chave seja encontrada, OU Um elemento maior do que a chave seja encontrado, quando ento concluiremos a pela no existncia da chave na tabela. a e

A seguir o algoritmo para fazer esta pesquisa: 1: inteiro V[1000] 2: inteiro I, CHAVE 3: leia V 4: leia CHAVE 5: I 1 6: enquanto I < 100 faa c 7: se VET[I] = CHAVE ento a 8: escreva encontrou 9: abandone 10: mse 11: II+1 12: menquanto 13: se I = 101 ento a 14: escreva No encontrou a 15: mse 16: m?

Exerc cio 110 Como exerc cio, indique qual a modicao que se deveria fazer no ca algoritmo acima, se o vetor lido estiver em ordem ascendente, a m de no ter que percorra e lo at o m para certicar-se da no existncia da chave. e a e Exerc cio Resolvido 13 Imagine um poss renamento para tornar mais rpido vel a
o acesso seqencial a uma tabela (de tamanho grande) classicada. u R: Basta aumentar o tamanho do salto, de 1 linha para 10, 20 ou qualquer outro valor.

Exerc cio 111 Mediante a regra acima, determine qual o nmero mdio de acessos u e em uma pesquisa binria para uma tabela de: a
1. 5 elementos: 2. 10 elementos: 3. 20 elementos: 4. 50 elementos: 5. 100 elementos: 6. 1.200 elementos: 7. 15.000 elementos: 8. 1.000.000 elementso:

Exerc cio 112 Dado o vetor: 1 4 5 6 8 10 13 18 21 60, realizar o chinez para descobrir a presena ou no das chaves, atravs do algoritmo de pesquisa binria: c a e a
1. 8 2. 9
88-08, Pedro Kantek

138

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES 3. 50 4. 200

Exerc cio 113 Denir algoritmo que


Leia um vetor de 6000 salrios a Leia o valor do salrio m a nimo vigente Calcule e escreva quantas pessoas (=salrios) ganham at 3,5 S.M. a e Idem para quem ganha mais de 3,5 e menos de 20 S.M. Idem para quem ganha 20 ou mais S.M.

Exerc cio 114 Denir algoritmo que leia um vetor de 200 inteiros e escreva os elementos que so maiores do que seus medonhos de 10 chifres. Dene-se o medonho de n a chifresdo elemento ndice k de um vetor, ao elemento do mesmo vetor, com o menor ndice j poss (onde j k) tal que j divis por n, se este existir. vel e vel Exemplos: Dado o vetor 1 2 3 4 6 7 8 9 0 0 0 2 3, pergunta-se qual o medonho de 3 chifres do elemento 6 (quinto elemento do vetor) ? k igual a 5. O prximo j maior que cinco e e o divis por 3 (3 chifres) 6. Logo o medonho o sexto elemento, que o 7. vel e e e Se pedirmos o medonho do ultimo elemento de um vetor, ele s existir se o medonho o a for o prprio elemento (no caso de j ser igual a k). Isto s ocorrer se a ordem do ultimo o o a elemento for divis pelo nmero de chifres. vel u Exerc cio 115 Denir algoritmo que leia um vetor de 200 elementos inteiros, e a seguir calcule e escreva a somatria dos elementos do vetor DE ORDEM PAR. o Exerc cio 116 Denir algoritmo que leia um vetor de 200 elementos inteiros, e a seguir calcule e escreva a somatria dos elementos do vetor DE VALOR PAR. o Exerc cio 117 Denir algoritmo que leia um vetor de 300 inteiros, e escreva-o sujeito ` ordem de entrada, mas imprimindo primeiro os pares e depois os a mpares. Exerc cio 118 Dado um vetor VIN de 10 elementos inteiros numricos, criar o vetor e VAI contendo 30 elementos. Onde VAI[1], VAI[2] e VAI[3] recebem VIN[1], e assim por diante. Escrever algoritmo que leia VIN e escreva VAI. Exerc cio 119 Uma grande empresa tem seus preos armazenados na forma de dois c
vetores de 650 ocorrncias cada. No primeiro, a quem chamaremos COD esto os cdigos e a o dos produtos [inteiros]. No outro vetor, chamado PRE, esto os preos de cada produto, a c NA MESMA ORDEM DE APARECIMENTO do que COD. Escrever um algoritmo que leia os vetores contendo CODIGO e QUANTIDADE e escreva o valor a pagar, pela frmula VALOR = PRE [I] * QUANTIDADE [I]. o

Exerc cio 120 Dado um vetor ALFA contendo 50 nmeros inteiros e fracionrios misu a
turados, criar um vetor BETA de mesmo tamanho, onde s aparecem os nmeros inteiros no o u in cio, e com zeros ao nal. [Tantos zeros quantos eram os fracionrios em BETA]. Escrever a um algoritmo que leia o vetor ALFA e escreva BETA. Exemplo: ALFA: BETA: 3 3 1.5 4 4 10 139 2.2 11 10 0 11 0
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES E se ao nal do vetor, se colocar 99, em vez de zero, que mudana precisaria ser feita ? c

Exerc cio 121 Denir algoritmo que leia um vetor de 1500 nmeros reais positivos u sem qualquer tipo de ordenao. O algoritmo deve gerar outro vetor tambm com 1500 ca e nmeros onde os elementos que forem menores do que 10000 sero colocados na frente, e u a onde os maiores caro no m. Exceto esta mudana, a ordem original do vetor deve ser a c preservada. Exerc cio 122 Denir algoritmo que leia uma srie indeterminada de pares de valores e formados por CODIGO,VALOR referentes a arrecadaes do imposto de renda. CODIGO co um entre 137 cdigos poss e o veis, um para cada tipo de imposto. VALOR o valor em e reais efetivamente cobrado. Os dados terminam quando o cdigo 000 for lido. Ao nal do o processamento, o algoritmo deve imprimir quantos reais foram arrecadados em cada um dos cdigos que foram lidos. Os dados no tem nenhum tipo de ordenao. o a ca Exemplos de cdigos poss o veis (ct cios):
0246 0211 0192 0432 ... Taxas alfandegrias a Mensal~o a Tri-le~o a Multas por recolhimento fora de prazo,

Exerc cio 123 Desejamos analisar o mapa de uso de um disquete. Como sabemos um disquete dupla-dupla de 5 1/4, tem 2 faces, 40 trilhas e 9 setores por trilha, o que d um a total de 720 setores. Denir um algoritmo que leia 20 vetores (um de cada vez, claro), e que correspondem cada vetor a um disco diferente, e determine qual o percentual de setores livre em cada um dos discos, imprimindo tal resultado. O vetor de inteiros, e se existe um e valor zero, isto signica que o setor est livre. Qualquer valor diferente de zero, implica em a que o setor no est livre. a a Exerc cio 124 Denir um algoritmo que leia um vetor numrico real de 100 elementos, e onde esto misturados: nmeros positivos e negativos e nmeros inteiros e fracionrios. O a u u a algoritmo deve criar um vetor de sa tambm de 100 elementos, onde a ordem : da e e
Primeiro os nmeros negativos fracionrios u a Depois os positivos fracionrios a Depois os inteiros

Em cada uma das subclasses, a ordem original do vetor de entrada deve ser preservada. Exemplo: Vetor de entrada: 1.2 3.5 -8 -8.9 0 0 1.2 -3.1 Sada: -8.9 -3.1 -0.9 1.2 1.2 3.5 1.2 0 0 -4 -4 -0.9

Aps calcular o vetor de sa este deve ser impresso e o algoritmo encerrado. o da,

Exerc cio Resolvido 14 Uma empresa de departamentos, quer saber quais os produtos que ela vende e que rendem mais faturamento. As opes de vendas so: brinquedos co a (cod. 11), armarinhos (cod. 21), roupas (cod. 33) e produtos eletrnicos (cod. 40). O o cadastro de vendas da empresa tem o seguinte formato: TIPO,inteiro VALOR, real
88-08, Pedro Kantek

140

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES E nele consta 1 registro para cada venda efetuada, isto , os cdigos se repetem. Escrever e o um algoritmo que leia o cadastro de vendas e totalize os quatro tipos ao nal. Soluo usando vetores: ca 1: tipo R = registro; 2: inteiro: ti; 3: real:va; 4: mregistro; 5: tipo V = vetor [1:4] R 6: V: tab; 7: R: reg; 8: inteiro: I; 9: tab[1].ti 11; 10: tab[2].ti 21; 11: tab[3].ti 33; 12: tab[4].ti 40; 13: leia (reg); 14: enquanto reg.ti = 0 faa c 15: I 1; 16: enquanto tab[I].ti = reg.ti faa c 17: I I + 1; 18: menquanto 19: tab[I].va tab[I].va + reg.va 20: leia(reg); 21: menquanto 22: escreva(tab)

Exerc cio 125 Suponha uma lista sequencial (um vetor numrico) de nome VET, e
denido globalmente, formada por nmeros inteiros positivos e contendo espao para 20 u c nmeros. O preenchimento sempre se d a partir do comeo do vetor sem lacunas. Os u a c dados vlidos se encerram quando encontrado um nmero negativo, que faz o papel de a e u sentinela e que sinaliza FIM DE DADOS. Obviamente cabem apenas 19 nmeros vlidos u a pois sempre h que se reservar espao para o sentinela. Notar que logo aps a sentinela a c o os nmeros que porventura aparecerem em VET so no conveis e no devem ser conu a a a a siderados, isto , o vetor no foi inicializado de alguma maneira antes dele comear a ser e a c usado. A seguir est o algoritmo de uma funo que recebe como parmetro um determinado a ca a nmero inteiro positivo X, e devolve a posio 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 no se encontra em a a VET. 1: Inteiro funo ACHANUMERO(inteiro X) ca 2: Inteiro I, J, K 3: I 1 4: J 0 5: enquanto I < 20 faa c 6: se VET[I] = X ento a 7: JI 8: I 21 9: mse 10: I++ 11: menquanto 12: se J = 0 ento a 13: Retorne (20)
verso de 10 de fevereiro de 2008 a

141

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES


14: 15: 16: 17:

seno a Retorne J mse Fim funo ca Sobre o algoritmo acima, sero feitas 4 armaes a co 1. E desnecessrio inicializar J com o valor 0, pois J tem o valor imediatamente alterado, a logo abaixo. 2. Se em vez de fazer I 21 se zesse I 20 a funo deixaria de funcionar ca 3. Esta funo pode no funcionar no caso em que X no pertence a VET ca a a 4. Esta funo pode no funcionar no caso em que X pertence a VET ca a

Est~o erradas as afirma~es: a co a) 1, 2, 3 e 4 b) 1, 2 e 3 c) 1, 2 e 4 d) 2 e 3 e) 1 e 4

Exerc cio 126 Dena um algoritmo que leia e escreva um conjunto de 200 valores numricos armazenando-os em uma vetor numrico (real). Feito isto, o algoritmo deve: e e
j e ndice que varia entre 1 calcular e imprimir a somatria dos termos: aj , onde j um o e 200, e aj a varivel que foi lida e armazenada no vetor. e a
2

Calcular e imprimir a quantidade de elementos que so menores que seu a ndice

Exerc cio 127 Denir algoritmo capaz de receber uma srie da datas, sempre refere entes ao ano de 1988, e no formato dd, mm. Para cada uma delas, o algoritmo deve calcular uma nova data, no mesmo formato, e que corresponda ao per odo de 180 dias posterior a data original. A srie de datas se encerra quando for lida um dia igual a zero. e Exerc cio Resolvido 15 Criar um algoritmo que leia (de uma vez) um vetor de
500 elementos inteiros. A seguir o programa deve determinar qual o valor que mais aparece neste vetor e quantas vezes ele aparece. Estas duas informaes (qual o mais repetido, e co e quantas vezes ele aparece) devem ser impressas. 1: V [1..500] de inteiro 2: MAT [1..500] [1..2] de inteiro 3: I,J,ix : inteiro 4: MAT[;1] -1 1.coluna inicializada com nmeros negativos u 5: leia(V) 6: para I de 1 at 500 faa e c 7: J1 8: enquanto (J < 500) faa c 9: se MAT[J,1] = V[I] ento a 10: MAT[J,2] MAT[J,2] + 1 11: abandone 12: mse 13: se MAT[J,1] < 0 ento a 14: MAT[J,1] V[I] 15: MAT[J,2] 1
88-08, Pedro Kantek

142

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES


16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:

abandone mse JJ+1 menquanto mpara maior 0 I1 enquanto (I< 500) faa c se MAT[I,2] > maior ento a maior MAT[I,2] ix I mse II+1 menquanto 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 deciso 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 nmero e u que signica: 1=excelente, 2=razovel, 3=inferior. Supe-se que o custo de todos os tipos a o de semente o mesmo. e Deve-se denir um algoritmo que leia o arquivo e determine e escreva qual o tipo de semente mais produtiva, seguindo o critrio: 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 informaes de rea e peso do co a produto produzido. A semente mais produtiva aquela que tiver maior coeciente peso / e rea. 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 no tem defeito E a pelo menos 95 % de rolamentos tipo 2 no tem defeito E a Menos de 1000 rolamentos tipo especial tem defeito.

Os dados referentes a cada partida esto no computador na forma a NUMPAR, inteiro, TIP, caracter, QTDROL, inteiro, QTDDEF, inteiro NUMPAR um nmero que identica a partida. No arquivo existem diversas partidas, porm e u e todos os dados de uma partida esto agrupados. TIP, apenas um caracter cujo conteudo a e pode ser: 1 2 E. QTDROL a quantidade de rolamentos deste tipo que existem , ou e
verso de 10 de fevereiro de 2008 a

143

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES na partilha. QTDDEF a quantidade de rolamentos deste tipo defeituosos. Deve-se denir e um algoritmo que leia todos os dados do arquivo, e para cada partida, deve-se imprimir seu nmero e a identicao ACEITAou REJEITADA u ca Um poss exemplo de arquivo poderia 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 relatrio: o 001 ACEITA 002 REJEITADA 003 ACEITA 004 ...

Exerc cio 130 Uma distribuidora de bebidas abastece o mercado com COCA-COLA. A empresa, no momento, est preparando o iminente lanamento da coca diettica. Assim, a c e resolveu fazer uma pesquisa de opinio na cidade para determinar qual a melhor estratgia a e a seguir. Os dados da pesquisa esto em um arquivo cujo lay-out : a e
Identifica~o do quarteir~o da cidade, inteiro ca a Quantidade de crianas 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 diabticos 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 quarteires tem mais de 100 obesos o 2. Qual a percentagem mdia (=mdia das percentagens) de crianas por quarteiro e e c a 3. Quantos quarteires tem mais adolescentes do que crianas o c 4. Quantos quarteires tem mais de 5 % de diabticos. o e

Exerc cio 131 Uma revenda de automveis quer fazer uma pesquisa para determinar o
se h correlao entre renda familiar e cor do automvel adquirido. Para tanto, cada venda a ca o realizada no ms passado, gerou um registro magntico contendo: e e Renda famlia, real (em R\$) Cor do carro adquirido, cadeia As cores poss veis so: amarelo, azul, branco, cinza, marrom, preto e verde. J as classes a a de renda so 3: Classe 1, vai de 0 at 50 Salrios 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 salrio m a nimo) e incrementar 1 em uma varivel que relacione a a cor e a classe. Ao nal, 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
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES

Exerc cio 132 Um fabricante de margarina planeja homenagear a sua me no lanaa c mento de um novo produto no ano que vem. A nova margarina dever ter um nome formado a por alguma combinao das letras M,E,R,T,A, que o nome da me do fabricante. O exca e a erc deve criar o algoritmo que faa e escreva as 120 combinaes poss cio c co veis. Analisando o relatrio, o fabricante escolher o nome que quiser. o a Exerc cio 133 O instituto Nacional de Pesquisas Ufolgicas estuda com interesse a o ocorrncia 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 so: a
M^s da ocorr^ncia, inteiro e e Ano da ocorr^ncia, inteiro e Pas, cadeia Grau do contacto, inteiro (1, 2 ou 3) Confiabilidade, (1=provvel embuste, 2=razovel, a a 3=confivel, 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 nmero de contactos apresenta mais embustes u ? 3. Qual o Pais com mais contactos do terceiro grau, con veis ou certos? 4. Qual o ms mais prop a ocorrncias ? e cio e

Exerc cio 134 Voc tem a seguir 3 funes que buscam um determinado valor que e co pode ou no estar contido em um vetor, por hiptese, GLOBAL. Considere o nome do vetor a o como VET, e considere tambm que ele tem espao de sobra no seu nal. Assim, por e c exemplo, ele pode ter espao para 1.000.000 de valores, mas atualmente usa bem menos do c que isso. Considere tambm a existncia de uma varivel GLOBAL chamada ULTIMOUSADO que e e a contm o valor do ultimo valor vlido dentro de VET. e a O algoritmo 1 o seguinte: e 1: inteiro funo BUSCALIN (inteiro CHAVE) ca 2: inteiro I 1 3: inteiro RESPOSTA -1 4: enquanto I ULTIMOUSADO faa c 5: se CHAVE = VET[I] ento a 6: RESPOSTA I 7: I ULTIMOUSADO+1 8: mse 9: I++ 10: menquanto 11: retorne RESPOSTA Para o algoritmo 2: 1: inteiro funo BUSCALINSEN (inteiro CHAVE) ca 2: inteiro I 1 3: VET[ULTIMOUSADO+1] CHAVE {note que ULTIMO no alterado} a e 4: enquanto CHAVE = VET[I] faa c 5: I++
verso de 10 de fevereiro de 2008 a

145

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES menquanto se I = ULTIMOUSALDO+1 ento a retorne I seno a retorne -1 mse Olhando os 2 algoritmos (que esto corretos) podem-se fazer algumas armaes. Supondo a co que existem 800.000 valores em VET, analise as armaes a seguir e informe ao nal a co soma das armaes verdadeiras: co
6: 7: 8: 9: 10: 11:

1 O algoritmo 1 o mais rpido e a 2 O segundo nunca detecta a ausncia da chave, pois logo de cara inclui o elemento a buscar e 4 No segundo algoritmo, como a varivel ULTIMOUSADO no alterada a incluso da a a e a chave buscada no ocorre a 8 O segundo algoritmo mais rpido e a 16 A eventual ordenao em ambos os casos deixa os algoritmos mais rpidos ca a Pede-se a soma das armaes verdadeiras co

Exerc cio 135 No algoritmo a seguir, de uma funo que detecta se o nmero X ou ca u e no primo, h quatro lacunas. Informe qual comando deveria ser colocado em cada uma a e a das lacunas: 1: lgico funo PRIMO(inteiro X) o ca 2: inteiro QTD 0 3: inteiro QUO 2 4: enquanto QUO teto(raiz-quadrada(X)) QTD = 0 faa c 5: // teto(y) o prximo inteiro maior ou igual a y e o 6: se X mod QUO = 0 ento a 7: . 8: mse 9: . 10: menquanto 11: se QTD = 0 ento a 12: retorne . 13: seno a 14: retorne . 15: mse
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 136 Suponha 2 pilhas, devidamente denidas para armazenarem nmeros u
inteiros, de nomes A e B. Considere que elas tem capacidades grandes (innitas, neste caso espec co). Na situao inicial A pilha A contm 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 Aps a execuo do trecho correto de algoritmo a seguir, qual o contedo de B (lido do o ca u primeiro a entrar para o ultimo a sair)
88-08, Pedro Kantek

146

verso 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:

inteiro S 10 enquanto (S 50) faa c Y desempilha (A) SS+Y empilha (B, Y) menquanto enquanto no vazia (B) faa a c Y desempilha (B) se Y mod 2 = 0 ento a empilha (A, Y) mse menquanto 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

a) b) c) d) e)

Exerc cio 137 Denir algoritmo que leia uma cadeia de 200 caracteres e escreva a quantidade de letras maisculas que so seguidas por uma letra minscula. u a u Exerc cio 138 Denir algoritmo que leia um vetor de 208 inteiros e escreva os elementos que esto entre nmeros 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 nmeros 16, 24, 8, 8 e 2. u

Exerc cio 139 Escreva algoritmo de uma funo que leia um vetor de nmeros 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 funo deve devolver .V. se o aluno foi aprovado e .F. se foi ca reprovado. Exerc cio 140 Denir 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 processvel. A esta, na saida, deve ser agregada outra s a laba com a consoante P a mesma e vogal. O resto do texto no deve ser alterado. Denir algoritmo que leia uma frase de 150 a caracteres, toda em maiscula e escreva o resultado com os P incluidos. u s Exemplo:
O RATO VAI AO BURACO O RAPATOPO VAPAI AO BUPURAPACOPO

Exerc cio 141 Denir 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. Exerc cio 142 Dado um vetor DIST com 15 distribuies de freqencia estat co u sticas,
criar um vetor ACUM, tambm de 15 elementos, contendo as distribuies acumuladas. O e co algoritmo deve ler DIST e imprimir DIST e ACUM.

Exerc cio 143 Imagine 2 vetores de nomes A (com 50 elementos inteiros) e B (com 100 elementos inteiros). Dena um algoritmo que crie um terceiro vetor de nome C (com
verso de 10 de fevereiro de 2008 a

147

88-08, Pedro Kantek

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 formao: ca A B [1 2 3 ... 49 50] B [51 52 53 ... 99 100]

Exerc cio 144 Denir algoritmo que leia um conjunto de 20 valores reais, armazene-os em um vetor e a seguir calcule a somatria expressa pela expresso: o a
S = (A1 A20 )2 + (A2 A19 )2 + ... + (A10 + A11 )2

Exerc cio 145 Denir algoritmo que leia as notas de 120 alunos. Durante o processo de leitura devem ser calculadas a mdia e o desvio padro. Posteriormente, devem-se ime a primir as notas que estiverem fora do intervalo:
limite inferior: Media - 3 desvio padro a limite superior: Media + 3 desvio padro. a

(X Xm )2 n Exemplo: Dadas 5 notas (8,9,2,5,6), calcular seu desvio padro: a DP =


Clculo da mdia: 8 + 9 + 2 + 5 + 6 / 5 6 (mdia) 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 Somatrio: 30 o Divido por 6: 5 Raiz de 5: 2,2. Logo o D.P. 2,2. e

Exerc cio 146 Existe um livro de 370 pginas que foi recentemente impresso. A editora a deseja fazer um estudo sobre poss veis erros de impresso. Desta forma, um especialista foi a convidado a levantar quantos erros existem em cada pgina. Cada valor foi digitado na a forma de um vetor, formando um conjunto de 370 valores. Denir um algoritmo que leia este conjunto de dados, armazene-o na forma de vetor, e responda:
1. Qual a pgina que tem mais erros ? (Suponha que s existe uma, isto ela unica) a o e e 2. Quantas pginas tem zero erros ? a 3. Quantas pginas tem mais de 10 erros ? a

Exerc cio 147 Denir 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 nmero de dias transcorridos desde o dia 1 de janeiro de 1990. u Exerc cio 148 Denir 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

148

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES

Exerc cio 149 Denir algoritmo que leia 2 horas referentes sempre ao mesmo dia. A primeira hora indica quando um determinado processo produtivo comeou, e a segunda hora c indica quando ele terminou. Para cada par de horas, o programa deve calcular e imprimir qual a durao do processo em horas, minutos e segundos. Os dados de entrada esto no ca a formato: HH,MM,SS. O dado de sa tambm est no mesmo formato. da e a Exerc cio 150 Voc precisa resolver um problema relativo a astronomia. Neste caso, e pela magnitude dos nmeros, o tipo real no suciente. O Objetivo do exerc escrever u a e cio e um algoritmo capaz de implementar nmeros inteiros com 40 casas de preciso, e com eles u a realizar operaes de adio. Exemplo: Se o algoritmo ler os nmeros: co 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 nmero de matr u cula colocado em um e vetor de 125 elementos na posio correspondente ao dia espec ca co (1. elemento do vetor corresponde ao 1.dia de aula, e assim por diante). Denir algoritmo que ao nal do ano, quando o vetor estiver todo preenchido informe (escreva) qual o nmero do aluno que mais u apareceu no vetor. O nmero de matr u cula varia entre 1 e 2000 inclusive. Exerc cio 152 A Pol Rodoviria vai usar uma nova abordagem para a represso cia a a ao excesso de velocidade na estrada. Na sa de Curitiba, em direo 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 relgio e a o sabe a que horas aconteceram os dois fatos, e conhecendo a distncia 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 horrios (no cio a a formato hh,mm ambos inteiros) e determine se o carro deve ou no ser multado. Lembrar a que a velocidade mxima permitida de 100 Km/h, com uma tolerncia de 10 %. a e a

8.8

Matriz

Pelas mesmas razes que nos levaram a criar o conceito de vetor, precisaremos agora o tratar de um outro tipo de organizao de dados: as matrizes. Trata-se de arranjos ca bi-dimensionais; de dados. Apenas para comparao, os vetores so arranjos unidimenca a sionais de dados. Excepcionalmente, podemos ter mais de duas dimenses, permitindo o algumas linguagens trs ou mais. Algumas so mais privilegiadas neste aspecto: APL e a por exemplo, permite at 256 dimenses em algumas implementaes e at 64 em outras. e o co e Nos vetores, ns precisvamos 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, so trs os a e ndices: plano, linha e coluna. O formato similar ao da denio de vetor, agora acrescentando-se apenas a quane ca tidade de elementos na segunda dimenso. O formato a e <nome> vetor de [in..] [in..] de <tipo> Por exemplo, a denio de uma matriz para conter os preos mensais (12 meses) de um ca c produto ao longo dos ultimos 5 anos, seria 1: PRECO vetor de [1..5] [1..12] de real
verso de 10 de fevereiro de 2008 a

149

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES Note-se que a rigor, qual a primeira dimenso e qual a segunda um critrio 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 criao de uma matriz 8 x 12 devidamente zerada, poderia ser asca sim: 1: M vetor de [1..8] [1..12] de real 2: inteiro I,J 3: para I de 1 at 8 faa e c 4: para J de 1 at 12 faa e c 5: M [I] [J] 0 6: mpara 7: mpara 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) faa c 7: J1 8: enquanto (J < 14) faa c 9: M2 [J] [I] M1 [I] [J] 10: JJ+1 11: menquanto 12: II+1 13: menquanto

Exerc cio 153 Denir algoritmo que some duas matrizes A e B, de 7 linhas por 8 colunas cada uma, gerando a matriz C, tambm 7 x 8, onde cada elemento de C a soma e e dos dois elementos correspondentes em A e B. Exerc cio 154 Denir algoritmo que some duas matrizes A e B, de 7 linhas por 8 colunas cada uma, gerando a matriz C, tambm 7 x 8, onde cada elemento de C a soma e e dos dois elementos correspondentes em A e B, com uma restrio: S se pode usar um ca o ndice. Dica: L = f (x); C = f (x). Como so f e f ? a Exerc cio 155 Denir algoritmo onde dada uma matriz M1 de 6 x 9, devemos totaliza
la na vertical gerando um vetor de 9 elementos. Imprimir este vetor. A seguir deve-se encontrar e imprimir a mdia destes 9 valores. e

Exerc cio 156 Dena 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 nal.

Exerc cio 157 Dena um algoritmo capaz de ler duas matrizes de dimenses 4 e 9 (a o
primeira) e 9 e 7 (a segunda). Aps lidas as matrizes devem ser multiplicadas matricialmente o gerando uma sa de dimenses 4 x 7. A matriz resultado deve ser impressa ao nal. da o

Exerc cio 158 Uma matriz esparsa aquela que conta com grande nmero de elee u mentos nulos dentro dela. Podemos arbitrar que uma matriz esparsa quando apenas 5% e
88-08, Pedro Kantek

150

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES dos seus elementos no so nulos. Uma maneira razovel de armazenar matrizes esparsas a a a criar matrizes comprimidasque guardam a linha e a coluna dos valores que no so zero e a a (guardam o valor tambm). 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 converso.) a Proponha pelo menos outros 2 esquemas distintos deste, de economia de espao para c matrizes esparsas

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 varivel C, de i linhas por k colunas, assim constitu a dos: O elemento (i,k) de C ser o menor valor das fraes obtidas dividindo-se todos os pares a co 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 faa c 11: J1 12: enquanto J < 5 faa c 13: K1 14: enquanto K < 4 faa c 15: V1[K] MA[I] [K] / MB[K] [J] 16: KK+1 17: menquanto 18: menor V1 [1] 19: K2 20: enquanto K < 4 faa c 21: se V1 [K] < menor ento a 22: menor V1 [K]
verso de 10 de fevereiro de 2008 a

151

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES


23:

24: 25: 26: 27: 28: 29:

mse KK+1 menquanto C [I] [J] menor JJ+1 menquanto II+1 30: menquanto 31: escreva(C) 32: m{algoritmo}

Exerc cio Resolvido 17 Dada uma matriz numrica 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 denir um programa que:
leia a matriz (ela vir classicada em ordem ascendente de matr a cula) Reclassif que-a em ordem descendente de mdia 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:

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) i1 limite 30 enquanto limite > 1 faa c I1 enquanto I < limite faa c se MAT[I] [5] < MAT[I+1] [5] ento 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 mse II+1 menquanto LIMITE LIMITE - 1 menquanto para I de 1 ate 30 faa 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] mpara escreva(mats) m{algoritmo} 152
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES

Exerc cio 159 Denir um algoritmo que leia uma matriz 9 x 9, some-a com a sua transposta e escreva o resultado. Exerc cio 160 Denir algoritmo que leia duas matrizes (A e B) de dimenses 7 x 13 e o gere uma terceira matriz, onde cada elemento o maior entre os elementos correspondentes e em A e B. Exerc cio 161 Denir algoritmo que leia duas matrizes A e B, de 9 x 16 elementos numricos, devendo gerar uma terceira matriz sujeita as seguintes regras: e
Se A[L, C] + B[L, C] > 100 ento C[L, C] A[L, C] e a se A[L, C] + B[L, C] 100 ento C[L, C] B[L, C] a

Exerc cio 162 Denir um algoritmo que leia uma matriz 5 x 7, inverta suas linhas e a seguir, escreva-a. Exemplo: se a matriz lida for (3 x 4):
1 1 0 4 1 0 3 2 3 2 1 3 ser:

a resposta dever 0 0 3 3 1 1 2 1 1 4 3 2

Exerc cio 163 Denir um algoritmo que leia uma matriz 5 x 8, inverta suas colunas de ordem par e a seguir, escreva-a. 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

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

Exerc cio 164 Denir algoritmo que efetue a multiplicao matricial de duas matrizes, ca
que devero ser lidas de uma s vez: A primeira matriz tem forma 8 linhas por 9 colunas, e a o a segunda tem 9 linhas por 3 colunas. O resultado, depois de calculado, deve ser impresso.

Exerc cio 165 Escrever um algoritmo que leia (de uma s vez) uma matriz de 23 o linhas por 10 colunas. Esta matriz representa a populao dos 10 maiores munic ca pios de cada estado Brasileiro. Em cada linhas, as colunas esto em ordem decrescente, com exceo a ca da primeira coluna, que sempre representa a capital. O algoritmo deve imprimir:
1. Qual o nmero do estado de capital mais populosa ? u 2. Qual a mdia das populaes das capitais do Brasil ? e co 3. Quais os nmeros (de estado e de munic u pio) dos munic pios que tem populao maior ca que a capital ?
verso de 10 de fevereiro de 2008 a

153

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES

Exerc cio 166 Uma matriz representa os valores da cotao da soja no mercado de ca Chicago em dlares por tonelada, de hora em hora (das 09:00 as 18:00 = 10 linhas), e nos o 22 dias uteis de julho/89 (22 colunas). Deseja-se um algoritmo que informe:
1. Quais as maiores cotaes dia a dia (22 valores) co 2. Qual a hora em que foi mais freqente aparecer a maior cotao (Neste caso no u ca a haver empate, por denio). a ca 3. Em quais dias a mdia da manh (primeiros 5 valores) foi maior do que a mdia da e a e tarde (5 ultimos valores).

Exerc cio 167 Dada uma matriz de dimenses 8 x 15, obter uma outra tambm de o e dimenses 8 x 15, onde cada linha foi dividida pelo menor elemento da linha correspondente o na matriz original. Exerc cio 168 Dada uma matriz de dimenses 9 x 12, obter uma outra tambm de o e dimenses 9 x 12, onde cada linha foi dividida pela somatria dos elementos da linha correo o spondente na matriz original. Exerc cio 169 Dada uma matriz de 7 linhas por 12 colunas, denir algoritmo que a leia, e a seguir classique as linhas da matriz pelos valores indicados na coluna 4. A matriz resultado deve ser impresso ao nal. a Exerc cio 170 Dada uma matriz de 8 linhas por 6 colunas, deve-se criar um algoritmo
capaz de l-la de uma s vez, e a seguir gerar uma matriz de idntica forma (8x6) onde cada e o e linha o produto acumulado da linha da matriz original. 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

Porqu tudo comea com 1 ? e c A palavra digital vem do latim digitus que signica dedo, e por que temos 10 dedos, toda nossa lgica aritmtica se criou sobre um sistema decimal (de o e 10). J que so 10 d a a gitos e qualquer nmero composto por uma combinao u e ca desses d gitos seria de se esperar que cada um dos 10 d gitos tivesse uma distribuio proporcional quando vai se representar um nmero qualquer. ca u Assim, teoricamente, se analisarmos um grande conjunto de nmeros, seria u de se esperar que os d gitos 1, 2, 3, ... aparecessem em 10% das vezes, cada um iniciando os nmeros. u Anal, no existem d a gitos mais bonitos ou mais simpticos para que apaream a c no comeo dos nmeros mais do que os outros. Ou ser que existem ? c u a Em 1938, um matemtico chamado Benford, acabou descobrindo que sim, a existem d gitos iniciais mais frequentes do que outros. Ele estudou um monte de distribuies e chegou ` concluso que o d co a a gito 1 ocorre no comeo em c cerca de 30% das vezes, independente da fonte ou do fenmeno que cono e sultado. Parece estranho, mas verdade: em qualquer tabela, uma grande quantidade e de nmeros comea com o d u c gito 1. Muito mais do que os demais d gitos.
88-08, Pedro Kantek

154

verso de 10 de fevereiro de 2008 a

CAP ITULO 8. VETORES E MATRIZES Veja-se a seguinte conjunto de dados, extra do livro de Benford. Veja na do tabela 8.1. Parece que a distribuio do primeiro d ca gito em nmeros segue a seguinte u distribuio logar ca tmica: P (n) log(n + 1) log n para n = 1, 2, ...9. Este a Lei do Primeiro D e gito.

Col.

Tabela 8.1: Distribuio dos primeiros d ca gitos T tulo do assunto 1 2 3 4 5 6

A B C

D E F G H I J K L M N

Populaes co Constantes Exemplares aleatrios o de jornais Calores espec cos de substncias a Peso molecular Drainage Peso atmico o n1 ou n exemplares do Readers Digest Voltagem de raios X Dados da liga americana de baseball Endereos c aleatrios o n1 , n2 , ...n! Taxas de Mortalidade Mdia e

33.9 41.3 30.0

20.4 14.4 18.0

14.2 4.8 12.0

8.1 8.6 10.0

7.2 10.6 8.0

6.2 5.8 6.0

4.1 1.0 6.0

3.7 2.9 5.0

2.2 10.6 5.0

Nmeros u pesquisados 3259 104 100

24.0 26.7 27.1 47.2 25.7 33.4 27.9 32.7 28.9 25.3 27.0 30.6

18.4 25.2 23.9 18.7 20.3 18.5 17.5 17.6 19.2 16.0 18.6 18.5

16.2 15.4 13.8 5.5 9.7 12.4 14.4 12.6 12.6 12.0 15.7 12.4

14.6 10.8 12.6 4.4 6.8 7.5 9.0 9.8 8.8 10.0 9.4 9.4

10.6 6.7 8.2 6.6 6.6 7.1 8.1 7.4 8.5 8.5 6.7 8.0

4.1 5.1 5.0 4.4 6.8 6.5 7.4 6.4 6.4 8.8 6.5 6.4

3.2 4.1 5.0 3.3 7.2 5.5 5.1 4.9 5.6 6.8 7.2 5.1

4.8 2.8 2.5 4.4 8.0 4.9 5.8 5.6 5.0 7.1 4.8 4.9

4.1 3.2 1.9 5.5 8.9 4.2 4.8 3.0 5.0 5.5 4.1 4.7

1389 1800 159 91 5000 308 707 1458 342 900 418 1011

verso de 10 de fevereiro de 2008 a

155

88-08, Pedro Kantek

CAP ITULO 8. VETORES E MATRIZES

88-08, Pedro Kantek

156

verso de 10 de fevereiro de 2008 a

Cap tulo 9

Registros
Este tipo indica uma estrutura complexa, formada por vrios tipos primitivos, e que a passam a ser usados conjuntamente. Ela criada em duas etapas. Na primeira, denee se do que composta a estrutura, e na segunda, quais as variveis que sero mapeadas e a a por essa estrutura. Defini~o da estrutura: ca estrutura <nome da estrutura> <tipo> <nome campo 1> <tipo> <nome campo 2> ... <tipo> <nome campo n> fim {estrutura} Utilizao da estrutura em variveis: ca a <nome da estrutura> <nome da varivel> a // exemplo: ENDEREO CLIENTE C // exemplo: estrutura ENDEREO C // alfanum RUA [30] // inteiro NMERO U // inteiro CEP // alfanum CIDADE [20] // fim {estrutura}

Obviamente, depois que um tipo estrutura foi denido, ele pode ser usado em qualquer local da linguagem onde a indicao <tipo> aparea, por exemplo, em vetores. ca c

9.1

Denio de registros ca

registro E uma coleo HETEROGENEA de coisas. As coisas so reconhecidas pelo ca a seu nome. Por exemplo, uma placa de automovel um conjunto de 3 letras e 4 nmeros. No e u a tem como denir estra estrutura usando vetores. estrutura PLACA caracter LETRA[3] inteiro NUMERO m {estrutura} PLACA VEICULO VEICULO.LETRA ABC VEICULO.NUMERO 1234 leia VEICULO leia (VEICULO.LETRA, VEICULO.NUMERO) No confunda PLACA ( apenas uma estrutura, no ocupa lugar na memria e a e a o NAO pode ser referenciada em comandos) com VEICULO (a varivel cuja estrutura a e PLACA, ocupoa lugar, pode ser referenciada... 157

CAP ITULO 9. REGISTROS Deve-se lembrar que uma matriz tambm pode ser denida com um vetor de vetores e (ou um registro). Acompanhe: estrutura LINHAS inteiro COLUNAS[10] m { estrutura } LINHAS MAT[20] Note que neste caso, existe uma matriz MAT contendo 20 linhas por 10 colunas. O acesso agora se d a MAT[3].COLUNAS[4] ... ao invs de e MAT[3] [4] ... que seria o normal de uma matriz. vetor de registros Nada impede que um registro seja vetorizado. Acompanhe. estrutura DEBITO inteiro RG pontoutuante PRESTACAO m {estrutura} DEBITO CLIENTES[100] Neste caso, existe um vetor de 100 (registros) dbitos. Para acessar a prestao do 10o e ca cliente, far amos: CLIENTES[10].PRESTACAO registro de vetores Tambm nada impede que um registro tenha vetores e estrutura ECONOMETRIA pontoutuante INFLACAO[12] inteiro POPULACAO inteirolongo PIB m { estrutura } ECONOMETRIA BRASIL, ARGENTINA, PARAGUAI Neste caso, como acessar as 2 ultimas taxas de inao de BRASIL e de PARAGUAI ? ca BRASIL.INFLACAO[12], BRASIL.INFLACAO[11] e PARAGUAI.INFLACAO[12], PARAGUAI.INFLACAO[11]

Exerc cio Resolvido 18 Uma organizao tem um conjunto de registros de vendas ca


do ms de janeiro de 1988. Tais registros tem o formato: e REG: DIA,inteiro; VALOR,real. Criar um algoritmo capaz de ler os dados e imprimir os totais dirios. O processamento a termina quando for lido um dia igual a 00. 1: tipo R = registro 2: inteiro: dia 3: real:valor 4: mregistro 5: R: reg 6: tipo V = vetor[1:31] real 7: V: acum 8: acum 0 9: leia(reg)
88-08, Pedro Kantek

158

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS


10: 11: 12: 13: 14:

enquanto dia = 0 faa c acum [dia] acum [dia] + reg.valor leia(reg) menquanto escreva(acum)

Exerc cio Resolvido 19 Uma organizao tem um conjunto de registros de vendas ca


do ms de janeiro de 1988. Tais registros tem o formato: e REG: DIA,inteiro; VALOR,real. Criar um algoritmo capaz de ler os dados e imprimir os totais dirios. O processamento a termina quando for lido um dia igual a 00. Resolver o problema, sujeito `s restries: a co
No se pode usar vetor a Os dados j vem classicados por ordem de dia. a e
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:

tipo R = registro inteiro: dia real:valor mregistro R: reg inteiro: diaant real: total total 0 leia(reg) ant dia enquanto dia = 0 faa c enquanto dia = diaant faa c total total + valor leia(reg) menquanto escreva (total) total valor diaant dia se dia = 0 ento a leia(reg) mse menquanto

Exerc cio Resolvido 20 Uma empresa tem registros de vendas de todo o ano de
1987, na forma (dia,ms,valor). Dia e ms so inteiros, e valor real. Criar um algoe e a e ritmo que leia todo o arquivo e escreva os totais dirios. No necess rio denir rega a e istro. 1: inteiro: dia,mes 2: real: valor 3: tipo M = matriz [1:12, 1:31] real 4: M: cad 5: cad 0 6: leia (dia,mes,valor) 7: enquanto dia = 0 faa c
verso de 10 de fevereiro de 2008 a

159

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS


8: 9: 10: 11:

cad [mes,dia] cad [mes,dia] + valor leia (dia,mes,valor) menquanto escreva(cad)

Exerc cio 171 A Empresa DEUNOPE vai distribuir R$ 100.000 de prmio de m de e ano a seus vendedores. Cada vendedor receber um xo de 1.000. A diferena, isto , a c e quantia que sobrar, ser distribu proporcionalmente ao total de vendas de cada um. A a da Empresa tem no mximo 50 vendedores , e seus dados esto em um arquivo que contm o a a e lay-out Nome do vendedor, cadeia [30] total de vendas, real Para resolver este algoritmo, sem usar vetores, deve-se ler o arquivo duas vezes.

Exerc cio Resolvido 21 Existe uma turma do curso de PD que teve os dados
referentes ao bimestre transcritos em cartes na forma: o MATR,inteiro NT1,NT2:real NOTPROV,real (NT=nota trab) Os dados terminam quando for lida uma matr cula igual a zero. Escreva um algoritmo que dena o registro acima, leia o arquivo, calcule a mdia para cada aluno, usando a frmula: e o M = ((T1 2) + T2 + (Nprova 7)) 10 Aps cada clculo, deve-se imprimir, o nmero da matr o a u cula, a mdia nal e a mensagem: e PARABENS caso a mdia tenha sido maior ou igual a 7. Se a mdia foi menor que 7, a , e e mensagem PRECISAMOS ESTUDAR MAIS.... e tipo C = registro inteiro: matric real: t1, t2, pr mregistro C: cad real: media caracter: mensagem leia (cad) enquanto matric = 0 faa c media (t1 * 2) + t2 + (pr * 7) media media / 10 se media 7 ento a mensagem PARABENS seno a mensagem PRECISAMOS ESTUDAR MAIS... mse escreva (matric, media, mensagem) leia (cad) menquanto

Exerc cio Resolvido 22 Existe um arquivo que contm alunos que devero se e a
dirigir a unidades da universidade para fazer vestibular. Tais dados esto em um cadastro a que tem o formato:
88-08, Pedro Kantek

160

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS MATRE,inteiro Dist-unid-1,real DU2,real DU3,real Denir um algoritmo que leia tais registros e para cada um, gere um outro registro no formato MATRS,inteiro Num-uni-mais-prox,inteiro distancia,real Os dados acabam quando for lida uma matr cula zero. tipo E = registro inteiro: ME; real: U1, U2, U3; 4: mregistro 5: E: CADE; 6: tipo S = registro 7: inteiro: MS, UP; 8: real: DU; 9: mregistro 10: S: CADS; 11: leia (CADE); 12: enquanto ME = 0 faa c 13: se U1 U2 U1 U3 ento a 14: UP 1; 15: DU U1; 16: mse 17: se U2 U1 U2 U3 ento a 18: UP 2; 19: DU U2; 20: mse 21: se U3 U1 U3 U2 ento a 22: UP 3; 23: DU U3; 24: mse 25: MS ME; 26: grave (CADS); 27: leia (CADE); 28: menquanto
1: 2: 3:

Exerc cio 172 Suponha as seguintes estruturas


estrutura X inteiro A real B inteiro C[5] m estrutura estrutura Y inteiro D 8: X E[3] 9: m estrutura 10: Y F
1: 2: 3: 4: 5: 6: 7:
verso de 10 de fevereiro de 2008 a

161

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS Pede-se o desenho da rea F, com todos os seus componentes a

Exerc cio 173 Projete a estrutura necessria para comportar todas as informaes a co dos alunos do UNICENP. Veja que cada aluno tem NOME (com tamanho mximo de 40 a caracteres), idade e cdigo de matr o cula. Os alunos se agrupam em turmas de no mximo 70 a alunos. Cada turno tem 4 turmas e cada curso tem 2 turnos. Finalmente, h no UNICENP a 28 cursos. Para a estrutura acima, responda
Quantos alunos cabem no total ? Supondo que alunos no preenchidos contm idade = 0, 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. turno) ? a Qual o algoritmo que imprime o nome de todos os alunos do curso de informtica a (curso=8)

Exerc cio 174 Suponha a estrutura necessria para conter um romance, sujeito as a seguintes limites: linhas de 60 caracteres; pginas de 43 linhas; cap a tulos de 20 pginas; a livros de 18 cap tulos.
Dena a estrutura em questo a Escreva o algoritmo que imprime as capitulares (primeiro caractere de cada cap tulo). Escreva o algoritmo que imprime o cap tulo 2 Escreva o algoritmo que imprime as pginas a mpares dos cap tulos pares.

Exerc cio 175 Suponha que para identicar uma origem ou um destino, h que se a ter 3 informaes: nome da cidade, sigla do estado a que pertence e pa Isto posto, co s. escreva a estrutura necessria para identicar uma viagem. Uma viagem composta pelas a e informaes: origem, destino, data da viagem, durao em dias. co ca Exerc cio Resolvido 23 Na realizao da ultima feira de moda no Parque Barigi, ca u
estiveram perto de 100.000 visitantes. Cada fam informou seu estado de origem e quantos lia componentes tinha. Tais dados se encontram em um arquivo com o formato: ESTADO, cadeia[2]; NUMVIS, inteiro. ESTADO a sigla com 2 caracteres. e Criar um algoritmo que leia tal arquivo, exclua os visitantes do estado do Paran, (sigla a PR), e totalize por estado de origem, em ordem alfabtica. Os dados terminam quando e for lido um estado igual a XX que no deve ser considerado para efeito de clculo. , a a tipo R = registro estado : caracter qtd : inteiro mregistro TAB [1:24] vetor de R reg : R tab[1].estado AC 8: tab[2].estado AL 9: tab[3].estado AM 10: tab[4].estado BA
1: 2: 3: 4: 5: 6: 7:

88-08, Pedro Kantek

162

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. 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:

tab[5].estado CE tab[6].estado DF tab[7].estado ES tab[8].estado GO tab[9].estado MA tab[10].estado MG tab[11].estado MS tab[12].estado MT tab[13].estado PA tab[14].estado PB tab[15].estado PE tab[16].estado PI tab[17].estado RJ tab[18].estado RN tab[19].estado RO tab[20].estado RS tab[21].estado SC tab[22].estado SE tab[23].estado SP leia (reg) enquanto (reg.estado = XX faa c se reg.estado = PR ento a I1 enquanto tab[I].estado = reg.estado faa c II+1 menquanto tab[i].qtd tab[i].qtd + reg.qtd mse leia (reg) menquanto escreva (tab)

Outra possibilidade se soluo seria no colocar os estados na tabela, e a medida que ca a eles fossem chegando, a tabela fosse sendo incrementada. Neste caso, se a sa tivesse da que ser ordenada este trabalho teria que ser feito a parte ao nal dos dados. A soluo ca caria: 1: tipo R = registro 2: estado : caracter 3: qtd : inteiro 4: mregistro 5: TAB [1:24] vetor de R 6: reg : R 7: tab ... {espaos e zeros} c 8: leia (reg); 9: enquanto (reg.estado = XX faa c 10: se reg.estado = PR ento a 11: I1 12: enquanto tab[I].estado = reg.estado TAB[I].ESTADO = faa c 13: II+1 14: menquanto 15: se TAB[I].ESTADO = ento a 16: TAB[I].ESTADO REG.ESTADO 17: mse
verso de 10 de fevereiro de 2008 a

163

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS


18: 19: 20: 21: 22:

tab[i].qtd tab[i].qtd + reg.qtd mse leia (reg) menquanto escreva (tab)

Exerc cio Resolvido 24 Uma companhia area tem 6 tipos de avies: 737-200, e o
737-300, 727, 707, A300 e Bandeirantes. Do cadastro de viagens realizadas no ultimo ano, obteve-se o seguinte arquivo: TIPO,cadeia[6]; PASSAG,inteiro; DIST,real, onde TIPO um campo de 6 posies com a identicao de tipo de avio, PASSAG a e co ca a e quantidade de pessoas transportadas e DIST a distncia do trecho percorrido. Cada vo e a que a Companhia realizou no ano tem um correspondente registro neste arquivo. Deve-se escrever um algoritmo que leia o arquivo e crie uma tabela de 6 ocorrne cias contendo as quantidades totais de passageiros e distncias por tipo de avio. O a a objetivo nal conhecer a produtividade de cada tipo de avio, dada pela razo: pase a a sageiros / distncia. O programa deve imprimir o nome do tipo de todos os avies, e a o ao lado sua produtividade. Os dados terminam quando for lido um tipo totalmente em branco. 1: tipo R = registro 2: aviao : caracter 3: passag : inteiro 4: distancia : real 5: mregistro 6: TAB [1..6] vetor de R 7: tipo R1 = registro 8: av : caracter 9: pa : inteiro 10: di : real 11: mregistro 12: REG : R1 13: inteiro: I; 14: real: prod; 15: leia (reg) 16: enquanto (av = ) faa c 17: I 1; 18: enquanto (I < 7) faa c 19: se aviao [I] = av ento a 20: abandone 21: mse 22: se aviao [I] = ento a 23: aviao [I] av; 24: passag [I] pa; 25: distancia [I] di; 26: I 7; 27: abandone 28: mse 29: menquanto 30: se I < 7 ento a
88-08, Pedro Kantek

164

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS


31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:

passag [I] passag [I] + pa; distancia [I] distancia[I] + di; mse leia(reg); menquanto I 1; enquanto I < 7 faa c prod passag [I] distancia [I] escreva ( Tipo , aviao [I], produtividade, prod); I I + 1; menquanto

Exerc cio Resolvido 25 Exemplo: multiplicao 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:

I0 J0 K0 A [1..3] [1..4] vetor de real B [1..4] [1..5] vetor de real R [1..3] [1..5] vetor de real A[1;1] 1 A[1;2] 2 A[1;3] 3 A[1;4] 4 A[2;1] 5 A[2;2] 6 A[2;3] 7 A[2;4] 8 A[3;1] 9 A[3;2] 10 A[3;3] 11 A[3;4] 12 B[1;1] 1 B[1;2] 2 B[1;3] 3 B[1;4] 4 B[1;5] 5 B[2;1] 6 B[2;2] 7 B[2;3] 8 B[2;4] 9 B[2;5] 10 B[3;1] 11 B[3;2] 12 B[3;3] 13 B[3;4] 14 B[3;5] 15 B[4;1] 16 B[4;2] 17 B[4;3] 18 B[4;4] 19 B[4;5] 20 para I de 1 ate 3 faa c 165
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS para J de 1 ate 5 faa c S0 para K de 1 ate 4 faa c S S + A[I;K] B[K;J] mpara R[I;J] S mpara 47: mpara 48: escreva R
40:

41: 42: 43: 44: 45: 46:

Exerc cio Resolvido 26 Exemplo: Desvio Padro Seja o desvio padro a a


= que calculado pelo seguinte algoritmo e algoritmo dp 2: I 0 3: V [1..10] vetor de real 0 4: M 0 5: para I de 1 ate 10 faa c 6: V[I] I vezes 2 7: mpara 8: para I de 1 ate 10 faa c 9: M M + V[I] 10: mpara 11: M M 7 12: R 0 13: para I de 1 ate 10 faa c 14: R R + (V [I] M )2 15: mpara 16: R 7 R 17: R R 18: escreva R
1:

(X X)2 n

9.2

Processamento de Textos

Um cap tulo important ssimo do processamento de dados se refere ao processamento de texto. Trata-se de transformar o computador em uma super mquina de escrever a capaz de realizar todas as tarefas triviais do manuseio de textos e tambm algumas e outras facilidades desejadas. A importncia deste assunto, em um curso de lgica de a o construo de algoritmos est em que para manusear texto, desenvolvem-se inmeras ca a u tcnicas muito uteis para a interpretao e manuseio de dados na forma alfabtica, que e ca e no necessariamente precisam ser textos. a Um texto, nesta acepo um conjunto indeterminado de caracteres. Pode ser uma ca e varivel cadeia (limitada a 255), ou um vetor de caracteres, neste caso, sem limite. a Alguns caracteres inclu dos no meio do texto podem format-lo de maneira a mudar seu a visualquando o imprimirmos. Um exemplo deste tipo de caracter so o RETORNO a DE CARROe o MUDANCA DE LINHA. Quando colocados juntos no meio de um texto, eles causam a mudana de linha e o retorno ao in da prxima linha. c cio o Os caracteres ASCII referentes: retorno de carro: CR = carriage return = Cdigo o 13 do ASCII LF = line feed = Cdigo 10 do ASCII o
88-08, Pedro Kantek

166

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS Em outros textos, cada linha tem no seu in cio, uma vari vel numrica que indica qual e o comprimento da linha, e neste caso no h necessidade de usarem-se delimitadores. a a

Cadeia e vetor de caracteres


Neste ponto, podemos ver com mais clareza, o conceito de cadeia de caracteres. Trata-se de um vetor de caracteres. Falando em termos rigorosos, a denio: ca caracter VET[30] equivale a uma cadeia VET[30] A explicao para a existncia desta particularizao do conceito de vetor, que o ca e ca e tipo primitivo (no caso, o caracter, que tem sempre comprimento igual a 1), muito e pouco adequado, pois praticamente todas as informaes alfanumricas exigem mais de co e um caracter para serem uteis. Entretanto, existem pelo menos trs diferenas entre um vetor de caracteres e uma e c cadeia. A cadeia est limitada a 255 caracteres de comprimento, e o vetor no tem esta a a limitao. ca Em pascal, a cadeia pode ser lida e gravada de uma vez, ao contr rio dos vetores. Entretanto, tanto a cadeia quanto o vetor podem ser percorridos atravs de e ndices. OBSERVACAO IMPORTANTE: Ao se fazer o ORD de um elemento indexado, a resposta ser a ordem do elemento indexado no universo considerado e NAO o a ndice do elemento dentro do vetor. Exemplo seja o vetor V ABCDEFGHI Se zermos ord(V[3]) a resposta ord(C) que 67, e no 3 como poderia parecer aos mais incautos. e e a

Exerc cio 176 Escreva um algoritmo que leia uma frase terminada por um ponto, com tamanho inferior a 80 caracteres, e um unico espao em branco separando cada palavra, e c escreva o nmero de palavras da frase. u DESAFIO: a quantidade de palavras femininas (i. : terminadas em A e ). Exerc cio 177 Denir algoritmo capaz de receber uma frase e converter as letras minsculas lidas em maisculas, imprimindo este resultado. u u Exemplo: Se for lida a frase Ivo viu a LARANJA a resposta ser IVO VIU A LARANJA , a . Exerc cio 178 Denir um algoritmo que leia uma frase de at 80 caracteres, alinhada e ` esquerda e determine e escreva: a
1. Qual o nmero da maior palavra da frase u 2. Quantos caracteres ela tem de comprimento. Exemplo: Se for lida a frase Maria comeu a melancia o algoritmo dever imprimir 4,8. , a

Exerc cio 179 Escrever um algoritmo para criptografar textos, usando o algoritmo da
Criptograa de Cezar para k=3. ,

Exerc cio 180 Justicao: Dada uma linha com um comprimento cl, e supondo uma ca
frase com comprimento cf, e supondo mais, que cl seja maior do que cf, surge o problema de estabelecer a frase na linha ALINHADA pela esquerda e pela direita. Chama-se a isto de justicao, e os bons datilgrafos fazem isto quase instintivamente. Por exemplo,. se ca o tivermos a frase IVO.VIU.A.UVA branco), que tem um cf de 13, para ser impressa em (. e uma linha de 20 (cl=20), alinhada a esquerda e a direita, como fazer isto ? Um poss ataque para o problema estabelecer: vel e nb = nmero de brancos (nb = cl - cf). No caso: 20 - 13 = 7 u np = nmero de palavras. No caso np = 4 u
verso de 10 de fevereiro de 2008 a

167

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS ne = numero de locais receptores de brancos. ne = pred (np). No caso ne=3 b1 = tamanho do primeiro preenchimento. b1 = nb div ne. No caso b1 = 7 div 3 = 2 b2 = tamanho do segundo preenchimento. b2 = succ(b1). No caso b2 = 3 n2 = quantidade de b2s. n2 = nb mod ne. No caso: n2 = 7 mod 3 = 1 n1 = quantidade de b1s. n1 = ne - n2. No caso: n1 = 3 - 1 = 2 Em resumo, para justicar IVO.VIU.A.UVA 20 posies, devemos inserir 1 (n2) bloco em co de 3 (b2) espaos, e 2 (n1) blocos de 2 (b1) espaos no texto. O local de insero ca a c c ca critrio do usurio, mas pode-se sugerir a seguinte colocao: (. signica espao em branco) e a ca c IVO...VIU....A...UVA.

Exerc cio 181 Imagine um algoritmo capaz de ler uma entrada formada por at 60 e caracteres, que correspondem a uma frase. Esta frase termina quando for encontrado um ponto. 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.

Exerc cio 182 Escrever um algoritmo que leia uma linha de caracteres (mximo de 60) a contendo uma frase (palavras separadas por branco). O algoritmo deve imprimir as palavras cujo comprimento for maior que 6 caracteres. Exerc cio 183 Dado um texto, sem nenhum caracter de controle, na forma de um vetor, imprimi-lo com tamanho de linha = 60, alinhado a esquerda. No quebrar palavras. a Exerc cio 184 Dado um texto, na forma de um vetor e formado por minsculas e u maisculas indistintamente, imprimi-lo todo em maisculas. u u Exerc cio 185 Dado um texto, na forma de um vetor e formado s por minsculas, o u imprimi-lo colocando cada primeira letra de todas as palavras em maisculos. u Exerc cio 186 Dado um texto, na forma de um vetor, calcular a quantidade de letras, brancos e palavras, imprimindo estes resultados ao nal. Exerc cio 187 Escrever um algoritmo para criptografar textos, usando o algoritmo da Criptograa de Cezar, para k=n, onde n deve ser lido e varivel embora xo no texto a e a criptografar. Exerc cio 188 Dado um texto, sem nenhum caracter de controle, na forma de um vetor, imprimi-lo com tamanho de linha varivel, informado no in do programa, alinhado a cio a esquerda. No quebrar palavras. a Exerc cio 189 Dado um texto, sem nenhum caracter de controle, na forma de um vetor, imprimi-lo com tamanho de linha varivel, informado no in do programa, alinhado a cio ` direita. No quebrar palavras. a a
88-08, Pedro Kantek

168

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS

Exerc cio 190 Suponha que todas as palavras terminadas em aso femininas e todas a as terminadas em oso masculinas. Dena um algoritmo que leia uma frase de no mximo a a 80 caracteres contendo palavras separadas por um branco, e com a frase terminando por um . O algoritmo deve: .
1. Contar quantas palavras existem 2. Quantas so masculinas a 3. Quantas so femininas a Imprimir estes resultados ao nal

Exerc cio 191 Imagine um algoritmo capaz de ler uma entrada formada por at 60 e caracteres, que correspondem a uma frase. Esta frase termina quando for encontrado um ponto. O algoritmo deve ser capaz de responder: a) Qual o tamanho da frase b) Quantas palavras existem na frase c) Quantas vezes a dupla maapareceu na frase.

Correspondncia de cadeias e
Este problema surge com alguma freqncia em diversos lugares na cincia da comue e putao. O caso mais comum o de pesquisar uma palavra dentro de um texto que ca e est sendo editado. Qualquer processador de texto faz isso. Em outra aplicao buscaa ca se comparar 2 cadeias de cidos nucleicos dentro de uma molcula de DNA. Aqui so a e a apenas 4 letras (ACTG) e largas seqncias so buscadas. ue a Eis a formalizao do problema: H uma cadeia C composta por 1..n caracteres. ca a H uma palavra a buscar, P composta por 1..m caracteres. Naturalmente n m. Os a caracteres de C e de P foram tirados de algum alfabeto nito . Assim, podemos ter = {0, 1}, ou = {A, C, T, G} ou o alfabeto ASCII ou similar. Diz-se que P ocorre em T com deslocamento s, se a partir da posio s + 1 de T e ca pelos prximos m caracteres, h uma corresponncia completa entre P e T. o a e O problema da correspondncia de caracteres busca encontrar todos os delocamentos e vlidos em T que correspondem a P. a H duas classes de algoritmos de busca aqui: o primeiro, o mais simples, chamado a e de fora bruta, no realiza nenhum pr-processamento nas cadeias c a e

Fora Bruta c
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:

Algoritmo Fora Bruta para busca em cadeias (padro P, texto T) c a i1 CONTADOR 0 enquanto (i < tamanho(T)-tamanho(P)) faa c aux 0; j 1 enquanto (j tamanho(P)) (T[aux + i] = P[j]) faa c CONTADOR++ aux++ j++ menquanto se j = tamanho(P) + 1 ento a escreva ocorrncia em ,i e 169
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS


13: 14: 15: 16: 17: 18: 19:

i i + tamanho(P) {pode ser +1. Depende da denio} ca seno a i++ CONTADOR++ mse menquanto m algoritmo

Este algoritmo claramente ruim, tem complexidade no pior caso de O(tamanho(P ) e tamanho(T )). Acompanhe no exemplo, a quantidade de testes que feita: e T=o galo o gato e a gata gaguejaram e P=gato QUANTIDADE DE TESTES = 38

Algoritmos ecientes
H toda uma fam de algoritmos que diminuem o tempo de processamento nesta a lia tarefa. Todos realizam algum tipo de pr-processamento sobre as cadeias T e/ou P. e Rabin-Karp A idia deste algoritmo converter a cadeia em nmeros (ou melhor dizendo, usar e e u e a interpretao numrica das cadeias) para efeito da busca. Dado que, caracteres em ca e computador so representados usando bits, sempre ser poss este procedimento sem a a vel perda de generalidade. O algoritmo comea calculando a representao decimal de P, o que ocupa p d c ca gitos. Depois, um vetor de mesmo comprimento de T calculado. A cada p d e gitos de P a sua representao decimal calculada e este valor guardado. ca e e O processo rpido. A cada deslocamento em T, basta excluir o d e a gito de mais alta ordem e acrescentar um novo d gito ` direita. a A diculdade neste caso quanto ao tamanho dos nmeros envolvidos, sobretudo se e u P grande. A maneira de contornar esta diculdade usar a aritmtica dos ponteiros e e e do relgio, com o mdulo q. Este valor usualmente escolhido de forma que 10q caiba o o e em uma palavra do computador de modo a poder fazer toda a aritmtica inteira. e Entretanto, esta escolha introduz a possibilidade de acertos esprios. Isto ocorre u quando houver a coincidncia de P mod q com T[i..j] mod q, sem que haja P = T[i..j]. e Entretanto, pela escolha judiciosa de q, pode-se garantir que haja poucos acertos esprios. Seja como for, a igualdade numrica no garante a localizao de P em T. u e a ca H que se fazer o testye expl a cito a seguir. A vantagem do algoritmo de Rabin-Karp e excluir a grande maioria de candidatos em uma busca linear simples. Autmatos de correspondncia o e O autmato nito uma mquina de estados composto por um conjunto nito de estao e a dos, um estado inicial, um alfabeto nito de entrada e uma funo Q em Q, chamada ca funao de transio. c ca Veja-se um exemplo, extra de CLR pg. 726 (verso brasileira) do a a Cada palavra P tem o seu prprio autmato de busca. Depois que o autmato foi o o o constru ele eciente: examina-se cada caractere de T uma unica vez. O problema do e que a construo do autmato pode ser demorada principalmente se grande. e ca o e Veja-se a seguir um autmato para pesquisar P=ababaca, extra da mesma obra, o da pg. 727. a
88-08, Pedro Kantek

170

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS

Algoritmo de Boyer-Moore
Este algoritmo, descrito na dcada de 70, 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 ocorrncias de caracteres e e Pr-compila uma tabela de ocorrncias de prexos no padro. e e a

Os algoritmos so: (referncia para todos CLR, ingls, pag 870) a e e 1: Algoritmo BOYER-MOORE (texto T, padrao P) 2: tabela1 CARACTERRUIM (padro P, alfabeto S) a 3: tabela2 SUFIXOBOM (padro P) a 4: i 0 5: enquanto (i tamanho(T) - tamanho(P)) faa c 6: j tamanho(P) 7: enquanto (j > 0) P[j] = T[i + j] faa c 8: j 9: menquanto 10: se (j = 0) ento a 11: escreva ocorrncia em ,i e 12: i i + tamanho(P) 13: seno a 14: i i + MAX ((j-tabela1[T[i+j]]), tabela2[j])
verso de 10 de fevereiro de 2008 a

171

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS


15: 16: 17: 1:

mse menquanto m algoritmo

Algoritmo CARACTERRUIM (padro P, alfabeto S) {alfabeto S contm todos os a e caracteres de T (no repetidos)} a 2: para cada caracter do alfabeto faa c 3: tabela1[indice do caracter] 0 4: mpara 5: para j de 1 at tamanho(P) faa e c 6: tabela1 [indice do caracter P[j]] j 7: mpara 8: retorne tabela1 9: m algoritmo Exemplo deste algoritmo: CARACTERRUIM (gato, o/galteujrm) 4 0 1 2 0 3 0 0 0 0 0, signicando salto de 4 para /leujrm, salto de 3 (4-1) para g, 2 (4-2) para a e 1 para t. Nenhum salto para o. A segunda tabela construida pela funo SUFIXOBOM, cujo algoritmo : e ca e 1: Algoritmo SUFIXOBOM (padro P) a 2: tabelaPI PREFIXO (P) 3: tabelaPILINHA PREFIXO (reverso P) 4: tabela2 tamanho(P) - tabelaPI [tamanho (P)] {repetir tam(P) vezes} 5: para LM de 1 at tamanho(P) faa e c 6: j tamanho(P) - tabelaPILINHA [LM] 7: se (tabela2 [j] > LM - tabelaPILINHA [LM]) ento a 8: tabela2[j] LM - tabelaPILINHA [LM] 9: mse 10: mpara 11: retorne tabela2 12: m algoritmo Funo PREFIXO (padro P) ca a tabelaPREFIXOS 0..0 (o mesmo tamanho de P) k0 para q de 2 at tamanho(P) faa e c enquanto (k > 0) (P[k+1] = P[q]) faa c k tabelaPREFIXOS [k] 7: menquanto 8: se P[k+1] = P[q] ento a 9: k++ 10: mse 11: tabelaPREFIXOS [q] k 12: mpara 13: retorne tabelaPREFIXOS 14: m algoritmo No exemplo do teste o galo o gato e a gata gaguejaram para o padro P=gato aqui, a o nmero de testes de apenas 10. Compare com os 38 da FORCA BRUTA. u e Vejamos um exemplo:
1: 2: 3: 4: 5: 6:

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, Pedro Kantek

P O R Q U E 6 6 6 6 6 1
verso de 10 de fevereiro de 2008 a

172

CAP ITULO 9. REGISTROS Resposta 7 (contra 41 da fora bruta) c Tabela 1: (Caracter ruim) Ao se encontrar um T[x] diferente de um P[y], em T1 se indica de quantas posicoes pode-se saltar em x (no T), ou seja, cada letra em T tem o indice da ultima ocorrencia desse caracter de T em P. Exemplo: Se T=o gato caiu e P=gato, temos a primeira comparacao entre T[4]=a e P[4]=o, como sao diferentes, a T1 manda pular o g a t c i u T1= 4 0 1 2 3 0 0 0 2 posicoes, (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. Por exemplo, se P=abeb, a T2 e: 4,4,2,1, ja que o sufixo b (na p.4) ja ocorreu anteriormente em P (na p.2). 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 =
verso de 10 de fevereiro de 2008 a

173

88-08, Pedro Kantek

CAP ITULO 9. 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, quando temos diversas resistncias ligadas em pare alelo, podemos substitu -las por uma unica resistncia chamada EQUIVALENTE, que tem e uma resistncia calculada pela frmula: e o
1 1 1 1 = + + ... + Req R1 R2 Rn Denir um algoritmo que leia um conjunto indeterminado de resistncias, suponha-as e ligadas em srie, calcule e escreva a resistncia equivalente do conjunto. Dados terminam e e quando for lido um valor igual a zero. Por exemplo, se forem lidos os valores de resistncias e iguais a 5, 10, 1 e zero, a resposta da resistncia equivalente ser 10/13. e a

Exerc cio 193 De acordo com o regulamento do servio postal americano, no pode c a
seguir pelo correio, nenhum pacote cujo comprimento (maior dimenso) somado ` amarrao a a ca seja superior a 72 polegadas. Amarrao o comprimento do menor barbante que possa toda ca e a volta ao pacote. Construa um algoritmo portugol que leia 3 dimenses e escreva PODE o se o pacote puder ser mandado via correio, ou NAO PODE no puder. As dimenses esto se a o a em cent metros, e deve ser usada a converso: 1 polegada = 2,5 cm. a

Exerc cio 194 Escreva uma funo capaz de receber dois nmeros (inteiros) e devolver ca u a mdia geomtrica entre eles (real). e e Exerc cio 195 Escreva uma funo capaz de receber um valor representativo de uma ca
distncia medida em polegadas, e retorne a mesma distncia medida em metros (1pol = a a 2,54cm)

Exerc cio 196 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o d gitos assim formulado: cdigo o XYZT-d clculo de Q Q = X + Y + Z + T a clculo de d d = Q mod 10 a Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca Exerc cio 197 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o d gitos assim formulado:
88-08, Pedro Kantek

174

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS cdigo o XYZT-d clculo de Q Q = 2X + 3Y + 4Z + 5T a clculo de d d = Q mod 7 a Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca

Exerc cio 198 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o d gitos assim formulado: cdigo o XYZT-d clculo de Q Q = 3X + 5Y + 7Z + 9T a clculo de w w = Q mod 11 a clculo de d Se w = 10, ento d = 0, seno d = w. a a a Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca Exerc cio 199 Suponha um algoritmo para clculo de um D.V. para cdigos de 4 a o
d gitos assim formulado: cdigo o XYZT-d clculo de q1 q1 = 2X + 3Z a clculo de q2 a q2 = 2Y + 3T clculo de Q a q = q1 + q2 clculo de d a d = q mod 10 Escreva um algoritmo para calcular o DV de uma srie de cdigos lidos, na forma de 4 e o inteiros positivos. Para cada cdigo lido, o algoritmo deve imprimi-lo junto com o DV. Os o dados terminam quando for lido um nmero negativo. O clculo do DV deve ser feito por u a uma funo. ca

Exerc cio 200 Denir algoritmo capaz de gerar um d gito vericador alfabtico, para e um cdigo formado por 7 d o gitos numricos. 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 nmero e a seguir impresso. O algoritmo deve ler u inmeros cdigos (na forma cadeia[7]) at ler a cadeia 0000000. u o e Exerc cio 201 Denir algoritmo que leia um conjunto indeterminado, mas menor do que 129, de triplas formadas por:
nmero do bimestre: inteiro de 1 a 4 u nmero do aluno: inteiro de 1 a 32 u Nota do aluno: real de 0,0 a 10,0.

Os dados terminam quando for lido um nmero de bimestre diferente daqueles valores vlidos. u a Aps ler o conjunto, o algoritmo deve imprimir: o 1. Qual a mdia anual de cada aluno (32 valores) e 2. Qual a mdia da turma em cada bimestre (4 valores) e 3. Qual o nmero do aluno e o nmero do bimestre em que ocorreu a MAIOR NOTA u u absoluta do ano.
verso de 10 de fevereiro de 2008 a

175

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS 4. Qual o bimestre em que ocorreram mais zeros 5. Qual o bimestre com menor amplitude de notas

Exerc cio 202 Denir um algoritmo que calcule o d gito vericador do nmero de u matr cula dos alunos das FACULDADES NEUTRAS. Tal nmero formado por 4 d u e gitos e o vericador assim calculado: e nmero: d1 d2 d3 d4 u res = (d1 * 2) + (d2 * 3) + (d3 * 5) + (d4 * 7) d gito = resto da diviso de res por 9. a O algoritmo deve ler uma srie de nmeros e para cada um, deve imprimir o nmero e o e u u correspondente d gito. A srie termina quando for lido o nmero 0. e u 9.2.1 Calendrios a

Em 1347 a peste negra devastou a Europa. Esta doena na verdade uma pneumonia que c e causa bubes (inchaos nas axilas e virilhas), sendo tambm chamada de peste bubnica. o c e o Os bubes eram caldos de cultura da bactria causadora, que tambm era transmitida o e e por pulgas dos ratos. O nome negra, vem do fato de que (supostamente) a carne das v timas enegrecia pouco antes da morte. A histria comea quando uma tribo Mogol o c de nome Kipchak resolve atacar um posto comercial genovs no Mar Negro. Usaram e para isso uma das primeiras armas biolgicas que a histria registra: cadveres humanos o o a contaminados com a doena eram atirados atravs de catapultas para dentro da cidade. 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 Gnova, abandonando o posto e comercial. Junto com eles, foi a doena. Durante os 4 anos seguintes a peste foi para a c Sic lia, Africa, Itlia, Espanha, Frana, Inglaterra e depois toda a Europa. Vinte e cinco a c milhes de pessoas, um quarto da populao europia, morreram. Dois sculos passariam o ca e e antes que a populao retornasse ao nmero de 100 milhes. A devastao da peste negra ca u o ca encerrou um ciclo na histria da humanidade. Levantes sociais e pol o ticos espoucaram, a mo de obra escasseou, o campo foi abandonado, os alimentos rarearam. At aqui, o a e universo era governado por regras estabelecidas por duas autoridades: Aristteles (384o 322 aC) e o eg pcio Cludio Ptolomeu (100-170 dC). No milnio anterior, a Igreja havia a e mesclado essas regras ` sua viso de mundo, resultando um bloco homogneo: Deus a a e havia criado a Terra no centro do Universo. Estrelas e planetas giravam em rbitas o circulares em volta da terra. Oito esferas concntricas feitas de material imutvel e e a eterno continham a Lua, o Sol, Marte, Mercrio, Jpiter, Vnus e Saturno. A ultima u u e esfera continha as estrelas. Apenas na terra a matria se decompunha e morria. Nas e esferas tudo era eterno. Veja-se o reexo disso nos nomes dos dias de semana, nos principais idiomas ocidentais: Corpo Celeste Sol Lua Marte Mercrio u Jpiter u Vnus e Saturno Ingls e Sunday Monday Tuesday Wednesday Thursday Friday Saturday Francs e dimanche lundi mardi mercredi jeudi vendredi samedi Italiano domenica lunedi martedi mercoledi giovedi venerdi sabato Espanhol domingo lunes martes mircoles e jueves viernes sbado a

A reao ` peste foi um novo cenrio que buscou enterrar e esquecer aquele o mais ca a a rpido poss a vel: a renascena. A Itlia, pela localizao central iniciou o movimento do c a ca comrcio entre oriente e ocidente. Nasceram aqui os primeiros sistemas administrativos, e o conhecimento nanceiro e os bancos. A cincia (a matemtica) comeou a ser usada: e a c
88-08, Pedro Kantek

176

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS na arquitetura, no comrcio, na cartograa. Sabemos hoje que a Terra demora 365 e dias, 5 horas, 48 minutos e 46 segundos para uma volta completa ao redor do sol. Eg pcios haviam estimado este valor em 365,25 dias (ou seja 365 dias e 6 horas. Ficou uma diferena de 11 minutos e 14 segundos). Com a adoo do calendrio eg c ca a pcio por Jlio Czar no sculo I dC, esta disparidade foi se acumulando ano aps ano, afastando u e e o as datas do calendrio das estaes. Em meados do sculo XV ja havia dez dias de a co e atraso. Em 1475 o papa Sisto IV pedira um estudo para determinar a causa do erro. No houve quem conseguisse compatibilizar Aristteles e Ptolomeu com o calendrio. a o a Podiam garantir estabilidade pol tica, mas estavam cada vez mais incapazes de calcular a data da Pscoa corretamente. a Coprnico (1473-1543) comeou a desenvolver em 1506 um sistema astronmico e c o baseado em suas prprias observaes e clculos. Na tentativa de tirar a Terra do centro o co a do universo e colocar a o Sol, a diculdade era explicar como as coisas no ca a amem direo ao sol. Achava-se na poca, que a matria era naturalmente atra para o cenca e e da tro do universo (embaixo da terra). Quando recrutado pelo secretrio do papa, em 1514 a para resolver o problema do calendrio, Coprnico viu-se num dilema: ou rearmava a a e teoria que a vaidade, o medo e a B blia haviam montado (estamos no centro do universo) e no resolvia o problema, ou chutava o pau da barraca para propor um novo calendrio. a a Ele, que bobo no era, recusou o convite, embora continuando a estudar o problema a em segredo. Convencido pela correo de seus clculos e encorajado por amigos, esboou ca a c um rascunho de suas idias em 1530. Este escrito provocou reaes mistas. Finalmente, e co em 1543, autorizou a publicao de De Revolutionibus Orbium Coelestium, comumenteca mente conhecido como As Revolues. Coprnico recebeu o primeiro exemplar em 24 co e de maio de 1543 e morreu poucas horas depois. O prximo personagem desta histria Galileu Galilei. Pulamos Giordano Bruno, o o e queimado na fogueira no Campo di Fiori em 17 de fevereiro de 1600. Galileu teria deixado cair duas bolas de pesos diferentes da Torre de Pisa para provar que ambas chegariam juntas, contrariando Aristteles que armara chegar a mais pesada antes. o H dvidas se isso de fato ocorreu. Mais modernamente supe-se que tenha sido uma a u o experincia intelectual apenas. O argumento intelectual notvel1 Este o melhor jeito e e a e de fazer f sica, ` la Einstein... a Galileu freqentou diversas universidades na Itlia, sempre conitando com os demais u a professores. Escreveu inmeros livros, inventou o telescpio 2 Ao usar os telescpios, u o o viu quatro satlites orbitando Jpiter e os anis de Saturno e relatou isso no livro Sidereus e u e Nuncius(O Mensageiro Celeste). Escreveu de leve, ainda sem adotar completamente o modelo copernicano. A Igreja j comeou a enviar mensagens de que no concordava a c a com as idias desse livro. Em 21 de dezembro de 1614, o padre Toms Caccini, em e a Florena criticou Galileu aformando que se Deus parou o sol a pedido de Josu para que c e os israelitas derrotassem os amoritas, como o sol poderia ser o centro do universo ? O padre foi mais longe: acusou Galileu, a matemtica e todos os matemticos de hereges a a pol ticos e religiosos. A defesa de Galileu perfeita: e No me sinto na obrigao de acreditar que o mesmo Deus que nos dotou a ca de sentidos, razo e intelecto, tencionava descartar o uso destes e por algum a outro meio nos dar o conhecimento que com eles podemos obter [...] A
1 Suponha jogar as 2 bolas e suponha que Aristteles estava certo: a mais pesada chega antes. Agora o suponha as mesmas duas bolas porm ligadas por o. Por um lado pode-se argumentar que a mais leve e segura a mais pesada e esta demora mais a chegar. Por outro lado, pode-se supor que o o transforma as duas massas em uma s, que passa a ser mais pesada que a bola anterior. O resultado que agora o e as bolas chegam antes do que chegavam. Para que ambos os racioc nios estejam certos e esto, a unica a possibilidade elas chegarem juntas. e 2 Ele assim considerado pois construiu os maiores telescpios em uso na Europa, ultrapassando seus e o modelos anteriores por diversas vezes.

verso de 10 de fevereiro de 2008 a

177

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS inteno do Esp ca rito Santo ensinar-nos como se vai para o cu e no como e e a o cu funciona. e Em 5 de maro de 1616 o cardeal Belarmino da Santa Inquisio decretou que o c ca sistema copernicano era falso e errneo armando que Deus xou a Terra em seus o alicerces para jamais ser movida. Galileu nunca se conformou com este decreto, buscando incessantemente a sua revogao. Em 1624, obteve do papa uma autorizao para ca ca escrever seu livro mais famoso Dilogo sobre os dois mximos sistemas do mundo, que a a foi publicado em 1632 e recebido com louvores por acadmicos de toda a Europa. Pouco e depois, foi acusado pela inquisio de herege. No pode ver as acusaes ou as provas. ca a co Ficou no dilema: ou se retratava ou morria como Giordano Bruno. Em deciso que a alguns criticaram como prejudicial a cincia, ele resolveu pela vida. Em 22 de junho de e 1633, fez uma longa retratao. Diz a lenda que depois de terminada a leitura, ao se ca erguer da posio de joelhos onde estava,Galileu teria dito E pur, si muove . S em ca o 1757 a Igreja retirou a proibio sobre a obra. Em 1992, o papa Joo Paulo II reconheceu ca a formalmente o erro da Igreja. Depois vem Isaac Newton, um dos 5 maiores cientistas que a Humanidade produziu (decomposio da luz, clculo diferencial e integral, gravitao entre outros). Ao escrever ca a ca sobre a lei universal da gravitao, ele acabou de consolidar o modelo copernicano, que ca j havia sido engordado com as leis de Kepler sobre o deslocamento dos planetas. a

Calendrios Juliano e Ptolomeico a


A encrenca do calendrio est em que ele lida com 3 ciclos distintos: solar: Alterna a a as estaes e depende do sol. Mede os anos; lunar: Alterna as luas (cheia, nova ...) co e depende da lua. Mede os meses; semanal: Mede os dias da semana e tem origem religiosa. Indica o sabath. A diculdade e que estes 3 ciclos no so mltiplos entre si. a a u Em 45 aC, Jlio Cezar criou o calendrio juliano, baseado no ptolomeico. Neste u a o ano tinha 365d e um quarto de dia. Os meses foram batizados de Janius (portas e janelas), Februas (festa da puricao), Mars (guerra), Apripe (abertura das ores), ca Maiores, Juniores, Quint Sext Sept Oct Novit e Decit lio, lio, lio, lio, lio lio. Logo depois, o prprio JC mudou o nome do Quint para Julius. Seu sucessor, Cezar Augusto no o lio a deixou por menos, mudando o prximo para Augustus. o Em 1582, o papa Gergrio mudou o calendrio, que com a reforma passou a ser o a conhecido como calendrio gregoriano. Sumiram 10 dias em maro desse ano. Adotoua c se a regra dos anos bissextos. A adoo deste calendrio demorou. Na Inglaterra ele ca a s foi aceito em 1752. Em 1793, a Revoluo Francesa mudou novamente o calendrio. o ca a Nele h 12 meses de 30 dias e 5 feriados nacionais. Os meses: germinal, oral, thermidor, a fructidor, brumaire. Napoleo o aboliu em 1805. a

Novas propostas
Em 1954, a ONU props um novo calendrio. Ele tem 52 semanas de 7 dias = 364 dias. o a O dia 365 no nal do ano e no tem nmero nem nome. Os quadrimestres sempre tem e a u 31 + 30 + 30 + 30 dias. Outra proposta foi o do calendrio xo, com 13 meses de 28 dias cada um. Aqui, as a segundas sempre sero dias 1, 8, 15 e 22. Falta 1 dia, que ca no nal do ano. O dia do a bissexto aps 28 de junho. O novo ms o SOL que ca entre junho e julho. e o e e Finalmente, h uma nova proposta de estabelecer um tempo mundial, (desvinculado a do sol), orientado a negcios e com divises decimais. o o
88-08, Pedro Kantek

178

verso de 10 de fevereiro de 2008 a

CAP ITULO 9. REGISTROS

Regra do bissexto
Sejam R4 resto da diviso do ano por 4; R100 resto da diviso do ano por 100 e a a R400 resto da diviso do ano por 400. a SE R4=0 ((R100 = 0) (R400 = 0)) o ano bissexto seno no . e a a e

Exerc cio 203 Imagine um cilindro cujo dimetro da base tem o mesmo comprimento a
de sua altura. Dentro dele est inscrita uma esfera, cujo raio o mesmo raio da base a e do cilindro. Escrever algoritmo que leia uma srie de raios, e para cada um deles, calcule e e escreva a diferena de volume entre o cilindro e a esfera. Os raios so lidos em cm e a c a diferena deve ser expressa em cm3. O ultimo raio zero, e indica m. Denir duas funes: c e co uma para o clculo do volume da esfera, e outra para o clculo do volume do cilindro. a a Vesf era = 4 R3 3

Vcilindro = R2 h

Exerc cio 204 Denir algoritmo que calcule e escreva a soma dos primeiros 50 nmeros u pares acima de 1000 (1000 inclu do), com os 60 primeiros nmeros mpares acima de 500 u (501 includo). Exerc cio 205 Denir algoritmo que determine se uma seqncia contendo 1000 eleue
mentos, ESTA ou NAO ESTA classicado em ordem descendente. Ao nal do algoritmo, este deve imprimir as mensagens EM ORDEM FORA DE ORDEM ou conforme o caso.

Algoritmo Balance Line


Este algoritmo teve importncia muito maior h 30 anos, quando os recursos de hardware a a no eram nem de longe to abundantes quanto hoje. Em 1974, existiam na cidade de a a Curitiba 7 computadores: o da Universidade Federal do Paran (um IBM 1130 com a 8Kb de memria), e os computadores da Celepar, Copel, Bamerindus, Banestado, Cr o Almeida e URBS, sendo que cada uma destas empresas tinha 1 (um) computador. Como fazer para atualizar 80.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 tambm que no existiam sistemas on-line, nem terminais remotos, e a muito menos micros. A soluo para este problema est no algoritmo que ser estudado nesta aula, ca a a chamado Balance Line. Ele permite que grandes volumes de dados para tratamento atuarial (incluso, alterao e excluso) sejam serializados e processados sem interferna ca a e cia do operador. Importncia atual Este algoritmo ainda muito importante, mesmo com abundncia a e a de hardware. Ele, na verdade, permite economizar tambm tempo de operador, e este e sempre deve ser economizado (principalmente quando o operador somos ns. ;-). o Imagine-se um site onde pessoas devem fazer atualizaes. Uma coisa entrar 1 vez co e por semana e fazer uma pequena atualizao. Outra precisar entrar de uma s vez e ca e o alterar digamos 400 registros. Para o primeiro caso, a estratgia atualmente usada (uma transao atuarial que sob e ca o comando do operador altera o dado) est perfeita. Para a segunda, no. Poucos tem a a pacincia para refazer esta mesma transao 400 vezes. e ca
verso de 10 de fevereiro de 2008 a

179

88-08, Pedro Kantek

CAP ITULO 9. REGISTROS Neste segundo caso, ser muito bom se o dono do sistema disponibilizar um balance a line. Neste caso, o operador preparar uma massa de atualizao (possivelmente usando a ca o notepad ou similar), far as vericaes e correes, e quando a massa estiver OK, a co co submete-la-, eventualmente via upload para atualizao serializada. Ao invs de 400 a ca e transaes, o operador ter que se preocupar com apenas 1. O resto ca por conta do co a algoritmo Balance Line.

88-08, Pedro Kantek

180

verso de 10 de fevereiro de 2008 a

Cap tulo 10

Exerc cios prticos: 003 -Raiz a quadrada


10.1 Exemplo de um algoritmo: raiz quadrada

Suponha que sua vida dependa de obter a raiz quadrada de um determinado nmero, u por exemplo 54.768,87. O que voc faria ? e 1. A soluo mais bvia seria buscar uma calculadora capaz de extrair uma raiz ca o quadrada. Por azar de nossa simulao, no h calculadoras, computadores, celuca a a lar, etc. Nenhuma traquitana dispon vel. 2. Considerando que a operao de multiplicao razoavelmente conhecida, outra ca ca e possibilidade, seria avanar na base da tentativa-e-erro, usando o seguinte algoc ritmo. (a) Chute um nmero u (b) Multiplique-o por ele mesmo (c) Se o resultado for igual ao nmero procurado, parabns! u e (d) Se for menor, aumente o chute (e) Se for maior, diminua o chute (f) Volte ` etapa da multiplicao a ca 3. Outra possibilidade, esta trazida pela teoria dos logaritmos (no confunda logara itmo com algoritmo) achar o logaritmo do nmero dado, dividir este e u valor por 2 e depois achar o antilogaritmo. Por exemplo, se no soubermos que 64 = 8, a podemos fazer o log2 64 = 6. Dividindo 6 2 = 3. E 23 = 8. O problema est que a poucas pessoas tem uma tboa de logaritmos na cabea, ou mesmo conhecem as a c propriedades dos logaritmos. 4. A resposta exata vem atravs do algoritmo de extrao de raiz quadrada, posto ` e ca a nossa disposio pela matemtica. ca a Algoritmo para raiz quadrada Por denio, dado y = x, onde x no negativo, deve-se achar o real y, tal que ca e a y 2 = x. Embora o nmero localizado seja positivo, deve-se lembrar que em tese ele u 181

CAP ITULO 10. EXERC ICIOS PRATICOS: 003 -RAIZ QUADRADA tambm pode ser negativo, mas com o mesmo valor absoluto. Se no for poss obter e a vel a igualdade (y 2 = x), espera-se que y 2 seja menor que x e to prximo quanto poss a o vel. As etapas do algoritmo so: a 1. Pegue uma folha de papel e escreva uma cruz grande, divindo a rea de trabalho a em 4 quadrantes. 2. Escreva o nmero do qual se quer achar a raiz quadrada (a quem chamaremos u ), no quadrante superior esquerdo. Ao nal do processo, a raiz vai aparecer no quadrante superior direito. 3. Separe o nmero em grupos de 2 d u gitos, a partir de sua v rgula decimal, ` a direita e ` esquerda, completando com zeros no signicativos quando necessrio. a a a Feito isso, nomearemos os grupos (de 2 d gitos) da esquerda para a direita como G1 , G2 , ... Gn . 4. Relembremos a tabela de quadrados perfeitos de 1 a 100. 1 2 3 4 5 6 7 8 9 1 4 9 16 25 36 49 64 81 Esta tabela importante pois todos os grupos acima formados so menores do que e a 100. 5. Busque o nmero que elevado ao quadrado gere um nmero menor ou igual do que u u G1. Coloque este nmero no quadrante superior direito. Chame-se este nmero u u G1.G2.G3. ... A1 como A1 . Fica 6. Eleve A1 ao quadrado e escreva o resultado no quadrante inferior esquerdo, embaixo de G1 . Chamemos este nmero A2 de P1 . u 1 7. Faa G1 menos P1 e escreva o resultado da subtrao embaixo de P1 (no quadrante c ca G1.G2.G3. ... A P1 inferior esquerdo). Chamemos este nmero de T1 . Fica u T1 8. (aaa) Baixe o prximo grupo (neste caso o G2 , colocando-o ao lado de T1 , junte-os o e obtenha um novo nmero (T1 G2 ). u 9. Dobre o nmero A1 (multiplicando-o por 2) e escreva-o no quadrante inferior u direito, embaixo de A1 . Chame-se este nmero de D1 . u 10. (***) Divida (diviso inteira) T1 G2 por D1 10. Este resultado deve ser escrito a em 3 lugares:
Ao lado de A1 , j que ele o prximo nmero da raiz a e o u Ao lado de D1 . Imediatamente depois, escreva um sinal de (vezes) Ao lado do sinal de (vezes) escrito acima

11. Calcule a multiplicao posta acima. Se o resultado for menor ou igual a T1 G2 , ca prossiga. Se for maior, OPS!, Volte ` etapa (***) e repita o processo com um a resultado uma unidade menor. 12. Escreve-se o resultado da multiplicao embaixo de T1 G2 e efetua-se a subtrao. ca ca 13. Volte a (aaa)
88-08, Pedro Kantek

182

verso de 10 de fevereiro de 2008 a

CAP ITULO 10. EXERC ICIOS PRATICOS: 003 -RAIZ QUADRADA Exemplo Seja calcular 14796, 5 121.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 --------------

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

Faamos a raiz quadrada de 1267.074. c raizq 1267.074 12 67 07 40 00 00 ============ -----------

=========== rq( ) v = ----------x = ops / = x = -------------x = ops / = x = -------------x = / = x = -------------x = 183


88-08, Pedro Kantek

-------------

----------------

-------------------

---------------------verso de 10 de fevereiro de 2008 a

CAP ITULO 10. EXERC ICIOS PRATICOS: 003 -RAIZ QUADRADA / = x = --------------

10.2

Exerc cio 1

Simule a execuo do algoritmo acima da raiz quadrada para os valores abaixo e em ca cada um, descubra o quinto nmero que subtra no algoritmo. Por exemplo, no u e do exemplo dado acima, o quinto nmero seria 97296 e no que zemos junto seria 355925. u 24681 52543 26008 Nos 3 casos, ache o QUINTO NUMERO QUE E SUBTRA IDO na parte esquerda da tabela acima. 1 2 3

10.3

Exerc cio 2

Simule a execuo do algoritmo acima da raiz quadrada para os valores abaixo e em ca cada um, descubra o quinto nmero que subtra no algoritmo. Por exemplo, no u e do exemplo dado acima, o quinto nmero seria 97296 e no que zemos junto seria 355925. u 44431 28819 37226 Nos 3 casos, ache o QUINTO NUMERO QUE E SUBTRA IDO na parte esquerda da tabela acima. 1 2 3

10.4

Exerc cio 3

Simule a execuo do algoritmo acima da raiz quadrada para os valores abaixo e em ca cada um, descubra o quinto nmero que subtra no algoritmo. Por exemplo, no u e do exemplo dado acima, o quinto nmero seria 97296 e no que zemos junto seria 355925. u 38692 26660 55802 Nos 3 casos, ache o QUINTO NUMERO QUE E SUBTRA IDO na parte esquerda da tabela acima. 1 2 3

88-08, Pedro Kantek

184

verso de 10 de fevereiro de 2008 a

CAP ITULO 10. EXERC ICIOS PRATICOS: 003 -RAIZ QUADRADA

10.5

Exerc cio 4

Simule a execuo do algoritmo acima da raiz quadrada para os valores abaixo e em ca cada um, descubra o quinto nmero que subtra no algoritmo. Por exemplo, no u e do exemplo dado acima, o quinto nmero seria 97296 e no que zemos junto seria 355925. u 46951 41068 14107 Nos 3 casos, ache o QUINTO NUMERO QUE E SUBTRA IDO na parte esquerda da tabela acima. 1 2 3

10.6
1 2 3 4

Respostas
0 337184 0 346624 91684 203676 228529 202625 193476 154336 94484 166229

verso de 10 de fevereiro de 2008 a

185

88-08, Pedro Kantek

CAP ITULO 10. EXERC ICIOS PRATICOS: 003 -RAIZ QUADRADA

88-08, Pedro Kantek

186

verso de 10 de fevereiro de 2008 a

Cap tulo 11

Exerc cios Prticos: a 004-Introduo ca


11.1 Algoritmos

Um algoritmo um mtodo nito, escrito em um vocabulrio simblico xo, e e a o regido por instrues precisas, que se movem em passos discretos, cuja execo cuo no requer insight, esperteza, intuio, inteligncia, ou clareza e lucidez ca a ca e e que mais cedo ou mais tarde chega a um m. (David Berlinski) O algoritmo o que est por trs de todos os programas de computadores. Fazendo e a a

uma analogia com a Rose (a empregada robot da fam Jetson). lia Quando ela apresenta uma bela torta de mas, a torta o produto nal, a Rose o computador ca e e e a receita da torta o algoritmo. e Algoritmos so bem antigos na histria do mundo. Provavelmente o mais antigo que a o conhecido devido a Euclides. Para poder observ-lo, vamos relembrar uma operao e e a ca da aritmtica bsica. Trata-se da diviso inteira. Quando os nmeros inteiros A e B e a a u so divididos em diviso inteira, dois resultados aparecem: o quociente e o resto. a a Por exemplo, na diviso inteira 10 7, o quociente (resultado) 1, enquanto o resto a e 3. e Nos nossos algoritmos, o quociente da diviso inteira vai ser representado pela palavra a div, j que o s a mbolo e mesmo a barra simples / caro reservados para a diviso real. a a Portanto poderemos armar que 10 div 7 = 1 Da mesma maneira, o resto da diviso inteira, ser representado pela palavra mod, a a e aqui podemos armar que 10 mod 7 = 3 . Para treinar Procure calcular e responder: 1. 10 div 2 = . 187

CAP ITULO 11. EXERC ICIOS PRATICOS: 004-INTRODUCAO 2. 10 mod 2 = 3. 100 div 33 = 4. 100 mod 33 = 5. 8 div 2 = 6. 8 mod 2 = 7. 45 div 11 = 8. 45 mod 11 = 9. 2 div 13 = 10. 2 mod 13 = . . . . . . . . .

11.1.1

Mximo Divisor Comum a

Dene-se o mximo divisor comum entre dois nmeros inteiros A e B como sendo o a u maior nmero inteiro que divide simultaneamente tanto A como B sem deixar resto. u Por exemplo, se quisermos achar o MDC entre 10 e 14, teremos que achar os divisores de 10 (que so: 1, 2, 5 e 10) e de 14 (que so 1, 2, 7, 14) e localizar o maior nmero que a a u comum `s duas listas, no caso 2. Assim, 2 o MDC entre 10 e 14. e a e Para treinar Informe qual o MDC entre 1. M DC(15, 18) = 2. M DC(20, 40) = 3. M DC(17, 31) = 4. M DC(2, 11) = . . . .

Do exerc cio anterior percebeu-se que quando um dos nmeros primo, o MDC u e e sempre 1. Isto decorre da denio dos nmeros primos: Um nmero inteiro primo, ca u u e quando seus unicos divisores inteiros so a unidade e ele prprio. a o

11.1.2

Algoritmo do Mximo Divisor Comum a

Este algoritmo sempre chamado com dois inteiros. Note que o primeiro nmero deve e u ser maior ou igual do que o segundo. Se esta condio no estiver satisfeita, os nmeros ca a u devem ser INVERTIDOS antes de serem entregues ao algoritmo. Este algoritmo recursivo devido a Euclides e 1: inteiro funo MDC(inteiro a, b) {obrigatoriamente: a b} ca 2: se b = 0 ento a 3: devolva a 4: \\ esta outra maneira de identicar comentrios e a 5: seno a 6: devolva MDC(b, (a mod b)) 7: mse 8: m {funo} ca Suponha que far-se- a chamada ao algoritmo acima, como segue: a
88-08, Pedro Kantek

188

verso de 10 de fevereiro de 2008 a

CAP ITULO 11. EXERC ICIOS PRATICOS: 004-INTRODUCAO MDC(1200, 1119) O que aconteceria ? Chamando com 1200 1119, Chamando com 1119 81, Chamando com 81 66, Chamando com 66 15, Chamando com 15 6, Chamando com 6 3 e Chamando com 3 0 Resposta 3 e

11.1.3

Algoritmos no dia a dia

Na nossa vida, tambm usamos muitos algoritmos. Aqui eles tm uma caracter e e stica to a restrita como os algoritmos computacionais, porque supostamente eles sero seguidos a por seres inteligentes. Mas, vale a experincia: acompanhe o algoritmo que um de ns e o poderia usar para ir do Unicenp at a Praa Tiradentes e c 1: Algoritmo para ir do Unicenp at a Praa Tiradentes e c 2: se tenho dinheiro ? ento a 3: se tenho pressa ? ento a 4: chamo um taxi 5: mando ele ir para a Praa c 6: seno a 7: procuro uma carona OU 8: vou para o ponto do nibus o 9: ao desembarcar, pergunto qual a direo da Praa ca c 10: sigo andando at chegar nela e 11: seno a 12: saio do Unicenp pela JK, pegando ` direita a 13: pego a BR277 ` direita, sigo at a Pe Agostinho a e 14: pego a Pe Agostinho ` esquerda e sigo at a Al. Cabral a e 15: viro ` direita at a Carlos de Carvalho a e 16: viro ` esquerda e sigo at a Praa Tirandentes a e c 17: mse 18: mse

11.1.4

Exerc cio 1

Chame o algoritmo mdc com os valores 1987 1669

Responda no quadro prprio, qual o MDC pedido o

11.1.5

Exerc cio 2

Chame o algoritmo mdc com os valores 1858 1376

Responda no quadro prprio, qual o MDC pedido o

verso de 10 de fevereiro de 2008 a

189

88-08, Pedro Kantek

CAP ITULO 11. EXERC ICIOS PRATICOS: 004-INTRODUCAO

11.1.6

Exerc cio 3
1224

Chame o algoritmo mdc com os valores 1370 Responda no quadro prprio, qual o MDC pedido o

11.1.7

Exerc cio 4
1037

Chame o algoritmo mdc com os valores 1939 Responda no quadro prprio, qual o MDC pedido o

11.1.8

Exerc cio 5
1434

Chame o algoritmo mdc com os valores 1659 Responda no quadro prprio, qual o MDC pedido o

11.1.9

Exerc cio 6
1471

Chame o algoritmo mdc com os valores 1777 Responda no quadro prprio, qual o MDC pedido o

11.1.10
1808

Exerc cio 7
1104

Chame o algoritmo mdc com os valores Responda no quadro prprio, qual o MDC pedido o

11.1.11
1380

Exerc cio 8
1234

Chame o algoritmo mdc com os valores Responda no quadro prprio, qual o MDC pedido o

88-08, Pedro Kantek

190

verso de 10 de fevereiro de 2008 a

CAP ITULO 11. EXERC ICIOS PRATICOS: 004-INTRODUCAO

11.1.12
1876

Exerc cio 9
1721

Chame o algoritmo mdc com os valores

Responda no quadro prprio, qual o MDC pedido o

11.1.13
1724

Exerc cio 10
1707

Chame o algoritmo mdc com os valores

Responda no quadro prprio, qual o MDC pedido o

11.1.14
1 2 3 4 5 6 7 8 9 10 1 2 2 1 3 1 16 2 1 1

Respostas

verso de 10 de fevereiro de 2008 a

191

88-08, Pedro Kantek

CAP ITULO 11. EXERC ICIOS PRATICOS: 004-INTRODUCAO

88-08, Pedro Kantek

192

verso de 10 de fevereiro de 2008 a

Cap tulo 12

Exerc cio prtico: 006-Jogo da a Vida


12.1 O jogo da vida

O Jogo da vida foi desenvolvido pelo matemtico britnico John Horton Conway em a a 1970. Comeou com uma brincadeira mas depois virou coisa sria. c e O jogo foi criado de modo a reproduzir, atravs de regras simples, as alteraes e e co mudanas em grupos de seres vivos, tendo aplicaes em diversas reas da cincia. c co a e As regras denidas so aplicadas a cada nova gerao; assim, a partir de uma a ca imagem em um tabuleiro bi-dimensional denida pelo jogador, percebem-se mudanas c muitas vezes inesperadas e belas a cada nova gerao, variando de padres xos a catica o o cos. Origem Um dos problemas matemticos mais famosos dos anos 40 era o de achar a uma mquina que fosse capaz de construir cpias de si mesma, que teve uma soluo a o ca baseada em um autmato celular extremamente engenhoso e complicado inventado pelo o renomado matemtico John von Neumann. Conway inventou o Jogo da Vida (ou Game a of Life) ao utilizar suas descobertas anteriores relacionadas com o problema de encontrar um grupo simtrico de esferas em 24 dimenses, proposto por John Leech para simplicar e o a soluo de von Neumann. ca O jogo fez sua primeira apario na edio de Outubro de 1970 da Scientic America ca can, na coluna de jogos matemticos de Martin Gardner. De um ponto de vista terico, a o ele interessante, pois tem o poder de uma mquina de Turing universal: tudo pode ser e a computado atravs de algoritmos no Jogo da Vida de Conway. Tambm era dito desde e e 1970 que foi destinado mais tempo de computao ao Jogo da Vida do que a qualquer ca outra atividade. Desde sua publicao, ele tem atra muito interesse devido aos caminhos surpreenca do dentes que pode tomar. Life um exemplo de auto-organizao. Ele interessante para e ca e bilogos, matemticos, economistas, lsofos e outros a observar o modo como imagens o a o complexas podem surgir de implementaes de regras muito simples. co O Jogo da Vida tem um nmero de imagens reconhecidas que emergem de posies u co iniciais particulares. Antes da publicao, muitas imagens interessantes j haviam sido ca a descobertas, incluindo o sempre envolvente R-pentomin, o auto propulsionado glider, o e vrias guns(armas) que geravam um uxo sem m de novas imagens, todas aumena tando o interesse no jogo. Sua popularidade foi ajudada pelo fato de ele ter vindo justo no momento em que uma nova gerao de minicomputadores de baixo custo estavam ca 193

CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA sendo disponibilizados no mercado, signicando que o jogo poderia ser rodado por horas nessa mquinas que no eram utilizadas de noite. Isto escondeu a popularidade posterior a a dos fractais gerados por computador. Para muitos accionados, Life era simplesmente um desao de programao, um mtodo divertido de gastar os ciclos da CPU. Para ca e alguns, no entanto, Life tinha conotaes mais loscas. Ele desenvolveu um culto co o atravs dos anos 70 e no meio dos 80; os desenvolvimentos atuais foram to longe a e a ponto de criar emulaes tericas de sistemas de computadores com as regras de um co o tabuleiro de Life. Regras do Jogo da Vida As regras so simples e elegantes: a
Qualquer clula viva com menos de dois vizinhos vivos morre de solido. e a Qualquer clula viva com mais de trs vizinhos vivos morre de superpopulao. e e ca Qualquer clula com exatamente trs vizinhos vivos se torna uma clula viva. e e e Qualquer clula com dois vizinhos vivos continua no mesmo estado para a prxima e o gerao. ca

E importante entender que todos os nascimentos e mortes ocorrem simultaneamente. Juntos eles constituem uma gerao ou, como podemos cham-los, um instantena ca a histria da vida completa da congurao inicial. o ca Descrio Este jogo na realidade um jogo sem jogador, o que quer dizer que sua ca e evoluo determinada pelo seu estado inicial, no necessitando de nenhuma entrada ca e a de jogadores humanos. Ele jogado em um conjunto de clulas quadradas que seguem e e ao innito em todas as direes. Cada clula tem oito vizinhos, que so as clulas co e a e adjacentes, incluindo as diagonais. Cada clula pode estar em dois estados: vivaou e morta. (Tambm so usados os termos ligadoe desligado.) O estado do tabuleiro e a evolui e se modica em pequenas passagens de tempo. Os estado de todas as clulas e em um instante so considerados para calcular o estado de todas as clulas no instante a e seguinte. Todas as clulas so atualizadas simultaneamente. As transies dependem e a co apenas do nmero de vizinhos vivos (ver as regras acima). u A idia bsica do jogo comear com uma congurao simples de clulas vivas e a e c ca e (organismos) que so colocadas em um tabuleiro 2D de vrios mtodos. Isto constitui a a a e primeira gerao. As leis genticasde Conway para nascimentos, mortes e sobrevivncia ca e e (as quatro regras acima) so ento aplicadas e a nova gerao ento colocada de acordo. a a ca e a Gerao a gerao os jogador(es)observam as vrias imagens que surgem. ca ca a A vida sempre segue De uma imagem inicial de clulas vivas no tabuleiro, percebe-se e que, conforme passam as geraes, a populao anda constantemente de modo no usual, co ca a algumas vezes belo e quase sempre inesperado, porm muda. Em muitos poucos casos e a sociedade eventualmente morre (todas as clulas se tornam clulas mortas), apesar de e e que isso pode no acontecer at que ocorram uma srie de novas geraes. A maioria a e e co das imagens iniciais chegam a guras estveis - Conway chama-as de vida parada- que a no podem mudar ou imagens que oscilam para sempre. Imagens sem simetria inicial a tendem a se tornar simtricas. Uma vez que isto ocorre, a simetria no pode mais ser e a perdida, apesar de poder crescer em riqueza. Conway originalmente sups que nenhuma imagem poderia crescer ilimitadamente. o Em outras palavras, qualquer congurao com um nmero nito de clulas no pode ca u e a crescer alm de um limite nito superior ao nmero de clulas do campo. Esta foi e u e provavelmente a mais profunda e mais dif questo colocada pelo jogo atualmente. cil a Conway ofereceu um prmio de $50 ` primeira pessoa que pudesse provar a armao e a ca
88-08, Pedro Kantek

194

verso de 10 de fevereiro de 2008 a

CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA ou seu contrrio antes do m de 1970. Um caminho para provar seu contrrio era ser a a capaz de descobrir imagens que continuassem adicionando contadores ao campo: Uma gun(uma congurao que constantemente atira objetos que se movimentam, como o ca glider) ou um puer train(uma congurao que se move mas deixa atrs uma trilha ca a de fumaa). O prmio foi ganho em novembro do mesmo ano por um time do MIT, c e a congurao inicial (mostrada no topo da pgina) cresce como um gun, emitindo seu ca a primeiro glider na 40a gerao. A gun emite ento um novo glider a cada 30 geraes. ca a co Imagens Existe uma srie de diferentes imagens que podem ocorrer no Jogo da Vida, e incluindo imagens paradas (vidas paradas), imagens repetitivas (osciladores- o conjunto de vidas paradas), e imagens que se movimentam atravs do tabuleiro (naves e espaciais). Imagens chamadas Matusalenspodem evoluir por longos per odos de tempo antes de se repetir. Diehard uma imagem que eventualmente desaparece aps 130 geraes, e o co ou passos. Acornleva 5206 geraes para criar 13 gliders depois se estabiliza como co vrios osciladores. a Desde ento, uma srie de construes complicadas tm sido feitas, incluindo portas a e co e lgicas de gliders, um somador, um gerador de nmeros primos e uma unidade de clula o u e que emula o Jogo da Vida em uma escala muito maior e a passos lentos. E poss vel construir portas lgicas AND, OR e NOT usando gliders. E poss o vel construir uma imagem que aja como uma mquina de estado nito conectada a dois a contadores. Isto possui o mesmo poder computacional de uma mquina de Turing a universal (veja contador para a prova), Jogo da Vida to poderoso quanto qualquer e a computador com memria ilimitada: o Turing completo. Alm disso, uma imagem o e e pode conter um conjunto de guns que se combina para construir novos objetos, incluindo cpias da imagem original. Um construtor universalpode ser constru que contenha o do um computador Turing completo, e que pode construir uma srie de objetos complexos, e incluindo mais cpias de si mesma. o Para este exerc considere que o tabuleiro est rodeado por clulas mortas. cio a e Filosoa O Jogo da Vida de Conway cria um universo complicado a partir de poucas regras. E imaginvel que todo o universo real seja um jogo similar, jogado em alguma a dimenso mais alta. Esta possibilidade pode inuenciar o debate de vivermos em um a universo perfeitamente ajustado que requer um projeto inteligente. (texto fortemente baseado em pr.wikipedia.org)

12.2
. . . X . X . . . . . . . X . . X X . . X . X . . X . . . .

Exerc cio 1
. . . . . . . . X . X X X X X . . X . . . X . . . . . X X . . . . . . . . . X . . . . X . X . . . . . . X . . X . . . X X . . X . . . . . . 195
88-08, Pedro Kantek

Seja o seguinte tabuleiro inicial, onde . signica clula morta e X signica clula viva. e e

verso de 10 de fevereiro de 2008 a

CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA Informe a seguir se a posio pedida, aps 4 geraes, est viva ou morta. Indique que ca o co a ela est viva escrevendo 1 e que est morta escrevendo 0. a a L= 7 , C= L= 7 , C= L= 7 , C= L= 7 , C= 1 2 3 6

12.3
. . . . . . X X . X . X X X . . X . X . . X . X . . . . . .

Exerc cio 2
. . . . . . . . . . X X . . . . . . . . . . X . . . X . . . X X . . . . . . . . X X . . X . . . . . X . X . . . . . X . . . . . X X . . X .

Seja o seguinte tabuleiro inicial, onde . signica clula morta e X signica clula viva. e e

Informe a seguir se a posio pedida, aps 4 geraes, est viva ou morta. Indique que ca o co a ela est viva escrevendo 1 e que est morta escrevendo 0. a a L= 9 , C= L= 2 , C= L= 2 , C= L= 3 , C= 2 2 5 1

12.4
. X X . . . . . . X . . X . . . X X . X . . . . X . . . X X

Exerc cio 3
. . . X . . . . X . X . . . . X . . . . X . . . . . . . . . . . X . X . . . X . . . . . . X . X . . X . . X X . X . . . . . . X X X X . . .

Seja o seguinte tabuleiro inicial, onde . signica clula morta e X signica clula viva. e e

Informe a seguir se a posio pedida, aps 4 geraes, est viva ou morta. Indique que ca o co a ela est viva escrevendo 1 e que est morta escrevendo 0. a a L= 8 , C= L= 8 , C= L= 9 , C= L= 10 , 8 9 4 C= 2

88-08, Pedro Kantek

196

verso de 10 de fevereiro de 2008 a

CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA

12.5
. . . . . . . . . . X . . X . . . . . X . . . . . . . . . .

Exerc cio 4
. . . X . X X X . . . X . . . . . . X . . X . . . . X X X . X X . . . . . X . . . . X X . . . . . X . X X X X . . X . . . . X . X . . . . .

Seja o seguinte tabuleiro inicial, onde . signica clula morta e X signica clula viva. e e

Informe a seguir se a posio pedida, aps 4 geraes, est viva ou morta. Indique que ca o co a ela est viva escrevendo 1 e que est morta escrevendo 0. a a L= 9 , C= L= 9 , C= L= 9 , C= L= 1 , C= 5 6 7 6

12.6
1 2 3 4

Respostas
1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1

verso de 10 de fevereiro de 2008 a

197

88-08, Pedro Kantek

CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA

88-08, Pedro Kantek

198

verso de 10 de fevereiro de 2008 a

Cap tulo 13

Exerc cio Prtico:007-GPS a


- 1 Sistema de Posicionamento Global, vulgarmente conhecido por GPS (do acrnimo do o ingls Global Positioning System), um sistema de posicionamento por satlite, por vezes e e e incorrectamente designado de sistema de navegao, utilizado para determinao da posio ca ca ca de um receptor na superf da Terra ou em rbita. cie o O sistema GPS foi criado e controlado pelo Departamento de Defesa dos Estados e Unidos da Amrica, DoD, e pode ser utilizado por qualquer pessoa, gratuitamente, necessie tando apenas de um receptor que capte o sinal emitido pelos satlites. O DoD fornece dois e tipos de servios GPS: Standard e Precision. Contrariamente ao que inicialmente acontec cia, atualmente os dois servios esto dispon c a veis em regime aberto em qualquer parte do mundo. O sistema est dividido em trs partes: espacial, de controle e usurio. O segmento a e a espacial composto pela constelao de satlites. O segmento de controle formado pelas e ca e e estaes terrestres dispersas pelo mundo ao longo da Zona Equatorial, responsveis pela co a monitorizao das rbitas dos satlites, sincronizao dos relgios atmicos de bordo dos ca o e ca o o satlites e atualizao dos dados de almanaque que os satlites transmitem. O segmento do e ca e usurio consiste num receptor que capta os sinais emitidos pelos satlites. Um receptor GPS a e (GPSR) decodica as transmisses do sinal de cdigo e fase de mltiplos satlites e calcula o o u e a sua posio com base nas distncias a estes. A posio dada por latitude, longitude e ca a ca e altitude.
Descrio tcnica Receptores GPS vm numa variedade de formatos, de dispositivos ca e e integrados dentro de carros, telefones, e relgios, a dispositivos dedicados somente ao GPS o como estes das marcas Trimble, Garmin e Leica. O sistema foi declarado totalmente operacional apenas em 1995. Seu desenvolvimento custou 10 bilhes de dlares. Consiste numa constelaode 28 satlites sendo 4 sobreso o ca e salentes em 6 planos orbitais. Os satlites GPS, constru e dos pela empresa Rockwell, foram lanados entre Fevereiro de 1978 (Bloco I), e 6 de Novembro de 2004 (o 29). Cada um c circunda a Terra duas vezes por dia a uma altitude de 20200 quilmetros (12600 milhas) e o a uma velocidade de 11265 quilmetros por hora (7000 milhas por hora). Os satlites tm o e e a bordo relgios atmicos e constantemente difundem o tempo preciso de acordo com o seu o o prprio relgio, junto com informao adicional como os elementos orbitais de movimento, o o ca tal como determinado por um conjunto de estaes de observao terrestres. co ca Medio com um GPS O receptor no necessita ter um relgio de to grande preciso, ca a o a a mas sim de um sucientemente estvel. O receptor capta os sinais de quatro satlites para a e determinar as suas prprias coordenadas, e ainda o tempo. Ento, o receptor calcula a o a distncia a cada um dos quatro satlites pelo intervalo de tempo entre o instante local e a e o instante em que os sinais foram enviados (esta distncia chamada pseudodistncia). a e a 199

CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Decodicando as localizaes dos satlites a partir dos sinais de microondas (tipo de onda co e electromagntica) e de uma base de dados interna, e sabendo a velocidade de propagao e ca do sinal, o receptor, pode situar-se na interseco de quatro esferas, uma para cada satlite. ca e

Coordenadas com um GPS com B ssula e Alt u metro integrado Alm de sua e aplicao bvia na aviao geral e comercial e na navegao mar ca o ca ca tima, qualquer pessoa que queira saber a sua posio, encontrar o seu caminho para determinado local (ou de ca volta ao ponto de partida), conhecer a velocidade e direco do seu deslocamento pode-se ca beneciar com o sistema. Atualmente o sistema est sendo muito difundido em automveis a o com sistema de navegao de mapas, que possibilita uma viso geral da rea que voc est ca a a e a percorrendo. A comunidade cient ca utiliza-o pelo seu relgio altamente preciso. Durante expero incias cient e cas de captura de dados, pode-se registrar com preciso de micro-segundos a (0,000001 segundo) quando a amostra foi obtida. Naturalmente a localizao do ponto ca onde a amostra foi recolhida tambm pode ser importante. Agrimensores diminuem custos e e obtm levantamentos precisos mais rapidamente com o GPS. Unidades espec e cas tm e custo aproximado de 3.000 dlares e preciso de 1 metro, mas existem receptores mais caros o a com preciso de 1 cent a metro. A captura de dados por estes receptores mais lenta. e Guardas orestais, trabalhos de prospeco e explorao de recursos naturais, gelogos, ca ca o arquelogos, bombeiros, so enormemente beneciados pela tecnologia do sistema. O GPS o a tem-se tornado cada vez mais popular entre ciclistas, balonistas, pescadores, ecoturistas, geocachers (uma diverso bem moderna: uma caixa lacrada cheia de pinduricalhos e de a um livro escondida em algum lugar no planeta e suas coordenadas publicadas. Veja mais e em http://www.geocaching.com), ou por leigos que queiram apenas orientao durante as ca suas viagens. Com a popularizao do GPS, um novo conceito surgiu na agricultura: a ca agricultura de preciso. Uma mquina agr a a cola dotada de receptor GPS armazena dados relativos ` produtividade em um carto magntico que, tratados por programa espec a a e co, produz um mapa de produtividade da lavoura. As informaes permitem tambm otimizar co e a aplicao de corretivos e fertilizantes. ca

Tipos de receptores Existem diferentes receptores GPS, desde diversas marcas que comercializam solues tudo-em-um, at os externos que so ligados por cabo ou ainda co e a por bluetooth. Geralmente categorizados em termos de demandas de uso em Geodsicos, Toe pogrcos e de Navegao. A diferenciao entre essas categorias, que a princ pode parea ca ca pio cer meramente de preo de aquisio principalmente devido ` preciso alcanada, ou seja c ca e a a c a razo da igualdade entre o dado real do posicionamento, e o oferecido pelo equipamento. a Sendo os mais acurados, com valores na casa dos mil metros, os receptores Geodsicos so e a capazes de captar as duas freqncias emitidas pelos satlites (L1 e L2), possibilitando assim ue e a eliminao dos efeitos da refrao ionosfrica. Os topogrcos, que tem caracter ca ca e a sticas de trabalho semelhantes ` categoria anterior, porm somente captam a portadora L1, tambm a e e possuem elevada preciso, geralmente na casa dos cent a metros. Ambas as categorias tem aplicaes tcnicas, e caracter co e sticas prprias como o ps-processamento, o que signica que o o geralmente no informam o posicionamento instantaneamente. a No caso da categoria de maior uso, a de navegao, embora possua menor preciso ca a de posicionamento, tem inmeras vantagens como o baixo preo de aquisio e inmeras u c ca u aplicaes, onde v-se uma innidade de modelos, tanto aqueles que integram diversos co e equipamentos como computadores de mo, celulares, relgios, etc., como aqueles dedicados a o exclusivamente ao posicionamento GPS, onde tambm encontramos aplicaes para uso do e co dado de posicionamento em outros equipamentos como notebooks, rastreadores de ve culos, etc.
88-08, Pedro Kantek

200

verso de 10 de fevereiro de 2008 a

CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Dia 3 de setembro de 1989 Maracan lotado para assistir ao Brasil X Chile, pelas a eliminatrias da Copa do Mundo de 90. Longe dali, em algum ponto a princ o pio entre Marab e Belm, Cezar Augusto Garcez comanda um vo cego. Perdido em pleno ar, a e o tenta se posicionar. Localiza, em vo, uma rdio que transmitia a partida que entraria a a para a histria como o jogo da fogueteira. Aquele vo tambm estaria nos jornais no o o e dia seguinte: Avio desaparece na Amaznia, publicou O Globo. a o Heri e vilo, ao mesmo tempo, o comandante Garcez a principal personagem do o a e RG-254 que caiu na selva amaznica em 1989. O que deveria ser um vo rotineiro se o o transformou numa tragdia. Desorientado, Garcez permaneceu durante trs horas em e e vo cego. Temendo que o erro fosse descoberto, passou diversas informaes truncadas o co para a base, armou estar onde no estava. Sem combust a vel, arriscou o aparentemente imposs vel: um pouso na copa das rvores, em plena noite, com visibilidade praticamente a nula. Garcez foi acusado de negligenciar rotinas bsicas da aviao. Por outro lado, a ca salvou a vida de muitos passageiros ao conseguir aterrissar a aeronave e cuidar dos feridos. Ainda hoje, aguarda julgamento.

13.1

GPS

Na dcada de 70, os EUA comearam a projetar e implementar o sistema conhecido como e c GPD (Global Positioning System). O primeiro satlite Navstar foi lanado em 1978. O e c objetivo principal era permitir que os estimados 40.000 usurios militares americanos se a orientassem sobre a terra. Os civis comearam a usar o sistema a partir da dcada de c e 80. Hoje, estima-se em mais de 50.000.000 de dispositivos capazes de receber os sinais de GPS e apresentar uma estimativa de localizao. ca Alm do sistema americano, existe o russo Glonass de uso exclusivo pelos militares e e a partir da ultima semana de 2005, o sistema Galileu constru e operado pela Agncia do e Espacial Europia. e A grande exploso de uso, dever vir quando celulares e automveis comearem a a a o c vir de fbrica com a possibilidade de informar sua localizao. Associados a sistemas a ca de mapas embarcados, podero informar ao motorista qual caminho tomar para ir vira tualmente a qualquer lugar sobre a superf terrestre. Associados a telefones celulares, cie podero informar a localizao do telefone. Associados a sistemas de proteo contra a ca ca roubo de automveis, informaro a localizao em tempo real e assim por diante. A o a ca lista de aplicaes poss co veis parece inesgotvel. a Todos os sistemas acima se baseiam na triangulao (ou quadrangulao) do receptor ca ca em relao a 3 ou 4 (ou mais) satlites em rbita da terra. ca e o O sistema comea pela identicao de diversos pontos xos sobre a superf terc ca cie restre. Tais pontos contam com estaes transmissoras e permitem a cada satlite a co e recepo de diversos pontos. Medindo o tempo gasto por cada sinal desde a estao ca ca terrena at o satlite, e fazendo isso com diversas estaes, o satlite conhece sua real e e co e posio com preciso de cent ca a metros. Cada satlite possui um relgio atmico, integrado ` rede GPS e que garante preciso e o o a a de tempo de 1 bilionsimo de segundo. e Todos os satlites emitem 2 mensagens: A primeira, envia a identicao do satlite, e ca e sua posio no espao e sua hora interna. Uma segunda mensagem uma seqncia de ca c e ue impulsos digitais em um padro inconfund a vel. Tudo funciona como se o receptor tambm gerasse no mesmo instante de tempo a e mesma seqncia de impulsos digitais. Da anlise dos dois sinais (o gerado pelo satlite ue a e e o gerado internamente no receptor) poss e vel medir o retardo do sinal do satlite. e Conhecendo a velocidade da luz (xa e igual a 299.729.458 m/seg) e conhecendo o tempo gasto pelo sinal do satlite ao receptor, poss estabelecer a distncia entre e e vel a satlite e receptor. e
verso de 10 de fevereiro de 2008 a

201

88-08, Pedro Kantek

CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Daqui, pode-se inferir que o receptor est sobre a esfera de centro x, y, z (as coa ordenadas no espao do satlite) e de raio R, que a distncia entre o receptor e o c e e a satlite. e Ao fazer o mesmo clculo com um segundo satlite, obtem-se uma segunda esfera, e a e o receptor est sobre o c a rculo de interseco das duas esferas. ca Finalmente ao fazer o clculo com um terceiro satlite, obtm-se uma terceira esfera. a e e O receptor ainda pertence `s 3 esferas, e a interseco das 3 apresenta apenas 2 pontos a ca no espao. Um deles apenas sobre a superf c cie terrestre, e logo esta a posio do e ca receptor, com preciso de metros. a

13.1.1

Problemas

Se os receptores pudessem ter um relgio atmico 3 satlites bastariam. Como um o o e relgio atmico muito caro e pesado, os receptores usam relgios de quartzo comum o o e o (sujeitos a erros de 1 seg/dia). Ento usa-se um quarto satlite para refazer os clculos e permitir acertar o atraso/adiantamento a e a do relgio local ao relgio da rede. o o Se o usurio estiver em movimento, os sinais ainda vm afetados pelo efeito Doppler, a e que precisa ser analiticamente corrigido antes de estabelecer a posio do receptor. Idem ca para os efeitos relativ sticos associados. O sistema americano usa duas radiofrequencias: L1 e L2. A L1 chamada Sinal e Civil, embora os militares tambm a usem. A L2 de uso exclusivo militar, j que e e a seus cdigos (a segunda parte das mensagens) no so pblicos e so protegidos por o a a u a criptograa. Ao usar apenas o sinal L1, receptores conseguem determinar sua posio ca com erros de 5 a 10 m, causados pela ao da ionosfera. A camada de ar sobre a terra ca aumenta a densidade da atmosfera, causando refrao nos sinais. E como um lpis ca a colocado dentro de um copo de gua. a A potncia de um satlite de 500W, o equivalente a 5 lmpadas de 100W. Apenas e e e a para efeito de comparao, o sinal de TV de um satlite 1 bilho de vezes mais forte. ca e e a Este fato permite que interferncias (`s vezes propositais) obscuream ou at invalidem e a c e o sinal dos satlites. Este fato usado em teatros de guerra, quando as foras americanas e e c introduzem geradores locais de ru centrados na banda usada pelo sistema. Essa a do e razo pela qual embora o sistema seja pblico, russos e europeus tratam de ter cada um a u o seu.

13.2

Dois amigos

Vamos simular o clculo de uma posio desconhecida usando triangulao, mas vamos a ca ca trabalhar apenas em 2D, que ningum aqui est a m de enlouquecer por causa da e a geometria anal tica. ;-) Suponhamos uma regio plana, na qual dois pontos tem coordenadas conhecidas. a Voc vai colocar 2 amigos, um em cada ponto, todos munidos de relgios absolutamente e o acertados at o milsimo do segundo, e completamente precisos. e e Voc combinou que `s 14h00, um dos seus amigos dar um tiro de espoleta. Nessa e a a mesma hora, voc ligar um cronmetro. Alguns dcimos de segundos depois, voc e a o e e ouvir o tiro e desligar o cronmetro, obtendo um tempo gasto pelo barulho para a a o percorrer a distncia entre o seu primeiro amigo e voc. Vamos chamar esta distncia a e a de D1 . Lembrando que o som se propaga a 340m/seg, voc conseguir uma medida convel e a a entre voc e seu amigo 1. e O procedimento ser repetido `s 14h15 com seu amigo nmero 2. Pelo mesmo a a u mecanismo voc obter a distncia entre voc e seu amigo 2. Ser a distncia D2 . e a a e a a
88-08, Pedro Kantek

202

verso de 10 de fevereiro de 2008 a

CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Sabendo que seu amigo 1, se encontra no centro de um c rculo de raio D1 e coordenadas do centro iguais a x1 , y1 , e seu amigo 2 se encontra em x2 , y2 , tambm no centro e de um c rculo de raio D2 , e que voc se encontra sobre os dois c e rculos, pede-se que voc e calcule a sua posio. ca Obs: se voc no tiver muita intimidade com a geometria anlitica, um bom mtodo e a a e e o grco. Use um papel milimetrado, disponha os dois pontos, trace duas circunferncias a e de raios D1 e D2 e nos encontros das duas circunferncias voc estar. e e a Obs:
Este procedimento tambm pode ser usado para vericar o acerto/erro das contas e e a vericao nal do ponto. ca Como s usaremos 2 amigos (ao invs de 3), haver 2 pontos candidatos, ambos o e a na superf da terra. Responda os 2. cie

13.2.1

Exemplo

Seja um caso em que x1 = 264m, y1 = 141m. x2 = 520m, y2 = 291m. Os tempos so: a t1 = 0, 4749seg e t2 = 0, 4017seg. Obtem-se d1 = 161, 48m e d2 = 136, 6m. A frmula do circulo 1 x2 + y 2 528x o e 282y + 63501.21 = 0 A frmula do circulo 2 x2 + y 2 1040x 582y + 336421 = 0 o e Subtraindo uma equao da outra, ca-se com 512x + 300y 272920 = 0 e ca y= 272920 512x = 909.7 1.7x 300

Substituindo o y obtido em qualquer uma das equaes, chega-se ao valor correto do co observador que xo = 410m, yo = 210m. e

13.2.2

Como fazer

Para entender o funcionamento do sistema, necessrio relembrar um pouco de f e a sica e de geometria anlitica. a Da f sica: distncia = velocidade tempo. Sabendo que a velocidade do som 340 a e m/seg, obtm-se as duas distncias. e a Da geometria anal tica, um c rculo no plano perfeitamente determinada se soubere mos as coordenadas , do seu centro, bem como o raio dele, usualmente representada por R. Da geometria anal tica, a frmula o e (x )2 + (y )2 = R2 Do problema, so conhecidos 1 , 2 , 1 , 2 , D1 e D2 . Obtem-se agora duas frmulas a o em x2 , x, y 2 e y. Operando com elas obtem-se dois pares de x, y que so os pontos a candidatos.

13.2.3
Dados:

Problema 1

Seu amigo 1 est em x1 = 253 e y1 = 169. a Seu amigo 2 est em x2 = 671 e y2 = 225. a O tiro do amigo 1 demorou t1 = .675453 segundos. O tiro do amigo 2 demorou t2 = .568409 segundos.
verso de 10 de fevereiro de 2008 a

203

88-08, Pedro Kantek

CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.4
Dados:

Problema 2

Seu amigo 1 est em x1 = 392 e y1 = 173. a Seu amigo 2 est em x2 = 696 e y2 = 210. a O tiro do amigo 1 demorou t1 = .395137 segundos. O tiro do amigo 2 demorou t2 = .507112 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.5
Dados:

Problema 3

Seu amigo 1 est em x1 = 283 e y1 = 130. a Seu amigo 2 est em x2 = 507 e y2 = 275. a O tiro do amigo 1 demorou t1 = .449615 segundos. O tiro do amigo 2 demorou t2 = .335990 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.6
Dados:

Problema 4

Seu amigo 1 est em x1 = 310 e y1 = 170. a Seu amigo 2 est em x2 = 679 e y2 = 256. a O tiro do amigo 1 demorou t1 = .614903 segundos. O tiro do amigo 2 demorou t2 = .499585 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

88-08, Pedro Kantek

204

verso de 10 de fevereiro de 2008 a

CAP ITULO 13. EXERC ICIO PRATICO:007-GPS

13.2.7
Dados:

Problema 5

Seu amigo 1 est em x1 = 201 e y1 = 163. a Seu amigo 2 est em x2 = 627 e y2 = 251. a O tiro do amigo 1 demorou t1 = .593287 segundos. O tiro do amigo 2 demorou t2 = .686965 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.8
Dados:

Problema 6

Seu amigo 1 est em x1 = 288 e y1 = 109. a Seu amigo 2 est em x2 = 619 e y2 = 205. a O tiro do amigo 1 demorou t1 = .443191 segundos. O tiro do amigo 2 demorou t2 = .570475 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.9
Dados:

Problema 7

Seu amigo 1 est em x1 = 308 e y1 = 157. a Seu amigo 2 est em x2 = 561 e y2 = 204. a O tiro do amigo 1 demorou t1 = .330474 segundos. O tiro do amigo 2 demorou t2 = .429059 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.10
Dados:

Problema 8

Seu amigo 1 est em x1 = 274 e y1 = 105. a Seu amigo 2 est em x2 = 511 e y2 = 264. a O tiro do amigo 1 demorou t1 = .473127 segundos. O tiro do amigo 2 demorou t2 = .366280 segundos.
verso de 10 de fevereiro de 2008 a

205

88-08, Pedro Kantek

CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.11
Dados:

Problema 9

Seu amigo 1 est em x1 = 313 e y1 = 195. a Seu amigo 2 est em x2 = 506 e y2 = 279. a O tiro do amigo 1 demorou t1 = .367376 segundos. O tiro do amigo 2 demorou t2 = .256153 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.12
Dados:

Problema 10

Seu amigo 1 est em x1 = 329 e y1 = 145. a Seu amigo 2 est em x2 = 519 e y2 = 219. a O tiro do amigo 1 demorou t1 = .231924 segundos. O tiro do amigo 2 demorou t2 = .372242 segundos.

Os dois pontos candidatos a serem sua localizao so: ca a x,y x,y

13.2.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

88-08, Pedro Kantek

206

verso de 10 de fevereiro de 2008 a

Cap tulo 14

Exerc cio Prtico: 008 a Problemas


Quais os nomes vlidos? Na lista de nomes a seguir, informe se cada nome vlido a e a ou no. a nome vlido invlido a a R33 33R SALDOBANCARIO JKGHHGGJHG OBA AQUI A+B ZERO/DOIS Tipos de variveis Para representar as variveis a seguir, qual o(s) tipo(s) mais a a adequado ? (Se houver mais de um tipo, indique com 1 o melhor, com 2 o seguinte e assim por diante). nome do campo int real lgico carac cadeia o nome salrio a nmero de lhos u o sujeito tem lhos ? idade ano de nascimento categoria de motorista nome de uma vitamina

14.1

Resolva os exerc cios a seguir

Cada um dos exerc cios a seguir apresenta uma resposta numrica unica. Descubra-a e e coloque o seu valor no quadrado duplo que segue a denio. ca

14.1.1

Problema 1

Um certo espetculo musical no Japo, tem um custo para entrar de 3500 ienes para a a adultos e 1200 ienes para estudantes. No sbado passado havia 608 pessoas, e a renda a da noite foi de 1.707.100 ienes. Quantos estudantes havia ? 207

CAP ITULO 14. EXERC ICIO PRATICO: 008 - PROBLEMAS

14.1.2

Problema 2

Em um tanque h 4000 bolinhas de pingue-pongue. Um menino comeou a retirar as a c bolinhas, uma por uma, com velocidade constante quando eram 10h. Aps 6 horas, h o a no tanque 3520 bolinhas. Se o menino continuasse no mesmo ritmo, a que horas do dia seguinte o tanque caria com 2000 bolinhas ? (OBM 2006)

14.1.3

Problema 3

Uma processadora de alimentos desenvolveu uma marca de salada de fruta enlatada de muito sucesso. A frmula desta salada, envolve as seguintes frutas e ingredientes nas o seguintes propores: 1 Kg de banana; 0,5 Kg de abacaxi; 2 Kg de laranja e 250 gramas co de aucar. c Suponha que em um determinado dia, existem dispon veis as seguintes quantidades no depsito: 100 Kg de aucar, 300 Kg de abacax 800 Kg de bananas e 1 tonelada de o c , laranja. Pergunta-se quantos quilos de salada de fruta podero ser produzidos preservando a as propores da frmula original ? co o

14.1.4

Problema 4

A soma de dois nmeros primos a e b 34 e a soma dos primos a e c 33. Quanto vale u e e a + b + c ? (OBM 2004)

14.1.5
1 a b b 3 --------* * * * * * --------1 c c 0 1

Problema 5

Na multiplicao a seguir, a, b e c so algarismos: ca a x

Qual o valor de a + b + c

88-08, Pedro Kantek

208

verso de 10 de fevereiro de 2008 a

CAP ITULO 14. EXERC ICIO PRATICO: 008 - PROBLEMAS

14.1.6

Problema 6

O per metro de determinado retngulo 16 vezes maior do que o menor lado do retna e a gulo. O comprimento do maior lado 12 cent e metros maior do que o menor lado. Qual o comprimento do maior lado, em cent metros?

14.1.7

Problema 7

As letras O, B e M representam nmeros inteiros. Se OBM = 240, (OB)+M = 46 u e O + (B M ) = 64, quanto vale O + B + M ? (OBM 2005)

14.1.8

Problema 8

Na ocina mecnica do Z Tio, nesta semana foram reparados 40 ve a e a culos, entre motos e carros. Como curiosidade, o auxiliar do Z Tio contou que o nmero total de rodas e a u dos ve culos reparados foi 100 rodas. Pergunta-se quantas motos foram reparadas ?

14.1.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. Quantas partidas o time ganhou ? (OBM 2006)

14.1.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. O comprimento master o maior e barbante que d a volta completa ao pacote. Supondo um pacote de 2,85 Kg e cujas a dimenses em metros so: 0,3 x 0,7 x 1,1 m, pergunta-se Este pacote pode (responda 1) o a ou no pode (responda 0) ser mandado pelo correio ? a

14.1.11
1 2 3 4 5

Respostas

183.0 11.0 1500.0 36.0 10.0 209


88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 14. EXERC ICIO PRATICO: 008 - PROBLEMAS 6 7 8 9 10 14.0 20.0 30.0 14.0 0

88-08, Pedro Kantek

210

verso de 10 de fevereiro de 2008 a

Cap tulo 15

Exerc cio prtico: 009-Achar o a n mero que falta u


15.1 Qual o n mero que falta ? u

Neste folha de exerc cios, sero apresentadas diversas seqncias de 11 nmeros. Os a ue u nmeros iniciais (1, 2 ou 3) a depender da seqncia so aleatrios. Os prximos at o u ue a o o e nal seguem uma determinada lei de formao. Um dos nmeros do nal da seqncia ca u ue representado por um sinal de ?. Voc deve descobrir que nmero esse e e u e

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

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

+ + + + + + + + + +

CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA

15.2

Exerc cio 1

N. 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

1166 206 144 159

? ?
293 4616 262 459 360 1591 120 2238

? ? ?

+ + + + + + + + + + + + + + + + + + + +

387 377 11144 425 586 3841 194

? ?
281

? ? ?
927 1591 277 165

? ?

?
9273 740

? ?

93 207 66 211 618

304 2646 171 4109

?
6388

? ? ?

9920 388 173

292 3532 201 368 285 687 3223 349

?
3602 8527 325

? ? ? ?

200

? ? ?

385 1361

1335 214 212

88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA

15.3

Exerc cio 2

N. 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

? ? ?

?
389 435 457 391 323 534

+ + + + + + + + + + + + + + + + + + + +

135 122 158 210

?
291

? ?

? ? ? ? ?

291 915 1199

135 212 1475 137 206 205 208 191

293 293 135

2209 2385 360 474

?
249 8597

? ? ?

222 939

?
1877 387 386

? ?
210 210 112 828

383 313 1661 451

? ?

4010 734 391

?
1574 243 213

291 181 1999 147 3800

? ? ?
239

651

verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA

15.4

Exerc cio 3

N. 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

? ?
2387

+ + + + + + + + + + + + + + + + + + + +

1096 209 115 148 468 1574 94 233 84 209 126

? ? ? ?

?
390

210 240 3800 152 155 230 272 196 1198 238 221

? ? ? ? ? ? ?

1876

623 554 443 2386 385 407 397 512

? ? ? ? ?

107

149 229 228 205 340 968 112

? ?

256 421 286 684 2337

?
610

? ? ?
214

? ? ?

173 292 289

295 280 392 389

88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA

15.5
N. 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 296 124

? ? ?

353

?
225 679

?
469 265

301 414 1369 230

? ? ?

? ? ?

374 1877 215 539 391

?
204

434 133 291 291 3124

210 205 1294

?
386

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

verso de 10 de fevereiro de 2008 a

215

88-08, Pedro Kantek

CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA

88-08, Pedro Kantek

216

verso de 10 de fevereiro de 2008 a

Cap tulo 16

Exerc cios Prticos: 011 a Matemtica e Lgica Bsicas a o a


16.1 Exerc cio 1

Note que a operao x mod y, quando y = 0, matematicamente no est denida. ca a a Entretanto, para esta folha, combinar-se- que x mod y = x quando y = 0. Da mesma a maneira, x 0 no est denido. O caso particular, vlido apenas aqui 0 0 que aqui a a a e dar 1. a

16.1.1

Exerc cio 1.1

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
((27 div 7) mod 2)+( (((9 + 4) - (3 - 5)) (3 + 6))) ((26 div 5) mod 3)-(((8 + 3) ( (9 7))) + (9 + 3)) (((4 + 7) - (5 5)) + (7 - 2))-(6 + 8) ((27 div 3) div 5)+(((8 + 3) + (3 3)) (8 - 4)) ((30 div 6) div 3)-(((3 4) + (9 + 2)) (8 - 3)) (2 - 3)+(((3 - 4) - (7 + 5)) + (7 3))

soma dos valores

16.1.2

Exerc cio 1.2

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((29 div 4) div 6)<(((7 + 7) + (3 + 9)) (6 - 4)) 2 (21 div 1)>(((6 - 5) (5 + 2)) + (5 + 4)) 4 ((.F. .V.))(((.F. .F.)) .F.) 8 (28 div 10)>( (((8 + 7) (9 8)) (6 + 6))) 217

CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS 16 (15 mod 10)>(((6 7) (5 - 6)) - (5 + 3)) 32 ((.V. .F.))((.V. .V.) .F.) soma das linhas

16.1.3

Exerc cio 1.3

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((14 mod 9) div 1) div (19 mod 8))-(((3 - 7) + (8 - 9)) + (2 - 8)) (((21 mod 9) mod 5) div (16 mod 7))+(((4 - 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 - 7)) - (8 - 3)) (((24 div 7) mod 6) mod (22 div 3))+(((5 + 2) + (3 + 3)) (3 + 5)) (9 + 2)+(((8 + 8) (3 - 2)) - (5 + 2))

soma dos valores

16.1.4

Exerc cio 1.4

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((26 div 5) mod 4)>(((5 - 3) + (4 + 5)) + (6 + 2)) 2 (23 mod 10)>(((6 8) - (6 - 9)) - (5 - 4)) 4 (.F. .V.)((.V. .V.) .F.) 8 (20 div 6)<( (((3 + 2) + (2 5)) (4 + 8))) 16 (18 mod 4)<(((4 - 2) + (8 - 2)) (2 - 7)) 32 (.F. .V.)((.F. .F.) .F.) soma das linhas

16.1.5

Exerc cio 1.5

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((18 div 9) div 1) div (11 div 6))-(((3 + 7) (2 + 3)) - (7 - 2)) ((26 div 7) div 1)-(((4 9) - (9 - 5)) (7 - 6)) (((5 + 9) - (6 - 4)) - (6 - 9))-(6 9) (((11 mod 4) mod 5) div (25 mod 6))-(((3 - 7) + (8 6)) + (4 - 2))
88-08, Pedro Kantek

218

verso de 10 de fevereiro de 2008 a

CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS
((19 mod 3) mod 4)-(((8 - 3) (4 2)) + (5 4)) (( ((7 3) (2 + 8))) (8 + 9))-(2 + 3)

soma dos valores

16.1.6

Exerc cio 1.6

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((26 mod 7) mod 6)>(((7 - 6) + (7 9)) - (5 + 5)) 2 (18 div 10)>( (((9 8) + (7 + 7)) (2 6))) 4 (.F. .F.)((.F. .V.) (.V.)) 8 (27 div 8)>(((9 - 2) ( (8 7))) - (7 + 8)) 16 (13 mod 7)>((( (7 4)) + (7 + 8)) + (3 8)) 32 (.V. .F.)((.F. .V.) .F.) soma das linhas

16.1.7

Exerc cio 1.7

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((14 mod 4) mod 6) mod (18 mod 10))-(((5 - 9) + (4 + 9)) + (2 + 4)) (((18 div 1) div 4) div (29 div 10))+(((4 + 4) (4 - 9)) + (9 - 3)) (((8 + 7) + (6 + 4)) + (5 + 2))-( (8 4)) ((19 mod 3) mod 5)+(((7 + 7) + (3 - 4)) + (9 5)) ((25 div 6) div 3)-(((5 + 8) (9 + 5)) + (6 + 8)) (((8 6) - (7 + 9)) (3 + 7))-(3 - 2)

soma dos valores

16.1.8

Exerc cio 1.8

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((14 div 1) div 5)>( (((3 - 5) - (2 + 7)) (2 + 5))) 2 (22 div 4)>(((7 - 2) + (8 + 5)) (8 + 7)) 4 (.V. .V.)((.F. .V.) .F.) 8 (14 div 2)<(((6 4) (6 - 5)) - ( (4 3)))
verso de 10 de fevereiro de 2008 a

219

88-08, Pedro Kantek

CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS 16 (22 mod 6)<(((4 + 2) - (7 + 7)) + ( (8 3))) 32 (.F. .V.)((.V. .F.) .F.) soma das linhas

16.1.9

Exerc cio 1.9

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((13 mod 9) mod 6) mod (19 mod 4))-(((7 - 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 - 3)) ((11 mod 2) mod 3)+(((2 - 5) + (5 - 4)) - (3 + 8)) (((12 mod 9) mod 6) mod (13 mod 7))+(((4 + 9) - (3 9)) - (3 - 6)) (((6 - 7) + ( (8 2))) - (4 - 6))-(2 + 2)

soma dos valores

16.1.10

Exerc cio 1.10

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((23 div 8) mod 6)>(( ((3 + 7) (2 + 8))) + (4 - 7)) 2 (24 div 10)<(((5 - 2) - (3 + 7)) - (6 + 8)) 4 (.F. .V.)((.V. .F.) .V.) 8 (15 div 3)>(((4 + 4) + (9 - 2)) + (9 - 3)) 16 (28 mod 6)<(((8 + 9) (8 + 5)) + (9 - 3)) 32 (.F. .F.)((.V. .F.) (.V.)) soma das linhas

16.2
16.2.1

Exerc cio 2
Exerc cio 2.1

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((19 div 3) div 4) mod (21 div 2))-(((9 - 2) + (3 - 8)) + (9 + 6)) ((20 div 6) div 3)-(((4 + 6) (2 3)) + (4 + 3))
88-08, Pedro Kantek

220

verso de 10 de fevereiro de 2008 a

CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS
( (((7 + 6) + (4 + 4)) (9 - 4)))-(4 + 8) (((23 div 6) div 2) mod (18 div 3))-(((5 + 3) - (4 - 6)) - (8 + 6)) ((24 div 9) div 2)-(((5 + 8) - (4 - 5)) + (8 - 5)) (2 + 7)+(( ((2 - 4) (5 - 3))) + (2 - 8))

soma dos valores

16.2.2

Exerc cio 2.2

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((23 div 1) div 4)<(((9 + 6) + (3 + 7)) + (4 - 2)) 2 (19 div 1)>( (((2 + 4) (4 + 5)) (7 + 3))) 4 (.V. .F.)((.V. .F.) (.F.)) 8 (26 div 4)<(((7 - 5) + (2 + 6)) + (5 - 2)) 16 (14 div 1)<( (((3 - 7) + (2 + 4)) (7 - 9))) 32 (.V. .V.)((.V. .V.) .F.) soma das linhas

16.2.3

Exerc cio 2.3

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((28 mod 5) mod 5) mod (27 mod 10))-(((9 + 7) + (7 - 4)) + (3 + 6)) (((16 div 1) mod 3) mod (18 div 2))+(((5 + 7) (3 + 4)) - (9 + 9)) (2 - 9)+(((4 - 7) + (8 - 3)) + (4 - 5)) ((15 div 4) div 2)+(((6 + 8) - (3 - 5)) + (3 + 2)) (((20 mod 9) div 1) mod (29 mod 8))+(((3 + 7) (2 + 8)) + (3 - 6)) (6 + 7)+(((8 - 5) (5 + 9)) + (8 - 7))

soma dos valores

verso de 10 de fevereiro de 2008 a

221

88-08, Pedro Kantek

CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS

16.2.4

Exerc cio 2.4

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((26 mod 4) mod 3)>(((8 + 2) + (6 + 2)) - (7 - 2)) 2 (13 mod 8)<(((2 - 5) + (9 + 7)) - (3 - 2)) 4 (.V. .F.)((.F. .F.) .V.) 8 (28 mod 6)<(((8 + 5) (2 - 8)) - ( (7 5))) 16 (30 div 7)<(((6 + 7) + (2 - 6)) - ( (6 3))) 32 (.V. .F.)((.F. .V.) .V.) soma das linhas

16.2.5

Exerc cio 2.5

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((16 mod 10) mod 5) mod (29 mod 8))-(((5 + 7) - (6 + 2)) - (3 8)) ((26 mod 5) mod 5)-(((7 + 6) + (5 8)) - (5 + 8)) ((( (5 5)) - (5 + 5)) + (8 + 7))-(9 - 7) (((25 mod 6) div 1) mod (18 mod 7))-(((8 - 4) + (6 3)) + (9 + 5)) (((19 mod 10) div 6) mod (12 mod 3))+(((8 + 2) - (9 - 3)) + (9 6)) (5 - 3)+(( ((3 - 8) (7 - 8))) - (6 3))

soma dos valores

16.2.6

Exerc cio 2.6

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((20 mod 8) mod 5)<(((9 + 9) + (2 - 6)) + (8 + 3)) 2 (23 div 8)<(((4 - 6) - (4 + 8)) + (2 + 6)) 4 (.V. .F.)((.F. .V.) .V.) 8 (23 div 6)>( (((9 - 2) - (7 + 7)) (8 - 2))) 16 (25 mod 9)>(( ((2 + 9) (2 + 8))) - (7 2)) 32 (.V. .F.)((.F. .F.) (.V.)) soma das linhas

88-08, Pedro Kantek

222

verso de 10 de fevereiro de 2008 a

CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS

16.2.7

Exerc cio 2.7

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando 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) - (6 + 4)) - (6 + 2)) (((5 + 3) - ( (9 8))) - (6 + 2))-(5 7) (((27 mod 7) div 5) mod (16 mod 10))-(((3 8) + (8 + 2)) - (2 + 5)) ((30 div 6) div 3)-(((6 - 7) - (2 + 4)) + (2 + 6)) (4 - 8)+(((2 + 7) (9 + 8)) - ( (8 3)))

soma dos valores

16.2.8

Exerc cio 2.8

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((29 div 7) div 4)>((( (9 4)) - (8 + 6)) - (8 + 7)) 2 (18 div 4)>(((6 - 9) (6 + 6)) + (6 - 2)) 4 (.F. .F.)((.V. .V.) .F.) 8 (17 div 3)<(((4 + 4) - (2 + 9)) + (2 + 8)) 16 (22 mod 6)<((( (9 7)) (4 + 2)) - (7 - 9)) 32 (.F. .V.)((.F. .F.) .F.) soma das linhas

16.2.9

Exerc cio 2.9

Resolva as 6 linhas abaixo e some (aritmticamente) os resultados encontrados, lanando e c o total no quadro abaixo
(((18 div 6) mod 6) mod (27 div 5))-(((3 + 3) - (2 + 6)) (2 + 5)) (((19 div 2) div 1) div (23 div 7))+(((5 + 4) + (2 + 4)) + (2 + 4)) (((6 - 2) + (5 + 6)) + (8 - 2))-(2 + 9) ((28 div 8) div 3)+(((3 - 4) + (6 + 2)) + (2 - 5)) ((20 div 2) div 1)-(((3 + 3) - (4 + 9)) + (6 + 4)) (((3 + 2) - (3 + 9)) + (4 - 2))-(6 - 2)

soma dos valores

verso de 10 de fevereiro de 2008 a

223

88-08, Pedro Kantek

CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS

16.2.10

Exerc cio 2.10

Resolva as 6 linhas abaixo e some (aritmticamente) os nmeros das linhas que respone u dem VERDADEIRO, lanando o total no quadro abaixo c 1 ((20 mod 8) mod 3)>((( (7 3)) - (6 + 8)) + (6 + 7)) 2 (26 div 5)>(((8 + 7) (6 + 5)) - (7 + 9)) 4 ((.V. .F.))((.V. .F.) .F.) 8 (16 div 1)<(((7 4) + (3 - 2)) - (9 - 5)) 16 (17 div 5)<(((7 6) (8 + 3)) - (9 9)) 32 (.V. .F.)(((.V. .F.)) (.F.)) soma das linhas

16.2.11
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 -68 19 222 4 -184 8 168 41 379 17 -99 43 213 50 -1 25 684 31 54 24

Respostas

88-08, Pedro Kantek

224

verso de 10 de fevereiro de 2008 a

Cap tulo 17

Exerc cios Prticos: 017-SEs a compostos e encadeados


17.1 SEs compostos e encadeados

Permite executar uma ou mais instrues caso uma condio seja verdadeira. Opcionalco ca mente, pode ter a alternativa inversa, ou seja, executar outros comandos, se a condio ca for falsa. Comandos internos ao comando sedevem estar identados de 3 espaos, para c clareza. se <condi~o> ca <comando-1> <comando-2> ... [sen~o <comando-11> a <comando-12> ...] fim {se} Alternativa Simples S possui a primeira parte do comando (comandos so execuo a tados se a condio for verdadeira) ca se <condi~o> ca comando-1 comando-2 ... fim {se} Alternativa Composta Possui as duas partes. A primeira, se a condio for verca dadeira e a segunda se for falsa. se condi~o ca c1 c2 ... sen~o a c10 c11 225

CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS ... fim {se condi~o} ca A seguir diversos algoritmos envolvendo apenas o comando de alternativa. Siga cada um dos algoritmos e ao nal responda qual o valor impresso por cada um deles.

17.1.1

Exerc cio 1.1

Suponha a chamada EX1 ( 1, 6, 6, 6, 1, 6 ), com a seguinte denio ca 1: funo EX1 (inteiro A, B, C, D, E, F) ca 2: se ((E = 5) (B < 4)) ento a 3: se (F = 1) ento a 4: DE5 5: seno a 6: FE4 7: mse 8: FA+D 9: seno a 10: ACD 11: se ((B 5) (A = 6)) ento a 12: BC-D 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca

17.1.2

Exerc cio 1.2

Suponha a chamada EX2 ( 4, 2, 3, 2, 1, 2 ), com a seguinte denio ca 1: funo EX2 (inteiro A, B, C, D, E, F) ca 2: se ((F 1) (C 5)) ento a 3: se (D > 5) ento a 4: FAC 5: seno a 6: DCF 7: mse 8: DB+5 9: seno a 10: EB+5 11: se (( (B = 2)) ( (A 1))) ento a 12: CC+2 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca

17.1.3

Exerc cio 1.3

Suponha a chamada EX3 ( 3, 1, 2, 1, 3, 4 ), com a seguinte denio ca 1: funo EX3 (inteiro A, B, C, D, E, F) ca 2: se (((D 5) (F 5)) (A = 3)) ento a 3: se ((F > 6) ( (D 2))) ento a
88-08, Pedro Kantek

226

verso de 10 de fevereiro de 2008 a

CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS


4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:

BA-E seno a CD-E mse EC-2 seno a DA4 se ((A = 4) (A < 4)) ento a FDB mse mse imprima A + B + C + D + E m {funo} ca

17.1.4

Exerc cio 1.4

Suponha a chamada EX4 ( 2, 4, 5, 1, 2, 5 ), com a seguinte denio ca 1: funo EX4 (inteiro A, B, C, D, E, F) ca 2: se (((E < 5) ( (C = 1))) ( (D < 3))) ento a 3: se ((E = 2) (E = 4)) ento a 4: CC+B 5: seno a 6: CBE 7: mse 8: CF-C 9: seno a 10: CAE 11: se (A 6) ento a 12: CD-4 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca

17.1.5

Exerc cio 1.5

Suponha a chamada EX5 ( 5, 3, 3, 3, 3, 6 ), com a seguinte denio ca 1: funo EX5 (inteiro A, B, C, D, E, F) ca 2: se (( (D 3)) ( (A = 4))) ento a 3: se (( (B < 6)) (E = 4)) ento a 4: DC-E 5: seno a 6: FB2 7: mse 8: AA+5 9: seno a 10: FB-4 11: se (((D > 4) (C 2)) (C = 5)) ento a 12: FA3 13: mse 14: mse 15: imprima A + B + C + D + E
verso de 10 de fevereiro de 2008 a

227

88-08, Pedro Kantek

CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS


16:

m {funo} ca

17.1.6

Exerc cio 1.6

Suponha a chamada EX6 ( 1, 4, 3, 5, 2, 3 ), com a seguinte denio ca 1: funo EX6 (inteiro A, B, C, D, E, F) ca 2: se (( (F 2)) ( (B 6))) ento a 3: se ((D < 3) ( (B = 6))) ento a 4: CD-E 5: seno a 6: BCF 7: mse 8: BA+2 9: seno a 10: BC-2 11: se (F = 4) ento a 12: FB-F 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca Respostas
1 2 3 4 5 6

17.2

Exerc cio 2

A seguir diversos algoritmos envolvendo apenas o comando de alternativa. Siga cada um dos algoritmos e ao nal responda qual o valor impresso por cada um deles.

17.2.1

Exerc cio 2.1

Suponha a chamada EX1 ( 3, 2, 2, 3, 2, 1 ), com a seguinte denio ca 1: funo EX1 (inteiro A, B, C, D, E, F) ca 2: se ((( (D 1)) (B < 1)) (A > 6)) ento a 3: se (D = 2) ento a 4: DCD 5: seno a 6: AC+4 7: mse 8: AF+E 9: seno a 10: BC3 11: se (((B = 5) (F = 1)) (B > 4)) ento a 12: CE5 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca
88-08, Pedro Kantek

228

verso de 10 de fevereiro de 2008 a

CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS

17.2.2

Exerc cio 2.2

Suponha a chamada EX2 ( 1, 4, 6, 3, 3, 2 ), com a seguinte denio ca 1: funo EX2 (inteiro A, B, C, D, E, F) ca 2: se (( (D 6)) ( (D > 5))) ento a 3: se (( (D > 1)) ( (C > 1))) ento a 4: AD5 5: seno a 6: DC-3 7: mse 8: AE-4 9: seno a 10: CA-3 11: se ((C < 2) (F = 5)) ento a 12: DE-B 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca

17.2.3

Exerc cio 2.3

Suponha a chamada EX3 ( 4, 1, 2, 3, 3, 1 ), com a seguinte denio ca 1: funo EX3 (inteiro A, B, C, D, E, F) ca 2: se ( (F 1)) ento a 3: se ((E = 3) (E > 4)) ento a 4: BF2 5: seno a 6: FE+F 7: mse 8: CB3 9: seno a 10: EC+E 11: se ((D 1) (E 6)) ento a 12: DFE 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca

17.2.4

Exerc cio 2.4

Suponha a chamada EX4 ( 6, 4, 6, 4, 2, 4 ), com a seguinte denio ca 1: funo EX4 (inteiro A, B, C, D, E, F) ca 2: se (( (D 2)) (E = 6)) ento a 3: se (((D < 6) (A = 6)) ( (F 6))) ento a 4: AC-B 5: seno a 6: BFD 7: mse 8: CA-5 9: seno a
verso de 10 de fevereiro de 2008 a

229

88-08, Pedro Kantek

CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS


10: 11: 12: 13: 14: 15: 16:

FF2 se (((A < 6) ( (B = 6))) ( (A = 6))) ento a DB+4 mse mse imprima A + B + C + D + E m {funo} ca

17.2.5

Exerc cio 2.5

Suponha a chamada EX5 ( 1, 2, 4, 2, 6, 6 ), com a seguinte denio ca 1: funo EX5 (inteiro A, B, C, D, E, F) ca 2: se (((B = 1) (B > 1)) ( (F > 4))) ento a 3: se ( (A < 4)) ento a 4: CA+E 5: seno a 6: CE2 7: mse 8: EB-4 9: seno a 10: FF2 11: se (C > 2) ento a 12: AFD 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca

17.2.6

Exerc cio 2.6

Suponha a chamada EX6 ( 6, 2, 6, 1, 5, 3 ), com a seguinte denio ca 1: funo EX6 (inteiro A, B, C, D, E, F) ca 2: se ((( (A > 4)) ( (A 1))) ( (A > 6))) ento a 3: se ( (F 4)) ento a 4: BF+2 5: seno a 6: CD4 7: mse 8: AC+3 9: seno a 10: DA-C 11: se (( (A = 4)) (E 3)) ento a 12: FC-4 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {funo} ca
88-08, Pedro Kantek

230

verso de 10 de fevereiro de 2008 a

CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS Respostas
1 2 3 4 5 6

17.2.7
1.1 1.2 17 1.3 21 1.4 5 1.5 17 1.6 14 2.1 2.2 15 2.3 15 2.4 29 2.5 38 2.6 19

Respostas
49

24

verso de 10 de fevereiro de 2008 a

231

88-08, Pedro Kantek

CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS

88-08, Pedro Kantek

232

verso de 10 de fevereiro de 2008 a

Cap tulo 18

Exerc cios Prticos: a 018-FLuxogramas


18.1 Exerc cios de Fluxos e Pseudocdigo o

A seguir, so apresentados um uxograma e a seguir um trecho em pseudo-cdigo. a o Ambos devem ser analisados e deve-se chegar a uma concluso: so equivalentes ? Se a a forem, os nmeros que identicam cada exerc devem ser somados. Ao nal da srie, u cio e a soma deve ser respondida.

18.1.1
ex001 A>4 v ZZ-3

Exerc cio 1

KL-7

TY5

MM4

TZ+6 m

MK+2

ex001 se (A>4) ent~o a ZZ-3 TY5 TZ+6 sen~o a KL-7 233

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS MM4 MK+2 fim{se} Se os trechos acima forem equivalentes, some 1 ` resposta. a ex002 A>5 B=9 v ZY-8 m KN+2

ex002 se (A5)(B=9) ent~o a ZY-8 sen~o a KN+2 fim{se} Se os trechos acima forem equivalentes, some 2 ` resposta. a ex004 A>8 v C2 v TZ+2 MK+9 TT6

YT4 m

KM9

SP5

ex004 se (A>8) ent~o a TZ+2 YT4 sen~o a se (C>2) ent~o a MK+9


88-08, Pedro Kantek

234

verso de 10 de fevereiro de 2008 a

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS KM9 sen~o a TT6 SP5 fim{se} fim{se} Se os trechos acima forem equivalentes, some 4 ` resposta. a ex008 A=1 v C=4 v MK-7 E=5 v PS7

TY-4

NN6

SR-7

XT-8 m

KK-2

RT6

UH+1

ex008 se (A=1) ent~o a se (E=5) ent~o a PS7 SR-7 RT6 sen~o a UH+1 fim{se} sen~o a se (C=4) ent~o a MK-7 NN6 KK-2 sen~o a TY-4 XT-8 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 ` resposta. a
verso de 10 de fevereiro de 2008 a

235

88-08, Pedro Kantek

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex016 A=7 B3 v C=5 v YZ5 LL8 SP-6

YZ5

NK3

SR9

XT9 m

MM7

SP2

ex016 se (A=7)(B<3) ent~o a se (C=5) ent~o a SP-6 SR9 SP2 sen~o a LL8 NK3 MM7 fim{se} sen~o a YZ5 YZ5 XT9 fim{se}

Se os trechos acima forem equivalentes, some 16 ` resposta. a


88-08, Pedro Kantek

236

verso de 10 de fevereiro de 2008 a

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex032 A=6 B1 v C6 v YZ2 E=6 v SP+9

YX-6

ML+4

TP8

JG5

TY+9 m

MK2

RT7

HU3

ex032 se (A=6)(B<1) ent~o a se (C6) ent~o a YZ2 YX-6 TY+9 sen~o a ML+4 MK2 fim{se} sen~o a se (E=6) ent~o a SP+9 TP8 RT7 sen~o a JG5 HU3 fim{se} fim{se}

Se os trechos acima forem equivalentes, some 32 ` resposta. a


verso de 10 de fevereiro de 2008 a

237

88-08, Pedro Kantek

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex064 A2 B3 v C1 D>2 v ZX-2 SS-6

ZY+7 m

LM4

RT6

ex064 se (A2)(B3) ent~o a se (C1)(D>2) ent~o a SS-6 RT6 sen~o a LM4 fim{se} sen~o a ZX-2 ZY+7 fim{se}

Se os trechos acima forem equivalentes, some 64 ` resposta. a


88-08, Pedro Kantek

238

verso de 10 de fevereiro de 2008 a

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex128 A=6 B9 v C9 D=4 v YX4

E3 F<1 v RP5

ZZ9

TR8

XY7 m

NM8

TP+2

JU+9

ex128 se (A=6)(B<9) ent~o a se (E<3)(F1) ent~o a RP5 TR8 TP+2 sen~o a JU+9 fim{se} sen~o a se (C>9)(D=4) ent~o a NM8 sen~o a YX4 ZZ9 XY7 fim{se} fim{se}

Se os trechos acima forem equivalentes, some 128 ` resposta. a Responda a soma dos exerc cios que so equivalentes a

18.1.2

Exerc cio 2

A seguir, some o nmero dos exerc u cios em que o trecho de pseudocdigo 100% equivo e alente ao uxograma apresentado
verso de 10 de fevereiro de 2008 a

239

88-08, Pedro Kantek

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex001 A5 v KM-2

ZX3 m

LM9

ex001 se (A5) ent~o a ZX3 sen~o a KM-2 LM9 fim{se}

Se os trechos acima forem equivalentes, some 1 ` resposta. a ex002 A1 B<2 v TX+4 m MK3

ex002 se (A>1)(B2) ent~o a TX+4 sen~o a MK3 fim{se}

Se os trechos acima forem equivalentes, some 2 ` resposta. a


88-08, Pedro Kantek

240

verso de 10 de fevereiro de 2008 a

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex004 A=6 v C7 v TT-9

TT-8 m

LK+7

RS+7

ex004 se (A=6) ent~o a se (C>7) ent~o a TT-9 RS+7 sen~o a LK+7 fim{se} sen~o a TT-8 fim{se} Se os trechos acima forem equivalentes, some 4 ` resposta. a ex008 A9 v E>1 v C=4 v XZ+4 JH3 GU2

XT-5 m

LL-9

PT5

JJ3

verso de 10 de fevereiro de 2008 a

241

88-08, Pedro Kantek

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex008 se (A<9) ent~o a se (E1) ent~o a PT5 sen~o a GU2 JH3 JJ3 fim{se} sen~o a se (C=4) ent~o a LL-9 sen~o a XZ+4 XT-5 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 ` resposta. a ex016 A=5 B=8 v TY2 C>8 v TY-8 KN2

XX-6 m

NM-3

PT5

ex016 se (A=5)(B=8) ent~o a TY2 TY-8 XX-6 sen~o a se (C>8) ent~o a KN2 NM-3 sen~o a PT5 fim{se}
88-08, Pedro Kantek

242

verso de 10 de fevereiro de 2008 a

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS fim{se}

Se os trechos acima forem equivalentes, some 16 ` resposta. a ex032 A=4 B<2 v C<5 v LK2 E>4 v TR-9

ML-4

PP+9

ZT+3 m

LM9

PS6

GG9

ex032 se (A=4)(B<2) ent~o a se (C<5) ent~o a TR-9 PP+9 PS6 sen~o a GG9 fim{se} sen~o a se (E>4) ent~o a LK2 ML-4 LM9 sen~o a ZT+3 fim{se} fim{se}

Se os trechos acima forem equivalentes, some 32 ` resposta. a


verso de 10 de fevereiro de 2008 a

243

88-08, Pedro Kantek

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex064 A=2 B>3 v C<5 D5 v TR-6

XT2

MM5

ST-2

TZ6 m

LK+9

RP3

ex064 se (A=2)(B3) ent~o a se (C5)(D>5) ent~o a TR-6 ST-2 RP3 sen~o a MM5 LK+9 fim{se} sen~o a XT2 TZ6 fim{se}

Se os trechos acima forem equivalentes, some 64 ` resposta. a


88-08, Pedro Kantek

244

verso de 10 de fevereiro de 2008 a

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

ex128 A>5 B7 v C=4 D=4 v KM9 E=3 F3 v TS5 JG-8

XT2 m

LL+4

ex128 se (A>5)(B7) ent~o a se (C=4)(D=4) ent~o a TS5 sen~o a JG-8 fim{se} sen~o a se (E=3)(F3) ent~o a KM9 LL+4 sen~o a XT2 fim{se} fim{se} Se os trechos acima forem equivalentes, some 128 ` resposta. a Responda a soma dos exerc cios que so equivalentes a

18.1.3
1 2

Respostas
153 93

verso de 10 de fevereiro de 2008 a

245

88-08, Pedro Kantek

CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS

88-08, Pedro Kantek

246

verso de 10 de fevereiro de 2008 a

Cap tulo 19

Exerc cios Prticos: 018 a Nassi


Nassi e Pseudocdigo: A seguir, some o nmero dos exerc o u cios em que o trecho de pseudo- cdigo 100% equivalente ao diagrama de Nassi apresentado o e

19.0.4
ex001

Exerc cio 1

A=1 MK8 KN5 KM2

ZZ+4 TZ5 ZX9

ex001 se (A=1) ent~o a ZZ+4 TZ5 ZX9 sen~o a MK8 KN5 KM2 fim{se}

Se os trechos acima forem equivalentes, some 1 ` resposta. a 247

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI

ex002 A=5 B>5 LM3 KN4 LN2

YZ3

ex002 se (A=5)(B>5) ent~o a LM3 KN4 LN2 sen~o a YZ3 fim{se} Se os trechos acima forem equivalentes, some 2 ` resposta. a ex004 A=1 v C=7 PP-5 SP8 RT4

f f

YZ9 XX-4

KL2

ex004 se (A=1) ent~o a se (C=7) ent~o a PP-5 SP8 RT4 sen~o a KL2 fim{se} sen~o a YZ9 XX-4 fim{se}
88-08, Pedro Kantek

248

verso de 10 de fevereiro de 2008 a

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI

Se os trechos acima forem equivalentes, some 4 ` resposta. a ex008 A1 C4 KN3 NK+3 f v RR-7 E>1 HH4 GJ-5

v v

f f

ZX4

ex008 se (A<1) ent~o a se (E1) ent~o a RR-7 sen~o a HH4 GJ-5 fim{se} sen~o a se (C<4) ent~o a KN3 NK+3 sen~o a ZX4 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 ` resposta. a ex016 A<8 B=5 v C<6 RR+7 SP5

v TZ-5

f f

NM+8

ex016 se (A8)(B=5) ent~o a TZ-5 sen~o a


verso de 10 de fevereiro de 2008 a

249

88-08, Pedro Kantek

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI se (C6) ent~o a NM+8 sen~o a RR+7 SP5 fim{se} fim{se}

Se os trechos acima forem equivalentes, some 16 ` resposta. a ex032 A2 B4 C3 KK3 NM+8 f v E7 UG-3 JU-2

v v

f f

YT1

RS9 TR-3 PT+6

ex032 se (A<2)(B<4) ent~o a se (C3) ent~o a YT1 sen~o a KK3 NM+8 fim{se} sen~o a se (E>7) ent~o a RS9 TR-3 PT+6 sen~o a UG-3 JU-2 fim{se} fim{se}

Se os trechos acima forem equivalentes, some 32 ` resposta. a


88-08, Pedro Kantek

250

verso de 10 de fevereiro de 2008 a

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI

ex064 A2 B6 v C>5 D=3 RS+2

v ZZ-1

f f

NK8 KM5 KM3

ex064 se (A<2)(B>6) ent~o a ZZ-1 sen~o a se (C5)(D=3) ent~o a NK8 KM5 KM3 sen~o a RS+2 fim{se} fim{se} Se os trechos acima forem equivalentes, some 64 ` resposta. a ex128 A6 B>6 C=4 D<1 MM7 f v E7 F>2 HG+6

v v

f f

YY3 YT+3 ZX4

TT+6 TT2

ex128 se (A>6)(B6) ent~o a se (C=4)(D<1) ent~o a YY3 YT+3 ZX4


verso de 10 de fevereiro de 2008 a

251

88-08, Pedro Kantek

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI sen~o a MM7 fim{se} sen~o a se (E>7)(F2) ent~o a TT+6 TT2 sen~o a HG+6 fim{se} fim{se} Se os trechos acima forem equivalentes, some 128 ` resposta. a Responda a soma dos exerc cios que so equivalentes a

19.0.5
ex001

Exerc cio 2

v XX-9

A=8 KK6

XZ8

ex001 se (A=8) ent~o a XX-9 XZ8 sen~o a KK6 fim{se} Se os trechos acima forem equivalentes, some 1 ` resposta. a ex002 A4 B=8 LM4 NM4 NK+2 252

TZ6 TZ5

88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI

ex002 se (A4)(B=8) ent~o a LM4 NM4 NK+2 sen~o a TZ6 TZ5 fim{se}

Se os trechos acima forem equivalentes, some 2 ` resposta. a ex004 A>8 v C<6 TP6

v XX-2

f f

NN+6 MK+4 ML-6

ex004 se (A>8) ent~o a XX-2 sen~o a se (C6) ent~o a NN+6 MK+4 ML-6 sen~o a TP6 fim{se} fim{se}

Se os trechos acima forem equivalentes, some 4 ` resposta. a


verso de 10 de fevereiro de 2008 a

253

88-08, Pedro Kantek

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI

ex008 A=5 C1 LL7 KL+5 f v E=1 JG+7 GU6

v v

f f

ZY+2 ZT+5 XY7

RS8 PS+3 RR+5

ex008 se (A=5) ent~o a se (C1) ent~o a ZY+2 ZT+5 XY7 sen~o a LL7 KL+5 fim{se} sen~o a se (E=1) ent~o a RS8 PS+3 RR+5 sen~o a JG+7 GU6 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 ` resposta. a ex016 A>6 B=1 v NL-7 NK3 C3 RT4

f f

TZ9

ex016
88-08, Pedro Kantek

254

verso de 10 de fevereiro de 2008 a

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI se (A>6)(B=1) ent~o a se (C3) ent~o a RT4 sen~o a NL-7 NK3 fim{se} sen~o a TZ9 fim{se}

Se os trechos acima forem equivalentes, some 16 ` resposta. a ex032 A=8 B7 C<4 NK+2 LN8 LK+6 f v TS-9 E3 UG-3 UJ+4 HH+5

v v

f f

YZ7

ex032 se (A=8)(B>7) ent~o a se (E>3) ent~o a TS-9 sen~o a UG-3 UJ+4 HH+5 fim{se} sen~o a se (C4) ent~o a NK+2 LN8 LK+6 sen~o a YZ7 fim{se} fim{se}

Se os trechos acima forem equivalentes, some 32 ` resposta. a


verso de 10 de fevereiro de 2008 a

255

88-08, Pedro Kantek

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI

ex064 A>1 B=4 v NN-2 NK3 C=3 D=1 RS-9 SR5 PR4

f f

YX7 TX8

ex064 se (A1)(B=4) ent~o a se (C=3)(D=1) ent~o a RS-9 SR5 PR4 sen~o a NN-2 NK3 fim{se} sen~o a YX7 TX8 fim{se} Se os trechos acima forem equivalentes, some 64 ` resposta. a ex128 A7 B=7 C=9 D=8 LM5 ML+7 f v E=2 F4 GH+2 HU-2 GJ8

v v

f f

YX4 XY-9

RS2 TP-2

ex128 se (A7)(B=7) ent~o a se (C=9)(D=8) ent~o a YX4


88-08, Pedro Kantek

256

verso de 10 de fevereiro de 2008 a

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI XY-9 sen~o a LM5 ML+7 fim{se} sen~o a se (E=2)(F4) ent~o a RS2 TP-2 sen~o a GH+2 HU-2 GJ8 fim{se} fim{se} Se os trechos acima forem equivalentes, some 128 ` resposta. a Responda a soma dos exerc cios que so equivalentes a

19.0.6
1 2

Respostas
12 232

verso de 10 de fevereiro de 2008 a

257

88-08, Pedro Kantek

CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI

88-08, Pedro Kantek

258

verso de 10 de fevereiro de 2008 a

Cap tulo 20

Exerc cios prticos: 021 - 5 a funoes simples c


20.1 Funes numricas co e

Os exerc cios a seguir esto indicados para desenvolver as habilidades de a


saber resolver condies lgicas co o adquirir destreza em avaliar comandos condicionais ganhar disciplina mental para seguir testes de mesma (chineses)

Os exerc cios a seguir implementam funes. Em todas, as variveis A, B e C so co a a inicializadas no in cio da funo. Voc deve seguir a funo at o nal e neste ponto ca e ca e informar os valores de A, B e C.

20.1.1

Exerc cio 1

Exerc cio 1.1 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 1 4: B 8 5: C 7 6: se (B > 5) ento a 7: se (C = A) ento a 8: se (A B) ento a 9: CC5 10: seno a 11: BB-B 12: mse 13: seno a 14: se (B C) ento a 15: AB-3 16: seno a 17: BB+2 18: mse 259

CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNCOES SIMPLES


19:

20: 21: 22: 23: 24: 25:

mse seno a se ( (C = B)) ento a AC2 seno a BA-3 mse 26: mse 27: imprima A, B, C 28: m{funo} ca

Exerc cio 1.2 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 5 4: B 2 5: C 2 6: se (B < C) ento a 7: se (A C) ento a 8: se (C = B) ento a 9: AC-4 10: seno a 11: AA-A 12: mse 13: seno a 14: se ( (C = B)) ento a 15: BA-4 16: seno a 17: BC+3 18: mse 19: mse 20: seno a 21: se (A < 6) ento a 22: CB+5 23: seno a 24: AC4 25: mse 26: mse 27: imprima A, B, C 28: m{funo} ca Exerc cio 1.3 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 1 4: B 9 5: C 9 6: se ( (C > A)) ento a
88-08, Pedro Kantek

260

verso de 10 de fevereiro de 2008 a

CAP ITULO 20. 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:

se (C B) ento a se (B = C) ento a CB5 seno a BB+B mse seno a se (B > A) ento a CB-2 seno a CC+B mse mse seno a se ( (A = 2)) ento a AA5 seno a BA-2 mse mse imprima A, B, C m{funo} ca

Exerc cio 1.4 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 4 4: B 8 5: C 7 6: se ( (B < A)) ento a 7: se ( (C < B)) ento a 8: se (B < C) ento a 9: BC+4 10: seno a 11: BAB 12: mse 13: seno a 14: se (B < A) ento a 15: CA-B 16: seno a 17: BC+3 18: mse 19: mse 20: seno a 21: se (B = 1) ento a 22: AA+A 23: seno a 24: BC-4 25: mse 26: mse
verso de 10 de fevereiro de 2008 a

261

88-08, Pedro Kantek

CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNCOES SIMPLES


27: 28:

imprima A, B, C m{funo} ca

Exerc cio 1.5 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 7 4: B 8 5: C 8 6: se (A = C) ento a 7: se (C < 3) ento a se (A 4) ento a 8: 9: BA+2 10: seno a 11: CCC 12: mse 13: seno a 14: se ( (B = 1)) ento a 15: AA+2 16: seno a 17: CC+4 18: mse 19: mse 20: seno a 21: se ( (B 3)) ento a 22: BC-4 23: seno a 24: BCA 25: mse 26: mse 27: imprima A, B, C 28: m{funo} ca Respostas Exerc 1 Var. B Exerc 2 Var. C Exerc 3 Var. B Exerc 4 Var. B Exerc 5 Var. B

20.1.2

Exerc cio 2

Exerc cio 2.1 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 8 4: B 4
88-08, Pedro Kantek

262

verso de 10 de fevereiro de 2008 a

CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 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:

C5 se (A < C) ento a se ( (B > C)) ento a se (C < B) ento a BB-2 seno a BA+B mse seno a se ( (C A)) ento a CA+5 seno a BB+B mse mse seno a se (B = A) ento a AAA seno a CB+C mse mse imprima A, B, C m{funo} ca

Exerc cio 2.2 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 4 4: B 5 5: C 7 6: se (A = 1) ento a 7: se ( (B 2)) ento a 8: se ( (B = C)) ento a 9: BA+4 10: seno a 11: BC5 12: mse 13: seno a 14: se (A > C) ento a 15: CC+C 16: seno a 17: CC3 18: mse 19: mse 20: seno a 21: se (B = 2) ento a 22: BC-B 23: seno a 24: AC2
verso de 10 de fevereiro de 2008 a

263

88-08, Pedro Kantek

CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNCOES SIMPLES


25: 26: 27: 28:

mse mse imprima A, B, C m{funo} ca

Exerc cio 2.3 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 9 4: B 8 5: C 7 6: se (B > C) ento a 7: se ( (A = 4)) ento a 8: se ( (B < 5)) ento a 9: BC4 10: seno a 11: AB-2 12: mse 13: seno a 14: se (C < A) ento a 15: CB-3 16: seno a 17: AB5 18: mse 19: mse 20: seno a 21: se ( (A 1)) ento a 22: BA-5 23: seno a 24: AA-5 25: mse 26: mse 27: imprima A, B, C 28: m{funo} ca Exerc cio 2.4 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 3 4: B 2 5: C 9 6: se (A = 2) ento a 7: se ( (C > 1)) ento a 8: se (C 5) ento a 9: CA2 10: seno a 11: BB5 12: mse
88-08, Pedro Kantek

264

verso de 10 de fevereiro de 2008 a

CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNCOES SIMPLES


13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:

seno a se (C = 1) ento a AAA seno a BA-4 mse mse seno a se (C = 2) ento a AA+C seno a CCA mse mse imprima A, B, C m{funo} ca

Exerc cio 2.5 Suponha a chamada ` funo CALC, com a seguinte denio a ca ca 1: funo CALC ca 2: inteiro A, B, C 3: A 1 4: B 6 5: C 6 6: se ( (C = 2)) ento a 7: se (C = 3) ento a 8: se (A = 2) ento a 9: BA4 10: seno a 11: BA-5 12: mse 13: seno a 14: se (A > C) ento a 15: CA+3 16: seno a 17: CC+5 18: mse 19: mse 20: seno a 21: se (B = A) ento a 22: BB+B 23: seno a 24: AAB 25: mse 26: mse 27: imprima A, B, C 28: m{funo} ca
verso de 10 de fevereiro de 2008 a

265

88-08, Pedro Kantek

CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNCOES SIMPLES Respostas Exerc 1 Var. C Exerc 2 Var. B Exerc 3 Var. B Exerc 4 Var. C Exerc 5 Var. B

20.1.3
1 1.1 0 1.2 7 1.3 -1 1.4 10 1.5 4 2 2.1 9 2.2 2 2.3 28 2.4 27 2.5 -4

Respostas

88-08, Pedro Kantek

266

verso de 10 de fevereiro de 2008 a

Cap tulo 21

Exerc cios Prticos: 024 -DVs a


21.1 D gitos Vericadores

Segurana da informao c ca Segurana de Informao est relacionada com a proteo existente ou necessria sobre c ca a ca a dados que possuem valor para algum ou uma organizao. e ca Possui aspectos bsicos como condencialidade, integridade e disponibilidade da ina formao e no se aplica ou est restrita a sistemas computacionais, nem a informaes ca a a co eletrnicas ou qualquer outra forma mecnica de armazenamento. Ela se aplica a todos o a os aspectos de proteo e armazenamento de informaes e dados, em qualquer forma. ca co Um dos padres de segurana mais conhecidos o BS7799, que estabelece melhores o c e prticas para implementao e na gesto da segurana da informao. A srie de nora ca a c ca e mas ISO 27000, encabeadas pela ISO 27001 esto sendo elaboradas para substituir e c a completar os padres denidos pela BS7799. o Algumas normas denem aspectos que devem ser levados em considerao ao elaborar ca pol ticas de segurana. Entre essas normas esto a BS 7799 (elaborada pela British c a Standards Institution) e a NBR ISO/IEC 17799 (a verso brasileira desta primeira). A a ISO comeou a publicar a srie de normas 27000, em substituio ` ISO 17799 (e por c e ca a conseguinte ` BS 7799), das quais a primeira, ISO 27001, foi publicada em 2005. a Entende-se por informao todo e qualquer contedo ou dado que tenha valor para ca u alguma organizao ou pessoa. Ela pode estar guardada para uso restrito ou exposta ao ca pblico para consulta ou aquisio. u ca A segurana de uma determinada informao pode ser afetada por fatores comporc ca tamentais e de uso de quem se utiliza dela, pelo ambiente ou infra-estrutura que a cerca ou por pessoas mal intencionadas que tem o objetivo de furtar, destruir ou modicar a informao. ca A tr ade CIA (Condentiality, Integrity and Availability) Condencialidade, Integridade e Disponibilidade representa as principais propriedades que, atualmente, orientam a anlise, o planejamento e a implementao da segurana para um determia ca c nado grupo de informaes que se deseja protejer. co Outras propriedades esto sendo apresentadas (legitimidade e autenticidade) na mea dida em que o uso de transaes comerciais em todo o mundo, atravs de redes eletrnicas co e o (pblicas ou privadas) se desenvolve. u
Condencialidade - propriedade que limita o acesso a informao to somente `s ca a a entidades leg timas, ou seja, `quelas autorizadas pelo proprietrio da informao. a a ca Integridade - propriedade que garante que a informao manipulada mantenha ca

267

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS todas as caracter sticas originais estabelecidas pelo proprietrio da informao, ina ca cluindo controle de mudanas e garantia do seu ciclo de vida (nascimento, manuteno c ca e destruio). ca
Disponibilidade - propriedade que garante que a informao esteja sempre dispon ca vei para o uso leg timo, ou seja, por aqueles usurios autorizados pelo proprietrio da a a informao. ca

Mecanismos de segurana O suporte para as recomendaes de segurana pode ser c co c encontrado em:
Controles f sicos: so barreiras que limitam o contato ou acesso direto a informao a ca ou a infra-estrutura (que garante a existncia da informao)que a suporta. e ca

Existem mecanismos de segurana que apiam os controles f c o sicos: Portas / trancas / paredes / blindagem / guardas / etc ..
Controles lgicos: so barreiras que impedem ou limitam o acesso a informao, o a ca que est em ambiente controlado, geralmente eletrnico, e que, de outro modo, a o caria exposta a alterao no autorizada por elemento mal intencionado. ca a

Existem mecanismos de segurana que apiam os controles lgicos: c o o Mecanismos de encriptao. Permitem a transformao revers ca ca vel da informao de forma a torn-la inintelig ca a vel a terceiros. Utiliza-se para tal, algoritmos determinados e uma chave secreta para, a partir de um conjunto de dados no encriptados, produzir uma sequncia de dados encriptados. A a e operao inversa a desencriptao. ca e ca Assinatura digital. Um conjunto de dados encriptados, associados a um documento do qual so funo, garantindo a integridade do documento associado, a ca mas no a sua condencialidade. a Mecanismos de garantia da integridade da informao. Usando funes de ca co Hashingou de checagem, consistindo na adio. ca Mecanismos de controle de acesso. Palavras-chave, sistemas biomtricos, ree walls, cartes inteligentes. o Mecanismos de certicao. Atesta a validade de um documento. ca Integridade. Medida em que um servio/informao genuino, isto , esta c ca e e protegido contra a personicao por intrusos. ca Existem duas losoas por trs de qualquer pol a tica de segurana: a proibitiva (tudo c que no expressamente permitido proibido) e a permissiva (tudo que no proibido a e e a e permitido). e Integridade
erros poss veis em digitao ca

erro obliterao ca repetio ca transposio ca substituio ca fraude


88-08, Pedro Kantek

era 1234 1234 1234 1234 1234

foi digitado 123 12234 1324 7234 5678 268


verso de 10 de fevereiro de 2008 a

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS


Para minimizar estes erros, usa-se o conceito de d gito vericador. Trata-se de um d gito que obtido como uma funo matemtica do cdigo e grudado nele. e ca a o e

Pela simples anlise do DV poss detectar grande parte dos erros acima dea e vel scritos.
A funo mais usada MOD, j que uma funo de mo unica. (no tem inversa) ca e a e ca a a Por exemplo DOBRO de 2 4. Logo A METADE de 4 2. J 8 MOD 7 1. Mas e e a e no poss determinar x em X mod 7 = 1. x pode ser 8, 22, 29,... a e vel

Exemplos UPC=Cdigo de produto universal E o cdigo de barras que encontramos nos o o produtos do supermercado. As 3 primeiras posies do cdigo indicam o pa de produo co o s ca do bem. Neste caso, o Brasil 789. e O ultimo d gito (0 13o ) assim obtido: 1. Soma-se os d e gitos que ocupam posies co mpares (1, 3, 5...) e multiplica-se o resultado por 3. 2. Soma-se os d gitos que ocupam posies pares, e soma-se este resultado ao da etapa anterior 3. Subtrai-se o resultado co do prximo mltiplo de 10. O resultado o DV. o u e Sejam exemplos de um recipiente de tinta de carimbo, marca Japan Stamp. Seu cdigo 7898076820584. o e Calcule e ache o resultado correto (4). Outro exemplo, um tubo de cola Tenaz. Seu cdigo 7891200304295. o e Note-se que `s vezes, a indstria procede diferente. Ao invs do cdigo do produto a u e o ocupar as posies 4 a 12, sendo o DV a posio 13, o cdigo do produto passa a ocupar co ca o as posies 5 a 13, e o DV (de maneira a que o ultimo d co gito do produto na posio 13) ca seja correto, o 5 d gito convenientemente estabelecido. e ISBN 10 (International Standard Book Number) O ultimo d gito da srie de 10 e do ISBN o DV. Ele calculado de maneira a que multiplicando cada d e e gito do cdigo o pela sua posio (comeando da direita e em 1) e somando tudo, o resto desta soma por ca c 11 deve ser 0. Acompanhe o exemplo: Seja o ISBN 85-7001-926-? (idioma-editor-livro-dv). Multiplicase 8 por 10, 5 por 9, 7 por 8, 1 por 5, 9 por 4, 2 por 3, 6 por 2 e o resultado 240. e Dividindo 240 por 11 tem-se 21.8, e portanto o prximo inteiro divis por 11 11 o vel e vezes 22, que 242. e Fazendo-se 242-240=2 que o DV procurado. e O ISBN 13 (em uso a partir de Janeiro de 2007) gera seu d gito da mesma maneira que o UPC. Cdigos de carto de crdito Usa-se o algoritmo de Luhn, (Hans Peter Luhn, o a e funcionrio da IBM, 1896-1964), tambm conhecido como mdulo 10, foi desenvolvido a e o nos anos 60, como um mtodo para validar cdigos. Ele usado nos nmeros de carto e o e u a de crdito e no cdigo de seguro social do Canad. O algoritmo de dom e o a e nio pblico. u Ele protege contra o erro acidental e no contra o ataque malicioso. a Comeando com o d c gito mais a direita (que o DV), dobre o valor dos d e gitos alternados. Para cada valor que ultrapasse 10, tome os seus d gitos juntos. Por exemplo 1111 gera 2121, enquanto 8763 gera 7733, (de 2x6=12 1+2=3 e 2x8=161+6=7). Some todos os d gitos juntos. Por exemplo, 1111 vira 2121 ento 2+1+2+1 6. J a e a 8763 torna-se 7733, ento 7+7+3+3 20. a e Se o total termina em zero ( mltiplo de 10) o cdigo completo vlido de acordo e u o e a com a frmula de Luhn, seno no . Ento 1111 no vlido enquanto 8763 . o a a e a a e a e
verso de 10 de fevereiro de 2008 a

269

88-08, Pedro Kantek

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS Para testar o algoritmo de Luhn, calcule o DV do carto 4931 4701 2604 479?. A a resposta deve ser 2. Este algoritmo tambm usado no sistema bancrio da Noruega, no cdigo ISSN e e a o (peridicos), no nmero de identicao do ve o u ca culo em alguns estados americanos, no carto de identicao de israelenses e no Yugoslav Unique Master Citizen Number a ca (JMBG). Cdigo de barras da FEBRABAN Este cdigo est presente no sistema bancrio o o a a brasileiro e ele permite o intercmbio de pagamentos entre os bancos (ou seja, um t a tulo de um banco pode ser pago em qualquer outro, at o vencimento). e Alm do cdigo de barras, adequado para uma leitura mecnica, existe um cdigo e o a o numrico, que contm as mesmas informaes, mas no na mesma ordem. Note-se e e co a tambm que os d e gitos vericadores s aparecem no cdigo numrico a digitar, mas no o o e a no cdigo de barras. Aqui eles so desnecessrios. o a a O cdigo numrico formado por 5 campos. O primeiro, de 10 d o e e gitos formado e pelo cdigo do banco (3 posies, B1 , B2 , B3 ), cdigo da moeda (9=real, M4 ), e pelas o co o posies L20 , L21 ,L22 ,L23 ,L24 do contedo livre (rea do cliente), alm de um DV obtido co u a e pelo mtodo de base 10. e O segundo campo contendo 11 d gitos formado pelo conjunto L25 ,...,L34 alm de e e um novo DV base 10. O terceiro campo contendo 11 d gitos formado pelo conjunto L35 ,...,L44 alm de e e um novo DV base 10. O quarto campo o DV do conjunto completo, calculado com o d e gito 11 e pesos 2345678923... onde o 2 inicial corresponde ao caracter mais ` direita. Nesta represena taao ele o D5 . c e Finalmente, o quinto campo formado por 14 d e gitos, sendo os 4 primeiros o fator de vencimento (dias decorridos desde 07/10/1997) at o dia de vencimento, ou seja F6 , e F7 ,F8 ,F9 , e depois vem os 10 d gitos do valor, com centavos, ou seja, o V10 , V11 , V12 , V13 , V14 , V15 , V16 , V17 , V18 , V19 . O cdigo de barras, apresenta os dados na ordem em que eles foram apresentados o acima, a saber: B1 , B2 , B3 , M4 , D5 , F6 , F7 , F8 , F9 , V10 , V11 , V12 , V13 , V14 , V15 , V16 , V17 , V18 , V19 , L20 , L21 ,...,L44 . Alm destes sinais, o cdigo de barra comea por um start e termina e o c por um stop. Este cdigo o chamado entrelado 5-2, j que os d o e ca a gitos so calculados a de 5 em 5 sinais, e tanto as barras quanto os espaos so usados para o reconhecimento. c a No clculo do DV mod 11, ao subtrair 11 menos o resto da diviso, se a resposta for a a 0, 1 ou maior do que 9, o d gito vericador 1. e O que obliterao ? e ca

- 2 Na acepo 2 do Aurlio, obliterar destruir, eliminar, suprimire sobre isto que ca e e e nos fala esta histria. Quantas vezes ao escrever uma palavra qualquer no micro ecreveo mos (ateno reviso: ecrevemos e no escrevemos) errado ? Voc acabou de ver uma ca a e a e obliterao, algum (meus dedos ?) sumiu com a letra sde escrevemos. ca e Isto comum quando o pensamento mais rpido que os dedos que digitam, isto quase e e a e sempre. Via de regra, depois que se termina um texto, mandam os bons constumes que o digitador leia o que escreveu, e neste caso as obliteraes so em geral descobertas e co a corrigidas. Quando o texto muito importante, comum pedir-se a outra pessoa que faa a e e c reviso, j que muitos erros cometidos pelo digitador no podem ser facilmente descobertos a a a por esse mesmo revisor. H necessidade de um terceiro. a So cuidados m a nimos para no pagar mico, e na sua falta, o implacvel impondervel a a a sempre d as suas caras, como vai-se ver a seguir. a
88-08, Pedro Kantek

270

verso de 10 de fevereiro de 2008 a

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS A cena o exame nal do curso de informtica em uma universidade bem conceituada e a de Curitiba. Nesse curso, os alunos para se formarem precisam construir um software desde a sua concepo at sua operao sem nenhum erro grave. Eles tm 1 ano para essa ca e ca e tarefa e acreditem-me, geralmente pouco tempo. e H alguns anos, uma equipe estava na ultima banca para aprovao. Ns chamamos esta a ca o banca de magna, pois por ser a ultima composta por todos os professores orientadores, e que naquele ano eram em nmero de 9. A equipe em questo era formada por 3 alunas, u a bonitas, charmosas e tambm competentes, no esqueamos de armar. e a c Estavam as 3 nervosas, roendo os dedos que as unhas j haviam acabado, numa espera a imensa e infernal quando chegou a vez delas: Entraram na sala, instalaram o software, os micros, eram 3 que aquilo rodava em rede, o canho, enm todas essas parafernlias que a a todos to bem conhecemos. a Rolava a apresentao, sem maiores problemas, o que por s s j devia ser srio ind ca o a e cio de que alguma coisa grave ia acontecer, essas coisas nunca rolam sem maiores problemas, quando... Mostrou-se uma transparncia imensa cujo t e tulo era processamento de pedidos , anal o software era para automatizar uma pequena lojinha de bairro. Nessa hora a obliterao (a maldita) introduziu-se na histria. O digitador (o maldito) ca o esquecera-se de digitar, obliterara uma letra no t tulo. Maior gravidade no haveria se fosse a qualquer letra, mas qual o qu: a letra roubada fora a terceira letra da terceira palavra, as e alunas estavam apresentando uma transparncia onde em letras garrafais se dizia processae mento de peidos. No preciso descrever como terminou a banca. Apenas informo que as alunas foram a aprovadas, o software estava muito bom. Pedro Kantek Os principais mtodos usados: e

21.1.1

Mdulo 10 o

Separe os d gitos do cdigo a processar. Ex: se o cdigo 13865, tem-se d1 = 1, o o e d2 = 3, d3 = 8, d4 = 6 e d5 = 5. Crie um vetor de pesos P, com o mesmo nmero de d u gitos, e contendo 2 e 1, comeando com 2 e alternando. Ex: p1 = 2, p2 = 1, p3 = 2, p4 = 1, p5 = 2. c Multiplique os dois vetores, tirando NOVES FORA em cada multiplicao. Ex: ca m1 = 1 2 = 2, m2 = 3 1 = 3, m3 = 8 2 = 16, noves fora=7, m4 = 1 6 = 6, m5 = 2 5 = 1 Some os elementos do vetor multiplicao. Ex:2 + 3 + 7 + 6 + 1 = 19 ca O que faltar para completar a prxima dezena ser o DV mod 10. No exemplo, o o a que falta a 19 para completar 20 1. Logo DV = 1. e Obs: 1: noves fora: se x > 9, x x 9 ; 2:se deu a dezena, a resposta 0. e

21.1.2

Mdulo 11 o

Separe os d gitos. Crie vetor P. O menor peso 2, alocado ao d e gito mais a direita. A seqncia de ue pesos cresce para a esquerda. Ex: 7, 6, 5, 4, 3, 2. A lei de formao destes pesos ca PODE VARIAR em cada mtodo. e O DV = 11 resto da soma dividido por 11.
verso de 10 de fevereiro de 2008 a

271

88-08, Pedro Kantek

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS


Se o resto 0 ou 1, o DV igual a 0. (No BB se R=0, DV=X) e e

Letra Chave Este mtodo tem como resposta uma letra e no um d e a gito.
Separe os d gitos e crie um vetor de pesos adequado. Some e ache o resto de uma diviso por 26. a A LC obtida pela equivalncia: R = 0, LC = A; R = 1, LC = B; ... R = e e 25,LC = Z.

Este mtodo se encontra em desuso. Foi usado na Receita do PR at 96. e e

21.1.3

CPF (Cadastro de Pessoas F sicas)

a) So 2 DVs. a b) O primeiro calculado pelo MOD 11, com pesos = 10, 9, 8, 7, 6, 5, 4, 3, 2. e c) O DV calculado colocado no seu lugar e o processo refeito, agora com os pesos: e 11, 10, 9, 8, 7, 6, 5, 4, 3, 2. d) O segundo d gito colocado no seu lugar. e Obs: O nono d gito de um CPF a regio onde foi criado. 6=MG, 7=ES/RJ, 8=SP, e a 9=PR/SC e 0=RS. Por exemplo, seja o CP F = 176.294.338, quais os DVs ? 1 10 + 7 9 + 6 8 + 2 7 + 9 6 + 4 5 + 3 4 + 3 3 + 8 2 = 246, cuja diviso por 11 a tem como resto 4. Logo o primeiro DV 11 4 = 7. e Refazendo 111+710+69+28+97+46+35+34+83+72 = 303,cujo resto da diviso por 11 6. Assim, o DV 11 6 = 5. O CPF completo ca sendo a e e 176.294.338 75. Curiosidade: CPF = 111 111 111, DVs=1,1. CPF = 222 222 222 - 22, 333 333 333 - 33, 444 444 444 - 44, e assim por diante at 999 999 999 - 99 e 000 000 000 - 00. e Veja se acerta: CPF = 357 432 754 . Resposta: 40. CPF = 247 212 764 . Resposta: 27.

21.1.4

CNPJ (antigo CGC)

a) So 3 DVs. a b) O DV1 ocupa a 8.posio do cdigo e um MOD 10 dos 7 d ca o e gitos iniciais. c) O DV2 ocupa a 13.posio e um MOD 11 de todos os anteriores com o vetor de ca e pesos = 543298765432. d) O DV3 ocupa a 14.posio e um MOD 11 de todos os ca e anteriores com os pesos = 6543298765432. Exemplo, seja o CNPJ da COPEL: 7 648 381. O DV 1 = 7 2 = 14, noves fora = 5 + 6 1 = 6, +4 2 = 8, +8 1 = 8, +3 2 = 6, +8 1 = 8, +1 2 = 2. A soma e 43, e o DV1 o que falta para a prxima dezena, NESTE CASO 50, ou DV1=7. Com e o isso o primeiro cdigo : 76.483.817. Continuando: o e A lial 0001, e ca: 76.483.817/0001. 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. O DV2 11 menos o resto de 229 por 11 que 2. e e DV3=76+65+44+83+32+89+18+77+06+05+04+13+22 = 254. O resto de 254 dividido por 11 1, logo o DV3=11-1=10 ou zero. Assim, o CNPJ e completo da COPEL : 76.483.817/0001-20. e
88-08, Pedro Kantek

272

verso de 10 de fevereiro de 2008 a

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS Veja se acerta os CNPJs a seguir: Carrefour: 45.543.91 /0001 . Resposta:581. /0061Resposta:152. Lacta: 57.003.88 BC: 00.038.16 /0001Resposta:605. Observao: Alguns CNPJs inexplicavelmente no seguem o aqui escrito. Aparenteca a mente foram criados antes da regra. Por exemplo, o CGC da Light: 66 444 437/0001-46.

21.2

Exerc cio 1

Calcule os d gitos dos Cadastros de Pessoa F sica: . 1= 3 5 6 9 8 2 1 0 9 2= 8 8 9 4 0 5 5 3 1 .


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-

. .

Some os 10 d gitos achados :

Exerc cio 2
Calcule os d gitos dos Cadastros de Pessoa F sica:

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

. . /0005/0099. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 3
Calcule os d gitos dos Cadastros de Pessoa F sica:

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

. . /0045/0042. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 4
Calcule os d gitos dos Cadastros de Pessoa F sica:

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

. . /0093/0059. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 5
Calcule os d gitos dos Cadastros de Pessoa F sica:

1= 3 7 6 9 5 4 9 4 4 verso de 10 de fevereiro de 2008 a

. 273
88-08, Pedro Kantek

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS 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 . /0009/0008. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 6
Calcule os d gitos dos Cadastros de Pessoa F sica:

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

. . /0041/0002. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 7
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

. . /0005/0003. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 8
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

. . /0006/0028. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 9
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

. . /0005/0086. .

Calcule os d gitos dos seguintes CNPJs:

Some os 10 d gitos achados :

Exerc cio 10
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 -

. .

Calcule os d gitos dos seguintes CNPJs:


88-08, Pedro Kantek

274

verso de 10 de fevereiro de 2008 a

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. .

Some os 10 d gitos achados :

21.2.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

verso de 10 de fevereiro de 2008 a

275

88-08, Pedro Kantek

CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS

88-08, Pedro Kantek

276

verso de 10 de fevereiro de 2008 a

Cap tulo 22

Exerc cios Prticos: 027 a aritmtica no decimal e a


22.1 Aritmtica no decimal e a

A aritmtica, tal como a conhecemos, no sofre nenhuma mudana conceitual ou operae a c cional se passarmos a usar bases no decimais. O sistema de numerao usado, desde a ca que posicional, funciona legal. Para as operaes a seguir, considere um conjunto de d co gitos sujeito as seguintes regras: 1. O primeiro digito sempre ZERO. e 2. Existem tantos d gitos quanto o valor da base. e 3. Se forem necessrios mais de 10 d a gitos, o 11o ser a letra A, o 12o a letra B e a o assim por diante at o 36 d e gito que ser o Z. a Na soma individual, d gito a d gito, a regra simples: se a soma for maior que a base, e retira-se uma base do total e vai um... Na subtrao individual, d ca gito a d gito, se o nmero a subtrair maior do que o u e nmero do qual vai ser feita a subtrao, empresta-se uma base do vizinho esquerdo. u ca Exemplos: 27(10) + 45(10) = + 2 7 4 5 ----7 2

Como 7 + 5 = 12 e 12 maior do que a base, subtrai-se uma base (10) e o resultado e e 2, e vai um. A resposta nal 72. e 94(10) - 59(10) = 9 4 5 9 ----3 5 Como 4 9 no pode ser feito (pois 9 > 4), a soluo emprestar uma base do vizinho. a ca e Com isto, tem-se 4 + 10 = 14, e agora pode-se fazer 14 9, cujo resultado 5. e O um que foi emprestado do 9, deixa-o valendo apenas 8, e agora tem-se 8 5 = 3. O resultado nal 35. e Para facilitar, use a seguinte tabela: 277

CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO DECIMAL 0..9 A B C D = = = = = 0..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

Nos exerc cios a seguir, tente fazer as converses e as operaes solicitadas: o co 1. Conversoes de Base Q para base 10 00122(18) = ________________________(10) 000O7(32) = ________________________(10) 00510(12) = ________________________(10) 001C4(24) = ________________________(10) 02120(07) = ________________________(10) 2. Conversoes de base 10 para base Q 00868(10) = ________________________(22) 00772(10) = ________________________(18) 00642(10) = ________________________(21) 00703(10) = ________________________(09) 00232(10) = ________________________(25) 3. 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. Subtraoes em base diferente de 10 c 00176(18) - 00128(18) = ________________(18) 00297(12) - 00181(12) = ________________(12) 000LF(26) - 000GP(26) = ________________(26) 000DD(27) - 00080(27) = ________________(27)
88-08, Pedro Kantek

278

verso de 10 de fevereiro de 2008 a

CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO DECIMAL

00671(09) - 00271(09) = ________________(09)

22.1.1

Programa VISUALG

A seguir um programa escrito em VISUALG que resolve as adies e subtraes em co co bases no decimais. Note-se que o programa no faz nenhuma consistncia, e se algum a a e erro aparecer, o programa abortar. Eis alguns dos poss a veis erros:
Usar nmeros de comprimento maior que 9 d u gitos Usar bases maiores do que 36 Escrever operaes de subtrao cujo resultado seja negativo co ca Incluir caracteres diferentes de 0..Znos operandos Usar operaes diferentes de + e co Usar espaos 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, c2 : caracter b : inteiro op1 : vetor [1..10] de inteiro op2 : vetor [1..10] de inteiro res : vetor [1..10] de inteiro let : caracter i, j : inteiro funcao achaind (ind:caracter) : inteiro var k : inteiro inicio k <- 1 enquanto (copia(let;k,1) <> ind) faca k <- k + 1 fimenquanto retorne k fimfuncao inicio let <- "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" escreval ("Soma e subtracao de numeros de base qualquer - v.1.1 - P.kantek - 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)

verso de 10 de fevereiro de 2008 a

279

88-08, Pedro Kantek

CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO DECIMAL i <- compr(c1) j <- 10 enquanto (i >= 1) faca op1[j] <- achaind (copia(c1;i,1)) - 1 i <- i - 1 j <- j - 1 fimenquanto i <- compr(c2) j <- 10 enquanto (i >= 1) faca op2[j] <- achaind (copia(c2;i,1)) - 1 i <- i - 1 j <- j - 1 fimenquanto se sinal = "+" entao i <- 10 enquanto (i>=1) faca Se (op1[i] + op2[i]) >= b entao res[i] <- op1[i] + op2[i] - b op1[i-1] <- op1[i-1] + 1 senao res[i] <- op1[i] + op2[i] fimse i <- i - 1 fimenquanto senao i <- 10 enquanto (i>=1) faca Se op1[i]<op2[i] entao res[i] <- b + op1[i] - op2[i] op1[i-1] <- op1[i-1] - 1 senao res[i] <- op1[i] - op2[i] fimse i <- i - 1 fimenquanto fimse para i de 1 ate 10 faca escreva (copia(let;(res[i]+1),1)) fimpara fimalgoritmo Algoritmo de converso de base qualquer para base 10 a algoritmo "convers~oQ10" a var c1 : caracter b : inteiro op1 : vetor [1..10] de inteiro let : caracter i, j : inteiro resu : real funcao achaind (ind:caracter) : inteiro
88-08, Pedro Kantek

280

verso de 10 de fevereiro de 2008 a

CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO DECIMAL var k : inteiro inicio k <- 1 enquanto (copia(let;k,1) <> ind) faca k <- k + 1 fimenquanto retorne k fimfuncao inicio let <- "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" escreval ("Conversao de numeros de base qualquer para base 10 - v.1.1 - P.kantek - ago/07") escreval ("escreva o valor a converter ") leia (c1) escreval ("a base: ") leia(b) i <- compr(c1) j <- 10 enquanto (i >= 1) faca op1[j] <- achaind (copia(c1;i,1)) - 1 i <- i - 1 j <- j - 1 fimenquanto resu <- 0 para i de 1 ate 10 faca resu <- resu + op1[i] * b ^ (10-i) fimpara escreva (resu) fimalgoritmo Algoritmo de converso de base 10 para base qualquer a algoritmo "convers~o10Q" a var c1 : inteiro b : inteiro op1 : vetor [1..10] de inteiro let : caracter i : inteiro resto : inteiro funcao achaind (ind:caracter) : inteiro var k : inteiro inicio k <- 1 enquanto (copia(let;k,1) <> ind) faca k <- k + 1 fimenquanto retorne k fimfuncao inicio let <- "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
verso de 10 de fevereiro de 2008 a

281

88-08, Pedro Kantek

CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO DECIMAL escreval ("Conversao de numeros de base 10 para base qualquer - v.1.1 - P.kantek - ago/07") escreval ("escreva o valor a converter ") leia (c1) escreval ("a base: ") leia(b) resto <- 1 i <- 10 enquanto (resto <> 0) faca resto <- c1 mod b op1[i] <- resto c1 <- c1 div b i <- i - 1 fimenquanto para i de 1 ate 10 faca escreva (copia(let;(op1[i]+1),1)) fimpara fimalgoritmo

22.2
460 A3

Exerc cio 1
(15) = (27) =

1. Converses de Base Q para base 10 o


(10) (10)

2. Converses de base 10 para base Q o 00888 00588


(10) (10)

= =

(11) (12)

3. Somas em base diferente de 10 G4 163


(29) (19)

+ GN

(29)

= =

(29) (19)

+ 1A6

(19)

4. Subtraes em base diferente de 10 co 143 13A


(17) (20)

- F8 - I0

(17) (20)

= =

(17) (20)

88-08, Pedro Kantek

282

verso de 10 de fevereiro de 2008 a

CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO DECIMAL

22.3

Exerc cio 2

1. Converses de Base Q para base 10 o 175 535


(28) = (15) = (10) (10)

2. Converses de base 10 para base Q o 00939 00319


(10) (10)

= =

(13) (32)

3. Somas em base diferente de 10 108 IM


(22) (29)

+ 7F + 7A

(22) (29)

= =

(22) (29)

4. Subtraes em base diferente de 10 co 210 255


(13) (11)

- 151 - 172

(13) (11)

= =

(13) (11)

22.4

Exerc cio 3

1. Converses de Base Q para base 10 o 289 42A


(19) = (11) = (10) (10)

2. Converses de base 10 para base Q o 00783 00212


(10) (10)

= =

(13) (30)

verso de 10 de fevereiro de 2008 a

283

88-08, Pedro Kantek

CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO DECIMAL 3. Somas em base diferente de 10 7J
(24)

+ D3

(24)

= =

(24) (14)

152

(14)

+ 180

(14)

4. Subtraes em base diferente de 10 co 1E0 JD


(18)

- 173

(18)

(18) (25)

(25)

- BG

(25)

22.4.1

Respostas
13R 2G9 181 Q3 KM 2D2 5C 8C 6F 5A 93 7M

1 990 273 738 410 2 985 1175 573 9V 3 883 516 483 72

88-08, Pedro Kantek

284

verso de 10 de fevereiro de 2008 a

Cap tulo 23

Exerc cios Prticos: 031 a Manipulao de datas ca


23.1 Algoritmos de Calendrio a

Srie de algoritmos e truques para calcular dias de semana e datas de feriados mveis e o em nosso calendrio. a

23.1.1

Clculo do dia da semana a

O algoritmo seguinte devido ao astrnomo napolitano Aloysius Lilius e ao matemtico e o a alemo e jesuita Cristopher Clavius. Escrito no sculo XVI usado pelas igrejas ocia e e dentais para calcular o dia do domingo de Pscoa. Existiram outros algoritmos antes a deste. Por exemplo o Canon Paschalis devido a Victorius de Aquitania escrito em cerca de 450 a.C. Dada uma data no formato dia, mes, ano (onde ano > 1587), calcula-se o dia da semana usando a seguinte formulao: ca A ((12 mes) 10) B ano A C mes + (12 A) D (B 100) E (D 4) F E+2D G (365.25 B) H (30.6001 (C + 1)) I F + G + H + dia + 5 R I mod 7 Se R = 0, dia, mes, ano sbado, R = 1 domingo, R = 2 segunda, R = 3 tera e a e e e c R = 4 quarta, R = 5 quinta e R = 6 sexta-feira. e e e Exemplo: Calculemos o dia da semana de hoje, / / 285

dia

CAP ITULO 23. EXERC ICIOS PRATICOS: 031 - MANIPULACAO DE DATAS A B C D E como R = F G H I R , o dia em questo a e .

23.1.2

Clculo dos feriados mveis a o

Os 3 feriados mveis (tera de carnaval, sexta feira santa e Corpus Christi) so baseados o c a todos no dia do domingo de Pscoa. Portanto, a primeira coisa a fazer calcular em a e que dia cai a Pscoa. a Dado um ano com quatro digitos (maior que 1587), a Pscoa : 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 Pscoa o dia Q+1 do ms P. a e e

23.1.3

Bissexto

A regra do bissexto pode ser assim descrita: sejam R4 resto da diviso do ano por 4 a R100 resto da diviso do ano por 100 e a R400 resto da diviso do ano por 400. a SE R4=0 ((R100 = 0) (R400 = 0)) o ano bissexto seno no . e a a e Outra maneira de descrever o algoritmo usando SEs encadeados e 1: se (ANO mod 400) = 0 ento a 2: ... bissexto e 3: seno a 4: se (ANO mod 100) = 0 ento a e 5: ... NAO bissexto 6: seno a 7: se (ANO mod 4) = 0 ento a 8: ... bissexto e 9: seno a e 10: NAO bissexto 11: mse 12: mse
88-08, Pedro Kantek

286

verso de 10 de fevereiro de 2008 a

CAP ITULO 23. EXERC ICIOS PRATICOS: 031 - MANIPULACAO DE DATAS mse Se lembrarmos que os dias de cada ms so 31, (28/29), 31, 30, 31, 30, 31, 31, 30, e a 31, 30, 31. A partir daqui pode-se criar um vetor auxiliar VA com os seguintes valores V A 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 (anos no bissextos) ou a V A 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 (anos bissextos) e calcularmos dc V A[P ] + Q ento dc o dia absoluto a partir de 1/janeiro desse ano. a e A Sexta feira santa dc 2, o carnaval dc 47 e Corpus Christi dc + 60 Note e e e que os dias da semana sempre sero sexta, tera e quinta respectivamente. a c dccarn dc 47, dcsexs dc 2 e dccorp dc + 60 O ms de cada uma dessas datas, deve ser lido em VA vis-a-vis o valor de dcxxxx. e Assim, se dcxxxx 94, essa data corresponde a 4/abril, para um ano no bissexto. e a Mais formalmente: A passagem de dd,mm,aa para dc dc = V A[mes] + dia 1. A e passagem de dc para dd,mm,aa : O dia corresponde a dc MENOS o maior elemento e de VA menor ou igual a dc MAIS 1. Por exemplo, se dc 100 e VA 1 32 60 91 121... e e o dia ser (100-91)+1= dia 10. O ms, por sua vez, corresponde ao a e ndice do elemento acima.
13:

Exemplo: Vamos calcular as 4 datas do ano de 2007 . A B C D E F G H I K L M P Q dc dccarn dcsexs dccorp

23.2

Exerc cio 1
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 25/10/2112 e informe: 2. Calcule o Carnaval de 2112 E o Corpus-Christi de 2112 / /

23.3

Exerc cio 2
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 28/ 2/1605 e informe: 2. Calcule o Carnaval de 1605 E o Corpus-Christi de 1605
verso de 10 de fevereiro de 2008 a

/ / 287
88-08, Pedro Kantek

CAP ITULO 23. EXERC ICIOS PRATICOS: 031 - MANIPULACAO DE DATAS

23.4

Exerc cio 3
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 21/ 7/1893 e informe: 2. Calcule o Carnaval de 1893 E o Corpus-Christi de 1893 / /

23.5

Exerc cio 4
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 10/ 7/2143 e informe: 2. Calcule o Carnaval de 2143 E o Corpus-Christi de 2143 / /

23.6

Exerc cio 5
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 20/12/2131 e informe: 2. Calcule o Carnaval de 2131 E o Corpus-Christi de 2131 / /

23.7

Exerc cio 6
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 17/10/2180 e informe: 2. Calcule o Carnaval de 2180 E o Corpus-Christi de 2180 / /

23.8

Exerc cio 7
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 11/ 4/2114 e informe: 2. Calcule o Carnaval de 2114 E o Corpus-Christi de 2114 / /

23.9

Exerc cio 8
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 16/ 7/1941 e informe: 2. Calcule o Carnaval de 1941 E o Corpus-Christi de 1941
88-08, Pedro Kantek

/ / 288
verso de 10 de fevereiro de 2008 a

CAP ITULO 23. EXERC ICIOS PRATICOS: 031 - MANIPULACAO DE DATAS

23.10

Exerc cio 9
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 20/ 6/1884 e informe: 2. Calcule o Carnaval de 1884 E o Corpus-Christi de 1884 / /

23.11

Exerc cio 10
(0=sab, 1=dom,...6=sex)

1. Calcule dia da semana do dia 29/10/1999 e informe: 2. Calcule o Carnaval de 1999 E o Corpus-Christi de 1999 / /

23.12
1 2 3 4 5 6 7 8 9 10 3 2 6 4 5 3 4 4 6 6

Respostas
(tera) c (segunda) (sexta) (quarta) (quinta) (tera) 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

verso de 10 de fevereiro de 2008 a

289

88-08, Pedro Kantek

CAP ITULO 23. EXERC ICIOS PRATICOS: 031 - MANIPULACAO DE DATAS

88-08, Pedro Kantek

290

verso de 10 de fevereiro de 2008 a

Cap tulo 24

Exerc cios Prticos: 035 a Localizao de oleoduto ca


24.1 Localizao de oleoduto ca

Suponha que voc tem um terreno de 100 km 100 km contendo um certo nmero de e u poos de petrleo. O terreno ir ser atravessado integralmente por um duto mestre, c o a ao qual iro se ligar (sempre de maneira transversal, isto , fazendo 90 graus) ramais a e auxiliares que conectaro cada um dos poos ao duto mestre. a c

O objetivo do exerc descobrir por onde dever passar o duto mestre, de maneira cio e a a minimizar a quantidade de duto auxiliar necessrio. O duto mestre sempre ser instaa a lado no sentido NORTE-SUL ou no LESTE-OESTE, conforme explicitado no exerc cio. Outra coisa que voc deve calcular a quantidade de duto auxiliar necessrio (medido e e a em kilmetros). o Os poos sero identicados pelas suas coordenadas (x, y), sendo que a origem dos c a ndices, o ponto 0, 0, estar localizado no canto inferior esquerdo do terreno. A primeira a medida de cada poo (o x) indicar a distncia no sentido leste-oeste e o segundo nmero c a a u (o y) indicar a distncia no norte-sul. a a Assim, se um poo estiver nas coordenadas (12,78), ele se encontrar 12 metros ` c a a direita da origem e 78 metros acima da mesma origem. Veja-se o seguinte exemplo: Suponha-se a seguinte ditribuio de poos: ca c x 11 10 17 5 16 13 1 26 15 y 9 26 19 14 22 20 12 4 25 291

CAP ITULO 24. EXERC ICIOS PRATICOS: 035 - LOCALIZACAO DE OLEODUTO Supondo que o duto principal deva ser extendido no sentido leste-oeste, em qual ordenada ele deveria estar ? Proposta de soluo ca 1. Como o sentido leste-oeste, podem-se desprezar as abcissas. e 2. Ficando apenas com as ordenadas, tm-se: 9, 26, 19, 14, 22, 20, 12, 4, 25. e 3. Deslocando a origem dos indices, a m de diminuir o trabalho braal por meio de c uma translao, ca: 5, 22, 15, 10, 18, 16, 8, 0, 21 ca 4. E razovel se supor que o duto esteja entre o ponto 0 e o ponto 22. Na realidade, a entre 4 e 26, antes da translao. ca 5. Para descobrir onde deve passar suponha-o localizado em cada um dos 9 poos e c mea a quantidade de duto auxiliar necessrio. Neste caso temos: 80, 83, 54, 59, 61, 55, 65, 115, 76 c a 6. Como se pode ver o menor valor de 54 km, correspondendo ` ordenada 19, do e a terceiro poo. c 7. A resposta esperada, portanto 54,19, signicando que so necessrios 54m de e a a duto auxiliar e que o duto principal deve estar entre os pontos 0,19 e 100,19. Se o mesmo valor m nimo for encontrado para 2 poos, a resposta dever ser a mdia c a e entre as duas ordenadas. Por exemplo, no problema x y 19 13 10 12 4 17 1 5 7 23 18 20 8 16 21 11

Percebe-se que as distncias m a nimas so: 35, 37, 37, 77, 67, 49, 35, 41 que correspona dem aos poos 1 e 7. Com isso, a ordenada do duto principal deve ser a mdia das duas c e ordenadas dos poos: 13 + 16 = 29 2 = 14.5 km. A resposta deveria ser 35, 14.5. c Lembrando, o valor 35 corresponde a quantidade de duto auxiliar necessria. a Observaes co Lembre que se o duto principal estiver na direo norte-sul, vale o mesmo racioc ca nio visto acima, apenas mudando ordenadas por abcissas, e desprezando-se o segundo nmero das coordenadas de cada poo. u c Finalmente, o algoritmo aqui esboado, a quem poder c amos chamar de fora bruta, c funciona e apresenta o resultado correto. Entretanto voc livre para procurar outro ee algoritmo que seja mais eciente, (mas que funcione tambm, claro.) e e

24.2 24.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 . Os poos se encontram nas seguintes posies: c co

Para este caso, a metragem de duto auxiliar de e e a posio do duto principal deve ser ca .
88-08, Pedro Kantek

292

verso de 10 de fevereiro de 2008 a

CAP ITULO 24. EXERC ICIOS PRATICOS: 035 - LOCALIZACAO DE OLEODUTO Mais, um: Suponha o duto principal no eixo N-S . Os poos se encontram nas seguintes posies: c co x y 20 6 1 3 2 21 10 18 9 11 5 27 16 15 13 17 24 8

Para este caso, a metragem de duto auxiliar de e e a posicao do duto principal deve ser . Este exerc cio foi adaptado de CORMEN, T. et alli, Algoritmos, pg 155 (edio a ca brasileira).

24.4

Exerc cio 2

Suponha o duto principal no eixo N-S . Os poos se encontram nas seguintes posies: c co x y 16 15 5 2 14 22 24 8 23 18 1 3 6 19 21 10

Para este caso, a metragem de duto auxiliar de e e a posio do duto principal deve ser ca .

Mais, um: Suponha o duto principal no eixo L-W . Os poos se encontram nas seguintes posies: c co x y 19 18 5 8 2 17 14 7 20 16 21 27 23 22 9 3 15 11

Para este caso, a metragem de duto auxiliar de e e a posicao do duto principal deve ser .

24.5

Exerc cio 3

Suponha o duto principal no eixo N-S . Os poos se encontram nas seguintes posies: c co x y 13 24 1 5 19 11 10 23 12 14 3 18 22 2 4 15 20 7

Para este caso, a metragem de duto auxiliar de e e a posio do duto principal deve ser ca .

Mais, um: Suponha o duto principal no eixo L-W . Os poos se encontram nas seguintes posies: c co 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, a metragem de duto auxiliar de e e a posicao do duto principal deve ser .
verso de 10 de fevereiro de 2008 a

293

88-08, Pedro Kantek

CAP ITULO 24. EXERC ICIOS PRATICOS: 035 - LOCALIZACAO DE OLEODUTO

24.6
1 2 3

Respostas
82.0 13.5 56.0 10.0 58.0 15.0 55.0 16.0 56.0 12.0 67.0 15.0

88-08, Pedro Kantek

294

verso de 10 de fevereiro de 2008 a

Cap tulo 25

Exerc cios Prticos: 054 a Kumon de algoritmos


25.1 Treinamento bsico em Algoritmos a

Nos trechos de algoritmos a seguir, voc deve seguir a lgica de cada trecho descobrindo e o qual o valor que impresso ao nal. e

25.2
1.
1: 2: 3: 4:

Exerc cio 1
funo A11 ca X 15 enquanto X >8 faa c XX-4 5: menquanto 6: imprima X 7: mfuno ca

2.
1: 2: 3: 4: 5: 6: 7:

funo A21 ca X5 repita XX+4 at X >18 e imprima X mfuno ca

3.
1: 2: 3: 4: 5:

funo A32 ca X0 para Y de 5 a 19 passo 3 faa c XX+Y mpara 6: imprima X 7: mfuno ca funo A12 ca 295

4.
1:

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS X 14 Y4 enquanto X >7 faa c YY+3 XX-4 menquanto imprima Y 9: mfuno ca
2: 3: 4: 5: 6: 7: 8:

5.
1: 2: 3: 4: 5: 6:

funo A33 ca X5 para Y de 6 a 20 passo 3 faa c X X + Y +9 mpara imprima X ca 7: mfuno funo A13 ca X 20 Y 19 enquanto X > 4 faa c YY+X+3 XX-3 menquanto imprima Y mfuno ca funo A41 ca X3 Y2 se X > 5 ento a YY+X+4 seno a Y Y - (X + 12) mse imprima Y mfuno ca funo A22 ca X4 Y6 repita YY+2 XX+4 at X >17 e imprima Y mfuno ca funo A34 ca 296
verso de 10 de fevereiro de 2008 a

6.
1: 2: 3: 4: 5: 6: 7: 8: 9:

7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

8.
1: 2: 3: 4: 5: 6: 7: 8: 9:

9.
1:

88-08, Pedro Kantek

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS X5 para Y de 3 a 21 passo 3 faa c se (Y mod 2) = 0 ento a XX+Y+4 seno a XX+Y+1 mse 9: mpara 10: imprima X 11: mfuno ca
2: 3: 4: 5: 6: 7: 8:

10.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

funo A41 ca X4 Y4 se X > 8 Y>9 ento a YY+X+3 seno a Y Y - (X + 12 ) mse imprima Y mfuno ca funo A23 ca X6 Y9 repita YY+X+3 XX+2 at X 17 e imprima Y mfuno ca funo A11 ca X 18 enquanto X >5 faa c XX-3 menquanto imprima X mfuno ca funo A32 ca X1 para Y de 17 a 4 passo -3 faa c XX+Y mpara imprima X mfuno ca funo A21 ca 297
88-08, Pedro Kantek

11.
1: 2: 3: 4: 5: 6: 7: 8: 9:

12.
1: 2: 3: 4: 5: 6: 7:

13.
1: 2: 3: 4: 5: 6: 7:

14.
1:

verso de 10 de fevereiro de 2008 a

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS


2: 3: 4: 5: 6: 7:

X6 repita XX+4 at X >13 e imprima X mfuno ca funo A41 ca X3 Y4 se X 8 ento a YY+X+5 seno a Y Y - (X + 12) mse imprima Y mfuno ca

15.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

16.
1: 2: 3: 4: 5: 6: 7:

funo A13 ca X7 Y5 enquanto X 16 faa c YY+X+4 XX+4 menquanto 8: imprima Y 9: mfuno ca funo A33 ca X5 para Y de 3 a 17 passo 3 faa c XX+Y+5 mpara imprima X 7: mfuno ca
1 2 3 4 5 6

17.
1: 2: 3: 4: 5: 6:

10

11

12

Respostas
13 14 15 16 17

25.3
1.
1: 2:

Exerc cio 2
funo A11 ca X 19 298
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS


3: 4: 5: 6: 7:

enquanto X >7 faa c XX-2 menquanto imprima X mfuno ca

2. funo A21 ca X 10 repita XX+3 5: at X 13 e 6: imprima X 7: mfuno ca


1: 2: 3: 4:

3.
1: 2: 3: 4: 5:

funo A32 ca X0 para Y de 3 a 18 passo 3 faa c XX+Y mpara 6: imprima X 7: mfuno ca funo A12 ca X4 Y4 enquanto X 18 faa c YY+2 XX+3 menquanto imprima Y mfuno ca

4.
1: 2: 3: 4: 5: 6: 7: 8: 9:

5. funo A33 ca X3 para Y de 17 a 7 passo -3 faa c XX+Y+6 5: mpara 6: imprima X 7: mfuno ca


1: 2: 3: 4:

6.
1: 2: 3: 4: 5:

funo A13 ca X 14 Y 20 enquanto X 3 faa c YY+X+2 6: XX-3 7: menquanto 8: imprima Y 299


88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS


9:

mfuno ca funo A41 ca X7 Y1 se X = 5 ento a YY+X+7 seno a Y Y - (X + 11) mse imprima Y mfuno ca

7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

8. funo A22 ca X 17 Y 20 repita YY+3 XX-4 7: at X 8 e 8: imprima Y 9: mfuno ca


1: 2: 3: 4: 5: 6:

9.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:

funo A34 ca X7 para Y de 4 a 19 passo 2 faa c se (Y mod 2) = 0 ento a XX+Y+5 seno a XX+Y+1 mse mpara imprima X mfuno ca funo A41 ca X1 Y6 se X = 4 Y<4 ento a YY+X+4 seno a Y Y - (X + 10) mse imprima Y mfuno ca funo A23 ca X 19 Y 19 300
verso de 10 de fevereiro de 2008 a

10.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

11.
1: 2: 3:

88-08, Pedro Kantek

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS


4: 5: 6: 7: 8: 9:

repita YY+X+4 XX-4 at X <10 e imprima Y mfuno ca funo A11 ca X9 enquanto X 13 faa c XX+2 menquanto imprima X mfuno ca

12.
1: 2: 3: 4: 5: 6: 7:

13.
1: 2: 3: 4:

funo A32 ca X0 para Y de 4 a 15 passo 2 faa c XX+Y 5: mpara 6: imprima X 7: mfuno ca

14. funo A21 ca X7 repita XX+3 at X >17 e 6: imprima X 7: mfuno ca


1: 2: 3: 4: 5:

15.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

funo A41 ca X1 Y2 se X > 2 ento a YY+X+5 seno a Y Y - (X + 12) mse imprima Y mfuno ca

16.
1: 2: 3: 4:

funo A13 ca X 16 Y 20 enquanto X 3 faa c 5: YY+X+3 6: XX-3 7: menquanto 301


88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS


8: 9:

imprima Y mfuno ca funo A33 ca X4 para Y de 5 a 14 passo 3 faa c X X + Y +7 mpara imprima X mfuno ca
1 2 3 4 5 6

17.
1: 2: 3: 4: 5: 6: 7:

10

11

12

Respostas
13 14 15 16 17

25.4
1.
1: 2: 3: 4: 5: 6:

Exerc cio 3
funo A11 ca X6 enquanto X <17 faa c XX+4 menquanto imprima X 7: mfuno ca funo A21 ca X 18 repita XX-2 at X 7 e imprima X mfuno ca funo A32 ca X0 para Y de 3 a 18 passo 3 faa c XX+Y mpara imprima X mfuno ca funo A12 ca X 14 302
verso de 10 de fevereiro de 2008 a

2.
1: 2: 3: 4: 5: 6: 7:

3.
1: 2: 3: 4: 5: 6: 7:

4.
1: 2:

88-08, Pedro Kantek

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS


3: 4: 5: 6: 7: 8: 9:

Y9 enquanto X 7 faa c YY+4 XX-4 menquanto imprima Y mfuno ca funo A33 ca X4 para Y de 5 a 14 passo 3 faa c XX+Y+9 mpara imprima X mfuno ca funo A13 ca X 15 Y 16 enquanto X 6 faa c YY+X+4 XX-2 menquanto imprima Y mfuno ca funo A41 ca X5 Y5 se X = 1 ento a YY+X+8 seno a Y Y - (X + 11) mse imprima Y mfuno ca funo A22 ca X 20 Y 14 repita YY+4 XX-4 at X <10 e imprima Y mfuno ca funo A34 ca X5 303
88-08, Pedro Kantek

5.
1: 2: 3: 4: 5: 6: 7:

6.
1: 2: 3: 4: 5: 6: 7: 8: 9:

7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

8.
1: 2: 3: 4: 5: 6: 7: 8: 9:

9.
1: 2:

verso de 10 de fevereiro de 2008 a

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS para Y de 4 a 16 passo 2 faa c se (Y mod 2) = 0 ento a XX+Y+4 seno a XX+Y+2 mse mpara 10: imprima X 11: mfuno ca
3: 4: 5: 6: 7: 8: 9:

10.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

funo A41 ca X1 Y7 se X 9Y<4 ento a YY+X+4 seno a Y Y - (X + 11) mse imprima Y mfuno ca funo A23 ca X 19 Y 18 repita YY+X+2 XX-2 at X < 9 e imprima Y mfuno ca funo A11 ca X7 enquanto X <13 faa c XX+3 menquanto imprima X mfuno ca funo A32 ca X0 para Y de 4 a 18 passo 3 faa c XX+Y mpara imprima X mfuno ca funo A21 ca X8 304
verso de 10 de fevereiro de 2008 a

11.
1: 2: 3: 4: 5: 6: 7: 8: 9:

12.
1: 2: 3: 4: 5: 6: 7:

13.
1: 2: 3: 4: 5: 6: 7:

14.
1: 2:

88-08, Pedro Kantek

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS


3: 4: 5: 6: 7:

repita XX+4 at X >16 e imprima X mfuno ca funo A41 ca X7 Y6 se X > 9 ento a YY+X+9 seno a Y Y - (X + 12) mse imprima Y mfuno ca funo A13 ca X7 Y8 enquanto X 15 faa c YY+X+4 XX+4 menquanto imprima Y mfuno ca

15.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

16.
1: 2: 3: 4: 5: 6: 7: 8: 9:

17.
1: 2: 3: 4:

funo A33 ca X7 para Y de 4 a 20 passo 2 faa c XX+Y+5 5: mpara 6: imprima X 7: mfuno ca


1 2 3 4 5 6

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

verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 25. EXERC ICIOS PRATICOS: 054 - KUMON DE ALGORITMOS

88-08, Pedro Kantek

306

verso de 10 de fevereiro de 2008 a

Cap tulo 26

Exerc cios Prticos: 057 a Continuar sequncias e


Para este exerc cio, so apresentados 8 algoritmos distintos que geram seqncias de a ue nmeros inteiros. Em cada uma delas, voc deve descobrir qual o 8o elemento da seu e qncia e escrev-lo na resposta. ue e

26.1

Por exemplo

Seja o seguinte algoritmo: 1: funo seq1 (inteiro n incr) ca 2: ct 1 3: enquanto ct < 9 faa c 4: y2 5: x2 6: enquanto y < n faa c 7: se 0=n mod y ento a 8: x x+1 9: mse 10: y y+1 11: menquanto 12: imprima x 13: n n+incr 14: ct++ 15: menquanto 16: mfuno ca Este algoritmo, se chamado seq1(3,7) dar como resposta 2, 4, 2, 8, ..., e o oitavo a elemento ser 6. Se chamado com seq1(4,8) a resposta ser 3, 6, 6, 6, ... 12 e se a a chamado com seq1(33,55) dar 4, 8, 4, 12, ... 8. a

26.2
1.
1: 2:

Exerc cio 1
funo seq1 (inteiro n incr) ca ct 1 3: enquanto ct < 9 faa c 4: y2 5: x2 307

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS


6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:

enquanto y < n faa c se 0=n mod y ento a x x+1 mse y y+1 menquanto imprima x n n+incr ct++ menquanto mfuno ca

Sendo chamado com seq1( 8 , 8 ) Gerando os 4 primeiros nmeros: 4, 5, 8, 6 u 2.


1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

funo seq2 (inteiro alfa xn2 xn1) ca ct 1 enquanto ct < 9 faa c ax (alfa xn2) + xn1 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfuno ca

Sendo chamado com seq2( 3 , 3 , 6 ) Gerando os 4 primeiros nmeros: 15, 33, 78, 177 u 3.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

funo seq3 (inteiro xn2 xn1) ca ct 1 enquanto ct < 9 faa c ax (teto(sqrt(xn1))) xn2 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfuno ca

Sendo chamado com seq3( 6 , 7 ) Gerando os 4 primeiros nmeros: 18, 35, 108, 385 u 4.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:

funo seq4 (inteiro xn) ca ct 1 enquanto ct < 9 faa c se xn mod 2 = 0 ento a ax 1 + 3 xn seno a ax (4 xn)-1 mse imprima ax xn ax ct++ menquanto mfuno ca 308
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS Sendo chamado com seq4( 3 ) Gerando os 4 primeiros nmeros: 11, 43, 171, 683 u 5.
1: 2: 3: 4: 5: 6: 7: 8: 9:

funo seq5 (inteiro xn1) ca ct 1 enquanto ct < 9 faa c ax xn1 + (ct-1)ct mod 3 imprima ax xn1 ax ct++ menquanto mfuno ca

Sendo chamado com seq5( 8 ) Gerando os 4 primeiros nmeros: 8, 9, 10, 13 u 6.


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:

funo seq6 (inteiro xn2 xn1) ca ct 1 repita ax chao(sqrt(xn1)) bx 3 xn2 cx ax + bx imprima cx xn2 xn1 xn1 cx ct++ at ct > 8 e mfuno ca

Sendo chamado com seq6( 5 , 4 ) Gerando os 4 primeiros nmeros: 17, 16, 55, 55 u 7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:

funo seq7 (inteiro x) ca ct 1 repita se ct < 3 ento a ax x 4 seno a se ct<6 ento a ax x 3 seno a ax x 2 mse mse imprima ax x ax ct ct+2 at ct > 16 e mfuno ca

Sendo chamado com seq7( 5 ) Gerando os 4 primeiros nmeros: 20, 60, 180, 360 u 8.
1: 2: 3: 4:

funo seq8 (inteiro zz) ca ct 1 enquanto ct < 9 faa c se ct mod 2 = 0 ento a 309
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS x (ct mod 3)+(ct mod 4)+(ct mod 5) seno a x (ct mod 2)+(ct mod 3)+(ct mod 4) mse x x+zz imprima x ct ct+1 12: menquanto 13: mfuno ca
5: 6: 7: 8: 9: 10: 11:

Sendo chamado com seq8( 9 ) Gerando os 4 primeiros nmeros: 12, 15, 13, 14 u
1 2 3 4 5 6 7 8

Respostas

26.3
1.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:

Exerc cio 2
funo seq1 (inteiro n incr) ca ct 1 enquanto ct < 9 faa c y2 x2 enquanto y < n faa c se 0=n mod y ento a x x+1 mse y y+1 menquanto imprima x n n+incr ct++ menquanto mfuno ca

Sendo chamado com seq1( 4 , 5 ) Gerando os 4 primeiros nmeros: 3, 3, 4, 2 u 2. funo seq2 (inteiro alfa xn2 xn1) ca ct 1 enquanto ct < 9 faa c ax (alfa xn2) + xn1 xn2 xn1 xn1 ax imprima ax 8: ct++ 9: menquanto 10: mfuno ca
1: 2: 3: 4: 5: 6: 7:

Sendo chamado com seq2( 5 , 4 , 5 ) Gerando os 4 primeiros nmeros: 25, 50, 175, 425 u 3.
1: 2:

funo seq3 (inteiro xn2 xn1) ca ct 1 310


verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS enquanto ct < 9 faa c ax (teto(sqrt(xn1))) xn2 xn2 xn1 xn1 ax imprima ax ct++ menquanto 10: mfuno ca
3: 4: 5: 6: 7: 8: 9:

Sendo chamado com seq3( 5 , 7 ) Gerando os 4 primeiros nmeros: 15, 28, 90, 280 u 4.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:

funo seq4 (inteiro xn) ca ct 1 enquanto ct < 9 faa c se xn mod 2 = 0 ento a ax 1 + 3 xn seno a ax (4 xn)-1 mse imprima ax xn ax ct++ menquanto mfuno ca

Sendo chamado com seq4( 8 ) Gerando os 4 primeiros nmeros: 25, 99, 395, 1579 u 5.
1: 2: 3: 4: 5: 6: 7: 8: 9:

funo seq5 (inteiro xn1) ca ct 1 enquanto ct < 9 faa c ax xn1 + (ct-1)ct mod 3 imprima ax xn1 ax ct++ menquanto mfuno ca

Sendo chamado com seq5( 8 ) Gerando os 4 primeiros nmeros: 8, 9, 10, 13 u 6.


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:

funo seq6 (inteiro xn2 xn1) ca ct 1 repita ax chao(sqrt(xn1)) bx 3 xn2 cx ax + bx imprima cx xn2 xn1 xn1 cx ct++ at ct > 8 e mfuno ca

Sendo chamado com seq6( 9 , 4 ) Gerando os 4 primeiros nmeros: 29, 17, 91, 60 u
verso de 10 de fevereiro de 2008 a

311

88-08, Pedro Kantek

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:

funo seq7 (inteiro x) ca ct 1 repita se ct < 3 ento a ax x 4 seno a se ct<6 ento a ax x 3 seno a ax x 2 mse mse imprima ax x ax ct ct+2 at ct > 16 e mfuno ca

Sendo chamado com seq7( 5 ) Gerando os 4 primeiros nmeros: 20, 60, 180, 360 u 8.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:

funo seq8 (inteiro zz) ca ct 1 enquanto ct < 9 faa c se ct mod 2 = 0 ento a x (ct mod 3)+(ct mod 4)+(ct mod 5) seno a x (ct mod 2)+(ct mod 3)+(ct mod 4) mse x x+zz imprima x ct ct+1 menquanto mfuno ca

Sendo chamado com seq8( 10 ) Gerando os 4 primeiros nmeros: 13, 16, 14, 15 u
1 2 3 4 5 6 7 8

Respostas

26.4
1.
1: 2: 3: 4: 5: 6: 7:

Exerc cio 3

funo seq1 (inteiro n incr) ca ct 1 enquanto ct < 9 faa c y2 x2 enquanto y < n faa c se 0=n mod y ento a 8: x x+1 9: mse 10: y y+1 312
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS


11: 12: 13: 14: 15: 16:

menquanto imprima x n n+incr ct++ menquanto mfuno ca

Sendo chamado com seq1( 9 , 9 ) Gerando os 4 primeiros nmeros: 3, 6, 4, 9 u 2.


1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

funo seq2 (inteiro alfa xn2 xn1) ca ct 1 enquanto ct < 9 faa c ax (alfa xn2) + xn1 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfuno ca

Sendo chamado com seq2( 5 , 4 , 6 ) Gerando os 4 primeiros nmeros: 26, 56, 186, 466 u 3.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

funo seq3 (inteiro xn2 xn1) ca ct 1 enquanto ct < 9 faa c ax (teto(sqrt(xn1))) xn2 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfuno ca

Sendo chamado com seq3( 6 , 7 ) Gerando os 4 primeiros nmeros: 18, 35, 108, 385 u 4.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:

funo seq4 (inteiro xn) ca ct 1 enquanto ct < 9 faa c se xn mod 2 = 0 ento a ax 1 + 3 xn seno a ax (4 xn)-1 mse imprima ax xn ax ct++ menquanto mfuno ca

Sendo chamado com seq4( 6 ) Gerando os 4 primeiros nmeros: 19, 75, 299, 1195 u 5.
1: 2: 3:

funo seq5 (inteiro xn1) ca ct 1 enquanto ct < 9 faa c 313


88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS


4: 5: 6: 7: 8: 9:

ax xn1 + (ct-1)ct mod 3 imprima ax xn1 ax ct++ menquanto mfuno ca

Sendo chamado com seq5( 4 ) Gerando os 4 primeiros nmeros: 4, 5, 6, 9 u 6.


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:

funo seq6 (inteiro xn2 xn1) ca ct 1 repita ax chao(sqrt(xn1)) bx 3 xn2 cx ax + bx imprima cx xn2 xn1 xn1 cx ct++ at ct > 8 e mfuno ca

Sendo chamado com seq6( 6 , 5 ) Gerando os 4 primeiros nmeros: 20, 19, 64, 65 u 7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:

funo seq7 (inteiro x) ca ct 1 repita se ct < 3 ento a ax x 4 seno a se ct<6 ento a ax x 3 seno a ax x 2 mse mse imprima ax x ax ct ct+2 at ct > 16 e mfuno ca

Sendo chamado com seq7( 7 ) Gerando os 4 primeiros nmeros: 28, 84, 252, 504 u 8. funo seq8 (inteiro zz) ca ct 1 enquanto ct < 9 faa c se ct mod 2 = 0 ento a x (ct mod 3)+(ct mod 4)+(ct mod 5) seno a 7: x (ct mod 2)+(ct mod 3)+(ct mod 4) 8: mse 9: x x+zz
1: 2: 3: 4: 5: 6:

88-08, Pedro Kantek

314

verso de 10 de fevereiro de 2008 a

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS


10: 11: 12: 13:

imprima x ct ct+1 menquanto mfuno ca

Sendo chamado com seq8( 6 ) Gerando os 4 primeiros nmeros: 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

verso de 10 de fevereiro de 2008 a

315

88-08, Pedro Kantek

CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQUENCIAS

88-08, Pedro Kantek

316

verso de 10 de fevereiro de 2008 a

Cap tulo 27

Exerc cios Prticos: 062 a Engenharia reversa


27.1 Engenharia Reversa de algoritmos

Se a programao fosse mais engenharia e menos arte, talvez no precisssemos tanto ca a a usar os dons de Sherlock Holmes para corrigir programas. Infelizmente (ou ser feliza mente ??) tal no ocorre, e um programador prossional 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 pe a o a perder um imenso projeto. E to importante a tarefa que se diz que bom programador no aquele de programa bem, mas aquele que depura bem. A propsito, depurar a e o e identicar, 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 cdigos e cio e o alguns resultados, e dever inferir quais as inicializaes originais das variveis em cada a co a cdigo. o Por exemplo, no algoritmo 1: funo EXEMPLO ca 2: A . 3: B 2 4: C 3 5: enquanto A < 10 faa c 6: se (B mod 3) = 0 ento a 7: AA+1 8: seno a 9: AA+2 10: mse 11: se (C mod 4) = 0 ento a 12: BB+2 13: seno a 14: AA+1 15: mse 16: imprima A, B, C 17: menquanto Analisando as sa das, que so: a 423 317

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA 723 10 2 3 Percebe-se que a inicializao original do A foi 1. A resposta deste exemplo portanto, ca e 1.

27.2

Exerc cio 1

A seguir, diversos algoritmos. Em cada um deles, voc deve dizer qual o valor inicial da e varivel A. a 1 funo A1 ca A . 3: B 7 4: C 13 5: enquanto (A + B) > 4 faa c 6: se A > C ento a 7: AA-1 8: seno a 9: AA+1 10: mse 11: BB-2 12: imprima A, B, C 13: menquanto Esta execuo deu como resultado ca 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:

2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:

funo A2 ca A . B9 C 11 enquanto (C = 0) (C = 1) faa c se (B mod 5) = 0 ento a BB-1 mse se (A mod 3) = 0 ento a AA+1 mse se (A > B) ento a AA+2 mse CC-1 318
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA


16: 17:

13 15 18 21 24 27 30 33 36 39

imprima A, B, C menquanto Esta execuo deu como resultado ca 8 10 79 68 57 56 55 54 53 52 51

3 funo A3 ca A . B3 C5 repita AA+1 7: BB+1 8: CC+1 9: enquanto C > 10 faa c 10: CC-2 11: menquanto 12: se (C = 3) (B = 2) ento a 13: AA+2 14: mse 15: imprima A, B, C 16: at (A + B + C ) > 30 e Esta execuo deu como resultado ca 646 957 12 6 8 15 7 9
1: 2: 3: 4: 5: 6:

4
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:

funo A4 ca A . B 15 C 13 enquanto (A>10) (B>10) (C>10) faa c se A > B ento a CC-1 mse se (B mod 3) = 1 ento a AA-1 mse 319
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA se C > B ento a BB-3 mse imprima A, B, C AA-1 BB-1 CC-2 19: menquanto Esta execuo deu como resultado ca 11 15 13 10 14 11 8 13 9 7 12 7 6 11 5
12: 13: 14: 15: 16: 17: 18:

Respostas Escreva aqui os valores presumidos para as 4 variveis A de cada um dos a 4 algoritmos
1 2 3 4

27.3

Exerc cio 2

A seguir, diversos algoritmos. Em cada um deles, voc deve dizer qual o valor inicial da e varivel A. a 1 funo A1 ca A . B7 C 11 enquanto (A + B) > 4 faa c 6: se A > C ento a 7: AA-1 8: seno a 9: AA+1 10: mse 11: BB-2 12: imprima A, B, C 13: menquanto Esta execuo deu como resultado ca 7 5 11 8 3 11 9 1 11 10 -1 11 11 -3 11 12 -5 11 11 -7 11
1: 2: 3: 4: 5:

88-08, Pedro Kantek

320

verso de 10 de fevereiro de 2008 a

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA 2


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:

funo A2 ca . A B 10 C9 enquanto (C = 0) (C = 1) faa c se (B mod 5) = 0 ento a BB-1 mse se (A mod 3) = 0 ento a AA+1 mse se (A > B) ento a AA+2 mse CC-1 imprima A, B, C menquanto Esta execuo deu como resultado ca 10 8 10 7 10 6 10 5 10 4 10 3 10 2 10 1

16 18 21 24 27 30 33 36

3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:

funo A3 ca A . B2 C5 repita AA+1 BB+1 CC+1 enquanto C > 10 faa c CC-2 menquanto se (C = 3) (B = 2) ento a AA+2 mse imprima A, B, C at (A + B + C ) > 30 e

Esta execuo deu como resultado ca 736 10 4 7 13 5 8 16 6 9


verso de 10 de fevereiro de 2008 a

321

88-08, Pedro Kantek

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA

4 funo A4 ca A . B 12 C 13 enquanto (A>10) (B>10) (C>10) faa c se A > B ento a CC-1 8: mse 9: se (B mod 3) = 1 ento a 10: AA-1 11: mse 12: se C > B ento a 13: BB-3 14: mse 15: imprima A, B, C 16: AA-1 17: BB-1 18: CC-2 19: menquanto Esta execuo deu como resultado ca 12 9 13 11 5 10
1: 2: 3: 4: 5: 6: 7:

Respostas Escreva aqui os valores presumidos para as 4 variveis A de cada um dos a 4 algoritmos
1 2 3 4

27.4

Exerc cio 3

A seguir, diversos algoritmos. Em cada um deles, voc deve dizer qual o valor inicial da e varivel A. a 1
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:

funo A1 ca A . B8 C9 enquanto (A + B) > 4 faa c se A > C ento a AA-1 seno a AA+1 mse BB-2 imprima A, B, C 322
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA menquanto Esta execuo deu como resultado ca 769 849 929 10 0 9 9 -2 9 10 -4 9 9 -6 9
13:

2 funo A2 ca A . B9 C 10 5: enquanto (C = 0) (C = 1) faa c 6: se (B mod 5) = 0 ento a 7: BB-1 8: mse 9: se (A mod 3) = 0 ento a 10: AA+1 11: mse 12: se (A > B) ento a 13: AA+2 14: mse 15: CC-1 16: imprima A, B, C 17: menquanto Esta execuo deu como resultado ca 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: 3: 4:

3 funo A3 ca . A B3 C2 repita AA+1 7: BB+1 8: CC+1 9: enquanto C > 10 faa c


1: 2: 3: 4: 5: 6:
verso de 10 de fevereiro de 2008 a

323

88-08, Pedro Kantek

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA CC-2 menquanto se (C = 3) (B = 2) ento a AA+2 mse imprima A, B, C at (A + B + C ) > 30 e Esta execuo deu como resultado ca 843 11 5 4 14 6 5 17 7 6 20 8 7
10: 11: 12: 13: 14: 15: 16:

4 funo A4 ca . A B 14 C 15 enquanto (A>10) (B>10) (C>10) faa c se A > B ento a CC-1 8: mse 9: se (B mod 3) = 1 ento a 10: AA-1 11: mse 12: se C > B ento a 13: BB-3 14: mse 15: imprima A, B, C 16: AA-1 17: BB-1 18: CC-2 19: menquanto Esta execuo deu como resultado ca 15 14 14 13 13 11 12 12 9 11 11 7
1: 2: 3: 4: 5: 6: 7:

Respostas Escreva aqui os valores presumidos para as 4 variveis A de cada um dos a 4 algoritmos
1 2 3 4

27.5
1

Respostas
5 11 3 11 324
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA 2 3 6 6 14 11 4 5 12 15

verso de 10 de fevereiro de 2008 a

325

88-08, Pedro Kantek

CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA

88-08, Pedro Kantek

326

verso de 10 de fevereiro de 2008 a

Cap tulo 28

Exerc cios Prticos: 065 - Se, a enquanto, repita


28.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

funo programa11 ca inteiro A,B,C,D,U,V,T,I,G,S,Q inteiro F,W,L A1; B3; C3;D2;U2 V1; T1; I1;G3;S3 Q2; F3; W3;L1;U2 repita V1 enquanto V<7 faa c C2 se C=4 ento a T2 enquanto T<2 faa c II+2 GG+3 SS+A+3 TT+1 menquanto seno a Q3 repita FF+D+3 WW+1 LL+2 QQ+2 at Q9 e mse VV+1 menquanto UU+1 at U>5 e 327

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
32: 33:

imprima L+Q+G+U mfuno ca

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: 41: 42: 43: 44: 45:

funo programa12 ca inteiro A,B,C,D,P,H,M,T,E,O,K inteiro X,Y,N,G,R,I,V A2; B1; C2;D3;P3 H2; M3; T2;E2;O3 K3; X1; Y2;N3;G1 R3 I2 V2 D8 se D=4 ento a P1 repita H2 enquanto H8 faa c C3 se C=3 ento a MM+3 TT+2 seno a EE+3 OO+C+2 KK+A+1 XX+D+3 YY+D+1 mse HH+1 menquanto PP+1 at P>6 e seno a N3 enquanto N<8 faa c G2 enquanto G<5 faa c RR+B+1 II+1 VV+3 GG+2 menquanto NN+1 menquanto mse imprima K+P+M+V mfuno ca

3
1:

funo programa13 ca 328


verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, 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:

inteiro A,B,C,D,S,Q,U,Z,F,V,P inteiro I,O,K A3; B3; C3;D1;S3 Q1; U1; Z2;F3;V3 P2; I3; O3;K1;A5 se A=3 ento a S2 enquanto S3 faa c Q2 enquanto Q<8 faa c U3 enquanto U<3 faa c ZZ+3 FF+1 VV+B+3 UU+2 menquanto QQ+2 menquanto SS+2 menquanto seno a P1 repita I1 repita O2 repita K3 repita KK+1 at K8 e OO+2 at O9 e II+2 at I2 e PP+1 at P6 e mse imprima Z+D+I+F mfuno ca

4
1: 2: 3: 4: 5: 6:

funo programa14 ca inteiro A,B,C,D,Z,V,W,F,N,H,K inteiro S,R,I,P,Q,E,Y A2; B1; C3;D1;Z1 V2; W1; F2;N2;H3 K3; S3; R3;I1;P2 7: Q3 8: E1 9: Y3 329
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, 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:

A8 se A>6 ento a A7 se A>9 ento a Z1 repita V3 enquanto V2 faa c D8 se D9 ento a WW+B+1 FF+A+1 NN+C+3 HH+C+2 KK+1 seno a SS+B+2 RR+D+3 II+A+1 PP+B+1 QQ+2 mse VV+1 menquanto ZZ+1 at Z8 e mse seno a B7 se B=9 ento a E2 repita Y2 repita YY+2 at Y2 e EE+2 at E>8 e mse mse imprima K+B+F+P mfuno ca
1 2 3 4

Respostas

28.2
1
1:

Exerc cio 2

funo programa11 ca 330


verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, 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:

inteiro A,B,C,D,M,S,V,Q,Z,T,H inteiro K,I,J A3; B3; C1;D3;M2 S2; V1; Q1;Z2;T3 H3; K3; I3;J2;M2 repita S2 enquanto S8 faa c C1 se C>7 ento a V2 enquanto V<1 faa c QQ+D+3 ZZ+A+1 TT+A+3 VV+1 menquanto seno a H3 repita KK+C+1 II+D+1 JJ+B+3 HH+2 at H>7 e mse SS+1 menquanto MM+1 at M>9 e imprima T+A+Z+H mfuno ca

2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:

funo programa12 ca inteiro A,B,C,D,K,R,X,I,P,V,E inteiro F,H,G,L,M,J,S A1; B3; C2;D2;K2 R3; X3; I2;P2;V1 E3; F3; H2;G3;L2 M2 J1 S3 A5 se A=1 ento a K2 repita R1 enquanto R4 faa c A4 se A8 ento a XX+B+3 331
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, 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:

II+A+1 seno a PP+B+1 VV+2 EE+3 FF+1 HH+1 mse RR+1 menquanto KK+1 at K8 e seno a G2 enquanto G<5 faa c L2 enquanto L<7 faa c MM+A+2 JJ+B+2 SS+1 LL+2 menquanto GG+1 menquanto mse imprima F+E+J+B mfuno ca

3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:

funo programa13 ca inteiro A,B,C,D,M,U,N,J,V,E,X inteiro R,I,K A2; B2; C3;D1;M2 U3; N2; J2;V3;E3 X3; R2; I1;K1;C4 se C<6 ento a M2 enquanto M<9 faa c U3 enquanto U<2 faa c N3 enquanto N6 faa c JJ+1 VV+3 EE+3 NN+2 menquanto UU+2 menquanto MM+2 menquanto seno a 332
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:

X3 repita R3 repita I3 repita K3 repita KK+2 at K>7 e II+1 at I8 e RR+2 at R8 e XX+2 at X4 e mse imprima M+K+C+R mfuno ca

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:

funo programa14 ca inteiro A,B,C,D,N,F,V,H,G,E,Z inteiro X,O,M,I,W,S,Y A2; B2; C1;D3;N3 F2; V3; H1;G3;E1 Z1; X2; O3;M3;I2 W3 S2 Y1 C3 se C7 ento a C5 se C3 ento a N2 repita F2 enquanto F8 faa c D8 se D=1 ento a VV+3 HH+1 GG+D+3 EE+1 ZZ+D+1 seno a XX+C+1 OO+3 MM+3 II+2 WW+2 mse 333
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:

FF+2 menquanto NN+1 at N4 e mse seno a C4 se C=4 ento a S2 repita Y2 repita YY+2 at Y>2 e SS+2 at S8 e mse mse imprima Z+O+D+Y mfuno ca
1 2 3 4

Respostas

28.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

funo programa11 ca inteiro A,B,C,D,E,M,F,L,G,Y,N inteiro X,K,V A2; B1; C1;D2;E1 M1; F2; L2;G2;Y1 N3; X2; K3;V2;E1 repita M1 enquanto M7 faa c D3 se D<1 ento a F3 enquanto F<1 faa c LL+C+3 GG+C+1 YY+A+1 FF+2 menquanto seno a N3 repita XX+A+3 KK+B+1 334
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA VV+C+2 NN+1 at N>3 e mse MM+2 menquanto EE+1 31: at E2 e 32: imprima M+K+C+F 33: mfuno ca
24:

25: 26: 27: 28: 29: 30:

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:

funo programa12 ca inteiro A,B,C,D,N,M,O,I,J,G,K inteiro P,E,T,F,U,Q,W A2; B2; C3;D3;N3 M1; O3; I2;J2;G1 K2; P2; E1;T2;F2 U3 Q2 W2 D5 se D=6 ento a N2 repita M3 enquanto M7 faa c D5 se D6 ento a OO+2 II+1 seno a JJ+2 GG+B+2 KK+C+1 PP+1 EE+1 mse MM+2 menquanto NN+1 at N9 e seno a T3 enquanto T<5 faa c F2 enquanto F3 faa c UU+B+2 QQ+C+2 WW+3 FF+1 menquanto 335
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
41: 42: 43: 44: 45:

TT+1 menquanto mse imprima I+P+C+J mfuno ca

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:

funo programa13 ca inteiro A,B,C,D,P,N,U,M,Y,I,V inteiro F,H,S A1; B2; C2;D2;P1 N1; U3; M1;Y2;I1 V2; F3; H1;S3;D3 se D<7 ento a P3 enquanto P<9 faa c N3 enquanto N<2 faa c U3 enquanto U6 faa c MM+A+1 YY+1 II+1 UU+2 menquanto NN+2 menquanto PP+2 menquanto seno a V3 repita F2 repita H3 repita S2 repita SS+1 at S4 e HH+2 at H>9 e FF+1 at F6 e VV+2 at V3 e mse imprima V+M+A+D mfuno ca

4
1:

funo programa14 ca 336


verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, 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:

inteiro A,B,C,D,X,T,Y,L,I,H,Z inteiro Q,U,M,O,J,N,K A2; B2; C1;D1;X1 T2; Y3; L1;I3;H3 Z2; Q1; U2;M2;O3 J2 N1 K3 C8 se C8 ento a D7 se D=6 ento a X1 repita T3 enquanto T<3 faa c D4 se D4 ento a YY+D+3 LL+1 II+2 HH+D+1 ZZ+2 seno a QQ+2 UU+3 MM+3 OO+2 JJ+3 mse TT+1 menquanto XX+2 at X1 e mse seno a B8 se B<3 ento a N3 repita K1 repita KK+1 at K6 e NN+2 at N7 e mse mse imprima Y+D+X+Q mfuno ca

verso de 10 de fevereiro de 2008 a

337

88-08, Pedro Kantek

CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
1 2 3 4

Respostas

28.4
1 2 3

Respostas
12 17 23 41 10 9 9 17 7 8 11 14

88-08, Pedro Kantek

338

verso de 10 de fevereiro de 2008 a

Cap tulo 29

Exerc cios Prticos: 069 - 4 a algoritmos


29.1 Exerc cio 1

A seguir existem 4 algoritmos que foram gerados de maneira aleatria. Todos esto o a corretos, no entram em loop, geram valores perfeitamente determinados e todos tm a e complexidade aceitvel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas a pedidas. Algoritmo 1 1: Algoritmo 1 2: inteiro A, B, C, D, E 3: A 5 4: B 3 5: C 0 6: D 16 7: E 17 8: enquanto (D > 0) faa c 9: se (A < 7) ento a 10: B B+1 11: mse 12: enquanto (A > (4 6)) faa c 13: B A+B+2 14: AA2 15: E E+7 16: se (D > (E 13)) ento a 17: C C + 1 18: mse 19: menquanto 20: D D4 21: menquanto 22: imprima (A + B + C + D + E) SOMA = (A+B+C+D+E)

339

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS Algoritmo 2 1: Algoritmo 2 2: inteiro F, G, H, I, J 3: F 1 4: G 3 5: H 14 6: I 6 7: J 12 8: enquanto ((H + J) (3 J)) faa c 9: se (F < 1) ento a 10: GG+1 11: mse 12: enquanto ((F > 4) (G 16)) faa c 13: GG+2 14: F F 2 15: se (I > 13) ento a 16: J J +3F 17: mse 18: menquanto 19: H H +3 20: menquanto 21: imprima (F + G + H + I + J) SOMA = (F+G+H+I+J)

Algoritmo 3 1: Algoritmo 3 2: inteiro K, L, M, N, P 3: K 10 4: L 1 5: M 7 6: N 9 7: P 20 8: enquanto (K 4) faa c 9: LL+1 10: se (N 3) ento a 11: enquanto (M 12) faa c 12: M M +6 13: menquanto 14: M M +1 15: mse 16: K K 3 17: N N +1 18: P P +2K 19: enquanto (N mod 3 = 0) faa c 20: N N +1 21: menquanto 22: menquanto 23: imprima (K + L + M + N + P ) Algoritmo 4
88-08, Pedro Kantek

340

verso de 10 de fevereiro de 2008 a

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 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:

(K+L+M+N+P)

Algoritmo 4 inteiro Q, R, S, T, U Q 1 R 13 S 18 T 3 U 9 repita se (Q < 5) ento a RR+1 mse se (T > 11) ento a S S+2 mse enquanto (U 17) faa c U U +4 se (S > 10) ento a T T +1 mse menquanto QQ+2 at ((Q > 0) (R = 0)) e imprima (Q + R + S + T + U ) (Q+R+S+T+U)

SOMA =

29.2

Exerc cio 2

A seguir existem 4 algoritmos que foram gerados de maneira aleatria. Todos esto o a corretos, no entram em loop, geram valores perfeitamente determinados e todos tm a e complexidade aceitvel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas a pedidas. Algoritmo 1 1: Algoritmo 1 2: inteiro A, B, C, D, E 3: A 1 4: B 5 5: C 7 6: D 11 7: E 3 8: enquanto (D > 0) faa c 9: se (A < 1) ento a 10: B B+1 11: mse 12: enquanto (A > (6 6)) faa c 13: B A+B+2 14: AA2
verso de 10 de fevereiro de 2008 a

341

88-08, Pedro Kantek

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS E E + 7 se (D > (E 0)) ento a C C +8 mse menquanto D D4 menquanto 22: imprima (A + B + C + D + E)
15: 16: 17: 18: 19: 20: 21:

SOMA =

(A+B+C+D+E)

Algoritmo 2 1: Algoritmo 2 2: inteiro F, G, H, I, J 3: F 17 4: G 0 5: H 9 6: I 2 7: J 14 8: enquanto ((H + J) (3 J)) faa c 9: se (F < 20) ento a 10: GG+1 11: mse 12: enquanto ((F > 3) (G 5)) faa c 13: GG+2 14: F F 2 15: se (I > 5) ento a 16: J J +3F 17: mse 18: menquanto 19: H H +3 20: menquanto 21: imprima (F + G + H + I + J) SOMA = (F+G+H+I+J)

Algoritmo 3 1: Algoritmo 3 2: inteiro K, L, M, N, P 3: K 16 4: L 2 5: M 12 6: N 8 7: P 15 8: enquanto (K 0) faa c 9: LL+1 10: se (N 17) ento a 11: enquanto (M 3) faa c 12: M M +6 13: menquanto
88-08, Pedro Kantek

342

verso de 10 de fevereiro de 2008 a

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS M M +1 mse K K 3 N N +1 P P +2K enquanto (N mod 3 = 0) faa c N N +1 21: menquanto 22: menquanto 23: imprima (K + L + M + N + P )
14: 15: 16: 17: 18: 19: 20:

SOMA =

(K+L+M+N+P)

Algoritmo 4 1: Algoritmo 4 2: inteiro Q, R, S, T, U 3: Q 6 4: R 1 5: S 3 6: T 11 7: U 9 8: repita 9: se (Q < 12) ento a 10: RR+1 11: mse 12: se (T > 17) ento a 13: S S+2 14: mse 15: enquanto (U 19) faa c 16: U U +4 17: se (S > 5) ento a 18: T T +1 19: mse 20: menquanto 21: QQ+2 22: at ((Q > 0) (R = 0)) e 23: imprima (Q + R + S + T + U ) SOMA = (Q+R+S+T+U)

29.3

Exerc cio 3

A seguir existem 4 algoritmos que foram gerados de maneira aleatria. Todos esto o a corretos, no entram em loop, geram valores perfeitamente determinados e todos tm a e complexidade aceitvel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas a pedidas. Algoritmo 1 1: Algoritmo 1
verso de 10 de fevereiro de 2008 a

343

88-08, Pedro Kantek

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS


2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:

inteiro A, B, C, D, E A 14 B 4 C 1 D3 E 5 enquanto (D > 0) faa c se (A < 17) ento a B B+1 mse enquanto (A > (2 6)) faa c B A+B+2 AA2 E E + 3 se (D > (E 20)) ento a C C + 10 mse menquanto D D4 menquanto imprima (A + B + C + D + E) (A+B+C+D+E)

SOMA =

Algoritmo 2 1: Algoritmo 2 2: inteiro F, G, H, I, J 3: F 15 4: G 7 5: H 1 6: I 13 7: J 4 8: enquanto ((H + J) (3 J)) faa c 9: se (F < 16) ento a 10: GG+1 11: mse 12: enquanto ((F > 2) (G 18)) faa c 13: GG+2 14: F F 2 15: se (I > 8) ento a 16: J J +3F 17: mse 18: menquanto 19: H H +3 20: menquanto 21: imprima (F + G + H + I + J) SOMA = (F+G+H+I+J)

Algoritmo 3
88-08, Pedro Kantek

344

verso de 10 de fevereiro de 2008 a

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 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:

Algoritmo 3 inteiro K, L, M, N, P K 13 L 9 M 0 N 19 P 15 enquanto (K 1) faa c LL+1 se (N 4) ento a enquanto (M 18) faa c M M +6 menquanto M M +1 mse K K 3 N N +1 P P +2K enquanto (N mod 3 = 0) faa c N N +1 menquanto menquanto imprima (K + L + M + N + P ) (K+L+M+N+P)

SOMA =

Algoritmo 4 1: Algoritmo 4 2: inteiro Q, R, S, T, U 3: Q 8 4: R 1 5: S 12 6: T 9 7: U 7 8: repita 9: se (Q < 14) ento a 10: RR+1 11: mse 12: se (T > 17) ento a 13: S S+2 14: mse 15: enquanto (U 18) faa c 16: U U +4 17: se (S > 2) ento a 18: T T +1 19: mse 20: menquanto 21: QQ+2 22: at ((Q > 0) (R = 0)) e 23: imprima (Q + R + S + T + U )
verso de 10 de fevereiro de 2008 a

345

88-08, Pedro Kantek

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS SOMA = (Q+R+S+T+U)

29.4

Exerc cio 4

A seguir existem 4 algoritmos que foram gerados de maneira aleatria. Todos esto o a corretos, no entram em loop, geram valores perfeitamente determinados e todos tm a e complexidade aceitvel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas a pedidas. Algoritmo 1 1: Algoritmo 1 2: inteiro A, B, C, D, E 3: A 3 4: B 2 5: C 20 6: D 11 7: E 1 8: enquanto (D > 0) faa c 9: se (A < 4) ento a 10: B B+1 11: mse 12: enquanto (A > (9 6)) faa c 13: B A+B+2 14: AA2 15: E E + 5 16: se (D > (E 12)) ento a 17: C C +7 18: mse 19: menquanto 20: D D4 21: menquanto 22: imprima (A + B + C + D + E) SOMA = (A+B+C+D+E)

Algoritmo 2 1: Algoritmo 2 2: inteiro F, G, H, I, J 3: F 12 4: G 15 5: H 3 6: I 6 7: J 2 8: enquanto ((H + J) (3 J)) faa c 9: se (F < 17) ento a 10: GG+1 11: mse 12: enquanto ((F > 4) (G 1)) faa c 13: GG+2 14: F F 2
88-08, Pedro Kantek

346

verso de 10 de fevereiro de 2008 a

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS


15: 16: 17: 18: 19: 20: 21:

se (I > 8) ento a J J +3F mse menquanto H H +3 menquanto imprima (F + G + H + I + J) (F+G+H+I+J)

SOMA =

Algoritmo 3 1: Algoritmo 3 2: inteiro K, L, M, N, P 3: K 16 4: L 6 5: M 5 6: N 13 7: P 19 8: enquanto (K 7) faa c 9: LL+1 10: se (N 17) ento a 11: enquanto (M 12) faa c 12: M M +6 13: menquanto 14: M M +1 15: mse 16: K K 3 17: N N +1 18: P P +2K 19: enquanto (N mod 3 = 0) faa c 20: N N +1 21: menquanto 22: menquanto 23: imprima (K + L + M + N + P ) SOMA = (K+L+M+N+P)

Algoritmo 4 1: Algoritmo 4 2: inteiro Q, R, S, T, U 3: Q 8 4: R 7 5: S 6 6: T 5 7: U 9 8: repita 9: se (Q < 14) ento a 10: RR+1 11: mse 12: se (T > 6) ento a
verso de 10 de fevereiro de 2008 a

347

88-08, Pedro Kantek

CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS


13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:

S S+2 mse enquanto (U 18) faa c U U +4 se (S > 2) ento a T T +1 mse menquanto QQ+2 at ((Q > 0) (R = 0)) e imprima (Q + R + S + T + U ) (Q+R+S+T+U)

SOMA =

29.5
1 2 3 4

Respostas
67 -27 121 -4 32 76 16 32 48 36 32 50 61 47 41 31

88-08, Pedro Kantek

348

verso de 10 de fevereiro de 2008 a

Cap tulo 30

Exerc cios Prticos: 073 a achar o dcimo termo e


Elementar, meu caro Watson. Holmes, S.

30.1

Exemplos

Para este exerc cio, so apresentadas diversas seqncias de 7 nmeros. Naturalmente, a ue u elas so objeto de um programa de computador. O programa apresentado, mas faltam a e nele certos parmetros (x, y e z), cujos valores sero inteiros e sempre estaro entre a a a 2 e 7, inclusive. Pelo aspecto da seqncia e do programa mostrado, voc deve inferir ue e tais valores. Depois disso, a seqncia j impressa deve ser vericada (preferencialmente ue a pelo computador). Estando os 7 primeiros valores corretos, devem estar os seguintes. Para cada seqncia, voc deve responder qual ser o dcimo valor. ue e a e Sequncia 1 e 1: para I de 1 at 10 faa e c 2: imprima x + (I 2 ) 3: mpara Para a seqncia 5 8 13 20 29 40 53 68 85 104, pode-se ver que o 10o valor da seqncia ue ue 104, j que x = 4. e a Sequncia 2 e 1: para I de 1 at 10 faa e c 2: imprima x + (I 3 ) 3: mpara Para a seqncia 4 11 30 67 128 219 346 515 732 1003, pode-se ver que o 10o valor da ue seqncia 1003, j que x = 3. ue e a Sequncia 3 e 1: para I de 1 at 10 faa e c 2: imprima (x + I)2 3: mpara Para a seqncia 16 25 36 49 64 81 100 121 144 169, pode-se ver que o 10o valor da ue seqncia 169, j que x = 3. ue e a Sequncia 4 e 349

CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO para I de 1 at 10 faa e c imprima (x + I)3 mpara Para a seqncia 512 729 1000 1331 1728 2197 2744 3375 4096 4913, pode-se ver que o ue 10o valor da seqncia 4913, j que x = 7. ue e a
1: 2: 3:

Sequncia 5 e 1: para I de 1 at 10 faa e c 2: imprima (x I)2 3: mpara Para a seqncia 36 144 324 576 900 1296 1764 2304 2916 3600, pode-se ver que o 10o ue valor da seqncia 3600, j que x = 6. ue e a Sequncia 6 e 1: para I de 1 at 10 faa e c 2: imprima (x I)3 3: mpara Para a seqncia 8 64 216 512 1000 1728 2744 4096 5832 8000, pode-se ver que o 10o ue valor da seqncia 8000, j que x = 2. ue e a Sequncia 7 e 1: para I de 1 at 10 faa e c 2: imprima xI 3: mpara Para a seqncia 2 4 8 16 32 64 128 256 512 1024, pode-se ver que o 10o valor da ue seqncia 1024, j que x = 2. ue e a Sequncia 8 e 1: para I de 1 at 10 faa e c 2: imprima ((I 2 ) + x) y 3: mpara Para a seqncia 12 18 28 42 60 82 108 138 172 210, pode-se ver que o 10o valor da ue seqncia 210, j que x = 5 e y = 2. ue e a Sequncia 9 e 1: para I de 1 at 10 faa e c 2: imprima ((I 3 ) + x) y 3: mpara Para a seqncia 15 50 145 330 635 1090 1725 2570 3655 5010, pode-se ver que o 10o ue valor da seqncia 5010, j que x = 2 e y = 5. ue e a Sequncia 10 e 1: para I de 1 at 10 faa e c 2: imprima ((x + I)2 ) y 3: mpara Para a seqncia 180 245 320 405 500 605 720 845 980 1125, pode-se ver que o 10o valor ue da seqncia 1125, j que x = 5 e y = 5. ue e a Sequncia 11 e 1: para I de 1 at 10 faa e c 2: imprima ((x + I)3 ) y 3: mpara Para a seqncia 2401 3584 5103 7000 9317 12096 15379 19208 23625 28672, pode-se ver ue que o 10o valor da seqncia 28672, j que x = 6 e y = 7. ue e a
88-08, Pedro Kantek

350

verso de 10 de fevereiro de 2008 a

CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO Sequncia 12 e 1: para I de 1 at 10 faa e c 2: imprima ((x + I)2 ) + y 3: mpara Para a seqncia 22 31 42 55 70 87 106 127 150 175, pode-se ver que o 10o valor da ue seqncia 175, j que x = 3 e y = 6. ue e a Sequncia 13 e 1: para I de 1 at 10 faa e c 2: imprima ((x + I)3 ) + y 3: mpara Para a seqncia 131 222 349 518 735 1006 1337 1734 2203 2750, pode-se ver que o 10o ue valor da seqncia 2750, j que x = 4 e y = 6. ue e a Sequncia 14 e 1: para I de 1 at 10 faa e c 2: imprima (xI ) + y 3: mpara Para a seqncia 8 10 14 22 38 70 134 262 518 1030, pode-se ver que o 10o valor da ue seqncia 1030, j que x = 2 e y = 6. ue e a Sequncia 15 e 1: para I de 1 at 10 faa e c 2: imprima xI+y 3: mpara Para a seqncia 32 64 128 256 512 1024 2048 4096 8192 16384, pode-se ver que o 10o ue valor da seqncia 16384, j que x = 2 e y = 4. ue e a Sequncia 16 e 1: para I de 1 at 10 faa e c 2: imprima ((x + (I 2 )) y) + z 3: mpara Para a seqncia 25 37 57 85 121 165 217 277 345 421, pode-se ver que o 10o valor da ue seqncia 421, j que x = 4, y = 4 e z = 5. ue e a Sequncia 17 e 1: para I de 1 at 10 faa e c 2: imprima ((x + (I 3 )) y) + z 3: mpara Para a seqncia 31 59 135 283 527 891 1399 2075 2943 4027, pode-se ver que o 10o ue valor da seqncia 4027, j que x = 6, y = 4 e z = 3. ue e a Sequncia 18 e 1: para I de 1 at 10 faa e c 2: imprima (((x + I)2 ) y) + z 3: mpara Para a seqncia 255 346 451 570 703 850 1011 1186 1375 1578, pode-se ver que o 10o ue valor da seqncia 1578, j que x = 5, y = 7 e z = 3. ue e a Sequncia 19 e 1: para I de 1 at 10 faa e c 2: imprima (((x + I)3 ) y) + z 3: mpara Para a seqncia 2061 3075 4377 6003 7989 10371 13185 16467 20253 24579, pode-se ver ue
verso de 10 de fevereiro de 2008 a

351

88-08, Pedro Kantek

CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO que o 10o valor da seqncia 24579, j que x = 6, y = 6 e z = 3. ue e a Sequncia 20 e 1: para I de 1 at 10 faa e c 2: imprima ((xI ) + y) z 3: mpara

Para a seqncia 10 14 22 38 70 134 262 518 1030 2054, pode-se ver que o 10o valor da ue seqncia 2054, j que x = 2, y = 3 e z = 2. ue e a

30.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 ?

88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO

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.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 ?

verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO

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.6
1 2 3 4

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 2746

900 16384

88-08, Pedro Kantek

354

verso de 10 de fevereiro de 2008 a

Cap tulo 31

Exerc cios Prticos: 077 a Algoritmos


O objetivo deste exerc o treinamento do teste de mesa, tambm conhecido como cio e e chins. Voc deve seguir os algoritmos com os dados de entrada fornecidos e ao nal e e deve imprimir o resultado gerado pelo algoritmo. Todos os algoritmos esto corretos e a fazem alguma computao util. ca

31.1
31.1.1
1: 2: 3:

Exerc cio 1
Algoritmo 1

Algoritmo U M cadeia C[80] inteiro I, J 4: leia(C) 5: I 0 6: J 1 7: enquanto I < 2 faa c 8: se C[J] = ento a 9: I ++ 10: mse 11: J ++ 12: menquanto 13: enquanto C[J] = O faa c 14: imprima C[J] 15: J ++ 16: menquanto Para os dados ONDE-ORA-SE-ADUNA-O-CONCILIO-GUERREIRO O algoritmo UM deve imprimir

31.1.2
1:

Algoritmo 2

Algoritmo DOIS 355

CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS inteiro V ET [6] inteiro SOM A, I pontoutuante M ED leia(V ET ) SOM A 0 I1 enquanto I < 7 faa c 9: SOM A SOM A + V ET [I] 10: I ++ 11: menquanto 12: M ED SOM A 6 13: I 1 14: enquanto (I < 7) faa c 15: se V ET [I] > (M ED 5) ento a 16: imprima V ET [I] 17: mse 18: I ++ 19: menquanto Para os dados
2: 3: 4: 5: 6: 7: 8:

117 190 121 108 167 198 O algoritmo DOIS dever imprimir a

31.1.3
1: 2: 3:

Algoritmo 3

Algoritmo T RES inteiro V ET [6] inteiro I, J 4: I 2 5: enquanto I 6 faa c 6: leia V ET [I] 7: I ++ 8: menquanto 9: I 3 10: enquanto (I 6) faa c 11: V ET [1] V ET [I] 12: J I 1 13: enquanto (V ET [J] > V ET [1]) faa c 14: V ET [J + 1] V ET [J] 15: J 16: menquanto 17: V ET [J + 1] V ET [1] 18: I ++ 19: menquanto 20: imprima V ET [3] Para os dados 53 43 44 55 68

O algoritmo TRES dever imprimir a

88-08, Pedro Kantek

356

verso de 10 de fevereiro de 2008 a

CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS

Algoritmo 4
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:

Algoritmo QU AT RO inteiro M AT [4][5] inteiro C, I, J, LIN, COL leia (C, LIN, COL) I1 enquanto I 4 faa c J 1 enquanto (J 5) faa c M AT [I][J] C C C +9 J ++ menquanto I ++ menquanto imprima M AT [LIN ][COL]

Soluo ca 1 2 2

O algoritmo QUATRO dever imprimir a

31.2
31.2.1
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:

Exerc cio 2
Algoritmo 1

Algoritmo U M cadeia C[80] inteiro I, J leia(C) I0 J 1 enquanto I < 2 faa c se C[J] = O ento a I ++ mse J ++ menquanto enquanto C[J] = A faa c imprima C[J] J ++ menquanto Para os dados

AO-VELHO-COITADO-DE-PENAS-RALADO O algoritmo UM deve imprimir

verso de 10 de fevereiro de 2008 a

357

88-08, Pedro Kantek

CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS

31.2.2
1: 2: 3:

Algoritmo 2

Algoritmo DOIS inteiro V ET [6] inteiro SOM A, I 4: pontoutuante M ED 5: leia(V ET ) 6: SOM A 0 7: I 1 8: enquanto I < 7 faa c 9: SOM A SOM A + V ET [I] 10: I ++ 11: menquanto 12: M ED SOM A 6 13: I 1 14: enquanto (I < 7) faa c 15: se V ET [I] > (M ED 2) ento a 16: imprima V ET [I] 17: mse 18: I ++ 19: menquanto Para os dados 154 142 112 120 173 114 O algoritmo DOIS dever imprimir a

31.2.3
1: 2:

Algoritmo 3

Algoritmo T RES inteiro V ET [6] 3: inteiro I, J 4: I 2 5: enquanto I 6 faa c 6: leia V ET [I] 7: I ++ 8: menquanto 9: I 3 10: enquanto (I 6) faa c 11: V ET [1] V ET [I] 12: J I 1 13: enquanto (V ET [J] < V ET [1]) faa c 14: V ET [J + 1] V ET [J] 15: J 16: menquanto 17: V ET [J + 1] V ET [1] 18: I ++ 19: menquanto 20: imprima V ET [3] Para os dados 56 70 75 82 79 358
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS O algoritmo TRES dever imprimir a

31.2.4
1: 2:

Algoritmo 4

Algoritmo QU AT RO inteiro M AT [4][5] 3: inteiro C, I, J, LIN, COL 4: leia (C, LIN, COL) 5: I 1 6: enquanto I 4 faa c 7: J 1 8: enquanto (J 5) faa c 9: M AT [I][J] C 10: C C +7 11: J ++ 12: menquanto 13: I ++ 14: menquanto 15: imprima M AT [LIN ][COL] Para os dados 7 3 5

O algoritmo QUATRO dever imprimir a

31.3
31.3.1
1: 2: 3:

Exerc cio 3
Algoritmo 1

Algoritmo U M cadeia C[80] inteiro I, J 4: leia(C) 5: I 0 6: J 1 7: enquanto I < 3 faa c 8: se C[J] = ento a 9: I ++ 10: mse 11: J ++ 12: menquanto 13: enquanto C[J] = A faa c 14: imprima C[J] 15: J ++ 16: menquanto Para os dados DOS-VENCIDOS-TAPUIAS-INDA-CHOREM O algoritmo UM deve imprimir

verso de 10 de fevereiro de 2008 a

359

88-08, Pedro Kantek

CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS

31.3.2
1: 2: 3:

Algoritmo 2

Algoritmo DOIS inteiro V ET [6] inteiro SOM A, I 4: pontoutuante M ED 5: leia(V ET ) 6: SOM A 0 7: I 1 8: enquanto I < 7 faa c 9: SOM A SOM A + V ET [I] 10: I ++ 11: menquanto 12: M ED SOM A 6 13: I 1 14: enquanto (I < 7) faa c 15: se V ET [I] > (M ED + 3) ento a 16: imprima V ET [I] 17: mse 18: I ++ 19: menquanto Para os dados 169 186 105 179 160 187 O algoritmo DOIS dever imprimir a

31.3.3
1: 2:

Algoritmo 3

Algoritmo T RES inteiro V ET [6] 3: inteiro I, J 4: I 2 5: enquanto I 6 faa c 6: leia V ET [I] 7: I ++ 8: menquanto 9: I 3 10: enquanto (I 6) faa c 11: V ET [1] V ET [I] 12: J I 1 13: enquanto (V ET [J] > V ET [1]) faa c 14: V ET [J + 1] V ET [J] 15: J 16: menquanto 17: V ET [J + 1] V ET [1] 18: I ++ 19: menquanto 20: imprima V ET [4] Para os dados 55 45 42 37 59 360
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS O algoritmo TRES dever imprimir a subsectionAlgoritmo 4 1: Algoritmo QU AT RO 2: inteiro M AT [4][5] 3: inteiro C, I, J, LIN, COL 4: leia (C, LIN, COL) 5: I 1 6: enquanto I 4 faa c 7: J 1 8: enquanto (J 5) faa c 9: M AT [I][J] C 10: C C +8 11: J ++ 12: menquanto 13: I ++ 14: menquanto 15: imprima M AT [LIN ][COL] Para os dados 4 2 5

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

verso de 10 de fevereiro de 2008 a

361

88-08, Pedro Kantek

CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS

88-08, Pedro Kantek

362

verso de 10 de fevereiro de 2008 a

Cap tulo 32

Exerc cio Prtico: 084 Balance a LIne


1. 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: putuante DIVIDA 7: m {estrutura} 8: estrutura MOV 9: caracter CODMOV {pode ser I, A ou E} 10: CAD DA 11: m {estrutura} 12: CAD ENT, SAI 13: MOV ME 14: inteiro funo LECAD ca 15: leia ENT 16: se m-de-arquivo ento a 17: devolva 999999 18: seno a 19: devolva ENT.CODIGO 20: mse 21: m {funo} ca 22: inteiro funao LEMOV c 23: leia ME 24: se m-de-arquivo ento a 25: devolva 999999 26: seno a 27: devolva ME.DA.CODIGO 28: mse 29: m {funo} ca 30: inteiro CC, CM 31: CC LECAD 32: CM LEMOV 33: enquanto (CC = 999999 CM = 999999) faa c 34: se (CC < CM) ento a 363

CAP ITULO 32. EXERC ICIO PRATICO: 084 BALANCE LINE


35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 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 seno a se (CM < CC) ento a se (ME.CODMOV = A) ento a Erro: , ME.DA.CODIGO, nao existe para alterar seno a se (ME.CODMOV =E) ento a Erro: , ME.DA.CODIGO, nao existe p/ excluir seno a SAI.CODIGO ME.DA.CODIGO SAI.NOME ME.DA.NOME SAI.IDADE ME.DA.IDADE SAI.DIVIDA ME.DA.DIVIDA imprima (SAI) mse mse CM LEMOV seno a se (ME.CODMOV = I) ento a Erro: ,ME.DA.CODIGO,ja existente SAI ENT imprima (SAI) seno a se (ME.CODMOV = A) ento a SAI ENT se (ME.DA.NOME = ) ento a SAI.NOME ME.DA.NOME mse se (ME.DA.IDADE = 0) ento a SAI.IDADE ME.DA.IDADE mse se (ME.DA.DIVIDA = 0.0) ento a SAI.DIVIDA ME.DA.DIVIDA mse imprime (SAI) mse mse CC LECAD CM LEMOV mse mse menquanto m algoritmo

2. Considere os seguintes dados: ==== CADASTRO 4hugo 27 6kica 20 7antonio 23 8ana 23


88-08, Pedro Kantek

==== 826.00 384.00 259.00 792.00

==== MOVIMENTO ==== A 2 22 531.00 E 5 0 .00 E 7 0 .00 E 8 0 .00 364


verso de 10 de fevereiro de 2008 a

CAP ITULO 32. 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 15 922.00 21 117.00 20 377.00 21 609.00 23 1015.00 15 602.00 15 972.00 28 1016.00 16 372.00 16 406.00 16 766.00 27 384.00 16 279.00 26 259.00 15 232.00 17 1082.00 19 296.00 25 792.00 16 991.00 29 791.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 0 .00 0 .00 22 1041.00 15 .00 21 .00 24 .00 18 466.00 27 1049.00 19 .00 15 919.00 19 283.00 19 791.00 23 444.00 22 440.00 21 .00 28 825.00 0 .00 0 .00 21 594.00 26 440.00

3. Numere o cadastro de sa e as mensagens de erro, e da responda:


Qual a linha numerada do cadastro de sa ? 3 da 9 26 Qual a mensagem de erro numerada ? 6 9

4. 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 431.00 673.00 228.00 669.00 855.00 885.00 558.00 556.00 934.00 685.00 126.00 932.00 537.00 615.00 745.00 ==== MOVIMENTO ==== E 1 0 .00 I 2 27 1058.00 A 3hugo 18 .00 A 4jorge 22 .00 E 9 0 .00 I 10 25 364.00 E 11 0 .00 I 12jose 25 971.00 I 15 22 736.00 I 18 21 963.00 E 19 0 .00 E 20 0 .00 I 25sara 28 694.00 E 27 0 .00 A 31 23 927.00 I 32 17 694.00 365
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 32. EXERC ICIO PRATICO: 084 BALANCE LINE 37felipe 38jane 40ana 41hugo 43felipe 46sara 47paula 48carmem 49elaine 21 745.00 16 406.00 18 1097.00 25 971.00 29 491.00 27 615.00 15 212.00 27 331.00 24 685.00 I A I E I E I I A 34 36 37 40 44 47 48 49 50 29 1075.00 18 .00 17 856.00 0 .00 22 492.00 0 .00 25 764.00 19 930.00 15 .00

5. Numere o cadastro de sa e as mensagens de erro, e da responda:


Qual a linha numerada do cadastro de sa ? 7 da 21 28 Qual a mensagem de erro numerada ? 1 17

6. Considere os seguintes dados: ==== CADASTRO ==== 1jose 19 629.00 2jose 18 736.00 5zuza 23 191.00 6elaine 16 653.00 8joao 15 211.00 10kica 18 764.00 11helio 28 578.00 12joao 18 533.00 13hugo 20 250.00 17carmem 24 440.00 18zuza 16 218.00 19kica 19 218.00 20elaine 18 861.00 23zuza 29 466.00 24jane 27 861.00 25luis 19 218.00 27paula 18 767.00 38helio 28 368.00 39paula 16 498.00 40sara 27 465.00 41jorge 24 528.00 43paulo 23 549.00 47biba 22 250.00 49luis 16 528.00 50biba 24 1060.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 .00 .00 .00 650.00 232.00 .00 .00 .00 922.00 932.00 .00 740.00 .00 .00 112.00 .00 .00 .00 .00 .00 .00 506.00 .00 424.00

7. Numere o cadastro de sa e as mensagens de erro, e da responda:


88-08, Pedro Kantek

366

verso de 10 de fevereiro de 2008 a

CAP ITULO 32. 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

8. 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 868.00 539.00 392.00 963.00 807.00 704.00 454.00 217.00 796.00 563.00 231.00 886.00 617.00 430.00 724.00 994.00 388.00 614.00 621.00 307.00 228.00 358.00 706.00 563.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.00 .00 .00 .00 .00 781.00 .00 941.00 389.00 .00 538.00 .00 945.00 .00 805.00 .00 .00 .00 .00 523.00 .00 538.00 600.00 693.00 .00

9. Numere o cadastro de sa e as mensagens de erro, 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
367

verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 32. EXERC ICIO PRATICO: 084 BALANCE LINE 2 / 13felipe / 24kica / 50pedro

15 922.00 27 1049.00 29 791.00

/Alteracao 23 inex /Inclusao 46 duplo 4 / 15 / 37felipe / 49elaine

22 21 24

736.00 745.00 685.00

/Exclusao 1 inex /Alteracao 50 inex 6 / 11helio / 20elaine / 50biba

21 650.00 18 861.00 24 1060.00

/Inclusao 47 duplo /Inclusao 49 duplo 8 / 44paula / 45kica / 48

27 27 21

358.00 706.00 693.00

/Inclusao 45 duplo /Exclusao 50 inex

88-08, Pedro Kantek

368

verso de 10 de fevereiro de 2008 a

Cap tulo 33

Exerc cios Prticos: 110 a indexao e indireo 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, sejam ainda A = 4, E 7 8 5 3 1 5 8 8 = 5, 9 10 20 14 2 9 10 17 H = 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

Acompanhe os seguintes exemplos 1. Z [ 14 + 2. Z [ 14 3. T [ 9 1 1 2 ] ] ] ] ] 6 5 1 8 5 1 ] + K ] + A ] + 4 12 3 1 ] + H ] ] + 4 12 -2 5 2 ] ] + 8 10 14 369

4. Z [ Z [ 5. V [ V [

3 + A 5 ] ]

6. T [ T [ Z [ 10 + 7. T [ 16 8. Z [ T [ 2 ]

8 ] ] - 5 6 + 1

9. Z [ Z [ T [ 10. V [ 3 + 1 3 +

] - 6 2 8 + ] - M ] ] + 3 1 ] +

11. T [ V [

12. Z [ T [ T [ 13. V [ 6 + H

CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXACAO E INDIRECAO

14. Z [ V [

7 ] +

] + 7 ] ] - M ] - A

11 1 14

15. Z [ V [ Z [ 13 + E 16. V [ 8 + 2 ] ] +

17. Z [ V [ 12 - K 18. V [ Z [ Z [ 19. Z [ 11 20. T [ T [ 1 8 -

2 1

] + E ] + 8

1 9 8

3 ] ] ] - K 2 ] + 2

] + E 1 ] - K

0 -7 10

21. T [ V [ V [ 12 ] 22. V [ 4 1 ] - M ] +

] -

23. V [ V [

4 - M

2 ] -

] - 9 1 ] - M ]

-4 8

24. T [ Z [ T [

4 - E

33.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

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; E = 5; H = 7; K = 1; M = 1 Resolva, Z [ V [ 8 ] + M 2 ] - 8 ________ ________ ________ 2 1 ] - H ] - A ] - 1 ] ] + 4 ________ ________ ________ ________ 2 ] - K ] + 1 ] + 4 ________1.________ ________ ________

V [ 12 ] - 7 V [ T [ Z [ Z [ 7 8 +

T [ V [ Z [ 10 ] - A V [ 13 + K V [ Z [ ] + 5 ] +

] + M

3 + E

T [ T [ V [ V [ 5 - H

3 + A ]

] - A

88-08, Pedro Kantek

370

verso de 10 de fevereiro de 2008 a

CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXACAO E INDIRECAO V [ V [ 2 - A ] + A 1 ] ] ] + 6 ________ ________ ________ 1 ] + M ] ] ] - H ________ ________ ________2.________ ] - 6 ] + E ] ] ________ ________ ________ ________ 1 ] ] - 6 ________ ________ ] 2 ] ] 1 ] + 3 ________ ________3.________ ________ ________ 2 ] + 1 ] ________ ________ ________ 2 ] 1 ] ________ ________ ] ] + 2 ] - 8 ________4.________ ________ ________ 1 ] + A ] ] - 3 2 ] + K ] + A ________ ________

V [ T [ Z [ Z [ 11 - K V [ T [

4 ] ]

2 ] -

T [ V [ V [ T [ 13 + A

3 + M ] - A 2

Z [ V [ 14 ] + V [ V [ V [ Z [ 5 + 1 3 -

2 + A ] - H 1

T [ V [

] ] ] +

Z [ T [ V [ T [ 6 1

5 + K ] + A 2

T [ V [ 10 ] +

V [ V [ T [ 13 V [ 10 - E ] + E

T [ Z [ 11 ] ] + 6 T [ V [ Z [ Z [ 10 + M T [ T [ 6 ] + ]

7 ] ] - K

Z [ Z [ T [ 10 ] Z [ 18 + H V [ T [ ] - 1

9 - E

] + A

T [ Z [ Z [ V [ 1 ] - 9 7 +

2 ] - M

V [ V [

Z [ V [ Z [

9 - K

verso de 10 de fevereiro de 2008 a

371

88-08, Pedro Kantek

CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXACAO E INDIRECAO T [ 8 - K ] - 7 2 ] ] + M 1 ] ] ________ ________ ________ ________5.________ ] - E ] 1 ] 2 ] ________ ________ ________ 2 ] + 1 ] 1 ] ________ ________ ________ ] + A 2 3 ] + 8 ] + 4 2 5 ] - H 6 ________ ________6.________

V [ Z [

3 -

T [ Z [ V [ V [ 5 ] + 5

5 ] +

V [ V [ 10 + A T [ V [ T [ V [ 17 V [ T [ 2 7 -

3 + K ] - 3 1 6 ] 2 2 + 2

] -

] + 1

Z [ Z [ V [ V [ 8 + 2 9 +

] + E

V [ Z [

Z [ V [ V [ Respostas 1

] + E

33.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; H = 7; K = 8; 14 7 2 6 M 15 16 7 7 7 9 14 20 = 0 Resolva, ________ ________ 2 ] - 8 ] + 2 ] - A ________ ________ ________ 2 ] ________ ________ ________1.________

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, sejam ainda A = 7; T [ Z [ 8 + E 2 ] ]

T [ 13 -

T [ Z [ 15 + A T [ V [

1 ] + E 7 ] + 8

] + 7 1 ] ] +

V [ Z [ V [ T [ 4 + E

V [ V [

9 - M

] ]

88-08, Pedro Kantek

372

verso de 10 de fevereiro de 2008 a

CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXACAO E INDIRECAO T [ Z [ T [ T [ 10 ] + 7 V [ T [ 11 ] - E Z [ V [ V [ Z [ 16 2 ] + 7 6 + 1 ] + 1 ] + E ] ________ ________ ________ ________ ________ ] + 2 1 ] ] - A ] ________ ________ ________2.________ 2 ] - A ] - K ] + 3 ________ ________ ________ 1 ] ] ] + A ________ ________ ________ 2 ] - 2 ] + 2 ] ] ________ ________3.________ ________ ] - M ] + E ] - M ________ ________ ________ 1 ] + E ] 1 ] + H ________ ________ ________ ________4.________ ] ] ________ ________

4 ] ] ] ]

V [ T [ 10 - E Z [ V [ V [ Z [ 15 + M V [ Z [

3 + ] - M 1 6 -

] - M

8 -

] 1

V [ T [ Z [ Z [ 16 1

] + K

] + K 1 ] 2

V [ V [ 17 -

Z [ T [ T [ 10 + Z [ 13 ] T [ Z [ 11 ] +

] + M

V [ T [ V [ 15 - H V [ 10 + T [ Z [ 2 8 ] - 6 2 1 + ] - H ] +

] + M 2

V [ Z [ T [ V [ 12 + A

] - A

V [ T [ 15 + E T [ Z [ Z [ T [ 1 + 1

2 - E ] + 6 1

] + H

Z [ V [ 10 -

] ] - E 1 ] - K

V [ V [ Z [ 13 Z [ 6 ]

verso de 10 de fevereiro de 2008 a

373

88-08, Pedro Kantek

CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXACAO E INDIRECAO T [ V [ 6 2 ] ] + A ] + 2 ] 1 ] + 8 ________ ________ ________ ] + 7 1 ] - M ] + M ] ________ ________ ________5.________ 1 + 1 ] - A ] ________ ________ ________ ________ ] ________ ________ ] - 8 ] + 2 4 ] 5 6 ________ ________6.________

Z [ V [ V [ 15 - E V [ 6 ]

V [ T [ 13 ] + H V [ Z [ Z [ Z [ 14 ] T [ V [ 6 +

T [ T [ T [ 16 ] + H V [ 17 - H ] + 8

] ] - E

T [ T [ 10 - H T [ Z [ Z [ T [ 11 + T [ V [ 2

] ] + K

6 ] ] + M ] + E 2

4 ] +

V [ V [ Z [ Respostas 1 2

4 ] - M 3

33.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

Sejam os vetores: 1 2 3 4 V 3 4 3 2 T 3 2 7 2 Z 4 7 2 5

E, sejam ainda A = 3; E = 6; H = 3; K = 3; M = 5 Resolva, V [ 13 + H V [ V [ 4 - H 8 2 7 + ] ] - H ] + M 1 ] ] - A 1 1 ] - H ________ ________ ________ ________ ________ ] - A 374 ________
verso de 10 de fevereiro de 2008 a

V [ V [ Z [ V [

8 - M

] + 6

T [ V [ V [

5 -

] ] - A

88-08, Pedro Kantek

CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXACAO E INDIRECAO

V [ 16 -

] ] + A ] - 9 1 ] + K ]

________ ________1.________ ________ ________ ________ ] + M ] ] - A ________ ________ 1 ] + ] 1 ] - E ] ________ ________ ________2.________

T [ T [ 11 + E T [ Z [ T [ Z [ 7 + 1

8 - K ] + 5 ]

] -

V [ V [ 14 ] - K

V [ T [ Z [ 18 - A T [ 2 + 2 6 + ] + 5 2

T [ Z [

] + 2

T [ Z [ T [ 10 + V [ 12 ] V [ V [ 14 T [ V [ V [ V [ 4 + 2 8 + 1

] +

] 2 ] + 4

________ ________ ________

7 ] + A ] 2 ] ] 1

] +

V [ Z [

________ ] + M ] - A ] ________ ________

T [ T [ Z [ 15 Z [ 16 ] V [ Z [ 6 - E

] -

] ]

________ ________3.________ ________ ________

Z [ T [ T [ 12 ] - K V [ 9 2 ]

] + K

V [ V [

8 ] ] - H ] ] 2 ] - K

Z [ Z [ V [ 13 + A V [ 7 ] + E 6 ] + K

________ ________

V [ Z [

] + 1 2 ] - H ] - M ]

________ ________ ________

V [ T [ V [ 15 V [ 2 + A ]

V [ V [

7 - H

] - K

] - 5 375

________4.________
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXACAO E INDIRECAO

T [ Z [ V [ V [ 3 ]

1 ] ] ] + H

________ ________

T [ V [

1 + A

] ] + 5 ] + A ]

________ ________ ________

Z [ Z [ T [ V [ 13 - H

4 ] - E ] + A ] +

T [ T [ 17 - K

] - E ]

________ ________ ________5.________

T [ V [ Z [ 14 ] ] + H Z [ 8 ] - E 8 + E ] 1

V [ V [

] + 1 1 ]

________ ________ ________

Z [ Z [ Z [ 12 + M V [ 13 ] - K T [ V [ 19 - A Z [ Z [ V [ Z [ 5 - A

] ] +

] - H 1

] ] ] - 8

________ ________ ________

1 + ] - M

] - A

Z [ Z [ 18 + H Z [ T [ V [ Respostas 1 2

] - K

] - M 2 4 ] + 2 5 ] 6

________ ________6.________

8 + E

] 3

33.4
1 2 3

Respostas
37 64 56 82 99 68 47 89 48 72 72 30 17 78 67 51 69 37

88-08, Pedro Kantek

376

verso de 10 de fevereiro de 2008 a

Cap tulo 34

Exerc cios Prticos: 116 a manuseio de tabelas


34.1 Manuseio de tabelas

A tabela uma excelente ferramenta para ajudar na programao. Sempre que se e ca necessita consultar, acumular, separar em classes e tarefas similares, a tabela a soluo. e ca A tabela pode ser de 1 dimenso e neste caso chamada vetor. Por exemplo, Se a e sabendo existirem 1200 alunos no curso, quisermos saber quantos alunos h em cada um a dos 5 anos do curso, e supondo que cada aluno assim identicado e informao ca signicado cdigo o de o nmero unico que identica o u matricula aluno na instituio ca nome do aluno srie 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 E, ao processar cada aluno, incluir o seguinte comando 1: QTDAL [serie-aluno] QTDAL [serie-aluno] + 1 Um segundo caso, algo mais complexo, ocorre quando os identicadores da classe no so conhecidos de antemo. Por exemplo, suponhamos querer saber qual o local de a a a nascimento (munic pio) mais freqente entre os 1200 alunos do curso. u Aqui, 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). O problema e que no sabemos quais so. Naturalmente, no precisamos criar um vetor com 5000 e a a a nmeros (5000 so os munic u a pios brasileiros, nmero aproximado. u Agora, o ndice de acesso no mais conhecido de antemo e precisa ser localizado. a e a Suponhamos existir o campo MUNALU, como sendo o cdigo numrico do munic o e pio onde o aluno nasceu. Suponhamos que um limite exagerado (para a quantidade de munic pios) seja 200. Criaremos dois vetores, o primeiro contendo os cdigos de munic o pio que forem surgindo e o segundo para guardar os contadores. Ambos os vetores sero acessados a pelo mesmo ndice. 377

CAP ITULO 34. EXERC ICIOS PRATICOS: 116 - MANUSEIO DE TABELAS


1: 2: 3: 4:

inteiro MUNICIPIO[200], CONTADOR[200] para I de 1 at 200 faa e c MUNICIPIO[I] CONTADOR[I] 0 mpara

A partir deste ponto, os dois vetores esto prontos para receber os dados. Para cada a MUNALU lido, deve-se pesquisar o vetor MUNICIPIO da matriz at que uma das trs e e coisas acontea: a) Achar um MUNICIPIO = MUNALU; b) Achar um MUNICIPIO = c 0; c) Ultrapassar o limite de I = 200. A primeira indica que este munic pio j havia aparecido e seu contador deve ser a incrementado em uma unidade. A segunda, informa ser a primeira vez que este munic pio est aparecendo e seu contador deve ser 1. A terceira, no deveria ocorrer e se acontecer a a indicar um erro. a Eis o algoritmo inteiro MUNICIPIO[200], CONTADOR[200] para I de 1 at 200 faa e c MUNICIPIO[I] CONTADOR[I] 0 mpara leia MUNALU enquanto MUNALU 0 faa c I1 enquanto MUNALU = MUNICIPIO[I] MUNICIPIO[I] = 0 faa c I++ se I> 200 ento a ...erro... mse menquanto CONTADOR[I] CONTADOR[I] + 1 leia MUNALU menquanto // achar o mais freqente u MELHOR QUAL 0 I1 enquanto I 200 MUNICIPIO[I] = 0 faa c se CONTADOR[I] > MELHOR ento a MELHOR CONTADOR[I] QUAL I mse I++ menquanto imprima MUNICIPIO[QUAL] Operaes fundamentais: incluso Para incluir um novo elemento em uma tabela, co a duas condies devem ocorrer: co a) Deve haver espao na estrutura; b) A chave a incluir deve ser nova (isto conhecido c e como atributo UNIQUE). Em geral, o primeiro ponto controlado por uma varivel global, por exemplo QTe a DUSADA, que comea com zero, incrementada a cada incluso e pode crescer at o c e a e limite (200 no exemplo acima). Note-se que na incluso de tabelas que sofrero busca a a linear ordenada, a tabela dever ser mantida ordenada, o que talvez implique reordea naoes. c
88-08, Pedro Kantek

378

verso de 10 de fevereiro de 2008 a

CAP ITULO 34. EXERC ICIOS PRATICOS: 116 - MANUSEIO DE TABELAS Excluso Se necessita diminuir o contador de linhas vlidas e eventualmente reagrupar a a as linhas (caso a linha a excluir no seja a ultima), para evitar a existncia de buracos a e na tabela Pesquisa Busca Linear Para este algoritmo o conjunto de chaves no mantido ordenado. O a e algoritmo bsico : a e 1: funo BUSCALIN(inteiro CHAVE, inteiro TABELA[num]) ca 2: inteiro i 1; qtd 0 3: enquanto i tamanho(TABELA) faa c 4: qtd qtd + 1 5: se CHAVE = TABELA[i] ento a 6: ...ACHOU... 7: i tamanho(TABELA) 8: mse 9: qtd qtd + 1 10: i++ 11: menquanto 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

Busca linear ordenada Neste algoritmo, o conjunto de chaves dever estar ordenado. a Eis o algoritmo: 1: funo BUSCALINORD (inteiro CHAVE, inteiro TABELA[num]) ca 2: inteiro i 1; qtd 0 3: enquanto (i tamanho(TABELA)) (CHAVE > TABELA[i]) faa c 4: qtd qtd + 2 5: i++ 6: menquanto 7: se CHAVE = TABELA[i] ento a 8: ...ACHOU... 9: mse 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

Busca linear com sentinela A tabela no precisa estar ordenada, e a busca gasta a apenas a metade dos testes da busca linear. A sentinela a chave que se busca e que forosamente inclu ao nal da tabela. Assim, a sa do lao sempre e c da da c se dar pela igualdade de chaves. Se a chave procurada for encontrada no meio a da tabela, ...ACHOU... Se for encontrada no nal da tabela, (onde foi explicitamente colocada) porque ela no se encontrava l antes do in e a a cio do algoritmo. 1: funo BUSCALINSEN (inteiro CHAVE, inteiro TABELA[num]) ca 2: inteiro i 1; qtd 0 3: TABELA[ULTIMO+1] CHAVE {note que ULTIMO no alterado} a e
verso de 10 de fevereiro de 2008 a

379

88-08, Pedro Kantek

CAP ITULO 34. EXERC ICIOS PRATICOS: 116 - MANUSEIO DE TABELAS enquanto CHAVE = TABELA[i]) faa c qtd++ i++ menquanto se i = (ULTIMO + 1) ento a ...ACHOU... mse 11: devolva qtd
4: 5: 6: 7: 8: 9: 10:

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, z 6 passagens de 1000 chaves. Para cada mtodo, em cada passagem foram 3 tentativas: as primeiras 2 com sucesso e a e passagem Lin Lin Ord Lin Sen 1 1265.3 1063.3 817.3 2 1777.3 749.3 621.7 3 1832.0 1314.0 674.0 ultima para uma chave inexistente. Eis os dados: 4 1244.7 613.3 634.7 5 1200.7 1186.7 607.3 6 948.0 832.7 770.3 mdia e 1378.0 959.9 687.6

34.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.3
Calcule:

Exerc cio 2

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.4
Calcule:

Exerc cio 3

89 BUSCALIN 87 BUSCALINORD 60 BUSCALINSEN


88-08, 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 _____

verso de 10 de fevereiro de 2008 a

CAP ITULO 34. EXERC ICIOS PRATICOS: 116 - MANUSEIO DE TABELAS

34.5
1 2 3

Respostas
13 3 19 10 10 24 7 15 4

verso de 10 de fevereiro de 2008 a

381

88-08, Pedro Kantek

CAP ITULO 34. EXERC ICIOS PRATICOS: 116 - MANUSEIO DE TABELAS

88-08, Pedro Kantek

382

verso de 10 de fevereiro de 2008 a

Cap tulo 35

Exerc cio Prtico: 119 a Manuseio de Tabelas II


Para todos os algoritmos abaixo suponha-se duas variveis globais: a 1: inteiro TABELA[num] 2: inteiro ULTIMO Onde T ABELA contm os dados a serem acessados. num um valor suciente para e e conter todos os dados necessrios e U LT IM O um valor que aponta para o ultimo a e valor vlido da tabela. a Incluso de itens em tabelas desordenadas Esta incluso fcil, bastando acresa a e a centar o item ao nal da rea util da tabela. a 1: funo INCLUSAONORD (inteiro CHAVE) ca 2: ULTIMO ULTIMO + 1 3: se ULTIMO > num ento a 4: ...erro... 5: mse 6: TABELA[ULTIMO] CHAVE Qual a quantidade de operaes para fazer uma incluso em tabela no ordenada co a a no caso de uma tabela de elementos operaes co 100 10.000 1.000.000 n

Excluso de itens em tabelas desordenadas H duas estratgias aqui: a primeira a a e eliminar o item puxando os que caram abaixo da excluso para tampar o e a buraco. 1: funo EXCLUSAO1NORD (inteiro CHAVE) ca 2: inteiro i 1 3: enquanto TABELA[i] = CHAVE faa c 4: i++ 5: se i > ULTIMO ento a 6: ...erro... 383

CAP ITULO 35. EXERC ICIO PRATICO: 119 - MANUSEIO DE TABELAS II


7: 8: 9: 10: 11: 12: 13:

mse menquanto enquanto i < ULTIMO faa c TABELA[i] TABELA [i+1] i++ menquanto ULTIMO ULTIMO - 1

Qual a quantidade de operaes para fazer uma excluso do tipo 1; qual o nmero co a u mdio de operaes para achar um item que est na tabela e qual o nmero mdio e co a u e de operaes para concluir que um dado nmero no est na tabela co u a a elementos ops para ops para ops para excluso a achar concluir que no a est a 100 10.000 1.000.000 n

A segunda estratgia incluir algum indicador (f iller) que informe que o item e e foi eliminado. 1: funo EXCLUSAO2NORD (inteiro CHAVE) ca 2: inteiro i 1 3: enquanto TABELA[i] = CHAVE faa c 4: i++ 5: se i > ULTIMO ento a 6: ...erro... 7: mse 8: menquanto 9: TABELA[i] 9999999 Qual a quantidade de operaes para fazer uma excluso do tipo 2; qual o nmero co a u mdio de operaes para achar um item que est na tabela e qual o nmero mdio e co a u e de operaes para concluir que um dado nmero no est na tabela co u a a elementos ops para ops para ops para excluso a achar concluir que no a est a 100 10.000 1.000.000 n

A vantagem desta segunda alternativa que a excluso mais rpida, mas em e a e a compensao as buscas tendem a car mais demoaradas. ca Busca binria Conjunto ordenado, timo desempenho a o 1: funo BUSCABIN(inteiro CHAVE) ca
88-08, Pedro Kantek

384

verso de 10 de fevereiro de 2008 a

CAP ITULO 35. EXERC ICIO PRATICO: 119 - MANUSEIO DE TABELAS II


2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:

inteiro INIC,METADE,FIM INIC 1 FIM ULTIMO repita METADE ((INIC + FIM)/2) se CHAVE TABELA[METADE] ento a FIM METADE - 1 seno a INIC METADE + 1 mse at TABELA[METADE] = CHAVE INIC > FIM e se TABELA[METADE] = CHAVE ento a devolva METADE seno a devolva -1 mse

Qual a quantidade de operaes para fazer pesquisa e qual o nmero mdio de co u e operaes para concluir que um dado nmero no est na tabela co u a a elementos ops para ops para conpesquisa cluir que no a est a 100 10.000 1.000.000 n

Incluso em tabela ordenada A contrapartida para poder fazer a busca ordenada a criar e manter a tabela em ordem. Para isso, a incluso de novos elemene a tos deve ocorrer em seus locais espec cos e no no nal, como vimos acima. a
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:

funo INCLUSAOORD (inteiro CHAVE) ca ULTIMO ULTIMO + 1 se ULTIMO > num ento a ...erro... mse inteiro i 1 enquanto TABELA[i] < CHAVE faa c i++ menquanto k ULTIMO enquanto k > i faa c TABELA[k] TABELA[k-1] k menquanto TABELA[k] CHAVE

Qual a quantidade de operaes para fazer uma incluso em tabela ordenada no caso co a de uma tabela de
verso de 10 de fevereiro de 2008 a

385

88-08, Pedro Kantek

CAP ITULO 35. EXERC ICIO PRATICO: 119 - MANUSEIO DE TABELAS II elementos 100 10.000 1.000.000 n operaoes c

35.1

Exerc cio 1

Escreva a seguir um algoritmo de uma funo que Receba uma matriz global, de nome ca MAT-ENT, cujo contedo : u e MAT-ENT uma matriz de 3 colunas, sendo todas inteiros, formada por e cdigo da transao valor da transao cdigo da cidade o ca ca o O algoritmo dever criar e imprimir uma segunda matriz, de apenas duas colunas a MAT-SAI uma matriz de 2 colunas, sendo ambos inteiros, formada por e cdigo da cidade total dos valores de transaes o co Nesta matriz de sa da, os valores de dbito (cd 2) devero ser totalizados, e quando e o a houver quebra de cidade, uma nova linha deve ser introduzida na matriz de saida com o total. Note que a matriz de entrada est ordenada por cidade. (ENUNCIADO 2) a

35.2

Exerc cio 2

Escreva a seguir um algoritmo de uma funo que Receba uma matriz global, de nome ca MAT-VENDAS, cujo contedo : u e MAT-ENT uma matriz de 3 colunas, sendo todas inteiros, formada por e nmero de parcelas valor da transao cdigo da cidade u ca o O nmero de parcelas pode ser de 1 a 6. u O algoritmo dever criar e imprimir uma segunda matriz, de apenas duas colunas a MAT-SAI uma matriz de 2 colunas, por 2 linhas sendo ambos inteiros, formada por e nmero de parcelas quantidade de vendas u Nesta matriz de sa da, devero ser mostrados o nmero de parcelas campeo positivo a u a (em quantidade de vendas) e o campeo negativo (idem), associado ao nmero de vendas a u de cada um. (ENUNCIADO 3)

35.3

Exerc cio 3

Escreva a seguir um algoritmo de uma funo que Receba uma matriz global, de nome ca MAT-ENT, cujo contedo : u e MAT-ENT uma matriz de 3 colunas, sendo todas inteiros, formada por e cdigo do estado rea do estado populao do estado o a ca O algoritmo dever imprimir o cdigo do estado de maior densidade populacional e o a o cdigo do estado de menor densidade populacional, imprimindo tambm quantas vezes o e o primeiro mais populoso do que o segundo. (ENUNCIADO 4) e
88-08, Pedro Kantek

386

verso de 10 de fevereiro de 2008 a

CAP ITULO 35. EXERC ICIO PRATICO: 119 - MANUSEIO DE TABELAS II

35.4

Exerc cio 4

Escreva a seguir um algoritmo de uma funo que Receba duas matrizes globais, de ca nomes MAT1 e MAT2, cujos contedos so: u a MAT1 uma matriz de 3 colunas, sendo todas inteiros, formada por e cdigo da transao valor da transao cdigo da cidade o ca ca o o MAT2 uma matriz de 2 colunas, sendo ambos inteiros, formada por cdigo da cidade e O algoritmo dever criar e imprimir uma terceira matriz, de apenas duas colunas a MATSAIDA uma matriz de 2 colunas, sendo ambos inteiros, formada por e estado onde foi efetuada a transao valor da transao ca ca Nesta segunda matriz, apenas as transaes de dbito devero ser inclu co e a das. (ENUNCIADO 1) estado a que pertence

verso de 10 de fevereiro de 2008 a

387

88-08, Pedro Kantek

CAP ITULO 35. EXERC ICIO PRATICO: 119 - MANUSEIO DE TABELAS II

88-08, Pedro Kantek

388

verso de 10 de fevereiro de 2008 a

Cap tulo 36

Exerc cios Prticos: 125a a Correo de algoritmos ca


36.1 Exerc cio 1

Construindo e consertando algoritmos - parte 1


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a e preciso testar) e devolva a cadeia primo se ele for PRIMO e no primo seno. a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M,X,T : inteiro 3: M 0 4: X teto(N 0.5 ) 5: para T de AAA a X faa c 6: Z BBB mod T 7: se Z = CCC ento a 8: MM+1 9: mse 10: mpara 389

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS se DDD = 0 ento a devolva EEE seno a devolva FFF mse mfuncao Esta funcao correta, deu os seguintes resultados: A01PRIM(30) = NAOPRIMO ; A01PRIM(39) = NAOPRIMO ; A01PRIM(31) = PRIMO . As substituies a fazer so: co a AAA=2 ; BBB=N ; CCC=0 ; DDD=M ; EEE=primo e FFF=nao primo .
11: 12: 13: 14: 15: 16:

Algoritmo 2 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N, e excluindo-se desta soma ele mesmo e a unidade. 1: funcao A02SOMD (N : inteiro) : inteiro 2: M,T,Z : inteiro 3: M AAA 4: para T de BBB a CCC faa c 5: Z DDD mod EEE 6: se FFF = Z ento a 7: M GGG + HHH 8: mse 9: mpara 10: devolva III 11: mfuncao Esta funcao correta, deu os seguintes resultados: A02SOMD(16) = 14 ; A02SOMD(89) = 0 ; A02SOMD(29) = 0 . As substituies a fazer so: co a AAA=0 ; BBB=2 ; CCC=N-1 ; DDD=N ; EEE=T ; FFF=0 ; GGG=M ; HHH=T ; III=M . Algoritmo 3 Escreva uma funo que receba dois inteiros N e X Se X for maior que ca zero, a funcao deve calcular e devolver o nmero N X e se no for deve devolver -1. u a 1: funcao A03POTE (N,X : inteiro) : inteiro 2: R : inteiro 3: R AAA 4: se X > 0 ento a 5: enquanto BBB >0 faa c 6: R R CCC N 7: X X DDD 1 8: menquanto 9: devolva EEE 10: seno a 11: devolva FFF 12: mse 13: mfuncao Esta funcao correta, deu os seguintes resultados: A03POTE(3 4) = 81 ; A03POTE(5 6) = 15625 ; A03POTE(4 6) = 4096 . As substituies a fazer so: co a
88-08, Pedro Kantek

390

verso de 10 de fevereiro de 2008 a

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS AAA=0 ; BBB=X ; CCC=vezes (multiplicacao) ; DDD=- (subtracao) ; EEE=R ; FFF=-1 . Algoritmo 4 Escreva uma funo que receba trs inteiros D, M e A representando ca e uma data (D o dia, M o ms e A o ano). O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 seno. a 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ento a 4: biss1 5: seno a 6: se 0 = (BBB mod 100) ento a 7: biss0 8: seno a 9: se 0 = (A mod 4) ento a 10: bissCCC 11: seno a 12: bissDDD 13: mse 14: mse 15: mse 16: erro 0 17: se M = EEE ento a 18: se biss = 1 ento a 19: se D > FFF ento a 20: erro 1 21: mse 22: seno a 23: se D > GGG ento a 24: erro 1 25: mse 26: mse 27: seno a 28: se (M=4)(M=6)(M=9)(M=11) ento a 29: se D > HHH ento a 30: erro 1 31: mse 32: seno a 33: se D > III ento a 34: erro 1 35: mse 36: mse 37: mse 38: se M > JJJ ento a 39: erro 1 40: mse 41: retorne erro 42: mfuncao Esta funcao correta, deu os seguintes resultados: A04DATA(29 10 7202) = 0 ; A04DATA(29 2 2012) = 0 ; A04DATA(29 2 1800) = 1 . As substituies a fazer so: co a
verso de 10 de fevereiro de 2008 a

391

88-08, Pedro Kantek

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS AAA=400 ; BBB=A (ano) ; CCC=1 e DDD=0 ; EEE=2 ; FFF=29 ; GGG=28 ; HHH=30 ; III=31 ; JJJ=12 .

Brinquedos PIRRALHOS ENDIABRADOS um grande distribuidor de pree sentes em todo o pa Recentemente, a empresa teve a oportunidade de comprar pes. quenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend-los como surpresa, mais e ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimenses A, B e C, medidas em cent o metros. Escreva uma funo que ca receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos cabero a em uma das esferas. 1: funcao A05DIAG (X, Y, Z : inteiro) : inteiro 2: inteiro diag 3: diag (X AAA ) + (Y AAA ) + (Z AAA ) 4: diag diag 5: se diag > BBB ento a 6: devolva 30 7: seno a 8: se diag > CCC ento a 9: devolva 20 10: seno a 11: devolva 10 12: mse 13: mse 14: mfuncao Esta funcao correta, deu os seguintes resultados: A05DIAG(8 5 5) = 10 ; A05DIAG(28 25 29) = 30 ; A05DIAG(4 5 10) = 10 . As substituies a fazer so: co a AAA=3 ; BBB=40 ; CCC=20 .

Responda

R=

88-08, Pedro Kantek

392

verso de 10 de fevereiro de 2008 a

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS

36.2

Exerc cio 2

Construindo e consertando algoritmos - parte 1


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a e preciso testar) e devolva a cadeia primo se ele for PRIMO e no primo seno. a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M,X,T : inteiro 3: M 0 4: X teto(N 0.5 ) 5: para T de AAA a X faa c 6: Z BBB mod T 7: se Z = CCC ento a 8: MM+1 9: mse 10: mpara 11: se DDD = 0 ento a 12: devolva EEE 13: seno a 14: devolva FFF 15: mse 16: mfuncao Esta funcao correta, deu os seguintes resultados: A01PRIM(17) = PRIMO ; A01PRIM(39) = NAOPRIMO ; A01PRIM(23) = PRIMO . As substituies a fazer so: co a AAA=2 ; BBB=N ; CCC=0 ; DDD=M ; EEE=nao primo e FFF=primo . Algoritmo 2 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N, e excluindo-se desta soma ele mesmo e a unidade. 1: funcao A02SOMD (N : inteiro) : inteiro 2: M,T,Z : inteiro
verso de 10 de fevereiro de 2008 a

393

88-08, Pedro Kantek

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS M AAA para T de BBB a CCC faa c Z DDD mod EEE se FFF = Z ento a M GGG + HHH mse mpara 10: devolva III 11: mfuncao Esta funcao correta, deu os seguintes resultados: A02SOMD(16) = 14 ; A02SOMD(86) = 45 ; A02SOMD(29) = 0 . As substituies a fazer so: co a AAA=0 ; BBB=2 ; CCC=N-1 ; DDD=N ; EEE=T ; FFF=0 ; GGG=M ; HHH=T ; III=M .
3: 4: 5: 6: 7: 8: 9:

Algoritmo 3 Escreva uma funo que receba dois inteiros N e X Se X for maior que ca zero, a funcao deve calcular e devolver o nmero N X e se no for deve devolver -1. u a 1: funcao A03POTE (N,X : inteiro) : inteiro 2: R : inteiro 3: R AAA 4: se X > 0 ento a 5: enquanto BBB >0 faa c 6: R R CCC N 7: X X DDD 1 8: menquanto 9: devolva EEE 10: seno a 11: devolva FFF 12: mse 13: mfuncao Esta funcao correta, deu os seguintes resultados: A03POTE(3 6) = 729 ; A03POTE(6 3) = 216 ; A03POTE(6 5) = 7776 . As substituies a fazer so: co a AAA=0 ; BBB=X ; CCC=vezes (multiplicacao) ; DDD=- (subtracao) ; EEE=R ; FFF=-1 . Algoritmo 4 Escreva uma funo que receba trs inteiros D, M e A representando ca e uma data (D o dia, M o ms e A o ano). O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 seno. a 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ento a 4: biss1 5: seno a 6: se 0 = (BBB mod 100) ento a 7: biss0 8: seno a 9: se 0 = (A mod 4) ento a 10: bissCCC 11: seno a 12: bissDDD
88-08, Pedro Kantek

394

verso de 10 de fevereiro de 2008 a

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS mse mse mse erro 0 se M = EEE ento a se biss = 1 ento a se D > FFF ento a 20: erro 1 21: mse 22: seno a 23: se D > GGG ento a 24: erro 1 25: mse 26: mse 27: seno a 28: se (M=4)(M=6)(M=9)(M=11) ento a 29: se D > HHH ento a 30: erro 1 31: mse 32: seno a 33: se D > III ento a 34: erro 1 35: mse 36: mse 37: mse 38: se M > JJJ ento a 39: erro 1 40: mse 41: retorne erro 42: mfuncao Esta funcao correta, deu os seguintes resultados: A04DATA(28 11 7636) = 0 ; A04DATA(27 2 1852) = 0 ; A04DATA(29 2 2000) = 0 . As substituies a fazer so: co a AAA=400 ; BBB=A (ano) ; CCC=1 e DDD=0 ; EEE=2 ; FFF=29 ; GGG=28 ; HHH=30 ; III=30 ; JJJ=12 .
13: 14: 15: 16: 17: 18: 19:

Brinquedos PIRRALHOS ENDIABRADOS um grande distribuidor de pree sentes em todo o pa Recentemente, a empresa teve a oportunidade de comprar pes. quenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend-los como surpresa, mais e ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimenses A, B e C, medidas em cent o metros. Escreva uma funo que ca receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos cabero a em uma das esferas. 1: funcao A05DIAG (X, Y, Z : inteiro) : inteiro 2: inteiro diag 3: diag (X AAA ) + (Y AAA ) + (Z AAA ) 4: diag diag 5: se diag > BBB ento a 6: devolva 30 7: seno a
verso de 10 de fevereiro de 2008 a

395

88-08, Pedro Kantek

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS


8: 9: 10: 11: 12: 13: 14:

se diag > CCC ento a devolva 20 seno a devolva 10 mse mse mfuncao Esta funcao correta, deu os seguintes resultados: A05DIAG(2 6 8) = 10 ; A05DIAG(25 27 28) = 30 ; A05DIAG(5 1 7) = 10 . As substituies a fazer so: co a AAA=2 ; BBB=40 ; CCC=20 . Responda

R=

36.3

Exerc cio 3

Construindo e consertando algoritmos - parte 1


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a
88-08, Pedro Kantek

396

verso de 10 de fevereiro de 2008 a

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS


O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a e preciso testar) e devolva a cadeia primo se ele for PRIMO e no primo seno. a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M,X,T : inteiro 3: M 0 4: X teto(N 0.5 ) 5: para T de AAA a X faa c 6: Z BBB mod T 7: se Z = CCC ento a 8: MM+1 9: mse 10: mpara 11: se DDD = 0 ento a 12: devolva EEE 13: seno a 14: devolva FFF 15: mse 16: mfuncao Esta funcao correta, deu os seguintes resultados: A01PRIM(26) = NAOPRIMO ; A01PRIM(71) = PRIMO ; A01PRIM(37) = PRIMO . As substituies a fazer so: co a AAA=2 ; BBB=N ; CCC=0 ; DDD=N ; EEE=primo e FFF=nao primo . Algoritmo 2 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N, e excluindo-se desta soma ele mesmo e a unidade. 1: funcao A02SOMD (N : inteiro) : inteiro 2: M,T,Z : inteiro 3: M AAA 4: para T de BBB a CCC faa c 5: Z DDD mod EEE 6: se FFF = Z ento a 7: M GGG + HHH 8: mse 9: mpara 10: devolva III 11: mfuncao
verso de 10 de fevereiro de 2008 a

397

88-08, Pedro Kantek

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS Esta funcao correta, deu os seguintes resultados: A02SOMD(20) = 21 ; A02SOMD(27) = 12 ; A02SOMD(71) = 0 . As substituies a fazer so: co a AAA=0 ; BBB=2 ; CCC=N-1 ; DDD=N ; EEE=T ; FFF=0 ; GGG=M ; HHH=T ; III=2 vezes M . Algoritmo 3 Escreva uma funo que receba dois inteiros N e X Se X for maior que ca zero, a funcao deve calcular e devolver o nmero N X e se no for deve devolver -1. u a 1: funcao A03POTE (N,X : inteiro) : inteiro 2: R : inteiro 3: R AAA 4: se X > 0 ento a 5: enquanto BBB >0 faa c 6: R R CCC N 7: X X DDD 1 8: menquanto 9: devolva EEE 10: seno a 11: devolva FFF 12: mse 13: mfuncao Esta funcao correta, deu os seguintes resultados: A03POTE(4 4) = 256 ; A03POTE(6 4) = 1296 ; A03POTE(5 3) = 125 . As substituies a fazer so: co a AAA=1 ; BBB=X ; CCC=+ (adicao) ; DDD=- (subtracao) ; EEE=R ; FFF=-1 . Algoritmo 4 Escreva uma funo que receba trs inteiros D, M e A representando ca e uma data (D o dia, M o ms e A o ano). O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 seno. a 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ento a 4: biss1 5: seno a 6: se 0 = (BBB mod 100) ento a 7: biss0 8: seno a 9: se 0 = (A mod 4) ento a 10: bissCCC 11: seno a 12: bissDDD 13: mse 14: mse 15: mse 16: erro 0 17: se M = EEE ento a 18: se biss = 1 ento a 19: se D > FFF ento a 20: erro 1 21: mse 22: seno a
88-08, Pedro Kantek

398

verso de 10 de fevereiro de 2008 a

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS se D > GGG ento a erro 1 mse mse seno a se (M=4)(M=6)(M=9)(M=11) ento a se D > HHH ento a 30: erro 1 31: mse 32: seno a 33: se D > III ento a 34: erro 1 35: mse 36: mse 37: mse 38: se M > JJJ ento a 39: erro 1 40: mse 41: retorne erro 42: mfuncao Esta funcao correta, deu os seguintes resultados: A04DATA(25 12 8360) = 0 ; A04DATA(28 2 1968) = 0 ; A04DATA(29 2 2000) = 0 . As substituies a fazer so: co a AAA=400 ; BBB=A (ano) ; CCC=1 e DDD=0 ; EEE=2 ; FFF=29 ; GGG=28 ; HHH=30 ; III=31 ; JJJ=12 .
23: 24: 25: 26: 27: 28: 29:

Brinquedos PIRRALHOS ENDIABRADOS um grande distribuidor de pree sentes em todo o pa Recentemente, a empresa teve a oportunidade de comprar pes. quenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend-los como surpresa, mais e ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimenses A, B e C, medidas em cent o metros. Escreva uma funo que ca receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos cabero a em uma das esferas. 1: funcao A05DIAG (X, Y, Z : inteiro) : inteiro 2: inteiro diag 3: diag (X AAA ) + (Y AAA ) + (Z AAA ) 4: diag diag 5: se diag > BBB ento a 6: devolva 30 7: seno a 8: se diag > CCC ento a 9: devolva 20 10: seno a 11: devolva 10 12: mse 13: mse 14: mfuncao Esta funcao correta, deu os seguintes resultados: A05DIAG(4 2 8) = 10 ; A05DIAG(27 26 28) = 30 ; A05DIAG(9 7 7) = 10 .
verso de 10 de fevereiro de 2008 a

399

88-08, Pedro Kantek

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS As substituies a fazer so: co a AAA=2 ; BBB=20 ; CCC=20 .

Responda

R=

36.4

Exerc cio 4

Construindo e consertando algoritmos - parte 1


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a
88-08, Pedro Kantek

400

verso de 10 de fevereiro de 2008 a

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a e preciso testar) e devolva a cadeia primo se ele for PRIMO e no primo seno. a a 1: funcao A01PRIM (N : inteiro) : inteiro 2: M,X,T : inteiro 3: M 0 4: X teto(N 0.5 ) 5: para T de AAA a X faa c 6: Z BBB mod T 7: se Z = CCC ento a 8: MM+1 9: mse 10: mpara 11: se DDD = 0 ento a 12: devolva EEE 13: seno a 14: devolva FFF 15: mse 16: mfuncao Esta funcao correta, deu os seguintes resultados: A01PRIM(20) = NAOPRIMO ; A01PRIM(54) = NAOPRIMO ; A01PRIM(67) = PRIMO . As substituies a fazer so: co a AAA=1 ; BBB=N ; CCC=0 ; DDD=M ; EEE=primo e FFF=nao primo . Algoritmo 2 Escreva uma funo que receba um nmero N (inteiro e positivo, no ca u a preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N, e excluindo-se desta soma ele mesmo e a unidade. 1: funcao A02SOMD (N : inteiro) : inteiro 2: M,T,Z : inteiro 3: M AAA 4: para T de BBB a CCC faa c 5: Z DDD mod EEE 6: se FFF = Z ento a 7: M GGG + HHH 8: mse 9: mpara 10: devolva III 11: mfuncao Esta funcao correta, deu os seguintes resultados: A02SOMD(24) = 35 ; A02SOMD(85) = 22 ; A02SOMD(29) = 0 . As substituies a fazer so: co a AAA=0 ; BBB=2 ; CCC=N-1 ; DDD=N ; EEE=T ; FFF=0 ; GGG=N ; HHH=T ; III=M . Algoritmo 3 Escreva uma funo que receba dois inteiros N e X Se X for maior que ca zero, a funcao deve calcular e devolver o nmero N X e se no for deve devolver -1. u a 1: funcao A03POTE (N,X : inteiro) : inteiro
verso de 10 de fevereiro de 2008 a

401

88-08, Pedro Kantek

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS R : inteiro R AAA se X > 0 ento a enquanto BBB >0 faa c R R CCC N X X DDD 1 menquanto 9: devolva EEE 10: seno a 11: devolva FFF 12: mse 13: mfuncao Esta funcao correta, deu os seguintes resultados: A03POTE(6 3) = 216 ; A03POTE(5 3) = 125 ; A03POTE(3 3) = 27 . As substituies a fazer so: co a AAA=1 ; BBB=X ; CCC=vezes (multiplicacao) ; DDD=+ (adicao) ; EEE=R ; FFF=-1 .
2: 3: 4: 5: 6: 7: 8:

Algoritmo 4 Escreva uma funo que receba trs inteiros D, M e A representando ca e uma data (D o dia, M o ms e A o ano). O algoritmo deve devolver 1 se a data e e e e estiver errada e 0 seno. a 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ento a 4: biss1 5: seno a 6: se 0 = (BBB mod 100) ento a 7: biss0 8: seno a 9: se 0 = (A mod 4) ento a 10: bissCCC 11: seno a 12: bissDDD 13: mse 14: mse 15: mse 16: erro 0 17: se M = EEE ento a 18: se biss = 1 ento a 19: se D > FFF ento a 20: erro 1 21: mse 22: seno a 23: se D > GGG ento a 24: erro 1 25: mse 26: mse 27: seno a 28: se (M=4)(M=6)(M=9)(M=11) ento a 29: se D > HHH ento a 30: erro 1 31: mse
88-08, Pedro Kantek

402

verso de 10 de fevereiro de 2008 a

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS


32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:

seno a se D > III ento a erro 1 mse mse mse se M > JJJ ento a erro 1 mse retorne erro mfuncao

Esta funcao correta, deu os seguintes resultados: A04DATA(25 10 32) = 0 ; A04DATA(29 2 2080) = 0 ; A04DATA(29 2 1900) = 1 . As substituies a fazer so: co a AAA=400 ; BBB=A (ano) ; CCC=1 e DDD=0 ; EEE=2 ; FFF=29 ; GGG=28 ; HHH=31 ; III=31 ; JJJ=12 .

Brinquedos PIRRALHOS ENDIABRADOS um grande distribuidor de pree sentes em todo o pa Recentemente, a empresa teve a oportunidade de comprar pes. quenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend-los como surpresa, mais e ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimenses A, B e C, medidas em cent o metros. Escreva uma funo que ca receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos cabero a em uma das esferas. 1: funcao A05DIAG (X, Y, Z : inteiro) : inteiro 2: inteiro diag 3: diag (X AAA ) + (Y AAA ) + (Z AAA ) 4: diag diag 5: se diag > BBB ento a 6: devolva 30 7: seno a 8: se diag > CCC ento a 9: devolva 20 10: seno a 11: devolva 10 12: mse 13: mse 14: mfuncao Esta funcao correta, deu os seguintes resultados: A05DIAG(2 9 2) = 10 ; A05DIAG(28 28 26) = 30 ; A05DIAG(2 6 3) = 10 . As substituies a fazer so: co a AAA=2 ; BBB=40 ; CCC=20 .

Responda

R=

verso de 10 de fevereiro de 2008 a

403

88-08, Pedro Kantek

CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORRECAO DE ALGORITMOS

36.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

88-08, Pedro Kantek

404

verso de 10 de fevereiro de 2008 a

Cap tulo 37

Exerc cios Prticos: 125b a Correo de algoritmos ca


37.1 Exerc cio 1

Construindo e consertando algoritmos - parte 2


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um vetor de 10 nmeros inteiros e deca u volva a posio daquele nmero que o maior do vetor. Se houver dois ou mais iguais ca u e a este maior, deve-se retornar o endereo do primeiro. Por exemplo, se o vetor for 4, 7, c 2, 19, 21, 8, 7, 19, 8, 6 a resposta deve ser 5, j que o 21 (o maior) o quinto elemento. a e Se o vetor for 4, 12, 5, 7, 12, 7, 1, 2, 3, 8, a resposta deve ser 2. 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI,QUA,I : inteiro 3: I AAA 4: BBB -99999 5: enquanto CCC < 11 faa c 6: se N[I] > DDD ento a 7: MAI N[I] 405

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS EEE I mse FFF I + 1 menquanto devolva GGG mfuncao Esta funcao correta, deu os seguintes resultados: B01ACHM(1 1 6 5 3 4 7 5 7 4) = 7 ; B01ACHM(18 8 17 12 4 7 19 10 13 6) = 7 ; B01ACHM(1 3 4 3 4 4 1 3 3 1) = 3 . As substituies a fazer so: co a AAA=1 ; BBB=MAI ; CCC=I ; DDD=MAI ; EEE=QUA ; FFF=I ; GGG=QUA .
8: 9: 10: 11: 12: 13:

Algoritmo 2 Escreva uma funo que receba um nmero K (inteiro, no preciso ca u a e testar) e um vetor N de 10 inteiros e e devolva a posio de K em N. Se houver mais de ca 1 valor de K em N, deve retornar o primeiro. Se no houver K em N, retornar -1. a Por exemplo, Se K=8 e N=1 3 5 7 9 2 4 6 8 10, a resposta deve ser 9. Se K=7 e N o mesmo, a resposta 4. Se K=13 e N o mesmo, a resposta -1. e e e e 1: funcao B02ACHKK (K, N[10] : inteiro) : inteiro 2: inteiro RES,I 3: RES AAA 4: I BBB 5: enquanto CCC < 11 faa c 6: se N[I] = DDD ento a 7: RES EEE 8: I FFF 9: mse 10: II+1 11: menquanto 12: devolva GGG 13: mfuncao Esta funcao correta, deu os seguintes resultados: B02ACHK(12,20 30 25 26 21 23 12 14 15 27)=7 ; B02ACHK(15,23 30 11 12 25 24 19 15 20 18)=8 ; B02ACHK(17,13 37 38 26 34 20 15 33 27 32)=-1 . As substituies a fazer so: co a AAA=-1 ; BBB=1 ; CCC=I ; DDD=K ; EEE=I ; FFF=11 (ou qualquer > 10) ; GGG=RES . Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros, em princ pio sem nenhuma ordem (ou seja, desordenado) e uma chave K tambm inteira e e devolva a quantidade de vezes que K aparece em N. Por exemplo, se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta 2. Se K=18, a resposta e 0 e se K=1, a reposta 1. e e 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD faa c 5: se N[I] = EEE ento a 6: QTD FFF+ 1 7: mse 8: mpara 9: devolva GGG
88-08, Pedro Kantek

406

verso de 10 de fevereiro de 2008 a

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS mfuncao Esta funcao correta, deu os seguintes resultados: B03CONK(18,12 15 13 12 18 14 18 13 15 12)=2 ; B03CONK(15,12 18 13 16 16 15 12 15 13 18)=2 ; B03CONK(17,15 31 16 34 33 25 38 37 17 11)=1 . As substituies a fazer so: co a AAA=0 ; BBB=1 ; CCC=10 ; DDD=1 ; EEE=K ; FFF=QTD ; GGG=QTD .
10:

Algoritmo 4 Escreva uma funo que receba um vetor ordenado de 11 inteiros. A ca funo deve devolver 3 valores (um real e dois inteiros), a saber: ca mdia A soma dos elementos dividido por 11 e moda o valor mais freqente no vetor u mediana O valor do meio (neste caso o N[6]) funcao B04ESTA (N[11] : inteiro) : real,inteiro,inteiro MED : real I,J,MOD,MAN,SOM,ASA,CTDR[11] : inteiro 4: I 1 5: SOM AAA 6: enquanto I < BBB faa c 7: SOM CCC + N[I] 8: II+1 9: menquanto 10: DDD SOM 11 11: EEE N[6] 12: para I de 1 a 11 faa c 13: SOM 0 14: para J de 1 a 11 faa c 15: se N[I] = N[J] ento a 16: SOM SOM + 1 17: mse 18: mpara 19: CTDR[I] FFF 20: mpara 21: MAI -9999 22: para J de 1 a 11 faa c 23: se CTDR[J] > GGG ento a 24: MAI CTDR[J] 25: ASA HHH 26: mse 27: mpara 28: III N[ASA] 29: devolva MED,MOD,MAN 30: mfuncao Esta funcao correta, deu os seguintes resultados: B04ESTA(1 2 2 4 4 6 6 7 7 7 8) = 4.9 7 6 ; B04ESTA(1 4 5 5 6 6 6 6 7 7 8) = 5.5 6 6 ; B04ESTA(1 2 2 2 3 3 4 4 6 6 6) = 3.5 2 3 . As substituies a fazer so: co a AAA=0 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
1: 2: 3:
verso de 10 de fevereiro de 2008 a

407

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS O vetor est em ordem ? Escreva o algoritmo de uma funo que receba um vetor a ca de 10 inteiros e devolva 0 se o vetor est em ordem crescente e 1 seno. Um vetor V a a est em ordem crescente para quaisquer i e j, sendo que j > i, vlida a expresso a e a a V [j] V [i]. Note a presena da igualdade na condio. Alm disso, essa expresso tem c ca e a que ser vlida para todos os pares dentro do vetor. a Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta 0. Se o vetor for e 1,3,4,5,6,8,7,10,16,21 a resposta 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta 0. e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB faa c 6: se N[I] >N[I+1] ento a 7: RES 1 8: mse 9: II+1 10: menquanto 11: devolva CCC 12: mfuncao

Esta funcao correta, deu os seguintes resultados: B05ESOR(2 5 6 7 12 27 35 44 60 86) = 0 ; B05ESOR(1 4 17 22 29 41 95 51 92 93) = 1 ; B05ESOR(5 7 20 35 37 38 68 55 78 79) = 1 . As substituies a fazer so: co a AAA=0 ; BBB=10 ; CCC=I .

Responda

R=

88-08, Pedro Kantek

408

verso de 10 de fevereiro de 2008 a

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS

37.2

Exerc cio 2

Construindo e consertando algoritmos - parte 2


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um vetor de 10 nmeros inteiros e deca u volva a posio daquele nmero que o maior do vetor. Se houver dois ou mais iguais ca u e a este maior, deve-se retornar o endereo do primeiro. Por exemplo, se o vetor for 4, 7, c 2, 19, 21, 8, 7, 19, 8, 6 a resposta deve ser 5, j que o 21 (o maior) o quinto elemento. a e Se o vetor for 4, 12, 5, 7, 12, 7, 1, 2, 3, 8, a resposta deve ser 2. 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI,QUA,I : inteiro 3: I AAA 4: BBB -99999 5: enquanto CCC < 11 faa c 6: se N[I] > DDD ento a 7: MAI N[I] 8: EEE I 9: mse 10: FFF I + 1 11: menquanto 12: devolva GGG 13: mfuncao Esta funcao correta, deu os seguintes resultados: B01ACHM(2 4 6 6 1 2 6 4 1 7) = 10 ; B01ACHM(14 16 5 18 17 8 11 2 19 20) = 10 ; B01ACHM(4 2 1 5 4 2 5 1 2 2) = 4 . As substituies a fazer so: co a AAA=1 ; BBB=MAI ; CCC=I ; DDD=MAI ; EEE=MAI ; FFF=I ; GGG=QUA . Algoritmo 2 Escreva uma funo que receba um nmero K (inteiro, no preciso ca u a e testar) e um vetor N de 10 inteiros e e devolva a posio de K em N. Se houver mais de ca 1 valor de K em N, deve retornar o primeiro. Se no houver K em N, retornar -1. a Por exemplo, Se K=8 e N=1 3 5 7 9 2 4 6 8 10, a resposta deve ser 9. Se K=7 e N o mesmo, a resposta 4. Se K=13 e N o mesmo, a resposta -1. e e e e
verso de 10 de fevereiro de 2008 a

409

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS funcao B02ACHKK (K, N[10] : inteiro) : inteiro inteiro RES,I RES AAA I BBB enquanto CCC < 11 faa c se N[I] = DDD ento a RES EEE 8: I FFF 9: mse 10: II+1 11: menquanto 12: devolva GGG 13: mfuncao Esta funcao correta, deu os seguintes resultados: B02ACHK(17,14 28 27 21 11 18 12 13 15 17)=10 ; B02ACHK(14,16 17 14 23 22 28 27 25 12 30)=3 ; B02ACHK(17,21 40 26 16 38 28 15 20 17 19)=9 . As substituies a fazer so: co a AAA=-1 ; BBB=1 ; CCC=I ; DDD=K ; EEE=I ; FFF=11 (ou qualquer > 10) ; GGG=I .
1: 2: 3: 4: 5: 6: 7:

Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros, em princ pio sem nenhuma ordem (ou seja, desordenado) e uma chave K tambm inteira e e devolva a quantidade de vezes que K aparece em N. Por exemplo, se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta 2. Se K=18, a resposta e 0 e se K=1, a reposta 1. e e 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD faa c 5: se N[I] = EEE ento a 6: QTD FFF+ 1 7: mse 8: mpara 9: devolva GGG 10: mfuncao Esta funcao correta, deu os seguintes resultados: B03CONK(18,14 18 16 18 16 13 13 16 11 17)=2 ; B03CONK(17,18 12 11 13 17 15 17 11 17 11)=3 ; B03CONK(17,23 29 14 24 37 26 15 36 30 20)=0 . As substituies a fazer so: co a AAA=0 ; BBB=1 ; CCC=10 ; DDD=1 ; EEE=I ; FFF=QTD ; GGG=QTD . Algoritmo 4 Escreva uma funo que receba um vetor ordenado de 11 inteiros. A ca funo deve devolver 3 valores (um real e dois inteiros), a saber: ca mdia A soma dos elementos dividido por 11 e moda o valor mais freqente no vetor u mediana O valor do meio (neste caso o N[6])
1: 2: 3:

funcao B04ESTA (N[11] : inteiro) : real,inteiro,inteiro MED : real I,J,MOD,MAN,SOM,ASA,CTDR[11] : inteiro 410
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS I1 SOM AAA enquanto I < BBB faa c SOM CCC + N[I] II+1 menquanto DDD SOM 11 11: EEE N[6] 12: para I de 1 a 11 faa c 13: SOM 0 14: para J de 1 a 11 faa c 15: se N[I] = N[J] ento a 16: SOM SOM + 1 17: mse 18: mpara 19: CTDR[I] FFF 20: mpara 21: MAI -9999 22: para J de 1 a 11 faa c 23: se CTDR[J] > GGG ento a 24: MAI CTDR[J] 25: ASA HHH 26: mse 27: mpara 28: III N[ASA] 29: devolva MED,MOD,MAN 30: mfuncao Esta funcao correta, deu os seguintes resultados: B04ESTA(1 2 3 3 4 4 4 4 6 7 7) = 4.1 4 4 ; B04ESTA(1 1 1 2 6 6 6 7 7 7 8) = 4.7 1 6 ; B04ESTA(1 1 2 3 4 5 6 6 7 8 8) = 4.6 1 5 . As substituies a fazer so: co a AAA=1 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
4: 5: 6: 7: 8: 9: 10:

O vetor est em ordem ? Escreva o algoritmo de uma funo que receba um vetor a ca de 10 inteiros e devolva 0 se o vetor est em ordem crescente e 1 seno. Um vetor V a a est em ordem crescente para quaisquer i e j, sendo que j > i, vlida a expresso a e a a V [j] V [i]. Note a presena da igualdade na condio. Alm disso, essa expresso tem c ca e a que ser vlida para todos os pares dentro do vetor. a Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta 0. Se o vetor for e 1,3,4,5,6,8,7,10,16,21 a resposta 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta 0. e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB faa c 6: se N[I] >N[I+1] ento a 7: RES 1 8: mse 9: II+1 10: menquanto 11: devolva CCC
verso de 10 de fevereiro de 2008 a

411

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS mfuncao Esta funcao correta, deu os seguintes resultados: B05ESOR(7 8 36 47 48 50 65 70 89 90) = 0 ; B05ESOR(32 38 42 53 59 66 65 74 83 89) = 1 ; B05ESOR(12 13 41 47 52 66 21 87 90 97) = 1 . As substituies a fazer so: co a AAA=0 ; BBB=10 ; CCC=RES .
12:

Responda

R=

37.3

Exerc cio 3

Construindo e consertando algoritmos - parte 2


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a
88-08, Pedro Kantek

412

verso de 10 de fevereiro de 2008 a

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um vetor de 10 nmeros inteiros e deca u volva a posio daquele nmero que o maior do vetor. Se houver dois ou mais iguais ca u e a este maior, deve-se retornar o endereo do primeiro. Por exemplo, se o vetor for 4, 7, c 2, 19, 21, 8, 7, 19, 8, 6 a resposta deve ser 5, j que o 21 (o maior) o quinto elemento. a e Se o vetor for 4, 12, 5, 7, 12, 7, 1, 2, 3, 8, a resposta deve ser 2. 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI,QUA,I : inteiro 3: I AAA 4: BBB -99999 5: enquanto CCC < 11 faa c 6: se N[I] > DDD ento a 7: MAI N[I] 8: EEE I 9: mse 10: FFF I + 1 11: menquanto 12: devolva GGG 13: mfuncao Esta funcao correta, deu os seguintes resultados: B01ACHM(4 1 4 3 2 5 4 5 2 5) = 6 ; B01ACHM(9 8 18 16 1 13 3 5 14 11) = 3 ; B01ACHM(2 5 5 4 5 2 3 1 5 2) = 2 . As substituies a fazer so: co a AAA=1 ; BBB=MAI ; CCC=N[I] ; DDD=MAI ; EEE=QUA ; FFF=I ; GGG=QUA . Algoritmo 2 Escreva uma funo que receba um nmero K (inteiro, no preciso ca u a e testar) e um vetor N de 10 inteiros e e devolva a posio de K em N. Se houver mais de ca 1 valor de K em N, deve retornar o primeiro. Se no houver K em N, retornar -1. a Por exemplo, Se K=8 e N=1 3 5 7 9 2 4 6 8 10, a resposta deve ser 9. Se K=7 e N o mesmo, a resposta 4. Se K=13 e N o mesmo, a resposta -1. e e e e 1: funcao B02ACHKK (K, N[10] : inteiro) : inteiro 2: inteiro RES,I 3: RES AAA 4: I BBB 5: enquanto CCC < 11 faa c 6: se N[I] = DDD ento a 7: RES EEE 8: I FFF 9: mse 10: II+1 11: menquanto 12: devolva GGG 13: mfuncao
verso de 10 de fevereiro de 2008 a

413

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS Esta funcao correta, deu os seguintes resultados: B02ACHK(20,29 21 12 23 26 20 16 13 28 24)=6 ; B02ACHK(29,28 14 30 25 17 20 16 18 13 29)=10 ; B02ACHK(17,26 24 27 34 23 11 37 25 39 31)=-1 . As substituies a fazer so: co a AAA=-1 ; BBB=1 ; CCC=I ; DDD=K ; EEE=I ; FFF=11 (ou qualquer > 10) ; GGG=RES . Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros, em princ pio sem nenhuma ordem (ou seja, desordenado) e uma chave K tambm inteira e e devolva a quantidade de vezes que K aparece em N. Por exemplo, se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta 2. Se K=18, a resposta e 0 e se K=1, a reposta 1. e e 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD faa c 5: se N[I] = EEE ento a 6: QTD FFF+ 1 7: mse 8: mpara 9: devolva GGG 10: mfuncao Esta funcao correta, deu os seguintes resultados: B03CONK(14,13 13 11 17 12 11 14 15 15 14)=2 ; B03CONK(18,18 15 17 14 14 17 18 14 12 18)=3 ; B03CONK(17,18 31 14 23 40 13 17 24 28 16)=1 . As substituies a fazer so: co a AAA=0 ; BBB=1 ; CCC=10 ; DDD=1 ; EEE=K ; FFF=QTD ; GGG=I . Algoritmo 4 Escreva uma funo que receba um vetor ordenado de 11 inteiros. A ca funo deve devolver 3 valores (um real e dois inteiros), a saber: ca mdia A soma dos elementos dividido por 11 e moda o valor mais freqente 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,inteiro,inteiro MED : real I,J,MOD,MAN,SOM,ASA,CTDR[11] : inteiro I1 SOM AAA enquanto I < BBB faa c SOM CCC + N[I] II+1 menquanto DDD SOM 11 EEE N[6] para I de 1 a 11 faa c SOM 0 para J de 1 a 11 faa c se N[I] = N[J] ento a SOM SOM + 1 414
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS mse mpara CTDR[I] FFF mpara MAI -9999 para J de 1 a 11 faa c se CTDR[J] > GGG ento a 24: MAI CTDR[J] 25: ASA HHH 26: mse 27: mpara 28: III N[ASA] 29: devolva MED,MOD,MAN 30: mfuncao Esta funcao correta, deu os seguintes resultados: B04ESTA(1 1 2 3 3 4 4 5 6 7 8) = 4.0 1 4 ; B04ESTA(2 3 4 5 5 5 6 6 8 8 8) = 5.5 5 5 ; B04ESTA(1 2 3 3 4 4 4 4 7 7 7) = 4.2 4 4 . As substituies a fazer so: co a AAA=1 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
17: 18: 19: 20: 21: 22: 23:

O vetor est em ordem ? Escreva o algoritmo de uma funo que receba um vetor a ca de 10 inteiros e devolva 0 se o vetor est em ordem crescente e 1 seno. Um vetor V a a est em ordem crescente para quaisquer i e j, sendo que j > i, vlida a expresso a e a a V [j] V [i]. Note a presena da igualdade na condio. Alm disso, essa expresso tem c ca e a que ser vlida para todos os pares dentro do vetor. a Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta 0. Se o vetor for e 1,3,4,5,6,8,7,10,16,21 a resposta 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta 0. e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB faa c 6: se N[I] >N[I+1] ento a 7: RES 1 8: mse 9: II+1 10: menquanto 11: devolva CCC 12: mfuncao Esta funcao correta, deu os seguintes resultados: B05ESOR(11 14 26 43 50 56 63 66 73 96) = 0 ; B05ESOR(3 5 6 11 12 23 72 58 63 75) = 1 ; B05ESOR(23 26 44 46 49 50 20 61 69 70) = 1 . As substituies a fazer so: co a AAA=0 ; BBB=10 ; CCC=RES .

Responda

R=

verso de 10 de fevereiro de 2008 a

415

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS

37.4

Exerc cio 4

Construindo e consertando algoritmos - parte 2


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba um vetor de 10 nmeros inteiros e deca u volva a posio daquele nmero que o maior do vetor. Se houver dois ou mais iguais ca u e a este maior, deve-se retornar o endereo do primeiro. Por exemplo, se o vetor for 4, 7, c 2, 19, 21, 8, 7, 19, 8, 6 a resposta deve ser 5, j que o 21 (o maior) o quinto elemento. a e Se o vetor for 4, 12, 5, 7, 12, 7, 1, 2, 3, 8, a resposta deve ser 2. 1: funcao B01ACHM (N[10] : inteiro) : inteiro 2: MAI,QUA,I : inteiro 3: I AAA 4: BBB -99999 5: enquanto CCC < 11 faa c 6: se N[I] > DDD ento a 7: MAI N[I] 8: EEE I 9: mse 10: FFF I + 1 11: menquanto 12: devolva GGG 13: mfuncao Esta funcao correta, deu os seguintes resultados: B01ACHM(4 4 3 2 1 2 6 3 1 4) = 7 ; B01ACHM(11 10 13 12 19 7 5 16 6 17) = 5 ; B01ACHM(5 3 3 1 4 1 1 2 2 1) = 1 . As substituies a fazer so: co a AAA=1 ; BBB=MAI ; CCC=I ; DDD=MAI ; EEE=QUA ; FFF=I ; GGG=QUA . Algoritmo 2 Escreva uma funo que receba um nmero K (inteiro, no preciso ca u a e testar) e um vetor N de 10 inteiros e e devolva a posio de K em N. Se houver mais de ca 1 valor de K em N, deve retornar o primeiro. Se no houver K em N, retornar -1. a Por exemplo, Se K=8 e N=1 3 5 7 9 2 4 6 8 10, a resposta deve ser 9. Se K=7 e N o mesmo, a resposta 4. Se K=13 e N o mesmo, a resposta -1. e e e e
88-08, Pedro Kantek

416

verso de 10 de fevereiro de 2008 a

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS funcao B02ACHKK (K, N[10] : inteiro) : inteiro inteiro RES,I RES AAA I BBB enquanto CCC < 11 faa c se N[I] = DDD ento a RES EEE 8: I FFF 9: mse 10: II+1 11: menquanto 12: devolva GGG 13: mfuncao Esta funcao correta, deu os seguintes resultados: B02ACHK(27,13 30 25 23 18 27 24 16 20 11)=6 ; B02ACHK(11,25 15 23 16 17 11 20 19 13 27)=6 ; B02ACHK(17,25 38 30 12 34 15 33 14 21 32)=-1 . As substituies a fazer so: co a AAA=-1 ; BBB=1 ; CCC=I ; DDD=K ; EEE=I ; FFF=11 (ou qualquer > 10) ; GGG=RES .
1: 2: 3: 4: 5: 6: 7:

Algoritmo 3 Escreva uma funcao que receba um vetor N de 10 elementos inteiros, em princ pio sem nenhuma ordem (ou seja, desordenado) e uma chave K tambm inteira e e devolva a quantidade de vezes que K aparece em N. Por exemplo, se N=1 3 5 7 2 3 4 5 6 10 e K=5 a resposta 2. Se K=18, a resposta e 0 e se K=1, a reposta 1. e e 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD faa c 5: se N[I] = EEE ento a 6: QTD FFF+ 1 7: mse 8: mpara 9: devolva GGG 10: mfuncao Esta funcao correta, deu os seguintes resultados: B03CONK(15,12 18 14 13 15 11 11 13 15 11)=2 ; B03CONK(12,18 17 14 16 12 13 12 17 14 12)=3 ; B03CONK(17,29 11 21 23 30 39 31 35 16 14)=0 . As substituies a fazer so: co a AAA=0 ; BBB=0 ; CCC=10 ; DDD=1 ; EEE=K ; FFF=QTD ; GGG=QTD . Algoritmo 4 Escreva uma funo que receba um vetor ordenado de 11 inteiros. A ca funo deve devolver 3 valores (um real e dois inteiros), a saber: ca mdia A soma dos elementos dividido por 11 e moda o valor mais freqente no vetor u mediana O valor do meio (neste caso o N[6])
1: 2: 3:

funcao B04ESTA (N[11] : inteiro) : real,inteiro,inteiro MED : real I,J,MOD,MAN,SOM,ASA,CTDR[11] : inteiro 417
88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS I1 SOM AAA enquanto I < BBB faa c SOM CCC + N[I] II+1 menquanto DDD SOM 11 11: EEE N[6] 12: para I de 1 a 11 faa c 13: SOM 0 14: para J de 1 a 11 faa c 15: se N[I] = N[J] ento a 16: SOM SOM + 1 17: mse 18: mpara 19: CTDR[I] FFF 20: mpara 21: MAI -9999 22: para J de 1 a 11 faa c 23: se CTDR[J] > GGG ento a 24: MAI CTDR[J] 25: ASA HHH 26: mse 27: mpara 28: III N[ASA] 29: devolva MED,MOD,MAN 30: mfuncao Esta funcao correta, deu os seguintes resultados: B04ESTA(1 2 2 3 3 4 4 5 6 7 7) = 4.0 2 4 ; B04ESTA(2 2 2 3 3 4 5 6 6 8 8) = 4.5 2 4 ; B04ESTA(1 2 2 3 4 4 4 4 4 5 6) = 3.5 4 4 . As substituies a fazer so: co a AAA=0 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
4: 5: 6: 7: 8: 9: 10:

O vetor est em ordem ? Escreva o algoritmo de uma funo que receba um vetor a ca de 10 inteiros e devolva 0 se o vetor est em ordem crescente e 1 seno. Um vetor V a a est em ordem crescente para quaisquer i e j, sendo que j > i, vlida a expresso a e a a V [j] V [i]. Note a presena da igualdade na condio. Alm disso, essa expresso tem c ca e a que ser vlida para todos os pares dentro do vetor. a Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta 0. Se o vetor for e 1,3,4,5,6,8,7,10,16,21 a resposta 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta 0. e e 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB faa c 6: se N[I] >N[I+1] ento a 7: RES 1 8: mse 9: II+1 10: menquanto 11: devolva CCC
88-08, Pedro Kantek

418

verso de 10 de fevereiro de 2008 a

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS mfuncao Esta funcao correta, deu os seguintes resultados: B05ESOR(14 34 41 47 48 51 54 57 62 96) = 0 ; B05ESOR(28 39 41 42 49 51 34 78 81 89) = 1 ; B05ESOR(5 21 22 23 28 36 38 57 84 96) = 1 . As substituies a fazer so: co a AAA=1 ; BBB=10 ; CCC=RES .
12:

Responda

R=

37.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

verso de 10 de fevereiro de 2008 a

419

88-08, Pedro Kantek

CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORRECAO DE ALGORITMOS

88-08, Pedro Kantek

420

verso de 10 de fevereiro de 2008 a

Cap tulo 38

Exerc cios Prticos: 125c a Correo de algoritmos ca


38.1 Exerc cio 1

Construindo e consertando algoritmos - parte 3


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba uma frase (cadeia de at 80 caracteres, ca e terminada por um ponto) e devolva 1 se a frase for um pal ndromo e 0 seno. Um a pal ndromo aquela frase que pode ser lida tanto da direita para a esquerda como ao e contrrio. Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observao: note que as posies do espao em branco no so as mesmas na ida e na ca co c a a volta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI,FIM,EPAL,TAM 421

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS


3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:

TAM 1 enquanto X[TAM] AAA . faa c TAM TAM + 1 menquanto INI 1 FIM BBB EPAL 1 enquanto INI < CCC faa c enquanto X[DDD] = faa c INI INI + 1 menquanto enquanto X[EEE] = faa c FIM FIM - 1 menquanto se X[INI] FFF X[FIM] ento a EPAL 0 mse INI GGG FIM HHH menquanto devolva III mfuncao

Esta funcao correta, deu os seguintes resultados: C01PALI(ABRACADABRA. ) = 0 ; C01PALI(OTO COME MOCOTO. ) = 1 ; C01PALI(ROMA AMOR. ) = 1 . As substituies a fazer so: co a AAA=um sinal de = ; BBB=TAM-1 ; CCC=FIM ; DDD=INI ; EEE=FIM ; FFF=um sinal de = ; GGG=INI+1 ; HHH=FIM-1 ; III=EPAL .

Algoritmo 2 Escreva o algoritmo de uma funo que receba uma chave K (Inteiro) ca e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tambm e crescente onde a chave K foi inclu em seu local correto. da 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA faa c 4: R[I] V[I] 5: mpara 6: I BBB 7: enquanto (R[I] CCC)(I<DDD) faa c 8: I EEE 9: menquanto 10: J FFF 11: enquanto J I faa c 12: R[J+1] R[J] 13: J GGG 14: menquanto 15: R[J+1] HHH 16: devolva III 17: mfuncao Esta funcao correta, deu os seguintes resultados:
88-08, Pedro Kantek

422

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS C02INCL(67,6 12 18 24 30 36 42 48 54 60)=6 12 18 24 30 36 42 48 54 60 67 ; C02INCL(154,7 14 21 28 35 42 49 56 63 70)=7 14 21 28 35 42 49 56 63 70 154 ; C02INCL(2,16 22 28 34 40 46 52 58 64 70)=2 16 22 28 34 40 46 52 58 64 70 . As substituies a fazer so: co a AAA=11 ; BBB=1 ; CCC=K ; DDD=11 ; EEE=I+1 ; FFF=10 ; GGG=J-1 ; HHH=K ; III=R .

Algoritmo 3 Escreva o algoritmo de uma funo que receba uma frase (cadeia de 80 ca caracteres, o ultimo util um ponto) e devolva o nmero da palavra que a maior da e u e frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o nmero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 u letras como h empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA e a AS MARGENSa resposta deve ser 3. 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I,J,TAM,CTP,MAI,QUA : inteiro 4: TAM AAA 5: enquanto X[TAM] = . faa c 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM faa c 12: se X[I] CCC ento a 13: TMS[CTP] I - J 14: TMS[CTP] TMS[CTP]-1 15: CTP DDD 16: J EEE 17: mse 18: II+1 19: menquanto 20: TMS[CTP] I - J 21: TMS[CTP] TMS[CTP] - FFF 22: MAI -99999 23: para I de 1 a GGG faa c 24: se TMS[I] > MAI ento a 25: MAI TMS[I] 26: QUA HHH 27: mse 28: mpara 29: devolva MAI 30: mfuncao Esta funcao correta, deu os seguintes resultados: C03PALM(ATE O PONTO DE FAZER INFERENCIA. )=6 ; C03PALM(DECORRIDO ENTRE O DESAPARECIMENTO. )=4 ; C03PALM(EMBORA MENOS PERVERSO QUE. )=3 . As substituies a fazer so: co a AAA=1 ; BBB=TAM+1 ; CCC== ; DDD=CTP+1 ; EEE=I ; FFF=2 ; GGG=CTP ; HHH=I ; III=QUA .
verso de 10 de fevereiro de 2008 a

423

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS Algoritmo 4 Escreva o algoritmo de uma funo que receba uma chave K (inteiro) e ca um vetor V de 10 inteiros. A funo deve excluir de V todas as ocorrncias (se houver) ca e de K, incluindo zeros ao nal se necessrio. Por exemplo, 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. 1: funcao C04EXCL (K, V[10] : inteiro) : R[10] inteiro 2: I, J : inteiro 3: I AAA 4: J BBB 5: enquanto I<CCC faa c 6: se V[I] = K ento a 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF faa c 13: R[J] 0 14: J GGG 15: menquanto 16: devolva R 17: mfuncao Esta funcao correta, deu os seguintes resultados: C04EXCL(1,3 7 5 3 8 3 8 1 6 2) = 3 7 5 3 8 3 8 6 2 0 ; C04EXCL(91,44 9 23 50 41 21 40 3 48 17) = 44 9 23 50 41 21 40 3 48 17 ; C04EXCL(4,3 5 5 8 8 1 6 1 10 6) = 3 5 5 8 8 1 6 1 10 6 . As substituies a fazer so: co a AAA=1 ; BBB=1 ; CCC=11 ; DDD=J+1 ; EEE=I+1 ; FFF=11 ; GGG=I+1 . Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I,MAI,MEN,AMP 3: MAI AAA 4: MEN BBB 5: para I de 1 a 10 faa c 6: se X[I] > CCC ento a 7: MAI X[I] 8: mse 9: se X[I] < DDD ento a 10: MEN X[I] 11: mse 12: mpara 13: AMP MAI - MEN 14: RRRR AMP 15: mfuncao
16:

Esta funcao correta, deu os seguintes resultados: C05AMPL(2 45 21 97 52 51 54 44 99 14) = 97 ; C05AMPL(4 6 5 6 5 1 7 2 2 2) = 6 ; C05AMPL(35 64 39 91 51 36 68 55 79 62) = 56 . As substituies a fazer so: co a AAA=-9999 ; BBB=-9999 ; CCC=MAI ; DDD=MEN .
88-08, Pedro Kantek

424

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS

Responda

R=

38.2

Exerc cio 2

Construindo e consertando algoritmos - parte 3


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba uma frase (cadeia de at 80 caracteres, ca e terminada por um ponto) e devolva 1 se a frase for um pal ndromo e 0 seno. Um a pal ndromo aquela frase que pode ser lida tanto da direita para a esquerda como ao e
verso de 10 de fevereiro de 2008 a

425

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS contrrio. Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observao: note que as posies do espao em branco no so as mesmas na ida e na ca co c a a volta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI,FIM,EPAL,TAM 3: TAM 1 4: enquanto X[TAM] AAA . faa c 5: TAM TAM + 1 6: menquanto 7: INI 1 8: FIM BBB 9: EPAL 1 10: enquanto INI < CCC faa c 11: enquanto X[DDD] = faa c 12: INI INI + 1 13: menquanto 14: enquanto X[EEE] = faa c 15: FIM FIM - 1 16: menquanto 17: se X[INI] FFF X[FIM] ento a 18: EPAL 0 19: mse 20: INI GGG 21: FIM HHH 22: menquanto 23: devolva III 24: mfuncao Esta funcao correta, deu os seguintes resultados: C01PALI(BRASIL E LISARB. ) = 1 ; C01PALI(OTO COME MOCOTO. ) = 1 ; C01PALI(XUCRICUNICO. ) = 0 . As substituies a fazer so: co a AAA=um sinal de = ; BBB=TAM-1 ; CCC=FIM ; DDD=FIM ; EEE=FIM ; FFF=um sinal de = ; GGG=INI+1 ; HHH=FIM-1 ; III=EPAL . Algoritmo 2 Escreva o algoritmo de uma funo que receba uma chave K (Inteiro) ca e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tambm e crescente onde a chave K foi inclu em seu local correto. da 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA faa c 4: R[I] V[I] 5: mpara 6: I BBB 7: enquanto (R[I] CCC)(I<DDD) faa c 8: I EEE 9: menquanto 10: J FFF
88-08, Pedro Kantek

426

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS


11: 12: 13: 14: 15: 16: 17:

enquanto J I faa c R[J+1] R[J] J GGG menquanto R[J+1] HHH devolva III mfuncao

Esta funcao correta, deu os seguintes resultados: C02INCL(41,6 12 18 24 30 36 42 48 54 60)=6 12 18 24 30 36 41 42 48 54 60 ; C02INCL(174,8 16 24 32 40 48 56 64 72 80)=8 16 24 32 40 48 56 64 72 80 174 ; C02INCL(5,15 20 25 30 35 40 45 50 55 60)=5 15 20 25 30 35 40 45 50 55 60 . As substituies a fazer so: co a AAA=10 ; BBB=1 ; CCC=K ; DDD=11 ; EEE=I+1 ; FFF=10 ; GGG=J+1 ; HHH=K ; III=R . Algoritmo 3 Escreva o algoritmo de uma funo que receba uma frase (cadeia de 80 ca caracteres, o ultimo util um ponto) e devolva o nmero da palavra que a maior da e u e frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o nmero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 u letras como h empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA e a AS MARGENSa resposta deve ser 3. 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I,J,TAM,CTP,MAI,QUA : inteiro 4: TAM AAA 5: enquanto X[TAM] = . faa c 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM faa c 12: se X[I] CCC ento a 13: TMS[CTP] I - J 14: TMS[CTP] TMS[CTP]-1 15: CTP DDD 16: J EEE 17: mse 18: II+1 19: menquanto 20: TMS[CTP] I - J 21: TMS[CTP] TMS[CTP] - FFF 22: MAI -99999 23: para I de 1 a GGG faa c 24: se TMS[I] > MAI ento a 25: MAI TMS[I] 26: QUA HHH 27: mse 28: mpara 29: devolva MAI 30: mfuncao
verso de 10 de fevereiro de 2008 a

427

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS Esta funcao correta, deu os seguintes resultados: C03PALM(DECORRIDO ENTRE O DESAPARECIMENTO. )=4 ; C03PALM(REDATOR E MOSTRAR TENDO. )=1 ; C03PALM(MAS SE NAO PODEMOS IMAGINAR. )=5 . As substituies a fazer so: co a AAA=1 ; BBB=TAM+1 ; CCC=sinal de igual (=) ; DDD=CTP+1 ; EEE=I ; FFF=2 ; GGG=CTP ; HHH=I ; III=QUA . Algoritmo 4 Escreva o algoritmo de uma funo que receba uma chave K (inteiro) e ca um vetor V de 10 inteiros. A funo deve excluir de V todas as ocorrncias (se houver) ca e de K, incluindo zeros ao nal se necessrio. Por exemplo, 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. 1: funcao C04EXCL (K, V[10] : inteiro) : R[10] inteiro 2: I, J : inteiro 3: I AAA 4: J BBB 5: enquanto I<CCC faa c 6: se V[I] = K ento a 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF faa c 13: R[J] 0 14: J GGG 15: menquanto 16: devolva R 17: mfuncao Esta funcao correta, deu os seguintes resultados: C04EXCL(2,5 1 8 3 5 8 6 8 2 5) = 5 1 8 3 5 8 6 8 5 0 ; C04EXCL(82,31 47 13 45 18 40 2 12 7 17) = 31 47 13 45 18 40 2 12 7 17 ; C04EXCL(6,2 2 3 9 9 7 9 3 8 5) = 2 2 3 9 979385. As substituies a fazer so: co a AAA=1 ; BBB=1 ; CCC=11 ; DDD=J+1 ; EEE=I+1 ; FFF=11 ; GGG=J+1 . Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I,MAI,MEN,AMP 3: MAI AAA 4: MEN BBB 5: para I de 1 a 10 faa c 6: se X[I] > CCC ento a 7: MAI X[I] 8: mse 9: se X[I] < DDD ento a 10: MEN X[I] 11: mse 12: mpara 13: AMP MAI - MEN 14: RRRR AMP
88-08, Pedro Kantek

428

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS


15: 16:

mfuncao

Esta funcao correta, deu os seguintes resultados: C05AMPL(11 65 45 96 60 59 88 89 80 35) = 85 ; C05AMPL(3 4 7 3 2 2 5 8 7 1) = 7 ; C05AMPL(81 32 36 13 55 83 6 27 23 30) = 77 . As substituies a fazer so: co a AAA=-9999 ; BBB=+9999 ; CCC=MAI ; DDD=MEN .

Responda

R=

38.3

Exerc cio 3

Construindo e consertando algoritmos - parte 3


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16)
verso de 10 de fevereiro de 2008 a

429

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS Algoritmo 1 Escreva uma funo que receba uma frase (cadeia de at 80 caracteres, ca e terminada por um ponto) e devolva 1 se a frase for um pal ndromo e 0 seno. Um a pal ndromo aquela frase que pode ser lida tanto da direita para a esquerda como ao e contrrio. Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observao: note que as posies do espao em branco no so as mesmas na ida e na ca co c a a volta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI,FIM,EPAL,TAM 3: TAM 1 4: enquanto X[TAM] AAA . faa c 5: TAM TAM + 1 6: menquanto 7: INI 1 8: FIM BBB 9: EPAL 1 10: enquanto INI < CCC faa c 11: enquanto X[DDD] = faa c 12: INI INI + 1 13: menquanto 14: enquanto X[EEE] = faa c 15: FIM FIM - 1 16: menquanto 17: se X[INI] FFF X[FIM] ento a 18: EPAL 0 19: mse 20: INI GGG 21: FIM HHH 22: menquanto 23: devolva III 24: mfuncao Esta funcao correta, deu os seguintes resultados: C01PALI(ROTOR. ) = 1 ; C01PALI(XUCRICUNICO. ) = 0 ; C01PALI(BRASIL E LISARB. ) = 1 . As substituies a fazer so: co a AAA=um sinal de = ; BBB=TAM-1 ; CCC=FIM ; DDD=INI ; EEE=FIM ; FFF=um sinal de = ; GGG=INI+1 ; HHH=FIM-1 ; III=EPAL . Algoritmo 2 Escreva o algoritmo de uma funo que receba uma chave K (Inteiro) ca e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tambm e crescente onde a chave K foi inclu em seu local correto. da 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA faa c 4: R[I] V[I] 5: mpara 6: I BBB 7: enquanto (R[I] CCC)(I<DDD) faa c
88-08, Pedro Kantek

430

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS I EEE menquanto J FFF enquanto J I faa c R[J+1] R[J] J GGG menquanto 15: R[J+1] HHH 16: devolva III 17: mfuncao Esta funcao correta, deu os seguintes resultados: C02INCL(14,7 14 21 28 35 42 49 56 63 70)=7 14 14 21 28 35 42 49 56 63 70 ; C02INCL(183,5 10 15 20 25 30 35 40 45 50)=5 10 15 20 25 30 35 40 45 50 183 ; C02INCL(2,18 26 34 42 50 58 66 74 82 90)=2 18 26 34 42 50 58 66 74 82 90 . As substituies a fazer so: co a AAA=10 ; BBB=1 ; CCC=K ; DDD=11 ; EEE=I+1 ; FFF=10 ; GGG=J-1 ; HHH=K ; III=R .
8: 9: 10: 11: 12: 13: 14:

Algoritmo 3 Escreva o algoritmo de uma funo que receba uma frase (cadeia de 80 ca caracteres, o ultimo util um ponto) e devolva o nmero da palavra que a maior da e u e frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o nmero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 u letras como h empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA e a AS MARGENSa resposta deve ser 3. 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I,J,TAM,CTP,MAI,QUA : inteiro 4: TAM AAA 5: enquanto X[TAM] = . faa c 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM faa c 12: se X[I] CCC ento a 13: TMS[CTP] I - J 14: TMS[CTP] TMS[CTP]-1 15: CTP DDD 16: J EEE 17: mse 18: II+1 19: menquanto 20: TMS[CTP] I - J 21: TMS[CTP] TMS[CTP] - FFF 22: MAI -99999 23: para I de 1 a GGG faa c 24: se TMS[I] > MAI ento a 25: MAI TMS[I] 26: QUA HHH 27: mse 28: mpara
verso de 10 de fevereiro de 2008 a

431

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS devolva MAI mfuncao Esta funcao correta, deu os seguintes resultados: C03PALM(DE DOMINGO E ANTES DA MEIA NOITE. )=2 ; C03PALM(DECORRIDO ENTRE O DESAPARECIMENTO. )=4 ; C03PALM(VOCE OBSERVOU EM SUAS NOTAS. )=2 . As substituies a fazer so: co a AAA=1 ; BBB=TAM+1 ; CCC=sinal de igual (=) ; DDD=CTP+1 ; EEE=I ; FFF=1 ; GGG=CTP ; HHH=I ; III=QUA .
29: 30:

Algoritmo 4 Escreva o algoritmo de uma funo que receba uma chave K (inteiro) e ca um vetor V de 10 inteiros. A funo deve excluir de V todas as ocorrncias (se houver) ca e de K, incluindo zeros ao nal se necessrio. Por exemplo, 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. 1: funcao C04EXCL (K, V[10] : inteiro) : R[10] inteiro 2: I, J : inteiro 3: I AAA 4: J BBB 5: enquanto I<CCC faa c 6: se V[I] = K ento a 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF faa c 13: R[J] 0 14: J GGG 15: menquanto 16: devolva R 17: mfuncao Esta funcao correta, deu os seguintes resultados: C04EXCL(3,5 7 7 7 5 5 8 7 2 5) = 5 7 7 7 5 5 8 7 2 5 ; C04EXCL(35,40 27 3 29 49 18 8 32 11 26) = 40 27 3 29 49 18 8 32 11 26 ; C04EXCL(9,3 10 6 10 1 4 10 4 3 2) = 3 10 6 10 1 4 10 4 3 2 . As substituies a fazer so: co a AAA=1 ; BBB=1 ; CCC=11 ; DDD=J+1 ; EEE=I+1 ; FFF=11 ; GGG=J+1 . Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I,MAI,MEN,AMP 3: MAI AAA 4: MEN BBB 5: para I de 1 a 10 faa c 6: se X[I] > CCC ento a 7: MAI X[I] 8: mse 9: se X[I] < DDD ento a 10: MEN X[I] 11: mse 12: mpara
88-08, Pedro Kantek

432

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS


13: 14: 15: 16:

AMP MAI - MEN RRRR AMP mfuncao

Esta funcao correta, deu os seguintes resultados: C05AMPL(19 10 60 68 27 48 75 15 22 8) = 67 ; C05AMPL(1 5 1 8 7 3 6 5 3 2) = 7 ; C05AMPL(20 7 17 43 83 93 85 75 37 66) = 86 . As substituies a fazer so: co a AAA=-9999 ; BBB=+9999 ; CCC=MEN ; DDD=MEN .

Responda

R=

38.4

Exerc cio 4

Construindo e consertando algoritmos - parte 3


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a
verso de 10 de fevereiro de 2008 a

433

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma funo que receba uma frase (cadeia de at 80 caracteres, ca e terminada por um ponto) e devolva 1 se a frase for um pal ndromo e 0 seno. Um a pal ndromo aquela frase que pode ser lida tanto da direita para a esquerda como ao e contrrio. Exemplos: a ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observao: note que as posies do espao em branco no so as mesmas na ida e na ca co c a a volta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI,FIM,EPAL,TAM 3: TAM 1 4: enquanto X[TAM] AAA . faa c 5: TAM TAM + 1 6: menquanto 7: INI 1 8: FIM BBB 9: EPAL 1 10: enquanto INI < CCC faa c 11: enquanto X[DDD] = faa c 12: INI INI + 1 13: menquanto 14: enquanto X[EEE] = faa c 15: FIM FIM - 1 16: menquanto 17: se X[INI] FFF X[FIM] ento a 18: EPAL 0 19: mse 20: INI GGG 21: FIM HHH 22: menquanto 23: devolva III 24: mfuncao Esta funcao correta, deu os seguintes resultados: C01PALI(ARA. ) = 1 ; C01PALI(OTO COME MOCOTO. ) = 1 ; C01PALI(XUCRICUNICO. )=0. As substituies a fazer so: co a AAA=um sinal de = ; BBB=TAM-1 ; CCC=FIM ; DDD=INI ; EEE=INI ; FFF=um sinal de = ; GGG=INI+1 ; HHH=FIM-1 ; III=EPAL . Algoritmo 2 Escreva o algoritmo de uma funo que receba uma chave K (Inteiro) ca e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tambm e crescente onde a chave K foi inclu em seu local correto. da 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA faa c 4: R[I] V[I]
88-08, Pedro Kantek

434

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS mpara I BBB enquanto (R[I] CCC)(I<DDD) faa c I EEE menquanto J FFF enquanto J I faa c 12: R[J+1] R[J] 13: J GGG 14: menquanto 15: R[J+1] HHH 16: devolva III 17: mfuncao Esta funcao correta, deu os seguintes resultados: C02INCL(98,7 14 21 28 35 42 49 56 63 70)=7 14 21 28 35 42 49 56 63 70 98 ; C02INCL(176,7 14 21 28 35 42 49 56 63 70)=7 14 21 28 35 42 49 56 63 70 176 ; C02INCL(7,15 20 25 30 35 40 45 50 55 60)=7 15 20 25 30 35 40 45 50 55 60 . As substituies a fazer so: co a AAA=10 ; BBB=1 ; CCC=K ; DDD=11 ; EEE=I+1 ; FFF=10 ; GGG=J+1 ; HHH=K ; III=R .
5: 6: 7: 8: 9: 10: 11:

Algoritmo 3 Escreva o algoritmo de uma funo que receba uma frase (cadeia de 80 ca caracteres, o ultimo util um ponto) e devolva o nmero da palavra que a maior da e u e frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o nmero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 u letras como h empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA e a AS MARGENSa resposta deve ser 3. 1: funcao C03PALM (X[80] : caracter) : inteiro 2: TMS[40] : inteiro 3: I,J,TAM,CTP,MAI,QUA : inteiro 4: TAM AAA 5: enquanto X[TAM] = . faa c 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM faa c 12: se X[I] CCC ento a 13: TMS[CTP] I - J 14: TMS[CTP] TMS[CTP]-1 15: CTP DDD 16: J EEE 17: mse 18: II+1 19: menquanto 20: TMS[CTP] I - J 21: TMS[CTP] TMS[CTP] - FFF 22: MAI -99999 23: para I de 1 a GGG faa c 24: se TMS[I] > MAI ento a 25: MAI TMS[I]
verso de 10 de fevereiro de 2008 a

435

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS QUA HHH mse mpara devolva MAI mfuncao Esta funcao correta, deu os seguintes resultados: C03PALM(SE PERMITIRMOS QUE SUPONHA TAL. )=2 ; C03PALM(DE DOMINGO E ANTES DA MEIA NOITE. )=2 ; C03PALM(REDATOR E MOSTRAR TENDO. )=1 . As substituies a fazer so: co a AAA=1 ; BBB=TAM+1 ; CCC=sinal de igual (=) ; DDD=CTP+1 ; EEE=I ; FFF=2 ; GGG=CTP ; HHH=I ; III=MAI .
26: 27: 28: 29: 30:

Algoritmo 4 Escreva o algoritmo de uma funo que receba uma chave K (inteiro) e ca um vetor V de 10 inteiros. A funo deve excluir de V todas as ocorrncias (se houver) ca e de K, incluindo zeros ao nal se necessrio. Por exemplo, 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. 1: funcao C04EXCL (K, V[10] : inteiro) : R[10] inteiro 2: I, J : inteiro 3: I AAA 4: J BBB 5: enquanto I<CCC faa c 6: se V[I] = K ento a 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF faa c 13: R[J] 0 14: J GGG 15: menquanto 16: devolva R 17: mfuncao Esta funcao correta, deu os seguintes resultados: C04EXCL(6,4 1 7 7 1 8 6 4 1 6) = 4 1 7 7 1 8 4 1 0 0 ; C04EXCL(68,21 19 18 11 29 8 43 10 39 27) = 21 19 18 11 29 8 43 10 39 27 ; C04EXCL(9,10 3 9 9 9 5 8 7 6 3) = 10 358763000. As substituies a fazer so: co a AAA=1 ; BBB=1 ; CCC=11 ; DDD=J+1 ; EEE=I+1 ; FFF=11 ; GGG=J+1 . Algoritmo 5 1: funcao C05AMPL (X[10] : inteiro) : inteiro 2: inteiro I,MAI,MEN,AMP 3: MAI AAA 4: MEN BBB 5: para I de 1 a 10 faa c 6: se X[I] > CCC ento a 7: MAI X[I] 8: mse 9: se X[I] < DDD ento a
88-08, Pedro Kantek

436

verso de 10 de fevereiro de 2008 a

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS


10: 11: 12: 13: 14: 15: 16:

MEN X[I] mse mpara AMP MAI - MEN RRRR AMP mfuncao

Esta funcao correta, deu os seguintes resultados: C05AMPL(76 38 36 62 50 19 55 79 73 78) = 60 ; C05AMPL(7 6 5 3 5 1 2 6 4 1) = 6 ; C05AMPL(30 61 95 72 10 43 33 64 48 73) = 85 . As substituies a fazer so: co a AAA=-9999 ; BBB=+9999 ; CCC=MAI ; DDD=MEN .

Responda

R=

38.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

verso de 10 de fevereiro de 2008 a

437

88-08, Pedro Kantek

CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORRECAO DE ALGORITMOS

88-08, Pedro Kantek

438

verso de 10 de fevereiro de 2008 a

Cap tulo 39

Exerc cios Prticos 125d a Correo de Algoritmos ca


39.1 Exerc cio 1

Construindo e consertando algoritmos - parte 4


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva o algoritmo de uma funo que receba uma matriz de 9 inteiros ca (3 linhas por 3 colunas), totalize as colunas e devolva um vetor de 3 totais. 1: funo D01VESO (M [1..3] [1..3] : inteiro) V[1..3]:inteiro ca 2: I,J,SOM : inteiro 3: V 0,0,0 4: para AAA de 1 a 3 faa c 5: BBB 0 6: para CCC de 1 a 3 faa c 7: SOM SOM + M[I] [J] 8: mpara 9: V[DDD] SOM 10: mpara 439

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS retorne V mfuno ca As substituies a fazer so: co a AAA=J ; BBB=SOM ; CCC=I ; DDD=J . Esta funo correta, deu os seguintes resultados: ca D01VESO (6 4 9,9 5 3,1 7 8) = 16 16 20 ; D01VESO (5 6 1,9 3 3,9 3 7) = 23 12 11 ; D01VESO (3 3 7,3 5 7,1 5 3) = 7 13 17 .
11: 12:

Algoritmo 2 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 4 colunas de nmeros inteiros. A funo deve gerar um vetor de 4 nmeros reais. O u ca u elemento k da resposta calculado como a soma dos elementos da coluna k, que esto e a acima da linha k, dividido pela soma dos elementos que esto na coluna k e nas linhas a k, k + 1, ..., 4. 1: funo D02MSMI (M[1..4] [1..4] : inteiro) V[1..4]:real ca 2: J,NUM,DEN,I : inteiro 3: para J de 1 a 4 faa c 4: NUM AAA 5: DEN 0 6: para I de 1 a BBB faa c 7: NUM NUM + M[I][EEE] 8: mpara 9: para I de CCC a 4 faa c 10: DEN DEN + M[DDD][J] 11: mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfuno ca As substituies a fazer so: co a AAA=0 (zero) ; BBB=J-1 ; CCC=1 (um) ; DDD=I ; EEE=J ; FFF=NUM . Esta funo correta, deu os seguintes resultados: ca D02MSMI ( 5 1 12 13, 6 4 1 15, 4 12 1 3,10 4 13 10)= .0 .1 .9 3.1 ; D02MSMI (18 20 3 7,18 18 18 4,14 9 4 1,10 1 13 10)= .0 .7 1.2 1.2 ; D02MSMI ( 9 1 11 3,20 3 3 17, 2 16 18 4,19 8 13 16)= .0 .0 .5 1.5 . Algoritmo 3 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que contm o menor e valor em cada linha. 1: funo D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro ca 2: I,J,MEN : inteiro 3: para I de 1 a 4 faa c 4: MEN AAA 5: para J de 1 a BBB faa c 6: se M[I][CCC] < MEN ento a 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfuno ca
88-08, Pedro Kantek

440

verso de 10 de fevereiro de 2008 a

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS As substituies a fazer so: co a AAA=999999 ; BBB=5 ; CCC=J ; DDD=J . Esta funo correta, deu os seguintes resultados: ca D03MEHO ( 3 2 2 3 2, 5 7 2 6 10,10 3 1 10 3, 9 6 6 9 1)=2 2 1 1 ; D03MEHO ( 7 2 1 9 8, 4 4 8 3 8, 9 7 4 9 1,10 9 3 3 1)=1 3 1 1 ; D03MEHO (4 6 7 4 10,2 4 10 5 9,9 4 3 7 10,3 2 10 3 3)=4 2 3 2 . Algoritmo 4 Escreva uma funo que receba duas matrizes conformveis, isto a ca a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A funo deve ca multiplicar as duas matrizes, gerando o resultado que ter 3 linhas por 3 colunas. a 1: funo D04MUMA (A[1..3][1..4]:inteiro, ca 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at aqui o cabealho... e e c 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA faa c 6: para J de 1 a BBB faa c 7: SOM 0 8: para K de 1 a CCC faa c 9: SOM SOM+(A[I][DDD]B[EEE][J]) 10: mpara 11: V[FFF][J] SOM 12: mpara 13: mpara 14: retorne V 15: mfuno ca As substituies a fazer so: co a AAA=3 ; BBB=3 ; CCC=4 ; DDD=K ; EEE=K ; FFF=K . Esta funo correta, deu os seguintes resultados: ca D04MUMA (5 6 6 5,3 4 1 5,2 5 1 2;1 3 5,5 1 6,4 1 0,4 3 5) = 79 42 86,47 29 64,39 18 50 ; D04MUMA (0 1 5 3,5 2 6 2,2 4 2 5;4 1 2,5 1 2,6 5 6,1 5 4) = 38 41 44,68 47 58,45 41 44 ; D04MUMA (2 0 0 3,4 6 6 2,6 2 0 6;6 6 3,5 4 6,4 3 3,2 4 2) = 18 24 12,82 74 70,58 68 42 . Algoritmo 5 Escreva o algoritmo de uma funo que receba uma matriz de 6 linhas ca por 2 colunas contendo o resultado de uma eleio. A primeira coluna corresponde ao ca nmero do candidato, sendo que nem todas as linhas estaro preenchidas. Neste caso as u a linhas no usadas contero zeros. Existem dois cdigos em especial que estaro sempre a a o a presentes e que so 998=votos em branco e 999=votos nulos. A segunda coluna contm a e a quantidade de votos a cada candidato e tambm brancos e nulos. e A funo deve devolver o nmero do candidato eleito, ou -1 se a eleio no for ca u ca a vlida. O eleito aquele que obteve o maior nmero de votos se a eleio foi vlida. a e u ca a Uma eleio vlida quando o total de votos dados a candidatos mais os votos em ca e a branco corresponderem a 50% mais 1 voto do total de votantes. Se o vencedor for o branco ou o nulo, vence o candidato da linha 1 (por hiptese o mais velho). o e 1: funo D05ELEI (VOT[1..6][1..2]:inteiro):inteiro ca 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA faa c 5: se VOT[I][1] = BBB ento a 6: VAL VAL + VOT[I][CCC] 7: seno a
verso de 10 de fevereiro de 2008 a

441

88-08, Pedro Kantek

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS NUL VOT[I][2] mse mpara TOT VAL 2 se NUL > DDD ento a retorne -1 seno a 15: MAI -999999 16: para I de 1 a 6 faa c 17: se VOT[I][EEE] > MAI ento a 18: FFF VOT[I][2] 19: QUEM VOT[I][1] 20: mse 21: mpara 22: se (GGG = 998) (GGG=999) ento a 23: retorne 1 24: seno a 25: retorne QUEM 26: mse 27: mse 28: mfuno ca As substituies a fazer so: co a AAA=6 ; BBB=999 ; CCC=2 ; DDD=NUL ; EEE=2 ; FFF=MAI ; GGG=QUEM . Esta funo correta, deu os seguintes resultados: ca D05ELEI ( 40 1400, 10 800, 0 0, 0 0,998 180,999 120) = 40 ; D05ELEI ( 70 80, 60 220, 80 320, 10 200,998 80,999 390) = 1 ; D05ELEI ( 60 60, 10 100, 70 140, 0 0,998 320,999 60) = 1 .
8: 9: 10: 11: 12: 13: 14:

Responda

R=

39.2

Exerc cio 2

Construindo e consertando algoritmos - parte 4


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso.
88-08, Pedro Kantek

442

verso de 10 de fevereiro de 2008 a

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva o algoritmo de uma funo que receba uma matriz de 9 inteiros ca (3 linhas por 3 colunas), totalize as colunas e devolva um vetor de 3 totais. 1: funo D01VESO (M [1..3] [1..3] : inteiro) V[1..3]:inteiro ca 2: I,J,SOM : inteiro 3: V 0,0,0 4: para AAA de 1 a 3 faa c 5: BBB 0 6: para CCC de 1 a 3 faa c 7: SOM SOM + M[I] [J] 8: mpara 9: V[DDD] SOM 10: mpara 11: retorne V 12: mfuno ca As substituies a fazer so: co a AAA=J ; BBB=SOM ; CCC=J ; DDD=J . Esta funo correta, deu os seguintes resultados: ca D01VESO (7 2 2,1 1 1,3 7 2) = 11 10 5 ; D01VESO (3 5 5,5 6 9,9 1 9) = 17 12 23 ; D01VESO (6 4 7,3 7 8,5 5 3) = 14 16 18 . Algoritmo 2 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 4 colunas de nmeros inteiros. A funo deve gerar um vetor de 4 nmeros reais. O u ca u elemento k da resposta calculado como a soma dos elementos da coluna k, que esto e a acima da linha k, dividido pela soma dos elementos que esto na coluna k e nas linhas a k, k + 1, ..., 4. 1: funo D02MSMI (M[1..4] [1..4] : inteiro) V[1..4]:real ca 2: J,NUM,DEN,I : inteiro 3: para J de 1 a 4 faa c 4: NUM AAA 5: DEN 0 6: para I de 1 a BBB faa c 7: NUM NUM + M[I][EEE] 8: mpara 9: para I de CCC a 4 faa c 10: DEN DEN + M[DDD][J] 11: mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfuno ca As substituies a fazer so: co a AAA=0 (zero) ; BBB=J-1 ; CCC=J ; DDD=J ; EEE=J ; FFF=NUM . Esta funo correta, deu os seguintes resultados: ca D02MSMI (11 5 15 5,11 18 17 15,12 3 4 11,11 17 8 14)= .0 .1 2.7 2.2 ; D02MSMI ( 3 17 16 5,11 10 6 16,17 20 4 13, 8 3 7 14)= .0 .5 2.0 2.4 ; D02MSMI (16 13 18 5, 3 4 18 17,16 18 20 20, 1 2 20 15)= .0 .5 .9 2.8 .
verso de 10 de fevereiro de 2008 a

443

88-08, Pedro Kantek

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS Algoritmo 3 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que contm o menor e valor em cada linha. 1: funo D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro ca 2: I,J,MEN : inteiro 3: para I de 1 a 4 faa c 4: MEN AAA 5: para J de 1 a BBB faa c 6: se M[I][CCC] < MEN ento a 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfuno ca As substituies a fazer so: co a AAA=0 (zero) ; BBB=5 ; CCC=J ; DDD=MEN . Esta funo correta, deu os seguintes resultados: ca D03MEHO (5 3 4 7 3,8 7 4 9 5,3 2 10 3 1,9 2 9 2 4)=3 4 1 2 ; D03MEHO ( 5 9 6 5 3, 9 7 2 4 5,10 9 9 2 8, 7 8 8 5 10)=3 2 2 5 ; D03MEHO (2 10 2 10 5,6 2 1 1 4,8 8 10 7 1,3 2 1 6 3)=2 1 1 1 . Algoritmo 4 Escreva uma funo que receba duas matrizes conformveis, isto a ca a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A funo deve ca multiplicar as duas matrizes, gerando o resultado que ter 3 linhas por 3 colunas. a 1: funo D04MUMA (A[1..3][1..4]:inteiro, ca 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at aqui o cabealho... e e c 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA faa c 6: para J de 1 a BBB faa c 7: SOM 0 8: para K de 1 a CCC faa c 9: SOM SOM+(A[I][DDD]B[EEE][J]) 10: mpara 11: V[FFF][J] SOM 12: mpara 13: mpara 14: retorne V 15: mfuno ca As substituies a fazer so: co a AAA=3 ; BBB=3 ; CCC=4 ; DDD=K ; EEE=K ; FFF=I . Esta funo correta, deu os seguintes resultados: ca D04MUMA (6 2 1 1,3 3 1 1,3 2 5 3;6 6 2,1 3 1,0 5 4,6 3 0) = 44 50 18,27 35 13,38 58 28 ; D04MUMA (0 6 5 1,3 5 2 0,4 1 3 1;0 3 2,2 2 2,1 6 3,0 3 1) = 17 45 28,12 31 22, 5 35 20 ; D04MUMA (1 0 4 2,6 3 5 5,1 5 1 6;3 0 4,0 1 3,3 4 5,0 4 0) = 15 24 24,33 43 58, 6 33 24 . Algoritmo 5 Escreva o algoritmo de uma funo que receba uma matriz de 6 linhas ca por 2 colunas contendo o resultado de uma eleio. A primeira coluna corresponde ao ca
88-08, Pedro Kantek

444

verso de 10 de fevereiro de 2008 a

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS nmero do candidato, sendo que nem todas as linhas estaro preenchidas. Neste caso as u a linhas no usadas contero zeros. Existem dois cdigos em especial que estaro sempre a a o a presentes e que so 998=votos em branco e 999=votos nulos. A segunda coluna contm a e a quantidade de votos a cada candidato e tambm brancos e nulos. e A funo deve devolver o nmero do candidato eleito, ou -1 se a eleio no for ca u ca a vlida. O eleito aquele que obteve o maior nmero de votos se a eleio foi vlida. a e u ca a Uma eleio vlida quando o total de votos dados a candidatos mais os votos em ca e a branco corresponderem a 50% mais 1 voto do total de votantes. Se o vencedor for o branco ou o nulo, vence o candidato da linha 1 (por hiptese o mais velho). o e 1: funo D05ELEI (VOT[1..6][1..2]:inteiro):inteiro ca 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA faa c 5: se VOT[I][1] = BBB ento a 6: VAL VAL + VOT[I][CCC] 7: seno a 8: NUL VOT[I][2] 9: mse 10: mpara 11: TOT VAL 2 12: se NUL > DDD ento a 13: retorne -1 14: seno a 15: MAI -999999 16: para I de 1 a 6 faa c 17: se VOT[I][EEE] > MAI ento a 18: FFF VOT[I][2] 19: QUEM VOT[I][1] 20: mse 21: mpara 22: se (GGG = 998) (GGG=999) ento a 23: retorne 1 24: seno a 25: retorne QUEM 26: mse 27: mse 28: mfuno ca As substituies a fazer so: co a AAA=6 ; BBB=999 ; CCC=2 ; DDD=TOT ; EEE=2 ; FFF=MAI ; GGG=QUEM . Esta funo correta, deu os seguintes resultados: ca D05ELEI ( 40 160, 60 80, 20 260, 50 180,998 340,999 60) = 1 ; D05ELEI ( 90 360, 60 400, 10 220, 20 40,998 280,999 450) = 1 ; D05ELEI ( 40 340, 50 360, 30 20, 70 260,998 200,999 210) = 50 .

Responda

R=

verso de 10 de fevereiro de 2008 a

445

88-08, Pedro Kantek

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS

39.3

Exerc cio 2

Construindo e consertando algoritmos - parte 4


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva o algoritmo de uma funo que receba uma matriz de 9 inteiros ca (3 linhas por 3 colunas), totalize as colunas e devolva um vetor de 3 totais. 1: funo D01VESO (M [1..3] [1..3] : inteiro) V[1..3]:inteiro ca 2: I,J,SOM : inteiro 3: V 0,0,0 4: para AAA de 1 a 3 faa c 5: BBB 0 6: para CCC de 1 a 3 faa c 7: SOM SOM + M[I] [J] 8: mpara 9: V[DDD] SOM 10: mpara 11: retorne V 12: mfuno ca As substituies a fazer so: co a AAA=J ; BBB=SOM ; CCC=I ; DDD=J . Esta funo correta, deu os seguintes resultados: ca D01VESO (2 8 8,2 5 6,4 9 8) = 8 22 22 ; D01VESO (6 5 5,7 3 4,1 3 2) = 14 11 11 ; D01VESO (3 5 7,9 1 2,4 7 9) = 16 13 18 . Algoritmo 2 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 4 colunas de nmeros inteiros. A funo deve gerar um vetor de 4 nmeros reais. O u ca u elemento k da resposta calculado como a soma dos elementos da coluna k, que esto e a acima da linha k, dividido pela soma dos elementos que esto na coluna k e nas linhas a k, k + 1, ..., 4. 1: funo D02MSMI (M[1..4] [1..4] : inteiro) V[1..4]:real ca 2: J,NUM,DEN,I : inteiro 3: para J de 1 a 4 faa c 4: NUM AAA
88-08, Pedro Kantek

446

verso de 10 de fevereiro de 2008 a

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS DEN 0 para I de 1 a BBB faa c NUM NUM + M[I][EEE] mpara para I de CCC a 4 faa c DEN DEN + M[DDD][J] mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfuno ca As substituies a fazer so: co a AAA=1 (um) ; BBB=J-1 ; CCC=J ; DDD=I ; EEE=J ; FFF=NUM . Esta funo correta, deu os seguintes resultados: ca D02MSMI (20 12 6 6,17 10 1 12,13 8 8 12, 8 15 1 16)= .0 .4 .8 1.9 ; D02MSMI (16 16 5 19, 9 8 3 3, 2 19 17 16,20 7 12 13)= .0 .5 .3 2.9 ; D02MSMI (18 20 7 10,14 5 4 9, 2 13 5 18,20 12 11 17)= .0 .7 .7 2.2 .
5: 6: 7: 8: 9: 10: 11:

Algoritmo 3 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que contm o menor e valor em cada linha. 1: funo D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro ca 2: I,J,MEN : inteiro 3: para I de 1 a 4 faa c 4: MEN AAA 5: para J de 1 a BBB faa c 6: se M[I][CCC] < MEN ento a 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfuno ca As substituies a fazer so: co a AAA=999999 ; BBB=5 ; CCC=J ; DDD=J . Esta funo correta, deu os seguintes resultados: ca D03MEHO ( 2 10 8 3 7, 7 9 9 5 3, 4 7 6 7 3,10 10 7 6 2)=2 3 3 2 ; D03MEHO (5 2 10 5 8,7 1 6 1 3,3 5 4 6 3,5 7 4 10 6)=2 1 3 4 ; D03MEHO ( 3 2 7 7 7,10 4 3 10 3,10 4 2 1 1, 1 3 4 4 8)=2 3 1 1 . Algoritmo 4 Escreva uma funo que receba duas matrizes conformveis, isto a ca a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A funo deve ca multiplicar as duas matrizes, gerando o resultado que ter 3 linhas por 3 colunas. a 1: funo D04MUMA (A[1..3][1..4]:inteiro, ca 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at aqui o cabealho... e e c 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA faa c 6: para J de 1 a BBB faa c 7: SOM 0
verso de 10 de fevereiro de 2008 a

447

88-08, Pedro Kantek

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS para K de 1 a CCC faa c SOM SOM+(A[I][DDD]B[EEE][J]) mpara V[FFF][J] SOM mpara mpara retorne V 15: mfuno ca As substituies a fazer so: co a AAA=3 ; BBB=4 ; CCC=4 ; DDD=K ; EEE=K ; FFF=I . Esta funo correta, deu os seguintes resultados: ca D04MUMA (2 1 5 3,0 1 4 6,0 0 4 1;0 3 2,0 3 5,1 3 3,6 4 4) = 23 36 36,40 39 41,10 16 16 ; D04MUMA (0 3 1 2,4 2 2 3,0 5 3 1;4 0 1,1 3 0,6 5 4,5 4 3) = 19 22 10,45 28 21,28 34 15 ; D04MUMA (3 6 3 1,1 5 0 0,0 1 4 4;5 3 2,3 1 3,5 5 4,2 6 4) = 50 36 40,20 8 17,31 45 35 .
8: 9: 10: 11: 12: 13: 14:

Algoritmo 5 Escreva o algoritmo de uma funo que receba uma matriz de 6 linhas ca por 2 colunas contendo o resultado de uma eleio. A primeira coluna corresponde ao ca nmero do candidato, sendo que nem todas as linhas estaro preenchidas. Neste caso as u a linhas no usadas contero zeros. Existem dois cdigos em especial que estaro sempre a a o a presentes e que so 998=votos em branco e 999=votos nulos. A segunda coluna contm a e a quantidade de votos a cada candidato e tambm brancos e nulos. e A funo deve devolver o nmero do candidato eleito, ou -1 se a eleio no for ca u ca a vlida. O eleito aquele que obteve o maior nmero de votos se a eleio foi vlida. a e u ca a Uma eleio vlida quando o total de votos dados a candidatos mais os votos em ca e a branco corresponderem a 50% mais 1 voto do total de votantes. Se o vencedor for o branco ou o nulo, vence o candidato da linha 1 (por hiptese o mais velho). o e 1: funo D05ELEI (VOT[1..6][1..2]:inteiro):inteiro ca 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA faa c 5: se VOT[I][1] = BBB ento a 6: VAL VAL + VOT[I][CCC] 7: seno a 8: NUL VOT[I][2] 9: mse 10: mpara 11: TOT VAL 2 12: se NUL > DDD ento a 13: retorne -1 14: seno a 15: MAI -999999 16: para I de 1 a 6 faa c 17: se VOT[I][EEE] > MAI ento a 18: FFF VOT[I][2] 19: QUEM VOT[I][1] 20: mse 21: mpara 22: se (GGG = 998) (GGG=999) ento a 23: retorne 1 24: seno a 25: retorne QUEM
88-08, Pedro Kantek

448

verso de 10 de fevereiro de 2008 a

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS


26: 27: 28:

mse mse mfuno ca As substituies a fazer so: co a AAA=6 ; BBB=999 ; CCC=2 ; DDD=TOT ; EEE=2 ; FFF=MAI ; GGG=QUEM

. Esta funo correta, deu os seguintes resultados: ca D05ELEI ( 20 320, 40 260, 10 300, 50 220,998 240,999 330) = 1 ; D05ELEI ( 50 160, 30 360, 90 300, 40 60,998 380,999 240) = 1 ; D05ELEI ( 40 120, 20 40, 30 300, 80 320,998 380,999 570) = 1 .

Responda

R=

39.4

Exerc cio 3

Construindo e consertando algoritmos - parte 4


Nesta folha, voc receber 5 algoritmos, que tm algumas lacunas representadas pelas e a e constantes AAA, BBB, CCC, ... at III. Abaixo de cada algoritmo, listada uma legenda e e que permitir a substituio das constantes AAA,...,III por valores determinados. a ca Aps a substituio, de duas uma: o ca
O algoritmo est correto a O algoritmo contm um erro. Este erro deriva-se de uma (e apenas uma) substie tuio de constante por um valor errado. ca

Voc no precisa determinar onde est o erro (se bem que isso um interessante e a a e desao), mas precisa apenas determinar que o algoritmo est errado. a Uma boa maneira de vericar isto acompanhar as 3 execues do algoritmo (correto) e co que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos esto corretos denindo An como: A1 1 se o a algoritmo 1 est correto e A1 0 seno. Idem para A2 , A3 , A4 e A5 . a a Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva o algoritmo de uma funo que receba uma matriz de 9 inteiros ca (3 linhas por 3 colunas), totalize as colunas e devolva um vetor de 3 totais. 1: funo D01VESO (M [1..3] [1..3] : inteiro) V[1..3]:inteiro ca 2: I,J,SOM : inteiro 3: V 0,0,0 4: para AAA de 1 a 3 faa c 5: BBB 0 6: para CCC de 1 a 3 faa c 7: SOM SOM + M[I] [J] 8: mpara 9: V[DDD] SOM 10: mpara
verso de 10 de fevereiro de 2008 a

449

88-08, Pedro Kantek

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS retorne V mfuno ca As substituies a fazer so: co a AAA=I ; BBB=SOM ; CCC=I ; DDD=J . Esta funo correta, deu os seguintes resultados: ca D01VESO (2 1 9,3 8 2,8 4 2) = 13 13 13 ; D01VESO (2 8 9,6 6 5,4 7 8) = 12 21 22 ; D01VESO (2 1 1,4 9 5,5 7 4) = 11 17 10 .
11: 12:

Algoritmo 2 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 4 colunas de nmeros inteiros. A funo deve gerar um vetor de 4 nmeros reais. O u ca u elemento k da resposta calculado como a soma dos elementos da coluna k, que esto e a acima da linha k, dividido pela soma dos elementos que esto na coluna k e nas linhas a k, k + 1, ..., 4. 1: funo D02MSMI (M[1..4] [1..4] : inteiro) V[1..4]:real ca 2: J,NUM,DEN,I : inteiro 3: para J de 1 a 4 faa c 4: NUM AAA 5: DEN 0 6: para I de 1 a BBB faa c 7: NUM NUM + M[I][EEE] 8: mpara 9: para I de CCC a 4 faa c 10: DEN DEN + M[DDD][J] 11: mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfuno ca As substituies a fazer so: co a AAA=0 (zero) ; BBB=J-1 ; CCC=J ; DDD=I ; EEE=J ; FFF=NUM . Esta funo correta, deu os seguintes resultados: ca D02MSMI (11 12 11 13, 9 5 4 13,11 5 4 11,10 20 2 1)= .0 .4 2.5 37.0 ; D02MSMI (16 11 13 5, 2 13 8 12,14 7 13 11, 3 14 15 2)= .0 .3 .8 14.0 ; D02MSMI ( 2 18 8 19,14 19 15 3, 2 4 14 20,12 9 7 8)= .0 .6 1.1 5.3 . Algoritmo 3 Escreva o algoritmo de uma funo que receba uma matriz de 4 linhas ca por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que contm o menor e valor em cada linha. 1: funo D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro ca 2: I,J,MEN : inteiro 3: para I de 1 a 4 faa c 4: MEN AAA 5: para J de 1 a BBB faa c 6: se M[I][CCC] < MEN ento a 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfuno ca
88-08, Pedro Kantek

450

verso de 10 de fevereiro de 2008 a

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS As substituies a fazer so: co a AAA=999999 ; BBB=5 ; CCC=I ; DDD=MEN . Esta funo correta, deu os seguintes resultados: ca D03MEHO (2 8 4 9 1,6 2 5 5 1,5 4 2 7 6,7 10 8 9 5)=1 1 2 5 ; D03MEHO (9 6 7 4 1,9 7 4 7 7,1 9 2 3 7,7 7 7 8 9)=1 4 1 7 ; D03MEHO ( 8 10 6 3 3, 9 7 1 2 5,10 2 10 1 9, 8 4 2 3 3)=3 1 1 2 . Algoritmo 4 Escreva uma funo que receba duas matrizes conformveis, isto a ca a e primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A funo deve ca multiplicar as duas matrizes, gerando o resultado que ter 3 linhas por 3 colunas. a 1: funo D04MUMA (A[1..3][1..4]:inteiro, ca 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at aqui o cabealho... e e c 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA faa c 6: para J de 1 a BBB faa c 7: SOM 0 8: para K de 1 a CCC faa c 9: SOM SOM+(A[I][DDD]B[EEE][J]) 10: mpara 11: V[FFF][J] SOM 12: mpara 13: mpara 14: retorne V 15: mfuno ca As substituies a fazer so: co a AAA=4 ; BBB=3 ; CCC=4 ; DDD=K ; EEE=K ; FFF=I . Esta funo correta, deu os seguintes resultados: ca D04MUMA (5 1 1 3,0 5 0 3,6 2 1 3;1 3 2,6 2 2,3 3 5,3 4 6) = 23 32 35,39 22 28,30 37 39 ; D04MUMA (5 0 5 4,4 6 6 5,4 4 6 1;0 0 6,5 3 2,2 6 2,3 1 6) = 22 34 64,57 59 78,35 49 50 ; D04MUMA (2 3 1 4,4 4 6 5,2 1 0 1;3 5 3,1 6 2,1 6 4,2 5 0) = 18 54 16,32 105 44, 9 21 8 . Algoritmo 5 Escreva o algoritmo de uma funo que receba uma matriz de 6 linhas ca por 2 colunas contendo o resultado de uma eleio. A primeira coluna corresponde ao ca nmero do candidato, sendo que nem todas as linhas estaro preenchidas. Neste caso as u a linhas no usadas contero zeros. Existem dois cdigos em especial que estaro sempre a a o a presentes e que so 998=votos em branco e 999=votos nulos. A segunda coluna contm a e a quantidade de votos a cada candidato e tambm brancos e nulos. e A funo deve devolver o nmero do candidato eleito, ou -1 se a eleio no for ca u ca a vlida. O eleito aquele que obteve o maior nmero de votos se a eleio foi vlida. a e u ca a Uma eleio vlida quando o total de votos dados a candidatos mais os votos em ca e a branco corresponderem a 50% mais 1 voto do total de votantes. Se o vencedor for o branco ou o nulo, vence o candidato da linha 1 (por hiptese o mais velho). o e 1: funo D05ELEI (VOT[1..6][1..2]:inteiro):inteiro ca 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA faa c 5: se VOT[I][1] = BBB ento a 6: VAL VAL + VOT[I][CCC] 7: seno a
verso de 10 de fevereiro de 2008 a

451

88-08, Pedro Kantek

CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORRECAO DE ALGORITMOS NUL VOT[I][2] mse mpara TOT VAL 2 se NUL > DDD ento a retorne -1 seno a 15: MAI -999999 16: para I de 1 a 6 faa c 17: se VOT[I][EEE] > MAI ento a 18: FFF VOT[I][2] 19: QUEM VOT[I][1] 20: mse 21: mpara 22: se (GGG = 998) (GGG=999) ento a 23: retorne 1 24: seno a 25: retorne QUEM 26: mse 27: mse 28: mfuno ca As substituies a fazer so: co a AAA=6 ; BBB=999 ; CCC=2 ; DDD=TOT ; EEE=2 ; FFF=MAI ; GGG=QUEM . Esta funo correta, deu os seguintes resultados: ca D05ELEI ( 70 380, 20 400, 50 80, 0 0,998 300,999 90) = 20 ; D05ELEI ( 10 120, 40 260, 30 140, 50 340,998 320,999 180) = 50 ; D05ELEI ( 90 1300, 30 2000, 0 0, 0 0,998 180,999 60) = 30 .
8: 9: 10: 11: 12: 13: 14:

Responda

R=

39.5

Respostas
linhas onde ocorreu o erro 03464 34100 01420 10310 soma dos certos 1 24 17 18

nmero do exerc u cio 1 2 3 4

88-08, Pedro Kantek

452

verso de 10 de fevereiro de 2008 a

Cap tulo 40

Exerc cios Prticos: 128 a Matrizes


Totalizao de matrizes E comum ter-se uma matriz de valores referentes a um dado ca fenmeno e pretender-se obter totais em qualquer uma das duas dimenses. Acompanhe: o o Seja a matriz M composta pelo resultado das vendas de 7 liais (7 colunas) nos 22 dias uteis (linhas) do ms passado. Pretende-se responder algumas perguntas: e a) Qual a maior lial ?; b) qual o dia do ms de maior movimento?; c) Qual a e amplitude de liais ? (a maior menos a menor); d) qual a amplitude de dias ? e) Quantos dias respondem por 50% das vendas ? etc etc. Para responder a perguntas como essas, h que se criar um vetor de 7 valores a (soma das liais) e um de 22 valores para a soma dos dias. Acompanhe o algoritmo 1: real VF[7], VD[22] funo SOMA (real VENDAS[22][7]) ca 2: inteiro J, K 3: VF 0 4: VD 0 5: para J de 1 at 22 faa e c 6: para K de 1 at 7 faa e c 7: VD[J] VD[J] + VENDAS[J][K] 8: VF[K] VF[K] + VENDAS[J][K] 9: mpara 10: mpara 11: m {funo} ca Transposta Supondo a matriz M de i linhas por j colunas, a matriz transposta de M, reconhecida como M = M aquela obtida rotacionando-se seus elementos. M ter j e a linhas por i colunas. Acompanhe o algoritmo 1: (real TRA[j][i]) funo ACHATRANSP (real M[i][j]) ca 2: inteiro K, L 3: para K de 1 at i faa e c 4: para L de 1 at j faa e c 5: TRA[L][K] M[K][L] 6: mpara 7: mpara 8: devolva TRA 9: m{funo} ca 453

CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES Zerando a matriz abaixo da diagonal principal Este um problema t e pico em teoria de grafos. A matriz de adjacncia de um digrafo (grafo direcionado) usa e todas as linhas da matriz. Se este grafo passar a ser considerado como no direa cionado, a parte abaixo da diagonal principal precisa ser zerada. Eis o algoritmo que o faz: 1: real MZ[i][i] funo ZERAB (real M[i][i]) ca 2: inteiro J, K 3: para J de 1 at i faa e c 4: para K de 1 at i faa e c 5: se K < J ento a 6: MZ[J][K] 0 7: seno a 8: MZ[J][K] M[J][K] 9: mse 10: mpara 11: mpara 12: devolva MZ 13: m{funo} ca multiplicao matricial Este um algoritmo famoso na matemtica. Dadas as ca e a matrizes A (de i linhas por j colunas) e B (de k linhas por m colunas), onde j = k, obter a matriz C, multiplicao de A por B, de i linhas por m colunas, a partir de ca j C[i][m] = x=1 A[i][x] B[x][m] Para implement-lo, tem-se o a 1: real C [i][m] funao MM (real A[i][j], B[k][m]) {j tem que ser igual a k} c 2: inteiro AUX 3: inteiro IND1, IND2, IND3 4: para IND1 = 1 at i faa e c 5: para IND2 = 1 at m faa e c 6: AUX 0 7: para IND3 = 1 at j faa e c 8: AUX AUX + A[IND1][IND3] B[IND3][IND2] 9: mpara 10: C[IND1][IND2] AUX 11: mpara 12: mpara 13: devolva C 14: m{funo} ca Soluo de sistema de equaes lineares Seja A a matriz de coecientes e seja B ca co a matriz coluna de termos independentes em um sistema Ax + B = 0. O parmetro do a algoritmo uma matriz de n linhas e n + 1 colunas, onde a matriz coluna B ocupa a e (n + 1)-sima coluna de A. e 1: real R[n] funo RSEL (real A[n][n+1]) ca 2: real OLA 3: inteiro I,J,K 4: I 1 5: enquanto I < n faa c 6: Jn 7: enquanto J > I faa c 8: se A[J-1][I] = 0 ento a
88-08, Pedro Kantek

454

verso de 10 de fevereiro de 2008 a

CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES troque as linhas A[J] e A[J-1] mse se A[J-1][I] = 0 ento a OLA 0 seno a OLA A[J][I] A[J-1][I] mse 16: para K de 1 at n+1 faa e c 17: A[J][K] A[J][K]+(A[J-1][K] OLA) 18: mpara 19: JJ-1 20: menquanto 21: II+1 22: menquanto 23: I n 24: enquanto I 1 faa c 25: R[I] A[I][I+1] A[I][I] 26: para K = 1 at n faa e c 27: A[K][I] A[K][I+1]-(A[K][I] R[I]) 28: mpara 29: II-1 30: menquanto 31: devolva R 32: m{funo} ca Este algoritmo, pela sua complexidade vale alguma explicao. Seja o seguinte sisca tema: A soluo de um sistema de equaes lineares, do tipo ca co 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 estratgia de diagonalizao, como segue. Seja e ca 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 ca 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 ca 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 ca 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: 11: 12: 13: 14: 15:
verso de 10 de fevereiro de 2008 a

455

88-08, Pedro Kantek

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 equaes e 2 co incgnitas, x e y. o Agora o processo se repete at o nal. 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, ca: 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 ca 2x = 2 E nalmente x = 1.

40.1

Exerc cio 1

Resolva (a mo ou via computador, voc decide ;-) o seguinte sistema de 8 equaes a e co lineares a 8 incgnitas: 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 variveis encontradas: a x1 x2 x3 x4 x5 x6 x7 x8

40.2

Exerc cio 2
voc decide ;-) o seguinte sistema de 8 equaes e co -3 1 1 3 -1 4 1 -2 456 41 104 43 38 51 89 60 8
verso de 10 de fevereiro de 2008 a

Resolva (a mo ou via computador, a lineares a 8 incgnitas: o 2 1 1 2 2 2 1 2 1 3 4 6 1 -1 2 1 2 2 3 -3 2 5 2 1 -2 -2 2 1 3 2 -4 -1 4 4 5 1 -1 2 1 3 1 2 -2 -3 5 3 2 -2 1 -1 2 2 1 -4 4 -2


88-08, Pedro Kantek

CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES E, informe o valor das 8 variveis encontradas: a x1 x2 x3 x4 x5 x6 x7 x8

40.3

Exerc cio 3

Resolva (a mo ou via computador, voc decide ;-) o seguinte sistema de 8 equaes a e co lineares a 8 incgnitas: 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 variveis encontradas: a x1 x2 x3 x4 x5 x6 x7 x8

40.4

Exerc cio 4

Resolva (a mo ou via computador, voc decide ;-) o seguinte sistema de 8 equaes a e co lineares a 8 incgnitas: 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 variveis 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

verso de 10 de fevereiro de 2008 a

457

88-08, Pedro Kantek

CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES

88-08, Pedro Kantek

458

verso de 10 de fevereiro de 2008 a

Cap tulo 41

Exerc cios prticos: 135 - O a cubo RUBIK


Criado por Erno Rubik em 1974, tem um mecanismo simples que surpreende tanto do ponto de vista mecnico ao estudar seu interior, como pela complexidade das a combinaes que se conseguem ao girar suas faces. co O invento, descendente de um prottipo que tinha apenas duas faces um tipo de o e quebracabeas que consiste de um cubo em que cada uma das 6 faces est dividida em c a 9 peas. Elas se articulam graas ao mecanismo da pea interior central que ca oculta c c c dentro do cubo. O resto das peas so vis c a veis e pode-se observar 3 tipos de peas que c no perdem sua condio, a despeito de qualquer movimento que o cubo sofra. So elas: a ca a Central As 6 peas centrais denem a cor da face. Mantm sempre a orientao relativa c e ca entre elas. No modelo original o branco se opunha ao amarelo, o vermelho ao laranja e o verde ao azul. Aresta Peas formadas por 2 cores, em nmero de 12. c u Vrtices Peas dos cantos do cubo, em nmero de 8 e formadas por 3 cores. e c u Representao ca Para representar em 2D um cubo (que 3D), vai-se fazer o seguinte mapeamento: e 1. As 6 cores sero representadas como 123456. a 2. Cada instncia 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

ou

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

CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - O CUBO RUBIK 3. Note que as 6 peas centrais das 6 faces so xas e no mudam de orientao entre c a a ca si (umas em relao ` outras). ca a

4. Finalmente, para economia de papel, a congurao acima vai ser apresentada ca 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 viro a seguir, considere o estado inicial como a

123 456 789 abc ABC jkl JKL def DEF mno MNO ghi GHI pqr PQR stu vxy z()

Podem-se denir os seguintes operadores:


88-08, Pedro Kantek

460

verso de 10 de fevereiro de 2008 a

CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - O CUBO RUBIK nome 1=cubo vertical antihorrio a como cou 369 258 147 JKL abc ABC jkl MNO def DEF mno 5=face PQR ghi GHI pqr frontal antizvs horrio a (xt )yu

2=cubo frontal antihorrio a

3=cubo lateral horrio a antihorrio a (observador a ` esquerda)

lor knq jmp 369 CFI uy) PMJ 258 BEH tx( QNK 6=face 147 ADG svz ROL lateralD cfi antibeh horrio a adg (observador ` a esABC querda) DEF GHI cfi stu pmj 987 beh vxy qnk 654 7=face adg z() rol 321 superior RQP horrio a ONM LKJ

123 456 jmp ab9 CFI ukl JKL de8 BEH tno MNO nome gh7 ADG sqr PQR 8=face frontal cfi horrio a vxy z()

como cou 123 456 ifc abs GDA 7kl JKL det HEB 8no MNO ghu IFC 9qr PQR pmj vxy z()

4=face superior antihorrio 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 horrio 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

Observao importante: Note que quando ocorrem giros na face direita, a posio do ca ca operador SEMPRE a esquerda do cubo. Se tiver dvidas sobre este operador, olhe as e u tabelas acima nos casos 3, 6 e 9.

verso de 10 de fevereiro de 2008 a

461

88-08, Pedro Kantek

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 posio L= 2 e C= a a ca 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 posio L= 2 e C= a a ca 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 m de resolv-lo ? e

Exerc cio 2 1. Aplique o operador 8 ao cubo IHA KNd g43


88-08, Pedro Kantek

462

verso 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 posio L= 1 e a a ca 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 posio L= 3 e a a ca 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 m de resolv-lo ? e

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)
verso de 10 de fevereiro de 2008 a

463

88-08, Pedro Kantek

CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - O CUBO RUBIK e obter como resposta um cubo que ter, na face esquerdo na posio L= 1 e a a ca 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 posio L= 2 e a a ca 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 m 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 posio L= 1 e C= a a ca 1 o valor 2. Aplique o operador 6 ao cubo
88-08, Pedro Kantek

464

verso de 10 de fevereiro de 2008 a

CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - 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, na face frontal na posio L= 3 e C= a a ca 1 o valor 3. 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 m de resolv-lo ? e

Respostas 1 2 3 4 4 A g L K r B i 9 4 7 9 7 9 7 5

verso de 10 de fevereiro de 2008 a

465

88-08, Pedro Kantek

CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - O CUBO RUBIK

88-08, Pedro Kantek

466

verso de 10 de fevereiro de 2008 a

Cap tulo 42

Exerc cios prticos: 139 a Ostras


42.1 A fazenda de ostras de Zing Zhu

Zing Zhu possue uma ilha que vem a ser um pedao de terra chata. Todos os dias, c quando a mar sobe a ilha inundada pela gua do mar. Depois de muito pensar e e e a tambm pedir conselhos a alguns membros de sua fam e lia, Zing Zhu decidiu estabelecer uma fazenda de ostras na ilha. Ele usar um sosticado sistema de cercas de plstico, ` a a a prova dgua para controlar as reas que devero ser inundadas e as reas que devero a a a a a car secas durante a subida da mar. As cercas usadas pelo Zing sero verticais ou e a horizontais e vm em tiras que tem diversas alturas e comprimentos. Duas cercas podem e se interceptar em um ponto no necessariamente no seu nal ou comeo. a c Voc foi contactado pelo Zing para calcular, dada a altura que a mar vai alcanar e e c e a posio e altura de todas as cercas, a rea total de terra que NAO vai ser inudada ca a durante a mar alta. Voc pode assumir que a largura das cercas muito na quando e e e comparada aos tamanhos de terra envolvida e para o propsito do clculo da rea total, o a a as cercas podem ser consideradas como tendo largura zero. A entrada do algoritmo contm diversas linhas: a primeira linha de um caso de teste e contm um inteiro N indicando o nmero de cercas na ilha (1 N 20). Cada uma das e u N prximas linhas contm 5 inteiros: X1 , Y1 , X2 , Y2 e H representando respectivamente o e o ponto de in de uma cerca (X1 , Y1 ) e o ponto de m (X2 , Y2 ), e a altura da cerca. cio A ultima linha da entrada contm um inteiro W que representa a altura da mar. As e e coordenadas so dadas em metros, as alturas em cent a metros. Alm disso X1 = X2 ou e Y1 = Y2 (mas no ambos). 500 X1 , Y1 , X2 , Y2 500; e 1 W , H 1000. O m a dos dados indicado por N = 0 e A sa da Para cada conjunto de dados de entrada, o programa deve devolver a quantidade total de rea de ilha que vai permanecer seca (i., que no vai ser inundada). a e a Exemplo Seja a entrada 4 -20 20 20 20 200 20 20 20 -20 200 0 0 0 20 100 467

CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - OSTRAS -10 0 20 0 200 99 0 E a resposta neste caso dever ser 400 m2 . a

42.1.1

Resolvendo...

Este problema apresenta algumas novidades interessantes. A primeira, ele ter sido e extra da lista de problemas da maratona de programao da ACM de 2004. E uma do ca disputa mundial com fases locais, regionais e a fase nal que envolve o planeta. So a 6 problemas similares a este com cerca de 5 horas para sua soluo em equipes de 4 ca pessoas mais um tcnico. e A segunda, que nem to novidade assim, mas que no costuma freqentar as nossas e a a u aulas o fato de no existir nenhuma estratgia evidente para resolver o problema. e a e Embora a vida real a fora seja exatamente assim, os nossos problemas de sala de aula podem dar a entender que o mundo certinho, sempre tem soluo, a soluo unica e e ca ca e 100% correta e assim por diante. Isso no verdade. a e A terceira observao, tambm importante, que para problemas complexos nem ca e e sempre se acha uma soluo 100% correta, e mais do que isso, conhece-se de antemo ca a ONDE o algoritmo achado falha e quais problemas ele deixa de resolver. Age-se assim, quando na falta de soluo melhor, usa-se a que se tem, na expectativa de que uma ca quase-soluo melhor do que nenhuma-soluo. ca e ca A proposta de soluo que vai ser sugerida aqui a de construir uma nova matriz de ca e dimenses 2 L + 1 e 2 C + 1, onde L e C so o nmero de linhas e colunas da matriz o a u proposta originalmente pelo problema. Age-se assim para criar um espao adicional onde c representar as cercas (que lembrando, no problema original tm largura 0). Nesta nova e matriz, as cercas so dispostas, e a seguir, para cada espao da matriz feita uma anlise a c e a de submerso. Vem em nosso socorro o fato de que as cercas so verticais ou horizontais a a apenas. Assim, s 4 direes precisam ser examinadas. Para cada ponto examinado, o co escreve-se em qual altura de mar ele car submerso (na verdade, o menor valor dos 4 e a retornados na pesquisa acima). Esta estratgia pressupe que aps a primeira cerca est e o o a o mar (o que nem sempre pode ser correto, aqui a falha deste algoritmo). Fica como sugesto melhorar este aspecto. a Estabelecido este valor, hora de retornar ` matriz original (j sem as cercas), mas e a a com os valores de cota de submerso. Agora, a resposta ao pedido apenas uma operao a e ca de comparao (da cota com a altura da mar) e de contagem de metros quadrados, j ca e a que lembrando, todas as dimenses so de nmeros inteiros. o a u

42.1.2

Truques usados na implementao ca

Para passar das coordenados do mundo (500 X1 , Y1 , X2 , Y2 500) para as coordenadas 1..L e 1..C da matriz de trabalho, usam-se as expresses: 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 clculo da ESCADA que serve para inverter a ordem de crescimento das a linhas (no mundo cartesiano, as linhas crescem de baixo paa cima e no mundo da programao crescem de cima para baixo. ca Feita esta converso, os dados do problema (as cercas) so transpostas ` suas novas a a a coordenadas da matriz. E um mapeamento simples.
88-08, Pedro Kantek

468

verso de 10 de fevereiro de 2008 a

CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - OSTRAS Nas linhas (e colunas) mpares desta nova matriz est o espao para a colocao a c ca das cercas. Nas linhas (e colunas) pares esto representados os metros quadrados da a fazenda. Lanadas as cercas, anda-se nas linhas e colunas pares, olhando para cima, direita, c baixo e esquerda, olhando o que (altura) impede a entrada da gua. O menor desses a quatro valores estabelece quando a gua vai chegar. a Toda a fazenda assim mapeada. Depois, pela retirada das cercas (linhas e colunas e mpares) o que sobra rea util da fazenda. ea

42.2

Exerc cio 1

Na instncia a seguir, o problema foi ligeiramente adaptado `s caracter a a sticas usuais da fam VIVO de problemas. O enunciado segue mais ou menos o mesmo. lia Suponha ento uma fazenda de ostras, cujas cercas tm a seguinte distribuio a e ca 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

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 m2

42.3

Exerc cio 2

Na instncia a seguir, o problema foi ligeiramente adaptado `s caracter a a sticas usuais da fam VIVO de problemas. O enunciado segue mais ou menos o mesmo. lia Suponha ento uma fazenda de ostras, cujas cercas tm a seguinte distribuio a e ca 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

O senhor Zing Zhu quer saber qual a rea seca quando a mar chegar a a e
verso de 10 de fevereiro de 2008 a

469

88-08, Pedro Kantek

CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - OSTRAS altura mar e 70 cm 90 cm m2 170 cm m2 230 cm m2 a rea seca m2

42.4

Exerc cio 3

Na instncia a seguir, o problema foi ligeiramente adaptado `s caracter a a sticas usuais da fam VIVO de problemas. O enunciado segue mais ou menos o mesmo. lia Suponha ento uma fazenda de ostras, cujas cercas tm a seguinte distribuio a e ca 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 70 cm 90 cm m2 150 cm m2 230 cm m2 a rea seca m2

42.5

Exerc cio 4

Na instncia a seguir, o problema foi ligeiramente adaptado `s caracter a a sticas usuais da fam VIVO de problemas. O enunciado segue mais ou menos o mesmo. lia Suponha ento uma fazenda de ostras, cujas cercas tm a seguinte distribuio a e ca 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
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - 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 m2

42.6
1 2 3 4

Respostas
90 72 90 99 24 12 63 55 0 0 0 30 0 0 0 0

verso de 10 de fevereiro de 2008 a

471

88-08, Pedro Kantek

CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - OSTRAS

88-08, Pedro Kantek

472

verso de 10 de fevereiro de 2008 a

Cap tulo 43

Exerc cios prticos: 144 a romanos


O sistema de numerao romana desenvolveu-se na antiga Roma e utilizou-se em todo ca o seu imprio. Neste sistema as cifras escrevem-se com determinadas letras, que repree sentam os nmeros. As letras so sempre maisculas, j que no alfabeto romano no u a u a a existem as minsculas. u As equivalncias dos numerais romanos com o sistema decimal so 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 numerao romano as letras devem situar-se da ordem de maior valor ca para a de menor valor. No se devem escrever mais de trs I, ou trs X, ou trs C a e e e em qualquer nmero. Se estas letras se situam ` frente de um V, um L, ou um D, u a respectivamente, subtrai-se o seu valor ` cifra das ditas letras. a Os romanos desconheciam o zero, introduzido posteriormente pelos rabes, de forma a que no existe nenhuma forma de representao deste valor. a ca Para cifras elevadas os romanos utilizavam um h fen colocado por cima da letra correspondente. O h fen multiplicava o valor da letra por 1.000. Por exemplo, um Ccom h fen superior correspondia ao valor 100.000 (100 1.000), e um Mcom h fen superior correspondia ao valor 1.000.000 (1.000 1.000). Este mtodo permitia escrever e cifras realmente altas. Apresentam-se vrios exemplos de nmeros romanos, com as suas equivalncias 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 bsico superior a todos os numerais roa e manos bsicos de menor valor e cada numeral romano bsico subordinado a todos os a a e numerais romanos bsicos de maior valor. a Uma caracter stica importante que os nmeros romanos no so unicos. Por exeme u a a plo, podemos considerar corretas as seguintes representaes de 499: CDXCIC, LDVLIV, co XCIX, VDIV e nalmente ID. 473

CAP ITULO 43. EXERC ICIOS PRATICOS: 144 - ROMANOS

43.0.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:

Converso de romano para arbico a a

inteiro funo R2A (cadeia NROM[n]) ca cadeia CADAUX [7] IVXLCDM inteiro VALAUX[7] 1 5 10 50 100 500 1000 inteiro SUM, I, K, TAM TAM tamanho da cadeia NROM SUM 0 I1 enquanto I < TAM faa c K1 enquanto CADAUX[K] = NROM[I] faa c K++ menquanto se (I+1)TAM ento a M1 enquanto CADAUX[M] = NROM[I+1] faa c M++ menquanto se VALAUX[K] < VALAUX[M] ento a SUM SUM + VALAUX[M] - VALAUX[K] II+2 seno a SUM SUM + VALAUX[K] II+1 mse seno a SUM SUM + VALAUX[K] II+1 mse menquanto devolva SUM m {funo} ca

Exerc cios de aquecimento Converta para arbico: a XVI XXXVII XLVI XCVI CI CDXCVI CIV XXV XLV MDXI

43.0.2
1: 2: 3: 4:

Converso de arbico para romano a a

(cadeia RESP[10]) funo ARD (inteiro A, cadeia LETRAS[3]) ca cadeia AUX[10] inteiro K se A 0 ento a 474
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 43. EXERC ICIOS PRATICOS: 144 - 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:

se A=0 ento a devolva seno se A=1 ento a a devolva LETRAS[1] seno se A=2 ento a a devolva LETRAS[1]+LETRAS[1] seno se A=3 ento a a devolva LETRAS[1]+LETRAS[1]+LETRAS[1] seno se A=4 ento a a devolva LETRAS[1]+LETRAS[2] seno se A=5 ento a a devolva LETRAS[2] seno se A=6 ento a a devolva LETRAS[2]+LETRAS[1] seno se A=7 ento a a devolva LETRAS[2]+LETRAS[1]+LETRAS[1] seno se A=8 ento a a devolva LETRAS[2]+LETRAS[1]+LETRAS[1]+LETRAS[1] seno se A=9 ento a a devolva LETRAS[1]+LETRAS[3] mse seno a K1 enquanto K < abs(A) faa c AUX[K] LETRA[1] K++ menquanto devolva AUX mse m{funo} ca (cadeia RESP[10]) funo A2R (inteiro V) ca inteiro D cadeia AUX[10] AUX D V 1000 V V - D 1000 AUX AUX + (-D) ARD M D V 100 V V - D 100 AUX AUX + D ARD CDM D V 10 V V - D 10 AUX AUX + D ARD XLC AUX AUX + V ARD IVX devolva AUX m{funo} ca

verso de 10 de fevereiro de 2008 a

475

88-08, Pedro Kantek

CAP ITULO 43. EXERC ICIOS PRATICOS: 144 - ROMANOS Exerc cios de aquecimento Converta para romano: 38 44 35 104 496 107 665 388 1002 843

43.1

Exerc cio 1

Implemente os programas acima e a seguir responda:

Converta para arbico Responda: a CCIX CDIX MMCCXCV DCCXL CCCXIII MMDCCCXXIX

Converta para romano Responda: 2404 382 187 85 466 2510

43.2

Exerc cio 2

Implemente os programas acima e a seguir responda:

Converta para arbico Responda: a CDLXVII DCCCXCIII MCDLVIII CDLXV DXIX MDCX
88-08, Pedro Kantek

476

verso de 10 de fevereiro de 2008 a

CAP ITULO 43. EXERC ICIOS PRATICOS: 144 - ROMANOS Converta para romano Responda: 3402 844 805 410 198 3261

43.3

Exerc cio 3

Implemente os programas acima e a seguir responda: Converta para arbico Responda: a DCCXIX XLII MMDCCXCIII DCCCLXIV IV MMIX Converta para romano Responda: 2091 41 97 1931 547 859

43.4
1 2 3

Respostas

209, 409,2295, 740, 313,2829,MMCDIV,CCCLXXXII,CLXXXVII,LXXXV,CDLXVI,MMDX 467, 893,1458, 465, 519,1610,MMMCDII,DCCCXLIV,DCCCV,CDX,CXCVIII,MMMCCLXI 719, 42,2793, 864, 4,2009,MMXCI,XLI,XCVII,MCMXXXI,DXLVII,DCCCLIX

verso de 10 de fevereiro de 2008 a

477

88-08, Pedro Kantek

CAP ITULO 43. EXERC ICIOS PRATICOS: 144 - ROMANOS

88-08, Pedro Kantek

478

verso de 10 de fevereiro de 2008 a

Cap tulo 44

Exerc cios Prticos: 148 a diversos


44.1 Universidade de Pinguinhos / cubos

Estes dois exerc cios foram retirados da Maratona de Programao da ACM de 2005, ca onde apareceram com os nomes de Curso Universitrio e cubos coloridos. a H alguns anos atrs, a Universidade de Pinguinhos introduziu um novo sistema a a ex de crditos para os alunos ingressantes de cursos de graduao. No novo sistema vel e ca os alunos podem escolher as disciplinas que desejam cursar em um semestre com a unica restrio de no poderem cursar uma dada disciplina A sem antes terem cursado todas ca a as disciplinas que tiverem sido estabelecidas como pr-requisitos de A. Aps alguns e o semestres o reitor notou que muitos estudantes estavam sendo reprovados em muitas disciplinas, simplesmente porque os estudantes estavam cursando muitas disciplinas por semestre. Alguns estudantes chegavam a se matricular em at quinze disciplinas em um e semestre. Sendo muito sbio, este ano o reitor introduziu uma regra adicional limitando a o nmero de disciplinas que cada estudante pode cursar por semestre a um certo valor u N. Essa regra adicional, no entanto, fez com que os alunos cassem muito confusos na hora de escolher as disciplinas a serem cursadas em cada semestre. E a que voc entra e na estria. O reitor resolveu disponibilizar um programa de computador para ajudar os o alunos a fazerem suas escolhas de disciplinas, e solicitou sua ajuda. Mais precisamente, o reitor quer que o programa sugira as disciplinas a serem cursadas durante o curso da seguinte forma. A cada disciplina atribu uma prioridade. Se mais do que N e da disciplinas podem ser cursadas em um determinado semestre (obedecendo ao sistema pre requisitos), o programa deve sugerir que o aluno matricule-se nas N disciplinas de maior prioridade. Se N ou menos disciplinas podem ser cursadas em um determinado semestre, o programa deve sugerir que o aluno matricule-se em todas as disciplinas dispon veis. Portanto, dadas a descrio de pr-requisitos para cada disciplina, a prioridade de cada ca e disciplina, e o nmero mximo de disciplinas por semestre, seu programa deve calcular u a o nmero necessrio de semestres para concluir o curso, segundo a sugesto do reitor, e u a a a lista de disciplinas que o aluno deve matricular-se em cada semestre. Entrada A entrada, contm vrios casos de teste. Se uma disciplina no tem qualquer e a a pr-requisito ela denominada bsica - caso contrrio ela denominada avanada. A e e a a e c primeira linha de um caso de teste contm dois inteiros 1 N 100 e 1 M e 10, indicando respectivamente o nmero de disciplinas avanadas do curso e o nmero u c u mximo de disciplinas que podem ser cursadas por semestre. Cada uma das N linhas a 479

CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS seguintes tem o formato STRO K STR1 STR2 ... STRK onde STRO o nome de uma disciplina avanada, 1 K 15 o nmero de e c e u disciplinas que so pr-requisitos de STR0 e STR1, STR2, ... STRK so os nomes das a e a disciplinas que so pr-requisitos de STRO. O nome de uma disciplina uma cadeia com no a e e m nimo um e no mximo sete caracteres alfanumricos maisculos (A-Z e O-9). a e u Note que as disciplinas bsicas so aquelas que aparecem apenas como pr-requisito de a a e alguma disciplina avanada. Para concluir o curso, o aluno deve cursar (e passar!) toc das as disciplinas bsicas e avanadas. 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, e a que aparece por ultimo tem a menor prioridade. No h circular a a idade nos pr-requisitos (ou seja, se a disciplina B tem como pr-requisito a disciplina e e A ento A no tem B como pr-requisito, direta ou indiretamente). O nmero total de a a e u disciplinas no mximo igual a 200. O nal da entrada indicado por N = M = 0. e a e A entrada deve ser lida da entrada padro. a Sa da Para cada caso de teste da entrada seu programa deve produzir a sa na da seguinte forma. A primeira linha deve conter a frase Formatura em S semestres, onde S o nmero de semestres necessrios para concluir o curso segundo a sugesto do reitor. e u a a As S linhas seguintes (levem conter a descrio das disciplinas a serem cursadas em cada ca semestre, um semestre por linha, no formato mostrado no exemplo de sa abaixo. da Para cada semestre, a lista das disciplinas deve ser dada em ordem lexicogrca. a Denio: considere as cadeias de caracteres Sa = al a2 ... am e Sb = bl b2 ... bn . Sa ca precede Sb em ordem lexicogrca se e apenas se Sb no-vazia e uma das seguintes a e a condies verdadeira: co e
Sa uma cadeia vazia; e a1 < b1 na ordem O < l < 2 < ... < 9 < A < B < ... < Z ; a1 = b1 e a cadeia a2 a3 ...am precede a cadeia b2 b3 ...bn .

A sa deve ser escrita na sa padro. da da a Exemplo Exemplo de entrada 2 2 B02 3 A01 A02 A03 C01 2 B02 B01 Sada 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

3 2 ARTE2 1 ARTE1 PROG3 1 PROG2 PROG2 2 MAT1 PROG1 0 0

44.2

Exerc cio 1
480

1. Seja uma instncia composta de a


88-08, Pedro Kantek
verso de 10 de fevereiro de 2008 a

CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS 6 MEDI 4 ENGC 2 CALC 2 GEOA 3 PORT 4 INGL 3 0 0 4 ENGM DISC CARI LOGI ENGM CALE

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

2. Seja uma instncia 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

ENFE GEOM CALC MATB MATB ALEM INGL INFO

Resolva-a e informe: semestresmateria 1 do semestre 5

materia 1 do semestre 3

44.2.1

Cubos Coloridos

Crianas adoram brincar com pequenos cubos. Elas passam horas criando casas, prc e dios, etc. O irmozinho de Tomaz acabou de ganhar um conjunto de blocos coloridos a no seu aniversrio. Cada face de cada cubo de uma cor. Como Tomaz uma criana a e e c muito anal tica, ele decidiu descobrir quantos tiposdiferentes de cubos o seu irmoza inho ganhou. Voc pode ajud-lo? Dois cubos so 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. Entrada A entrada contm vrios casos de teste. A primeira linha do caso de teste contm um e a e inteiro N especicando o nmero de cubos no conjunto (1 < N < 1000). As prximas u o 3 N linhas descrevem os cubos do conjunto. Na descrio as cores sero identicadas ca a pelos nmeros de O a 9. A descrio de cada cubo ser dada em trs linhas mostrando as u ca a e cores das seis faces do cubo aberto, no formato dado no exemplo abaixo. No exemplo abaixo, as faces do cubo tm cores de 1 a 6, a face com cor 1 est no lado oposto da face e a com a cor 3, e a, face com cor 2 vizinha das faces 1, 3, 4 e 6, e est no lado oposto da e a face com cor 5. 1 2 4 5 6 3
verso de 10 de fevereiro de 2008 a

481

88-08, Pedro Kantek

CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS O nal da entrada indicado por N = 0. e A entrada deve ser lida da entrada padro. a Sa da Para cada caso de teste seu programa deve imprimir uma linha contendo um unico inteiro, correspondendo ao nmero de tipos de cubos no conjunto dado. u A sa deve ser escrita na sa padro. da da a Exemplos 3 0 0 7 2 3 1 0 1 2 3 7 0 3 0 0 2 1 , resposta = 2 7

44.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

Quantos cubos diferentes ?

44.4

Exerc cio 2
3 CALE ALGO BAND COBO PORT FISI

1. Seja uma instncia composta de a 6 CULI 4 ENGE 4 ENFE 3 GEOA 2 GEOM 2 ALEM 4 0 0

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. Seja uma instncia 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
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS ALGO 3 INGL CMAM ENFE 0 0 Resolva-a e informe: semestresmateria 1 do semestre 5

materia 3 do semestre 3

44.5
4 2 4 8 8 3 4

Exerc cio 2a
3 8 4 8 2 4 2 4 4 8 3 8 8 4 3 4 8 2

Quantos cubos diferentes ?

44.6

Exerc cio 3

1. Seja uma instncia 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. Seja uma instncia 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

verso de 10 de fevereiro de 2008 a

483

88-08, Pedro Kantek

CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS Resolva-a e informe: semestresmateria 2 do semestre 4

materia 1 do semestre 7

44.7
4 9 9 7 9 6 1

Exerc cio 3a
9 6 9 7 1 9 9 9 1 9 7 6 1 9 7 9 6 9

Quantos cubos diferentes ?

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

88-08, Pedro Kantek

484

verso de 10 de fevereiro de 2008 a

Cap tulo 45

Exerc cios Prticos: 151 a diversos


Estes exerc cios foram retirados da Maratona de Programao da ACM de 2005 e 2004. ca

45.1

A Piscina

O Centro Comunitrio decidiu construir uma nova piscina, em tempo para o vero do ano a a que vem. A nova piscina ser retangular, com dimenses X por Y e com profundidade a o Z. A piscina ser recoberta com um novo tipo de azulejo cermico de alta tecnologia que a a produzido em trs tamanhos distintos: 5 5, 15 15 e 30 30 (em cent e e metros). Cada azulejo desses tamanhos custa 2 centavos, 15 centavos e 50 centavos respectivamente. Os azulejos so de alta qualidade, feitos de um material que no pode ser cortado (ou a a seja, os azulejos devem ser usados inteiros). A Unica loja local que vende esse tipo de azulejo tem em estoque uma certa quantidade de azulejos de cada tamanho. Voc deve escrever um programa que determine se e o estoque de azulejos dispon na loja suciente para azulejar toda a piscina. Se o vel e estoque for suciente, seu programa deve determinar tambm o nmero de azulejos de e u cada tamanho que so necessrios para que o custo de azulejar a piscina seja o menor a a poss vel. Os azulejos devem ser usados para recobrir completamente toda a superf cie da piscina sem deixar qualquer espao sem azulejos e sem deixar sobras de azulejos transpasc sando as bordas da piscina. Entrada A entrada contm vrios casos de teste. Cada caso de teste composto por e a e duas linhas. A primeira linha contm trs nmeros reais X, Y e Z, representando as e e u dimenses e a profundidade da piscina, em metros, com preciso de uma casa decimal o a (0 < X, Y 50.0 e 0 < Z 2.0). A segunda linha contm trs nmeros inteiros P , M e e u e G, representando a quantidade dispon de azulejos de tamanho pequeno, mdio e vel e grande (0 P, M, G 2000000), respectivamente. O nal da entrada indicado por e X = Y = Z = 0. Sa da Para cada caso de teste da entrada seu programa deve produzir uma linha de sa da. Se poss e vel recobrir completamente a piscina com o estoque dispon vel, imprima uma linha com trs inteiros descrevendo respectivamente as quantidades de e azulejos pequenos, mdios e grandes para recobrir toda a piscina com o menor custo e 485

CAP ITULO 45. EXERC ICIOS PRATICOS: 151 - DIVERSOS poss vel. Caso contrrio, imprima uma linha contendo a palavra impossivel (note a a ausncia de acentuaao). e c Alguns exemplos Para as entradas 3.0 4.0 1.0 1000 1000 1000 a resposta dever ser a 752 0 268 3.0 3.0 0.9 300 300 300 a resposta dever ser a 0 0 220 12.5 12.5 1.6 5000 0 3000 a resposta dever ser a 4464 0 2501 3.0 3.0 1.0 300 300 300 0 0 0 a resposta dever ser a impossivel

45.2
5.0 1200 5.0 1300 4.1 900 0 0 0

Exerc cio 1
5.9 700 6.0 700 6.1 700 2.0 800 2.4 400 1.5 500

Seja a entrada

Resolva-as e informe: inst az. peq 1 2 3

az. mdio e

az. grande

88-08, Pedro Kantek

486

verso de 10 de fevereiro de 2008 a

CAP ITULO 45. EXERC ICIOS PRATICOS: 151 - DIVERSOS

45.3

Mgico a

Um mgico inventou um novo truque de cartas e apresentou-o na prestigiosa American a Conference of Magicians (ACM). O truque muito interessante e ele recebeu o prmio e e Best Magic Awardna conferncia. O truque requer 3 participantes: o mgico, um exe a pectador e um assistente. Durante o truque o expectador deve embaralhar um conjunto de 52 cartas (baralho completo sem os coringas) e depois escolher 5 cartas aleatrias. o Elas so passadas ao assistente, sem que o mgico as veja. Aps mostrar 4 dessas cartas a a o ao mgico, ele magicamente adivinha a quinta carta. a O truque funciona pelo fato do assistente, depois de olhar as 5 cartas, escolher quais quatro sero mostradas, e ele as escolhe de modo a codicar a informao para o mgico a ca a sobre a quinta carta. O cdigo baseado em uma dada ordenao do baralho. As cartas o e ca so ordenadas primeiro por naipe e depois pelo seu valor de face. a Usar-se- a seguinte ordem a
< < < (ouros, espadas, copas e paus); e

A < 2 < ... < 9 < T < J < Q < K, onde A=As, T =10, J=valete, Q=dama e K=rei. Assuma que o expectador escolheu as cartas J, 8, 7, 8 e Q (valete de copas, 8 de paus, 7 de ouros, 8 de espadas e dama de ouros). A estratgia do assistente a e e seguinte:
Ache o naipe n que aparece ao menos duas vezes no conjunto de cartas escolhidas (ouros, no exemplo). Se mais do que um naipe aparecem duas vezes, escolha o de menor ordem. esconda a carta x, do naipe n que esteja a no mximo 6 posies ` direita na a co a tabela c clica A < 2 < ... < T < J < Q < K < A < 2 < ... de outra carta y do mesmo naipe. Isto ser sempre poss a vel, j que existem apenas 13 cartas do a mesmo naipe. (No exemplo, o assistente esconde a dama de ouros). Se duas ou mais cartas satisfazem o critrio acima, escolha a que tem o menor valor de face. e mostre y ao mgico. Neste ponto ele saber o naipe da carta escondida (o mesmo a a de y). Saber tambm que o valor da carta escondida no est a mais de 6 posies a e a a co a ` direita de y. com as 3 cartas sobrantes, o assistente codica um nmero entre 1 e 6. Para fazer u isto ele ordena as trs cartas (digamos z1 , z2 e z3 ) em ordem, onde z1 < z2 < e z3 . Cada uma das 6 ordens poss veis em que as cartas so mostradas deve ser a interpretada pelo mgico como sendo um nmero: a u

z1 , z2 , z3 signica 1, z1 , z3 , z2 signica 2, z2 , z1 , z3 signica 3, z2 , z3 , z1 signica 4, z3 , z1 , z2 signica 5, z3 , z2 , z1 signica 6. Desta maneira, mostrando as 4 cartas, em uma determinada ordem, ele informa ao mgico qual a quinta carta. a e Sua tarefa desenvolver um programa que receba as 4 cartas mostradas pelo assise tente e informe ao mgico qual a quinta carta. a
verso de 10 de fevereiro de 2008 a

487

88-08, Pedro Kantek

CAP ITULO 45. EXERC ICIOS PRATICOS: 151 - DIVERSOS Entrada A entrada contm diversas instncias. A primeira linha contem N , onde e a N a quantidade de instncias que viro a seguir (1 N 10000). Cada instncia e a a a composta por uma unica linha na qual esto 4 cartas separadas por brancos. Cada e a carta tem 1 caracteres para seu valor e um caracter para o seu naipe, como visto acima. As cartas vem na ordem em que so apresentadas pelo assistente. a Sa da A sa deve ser composta pela quinta carta. da Exemplos Para a entrada 2 7, 8, 8, J T, 2, A, 5 o programa dever responder Q e A, respectivamente. a

45.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.5
5.0 900 4.2 1000 4.5 1200 0 0 0

Exerc cio 2
6.5 800 6.4 600 5.9 900 1.7 300 2.3 900 2.4 1000

Seja a entrada

Resolva-as e informe: inst az. peq 1 2 3

az. mdio e

az. grande

88-08, Pedro Kantek

488

verso de 10 de fevereiro de 2008 a

CAP ITULO 45. EXERC ICIOS PRATICOS: 151 - DIVERSOS

45.6

Exerc cio 2a

Seja a entrada 3 5 Q Q 7 5 6 Q K 8 4 T K Resolva-a e informe: inst1 inst2 inst3

45.7
5.0 1100 4.5 1400 4.9 1100 0 0 0

Exerc cio 3
6.1 500 5.9 700 5.9 800 1.9 800 1.9 900 2.0 1000

Seja a entrada

Resolva-as e informe: inst az. peq 1 2 3

az. mdio e

az. grande

45.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

verso de 10 de fevereiro de 2008 a

489

88-08, Pedro Kantek

CAP ITULO 45. EXERC ICIOS PRATICOS: 151 - DIVERSOS

45.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

1 809 1a 6O 2E JP 2 -1 2a 9E 7E JC 3 -1 3a QE 3O 3C

88-08, Pedro Kantek

490

verso de 10 de fevereiro de 2008 a

Cap tulo 46

Exerc cios Prticos: 152 a Regata de cientistas e Luzes da Festa


46.1 Exerc cio 1

Este exerc foi retirado da Maratona de Programao da ACM de 2005. cio ca

46.2

Regata de cientistas

Todos os anos desde 1996, cientistas da computao do mundo todo se encontram para ca a famosa Regata dos Cientistas. A competio consiste em uma corrida de barcos ca com obstculos pelo oceano, onde o objetivo de cada equipe , partindo de um ponto a e em comum, alcanar o ponto de chegada sem que nenhum obstculo seja tocado ou c a transpassado. Uma equipe que toca ou transpassa um obstculo automaticamente a e desclassicada. A equipe vencedora aquela que primeiro atinge o ponto de chegada (o e ponto de chegada distinto do ponto de in e cio). Voc foi contratado pela equipe brasileira e para desenvolver um programa que calcule o comprimento da menor rota vlida poss a vel do ponto de partida ao ponto de chegada. O oceano considerado um plano innito, e onde cada obstculo localizado em uma posio xa e representado por um segmento a e ca de reta dado pelos seus dois extremos (x1 , y1 ) e (x2 , y2 ). Os barcos so adimensionais, a representados por um ponto no plano e os obstculos possuem espessura desprez a vel. Os obstculos esto dispostos de tal forma que os mesmos no se interceptam. De forma a a a similar, os pontos de in e chegada da competio no so interceptados por nenhum cio ca a a obstculo. a Entrada A entrada composta por vrios casos de teste. A primeira linha de um e a caso de teste contm 5 nmeros inteiros xi , yi , xf , yf , n, representando respectivamente e u as coordenadas do ponto de in (xi , yi ), as coordenadas do ponto de chegada (xf , yf ) cio e a quantidade de obstculos n (n 150). Cada uma das n linhas seguintes de um caso a de teste corresponde a quatro nmeros inteiros (x1 , y1 , x2 , y2 ) que so as coordenadas u a dos dois extremos de um obstculo. Considere que as coordenadas x, y de qualquer a ponto, satisfazem 5000 x, y 5000. O nal da entrada representada por uma e linha contendo xi = yi = xf = yf = n = 0. 491

CAP ITULO 46. EXERC ICIOS PRATICOS: 152 - REGATA DE CIENTISTAS E LUZES DA FESTA Sa da Para cada caso de teste, imprima uma linha contendo o comprimento da menor rota vlida poss a vel, arredondada para duas casas decimais. Exemplos 0 5 0 5 0 0 10 0 1 -1 5 1 0 10 0 1 0 5 1 0 0 0 0

As respostas a estes dois casos so 10.20 e 10.00 respectivamente. a

46.3

Iluminao da festa ca

Este exerc foi retirado da Maratona de Programao da IOI de 1998. cio ca Na prxima nal da IOI, haver uma festa de congraamento, para comemorar as o a c premiaes. Nesta festa, ter-se- uma iluminao ferica que precisa ser controlada. co a ca e A iluminao ser composta por N lmpadas. No in ca a a cio da festa, todas as lmpadas a comeam acesas. Para ajustar o acende-apaga, h 4 botes cujos comportamentos so: c a o a boto 1 Todas as lmpadas trocam de estado, ou seja as acesas apagam e as apagadas a a acendem. boto 2 Trocam de estado as lmpadas de nmero a a u mpar (1, 3, ...) boto 3 Trocam de estado as lmpadas de nmero par (2, 4, ...) a a u boto 4 Trocam de estado as lmpadas de cujo nmero obedece ` regra 3K + 1, com a a u a K 0, ou seja as lmpadas 1, 4, 7, ... a Cada vez que um dos botes pressionado, incrementa-se um contador C, que no in o e cio sempre contm o valor 0 (zero). Voc deve idealizar um algoritmo que receba infore e maoes de entrada conforme descritas baixo e mostre quais as conguraes poss c co veis de lmpadas acesas e apagadas so poss a a veis. Entrada A entrada composta por 4 linhas, a saber: e 1. A primeira linha contm o nmero N de lmpadas (10 N 100) e u a 2. A segunda, contm o valor nal do contador C de botes (1 C 10000) e o 3. A terceira contm uma seqncia de nenhuma, uma ou duas lmpadas que devero e ue a a estar ACESAS ao nal. A seqncia termina com -1. ue 4. A ultima contm uma seqncia de nenhuma, uma ou duas lmpadas que devero e ue a a estar APAGADAS ao nal. A seqncia termina com -1. ue Sa da A sa dever ter todas as conguraes poss da a co veis de serem alcanadas aperc tando C vezes algum dos quatro botes e que satisfaam as restries de aceso e apagado o c co da entrada. Por exemplo, supondo a entrada 12 3 1 6 -1 2 -1
88-08, Pedro Kantek

492

verso de 10 de fevereiro de 2008 a

CAP ITULO 46. EXERC ICIOS PRATICOS: 152 - REGATA DE CIENTISTAS E LUZES DA FESTA Sugere que haver 12 lmpadas, os botes sero pressionados 3 vezes, e ao nal as a a o a lmpadas 1 e 6 devero estar acesas e a lmpada 2 dever estar apagada. Naturalmente, a a a a as lmpadas no citadas aqui, podero estar em qualquer estado. a a a Outro exemplo, dada a entrada: 11 3 4 8

9 -1

-1

A resposta ser a 00111000111 Que corresponde `s aplicaes dos botes 1, 3 e 4. a co o

Para voc fazer e

Considere a seguinte entrada, 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

Considere a seguinte entrada para as luzes 11 3 3 7

6 10

-1 -1 regata 2 luzes

regata 1

46.4

Exerc cio 2

Regata de cientistas

Para voc fazer e

Considere a seguinte entrada, 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

verso de 10 de fevereiro de 2008 a

493

88-08, Pedro Kantek

CAP ITULO 46. EXERC ICIOS PRATICOS: 152 - REGATA DE CIENTISTAS E LUZES DA FESTA 130 190 0 70 90 0 140 240 0 40 10 0

Considere a seguinte entrada para as luzes 13 3 5 13

8 -1

-1 regata 2 luzes

regata 1

46.5

Exerc cio 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

Considere a seguinte entrada para as luzes 11 3 9 6

-1 10

-1 regata 2 luzes

regata 1

46.6

Exerc cio 4

Para voc fazer e

Considere a seguinte entrada, 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 494
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 46. EXERC ICIOS PRATICOS: 152 - REGATA DE CIENTISTAS E LUZES DA FESTA 30 150 220 0 100 60 80 0 80 180 290 0 40 30 0 0

Considere a seguinte entrada para as luzes 10 3 3 4

5 7

-1 -1 regata 2 luzes

regata 1

46.7
1 2 3 4

Respostas
247.61 318.28 288.44 280.18 295.70 276.87 254.30 278.03 01101101101 0110110110110 10101010101 0110110110 1 1 1 1 1 1 1 1 4 4 3 4

verso de 10 de fevereiro de 2008 a

495

88-08, Pedro Kantek

CAP ITULO 46. EXERC ICIOS PRATICOS: 152 - REGATA DE CIENTISTAS E LUZES DA FESTA

88-08, Pedro Kantek

496

verso de 10 de fevereiro de 2008 a

Cap tulo 47

Exerc cios prticos: 153a a Jogo do Retngulo a


Exerc extra da 17. IOI, Polnia 2005. cio do o

47.1

Jogo do retngulo a

Considere-se um jogo de 2 jogadores. H um retngulo x y, onde x e y so inteiros e a a a positivos. Cada jogador faz um corte no retngulo. e repassa o maior dos dois retngulos a a para que o adversrio faa o seu corte. O corte deve ser unico, vertical ou horizontal. Os a c retngulos resultados devem ambos ter dimenses inteiras. Se o corte dividiu o retngulo a o a em duas metades, uma delas descartada. O jogador que recebe um retngulo de 11, e e a que portanto no pode mais fazer cortes, perde o jogo. A tarefa escrever um programa a e que jogue e ganhe o jogo do retngulo. As dimenses x e y sero inteiros emtre 1 e a o a 100.000.000. Ao menos uma das dimenses maior do que 1. o e Quando o programa comea, ele recebe o retngulo original e deve fazer o primeiro c a corte. O maior pedao preservado e ento apresentado ao seu oponente. c e a Exemplo de interao: ca 1. O jogo comea com 4, 3. Voc deve jogar algo, digamos vertical, 1 e o novo retnc e a gulo 3, 3 e 2. Seu oponente joga horizontal, 1 e o novo retngulo 3, 2. a e 3. Nova jogada sua, digamos horizontal, 1 e ca 3, 1. 4. O outro joga vertical, 1 e ca 2, 1 5. Voc joga vertical, 1 e ca 1, 1, e voc acaba de ganhar o jogo e e Uma estratgia de soluo e ca Construa-se uma tabela, digamos 15 15, representando poss veis 225 tabuleiros (de dimenso mxima 15) cada. Assinale com um X a primeira posio perdedora, que a a ca e de acordo com a denio a 1, 1. Marque com uma o as posies vencedoras que ca co conduzem ` perdedora, no caso as posies 1, 2 e 2, 1. Marque a posio 2, 2 como a co ca perdedora, pois ela invariavelmente conduzir ` 1, 2 ou 2, 1 e estas so vencedoras. aa a Prossiga at montar o mapa completamente. Note que como a matriz absolutae e mente simtrica em relao ` diagonal principal (tanto faz usar a vertical ou a horizontal, e ca a 497

CAP ITULO 47. EXERC ICIOS PRATICOS: 153A - JOGO DO RETANGULO elas so intercambiveis), basta montar um dos tringulos (acima ou abaixo da diagonal a a a principal). 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Depois de ter preenchido este quadro, verique o que caracteriza as posies perdedoras. co Note que para que m e n sejam um retngulo perdedor, deve existir um inteiro k que a torne verdadeira a expresso a m + 1 = (n + 1) 2k . E baseada nesta frmula, que voc deve procurar a jogada a fazer. Use o algoo e ritmo: 1: funo JOGUE (inteiro M, N): inteiro ca 2: inteiro LIMM,LIMN,I,J,XX 3: LIMM M 2 4: LIMN N 2 5: I 1 6: enquanto (I LIMM) faa c 7: XX podeparar (M-I, N) 8: se XX = 1 ento a 9: jogue (M-(I+1)),N 10: caiafora 11: mse 12: I++ 13: menquanto 14: J 1 15: enquanto (J LIMN) faa c 16: XX podeparar (M, N-J) 17: se XX = 1 ento a 18: jogue M, N-(J+1) 19: caiafora 20: mse 21: J++ 22: menquanto{casos perdedores} 23: se M=1 N=1 ento a
88-08, Pedro Kantek

10 11 12 13 14 15

498

verso de 10 de fevereiro de 2008 a

CAP ITULO 47. EXERC ICIOS PRATICOS: 153A - 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:

perdi caiafora mse se x < 2 ento a jogue M,(N-1) // e seja o que Deus quiser seno a jogue (M-1), N // e seja o que Deus quiser mse mfuno ca funo podeparar (inteiro: A,B) : inteiro ca inteiro VOLTA, MAIOR, MENOR, K se A B ento a MAIOR A MENOR B seno a MAIOR B MENOR A mse K0 VOLTA 0 enquanto 2K MAIOR faa c se MAIOR = ((2K ) MENOR) + (2K ) 1 ento a VOLTA 1 K mse K++ menquanto retorne VOLTA mfuno ca

47.2

Exerc cio 1

1. Seguindo os algoritmos acima, faa o primeiro lance para c 39,30 Trate de ganhar o jogo ! Se for imposs ganhar esta instncia, responda PERDI vel a no quadro prprio. o 2. Idem para 18,37 3. E para 38,33 1 2 3

verso de 10 de fevereiro de 2008 a

499

88-08, Pedro Kantek

CAP ITULO 47. EXERC ICIOS PRATICOS: 153A - JOGO DO RETANGULO

47.3

Exerc cio 2

1. Seguindo os algoritmos acima, faa o primeiro lance para c 25,12 Trate de ganhar o jogo ! Se for imposs ganhar esta instncia, responda PERDI vel a no quadro prprio. o 2. Idem para 31,33 3. E para 25,32 1 2 3

47.4

Exerc cio 3

1. Seguindo os algoritmos acima, faa o primeiro lance para c 40,39 Trate de ganhar o jogo ! Se for imposs ganhar esta instncia, responda PERDI vel a no quadro prprio. o 2. Idem para 35,30 3. E para 37,18 1 2 3

47.5

Exerc cio 4

1. Seguindo os algoritmos acima, faa o primeiro lance para c 25,33 Trate de ganhar o jogo ! Se for imposs ganhar esta instncia, responda PERDI vel a no quadro prprio. o 2. Idem para
88-08, Pedro Kantek

500

verso de 10 de fevereiro de 2008 a

CAP ITULO 47. EXERC ICIOS PRATICOS: 153A - JOGO DO RETANGULO 31,35 3. E para 21,10 1 2 3

47.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

verso de 10 de fevereiro de 2008 a

501

88-08, Pedro Kantek

CAP ITULO 47. EXERC ICIOS PRATICOS: 153A - JOGO DO RETANGULO

88-08, Pedro Kantek

502

verso de 10 de fevereiro de 2008 a

Cap tulo 48

Exerc cios Prticos: 155a a Caminhos no tabuleiro e Descarga do vulco a


48.1 Exerc cio 1

Estes exerc cios foram baseados em similares pedidos na Olimp ada Espanhola de Informtica. a Caminhos Seja um tabuleiro de dimenses M N , onde 1 M 20 e 1 N 20, tal que cada o casa contenha uma letra maiscula. Aquela casa que est na linha M e na coluna N u a e identicada pela dupla (m, n). Duas casas diferentes (mi , ni ) e (mj , nj ) so adjacentes se para a primeira compoa nente:
|mi mj | 1 ou ento |mi mj | = M 1. a

A segunda componente tem expresso semelhante: a


|ni nj | 1 ou ento |ni nj | = N 1. a

Em outras palavras, so adjacentes todas as casas que rodeiam uma dada, imagia nando que no tabuleiro, a ultima la est unida ` primeira, e a mesma coisa para as a a colunas. No desenho a seguir, marca-se com um asterisco, as casas adjacentes ` (2,3), ` a a esquerda e (1,1) ` direita, ambas em tabuleiros 4 4. a - * * * - * - * - * - * * * - * - * * * - - - - - - * * - * Dada uma palavra A de k letras maisculas A = a1 , a2 , ...ak , k 1 diz-se que A est u a contida no tabuleiro se verdade que e
existe uma casa (m1 , n1 ) que contm a letra a1 e para cada letra a1 + 1, 1 i k, existe uma casa (mi+1 , ni+1 ) que contm ai+1 e sendo que (mi , ni ) e (mi+1 , ni+1 ) so adjacentes no tabuleiro e a

503

CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO A seqncia de casas (m1 , n1 ), ..., (mk , nk ) ser chamada de caminho de A no tabue a uleiro. Desta maneira, dado o tabuleiro 44 a seguir, as cadeias SOLA, HOLAe ADIOSesto a contidas nele, mas no ocorre o mesmo com GOZA, HORAnem HALA. a S I E O H O Z H A L E D Z G F I

No caso de SOLA, as casas que formam o caminho so (1, 1), (2, 2), (2, 3) e (3, 1). a Para HOLAso (1, 2), (2, 2), (2, 3), (1, 3). Para ADIOSo caminho (1, 3), (4, 3), (4, 4), (4, 1), (1, 1). a e Dado um tabuleiro com as caracter sticas citadas e uma palavra A composta de letras maisculas, se pede calcular o caminho de A. Quando construir o programa, pode-se u armar que A est contida no tabuleiro, e que o caminho A unico. 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,12);(11,12);(10,1);(9,2);(8,2);(8,1);(7,2) e (6,3). e Vulco a Neste caso se deseja simular o deslocamento da lava de um vulco ao largo da encosta a do mesmo. Representar-se- o vulco por uma superf retangular quadriculada. Para a a cie cada uma das casas, conhece-se a altura dela em relao ao n ca vel do mar, sendo este nmero entre 1 e 9. u O comportamento da lava se rege pelas seguintes regras: 1. A lava ue desde a casa na qual est situada a cratera do vulco a a 2. Dada uma casa alcanada pela lava, a mesma ue para qualquer um dos 8 vizinhos c que tem altura menor que a casa original. 3. A cada instante de tempo, a lava se desloca 1 casa nas 8 direes. co 4. No instante de tempo t=1, apenas 1 casa (a cratera) contm lava. e Pede-se a confeco de um mapa das encostas do vulco que identique os pontos ca a alcanados pela lava, em todos os instantes de tempo. c
88-08, Pedro Kantek

504

verso de 10 de fevereiro de 2008 a

CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO Entrada A entrada uma matriz de 12 linhas, contendo a altura dos 144 plats das e o encostas. Informa-se tambm a coordenada (linha,coluna) da cratera. e Sa da A quantidade de platos que a lava atinge, nos diversos instantes de tempo. 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,10), gerou os deslocamentos de lava: para t=1, Quantidade de plats imersos=1; para t=2, Q=7; para t=3, Q=11; para t=4, Q=16 e para t=5, o Q=17. Neste ponto, o programa pra, pois a lava no tem para onde ir. 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 vulco 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
verso de 10 de fevereiro de 2008 a

505

88-08, Pedro Kantek

CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - 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,coluna): 2 5 Pergunta-se quantos plats so atingidos nos instantes t=3, t=4 e t=5 ? o a

caminhos: linha e coluna da sexta letra?

vulco: a t=5?

em t=3, t=4 e

48.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 vulco 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
88-08, Pedro Kantek

506

verso de 10 de fevereiro de 2008 a

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

com a cratera disposta no plato (linha,coluna): 10 1 Pergunta-se quantos plats so atingidos nos instantes t=3, t=4 e t=5 ? o a

caminhos: linha e coluna da sexta letra?

vulco: a t=5?

em t=3, t=4 e

48.3

Exerc cio 3

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 vulco 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
verso de 10 de fevereiro de 2008 a

507

88-08, Pedro Kantek

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 plats so atingidos nos instantes t=3, t=4 e t=5 ? o a

caminhos: linha e coluna da sexta letra?

vulco: a t=5?

em t=3, t=4 e

48.4

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 vulco 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

508

verso 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 plats so atingidos nos instantes t=3, t=4 e t=5 ? o a

caminhos: linha e coluna da sexta letra?

vulco: 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

verso de 10 de fevereiro de 2008 a

509

88-08, Pedro Kantek

CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO

88-08, Pedro Kantek

510

verso de 10 de fevereiro de 2008 a

Cap tulo 49

Exerc cio prtico: 156 a Genoma e Palavras Cruzadas


49.1 Projeto Genoma

Um grande projeto mundial est em curso para mapear todo o material gentico do ser a e humano: o Projeto Genoma Humano. As molculas de DNA (molculas que contm e e e material gentico) 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 ocorrncias 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 ocorrncia: a diretae a complementar invertida. Uma a e ocorrncia direta quando a cadeia p aparece como subcadeia dentro de t. Por exemplo, e e se p = CATA e t = TCATATGCAAATAGCTGCATACCGA

ento p ocorre na forma direta na posio 2 e na posio 18 de t. Uma ocorrncia a ca ca e complementar invertida depende da seguinte correspondncia entre as letras do DNA: e A T e G C. Complementar o DNAsignica trocar as letras de uma cadeia de DNA seguindo essa correspondncia. Se complementarmos a cadeia CATA, e vamos obter GTAT. Mas alm de complementar, preciso tambm inverter, ou seja, de e e e GTAT obter TATG. E esta cadeia que dever ser procurada, no caso da ocorrncia e a e complementar invertida. Assim, se p e t so as mesmas cadeias do exemplo anterior, a ento p ocorre na forma complementar invertida na posio 4 de t. a ca 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 ocorrncias e e diretas e todas as ocorrncias complementares invertidas de p em t. e Entrada de Dados: A entrada contm vrios conjuntos de teste. Cada conjunto de e a teste composto por trs linhas. A primeira linha contm 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 contm a cadeia p, e a terceira e linha contm a cadeia t, onde p e t so compostas utilizando apenas os caracteres A, e a C, G e T. O nal do arquivo de testes indicado quando M = N = 0 (este ultimo e conjunto de testes no vlido e no deve ser processado). a e a a 511

CAP ITULO 49. EXERC ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS Exemplo de Entrada 2 4 AC TGGT 4 25 CATA TCATATGCAAATAGCTGCATACCGA 0 0

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 posio inicial de cada ocorrncia, ca e na forma direta, do padro p na seqncia t. Na segunda linha deve aparecer a lista, a ue em ordem crescente, com a posio inicial de cada ocorrncia, na forma complementar ca e invertida, do padro p na seqncia t. a ue

Exemplo de Sada Teste 1 ocorrencia direta: 0 ocorrencia complementar invertida: 3 Teste 2 ocorrencia direta: 2 18 ocorrencia complementar invertida: 4 (esta sada corresponde ao exemplo de entrada acima) Este exerc igual ao proposto na OBI99. cio e

49.2

Palavras Cruzadas

O conhecido passatempo de palavras cruzadas composto por uma grade retangular de e quadrados brancos e pretos e duas listas de denies. Uma das listas de denies co co 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 seqncia de dois ou mais caracteres do e ue alfabeto. Para resolver um jogo de palavras cruzadas, as palavras correspondentes `s a denies devem ser escritas nos quadrados brancos da grade. co As denies correspondem `s posies das palavras na grade. As posies so co a co co a denidas por meio de nmeros inteiros seqenciais colocados em alguns quadrados branu u cos. Um quadrado branco numerado se uma das seguintes condies vericada: (a) e co e tem como vizinho ` esquerda um quadrado preto e como vizinho ` direita um quadrado a a branco; (b) tem como vizinho acima um quadrado preto e como vizinho abaixo um quadrado branco; (c) um quadrado da primeira coluna ` esquerda e tem como vizinho e a ` direita um quadrado branco; d) um quadrado da primeira linha acima e tem como a e vizinho abaixo um quadrado branco. Nenhum outro quadrado numerado. A numere ao comea em 1 e segue seqencialmente da esquerda para a direita, de cima para ca c u baixo. A gura abaixo ilustra um jogo de palavras cruzadas com numerao apropriada. ca
88-08, Pedro Kantek

512

verso de 10 de fevereiro de 2008 a

CAP ITULO 49. EXERC ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS

Uma palavra horizontal escrita em uma seqncia 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 seqncia 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 seqncia 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 seqncia 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 especicao e ca 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 contm 2 linhas. Na primeira linha h dois inteiros e a positivos, M e N, que indicam respectivamente o nmero de linhas e o nmero de colunas u u do jogo de palavras cruzadas. A segunda linha contm os nmeros 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 nmero 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 sada corresponde ao exemplo de entrada acima) Apenas para referncia, eis como cou a numerao do tabuleiro acima (99 preto) e ca 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

verso 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 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 instncia) 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 instncia: 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.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 instncia) a Sejam os tabuleiros de palavras cruzadas
88-08, Pedro Kantek

514

verso 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 instncia: 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 instncia) 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 instncia: 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.6

Exerc cio 4

Para o problema do Genoma, seja a entrada:


verso de 10 de fevereiro de 2008 a

515

88-08, Pedro Kantek

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 instncia) 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 instncia: 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

88-08, Pedro Kantek

516

verso de 10 de fevereiro de 2008 a

Cap tulo 50

Exerc cio prtico 157 a


50.1 Trem ou Caminho? a

A produtora de refrigerantes CaraCola precisa enviar com freqncia grandes carregaue mentos para as suas distribuidoras em outros estados. Para isso ela pode utilizar uma transportadora que trabalha com caminhes ou uma transportadora que trabalha com o trens. As duas transportadoras competem agressivamente para conseguir o servio, mas c seus custos dependem do momento (por exemplo, se h ou no caminhes dispon a a o veis, etc.). A cada carregamento, a CaraCola consulta as duas transportadoras, que informam as condies de preo vigentes no momento, para o estado desejado. Sua tarefa co c escrever um programa que, baseado nas informaes das transportadoras, decida se o e co melhor enviar o carregamento por trem ou por caminho. e a As transportadoras informam os seus custos na forma de duas variveis, represena tando duas parcelas. Uma parcela um custo xo A que independe do peso do carregae mento, e a outra parcela um custo varivel B que depende do peso do carregamento, em e a kilogramas. A CaraCola utiliza o peso do carregamento para calcular o custo dos transporte por trem e por caminho e decidir qual empresa transportadora contratar. Por a exemplo, suponha que a transportadora por trem informa que o seu custo xo A = R$ e 450,00 e o seu custo por kilograma B = R$ 3,50. Suponha ainda que a transportadora e por caminho informa que seu custo xo A = R$ 230,00 e o seu custo por kilograma a e B = R$ 3,70. Neste caso, para um carregamento que pesa 2354 kg a CaraCola decide e que melhor fazer o envio por trem, pois 450 + 3, 50 2354 < 230 + 3, 70 2354. Se a e diferena entre os custos for menor do que R$ 1,00 a CaraCola prefere o transporte por c trem. Tarefa Sua tarefa escrever um programa que recebe como entrada vrios casos, e a cada um apresentando uma lista de custos, e determina se a CaraCola deve enviar o carregamento por trem ou por caminho. a Entrada de Dados A entrada contm vrios conjuntos de teste. Cada conjunto e a de teste composto por uma linha, que contm cinco valores. O primeiro valor um e e e nmero inteiro positivo K que representa o peso, em kilogramas, do carregamento. Os u quatro valores restantes so nmeros reais A, B, C e D que representam os custos a u informados pelas empresas de transporte. A e B representam respectivamente o custo xo e o custo varivel por kilograma informado pela empresa que utiliza trem. C e D a representam respectivamente o custo xo e o custo varivel por kilograma informado a pela empresa que utiliza caminho. Os custos so apresentados sempre com preciso de a a a dois algarismos decimais. O nal do arquivo de testes indicado quando K = 0 (este e ultimo conjunto de testes no vlido e no deve ser processado). a e a a Exemplo de Entrada 517

CAP ITULO 50. EXERC ICIO PRATICO 157 2354 1000 2327 0 450.00 411.50 325.00 3.50 2.85 3.10 230.00 411.50 556.50 3.70 2.85 3.00

Sa de Dados Para cada conjunto de teste do arquivo de entrada seu programa deve da produzir a informao 1=trem ou 2=caminho. ca a Exemplo de Sada: 1, 1 e 2 (corresponde ` entrada acima) a

50.2

RoboCoee

Dona Mercedes, a eciente funcionria responsvel pela distribuio de cafezinho na a a ca empresa RoboCamp, fabricante de robs industriais, vai aposentar-se em breve. Para o ocupar a funo de Dona Mercedes os engenheiros da empresa adaptaram um rob exca o istente, ao qual acoplaram uma mquina de caf. Para diminuir os custos de fabricao, a e ca o novo rob tem uma operao bem simples, sendo capaz de apenas trs movimentos o ca e bsicos: car parado (para que os empregados possam servir-se de caf), andar para a e a frente, e girar sobre o seu eixo (para colocar-se de frente para o seu prximo ponto o destino). A programao do rob feita atravs de uma seqncia de N pontos no plano, ca o e e ue numerados de 0 a N-1 (o rob desenvolvido no sobe escadas, mas felizmente a empresa o a ocupa um unico pavimento). Cada ponto determinado por coordenadas inteiras (X,Y). e O ponto i sempre distinto do ponto i+1, para 0 i < N, e o ponto N-1 distinto do e e ponto 0 (veja a regra 4 abaixo). O rob move-se a partir do ponto 0, atravs de todos os pontos dados, observando o e as seguintes regras: 1. O rob inicia no ponto 0 de frente para o ponto 1; o 2. O rob move-se sempre para a frente; o 3. Chegando ao ponto i (0 i N-1) o rob gira sobre seu eixo, no sentido do relgio, o o de um ngulo (0o < 360o), de modo a car de frente para o ponto (i+1) a mod N, e faz uma pausa para que os usurios possam servir-se de caf; a e 4. No nal, para completar o percurso, o rob movimenta-se do ponto N-1 para o o ponto 0, e gira de modo a car de frente para o ponto 1. Tarefa Sua tarefa escrever um programa que, dada a seqncia de N pontos no e ue plano que corresponde ` programao do rob, determina quantas voltas completas sobre a ca o o seu eixo o rob perfaz durante seu percurso. o Entrada de Dados Cada conjunto de teste corresponde a uma programao do ca rob. A linha de um conjunto de testes contm um inteiro positivo, N, que indica o o e nmero de pontos presentes no conjunto de teste, seguido por N pares de nmeros u u inteiros que correspondem ao valor das coordenadas X e Y de um ponto, separados por espao em branco (-1000 X 1000, -1000 Y 1000). O nal do arquivo de testes c indicado quando N = 0 (este ultimo conjunto de teste no vlido e no deve ser e a e a a processado). Exemplo de Entrada 4 , 1 1 , 1 0 , 0 0 , 0 1 4 , 2 -3 , 2 2 , -3 3 , -2 -1 0
88-08, Pedro Kantek

518

verso de 10 de fevereiro de 2008 a

CAP ITULO 50. EXERC ICIO PRATICO 157 Sa de Dados Para cada conjunto de teste do arquivo de entrada seu programa da deve indicar o nmero de rotaes completas efetuadas pelo rob durante seu percurso, u co o encontrado pelo seu programa. Exemplo de Sada: 1 e 3 (corresponde ` entrada) a

50.3

Restaurante

A unicoMP (Universidade Independente de Computao) possui vrios refeitrios que ca a o servem seus milhares de alunos e professores. Para melhorar o atendimento a unicoMP planeja fazer uma reforma nos refeitrios, mas para isso necessita saber qual o nmero o u mximo de pessoas que so atendidas simultaneamente em um mesmo refeitrio. Para a a o isso a unicoMP, que possui catracas eletrnicas, coletou os seguintes dados: o
Um vetor E, ordenado crescentemente, em que E[i] representa o instante de tempo em que a pessoa i entrou no restaurante; Um vetor S, em que S[i] representa o instante de tempo em que a pessoa i saiu do restaurante.

Os elementos de E e S so inteiros positivos que indicam o nmero de minutos a u transcorridos desde a abertura do restaurante. A entrada e a sa do restaurante se faz da por uma unica catraca, onde passa apenas uma pessoa por vez. Se acontecer de uma pessoa entrar e outra sair no mesmo minuto, quem entra tem a preferncia de uso da e catraca. Nos elementos de E no h valores repetidos. A mesma coisa para S. a a Tarefa Sua tarefa escrever um programa que, dados dois vetores de inteiros E e e S, ambos de comprimento igual a N, calcula o nmero mximo de pessoas que esto u a a presentes ao mesmo tempo dentro do restaurante. Entrada de Dados Cada conjunto de teste composto por trs linhas. A primeira e e linha contm um inteiro positivo, N, que indica o comprimento dos vetores E e S, cone forme descrito acima. A segunda linha do conjunto de teste contm os elementos do e vetor E, separados por espao em branco, e a terceira linha contm os elementos do vec e tor S, separados por espao em branco. O nal do arquivo de testes indicado quando c e N = 0 (este ultimo conjunto de testes no vlido e no deve ser processado). 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 nmero mximo de pessoas presentes simultaneamente no restaurante, u a encontrado pelo seu programa. Exemplo de Sada: 3 e 1 (corresponde ` entrada acima) a

50.4

Exerc cio 1
519

Transporte:
verso de 10 de fevereiro de 2008 a

88-08, Pedro Kantek

CAP ITULO 50. EXERC ICIO PRATICO 157 1471 1116 1975 0 0 Robot 5 -4 1, -2 2, -5 -3, 4 4 -1, -3 -2, 2 3, 4 -2 0, 1 3, -1 2, 0 0 Restaurante 12 4 7 13 14 11 3 6 12 14 10 4 9 14 19 0 0 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 2 -4, 0 -3 4 4 0 -2 930 824 900 1.34 1.48 1.75 308 270 290 3.27 2.49 1.56

Responda T1 T2

T3

Rb1 Rb2 Rb3

R1

R2

R3

50.5
483 1002 1090 0 0 Robot

Exerc cio 2
965 721 653 1.35 2.58 2.38 171 438 314 1.64 1.99 2.47

Transporte:

6 2 -4, -4 5 -2 0, -5 4 0 3, -2 0 0 Restaurante

3, 3 4, 0 -1, -3 -2, 1, -1 3, 0 -5, -3 -2 2, -3 -5, -1 -1

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, Pedro Kantek

24 25 28 30 28 33 38 41 18 23 25 27 33 38 43 46

520

verso de 10 de fevereiro de 2008 a

CAP ITULO 50. 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

50.6
677 459 668 0 0 Robot

Exerc cio 3
930 852 711 1.71 1.48 2.36 353 412 123 2.31 2.76 2.86

Transporte:

6 1 -1, 5 2 3, 4 -2 -2, 0 0 Restaurante 10 2 5 14 19 10 1 6 11 15 12 3 5 11 13 0 0

0 -3, -1 0, -2 2, 0 -4, -4 4, 4 -3, 2 0, 1 -3, -1 2

2 -2, 3 1

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.7
961 692 1943 0 0 Robot

Exerc cio 4
690 690 624 2.15 1.72 1.28 271 417 294 2.24 3.19 3.80

Transporte:

verso de 10 de fevereiro de 2008 a

521

88-08, Pedro Kantek

CAP ITULO 50. EXERC ICIO PRATICO 157 4 1 -4, -5 -2, 2 -3, -3 4 3 -3, 2 -1, -3 -2, 4 7 -1 1, -2 4, -3 -1, 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 T3 28 33 36 40 40 43 45 48 22 24 27 28 32 37 27 31 32 33 38 42 43 44 47 50 54 56 3 5 0,

4 -3,

5,

0 -2

Rb1 Rb2 Rb3

R1

R2

R3

50.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

88-08, Pedro Kantek

522

verso de 10 de fevereiro de 2008 a

Cap tulo 51

Exerc cio prtico 158 a


51.1 Sequncias e

Uma seqncia de 0s e 1s chamada de seqncia-H se composta por um unico 0 ou ue e ue e se composta por um 1 seguido de duas seqncias-H. Por exemplo, 0, 100 e 10100 so e ue a seqncias-H, mas 10, 111 e 10010 no so. ue a a Tarefa Sua tarefa determinar se uma dada seqncia ou no uma seqncia-H. e ue e a ue Entrada de Dados Cada conjunto de teste composto por uma unica linha, que e contm a seqncia a ser testada, composta de d e ue gitos 0s e 1s (sem espaos em branco c intermedirios). O nal da seqncia indicado pelo primeiro espao em branco da a ue e c linha. O nal da entrada indicado quando os primeiros caracteres da linha de teste e so -1. 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 seqncia uma seqncia-H, ou o d ue e ue gito 0 se a seqncia ue no uma seqncia-H. a e ue Exemplo de Sada 1 , 1 , 0 (esta sada corresponde ao exemplo de entrada acima)

51.2

Carga Pesada

Um dos maiores problemas no transporte de cargas pesadas por rodovias a altura dos e viadutos, pois muitas vezes a carga mais alta do que o vo do viaduto sob o qual o e a caminho deve passar. Considere o mapa abaixo. E poss a vel tranportar uma turbina de hidroeltrica, que em cima do caminho mede 7 metros de altura, da cidade Xis da e a Serra para a cidade Ypsilon Bonito? 523

CAP ITULO 51. EXERC ICIO PRATICO 158

Neste caso fcil perceber que a resposta sim, pois o menor vo encontrado no e a e a caminho, se utilizarmos as estradas BR-1001 e BR-1024, de 9 metros. No caso geral, e com dezenas de cidades e estradas, a resposta pode no ser to evidente. a a Tarefa Sua tarefa determinar, para um dado par de cidades X e Y, qual a carga e mais alta que pode ser transportada de X para Y por meio rodovirio, conhecendo todas a as estradas da regio e a altura de todos os tneis e viadutos dessas estradas. Considere a u que todas as estradas tm limitao de altura e que a interligao das estradas ao redor e ca ca das cidades no tem restrio de altura. a ca Entrada de Dados O nmero mximo de cidades, N, em cada teste 100. As u a e cidades so numeradas de 1 a N. O primeiro par do conjunto de teste contm dois a e inteiros positivos X e Y que representam respectivamente as cidades origem e a cidade destino da carga (1 X N, 1 Y N). As triplas seguintes contm cada uma e a descrio de uma estrada. Cada descrio composta por trs inteiros A, B e C, ca ca e e representando respectivamente a cidade onde a estrada inicia, a cidade onde a estrada termina e a altura do viaduto ou tnel mais baixo no trajeto de A para B. Cada instncia u a do problema ocupa 2 linhas. O nal do arquivo de testes indicado quando X = Y = e 0 (este ultimo conjunto de testes no vlido e no deve ser processado). a e a a Exemplo de Entrada 2 4 ; 1 4 5 ; 2 4 12 ; 0 0 0 1 3 ; 1 2 10 ; 1 3 8 ; 2 3 12 ; 3 1 5 ; 0 0 0 0 0 Sa de Dados Na resposta deve aparecer a altura mxima da carga, encontrada da a pelo seu programa. Exemplo de Sada 12 , 10 (esta sada corresponde ao exemplo de entrada acima)

51.3

Rede tica o

Os caciques da regio de Tutuau pretendem integrar suas tribos ` chamada aldeia a c a global. A primeira providncia foi a distribuio de telefones celulares a todos os pajs. e ca e Agora, planejam montar uma rede de bra tica interligando todas as tabas. Esta o empreitada requer que sejam abertas novas picadas na mata, passando por reservas de ora e fauna. Conscientes da necessidade de preservar o mximo poss a vel o meio ambiente, os caciques encomendaram um estudo do impacto ambiental do projeto. Ser a que voc consegue ajud-los a projetar a rede de bra tica? e a o Tarefa Vamos denominar uma ligao de bra tica entre duas tabas de um ramo ca o de rede. Para possibilitar a comnicao entre todas as tabas necessrio que todas elas u ca e a
88-08, Pedro Kantek

524

verso de 10 de fevereiro de 2008 a

CAP ITULO 51. EXERC ICIO PRATICO 158 estejam interligadas, direta (utilizando um ramo de rede) ou indiretamente (utilizando mais de um ramo). Os caciques conseguiram a informao do impacto ambiental que ca causar a construo dos ramos. Alguns ramos, no entanto, nem foram considerados no a ca estudo ambiental, pois sua construo imposs ca e vel.

Sua tarefa escrever um programa para determinar quais ramos devem ser cone stru dos, de forma a possibilitar a comnicao entre todas as tabas, causando o menor u ca impacto ambiental poss vel. Entrada A entrada composta de vrios conjuntos de teste. A primeira linha de e a um conjunto de teste contm o nmero de tabas. As tabas so numeradas de 1 a N. As e u a M indicaes seguintes contm trs inteiros positivos X, Y e Z, que indicam que o ramo co e e de rede que liga a taba X ` taba Y tem impacto ambiental Z. Com os conjuntos de teste a dados sempre poss interligar todas as tabas. O nal da entrada indicado quando e vel e N = 0. Exemplo de Entrada 3 ; 1 2 10 ; 2 3 10 ; 3 1 10 5 ; 1 2 15 ; 1 3 12 ; 2 4 13 ; 2 5 5 ; 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. Um ramo descrito por um par de tabas e X e Y , com X < Y. Os ramos de rede podem ser listados em qualquer ordem, mas no a deve haver repetio. Se houver mais de uma soluo poss ca ca vel, imprima apenas uma delas. Exemplo de Sada 1 2 ; 1 3 1 3 ; 2 3 ; 2 5 ; 3 4 (esta sada corresponde ao exemplo de entrada acima)

51.4

Exerc cio 1

Seqncia-H: ue 111011001000100 110101110001101101111010010100000 1101010010101100110100110101000 11101100111010001001000 -1


verso de 10 de fevereiro de 2008 a

525

88-08, Pedro Kantek

CAP ITULO 51. EXERC ICIO PRATICO 158 Carga Pesada 5 3; 1 4 12;2 1 3;2 3 11;3 1 3;3 5 5; 4 1 6;4 2 9;5 1 10;5 2 4;5 3 7;0 0 0 5 2; 1 2 6;1 3 4;1 5 5;2 1 2;3 4 7; 4 1 9;4 5 4;5 2 5;5 3 8;0 0 0 0 0 Rede tica o 6; 4 6 4;1 4 5;1 2 6;3 5 7;1 3 9;2 6 10;2 5 11; 1 5 12;2 3 13;3 6 14;2 4 15;1 6 16;5 6 17;3 4 19;4 5 20 6; 2 3 4;2 5 6;1 6 7;2 4 8;3 6 9;1 5 11;3 4 12; 4 5 14;1 2 16;1 4 17;3 5 19;4 6 20;2 6 21;5 6 22;1 3 23 0 Responda S1 S2 S3 S4 C1 C2 R1 R2

51.5

Exerc cio 2

Seqncia-H: ue 1101010011110110010011110010011000000 110011001110100100100 1110010111101010110000100110000 1110010100100 -1 Carga Pesada 5 4; 1 2 3;1 3 9;1 4 6;2 1 6;2 4 8;2 5 5; 3 2 7;3 5 5;4 5 4;5 1 6;5 4 1;0 0 0 4 3; 1 3 9;1 5 5;2 3 4;2 5 12;3 5 6; 4 1 3;4 2 10;4 3 8;5 1 11;5 3 3;0 0 0 0 0 Rede tica o 6; 4 5 4;1 3 5;3 4 6;5 6 7;4 6 8;1 5 9;2 6 10; 2 5 11;1 4 12;3 5 15;1 2 18;2 3 19;1 6 20;2 4 21;3 6 22 6; 4 6 4;3 5 5;3 6 6;2 4 8;1 3 9;2 3 10;1 2 11; 2 5 12;2 6 14;3 4 15;1 4 17;1 5 18;4 5 19;5 6 21;1 6 23 0 Responda S1 S2 S3 S4 C1 C2 R1 R2

88-08, Pedro Kantek

526

verso de 10 de fevereiro de 2008 a

CAP ITULO 51. EXERC ICIO PRATICO 158

51.6

Exerc cio 3

Seqncia-H: ue 1011110000100 1110011100000010100 11110101001011001000100 111101010100100011001010111010000 -1 Carga Pesada 4 1; 1 2 4;2 1 7;2 3 5;2 4 3;3 2 5; 3 5 8;4 1 1;4 3 6;5 1 4;5 2 5;0 0 0 4 1; 1 3 6;2 3 6;2 4 3;2 5 5;3 1 8; 4 1 3;4 3 3;4 5 7;5 1 4;5 2 9;0 0 0 0 0 Rede tica o 6; 3 6 5;4 5 6;3 4 7;3 5 8;2 5 9;1 4 10;1 2 11; 1 6 13;1 3 15;2 3 16;5 6 17;1 5 19;2 6 20;4 6 21;2 4 23 6; 3 4 4;1 6 5;2 3 6;3 6 7;2 4 8;2 5 9;1 4 10; 1 5 12;1 2 13;4 5 15;4 6 16;1 3 19;5 6 20;2 6 22;3 5 23 0 Responda S1 S2 S3 S4

C1 C2

R1

R2

51.7

Exerc cio 4

Seqncia-H: ue 1110011001000 11010111001001011000000 1100101111001000100 1100101101000101000 -1 Carga Pesada 2 5; 1 2 3;1 3 5;1 4 7;1 5 5;2 1 8; 2 5 4;3 2 6;3 5 9;4 3 6;5 1 4;0 0 0 1 4; 1 2 8;1 4 2;2 3 7;2 5 5;3 2 4; 3 4 5;3 5 9;4 3 3;5 3 6;5 4 6;0 0 0 0 0 Rede tica o
verso de 10 de fevereiro de 2008 a

527

88-08, Pedro Kantek

CAP ITULO 51. EXERC ICIO PRATICO 158 6; 2 6 4;1 4 5;1 3 6;3 5 7;1 5 9;2 3 10;1 2 12; 2 4 13;3 6 14;4 6 15;5 6 16;2 5 17;1 6 20;4 5 22;3 4 23 6; 4 5 4;2 4 5;3 4 6;1 3 7;1 6 8;1 4 9;2 6 10; 2 5 11;5 6 12;4 6 17;1 2 18;3 6 20;1 5 21;3 5 22;2 3 23 0 Responda S1 S2 S3 S4 C1 C2 R1 R2

51.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

88-08, Pedro Kantek

528

verso de 10 de fevereiro de 2008 a

Cap tulo 52

Exerc cio prtico - 159 a


52.1 Quermesse

Os alunos do ultimo ano resolveram organizar uma quermesse para arrecadar fundos para a festa de formatura. A festa prometia ser um sucesso, pois o pai de um dos formandos, Telo, dono de uma loja de informtica, decidiu doar um computador para o a ser sorteado entre os que comparecessem. Os alunos prepararam barracas de quento, a pipoca, doces, ensaiaram a quadrilha e colocaram ` venda ingressos numerados sequena cialmente a partir de 1. O nmero do ingresso serviria para o sorteio do computador. u Ficou acertado que Telo decidiria o mtodo de sorteio; em princ o e pio o sorteio seria, claro, computadorizado. O local escolhido para a festa foi o ginsio da escola. A entrada dos participantes foi a pela porta principal, que possui uma roleta, onde passa uma pessoa por vez. Na entrada, um funcionrio inseriu, em uma lista no computador da escola, o nmero do ingresso, a u na ordem de chegada dos participantes. Depois da entrada de todos os participantes, Telo comeou a trabalhar no computador para preparar o sorteio. Vericando a lista o c de presentes, notou uma caracter stica notvel: havia apenas um caso, em toda a lista, a em que o participante que possuia o ingresso numerado com i, havia sido a i-sima pessoa e a entrar no ginsio. Telo cou to encantado com a coincidncia que decidiu que o a o a e sorteio no seria necessrio: esta pessoa seria o ganhador do computador. a a Tarefa Conhecendo a lista de participantes, por ordem de chegada, sua tarefa dee terminar o nmero do ingresso premiado, sabendo que o ganhador o unico participante u e que tem o nmero do ingresso igual ` sua posio de entrada na festa. u a ca Entrada A entrada composta de vrios conjuntos de teste. A primeira linha de e a um conjunto de teste contm um nmero inteiro positivo N que indica o nmero de e u u participantes da festa. A linha seguinte contm a sequncia, em ordem de entrada, dos e e N ingressos das pessoas que participaram da festa. O nal da entrada indicado quando N = 0. Para cada conjunto de teste da entrada e haver um unico ganhador. 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 nmero do ingresso do ganhador, conforme determinado da da u pelo seu programa. 529

CAP ITULO 52. EXERC ICIO PRATICO - 159 Exemplo de Sada 3 e 10 (esta sada corresponde ao exemplo de entrada acima)

52.2

Bits Trocados

As Ilhas Weblands formam um reino independente nos mares do Pac co. Como um e reino recente, a sociedade muito inuenciada pela informtica. A moeda ocial o e a e Bit; existem notas de B$ 50,00, B$10,00, B$5,00 e B$1,00. Voc foi contratado(a) para e ajudar na programaao dos caixas automticos de um grande banco das Ilhas Weblands. c a Tarefa Os caixas eletrnicos das Ilhas Weblands operam com todos os tipos de notas o dispon veis, mantendo um estoque de cdulas para cada valor (B$ 50,00, B$10,00, B$5,00 e e B$1,00). Os clientes do banco utilizam os caixas eletrnicos para efetuar retiradas de o um certo nmero inteiro de Bits. Sua tarefa escrever um programa que, dado o valor u e de Bits desejado pelo cliente, determine o nmero de cada uma das notas necessrio u a para totalizar esse valor, de modo a minimizar a quantidade de cdulas entregues. Por e exemplo, se o cliente deseja retirar B$50,00, basta entregar uma unica nota de cinquenta Bits. Se o cliente deseja retirar B$72,00, necessrio entregar uma nota de B$50,00, e a duas de B$10,00 e duas de B$1,00. Entrada A entrada composta de vrios conjuntos de teste. Cada conjunto de teste e a composto por uma unica linha, que contm um nmero inteiro positivo V, que indica e e u o valor solicitado pelo cliente. O nal da entrada indicado por V = 0. e Exemplo de Entrada 1 72 0 Sa Para cada conjunto de teste da entrada seu programa deve produzir quatro da inteiros I, J, K e L que representam o resultado encontrado pelo seu programa: I indica o nmero de cdulas de B$50,00, J indica o nmero de cdulas de B$10,00, K indica o u e u e nmero de cdulas de B$5,00 e L indica o nmero de cdulas de B$1,00. u e u e Exemplo de Sada 0 0 0 1 e 1 2 0 2 (esta sada corresponde ao exemplo de entrada acima)

52.3

Saldo de gols

Hiplito um torcedor fantico de um grande clube curitibano. Coleciona mulas, o e a a bandeiras, recortes de jornal, gurinhas de jogadores, camisetas e tudo o mais que se rera a seu time preferido. Quando ganhou um computador de presente em uma festa, resolveu montar um banco de dados com os resultados de todos os jogos de seu time ocorridos desde a sua fundao, em 1909. Depois de inseridos os dados, Hiplito comeou ca o c a car curioso sobre estat sticas de desempenho do time. Por exemplo, ele deseja saber qual foi o per odo em que o seu time acumulou o maior saldo de gols. Como Hiplito o tem o computador h muito pouco tempo, no sabe programar muito bem, e precisa de a a sua ajuda. Tarefa E dada uma lista, numerada seqencialmente a partir de 1, com os resultados u de todos os jogos do time (primeira partida: 3 x 0, segunda partida: 1 x 2, terceira partida: 0 x 5 ...). Sua tarefa escrever um programa que determine em qual per e odo o time conseguiu acumular o maior saldo de gols. Um per odo denido pelos nmeros e u de seqncia de duas partidas, A e B, onde A B. 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, Pedro Kantek

530

verso de 10 de fevereiro de 2008 a

CAP ITULO 52. EXERC ICIO PRATICO - 159 A e B (incluindo as mesmas) menos a soma dos gols marcados pelos times adversrios a no per odo. Se houver mais de um per odo com o mesmo saldo de gols, escolha o maior per odo (ou seja, o per odo em que B - A maior). Se ainda assim houver mais de uma e soluo poss ca vel, escolha qualquer uma delas como resposta. Entrada Seu programa deve ler vrios conjuntos de teste. A primeira linha de um a conjunto de teste contm um inteiro no negativo, N, que indica o nmero de partidas e a u realizadas pelo time (o valor N = 0 indica o nal da entrada). Seguem-se N linhas, cada uma contendo um par de nmeros inteiros no negativos X e Y que representam u a o resultado da partida: X so os gols a favor e Y os gols contra o time de Hiplito. As a o partidas so numeradas sequencialmente a partir de 1, na ordem em que aparecem na a entrada. Exemplo de Entrada 2 2 3 ; 7 1 9 2 2 ; 0 5 ; 6 2 ; 1 4 ; 0 0 ; 5 1 ; 1 5 ; 6 2 ; 0 5 3 0 2 ; 0 3 ; 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, conforme determinado pelo seu programa, exceto quando o saldo de gols do melhor per odo for menor ou igual a zero; neste caso a segunda linha deve conter a expresso nenhum. a Exemplo de Sada 2 2, 3 8 e nenhum acima) (esta sada corresponde ao exemplo de entrada

52.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;2 1;1 2;2 3;2 2;1 1;5 3 8
verso de 10 de fevereiro de 2008 a

531

88-08, Pedro Kantek

CAP ITULO 52. EXERC ICIO PRATICO - 159 1 4;2 3;1 1;5 5;4 4;1 2;3 6;4 2 9 9 6;5 3;3 1;5 5;5 2;2 1;1 6;1 3;1 1 0 Responda q1 q2 q3 q4 n1 n2 n3 n4 s1 s2 s3

52.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;1 2;2 1;2 3;1 4;2 2;5 5 7 2 4;5 1;1 1;5 5;2 3;2 1;5 3 9 6 1;4 3;3 2;2 3;5 4;1 1;2 1;1 1;3 1 0 Responda q1 q2 q3 q4 n1 n2 n3 n4 s1 s2 s3

52.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
88-08, Pedro Kantek

532

verso de 10 de fevereiro de 2008 a

CAP ITULO 52. EXERC ICIO PRATICO - 159 Notas 281 197 228 250 0 Saldo de gols 6 4 7;5 3;1 1;1 7;3 3;3 2 9 6 3;1 2;2 2;1 6;5 3;1 1;6 3;4 2;2 1 9 6 4;1 3;3 2;5 4;4 4;3 1;7 2;2 1;3 2 0 Responda q1 q2 q3 q4 n1

n2

n3

n4

s1

s2

s3

52.7
16 10 2 2 0

Exerc cio 4

Quermesse 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;2 4;2 1;8 2;3 1;1 1;8 6 9 9 4;3 4;2 1;8 2;1 4;3 2;1 3;1 3;2 1 9 1 7;2 2;1 2;8 3;2 2;3 1;6 6;3 3;3 1 0
verso de 10 de fevereiro de 2008 a

533

88-08, Pedro Kantek

CAP ITULO 52. EXERC ICIO PRATICO - 159 Responda q1 q2 q3 q4 n1

n2

n3

n4

s1

s2

s3

52.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

88-08, Pedro Kantek

534

verso de 10 de fevereiro de 2008 a

Cap tulo 53

Exerc cio prtico - 160 a


53.1 Macaco-prego

O macaco-prego um animal irrequieto e barulhento, merecedor tambm dos adjetivos e e desordeiro e despudorado. A sua cabea, encimada por uma densa pelagem negra ou c marrom-escura, semelhante a um gorro, torna seu aspecto inconfund vel. Apesar de ser o macaco mais comum nas matas do pa uma de suas sub-espcies encontra-se s, e seriamente ameaada de extino: o macaco-prego-do-peito-amarelo, que se distingue c ca das demais pela colorao amarelada do peito e da parte anterior dos braos. Um ca c grande esforo foi feito pelos primatologistas para aumentar a populao dos macacosc ca prego-do-peito-amarelo. Sabe-se que eles se alimentam de plantas, das quais consomem preferencialmente frutos e brotos. Alimentam-se tambm de muitos animais, preferene cialmente lesmas, lagartas e rs, e preferem as orestas mais densas. Para determinar a o melhor local do pa para criar uma nova reserva ambiental para os macacos-pregos do-peito-amarelo, o governo fez um levantamento das regies no pa onde as condies o s co preferidas desses animais ocorrem: regies de oresta densa, regies com frutos, regies o o o com muitos brotos, etc. Ajude a salvar os macacos-prego-do-peito-amarelo. Tarefa As regies prop o cias para o macaco-prego-do-peito-amarelo foram determinadas como retngulos cujos lados so todos verticais ou horizontais. Sua tarefa a a e encontrar o local ideal para a reserva ambiental, denida como a interseo de todas as ca regies dadas. o

Entrada Seu programa deve ler vrios conjuntos de teste. A primeira linha de um a conjunto de teste contm um inteiro no negativo, N, que indica o nmero de regies e a u o (o valor N = 0 indica o nal da entrada). Seguem-se N linhas, cada uma contendo quatro nmeros inteiros X, Y, U e V que descrevem uma regio: o par X, Y representa u a a coordenada do canto superior esquerdo e o par U, V representa a coordenada do canto inferior direito de um retngulo. a Exemplo de Entrada (horizontalizados...) 535

CAP ITULO 53. EXERC ICIO PRATICO - 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

Sa Para cada conjunto de teste da entrada seu programa deve produzir as coorda denadas do retngulo de interseo encontrado pelo seu programa, no mesmo formato a ca utilizado na entrada. Caso a interseo seja vazia, a segunda linha deve conter a exca presso nenhum. a Exemplo de Sada 2 4 6 3 e nenhum (esta sada corresponde ao exemplo de entrada acima)

53.2

MASP

O MASP (Museu de Arte de So Paulo) tem o melhor acervo de obras de arte da Amrica a e Latina, sendo reconhecido mundialmente. Alm disso, o MASP diferente de museus e e tradicionais porque seus quadros no so pendurados em paredes (j que as paredes a a a do MASP so janelas de vidro), mas sim apresentados em cavaletes no meio da sala de a exposio. Uma grande exposio est em curso, ocupando todo o salo de exposies. ca ca a a co Considere que: a) as obras esto organizadas no salo de exposies no formato de uma matriz de N a a co linhas por M colunas; b) o visitante pode apenas mover-se da esquerda para a direita, iniciando na coluna 1 (primeira coluna) e terminando na coluna M (ltima coluna); u c) uma trajetria de visita composta de uma seqncia de passos; a cada passo o o e ue visitante aprecia uma obra; d) um passo consiste em mover-se da coluna i para a coluna i+1 em uma linha adjacente. Ou seja, o visitante pode efetuar um movimento horizontal ou diagonal. Movimentos legais so mostrados na gura abaixo: a

e) para dicultar ainda um pouco mais o problema, a primeira e ultima linhas (linhas de nmero 1 e N) da matriz so consideradas adjacentes (o que no poss no u a a e vel MASP!); f ) cada obra tem associada uma prioridade de visita. A prioridade um nmero inteiro; e u quanto menor o nmero, maior a prioridade de que a obra seja apreciada (note u que a prioridade pode ser negativa); Tarefa Sua tarefa escrever um programa que determine a trajetria tima para e o o uma visita ao museu, obedecendo as regras acima. A trajetria tima aquela que tem o o e a menor soma total das prioridades das obras visitadas. Como exemplo, considere as duas exposies abaixo (a unica diferena entre as duas exposies a prioridade das co c co e obras da ultima linha):
88-08, Pedro Kantek

536

verso de 10 de fevereiro de 2008 a

CAP ITULO 53. EXERC ICIO PRATICO - 160

As trajetrias timas para as duas exposies so indicadas na gura. Note que a o o co a trajetria tima para a exposio da direita utiliza a propriedade da adjacncia entre a o o ca e primeira e a ultima linhas. No caso de haver mais de uma trajetria tima poss o o vel, seu programa deve imprimir a trajetria de menor ordem lexicogrca (veja o formato de Sa o a da, abaixo). Entrada A entrada composta de vrios conjuntos de teste. A primeira linha e a de um conjunto de teste contm dois nmeros inteiros positivos N e M, que indicam e u respectivamente o nmero de linhas e o nmero de colunas da matriz. As N linhas u u seguintes contm cada uma M nmeros inteiros que representam as prioridades das e u obras. O nal da entrada indicado por N = M = 0. 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...) 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 0 0

Sa Para cada conjunto de teste da entrada seu programa deve produzir a trada jetria tima, descrita por uma seqncia de M inteiros (separados por um espao em o o ue c branco), representando as linhas da matriz que constituem a trajetria tima. No caso o o de haver mais de uma trajetria tima poss o o vel, seu programa deve imprimir a trajetria o de menor ordem lexicogrca (a primeira achada). a Exemplo de Sada Teste 1 1 2 3 4 4 5 Teste 2 1 2 1 5 4 5 Teste 3 1 1 (esta sada corresponde ao exemplo de entrada acima)

53.3
4 3 -12 -11 10 10 10

Exerc cio 1

Macaco prego 15 9 5 -6 0 -1 537


88-08, Pedro Kantek

verso de 10 de fevereiro de 2008 a

CAP ITULO 53. EXERC ICIO PRATICO - 160 -2 5 -8 -13 -5 0 4 0 Masp 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

Responda macaco1 macaco2 masp1

masp2

53.4
4 -5 -2 -14 -5 5 -5 -13 3 -13 -7 0 Masp 6 13 12 8 8 8 9 8 14

Exerc cio 2

Macaco prego 9 -13 5 -14 6 -9 14 -8 9 -13 13 -11 11 -5 9 -14 8 -3

6 6 8 4 5 8 7 5
88-08, Pedro Kantek

538

verso de 10 de fevereiro de 2008 a

CAP ITULO 53. EXERC ICIO PRATICO - 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

masp2

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 13 14 12 5 15 6 15 15 5

Exerc cio 3

Macaco prego 10 -11 13 -1 7 -13 10 -8 7 -13 13 -10 12 -9 10 -4 12 -7

5 8 2 1 9 4 2 4 7 6 6 6

7 5 4 5 6 2 2 8 1 5 4 3

verso de 10 de fevereiro de 2008 a

539

88-08, Pedro Kantek

CAP ITULO 53. EXERC ICIO PRATICO - 160 Responda macaco1 macaco2 masp1

masp2

53.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

Exerc cio 4

Macaco prego 12 8 9 10 12 7 7 8 12 8 -13 11 -2 15 4 15 0 15 1 5 0 8 -15 15 -15 13 -12

9 3 3 5 5 9 9 6 4 5 4 3

2 7 1 7 9 5 4 2 2 5 4 3

Responda macaco1 macaco2 masp1

masp2

53.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

88-08, Pedro Kantek

540

verso de 10 de fevereiro de 2008 a

Cap tulo 54

Exerc cio prtico - 161 a


54.1 Anis quadrados e

Considere os seguintes anis quadrados, cada um denido em uma matriz de 8 colunas e por 9 linhas, conforme a gura abaixo. Agora coloque um anel sobre o outro, comeando c pelo anel 1 (que ca por baixo de todos) e terminando com o anel 5 (em cima de todos). Portanto, olhando a pilha de cinco anis pelo lado de cima vemos o seguinte: e ........ EEEEEE.. E....E.. E....E.. E....E.. E....E.. E....E.. E....E.. EEEEEE.. 1 ........ ........ DDDDDD.. D....D.. D....D.. D....D.. DDDDDD.. ........ ........ 2 ........ ........ ........ ........ ....AAAA ....A..A ....A..A ....AAAA ........ 3 ........ ..BBBB.. ..B..B.. ..B..B.. ..B..B.. ..BBBB.. ........ ........ ........ 4 .CCC.... .C.C.... .C.C.... .CCC.... ........ ........ ........ ........ ........ 5 .CCC.... ECBCBB.. DCBCDB.. DCCC.B.. ve-se => D.B.ABAA D.BBBB.A DDDDAD.A E...AAAA EEEEEE..

Os anis so formados por letras maisculas, cada anel com uma letra diferente. O e a u caractere ponto (.) utilizado para representrar espaos vazios. A espessura das e c paredes do anel de exatamente um caractere e o comprimento dos lados nunca menor e e do que trs caracteres. 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). Tarefa Sua tarefa escrever um vel e programa que, dada a congurao de uma pilha de anis, determine qual a seqncia ca e ue de empilhamento (de baixo para cima) que foi utilizada na construo da pilha. No ca exemplo acima a resposta EDABC. So h uma ordem poss de empilhamento. e a vel Entrada A entrada composta de vrios conjuntos de teste. A primeira linha e a de um conjunto de teste contm dois nmeros inteiros positivos X e Y que indicam, e u respectivamente, a altura e a largura da matriz que contm os anis. As X linhas e e seguintes contm Y caracteres cada, representando a vista superior da pilha de anis. O e e nal da entrada indicado quando X = Y = 0. e Exemplo de Entrada (horizontalizado...) 9 8 10 10 0 0 .CCC.... ..AAAAA... ECBCBB.. ..ACCCA... DCBCDB.. ..AC.CA... DCCC.B.. ..AC.CA... 541

CAP ITULO 54. EXERC ICIO PRATICO - 161 D.B.ABAA D.BBBB.A DDDDAD.A E...AAAA EEEEEE.. ..ACCCA... ..AAAAA... .......... ...BBB.... ...B.B.... ...BBB....

Sa Para cada conjunto de teste da entrada seu programa deve produzir uma lista da das letras dos anis, na ordem em que estes foram empilhados, do mais abaixo para o e mais acima. Exemplo de Sada EDABC e (ABC ou ACB ou BAC ou BCA ou CAB ou CBA)

54.2

Balaio

Maria mora no interior de Minas Gerais e especialista em fabricar balaios de junco. Os e balaios de Maria so muito bem feitos e tm grande aceitao na regio. Cada balaio a e ca a demora exatamente um dia de trabalho para ser confeccionado: Maria comea a tecer c um balaio no in do dia e no nal do dia entrega o produto para um cliente. Com a cio crescente demanda, Maria comeou a aceitar pedidos para o futuro: Narciso precisa de c um balaio para o dia 10, Coronel Zoio precisa de um para o dia 4, Esmeralda para o dia 6, e assim por diante. Todos os pedidos, com as datas-limite de entrega, esto anotados a computador que o lho de Maria comprou. Maria no sabe dizer no, e agora percebeu a a que aceitou mais pedidos do que vai conseguir produzir, se for considerar as datas-limite impostas pelos seus clientes. Algum poderia ajudar Maria? e Tarefa Sua tarefa escrever um programa que determine qual a melhor ordem e de entrega dos balaios de Maria, de forma a minimizar a chateao total causada por ca eventuais atrasos na entrega. A medida da chateao utiliza um sistema de medio ca ca desenvolvido por Maria, por experincia anterior: ela sabe que se atrasar o balaio de e Narciso, isso vai causar uma chateao de n 13; Esmeralda muito boazinha e, se ca vel e Maria atrasar a sua entrega, a chateao ser n 0. No entanto, se atrasar o balaio do ca a vel Coronel Zoio, ela ter uma chateao de n 125. A chateao total dada pela soma a ca vel ca e das chateaes causadas por todos os atrasos. Considere que Maria trabalha todos os co dias, sem descanso, e os dias so numerados sequencialmente a partir de 1. a Entrada A entrada composta de vrios conjuntos de teste. A primeira linha de e a um conjunto de teste contm um nmero inteiro positivo N, que indica quantidade de e u pedidos pendentes. A segunda linha contm o vetor de inteiros positivos L, em que L[i] e que indica a data-limite para entrega do pedido i (1 i N). A terceira linha contm e o vetor de inteiros positivos C, em que C[i] indica o n de chateao ocasionado se o vel ca prazo L[i] no for obedecido (1 i N). O nal da entrada indicado por N = 0. 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 chateao da ca total m nima daquela entrada. Pode ocorrer que mais de uma seqncia de produo ue ca gere a mesma chateao m ca nima, mas como a resposta deve ser o valor do m nimo, este fato no tem importncia. a a Exemplo de Sada 0 e 30 (a seq. neste caso pode ser 5 2 4 3 6 7 1)
88-08, Pedro Kantek

542

verso de 10 de fevereiro de 2008 a

CAP ITULO 54. EXERC ICIO PRATICO - 161

54.3

Meteoros

Em noites sem nuvens pode-se muitas vezes observar pontos brilhantes no cu que se e deslocam com grande velocidade, e em poucos segundos desaparecem de vista: so a as chamadas estrelas cadentes, ou meteoros. Meteoros so na verdade part a culas de poeira de pequenas dimenses que, ao penetrar na atmosfera terrestre, queimam-se o rapidamente (normalmente a uma altura entre 60 e 120 quilmetros). Se os meteoros o so sucientemente grandes, podem no queimar-se completamente na atmosfera e dessa a a forma atingem a superf terrestre: nesse caso so chamados de meteoritos. cie a Z Fel um fazendeiro que adora astronomia e descobriu um portal na Internet e cio e que fornece uma lista das posies onde ca co ram meteoritos. Com base nessa lista, e conhecendo a localizao de sua fazenda, Z Fel ca e cio deseja saber quantos meteoritos ca ram dentro de sua propriedade. Ele precisa de sua ajuda para escrever um programa de computador que faa essa vericao automaticamente. c ca Tarefa So dados: a
uma lista de pontos no plano cartesiano, onde cada ponto corresponde ` posio a ca onde caiu um meteorito; as coordenadas de um retngulo que delimita uma fazenda. a

As linhas que delimitam a fazenda so paralelas aos eixos cartesianos. 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). Entrada Seu programa deve ler vrios conjuntos de testes. A primeira linha de a um conjunto de testes quatro nmeros inteiros X1, Y1, X2 e Y2, onde (X1, Y1) a u e coordenada do canto superior esquerdo e (X2, Y2) a coordenada do canto inferior e direito do retngulo que delimita a fazenda. A segunda linha contm um inteiro, N, que a e indica o nmero de meteoritos. Seguem-se N linhas, cada uma contendo dois nmeros u u inteiros X e Y, correspondendo `s coordenadas de cada meteorito. O nal da entrada a e indicado por X1 = Y1 = X2 =Y2 = 0. 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 nmero da u de meteoritos que ca ram dentro da fazenda. Exemplo de Sada 1 e 2 (esta sada corresponde ao exemplo de entrada acima)

54.4

Exerc cio 1

Aneis quadrados 10 10 SSSSSSSS.. S.XX...S.. SSXXSSSS.. CBXXVCVV..


verso de 10 de fevereiro de 2008 a

543

88-08, Pedro Kantek

CAP ITULO 54. EXERC ICIO PRATICO - 161 C.XX.C.V.. C.XX.C.V.. CCXXCCVV.. BBXXBBBB.. ..XX...... ..XX...... 10 10 DDDDD..... D.ZZZZZZZ. D.ZNNNNNN. D.ZND..BN. D.ZND..BN. D.ZNNNNNN. D.ZZZZZZZ. D...D..... DDDDD..... .......... 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

30

Responda aneis1

88-08, Pedro Kantek

544

verso de 10 de fevereiro de 2008 a

CAP ITULO 54. EXERC ICIO PRATICO - 161

54.5

Exerc cio 2

Aneis quadrados 10 10 .YYYYYYY.. .YL....Y.. .YRRRRMYMM CYMMMRMYMM CYRRRRCY.. CYYYYYYY.. C.L...CL.. C.L...CL.. CCLLLLLL.. .......... 10 10 IIIIII.... IZZWWIWW.. IVVW.I.W.. IZVDDDDDDD IIIDII.W.D VZVD.Z.W.D VZVDWWWW.D VVVD.Z...D .ZZDDDDDDD .......... 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, Pedro Kantek

25 28 10 22 26 30 27 21

26

29

verso de 10 de fevereiro de 2008 a

CAP ITULO 54. EXERC ICIO PRATICO - 161 5 6 17 15 0 0 0 0 Responda aneis1 aneis2 balaio1 balaio2 met1 met2

54.6

Exerc cio 3

Aneis quadrados 10 10 ...LLLLLL. .III....L. .I.I....L. YIOOOOOOL. YIOOOOOOL. .I.MM...L. .IIMM...L. ...L....L. ...L....L. ...LLLLLL. 10 10 ..TTT..... ..TNT..... .DTFTFFF.. .DTFTH.F.. .DTFTH.F.. .DTFTH.F.. .DTTTFFF.. .D.....D.. .D.....D.. .DDDDDDD.. 0 0 Balaio 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 Meteoros 5 6 25 15 12 1 546
verso de 10 de fevereiro de 2008 a

28

21

88-08, Pedro Kantek

CAP ITULO 54. EXERC ICIO PRATICO - 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

25

Responda aneis1

54.7

Exerc cio 4

Aneis quadrados 10 10 VVVV...... V..V...... V.SVSSSSS. V.KKKUUUS. V.KVK...S. V.KVK...S. V.KVK...S. V.KKK...S. V.SVUUUUS. VVVVSSSSS. 10 10 OOOOOOOOO. OMMMMMIIO. OMISSM.IO. OMI..M.IO. OMI..M.IO. OMOOOMOOO. .MI..M.I.. .MMMMM.I.. ..I....I.. ..IIIIII.. 0 0 Balaio 7 3 5 4 5 3 3 4 22 63 58 96 96 78 28
verso de 10 de fevereiro de 2008 a

547

88-08, Pedro Kantek

CAP ITULO 54. EXERC ICIO PRATICO - 161 7 5 1 5 4 2 3 3 78 74 50 36 72 17 84 0 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 balaio1 balaio2 met1 met2 12 8 21 27 16 16 28 22 27 10

21

Responda aneis1

54.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

88-08, Pedro Kantek

548

verso de 10 de fevereiro de 2008 a

Cap tulo 55

Exerc cios prticos - 162 a


55.1 Domin o

Todos conhecem o jogo de domins, em que peas com dois valores devem ser colocadas o c na mesa em seqncia, de tal forma que os valores de peas imediatamente vizinhas ue c sejam iguais. O objetivo desta tarefa determinar se poss colocar todas as peas e e vel c de um conjunto dado em uma formao vlida. ca a

Tarefa E dado um conjuto de peas de domin. Cada pea tem dois valores X e Y, c o c com X e Y variando de 0 a 6 (X pode ser igual a Y). Sua tarefa escrever um programa e que determine se poss organizar todas as peas recebidas em seqncia, obedecendo e vel c ue as regras do jogo de domin. o Entrada A entrada composta de vrios conjuntos de teste. A primeira linha de e a um conjunto de testes contm um nmero inteiro N que indica a quantidade de peas e u c do conjunto. As N linhas seguintes contm, cada uma, a descrio de uma pea. Uma e ca c pea descrita por dois inteiros X e Y (0 X 6 e 0 Y 6) que representam os c e valores de cada lado da pea. O nal da entrada indicado por N = 0. c e Exemplo 3 ; 0 1 2 ; 1 1 6 ; 3 0 0 de Entrada (horizontalizado) ; 2 1 ; 2 1 ; 0 0 ; 0 0 ; 1 6 ; 4 1 ; 0 6 ; 2 3

Sa Para cada conjunto de teste da entrada seu programa deve produzir a exda presso simse for poss a vel organizar todas as peas em uma formao vlida ou a c ca a expresso naocaso contrrio. a a 549

CAP ITULO 55. EXERC ICIOS PRATICOS - 162 Exemplo de Sada sim, nao e sim (esta sada corresponde ao exemplo de entrada acima)

55.2

Sorvete

Joozinho um menino que costuma ir ` praia todos os nais de semana com seus pais. a e a Eles freqentam sempre a mesma praia, mas cada semana o pai de Joozinho estaciona u a o carro em um local diferente ao longo da praia, e instala sua fam em um ponto lia na praia em frente ao carro. Joozinho muito comilo, e adora de tomar sorvete na a e a praia. Contudo, alguns dias acontece de nenhum sorveteiro passar pelo local onde eles esto. Intrigado com isto, e no querendo mais car sem tomar seu sorvete semanal, a a Joozinho foi at a Associao dos Sorveteiros da Praia (ASP), onde cou sabendo que a e ca cada sorveteiro passa o dia percorrendo uma mesma regio da praia, indo e voltando. a Alm disto, cada sorveteiro percorre todos os dias a mesma regio. Joozinho conseguiu e a a ainda a informao dos pontos de in ca cio e m da regio percorrida por cada um dos a sorveteiros. Com base nestes dados, Joozinho quer descobrir os locais da praia onde o pai dele a deve parar o carro, de forma que pelo menos um sorveteiro passe naquele local. S que o o volume de dados muito grande, e Joozinho est pensando se seria poss utilizar e a a vel o computador para ajud-lo nesta tarefa. No entanto Joozinho no sabe programar, e a a a est pedindo a sua ajuda. a Tarefa Voc deve escrever um programa que leia os dados obtidos pelo Joozinho e e a imprima uma lista de intervalos da praia por onde passa pelo menos um sorveteiro. Entrada Seu programa deve ler vrios conjuntos de teste. A primeira linha de um a conjunto de teste contm dois inteiros no negativos, P e S, que indicam respectivamente e a o comprimento em metros da praia e o nmero de sorveteiros. Seguem-se S linhas, cada u uma contendo dois nmeros inteiros U e V que descrevem o intervalo de trabalho de u cada um dos sorveteiros, em metros contados a partir do in da praia (U < V, 0 U cio P e 0 V P). O nal da entrada indicado por S=0 e P=0. e Exemplo de Entrada (horizontalizada) 200 2 ; 0 21 ; 110 180 1000 3 ; 10 400 ; 80 200 ; 400 1000 10 2 ; 1 4 ; 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. E obvio que se s houver e o um intervalor, este que ser a resposta. e a Exemplo de Sada 110 180 ; 10 1000 ; 1 4 (esta sada corresponde ao exemplo acima)

55.3

Pirmide a

Joana quer ser artista plstica, mas enquanto estuda procura trabalhos temporrios a a durante suas frias escolares. Joana conseguiu emprego como auxiliar de almoxarifado e em uma grande transportadora. A transportadora recebeu um enorme carregamento de caixas de mesma altura mas com largura e profundidades diferentes. As caixas podem ser empilhadas indenidamente mas no podem ser deitadas em outra posio (todas a ca tm que ser armazenadas obedecendo ` indicao Este lado para cima). Joana a e a ca e responsvel por armazenar o carregamento de caixas, e, seguindo seu senso art a stico,
88-08, Pedro Kantek

550

verso de 10 de fevereiro de 2008 a

CAP ITULO 55. EXERC ICIOS PRATICOS - 162 quer construir com as caixas a pilha mais alta poss na forma de uma pirmide, ou vel a seja, uma pilha constru de tal forma que uma caixa A empilhada sobre uma outra da e caixa B somente se as dimenses de A (largura e a profundidade) no so maiores do o a a que as dimenses de B (as caixas podem ser viradas de forma a trocar a profundidade o com a largura). Voc pode ajud-la? e a dado um conjuto de caixas de mesma altura mas com largura e profunTarefa E didades diferentes. Sua tarefa escrever um programa que determine qual a pilha de e caixas mais alta que Joana pode construir com as restries acima. Entrada A entrada co composta de vrios conjuntos de teste. A primeira linha de um conjunto de testes e a contm um nmero inteiro N que indica a quantidade de caixas do conjunto. As N e u linhas seguintes contm, cada uma, a descrio de uma caixa. Uma caixa descrita por e ca e dois inteiros X e Y (1 X 15000 e 1 Y 15000) que representam os valores de cada lado da pea. O nal da entrada indicado por N = 0. c e Exemplo de Entrada (horizontalizada) 3 ; 100 100 ; 1000 2000 ; 2000 500 6 ; 3 4 ; 5 7 ; 7 5 ; 1 5 ; 4 4 ; 10 2 0 Sa Para cada conjunto de teste da entrada seu programa deve produzir o nmero da u mximo de caixas que podem ser empilhadas na forma de uma pirmide, conforme a a determinado pelo seu programa. Exemplo de Sada 3 ; 4 (esta sada corresponde ao exemplo de entrada acima)

55.4
Domin o

Exerc cio 1

6 ; 1 3;3 1;1 3;4 5;5 2;2 6 ; 0 7 ; 1 2;0 4;0 2;6 1;3 5;6 1;3 4 ; 0 8 ; 4 0;0 6;1 4;1 4;3 0;6 6;6 5;3 1 ; 0 Sorvete 960 790 780 0 0 4;470 640;130 200;210 380;170 220 5; 50 70;340 430;390 500;160 240;110 120 6;380 460;230 270;250 400;240 420;200 250;270 310

Pirmide de caixas a 5 ; 19 14;13 20; 8 12; 8 4;14 6 ; 3 4; 3 7; 5 10; 7 10;18 7 ; 3 19; 2 7;17 2;13 19;11 Responda d1 d2 d3 s1 s2 s3 3 ; 0 9;15 12 ; 0 3; 8 2; 1 2 ; 0 p1 p2 p3

verso de 10 de fevereiro de 2008 a

551

88-08, Pedro Kantek

CAP ITULO 55. EXERC ICIOS PRATICOS - 162

55.5
Domin o

Exerc cio 2

6 ; 4 1;6 6;4 5;6 1;0 2;0 3 ; 0 7 ; 1 0;3 1;3 1;4 6;0 5;5 3;0 6 ; 0 8 ; 6 0;1 4;4 0;2 6;1 2;4 1;3 1;2 0 ; 0 Sorvete 1000 770 580 0 0 4; 480 540; 100 120; 380 550; 250 410 5;360 390;150 190; 80 150;200 210;290 310 6;180 200;150 180;200 390; 40 170;200 220;100 260

Pirmide de caixas a 5 ; 13 17; 2 6 ; 20 8;16 7 ; 11 4; 2 Responda d1 d2 d3 5;14 6; 9 8; 1 12 ; 0 6; 3 13;11 13; 6 7;15 1 ; 0 5;12 20;18 11; 5 19;14 5; 1 17 ; 0

s1

s2

s3

p1

p2

p3

55.6
Domin o

Exerc cio 3

6 ; 3 5;6 6;4 6;5 5;4 3;6 4 ; 0 7 ; 1 5;0 2;4 4;6 4;2 1;1 0;6 4 ; 0 8 ; 3 3;0 2;1 1;4 5;1 5;5 0;1 1;3 4 ; 0 Sorvete 930 970 750 0 0 4;220 410;220 410;170 280;460 650 5;350 430;220 270;280 300;280 370;280 350 6;280 450;220 390;230 320; 70 170;360 460;150 310

Pirmide de caixas a 5 ; 18 6 ; 1 7 ; 1 1; 4 9; 5 8; 9 8;11 12 ; 0 2; 5 15;13 19; 8 14;11 20; 7 2 ; 0 6;19 4;19 7; 2 8;16 8;18 17; 9 6 ; 0

Responda d1 d2 d3

s1

s2

s3

p1

p2

p3

88-08, Pedro Kantek

552

verso de 10 de fevereiro de 2008 a

CAP ITULO 55. EXERC ICIOS PRATICOS - 162

55.7
Domin o

Exerc cio 4

6 ; 2 4;5 4;4 6;6 3;2 4;4 1 ; 0 7 ; 3 4;1 1;2 3;0 5;4 3;4 3;4 3 ; 0 8 ; 4 5;0 2;4 3;6 3;6 2;1 4;0 2;2 1 ; 0 Sorvete 870 770 920 0 0 4;440 450;100 270;150 250;410 460 5;190 250; 20 220;350 460;370 560;250 330 6;170 220; 40 190;320 430;250 270;190 200; 90 180

Pirmide de caixas a 5 ; 10 6 ; 1 7 ; 9 9;11 13; 9 15;11 14; 1 12 ; 0 4;18 4; 5 8;18 3; 1 16; 5 8 ; 0 8; 7 14; 1 12; 6 16;13 3;10 5; 6 10 ; 0 s1 s2 s3 p1 p2 p3

Responda d1 d2 d3

55.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

verso de 10 de fevereiro de 2008 a

553

88-08, Pedro Kantek

Potrebbero piacerti anche