Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos
SUMARIO 4 Comandos 4.1 Vis ao Top down e Bottom up . . . . . . . . . . . . 4.2 Seq u encia de execu ca o . . . . . . . . . . . . . . . . 4.3 Entrada/Sa da . . . . . . . . . . . . . . . . . . . . 4.3.1 Comando de Entrada . . . . . . . . . . . . 4.3.2 Comando de Sa da . . . . . . . . . . . . . . 4.4 O comando alternativo . . . . . . . . . . . . . . . . 4.4.1 Alternativa simples . . . . . . . . . . . . . . 4.4.2 Alternativa composta . . . . . . . . . . . . 4.4.3 Alternativas aninhadas . . . . . . . . . . . . 4.5 Estruturas de repeti ca o . . . . . . . . . . . . . . . 4.5.1 Repeti ca o com condi ca o no in cio: enquanto 4.5.2 Repeti ca o com vari avel de controle: para . 4.5.3 Repeti ca o com condi ca o no nal: repita . . 4.5.4 Comando de m ultipla escolha: Escolha . . . 4.5.5 Abandono de itera ca o: abandone . . . . . . 75 75 75 76 76 77 77 77 78 78 83 83 84 86 96 97
Sum ario
1 Contrato Pedag ogico 2 Ci encia da Computa c ao 2.1 Representa ca o do conhecimento . . . . . 2.2 Algoritmo . . . . . . . . . . . . . . . . . 2.2.1 Qualidades de um bom algoritmo 2.2.2 Como se escreve um algoritmo . 2.3 Portugol . . . . . . . . . . . . . . . . . . 2.4 Programa ca o Estruturada . . . . . . . . 2.5 A m aquina de Turing . . . . . . . . . . 2.6 Linguagens de programa ca o . . . . . . . 2.6.1 Assembler . . . . . . . . . . . . . 2.6.2 Fortran . . . . . . . . . . . . . . 2.6.3 Lisp . . . . . . . . . . . . . . . . 2.6.4 Prolog . . . . . . . . . . . . . . . 2.6.5 Cobol . . . . . . . . . . . . . . . 2.6.6 APL . . . . . . . . . . . . . . . . 2.6.7 Basic . . . . . . . . . . . . . . . . 2.6.8 Clipper . . . . . . . . . . . . . . 2.6.9 Natural . . . . . . . . . . . . . . 2.6.10 Pascal . . . . . . . . . . . . . . . 2.6.11 C . . . . . . . . . . . . . . . . . . 2.6.12 Java . . . . . . . . . . . . . . . . 2.6.13 PHP . . . . . . . . . . . . . . . . 2.6.14 J . . . . . . . . . . . . . . . . . . 3 Escrevendo algoritmos 3.1 Nome . . . . . . . . . . . . 3.2 Vari aveis . . . . . . . . . . . 3.2.1 Tipos de vari aveis . 3.2.2 C odigo de caracteres 3.3 Comando de atribui ca o . . 3.4 Express oes . . . . . . . . . . 3.4.1 Aritm eticas . . . . . 3.4.2 Relacionais . . . . . 3.4.3 L ogicas . . . . . . . 13 27 27 31 32 34 34 39 40 42 42 43 44 45 46 47 48 49 50 50 51 52 53 54 55 55 57 57 58 61 62 62 68 68
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
5 Nassi-Schneiderman 105 5.1 Chines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6 Visualg 6.1 Regras de Visualg . . . . . . . . . . . . . . . 6.2 Exemplos de Visualg . . . . . . . . . . . . . . 6.2.1 Criando uma raiz quadrada . . . . . . 6.2.2 Achando ra zes por Newton-Raphson . 6.2.3 Depura ca o de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 . 109 . 114 . 116 . 117 . 118
7 Modulariza c ao: fun co es 119 7.1 Fun co es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.1.1 Vari aveis globais e locais . . . . . . . . . . . . . . . . . . . . . . . . 120 8 Vetores e Matrizes 8.1 Deni ca o de Vetor . . . . . . . . . . . . 8.1.1 Origem dos ndices . . . . . . . . 8.2 Opera co es B asicas . . . . . . . . . . . . 8.3 Ordena ca o . . . . . . . . . . . . . . . . . 8.4 Opera co es fundamentais na Inform atica 8.5 Tabelas . . . . . . . . . . . . . . . . . . 8.6 Merge (intercala ca o) de dois vetores . . 8.7 Pesquisa seq uencial . . . . . . . . . . . . 8.8 Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 . 123 . 124 . 125 . 129 . 130 . 133 . 135 . 137 . 149
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . . 3
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
9 Registros 157 9.1 Deni ca o de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 9.2 Processamento de Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 9.2.1 Calend arios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 10 Exerc cios pr aticos: 003 -Raiz quadrada 10.1 Exemplo de um algoritmo: raiz quadrada 10.2 Exerc cio 1 . . . . . . . . . . . . . . . . . 10.3 Exerc cio 2 . . . . . . . . . . . . . . . . . 10.4 Exerc cio 3 . . . . . . . . . . . . . . . . . 10.5 Exerc cio 4 . . . . . . . . . . . . . . . . .
88-08, Pedro Kantek
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
SUMARIO 10.6 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 11 Exerc cios Pr aticos: 004-Introdu c ao 11.1 Algoritmos . . . . . . . . . . . . . . . . . . . 11.1.1 M aximo Divisor Comum . . . . . . . . 11.1.2 Algoritmo do M aximo Divisor Comum 11.1.3 Algoritmos no dia a dia . . . . . . . . 11.1.4 Exerc cio 1 . . . . . . . . . . . . . . . 11.1.5 Exerc cio 2 . . . . . . . . . . . . . . . 11.1.6 Exerc cio 3 . . . . . . . . . . . . . . . 11.1.7 Exerc cio 4 . . . . . . . . . . . . . . . 11.1.8 Exerc cio 5 . . . . . . . . . . . . . . . 11.1.9 Exerc cio 6 . . . . . . . . . . . . . . . 11.1.10 Exerc cio 7 . . . . . . . . . . . . . . . 11.1.11 Exerc cio 8 . . . . . . . . . . . . . . . 11.1.12 Exerc cio 9 . . . . . . . . . . . . . . . 11.1.13 Exerc cio 10 . . . . . . . . . . . . . . . 11.1.14 Respostas . . . . . . . . . . . . . . . . 12 Exerc cio pr atico: 006-Jogo 12.1 O jogo da vida . . . . . . 12.2 Exerc cio 1 . . . . . . . . 12.3 Exerc cio 2 . . . . . . . . 12.4 Exerc cio 3 . . . . . . . . 12.5 Exerc cio 4 . . . . . . . . 12.6 Respostas . . . . . . . . . 13 Exerc cio Pr atico:007-GPS 13.1 GPS . . . . . . . . . . . . 13.1.1 Problemas . . . . . 13.2 Dois amigos . . . . . . . . 13.2.1 Exemplo . . . . . . 13.2.2 Como fazer . . . . 13.2.3 Problema 1 . . . . 13.2.4 Problema 2 . . . . 13.2.5 Problema 3 . . . . 13.2.6 Problema 4 . . . . 13.2.7 Problema 5 . . . . 13.2.8 Problema 6 . . . . 13.2.9 Problema 7 . . . . 13.2.10 Problema 8 . . . . 13.2.11 Problema 9 . . . . 13.2.12 Problema 10 . . . 13.2.13 Respostas . . . . . da . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 . 187 . 188 . 188 . 189 . 189 . 189 . 190 . 190 . 190 . 190 . 190 . 190 . 191 . 191 . 191 193 . 193 . 195 . 196 . 196 . 197 . 197 199 . 201 . 202 . 202 . 203 . 203 . 203 . 204 . 204 . 204 . 205 . 205 . 205 . 205 . 206 . 206 . 206 207 . 207 . 207 . 208 . 208 . 208 . 208 . 209 14.1.7 Problema 7 . 14.1.8 Problema 8 . 14.1.9 Problema 9 . 14.1.10 Problema 10 14.1.11 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SUMARIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 . 209 . 209 . 209 . 209 211 . 211 . 212 . 213 . 214 . 215 . 215 217 . 217 . 217 . 217 . 218 . 218 . 218 . 219 . 219 . 219 . 220 . 220 . 220 . 220 . 221 . 221 . 222 . 222 . 222 . 223 . 223 . 223 . 224 . 224 225 . 225 . 226 . 226 . 226 . 227 . 227 . 228 . 228 . 228 . 229 . 229 . 229 . 230
15 Exerc cio pr atico: 009-Achar o 15.1 Qual o n umero que falta ? . . 15.2 Exerc cio 1 . . . . . . . . . . 15.3 Exerc cio 2 . . . . . . . . . . 15.4 Exerc cio 3 . . . . . . . . . . 15.5 Exerc cio 4 . . . . . . . . . . 15.6 Respostas . . . . . . . . . . .
n umero que . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . .
falta . . . . . . . . . . . . . . . . . . . . . . . .
16 Exerc cios Pr aticos: 011 - Matem atica 16.1 Exerc cio 1 . . . . . . . . . . . . . . . 16.1.1 Exerc cio 1.1 . . . . . . . . . . 16.1.2 Exerc cio 1.2 . . . . . . . . . . 16.1.3 Exerc cio 1.3 . . . . . . . . . . 16.1.4 Exerc cio 1.4 . . . . . . . . . . 16.1.5 Exerc cio 1.5 . . . . . . . . . . 16.1.6 Exerc cio 1.6 . . . . . . . . . . 16.1.7 Exerc cio 1.7 . . . . . . . . . . 16.1.8 Exerc cio 1.8 . . . . . . . . . . 16.1.9 Exerc cio 1.9 . . . . . . . . . . 16.1.10 Exerc cio 1.10 . . . . . . . . . . 16.2 Exerc cio 2 . . . . . . . . . . . . . . . 16.2.1 Exerc cio 2.1 . . . . . . . . . . 16.2.2 Exerc cio 2.2 . . . . . . . . . . 16.2.3 Exerc cio 2.3 . . . . . . . . . . 16.2.4 Exerc cio 2.4 . . . . . . . . . . 16.2.5 Exerc cio 2.5 . . . . . . . . . . 16.2.6 Exerc cio 2.6 . . . . . . . . . . 16.2.7 Exerc cio 2.7 . . . . . . . . . . 16.2.8 Exerc cio 2.8 . . . . . . . . . . 16.2.9 Exerc cio 2.9 . . . . . . . . . . 16.2.10 Exerc cio 2.10 . . . . . . . . . . 16.2.11 Respostas . . . . . . . . . . . .
14 Exerc cio Pr atico: 008 - Problemas 14.1 Resolva os exerc cios a seguir . . . 14.1.1 Problema 1 . . . . . . . . . 14.1.2 Problema 2 . . . . . . . . . 14.1.3 Problema 3 . . . . . . . . . 14.1.4 Problema 4 . . . . . . . . . 14.1.5 Problema 5 . . . . . . . . . 14.1.6 Problema 6 . . . . . . . . .
vers ao de 10 de fevereiro de 2008
17 Exerc cios Pr aticos: 017-SEs compostos 17.1 SEs compostos e encadeados . . . . . . . 17.1.1 Exerc cio 1.1 . . . . . . . . . . . 17.1.2 Exerc cio 1.2 . . . . . . . . . . . 17.1.3 Exerc cio 1.3 . . . . . . . . . . . 17.1.4 Exerc cio 1.4 . . . . . . . . . . . 17.1.5 Exerc cio 1.5 . . . . . . . . . . . 17.1.6 Exerc cio 1.6 . . . . . . . . . . . 17.2 Exerc cio 2 . . . . . . . . . . . . . . . . 17.2.1 Exerc cio 2.1 . . . . . . . . . . . 17.2.2 Exerc cio 2.2 . . . . . . . . . . . 17.2.3 Exerc cio 2.3 . . . . . . . . . . . 17.2.4 Exerc cio 2.4 . . . . . . . . . . . 17.2.5 Exerc cio 2.5 . . . . . . . . . . .
88-08, Pedro Kantek
SUMARIO 17.2.6 Exerc cio 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 17.2.7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 18 Exerc cios Pr aticos: 018-FLuxogramas 18.1 Exerc cios de Fluxos e Pseudoc odigo . 18.1.1 Exerc cio 1 . . . . . . . . . . . 18.1.2 Exerc cio 2 . . . . . . . . . . . 18.1.3 Respostas . . . . . . . . . . . . 19 Exerc cios 19.0.4 19.0.5 19.0.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 . 233 . 233 . 239 . 245 24 Exerc cios Pr aticos: 035 - Localiza c ao de oleoduto 24.1 Localiza ca o de oleoduto . . . . . . . . . . . . . . . . 24.2 Exerc cios . . . . . . . . . . . . . . . . . . . . . . . . 24.3 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . . . . 24.4 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . . . . 24.5 Exerc cio 3 . . . . . . . . . . . . . . . . . . . . . . . 24.6 Respostas . . . . . . . . . . . . . . . . . . . . . . . . 25 Exerc cios Pr aticos: 054 - Kumon de 25.1 Treinamento b asico em Algoritmos . 25.2 Exerc cio 1 . . . . . . . . . . . . . . 25.3 Exerc cio 2 . . . . . . . . . . . . . . 25.4 Exerc cio 3 . . . . . . . . . . . . . . 25.5 Respostas . . . . . . . . . . . . . . . 26 Exerc cios Pr aticos: 26.1 Por exemplo . . . 26.2 Exerc cio 1 . . . 26.3 Exerc cio 2 . . . 26.4 Exerc cio 3 . . . 26.5 Respostas . . . . algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SUMARIO 291 . 291 . 292 . 292 . 293 . 293 . 294 295 . 295 . 295 . 298 . 302 . 305 307 . 307 . 307 . 310 . 312 . 315 317 . 317 . 318 . 320 . 322 . 324 327 . 327 . 330 . 334 . 338 339 . 339 . 341 . 343 . 346 . 348 349 . 349 . 352 . 353 . 353 . 354 . 354
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
Pr aticos: 018 - Nassi 247 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 . 259 . 259 . 262 . 266 267 . 267 . 271 . 271 . 272 . 272 . 273 . 275 277 . 277 . 279 . 282 . 283 . 283 . 284 285 . 285 . 285 . 286 . 286 . 287 . 287 . 288 . 288 . 288 . 288 . 288 . 288 . 289 . 289 . 289
20 Exerc cios pr aticos: 021 - 5 fun co es 20.1 Fun co es num ericas . . . . . . . . . 20.1.1 Exerc cio 1 . . . . . . . . . 20.1.2 Exerc cio 2 . . . . . . . . . 20.1.3 Respostas . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
21 Exerc cios Pr aticos: 024 -DVs 21.1 D gitos Vericadores . . . . . . . . . . . . 21.1.1 M odulo 10 . . . . . . . . . . . . . . 21.1.2 M odulo 11 . . . . . . . . . . . . . . 21.1.3 CPF (Cadastro de Pessoas F sicas) 21.1.4 CNPJ (antigo CGC) . . . . . . . . 21.2 Exerc cio 1 . . . . . . . . . . . . . . . . . 21.2.1 Respostas . . . . . . . . . . . . . . 22 Exerc cios Pr aticos: 027 - aritm etica 22.1 Aritm etica n ao decimal . . . . . . . 22.1.1 Programa VISUALG . . . . . 22.2 Exerc cio 1 . . . . . . . . . . . . . . 22.3 Exerc cio 2 . . . . . . . . . . . . . . 22.4 Exerc cio 3 . . . . . . . . . . . . . . 22.4.1 Respostas . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
n ao decimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 Exerc cios Pr aticos: 062 - Engenharia reversa 27.1 Engenharia Reversa de algoritmos . . . . . . . 27.2 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . 27.3 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . 27.4 Exerc cio 3 . . . . . . . . . . . . . . . . . . . . 27.5 Respostas . . . . . . . . . . . . . . . . . . . . . 28 Exerc cios Pr aticos: 28.1 Exerc cio 1 . . . 28.2 Exerc cio 2 . . . 28.3 Exerc cio 3 . . . 28.4 Respostas . . . . 29 Exerc cios Pr aticos: 29.1 Exerc cio 1 . . . 29.2 Exerc cio 2 . . . 29.3 Exerc cio 3 . . . 29.4 Exerc cio 4 . . . 29.5 Respostas . . . . 30 Exerc cios Pr aticos: 30.1 Exemplos . . . . 30.2 Exerc cio 1 . . . 30.3 Exerc cio 2 . . . 30.4 Exerc cio 3 . . . 30.5 Exerc cio 4 . . . 30.6 Respostas . . . .
88-08, Pedro Kantek
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
enquanto, . . . . . . . . . . . . . . . . . . . . . . . . . . . .
repita . . . . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
23 Exerc cios Pr aticos: 031 - Manipula c ao de datas 23.1 Algoritmos de Calend ario . . . . . . . . . . . . . . 23.1.1 C alculo do dia da semana . . . . . . . . . . 23.1.2 C alculo dos feriados m oveis . . . . . . . . . 23.1.3 Bissexto . . . . . . . . . . . . . . . . . . . . 23.2 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . . . 23.3 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . . . 23.4 Exerc cio 3 . . . . . . . . . . . . . . . . . . . . . . 23.5 Exerc cio 4 . . . . . . . . . . . . . . . . . . . . . . 23.6 Exerc cio 5 . . . . . . . . . . . . . . . . . . . . . . 23.7 Exerc cio 6 . . . . . . . . . . . . . . . . . . . . . . 23.8 Exerc cio 7 . . . . . . . . . . . . . . . . . . . . . . 23.9 Exerc cio 8 . . . . . . . . . . . . . . . . . . . . . . 23.10Exerc cio 9 . . . . . . . . . . . . . . . . . . . . . . 23.11Exerc cio 10 . . . . . . . . . . . . . . . . . . . . . . 23.12Respostas . . . . . . . . . . . . . . . . . . . . . . .
vers ao de 10 de fevereiro de 2008
algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
073 - achar o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
d ecimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
termo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
SUMARIO 31 Exerc cios Pr aticos: 31.1 Exerc cio 1 . . . 31.1.1 Algoritmo 31.1.2 Algoritmo 31.1.3 Algoritmo 31.2 Exerc cio 2 . . . 31.2.1 Algoritmo 31.2.2 Algoritmo 31.2.3 Algoritmo 31.2.4 Algoritmo 31.3 Exerc cio 3 . . . 31.3.1 Algoritmo 31.3.2 Algoritmo 31.3.3 Algoritmo 077 - Algoritmos . . . . . . . . . . . . 1 . . . . . . . . . . . 2 . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . 2 . . . . . . . . . . . 3 . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . 2 . . . . . . . . . . . 3 . . . . . . . . . . . 355 355 355 355 356 357 357 358 358 359 359 359 360 360 38 Exerc cios Pr aticos: 38.1 Exerc cio 1 . . . 38.2 Exerc cio 2 . . . 38.3 Exerc cio 3 . . . 38.4 Exerc cio 4 . . . 38.5 Respostas . . . . 125c - Corre c ao de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Corre c ao de Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SUMARIO 421 . 421 . 425 . 429 . 433 . 437 439 . 439 . 442 . 446 . 449 . 452 453 . 456 . 456 . 457 . 457 . 457
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
39 Exerc cios Pr aticos 125d 39.1 Exerc cio 1 . . . . . . 39.2 Exerc cio 2 . . . . . . 39.3 Exerc cio 2 . . . . . . 39.4 Exerc cio 3 . . . . . . 39.5 Respostas . . . . . . . 40 Exerc cios Pr aticos: 40.1 Exerc cio 1 . . . 40.2 Exerc cio 2 . . . 40.3 Exerc cio 3 . . . 40.4 Exerc cio 4 . . . 40.5 Respostas . . . . 41 Exerc cios pr aticos: 41.1 Exerc cio 1 . . . 41.2 Exerc cio 3 . . . 41.3 Exerc cio 4 . . .
32 Exerc cio Pr atico: 084 Balance LIne 363 32.1 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 33 Exerc cios Pr aticos: 33.1 Exerc cio 1 . . . 33.2 Exerc cio 2 . . . 33.3 Exerc cio 3 . . . 33.4 Respostas . . . . 110 - indexa c ao e indire c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 . 370 . 372 . 374 . 376 377 . 377 . 380 . 380 . 380 . 381 383 386 386 386 387
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
cubo RUBIK 459 . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 . 467 . 468 . 468 . 469 . 469 . 470 . 470 . 471 473 . 474 . 474 . 476 . 476 . 477 . 477 479 . 479 . 480 . 481 . 482 . 482 . 483 . 483 . 484
34 Exerc cios Pr aticos: 116 - manuseio de tabelas 34.1 Manuseio de tabelas . . . . . . . . . . . . . . . . 34.2 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . . 34.3 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . . 34.4 Exerc cio 3 . . . . . . . . . . . . . . . . . . . . . 34.5 Respostas . . . . . . . . . . . . . . . . . . . . . . 35 Exerc cio Pr atico: 35.1 Exerc cio 1 . . 35.2 Exerc cio 2 . . 35.3 Exerc cio 3 . . 35.4 Exerc cio 4 . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
42 Exerc cios pr aticos: 139 - Ostras 42.1 A fazenda de ostras de Zing Zhu . . . . . 42.1.1 Resolvendo... . . . . . . . . . . . . 42.1.2 Truques usados na implementa ca o 42.2 Exerc cio 1 . . . . . . . . . . . . . . . . . 42.3 Exerc cio 2 . . . . . . . . . . . . . . . . . 42.4 Exerc cio 3 . . . . . . . . . . . . . . . . . 42.5 Exerc cio 4 . . . . . . . . . . . . . . . . . 42.6 Respostas . . . . . . . . . . . . . . . . . . 43 Exerc cios pr aticos: 144 - romanos 43.0.1 Convers ao de romano para ar abico 43.0.2 Convers ao de ar abico para romano 43.1 Exerc cio 1 . . . . . . . . . . . . . . . . . 43.2 Exerc cio 2 . . . . . . . . . . . . . . . . . 43.3 Exerc cio 3 . . . . . . . . . . . . . . . . . 43.4 Respostas . . . . . . . . . . . . . . . . . . 44 Exerc cios Pr aticos: 148 - diversos 44.1 Universidade de Pinguinhos / cubos 44.2 Exerc cio 1 . . . . . . . . . . . . . . 44.2.1 Cubos Coloridos . . . . . . . 44.3 Exerc cio 1a . . . . . . . . . . . . . . 44.4 Exerc cio 2 . . . . . . . . . . . . . . 44.5 Exerc cio 2a . . . . . . . . . . . . . . 44.6 Exerc cio 3 . . . . . . . . . . . . . . 44.7 Exerc cio 3a . . . . . . . . . . . . . .
88-08, Pedro Kantek
36 Exerc cios Pr aticos: 36.1 Exerc cio 1 . . . 36.2 Exerc cio 2 . . . 36.3 Exerc cio 3 . . . 36.4 Exerc cio 4 . . . 36.5 Respostas . . . . 37 Exerc cios Pr aticos: 37.1 Exerc cio 1 . . . 37.2 Exerc cio 2 . . . 37.3 Exerc cio 3 . . . 37.4 Exerc cio 4 . . . 37.5 Respostas . . . .
vers ao de 10 de fevereiro de 2008
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
389 . 389 . 393 . 396 . 400 . 404 405 . 405 . 409 . 412 . 416 . 419
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
10
SUMARIO 44.8 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 45 Exerc cios Pr aticos: 45.1 A Piscina . . . . 45.2 Exerc cio 1 . . . 45.3 M agico . . . . . . 45.4 Exerc cio 1a . . . 45.5 Exerc cio 2 . . . 45.6 Exerc cio 2a . . . 45.7 Exerc cio 3 . . . 45.8 Exerc cio 3a . . . 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
SUMARIO 50.7 Exerc cio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 50.8 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 51 Exerc cio pr atico 51.1 Seq u encias . . 51.2 Carga Pesada 51.3 Rede o tica . . 51.4 Exerc cio 1 . 51.5 Exerc cio 2 . 51.6 Exerc cio 3 . 51.7 Exerc cio 4 . 51.8 Respostas . . 52 Exerc cio pr atico 52.1 Quermesse . . 52.2 Bits Trocados 52.3 Saldo de gols 52.4 Exerc cio 1 . 52.5 Exerc cio 2 . 52.6 Exerc cio 3 . 52.7 Exerc cio 4 . 52.8 Respostas . . 53 Exerc cio pr atico 53.1 Macaco-prego 53.2 MASP . . . . 53.3 Exerc cio 1 . 53.4 Exerc cio 2 . 53.5 Exerc cio 3 . 53.6 Exerc cio 4 . 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
46 Exerc cios Pr aticos: 152 - Regata de cientistas e Luzes da Festa 46.1 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46.2 Regata de cientistas . . . . . . . . . . . . . . . . . . . . . . . . . . . 46.3 Ilumina ca o da festa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46.4 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46.5 Exerc cio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46.6 Exerc cio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46.7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Exerc cios pr aticos: 153a - Jogo do Ret angulo 47.1 Jogo do ret angulo . . . . . . . . . . . . . . . . . 47.2 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . 47.3 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . 47.4 Exerc cio 3 . . . . . . . . . . . . . . . . . . . . 47.5 Exerc cio 4 . . . . . . . . . . . . . . . . . . . . 47.6 Respostas . . . . . . . . . . . . . . . . . . . . . 48 Exerc cios Pr aticos: 48.1 Exerc cio 1 . . . 48.2 Exerc cio 2 . . . 48.3 Exerc cio 3 . . . 48.4 Exerc cio 4 . . . 48.5 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
159 . . . . . . . . . . . . . . . . . . . . . . . . 160 . . . . . . . . . . . . . . . . . . . . .
Descarga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
do vulc ao503 . . . . . 503 . . . . . 506 . . . . . 507 . . . . . 508 . . . . . 509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 . 511 . 512 . 514 . 514 . 515 . 515 . 516 517 . 517 . 518 . 519 . 519 . 520 . 521
49 Exerc cio pr atico: 156 - Genoma e Palavras Cruzadas 49.1 Projeto Genoma . . . . . . . . . . . . . . . . . . . . . . 49.2 Palavras Cruzadas . . . . . . . . . . . . . . . . . . . . . 49.3 Exerc cio 1 . . . . . . . . . . . . . . . . . . . . . . . . . 49.4 Exerc cio 2 . . . . . . . . . . . . . . . . . . . . . . . . . 49.5 Exerc cio 3 . . . . . . . . . . . . . . . . . . . . . . . . . 49.6 Exerc cio 4 . . . . . . . . . . . . . . . . . . . . . . . . . 49.7 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Exerc cio pr atico 157 50.1 Trem ou Caminh ao? 50.2 RoboCoee . . . . . 50.3 Restaurante . . . . . 50.4 Exerc cio 1 . . . . . 50.5 Exerc cio 2 . . . . . 50.6 Exerc cio 3 . . . . .
vers ao de 10 de fevereiro de 2008
54 Exerc cio pr atico - 161 54.1 An eis quadrados . . 54.2 Balaio . . . . . . . . 54.3 Meteoros . . . . . . 54.4 Exerc cio 1 . . . . . 54.5 Exerc cio 2 . . . . . 54.6 Exerc cio 3 . . . . . 54.7 Exerc cio 4 . . . . . 54.8 Respostas . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . 11
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
55 Exerc cios pr aticos - 162 55.1 Domin o . . . . . . . . 55.2 Sorvete . . . . . . . . 55.3 Pir amide . . . . . . . . 55.4 Exerc cio 1 . . . . . . 55.5 Exerc cio 2 . . . . . . 55.6 Exerc cio 3 . . . . . . 55.7 Exerc cio 4 . . . . . . 55.8 Respostas . . . . . . .
12
CAP ITULO 1. CONTRATO PEDAGOGICO Apresenta os conceitos de divis ao inteira e resto e a seguir pede para analisar o algoritmo de mdc (m aximo divisor comum) devido a Euclides (aprox 400aC). Al em disso, o exerc cio pede um algoritmo de uma tarefa trivial do dia a dia do aluno.
Cap tulo 1
Jogo da vida
c odigo: 6 nalizado em 23/10/07 Um exercicio simples, no qual o Jogo da Vida (Conway, 1970) e apresentado e s ao feitos coment arios sobre a sua import ancia na Ci encia da Computa ca o. As 4 regras do jogo s ao apresentadas e depois e dado um tabuleiro 10 10. Pede-se ao aluno que simule 4 gera co es e informe depois como caram 4 c elulas do tabuleiro especialmente escolhidas. O objetivo do exerc cio e divertir e depois trabalhar ainda informalmente os conceitos de: matriz, algoritmo, itera ca o, entre outros.
Introdu c ao a algoritmos
c odigo: 4 nalizado em 20/12/05 13
14
Localiza c ao de um oleoduto
c odigo: 35 nalizado em 27/12/02 9 po cos de petr oleo s ao dispostos sobre uma grade de 100m 100m. Pede-se que o aluno calcule de que maneira lig a-los atrav es de tubos de maneira a minimizar a quantidade de tubos usados. Exerc cio extra do do livro do Cormen, p ag 155 da edi ca o brasileira.
Kumon de algoritmos
c odigo: 54 nalizado em 23/06/06 Esta folha e para treinar os comandos b asicos de algoritmos (se, enquanto, repita e para). S ao 17 exerc cios simples, de apenas um u nico comando cada um deles.
D gitos vericadores
c odigo: 24 nalizado em 04/02/01 Mostra-se a import ancia dos DVs e depois mostra-se os algoritmos de c alculo do CPF e do CNPJ. O aluno deve calcular os DVs de 2 CPFs e de 2 CNPJs.
15
16
Chines de algoritmos II
c odigo: 69 nalizado em 29/02/00 4 fun co es geradas aleatoriamente, mas que garantidamente executam em tempo nito s ao mostradas. Cada fun ca o recebe 5 valores mostrados. Pede-se que o aluno calcule e informe, ao nal da execu ca o de cada fun ca o, o valor da soma das 5 vari aveis originais.
Indexa c ao e indire c ao
c odigo: 110 nalizado em 18/02/01 Dados 3 vetores de 16 valores num ericos cada e dadas 5 vari aveis num ericas globais, o exerc cio pede que o aluno ache o resultado de 48 opera co es de indexa ca o e de indire ca o.
Manuseio de tabelas II
c odigo: 119 nalizado em 10/08/06 S ao mostrados 5 algoritmos: inclus ao em tabelas desordenadas, exclus ao puxando os sobrantes, exclus ao preenchendo com um indicador de exclus ao, busca bin aria e inclus ao em tabela ordenada. Por enquanto, a folha pede apenas o preenchimento de algumas complexidades. As folhas s ao todas iguais entre si.
c odigo: 73 nalizado em 04/06/06 Este exerc cio mostra 20 seq u encias de 7 n umeros cada. Cada uma e resultado de um ciclo para no qual est ao envolvidas 1, 2 ou 3 vari aveis, cujo valor e desconhecido. Ao aluno cabe: sugerir valores para x, y e z vericar se os valores sugeridos geram a seq u encia dada corrigir se necess ario e voltar a testar ap os o acerto, gerar e responder o 10o termo.
Chines de algoritmos
c odigo: 77 nalizado em 21/02/00 4 fun co es usuais na inform atica s ao mostradas: busca em cadeias, m edias em um vetor num erico, ordena ca o por inser ca o e soma de colunas em uma matriz. Dados de entrada s ao fornecidos, junto com o c odigo de cada fun ca o pedindo-se ao aluno que inra os resultados que ser ao produzidos.
Balance Line
c odigo: 84 nalizado em 02/03/00 O algoritmo de balance line e mostrado e e discutida a sua import ancia para atualiza ca o em lote de grandes volumes de dados. O exerc cio oferece dois arquivos de 30 registros cada (o arquivo de cadastro antigo e o arquivo de movimenta co es), pedindo-se ao aluno que gere o novo cadastro atualizado bem como o relat orio de incompatibilidades da atualiza ca o. Perguntas s ao feitas sobre o conte udo dessas duas sa das
vers ao de 10 de fevereiro de 2008
17
18
Universidade Pinguinhos
c odigo: 148 nalizado em 07/10/06 Problema retirado da Maratona de Programa ca o de 2005 da ACM. D a-se um curso universit ario composto de cerca de 15 mat erias com diversas rela co es de pr e-requisitos. Estabelecida a prioridade das mat erias, e a quantidade m axima de mat erias por semestre, pede-se que o aluno monte a grade proposta.
N umeros romanos
c odigo: 144 nalizado em 16/09/06 Apresenta o sistema romano de numera ca o. Os algoritmos de convers ao de ar abico para romano e vice-versa s ao apresentados. H a 6 convers oes em cada sentido para o aluno fazer. Deve-se alertar o fato de que na convers ao de ar abico romano h a v arias respostas poss veis (todas corretas) devendo o aluno fazer aquela que e dada pelo algoritmo estudado. Isto atrapalha o uso de conversores livremente dispon veis para resolver o problema proposto.
vers ao de 10 de fevereiro de 2008
Caminho e Vulc ao
c odigo: 155 nalizado em 11/08/07 Dois exerc cios baseados em similares pedidos na Olimp ada Espanhola de Inform atica. No primeiro, uma matriz de letras e estabelecida e pede-se o caminho que estabelece uma palavra dada. Note-se que a matriz tem as extremidades ligadas, o que torna mais complexa a busca. No segundo, um vulc ao descrito pelas altitudes de seus plat os, 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
19
20
21
22
CAP ITULO 1. CONTRATO PEDAGOGICO Apenas de solu ca o de problemas. S ao eles: Excurs ao dos alunos(2), Conjunto de rock (2), azulejos (1) e transporte de alunos (2).
23
24
Meu nome e Pedro Luis Kantek Garcia Navarro, conhecido como Kantek, ou Pedro Kantek. Nasci em Curitiba h a mais de 50 anos. Sou portanto brasileiro, curitibano e coxa-branca com muito orgulho, mas sendo lho de espanh ois (meus 7 irm aos nasceram l a), tenho tamb em a nacionalidade espanhola. Aprendi a falar em castellano, o portugu es e portanto meu segundo idioma. Estudei no Col egio Bom Jesus e quando chegou a hora de escolher a pross ao, l a por 1972, fui para a engenharia civil, mas sem muita convic ca o. Durante a copa do mundo de futebol de 1974 na Alemanha, ao folhear a Gazeta do Povo, achei um pequeno an uncio sobre um est agio na area de processamento de dados (os nomes inform atica e computa ca o ainda n ao existiam). L a fui eu para um est agio na CELEPAR, que hoje, mais de 30 anos ap os, ainda n ao acabou. Na CELEPAR j a fui de tudo: programador, analista, suporte a BD (banco de dados), suporte a TP (teleprocessamento), coordenador de auto-servi co, coordenador de atendimento, ... Atualmente estou na area de governo eletr onico. Desde cedo encasquetei que uma boa 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 n ao existe mais. Passei por FAE, PUC e cheguei ` as Faculdades Positivo em 1988. Sou o decano do curso de inform atica e um dos mais antigos professores da casa. Na d ecada de 80, 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, S ao Paulo, Fortaleza, Floripa, ...). Em 90, resolvi voltar a estudar e fui fazer o mestrado em inform atica industrial no CEFET. Ainda peguei a u ltima leva dos professores franceses que iniciaram o curso. Em 93 virei mestre, e a minha disserta ca o foi publicada em livro pela editora Campus (Downsizing de sistemas de Informa ca o. Rio de Janeiro: Campus, 1994. 240p, ISBN:85-7001-926-2). O primeiro cheque dos direitos autorais me manteve um m es em Nova Iorque, estudando ingl es. Ali as, foi o quarto livro de minha carreira de escritor, antes j a havia 3 outros (MS WORD - Guia do Usu ario Brasileiro. Rio de Janeiro: Campus, 1987. 250p, ISBN:85-7001-507-0, Centro de Informa co es. Rio de Janeiro: Campus, 1985. 103p, ISBN:85-7001-383-3 e APL - Uma linguagem de programa ca o. Curitiba. CELEPAR, 1982. 222p). Depois vieram outros. Terminando o mestrado, rapidamente para n ao perder o f olego, engatei o doutorado em engenharia el etrica. Ele se iniciou em 1994 na UFSC em Florian opolis. S o terminou em 2000, foram 6 anos inesquec veis, at e porque nesse meio tive que aprender o franc es - mais um m es em Paris aprendendo-o. Finalmente virei engenheiro, 25 anos depois de ter iniciado a engenharia civil. Esqueci de dizer que no meio do curso de Civil desist (c a pra n os o assunto era meio chato...) em favor de algo muito mais emocionante: matem atica. Nessa epoca ainda n ao havia cursos superiores de inform atica. Formei-me em matem atica na PUC/Pr em 1981. Em 2003, 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 Brasilz ao que sequer imaginava existirem (por exemplo, Rondon opolis, Luizi ania, Rio Grande, entre outros), sempre avaliando os cursos na area de inform atica: sistemas de informa ca o, engenharia e ci encia da computa ca o. Atualmente estou licenciado da PUC e no UNICENP respondo por 4 cadeiras: Algoritmos (1. ano de sistemas de informa ca o), Estrutura de Dados (2.ano, idem) e T opicos Avan cados em Sistemas de Informa ca o (4.ano, idem), al em de Intelig encia Articial ( ultimo ano de Engenharia da Computa ca o). J a z um bocado de coisas na vida, mas acho que um dos meus sonhos e um dia ser professor de matem atica para crian cas: tentar despert a-las para este mundo fant astico, do qual lastimavelmente boa parte delas nunca chega sequer perto ao longo de sua vida.
vers ao de 10 de fevereiro de 2008
25
26
CAP ITULO 2. CIENCIA DA COMPUTAC AO 5. Com a fala, os dois sujeitos tem que estar t ete-` a-t ete. A seguir, surge a escrita. Agora a comunica ca o e poss vel na modalidade um-muitos (Antes era um-um) e mesmo um c erebro morto pode se comunicar pela escrita. 6. Enquanto a escrita e manuscrita, est a naturalmente limitada. A pr oxima novidade e a imprensa que ao automatizar a produ ca o de textos, amplia signicativamente o acesso e a dissemina ca o de informa co es. 7. Finalmente, o u ltimo est agio da amplia ca o do conhecimento reside no software. Hoje, 23 milh oes de brasileiros sabem declarar seu IR, sem precisar fazer um exaustivo aprendizado sobre as regras da declara ca o, gra cas a um... software. O nome e intelig encia extrassom atica. Durante o s eculo XX a maior ind ustria foi a do petr oleo. Depois, a do autom ovel e nalmente no nal do s eculo, a ind ustria de computadores passou a ser a maior. A tend encia para o futuro e de que ela suplante todas as demais. Hoje o homem mais rico do mundo construiu a sua fortuna vendendo um software. O computador nasce na cabe ca de um cientista ingl es (Alan Matheson Turing em 1937) e e constru do para a guerra pelos ingleses em 1942. A seq u encia de escopo do computador e guerra a id eia aqui e usar o computador como otimizador dos recursos b elicos, criptograa, pesquisa operacional, tabelas bal sticas... aritm etica o computador se transforma em super-calculadora. A matem atica passa a ser a linguagem da inform atica, por excel encia. O FORTRAN e dessa epoca... neg ocios em plena sociedade capitalista, os neg ocios passam a ser otimizados pelo computador. Dessa epoca e o COBOL a linguagem representante... aldeia global Neg ocios, governos, universidades e organiza co es sociais passam a compartilhar o ciberespa co. Surge e se robustece a Internet... lazer o computador vira um eletrodom estico. As casas de classe m edia passam a contar com um (ou mais de um) computador. Jogos, m usica, lmes, e-mule, mp3, ... ... realidade virtual N ao se sabe direito o que vir a por aqui. As t ecnicas de simula ca o levadas ao paroxismo permitir ao criar realidades virtuais, com toda a contradi ca o exposta no t tulo. Talvez retornemos a ` d uvida de Plat ao (o universo existe ou e apenas uma sensa ca o que eu tenho? ). O computador se diferencia de qualquer outra m aquina pela sua generalidade. No texto original de Turing isto ca claro pela conceitua ca o de uma m aquina universal. Assim, diferentemente de um liquidicador (que s o serve para picar comida e tem apenas um bot ao de liga-desliga), um computador precisa antes de qualquer coisa ser programado para fazer algo. De fato, se comprar um computador vazio e lig a-lo, ele n ao vai fazer nada. Tecnicamente, chama-se a parte f sica do computador de hardware signicando ferragem, duro (hard), componente f sico, etc. J a a programa ca o recebe o nome de software signicando mole (soft em oposi ca o a hard), componente l ogico, n ao f sico, programa de computador. A fabrica ca o de hardware e engenharia. Sua produ ca o pode ser planejada e otimizada e isso de fato e feito. A fabrica ca o de software, a despeito de ser chamada de engenharia, c a entre n os, n ao o e muito. Est a mais para arte do que para engenharia.
88-08, Pedro Kantek
Cap tulo 2
Ci encia da Computa c ao
Programas de qualquer tamanho est ao sujeitos a conterem bugs(erros). Alguns deles acabam custando caro. Em 22/jul/62 um foguete foi lan cado com a miss ao de chegar a Venus. Esta foi a primeira tentativa de explorar qualquer planeta. O foguete desviou-se do curso e foi destruido. Investiga co es posteriores revelaram que o respons avel pelo problema foi um erro de programa ca o dos computadores. Apesar de testes e depura co es extensas, a omiss ao de um simples h fen num dos comandos de um programa n ao foi detectada. Este erro causou a falha da miss ao inteira a um custo de US$ 18,5 milh oes. Trecho do livro Software Testing Techniquesde Boris Beizer. Se o construtores constru ssem edif cios da mesma forma que os programadores escrevem programas, o primeiro pica-pau poderia destruir a civiliza ca o. Gerald Weinberg, citado por James Martin, em O manifesto. Se alguma coisa pode dar errada, dar a errada.
Lei de Murphy
2.1
Representa c ao do conhecimento
Se olharmos a hist oria deste nosso pequeno planeta e abstrairmos a hip otese Teol ogica (j a que cienticamente ela n ao tem comprova ca o) veremos uma hist oria mais ou menos assim: 1. H a uns 3.000.000.000 de anos, surgem os primeiros seres vivos, capazes de entre outras coisas se reproduzirem por c opia de si mesmos. Aparece aqui o DNA ( acido desoxi-ribonucleico) o elemento comunicador da heran ca. Foi o primeiro e at e hoje bem importante local onde se armazenou o conhecimento. 2. Mais tarde, surge o sexo. Ele tem enorme import ancia nesta hist oria ao permitir que os lhos herdem um poco do DNA do pai e um pouco da m ae, acelerando a evolu ca o. 3. Um bocado de tempo depois, surgem os animais superiores e nestes o c erebro passa a ser respons avel pelo local onde o conhecimento e produzido e armazenado. Denomina-se esta fase ` a do conhecimento extragen etico. 4. Enquanto limitado ao conhecimento localmente produzido, o c erebro pode armazenar pouco. O pr oximo est agio de amplia ca o e quando surge a fala. Agora o conte udo de um c erebro pode ser repassado a outro, com resultados melhores e crescentes. O nome e conhecimento extrassom atico 27
28
CAP ITULO 2. CIENCIA DA COMPUTAC AO Talvez, como seres humanos, devamos dar gra cas aos c eus por esta situa ca o. Pois enquanto a produ ca o de hardware e (ou pode ser) em grande parte robotizada, a produ ca o de software ainda exige um bom c erebro cinzento por tr as. As restri co es que ainda existem sobre o software e que talvez nunca deixem de existir, impedem a programa ca o dos computadores em linguagem natural. Hoje ainda n ao e poss vel dialogar com um computador como se fala com uma pessoa medianamente inteligente. Os computadores ainda n ao conseguem tal proeza. Para programar um computador necessitamos uma linguagem. O hardware s o entende uma linguagem de pulsos el etricos (chamada de linguagem de m aquina). Para facilitar a nossa vida (j a que e muito dicil para o homem programar nela), criaram-se programas tradutores que recebem comandos e dados em uma linguagem articial e a convertem em linguagem de m aquina. A maioria desses tradutores recebeu o mesmo 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 tio www.tiobe.com o ndice TPC que mensalmente lista as 100 linguagens mais usadas no mundo. Quando os primeiros computadores foram construidos, a u nica linguagem por eles entendida era a bin aria. Seq u encias intermin aveis de uns e zeros, algo assim como 0 0 1 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 aut entico samba do crioulo doido. Chamou-se a isto, mais tarde, linguagem de primeira gera ca o. A seguir, o primeiro melhoramento: o assembler (ou montador), programa que era capaz de entender instru co es escritas em uma linguagem um pouco mais humana, e traduzir cada uma destas instru co es em sua express ao bin aria equivalente. Junto com este programa criou-se a primeira linguagem digna deste nome: o assembler, at e hoje usado, se bem que muito raramente. Programar em assembler ainda exige muito talento e paci encia. A m aquina precisa ser conhecida em in umeros detalhes de constru ca o, os programas s ao longos e dif ceis (principalmente sua manuten ca o). Entretanto esta e a linguagem mais eciente do ponto de vista dos consumo dos recursos da m aquina, isto e, ela gera programas velozes e pequenos. Depois, vieram as linguagens de terceira gera ca o: a primeira foi o FORTRAN, depois COBOL, PL/I, PASCAL, C, C++, Java, LISP, Prolog e outras menos votadas: BASIC, ADA, APL. H a um distanciamento do programador em rela ca o ` a m aquina, e uma aproxima ca o do mesmo em rela ca o ao problema a resolver. Estas linguagens s ao mais f aceis de aprender e embora gerem programas maiores e mais lentos, aumentam em muito a produtividade humana de escrever c odigo de programa ca o. Um exemplo diferente para mostrar todos estes conceitos de linguagens poderia ser o seguinte: Suponha um engenheiro brasileiro, que s o conhece o idioma portugu es. Ele precisa transmitir certas ordens de fabrica ca o para um colega sovi etico, que s o conhece o idioma russo, com escrita cir lica. Os dois podem tentar conversar quanto quiserem, necess mas provavelmente n ao haver nenhum resultado pr atico u til. E aria a presen ca de um tradutor, algu em que ouvindo o portugu es consiga transformar as ordens em suas equivalentes russas. Finalmente, o engenheiro brasileiro ver a se as ordens foram corretamente traduzidas e executadas analisando o resultado nal do trabalho. Neste exemplo, o engenheiro brasileiro e o programador. O colega sovi etico e a m aquina (que ao inv es de russo, s o entende a linguagem el etrica). O tradutor e a linguagem de programa ca o. Podemos ainda estabelecer dois n veis para linguagens de programa ca o: baixo e alto. Linguagem de baixo n vel e aquela que requer a especica ca o completa do problema 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, pressup oe uma tradu ca o inteligente, o que libera o engenvers ao de 10 de fevereiro de 2008
CAP ITULO 2. CIENCIA DA COMPUTAC AO 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 a que rodam todas no mesmo computador que e constru do usando a chamada Arquitetura de Von Neumann. Bem resumido, essa arquitetura prev e a exist encia da mem oria, de uma unidade aritm etico l ogica, canais e o elemento ativo: a unidade de controle. Essa estrutura comporta os seguintes tipos de comandos (ordens): entrada-sa da de dados, aritm etica, movimenta ca o em mem oria, condicional e desvio. Com apenas essas 5 ordens, s ao constru dos todos os programas que existem ou que existir ao em nosso mundo usando este tipo de computador. Uma pergunta que se pode fazer aqui, e se e melhor aprender tudo de uma linguagem e se tornar um especialista nela, ou se e melhor conhecer v arias, ainda que n ao chegando a muita profundidade em nenhuma. N ao h a resposta f acil, mas apostar todas as suas chas em uma u nica pode ser perigoso. A tecnologia tem substitu do a linguagem da vez mais ou menos a cada 8, 10 anos. Pior, ao se xar em uma linguagem, corre-se o risco de misturar quest oes do problema (do algoritmo) com quest oes do programa (da linguagem). Como na vida real, parece ser melhor buscar ser poliglota, ainda que obviamente haja uma linguagem preferida. Neste caso, todo o esfor co deve ser no n ucleo mais 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 semelhan ca entre seguir um programa de computador e uma receita culin aria, prepare um uxograma da seguinte receita: Bolo de nozes da Dona Filustreca Ingredientes: 250g de chocolate em p o, 250g de passas, 3 x caras de a cucar, meia x cara de leite condensado, meia x cara de o leo, 1 colher de ch a de baunilha, 250g de manteiga e 1 colher de ch a de sal. Modo de fazer: ponha o leite, o o leo, o a cucar, o chocolate e o sal em uma panela e leve ao fogo, mexendo at e a fervura. Reduza o fogo e continue a fervura at e o ponto de caramelo. Retire do fogo e deixe esfriar por 10 min. Em seguida, bata com a manteiga e a baunilha at e a mistura car homog enea. Distribua as passas no fundo de uma forma grande untada de manteiga. Derrame a massa sobre as passas. Deixe esfriar por 10 minutos, corte em peda cos e o bolo est a pronto para ser comido. Exerc cio 2 Seja agora um exemplo num erico. Eis aqui a seq u encia de Fibonacci
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... Escreva um procedimento que informe a soma dos primeiros 1000 n umeros da seq u encia de Fibonacci. Fica claro por estes dois exemplos, que programar um computador e emprestar intelig encia ao computador. Ou seja, para programar a solu ca o de um problema, h a que saber resolver esse problema. E, n ao apenas resolver em tese, mas descrever detalhadamente todas as etapas da solu ca o. De fato, a programa ca o e detalhista ao extremo. Como se disse acima, o computador surge em 1937, descrito em um artigo denominado on a computable numbers. Este artigo era t ao in edito que quase n ao e publicado: faltavam revisores que o atestassem. O conceito matem atico de computador est a l a, quase 10 anos de existir algo f sico que lembrasse o conceito.
88-08, Pedro Kantek
29
30
CAP ITULO 2. CIENCIA DA COMPUTAC AO Ao mesmo tempo, o ex ercito nazista alem ao come ca a usar um esquema criptogr aco muito inteligente atrav es de uma m aquina denominada ENIGMA, a qual, tinham eles certeza, era inexpugn avel. Mal sabiam que do outro lado do canal da Mancha estava Turing. Ele criou um computador, batizado COLOSSUS, que quebrava o c odigo ENIGMA em poucas horas. Foi o primeiro computador constru do pelo homem. O ENIAC de que os americanos se gabam tanto, veio depois. No meio da guerra, Turing foi enviado aos Estados Unidos e l a teve contacto com Von Neumann. Este e o autor da assim chamada arquitetura de Von Neumann, que ea que usamos at e hoje em qualquer computador.
CAP ITULO 2. CIENCIA DA COMPUTAC AO Se DELTA = 0, as raizes s ao iguais A primeira raiz e (-B) + DELT A dividido por 2A A segunda raiz e (-B) - DELT A dividido por 2A. No seu aspecto din amico, ter amos que gerar uma s erie de dados de entrada (triplas A,B,C), seguir o algoritmo, e vericar se os resultados que ele gera s ao aqueles esperados de antem ao.
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 Aur elio, algoritmo e Processo de c alculo, ou de resolu ca o de um grupo de problemas semelhantes, em que se estipula, com generalidade e sem restri co es, regras formais para a obten ca o do resultado ou da solu ca o do problema. a coisa Algoritmo e a id eia que est a por tr as de um programa de computador. E 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 inform atica, algoritmo e a regra de solu ca o de um problema, isto e, surgida uma necessidade buscar-se- a uma solu ca o, ou construir-se- a um algoritmo capaz de solucionar o problema. J a um programa de computador, (segundo Wirth) e uma formula ca o concreta de algoritmos abstratos, baseados em representa co es e estruturas espec cas de dadose devidamente traduzido em uma linguagem de programa ca o. Outra deni ca o de algoritmo, esta dos autores Angelo Guimar aes e Newton Lages: Algoritmo e a descri ca o de um padr ao de comportamento, expressado em termos de um repert orio bem denido e nito de a co es primitivas, das quais damos por certo 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 compreens ao, em seus dois aspectos, a quem chamaremos est atico e temporal. Na sua vis ao est atica, um algoritmo e um conjunto de ordens, condi co es, testes e verica co es. No seu aspecto 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 n ao podem ser separadas, elas est ao instrinsicamente ligadas. A diculdade em fazer bons algoritmos, e ter em mente, enquanto se escreve o algoritmo (aspecto est atico) o que ele vai fazer com seus dados (aspecto temporal). Vamos exemplicar esta discuss ao, comentando sobre o algoritmo de solu ca o de uma equa ca o do segundo grau. Dada a equa ca o Ax2 + Bx + C = 0, para encontrar as duas raizes, segundo a inesquec vel f ormula de Bhaskara, procedemos da seguinte forma: Calculamos DELTA, que e B ao quadrado, menos o produto de 4,A e C. Se DELTA < 0, as raizes n ao existem no campo dos n umeros reais
vers ao de 10 de fevereiro de 2008
Dado um problema, para o qual temos que escrever um algoritmo, usualmente n ao h a solu ca o u nica. Quanto mais complexo o problema a resolver, maior a quantidade de poss veis algoritmos corretos. Cada um certamente ter a as suas qualidades e os seus defeitos. Alguns s ao muito bons, e outros muito ruins, mas entre um e outro existem in umeras varia co es, que nem sempre s ao facilmente reconhecidas. Pode-se dizer que um algoritmo e um programa de computador do qual se faz a abstra ca o da linguagem de programa ca o. Neste sentido o algoritmo independe de qual ser a sua implementa ca o posterior. Quando pensamos em algoritmos, n ao nos preocupamos com a linguagem. Estamos querendo resolver o aspecto conte udo. Mais tarde, quando programarmos, a linguagem passa a ser importante, e agora a preocupa ca o e com a forma.
2.2.1
Se um programa e f acil de ler, ele e provavelmente um bom programa; se ele e dif cil de ler, provavelmente ele n ao e bom.(Kernighan e Plauger) Clareza O algoritmo e uma ferramenta de entendimento e solu ca o de um problema. Deve portanto, ser o mais claro poss vel. Ao fazer o algoritmo seu autor deve se preocupar constantemente em se o que est a pensando est a vis vel no que est a escrevendo. Nunca sacricar clareza por eci encia; nunca sacricar clareza pela oportunidade de revelar sua intelig encia.Jean Paul Tremblay. Impessoalidade Nem sempre quem vai examinar, depurar, corrigir, alterar etc , um algoritmo e seu autor. Portanto, nada de usar macetes, regras pessoais, nomes que s o tem sentido para o autor etc. Neste ponto e de muita ajuda a exist encia de um bem organizado conjunto de normas de codica ca o e de elabora ca o de algoritmos para a organiza ca o. As melhores e mais bem organizadas empresas de inform atica dedicam parcela signicativa de seus esfor cos a esta atividade. Simplicidade Poucos programadores resistem a ` tenta ca o de elaborar uma genial sa da para um problema. Nada contra isso, desde que essa sa da n ao ra os princ pios de simplicidade que todo algoritmo deve procurar satisfazer. Nem sempre e f acil fazer algoritmos descomplicados, principalmente porque em geral os problemas que enfrentamos n ao s ao simples. Transformar algo complicado em solu co es singelas, parece ser a diferen ca entre programadores comuns e grandes programadores. Reaproveitamento Existe in umera bibliograa sobre algoritmos. Grandes instala co es de inform atica costumam criar o conceito de biblioteca de algoritmos. Muitos softwares tamb em est ao partindo para esta sa da. O programador n ao deve se esquecer nunca de que um algoritmo novo, custa muito caro para ser feito, e custa muito mais caro ainda para ser depurado. Se j a existir um pronto e testado, tanto melhor.
88-08, Pedro Kantek
31
32
CAP ITULO 2. CIENCIA DA COMPUTAC AO Capricho Tenha sempre em mente que a principal fun ca o de um algoritmo e transmitir a solu ca o de um problema a outrem. Desta maneira, um m nimo de capricho e indispens avel a m de n ao assustar o leitor. Letra clara, identa ca o correta, nomes bem atribu dos, tudo isto em papel limpo e sem borr oes. Como o leitor j a pode estar imaginando, esta caracter stica e fundamental em provas, avalia co es e trabalhos. A primeira conseq u encia pr atica desta regra e: fa ca seus algoritmos a l apis. Documenta c ao Nem sempre o texto que descreve o algoritmo e muito claro. Al em do que, ele informa o que e feito, mas n ao porque e feito, ou quando e feito. Assim, o programador pode e deve lan car m ao de coment arios sempre que sentir necessidade de claricar um ponto. Bons coment arios n ao podem melhorar uma m a codica ca o, mas maus coment arios podem comprometer seriamente uma boa codica ca o. Jean Paul Tremblay. Corre c ao (ou integridade ou ainda robustez) Um algor tmo ntegro e aquele onde os c alculos est ao satisfatoriamente colocados, e atuam corretamente para todos os dados poss veis de entrada. N ao adianta um algoritmo sosticado e cheio de estruturas de controle, se suas opera co es aritm eticas elementares n ao estiverem mais comum (e perigoso) o algoritmo que funciona em 95% dos casos, corretas. E mas falha em 5% deles. Eci encia Esta caracter stica tem a ver com economia de processamento, de mem oria, de comandos, de vari aveis etc. Infelizmente, quase sempre e uma caracter stica oposta ` a da clareza e da simplicidade, sendo estas mais importantes do que a eci encia. Entretanto, em alguns casos, (principalmente na programa ca o real - dentro das empresas), a eci encia pode ser fundamental. Neste caso, perde-se facilidade, para se ter economia. O bom programador e aquele que alia a simplicidade ao m aximo de eci encia poss vel. Generalidade Dentro do poss vel, um algoritmo deve ser o mais gen erico que puder. Isto signica que vale a pena um esfor co no sentido de deixar nossos algoritmos capazes de resolver n ao apenas o problema proposto, mas toda a classe de problemas semelhantes que aparecerem. Usualmente o esfor co gasto para deixar um algoritmo gen erico e pequeno em rela ca o aos benef cios que se obt em desta preocupa ca o. Modularidade Algoritmos grandes dicilmente cam bons se usarmos uma abordagem praticamente imposs linear. E vel garantir clareza, impessoalidade, documenta ca o etc, quando se resolve um algoritmo de cima a baixo. Uma conveniente divis ao em m odulos (isto e, em sub-algoritmos), para que cada um possa ser resolvido a seu tempo. N ao podemos esquecer que a regra aurea da programa ca o estruturada e dividir para conquistar. Coment arios Permitem a agrega ca o de informa co es destinadas ao leitor humano do algoritmo. Seu conte udo n ao e levado em considera ca o na an alise da integridade e corre ca o do algoritmo. Tem nalidade apenas explicativa e informativa. Mas isso n ao signica que eles sejam desprez veis. Pelo contr ario, coment arios s ao importantes em algoritmos de um modo geral. Os coment arios s ao delimitados por um abre-chave({) e um fecha-chave(}). Eles podem ser colocados em qualquer ponto do algoritmo e tudo o que estiver entre chaves e desconsiderado no momento de seguir o algoritmo. Exemplo {Isto e um coment ario}
vers ao de 10 de fevereiro de 2008
CAP ITULO 2. CIENCIA DA COMPUTAC AO H a dois tipos de coment arios aqui: aqueles encerrados entre chaves e aqueles colocados depois de uma dupla barra. {Isto e um coment ario, que s o ser a encerrado quando se encontrar o fecha chave, ainda que ele ocupe mais de uma linha } // isto tamb em e um coment ario, desde a dupla barra at e o fim da linha
2.2.2
A quest ao agora e: como se escreve um algoritmo? Usando uma ferramenta adequada para comunicar algum tipo de computa ca o que o algoritmo execute. Qualquer linguagem poderia ser adequada, mas e melhor inventar uma sublinguagem derivada do portugu es (ou do ingl es em livros nesse idioma) que ajude a treinar o pensamento criativo em algoritmos. A id eia e que a ferramenta ajude a fazer a tarefa. Por analogia, experimente aparafusar algo pequeno usando um p e de cabra. O nome da sublinguagem que usaremos e portugu es estruturado, tamb em conhecida como portugol.
2.3
Portugol
Figura 2.2: Como se entender com ele ? Como vimos, portugu es estruturado e uma linguagem inventada aqui para simplicar a tarefa de aprender a construir, depurar e documentar algoritmos estruturados. Existem importante salientar que a in umeras vers oes, cada professor de l ogica tem a sua. E
88-08, Pedro Kantek
33
34
CAP ITULO 2. CIENCIA DA COMPUTAC AO s ntaxe e a constru ca o de portugu es estruturado s ao arbitrados por algu em, segundo seus crit erios, mas uma vez estabelecido um padr ao, pele precisa ser seguido. Esta restri ca o tem duas vertentes. A primeira, e que h a que haver um m nimo de concord ancia para que outras pessoas possam ler e entender o que escrevemos. A segunda, e que uma das principais caracter sticas do bom programador e a disciplina intelectual. Nada mais apropriado que come carmos a exercitar esta dif cil qualidade desde j a. ? Portugu Por que PORTUGOL e n ao PORTUGUES es (como qualquer idioma natural) tem in umeras desvantagens: N ao e entendido pela m aquina (exige tradu ca o complex ssima) amb E guo muito extenso E Vejamos por exemplo, uma orienta ca o extra da do manual de organiza ca o de uma Empresa. O funcion ario far a jus ao PREMIO PRODUTIVIDADE se estiver trabalhando h a mais de 6 meses da epoca de distribui ca o (fevereiro de cada ano), e trabalhar na area de vendas, ou ent ao se tiver sido especialmente citado como tendo tido alta produtividade. Perdem o direito, funcion arios que tiverem mais de 2 faltas e mais de 5 atrasos, ou que tiverem fruido licen ca sa ude do INSS no per odo aquisitivo. Parece claro, n ao e ? Agora tentemos responder: Jo ao tem 3 meses de casa e foi citado como de alta produtividade. Ganha ou n ao? Maria teve 3 faltas. Perde ou n ao ? Outro exemplo, minha tia tem uma gatinha e ela e muito bonita. Quem e bonita, a tia ou a gatinha ? O linguajar acima, n ao e adequado para expressarmos algoritmos pois e inexato, d ubio, e deixa muita margem de interpreta ca o, usa verbos e comandos proibidos, isto e, que o computador n ao saber a executar. Devemos lembrar sempre que a margem de interpreta ca o do computador, qualquer computador, e sempre ZERO, e os computadores tem a p essima mania de fazer o que mandamos eles fazerem, e n ao o que queremos que eles fa cam. Por que PORTUGOL e n ao uma linguagem qualquer como Java? ou qualquer outra linguagem de programa ca o? Uma linguagem de programa ca o, ainda que de alto n vel, caso do Java, exige um conhecimento da m aquina que ainda n ao temos. Tamb em e importante salientar que idealmente falando, n ao e boa pol tica enfrentar dois problemas interligados ao mesmo tempo. Isto e, n ao conv em misturar diculdades de l ogica, (advindas do problema que se quer resolver) com diculdades da linguagem (advindas do ambiente tecnol ogico onde o programa vai rodar), pois ambas somadas podem ser demais para a cabe ca do autor. J a dizia Dijkstra deve-se reconhecer que tem-se uma cabe ca pequena, e que e melhor tratar de conviver com ela e respeitar suas limita co es. Aproveitando a cita ca o, mais de uma do mesmo autor: A regra aurea da programa ca o estruturada e dividir para reinar.
vers ao de 10 de fevereiro de 2008
CAP ITULO 2. CIENCIA DA COMPUTAC AO Os programas em PORTUGOL v ao deixar de lado in umeras chatea co es, (que s ao imprescind veis para o programa rodar em um computador real) tais como: instru co es de ambienta ca o na compila ca o de programas, descri co es de opera co es de entrada/sa da complexas, pouca ou nenhuma prepara ca o de controles etc. E claro, que anexo a esta disciplina, existe outra de laborat orio de programa ca o, onde vai se aprender o Java. Nessa hora, os algoritmos j a devem estar consolidados, e a preocupa ca o passa a ser a m aquina e seu ambiente. Na nossa cadeira de algoritmos, devemos esquecer a m aquina e nos concentramos no problema e na sua solu ca o. Portugu es estruturado Cada autor tem a sua vis ao do que seja o ideal em termos de linguagem de especica ca o de algoritmos. Veja, por exemplo, o quadro
O que um computador entende Baseado na arquitetura de Von Neumann, (um processador, uma unidade de controle, uma ULA, mem oria e registradores), todo computador constru do neste paradigma e capaz de obedecer, l a no n vel mais baixo, a um pequeno conjunto de ordens. Note-se como ele e restrito. Entrada/Sa da Este tipo de ordem, e para orientar o computador no sentido de adquirir um dado externo (entrada), ou para divulgar alguma coisa que ele calculou (sa da). Aritm etica Estas ordens s ao similares aquelas que aprendemos no primeiro grau, e destinam-se a informar ao computador como ele deve efetuar algum c alculo. Estas ordens s ao: adi ca o, subtra ca o, multiplica ca o, divis ao, potencia ca o, fun co es trigonom etricas etc. N ao se esque ca que a linguagem universal dos computadores
88-08, Pedro Kantek
35
36
CAP ITULO 2. CIENCIA DA COMPUTAC AO e a matem atica. Escrever um programa de computador correto e como demonstrar um teorema. talvez a ordem mais importante no universo da computa ela que Alternativa E ca o. E d a ao computador condi co es de ser inteligente e decidir qual de dois caminhos 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 a executada. Desvio Esta ordem e para dar ao computador habilidade de saltar algumas ordens e executar outras. Um programa de computador nem sempre e obrigado a seguir as instru co es seq uencialmente come cando no come co e terminando no m. O desvio e potencialmente perigoso quando usado sem crit erio, e por isso veremos em seguida que uma das regras da programa ca o estruturada e o estabelecimento de r gidos controles sobre os desvios. Movimenta c ao na mem oria Embora pare ca estranho, esta e ordem mais comum em um programa. Considerando o tamanho das mem orias de computador e a quantidade de coisas que s ao l a colocadas, e imprescind vel que os programas tenham a habilidade de manusear todas estas coisas. Fazendo uma gura de linguagem, suponha que a mem oria do computador e um grande supermercado. Se os artigos n ao puderem se mexer de lugar, bem poucas coisas acontecer ao. Outra observa ca o, e que o verbo mover, quando usado em manipula co es dentro da mem oria e usado por raz oes hist oricas, e certamente cont em um equ voco. O correto seria usar o verbo copiar, j a que quando um conte udo e levado de um lado a outro, sua inst ancia anterior n ao desaparece. Usa-se aqui uma regra jocosa, mas que sempre e verdadeira. computador n ao usa apagador. ciclo de vida Qual a hist oria de vida de um programa de computador ? Isto e como nasce, cresce e morre um programa ? Grosso modo, pode se dizer que as principais etapas s ao: estudo do problema: Espera-se que haja algum problema ou diculdade esperando pr ser resolvido pelo programa de computador. E e-requisito antes de tentar a solu ca o de qualquer quest ao, estud a-la, compreender o entorno, as limita co es, os balizadores, os recursos dispon veis. Uma boa maneira de estudar e compreender um problema e fazer hip oteses, estudar comportamentos, projetar simula co es. S o se pode passar adiante se boa parte do entorno do problema for entendida. Note-se que nem sempre e poss vel aguardar at e ter 100% do conhecimento antes de seguir ` vezes n adiante. As ao d a tempo, mas o percal co principal nem e esse: e que muitas vezes o conhecimento n ao existe e s o vai aparecer quando se cutucar o problema. Como se diz em espanhol los caminos se hacen al caminar. Quando isto ocorrer, e ocorre muitas vezes, n ao tem jeito: anda-se para frente e para tr as, e a cada passada o conhecimento e maior. bolar ou procurar o algoritmo. Agora e hora de converter a solu ca o encontrada em algo pr oximo a um algoritmo. Isto e, algo formal, com condi co es iniciais, resultado nal, e manipula co es entre o que entra e o que sai. Usam-se os comandos permitidos em algoritmos e s o estes. Usualmente, h a aqui o que se chama de aprofundamento interativo. Come ca-se com uma declara ca o gen erica que vai sendo detalhada e especicada at e chegar ao n vel b asico, no qual os comandos algor tmicos (entrada/sa da, aritm eticos, alternativos, movimenta ca o e de repeti ca o)
vers ao de 10 de fevereiro de 2008
CAP ITULO 2. CIENCIA DA COMPUTAC AO podem ser usados. Note que pode-se copiar ou aproveitar um algoritmo j a existente. Entretanto este re-uso dicilmente e imediato. Sempre h a que estudar e eventualmente modicar um algoritmo j a existente, a menos que quando este foi feito seu autor j a tinha a preocupa ca o com o reuso. hora de escolher um computador, um ambiente operacional e transcrever em LP. E sobretudo uma linguagem de programa ca o que esteja dispon vel e seja conhecida. Dessas 3 op co es (computador, ambiente e linguagem) surge a plataforma denitiva: agora e poss vel escrever, testar, depurar e implementar o programa de computador. depurar. Usualmente h a uma seq u encia de testes: compila ca o correta: nenhum erro apresentado pelo compilador testes imediatos sem erro: testes ad hoc para este programa (e s o para ele) d ao os resultados esperados. teste alfa: um esfor co completo de testes, inclusive integrando este programa aos seus antecessores e sucessores. Usualmente o teste e feito pelo(s) autor(es) do programa. teste beta: um teste completo feito por terceiros. H a uma regra aqui de que quem faz (programador) n ao deve ser quem testa (testador). implementar e rodar. Com o programa testado e liberado e hora de rod a-lo em produ ca o. Nesta hora ocorre o que tem sido chamado de deploy (dizem as m as l nguas que sempre associado a seu irm ao g emeo, o delay ). Dependendo do porte da instala ca o e do sistema, a `s vezes esta passagem e complexa e trabalhosa. manuten ca o. Seria muito bom se a hist oria acabasse na etapa anterior. N ao eo que ocorre, j a que o mundo muda e os programas precisam mudar com ele. Se a manuten ca o e pequena, usualmente pode-se faz e-la sem muito transtorno, mas caso n ao seja, este ciclo recome ca. Note-se que ap os algumas manuten co es grandes o programa come ca a dar mostrar de instabilidade a popular colcha de retalhos e e hora de come car tudo de novo, na nova vers ao do programa. Como se aprende algoritmos? N ao e f acil aprender algoritmos. No que t em de engenharia, e mais f acil. H a f ormulas, procedimentos, pr aticas consagradas prontas a serem usadas. Mas, no que s ao arte, tais mais ou menos como tentar ensinar algu receitas desaparecem. E em a desenhar (outra arte) ou a compor m usica (outra ainda). Olhando como se aprende a desenhar, e poss 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 indica co es Estudando algoritmos prontos. Pegue bons livros de algoritmos, e estude as implementa co es que l a aparecem. Transcreva tais algoritmos em um simulador (tipo visualg) ou mesmo em uma linguagem de programa ca o. Execute os algoritmos. Busque entender o que cada parte do mesmo faz. Sugira hip oteses sobre o funcionamento e provoque pequenas mudan cas no c odigo para conrmar (ou rejeitar) suas hip oteses. Tenha intimidade com algum ambiente de compila ca o e testes. Esta proposta e importante para poder testar algoritmos. Se car embatucado diante de uma simples implementa ca o, voc e ter a grandes diculdades de escrever algoritmos.
88-08, Pedro Kantek
37
38
CAP ITULO 2. CIENCIA DA COMPUTAC AO Escreva pequenos algoritmos. Tente fazer os exerc cios (come cando sempre pelos mais simples) de qualquer bom livro de algoritmos. Treine a interpreta ca o dos enunciados. Enquanto n ao entender o que deve ser feito, n ao adianta olhar para o algoritmo, pois o motivador das a co es que ele toma estar a ausente. Nunca se deve come car a estudar ou a construir um algoritmo se n ao houver um claro entendimento do que o algoritmo deve fazer.
CAP ITULO 2. CIENCIA DA COMPUTAC AO Repeti c ao O terceiro bloco da programa ca o estruturada e a resposta a ` necessidade de usar o comando de desvio. Perceba-se que aqui existe um desvio impl cito, j a que ao se terminar o bloco, h a que se desviar para o in cio do mesmo, que e o que caracteriza uma repeti ca o. A restri ca o a obedecer n ao e a aus encia de desvio de resto, imposs vel de obedecer mas sim a regra da entrada e sa da u nicas. Em outras palavras n ao e proibido usar o desvio, desde que ele esteja contido em limites bem determinados. Tal como na seq u encia e na alternativa, um comando de repeti ca o, por maior ou mais complexo que seja, pode ser substitu do por u nica caixa. A import ancia desta descoberta para o software teve tanto impacto quanto a de que qualquer forma l ogica de hardware pode ser construida pelas combina co es de portas AND, OR e NOT. A grande vantagem dos tr es elementos da programa ca o estruturada e que possuem a caracter stica de pacote ou caixa preta, uma vez que todos tem uma u nica entrada e uma u nica sa da. Isto signica que partes de programas construidos com estas estruturas podem ser tamb em considerados pacotes, sempre com entradas e saidas u nicas. Esta ea melhor qualidade da programa ca o estruturada, e e por esta caracter stica que o GOTO deve ser desprezado na constru ca o de bons algoritmos. Tanto isto e verdadeiro, que as linguagens mais modernas, n ao tem mais a instru ca o de desvio, banida por perniciosa e desnecess aria.
2.4
Programa c ao Estruturada
O termo programa ca o estruturada veio ` a luz pela primeira vez, nos ns da d ecada de 60, quando Edsger Dijkstra (L e-se como Dikster ) escreveu um artigo, publicado em Communications of the ACM, cujo t tulo e O comando GO TO e prejudicial. Viv amos a epoca de ouro do COBOL, e o comando GO TO e a instru ca o de desvio desta linguagem. Dijkstra observou que a qualidade dos programadores decai em fun ca o do n umero de GO TOs usados em seus programas. Segundo ele, Comandos GO TO tendem a criar caminhos de l ogica confusos e programas pouco claros. A sua recomenda ca o foi de que o comando em quest ao fosse banido das linguagens de alto n vel. Nessa epoca tamb em (1966) dois professores italianos, Giuseppi Jacopini e Corrado Bohm, provaram matematicamente que qualquer l ogica de programa ca o poderia ser derivada de tr es tipos b asicos de procedimentos, a saber: seq u encia, alternativa e repeti ca o. Chegou-se ent ao ao amago da programa ca o estruturada, que e trocar a instru ca o de desvio pelas instru co es de repeti ca o. Ao fazer isto, todos os componentes de um programa passam a ter uma entrada e sa da u nicas. Atente-se que ao usar uma instru ca o de desvio, essa regra de uma entrada e uma sa da e violada: o conjunto passa a ter no m nimo duas sa das. Seq u encia simples Trata-se de um conjunto de comandos simples, que seguem um ao outro e que s ao executados na ordem em que aparecem. Exemplo A 10 BA + 5 X1 + 2 Dentro de uma seq u encia simples de comandos a entrada sempre e pelo primeiro comando e a sa da sempre e pelo u ltimo. Gra cas ao princ pio da programa ca o estruturada (uma entrada e uma sa da), uma seq u encia simples pode ser substitu da por um bloco com entrada e sa da u nicas. um comando que permite dois caminhos alternativos, da Alternativa E o nome, a depender de alguma condi ca o. Na matem atica convencional isto j a existe, por exemplo na f ormula de Bhaskhara. No momento de calcular a raiz quadrada de , h a que se tomar uma decis ao. Se < 0 os c alculos cessam e a resposta de ra zes imagin arias deve ser dada. Se 0, a raiz pode ser extra da e um ou dois valores de ra zes emergem. O ponto importante aqui e que em algum lugar os dois ramos se juntam novamente, e a regra de ouro da programa ca o estruturada (entrada u nica e sa da u nica tamb em) continua verdadeira. Tal como na seq u encia, um comando alternativo, por mais complexo que seja, pode ser substitu do por u nica caixa.
vers ao de 10 de fevereiro de 2008
2.5
A m aquina de Turing
Embora a humanidade use o conceito de algoritmo h a mil enios (O de MDC e devido a Euclides), e o pr oprio nome algoritmo derive do autor a rabe de um tratado de a lgebra escrito por volta de 800 dC, a deni ca o precisa do que seja um algoritmo geral e apenas de 1930. Ela e devida a Turing, atrav es do seu conceito de M aquina de Turing. Esta n ao e uma m aquina real, sendo apenas uma abstra ca o matem atica, da o seu poder de encanto. Em 1900, o matem atico alem ao Hilbert apresentou em um congresso uma lista de problemas que segundo ele estariam ocupando as mentes matem aticas no s eculo que ora se iniciava. O d ecimo problema de Hilbert, dizia: ...haver a algum procedimento mec anico geral que possa em princ pio resolver todos os problemas da matem atica ? 1 Em 1937, Turing respondeu a esta pergunta atrav es do conceito de M aquina de Turing. Ela e composta por um n umero nito de estados, ainda que possa ser muito grande. Deve tratar um input innito. Tem um espa co exterior de armazenagem tamb em innito. Turing imaginou o espa co exterior para dados e armazenamento como sendo uma ta, que pode mover-se para frente e para tr as. Al em disso a m aquina pode ler e escrever nesta ta. A ta est a composta por quadrados (ou seja, o nosso ambiente e discreto). Apenas 2 s 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 s ao nitos em n umero 2. o comportamento da m aquina e totalmente determinado pelo seu estado interior 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
39
40
CAP ITULO 2. CIENCIA DA COMPUTAC AO 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. Deni c ao de uma m aquina de Turing Para especicarmos nossa m aquina de Turing, 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 deni ca o acima, e adequada para a tarefa de numera ca o das M aquinas de Turing, fen omeno esse que e central na teoria. Entretanto, para operar com esta m aquina, talvez seja mais adequado escrever uma tabela como estado chega escreve? anda vai para 0 0 D 0 0 1 E 13 1 0 1 D 65 1 1 0 D 1 2 0 1 PARE 2 1 E 66 As diversas m aquinas de Turing Para ver isso funcionando, precisa-se numerar as m aquinas de Turing. Necessita-se um pouco de esperteza aqui. Primeiro, converte-se D, E, PARE, e v rgula como os n umeros 2, 3, 4, 5 e 6. Ou usando um sistema un ario, 110, 1110, 11110, 111110 e 1111110. Zero ser a 0, e 1 ser a 10, como j a se viu. As colunas 4 e 5 nas tabelas n ao precisam separa ca o, j a que o conte udo da coluna 5 e apenas 1 ou zero e sempre ocupa 1 caracter. Pode-se dar ao luxo de n ao codicar nenhuma seta, nem nada do que as antecede (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 n ao seriam escritas por nunca ocorrerem na m aquina). Fazendo tudo isso, e escrevendo toda a programa ca o da m aquina que soma 1 a um n umero un ario, ela ca: 101011011010010110101001110100101101011110100001110100101011 10100010111010100011010010110110101010101101010101101010100. Convertendo este n umero bin ario para decimal chegamos a 450813704461563958982113775643437908 O que signica que a m aquina que soma 1 em un ario e a 450.813.704.461.563.958.982.113.775.643.437.908a
2 um fen omeno e deterministico quando gera sempre o mesmo resultado a partir das mesmas condi co es iniciais. Por exemplo, soltar um corpo em queda livre. Ao contr ario um fen omeno probabil stico (ou rand omico ou estoc astico) e o fen omeno no qual dadas as mesmas condi co es iniciais o resultado e imprevis vel. Por exemplo, lan car um dado
CAP ITULO 2. CIENCIA DA COMPUTAC AO m aquina de Turing. Naturalmente, mudando-se (otimizando-se) alguma coisa na programa ca o, esta m aquina muda de n umero. A m aquina que soma 1 em un ario e a 177.642a m aquina. A que multiplica 2 em bin ario expandido e 10.389.728.107a m aquina e a que multiplica por 2 um n umero un ario a e a 1.492.923.420.919.872.026.917.547.669 m aquina. E assim vai. A T7 , e n ao corretamente especicada, j a que existem uma seq u encia de 5 uns, e ela emperra ao processar tal seq u encia. M aquina Universal de Turing Teremos uma m aquina U, que antes de mais nada ler a as informa co es na ta de entrada para que ela passe a se comportar como a m aquina T. Depois disso vem os dados de input que seriam processados pela m aquina T, mas que ser ao pela U, operando como se fosse a T. Dizendo que quando a n- esima m aquina de Turing atua sobre o n umero m produz o n umero p, podemos escrever Tn (m) = p. Podemos pensar nesta rela ca o como sendo uma fun ca o de 2 par ametros (n e m) que leva a p. Esta fun ca o, pelo que vimos e totalmente algoritmica. Logo, ela pode ser realizada por uma m aquina de Turing, a quem chamaremos de U . Ent ao, fornecendo o par (n, m) a U , obtemos como resposta p. Podemos escrever U (n, m) = Tn (m) A m aquina U quando alimentada primeiro com o n umero n, passa a se comportar como a Tn Como U e uma m aquina de Turing, ela e uma Talgumacoisa . Quanto e essa alguma coisa ? mais ou menos 7.24 101688 , ou seja o n E umero 724 seguido de 1686 zeros. Todos os computadores modernos, desde um humilde Z80 at e um Cray multi-vetorial s ao m aquinas de Turing. Acabamos de ser apresentados a um moderno computador: em U (n, m) = p, U eo hardware, n e o software (ou programa), m s ao os dados de entrada e nalmente p eo resultado esperado. Para efeito de entender a MT, pode-se desenhar algo como segue: Usar como modelo a MT que multiplica por 2 em un ario Construir o modelo acima no quadro e depois testar as sequencias 000010000, 00001100000 e 00001110000. Todas v ao funcionar.
2.6
2.6.1
Linguagens de programa c ao
Assembler
apenas um tradutor de c O assembler n ao e uma linguagem de alto nivel. E odigos e portanto est a muito pr oximo da linguagem de m aquina. Utiliz a-lo e um aut entico calv ario, j a que todas as opera co es que o computador precisa realizar cam por conta do programador. A produtividade e muito baixa, e a u nica vantagem que se consegue e a eci encia: os programas voam. Por outro lado, tamanha ader encia a `s entranhas da m aquina cobra seu pre co: na mudan ca de plataforma tecnol ogica um monte de coisas precisa ser reestudado e reciclado. N ao e uma boa id eia programar prossionalmente em assembler. Mas, quem domina esta t ecnica, e bastante valorizado no mercado. Mesmo que trabalhando em outras linguagens, quem conhece o assembler, conhece o interior da m aquina. Sem d uvida 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
41
42
CAP ITULO 2. CIENCIA DA COMPUTAC AO ou pelo menos era, uma linguagem franciscana de t FORmula TRANslation. E, ao pobre em recursos. Foi a u nica linguagem ensinada em escolas de engenharia at e a d ecada de 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 inclus ao de um tipo de dados de n umero complexo na linguagem tornou a linguagem Fortran particularmente apta para a computa ca o cient ca. As principais revis ao s ao a Fortran 66, 77, 90 e 95. A mais famosa e usada e a Fortran 90. Sua principal vantagem e a eci encia em calculo num erico pesado. 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 c~ ao de 2o.grau" 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
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.3
Lisp
2.6.2
Fortran
Fortran e uma linguagem muito antiga, originalmente sugerida pela IBM na d ecada de 50. Seu texto se assemelha a uma descri ca o matem atica e de fato, FORTRAN signica
vers ao de 10 de fevereiro de 2008
LISP e a segunda linguagem de alto nivel mais antiga. O LISP nasce como lho da comunidade de Intelig encia Articial. Na origem, 4 grupos de pessoas se inseriram na comunidade de IA: os ling uistas (na busca de um tradutor universal), os psic ologos (na tentativa de entender e estudar processos cerebrais humanos), matem aticos (a mecaniza ca o de aspectos da matem atica, por exemplo a demonstra ca o de teoremas) e os inform aticos (que buscavam expandir os limites da ci encia).
88-08, Pedro Kantek
43
44
CAP ITULO 2. CIENCIA DA COMPUTAC AO O marco inicial e o encontro no Dartmouth College em 1956, que trouxe duas conseq u encias importantes: a atribui ca o do nome IA e a possibilidade dos diferentes pesquisadores se conhecerem e terem suas pesquisas beneciadas por uma interfecunda ca o intelectual. A primeira constata ca o foi a de que linguagens existentes privilegiavam dados num ericos na forma de arrays. Assim, a busca foi a cria ca o de ambientes que processassem s mbolos na forma de listas. A primeira proposta foi IPL (Information Processing Language I, por Newel e Simon em 1956). Era um assembl ao com suporte a listas. A IBM engajou-se no esfor co, mas tendo gasto muito no projeto FORTRAN decidiu agregar-lhe capacidade de listas, ao inv es de criar nova linguagem. Nasceu a FLPL (Fortran List Processing Language). Em 1958, McCarthy come cou a pesquisar requisitos para uma linguagem simb olica. Foram eles: recurs ao, express oes condicionais, aloca ca o din amica de listas, desaloca ca o autom atica. O FORTRAN n ao tinha a menor possibilidade de atend e-las e assim McCarthy junto com M. Minsky desenvolveu o LISP. Buscava-se uma fun ca o Lisp Universal (como uma m aquina de Turing Universal). A primeira vers ao (chamada LISP pura) era completamente funcional. Mais tarde, LISP foi sofrendo modica co es e melhoramentos visando eliminar ineci encias e diculdades de uso. Acabou por se tornar uma linguagem 100% adequada a qualquer tipo de resolu ca o de problema. Por exemplo, o editor EMACS que e um padr ao no mundo UNIX est a feito em LISP. In umeros dialetos LISP apareceram, cada um queria apresentar a sua vers ao como sendo a melhor. Por exemplo, FranzLisp, ZetaLisp, LeLisp, MacLisp, Interlisp, Scheme, T, Nil, Xlisp, Autolisp etc. Finalmente, como maneira de facilitar a comunica ca o entre todos estes (e outros) ambientes, trabalhou-se na cria ca o de um padr ao que foi denominado Common Lisp. Como resultado o Common Lisp cou grande e um tanto quanto heterog eneo, mas ele herda as melhores pr aticas de cada um de seus antecessores. Seja agora um exemplo de uma fun ca o lisp: > (defun li (L1 L2) ; pergunta se duas listas s~ ao iguais (cond ((null L1) (null L2)) ((null L2) nil) ((not (eql (car L1) (car L2))) nil) (t (li (cdr L1) (cdr L2))))) LI
CAP ITULO 2. CIENCIA DA COMPUTAC AO Green em 1969, escreveu o Question Answer System, que respondia perguntas sobre um dado dom nio. Na mesma epoca, Winograd escreveu o software Planner. Todos estes tinham problemas de eci encia, por causa, entre outras coisas, da explos ao combinat oria. Em 1970, em Edinbourg, Kowalski bolou o seguinte esquema: Limitou a expressividade a `s cl ausulas de Horn Criou uma estrat egia de resolu ca o, n ao completa, mas muito eciente Em 72, em Edinbourg e Marselha, surgiu a linguagem PROLOG. Em 77, Waren escreve o primeiro compilador de PROLOG. Come ca o sucesso de PROLOG na Europa. Nos EUA, sempre deu-se maior aten ca o ao LISP. Foi a base para o computador de 5a gera ca o do Jap ao. A seguir, um pequeno trecho de uma sess ao PROLOG: 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) [ler esta v rgula como OU] X=jorge Y=cris
2.6.4
Prolog
O nome Prolog para a linguagem concreta foi escolhido por Philippe Roussel como uma abrevia ca o de PROgrammation LOGique. Foi criada em meados de 1972 por Alain Colmerauer e Philippe Roussel, baseados no conceito de Robert Kowalski da interpreta ca o procedimental das cl ausulas de Horn. A motiva ca o para isso veio em parte da vontade de reconciliar o uso da l ogica como uma linguagem declarativa de representa ca o do conhecimento com a representa ca o procedimental do conhecimento. *Hist orico Precursores: Newell, Shaw e Simon, com sua Logic Theory Machine, que buscava a prova autom atica de teoremas, em 1956. Robinson, 65, no artigo A machine oriented logic based on the resolution principle. Propunha o uso da f ormula clausal, do uso de resolu ca o e principalmente do algoritmo de unica ca o.
vers ao de 10 de fevereiro de 2008
2.6.5
Cobol
O nome vem da sigla de COmmon Business Oriented Language (Linguagem Comum Orientada aos Neg ocios), que dene seu objetivo principal em sistemas comerciais, nanceiros e administrativos para empresas e governos. O COBOL foi criado em 1959 pelo Comit e de Curto Prazo, um dos tr es comit es propostos numa reuni ao no Pent agono em Maio de 1959, organizado por Charles Phillips
88-08, Pedro Kantek
45
46
CAP ITULO 2. CIENCIA DA COMPUTAC AO do Departamento de Defesa dos Estados Unidos. O Comit e de Curto Prazo foi formado para recomendar as diretrizes de uma linguagem para neg ocios. Foi constitu do por membros representantes de seis fabricantes de computadores e tr es org aos governamentais, a saber: Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Rand, e Sylvania Electric Products, e a For ca A erea dos Estados Unidos, o David Taylor Model Basin e a Ag encia Nacional de Padr oes (National Bureau of Standards ou NBS). Este comit e foi presidido por um membro do NBS. Um comit e de M edio Prazo e outro de Longo Prazo foram tamb em propostos na reuni ao do Pent agono. Entretanto, embora tenha sido formado, o Comit e de M edio Prazo nunca chegou a funcionar; e o Comit e de Longo Prazo nem chegou a ser formado. Por m, um subcomit e do Comit e de Curto Prazo desenvolveu as especica co es da linguagem COBOL. As especica co es foram aprovadas pelo Comit e de Curto Prazo. A partir da foram aprovadas pelo Comit e Executivo em Janeiro de 1960, e enviadas ` a gr aca do governo, 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 especica ca o original, possuia excelentes capacidades de autodocumenta ca o, bons m etodos de manuseio de arquivos, e excepcional modelagem de dados para a epoca, gra cas ao uso da cl ausula PICTURE para especica co es detalhadas de campos. Entretanto, segundo os padr oes modernos de deni ca o de linguagens de programa ca o, tinha s erias deci encias, notadamente sintaxe prolixa e falta de suporte da vari aveis locais, recorr encia, aloca ca o din amica de mem oria e programa ca o estruturada. A falta de suporte ` a linguagem orientada a objeto e compreens vel, j a que o conceito era desconhecido naquela epoca. Segue o esqueleto de um programa fonte COBOL. IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. * ENVIRONMENT DIVISION. * DATA DIVISION. * PROCEDURE DIVISION. PARA-1. DISPLAY "Al^ o, Mundo.". * STOP RUN.
CAP ITULO 2. CIENCIA DA COMPUTAC AO a resposta tamb em o ser a. Se A e B s ao vetores de 100 n umeros, a resposta tamb em o ser a. Idem para matrizes e at e arrays-nd. Em algumas vers oes de APL este n chega a 256 dimens oes. Este e um comando EDIT (troca algo, de... para...)
2.6.7
Basic
A linguagem BASIC (acr onimo para Beginners All-purpose Symbolic Instruction Code), foi criada, com ns did aticos, pelos professores John G. Kemeny e T. Kurtz em 1963 no Dartmouth College. BASIC tamb em e o nome gen erico dado a uma grande fam lia de linguagens de programa ca o derivadas do Basic original. Provavelmente existem mais varia co es de Basic do que de qualquer outra linguagem de programa ca o. Basic e uma linguagem imperativa de alto n vel, pertencente a ` terceira gera ca o, que e normalmente interpretada e, originalmente, n ao estruturada, por ter sido fortemente baseada em FORTRAN II. Um programa em Basic tradicional tem suas linhas numeradas, sendo que e quase que padr ao usar n umeros de 10 em 10 (o que facilita a coloca ca o de linhas intermedi arias). Os comandos s ao poucos, simples e facilmente compreens veis na l ngua inglesa (LET, IF, ...). Um programa em Basic, que calcula a f ormula de Bhaskara caria como: 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
vers ao de 10 de fevereiro de 2008
2.6.6
APL
Ela nasceu do trabalho de um professor de matem atica canadense de nome Keneth Iverson. Sua proposta original era a de produzir uma nova nota ca o matem atica, menos sujeita ` as ambig uidades da nota ca o convencional. Na d ecada de 60, trabalhando na IBM em conjunto com Adin Falco, ambos produziram a primeira vers ao de APL, quando um interpretador da linguagem cou dispon vel. A principal caracter stica de APL e o uso de um conjunto especial de caracteres que incluem algumas letras gregas (rho, iota...), s mbolos matem aticos convencionais (o sinal de vezes, o de dividido...) e alguns s mbolos especialmente inventados. Este fato sempre limitou a dissemina ca o da linguagem. At e o advento das interfaces gr acas, como o windows, por exemplo, exigia-se um hardware especial para poder programar em APL. Programas em APL em geral sempre s ao muito pequenos, embora poderosos. A linguagem est a preparada para tratar arranjos de grandes dimens oes. Por exemplo, quando em APL se escreve A+B, se A e B forem escalares (isto e um n umero u nico),
vers ao de 10 de fevereiro de 2008
47
CAP ITULO 2. CIENCIA DA COMPUTAC AO O programa demonstra a falta de estrutura ca o da linguagem original, pois o IF funciona como um GOTO condicional, o que favorece o c odigo espaguete.
CAP ITULO 2. CIENCIA DA COMPUTAC AO @ 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.8
Clipper
Tudo come cou com o dbase, que foi o precursor de bancos de dados para micros. Por volta de 83, 84 surgiu o dbase 2 (nunca houve o 1) para micros de 8 bits com mem orias 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 a era um gerenciador de dados, dentro da vis ao relacional, com m nima redund ancia de dados e com todas as garantias de acesso e uma linguagem estruturada, no melhor padr ao, de uso geral, capaz de garantir um aumento na produtividade na programa ca o. A hist oria do dBASE come ca em 74, no Jet Propulsion Laboratory, conhecido como JPL, e instalado em Pasadena, Calif ornia. Nesta instala ca o da NASA trabalhava Jeb Long, pesquisador que lidava com dados obtidos nas pesquisas espaciais atrav es de naves n ao tripuladas. Estes, por serem em grande n umero, come caram a trazer problemas e dissabores a Jeb Long, que desenvolveu, ent ao, um programa de computador capaz de gerenciar tais informa co es. Este programa com nome de JPLDIS, foi conclu do e alcan cou razo avel sucesso tendo sido bastante comentado pelo pessoal t ecnico. Foi o que bastou para que um analista de sistemas (Wayne Ratli) come casse a desenvolver um programa gerenciador de dados, gen erico, 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 a estava maduro e pronto para enfrentar o mercado, e ele foi anunciado com o nome de VULCAN. Foi, entretanto, um fracasso: n ao se chegou a vender sequer 50 c opias. 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 mudan cas cosm eticas no programa, seu nome foi mudado para dBASE II (nunca houve o dBASE I, tratava-se de estrat egia comercial, para apresentar o produto como um melhoramento), e uma nova empresa (ASHTON TATE) foi criada para vender este produto. Em pouco tempo, dBASE tornou-se um marco na hist oria de softwares para microcomputadores. A grande vantagem de um banco de dados e retirar a amarra ca o entre programas e dados. A explica ca o desta vantagem e que dados s ao muito mais est aveis do que os procedimentos (=programas). Separando-os garante-se que longevidade aos dados, que em geral s ao os mais custosos para adquirir. O dbase como linguagem era interpretado, o que trazia desempenho p o nas aplica co es, al em da eventual falta de seguran ca (qualquer um podia alterar os dados). Para corrigir estas duas deci encias, logo surgiram in umeros compiladores, dos quais o mais famoso foi o CLIPPER. Eis um programa em CLIPPER, por acaso um trecho do programa que emite provas aleat orias e diferentes: 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 "@!"
vers ao de 10 de fevereiro de 2008
2.6.9
Natural
NATURAL e uma linguagem de quarta gera ca o que pode ser utilizada, indistintamente por usu arios nais trabalhando em auto-servi co, ou por programadores prossionais em suas atividades normais no CPD. Embora possa ler arquivos seq uenciais, o Natural e mais indicado para ler bancos de dados ADABAS, que a partir da d ecada de 90 foi o padr ao de bancos de dados em nosso pa s e em boa parte do mundo. 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
uma linguagem de programa E ca o estruturada que recebeu este nome em homenagem ao matem atico Blaise Pascal. Foi criada em 1970 pelo su co Niklaus Wirth, tendo em mente encorajar o uso de c odigo estruturado. Segundo o autor, Pascal foi criada simultaneamente para ensinar programa ca o estruturada e para ser utilizada em sua f abrica de software. A linguagem reete a libera ca o pessoal de Wirth ap os seu envolvimento com a especica ca o de ALGOL 68, e sua sugest ao para essa especica ca o, o ALGOL W. A linguagem e extremamente bem estruturada e muito adequada para ensino de provavelmente uma das linguagens mais bem resolvidas linguagens de programa ca o. E 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
49
50
CAP ITULO 2. CIENCIA DA COMPUTAC AO Pascal originou uma enorme gama de dialetos, podendo tamb em ser considerada uma fam lia de linguagens de programa ca o. Grande parte de seu sucesso se deve a cria ca o, na d ecada de 80, da linguagem Turbo Pascal, inicialmente dispon vel para computadores baseados na na arquitetura 8086 (com vers oes para 8080 no seu in cio). Pascal e normalmente uma das linguagens de escolha para ensinar programa ca o, junto com Scheme, C e Fortran. S o mais recentemente o Java entrou nesta lista. Comercialmente, a linguagem foi sucedida pela cria ca o da linguagem Object Pascal, atualmente utilizada nas IDEs Borland Delphi, Kylix e Lazarus. Academicamente, seus sucessores s ao as linguagens subseq uentes de Niklaus Wirth: Modula-2 e Oberon. A partir da vers ao 2005, o Delphi passou a se referir a sua linguagem de programa ca o como Delphi Language. Assim como a Linguagem C, que e padronizado pela ANSI (Ansi C), o Pascal possui padr oes pela ISO, como o Pascal Standard e o Advanced Pascal. Um exemplo: program Teste; var a,b:integer; uses crt; begin writeln (Digite um n umero para A); readln (a); writeln (Digite o n umero para B); readln (b); if (a > b) then { Se A e maior que B ent~ ao } writeln (A e maior que B) else { Sen~ ao... } writeln (B e maior que A); end
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
2.6.11
C e uma linguagem de programa ca o estruturada e padronizada criada na d ecada de 1970 por Dennis Ritchie e Ken Thompson para ser usada no sistema operacional UNIX. Desde ent ao espalhou-se por muitos outros sistemas operacionais, e tornou-se uma das linguagens de programa ca o mais usadas. C tem como ponto-forte a sua eci encia e e a linguagem de programa ca o de prefer encia para o desenvolvimento de software b asico, apesar de tamb em ser usada para desenvolver aplica co es. E tamb em muito usada no ensino de ci encias da computa ca o, mesmo n ao tendo sido projetada para estudantes e apresentando algumas diculdades no seu uso. Outra caracter stica importante de C e sua proximidade com a linguagem de m aquina, que permite que um projetista seja capaz de fazer algumas previs oes de como o software ir a se comportar ao ser executado. C tem como ponto fraco a falta de prote ca o que d a ao programador. Praticamente tudo que se expressa em um programa em C pode ser executado, como por exemplo pedir o vig esimo membro de um vetor com apenas dez membros. Os resultados muitas vezes totalmente inesperados e os erros s ao dif ceis de encontrar. Muitas linguagens de programa ca o foram inuenciadas por C, sendo que a mais utilizada atualmente e C++, que por sua vez foi uma das inspira co es para Java. O exemplo: #include <stdio.h> struct pessoa { unsigned short idade;
vers ao de 10 de fevereiro de 2008
Java e uma linguagem de programa ca o orientada a objeto desenvolvida na d ecada de 90 pelo programador James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que s ao compiladas para c odigo nativo, a linguagem Java e compilada para um bytecode que e executado por uma m aquina virtual. Desde seu lan camento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programa ca o na hist oria da computa ca o. Em 2003 Java atingiu a marca de 4 milh oes de desenvolvedores em todo mundo. Java continuou crescendo e hoje e uma refer encia no mercado de desenvolvimento de software. Java tornou-se popular pelo seu uso na Internet e hoje possui seu ambiente de execu ca o presente em web browsers, mainframes, SOs, celulares, palmtops e cart oes inteligentes, entre outros. Principais Caracter sticas da Linguagem Java A linguagem Java foi projetada tendo em vista os seguintes objetivos: Orienta ca o a objeto - Baseado no modelo de Smalltalk e Simula67 Portabilidade - Independ encia de plataforma - write once run anywhere Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a coopera ca o com protocolos TCP/IP, como HTTP e FTP Seguran ca - Pode executar programas via rede com restri c oes de execu ca o Sintaxe similar a Linguagem C/C++ Facilidades de Internacionaliza ca o - Suporta nativamente caracteres Unicode Simplicidade na especica ca o, tanto da linguagem como do ambientede execu ca o (JVM) distribu E da com um vasto conjunto de bibliotecas (ou APIs) Possui facilidades para cria ca o de programas distribu dos e multitarefa (m ultiplas linhas de execu ca o num mesmo programa) Desaloca ca o de mem oria autom atica por processo de coletor de lixo (garbage collector) Carga Din amica de C odigo - Programas em Java s ao formados por uma cole ca o de classes armazenadas independentemente e que podem ser carregadas no momento de utiliza ca o. Eis um exemplo: public abstract class Animal { public abstract void fazerBarulho(); } public class Cachorro extends Animal { public void fazerBarulho() { System.out.println("AuAu!"); }
51
52
CAP ITULO 2. CIENCIA DA COMPUTAC AO } public class Gato extends Animal { public void fazerBarulho() { System.out.println("Miau!"); } }
2.6.14
2.6.13
PHP
PHP (um acr onimo recursivo para PHP: Hypertext Preprocessor) uma linguagem de programa ca o de computadores interpretada, livre e muito utilizada para gerar conte udo din amico na Web. 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 lan cado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, que era na verdade um interpretador de comandos SQL. Trata-se de uma linguagem modularizada, o que a torna ideal para instala ca o e uso em servidores web. Diversos m odulos s ao criados no reposit orio de extens oes PECL (PHP Extension Community Library) e alguns destes m odulos s ao introduzidos como padr ao em novas vers oes da linguagem. Muito parecida, em tipos de dados, sintaxe e mesmo fun co es, com a linguagem C e com a C++. Pode ser, dependendo da congura ca o do servidor, embutida no c odigo HTML. Existem vers oes do PHP dispon veis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, IRIX e Solaris Construir uma p agina din amica baseada em bases de dados e simples, com PHP. Este prov e suporte a um grande n umero de bases de dados: Oracle, Sybase, PostgreSQL, 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 poss RPC, SOAP. E vel abrir sockets e interagir com outros protocolos. E as bibliotecas 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>
vers ao de 10 de fevereiro de 2008
Para os que acharam APL uma linguagem meio sem p es nem cabe ca, eis aqui J. Olhando para o J, o APL passa a ser t ao comportada quanto um COBOL da d ecada de 70. Para entender o J, precisamos estudar a vida do cara que inventou o APL, o canadense Ken Iverson. Na minha opini ao, o sujeito foi um g enio. Coloco-o sem nenhum medo de errar na galeria dos grandes matem aticos da humanidade, talvez o primeiro (junto com Mandelbroot) que tenha realmente conseguido casar com sucesso a matem atica e a computa ca o. Depois de propor o APL como uma nota ca o matem atica (d ecada de 50), de liderar o grupo que converteu o APL em linguagem de programa ca o (d ecada de 60 na IBM) e de liderar a populariza ca o da linguagem (anos 70 e come cos dos 80), em meados dos 80, ele chegou a algumas conclus oes: o uso de um alfabeto n ao usual (para ser educado), restringia o uso do APL (lembremos que ainda n ao havia o windows e portanto para usar APL havia que comprar hardware especializado - e caro). o desenvolvimento continuado por 30 anos da linguagem apontou algumas inconsist encias te oricas no modelo. N ao esque camos que o Iverson era um matem atico da pesada o custo que o APL sempre teve inviabilizava seu uso pelos menos aquinhoados Dessas elocubra co es nasceu a linguagem J. O nome n ao tem explica ca o, exceto a dada por um de seus autores (Why J ? It is easy to type.). H a quem diga que J segue Ino alfabeto, sendo este Ia nota ca o Iverson. Seja como for, J n ao tem nada a ver 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 inc ognitas e n equa co es, depois o resolve para obter os termos independentes e possibilitar propor ao aluno que descubra as inc ognitas.
53
54
Cap tulo 3
Escrevendo algoritmos
Para escrever algoritmos usando portugu es estruturado (portugol), primeiro necessita-se estabelecer algumas regras de nota ca o e de s ntaxe. Come ca-se descrevendo qual a forma de ler os quadros indicativos da s ntaxe da linguagem. Esta nota ca o resume a linguagem de especica ca o de algoritmos. Ela e um apanhado de no m nimo 4 linguagens (Java, PASCAL, CLIPPER e APL), e tem a nalidade de expressar o funcionamento do algoritmo em bom portugu es, da maneira mais clara poss vel e completamente descompromissado das idiossincrasias dessas e outras linguagens de programa ca o. 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 aceit avel neste contexto [ palavra ] ou [ < O fato de algo estar escrito entre colchetes sigpalavra > ] nica que e OPCIONAL ... (retic encias) Repeti ca o (de 0 a n vezes) de um determinado item. As retic encias, ` as vezes tamb em aparecem na omiss ao de uma parte opcional em um comando qualquer { op ca o 1 | op ca o 2 | ... A barra vertical indica que uma de v arias } op co es deve ser a escolhida Eis como usar esta tabela. Seja por hip otese a seguinte especica ca o de comando: <nome> gostaria [muito] de {comer | beber} A partir da especica ca o acima, seriam v alidos os comandos Jo ao gostaria de beber Maria gostaria muito de comer Ant onio gostaria de comer...
Dentro deste diagrama, (e nos pr oximos que tiverem este formato) qualquer caminho seguido, levar a identicadores v alidos. Consideram-se letra, as 26 letras do alfabeto latino mai usculas, e d gito, os 10 d gitos de 0 a 9. Deve-se atentar que o branco n ao faz parte do rol de caracteres v alidos, o que faz com que o identicador n ao possa ser constitu do de mais de uma palavra. Pode-se usar neste caso o separador ( ), chamado sublinha. Atente-se para a import ancia dos nomes criados pelo programador serem escritos em mai uscula. Exemplos v alidos NOME SOM_TERMOS RAIZ1 SALDO08 SALDO_09 Exemplos n ao v alidos nome (usa-se letras min usculas) Saldo Devedor (usa-se duas palavras) SaldoDevedor (mistura-se letras mai usculas e min usculas) 123SALDO (come ca por um d gito num erico) Embora a maioria dos livros de l ogica n ao fa cam distin ca o entre o uso de mai usculas e min usculas para efeito de estabelecimento de identicadores, aqui vai-se padronizar nossos identicadores sempre EM LETRAS MAIUSCULAS. Isto pode incomodar um pouco no in cio, mas se revelar a uma grande vantagem na an alise de algoritmos feitos por terceiros, ou mesmo fde autoria pr opria, mas feitos h a tempos. O autor do algoritmo tem total autoridade para nomear seus identicadores como queira. Entretanto, h a uma regra de bom senso impl cita. Cada identicador deve ter um nome o mais pr oximo poss vel de sua fun ca o. Exemplo: Se precisarmos um identicador para representar uma somat oria, poderemos cham a-lo de SOMA, SOMAT, SM, etc, mas nunca de ABC, ou XYZ, ou ainda AKLJHJKH. Quanto ao tamanho do identicador, tamb em s o h a uma regra: BOM SENSO. Nem t ao pequeno que que quase imposs vel identic a-lo pelo nome, nem t ao longo que seja cansativo escrev e-lo. Exemplo. Ao gerar um identicador para conter a quantidade total de horas trabalhadas deve-se cham a-lo como QTHT, ou QTDHORAS, ou 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 comp oe o algoritmo devem ou n ao ser acentuadas. Parece uma discuss ao bizantina, mas n ao o e necessariamente. Se o leitor do algoritmo for um ser humano, pode-se acentu a-lo sem nenhum problema. Entretanto, se o algoritmo for no futuro processado por algum programa, h a que se ter em mente, que em geral, para qualquer programa a e diferente de a e esta regra vale para todas as letras. Tamb em c e diferente de c.
88-08, Pedro Kantek
3.1
Nome
O elemento b asico da linguagem e o nome, tamb em conhecido como identicador. Sua constru ca o e dada pelo diagrama a seguir 55
56
CAP ITULO 3. ESCREVENDO ALGORITMOS L ogico ou booleano uma vari O nome booleando vem de George Boole, um matem atico. E avel que pode conter apenas 2 valores, conhecidos pelas palavras: VERDADEIRO e FALSO. Algumas linguagens n ao t em este tipo (C ou APL, por exemplo) usando artif cios para simular o conceito.
3.2
Vari aveis
Ao identicador atribui-se um valor, que ser a usado nas computa co es futuras. Quando este valor pode variar ao longo do processamento, diz-se que o identicador representa uma vari avel. (No contr ario, dir-se-ia que o identicador representa uma constante). Outra deni ca o para vari avel e: Um lugar onde se guarda uma valor. Por norma do portugu es estruturado, todas as vari aveis devem ser declaradas antes de poderem ser utilizadas. Chama-se ` a aten ca o, pois esta n ao e uma regra obrigat oria. In umeras linguagens de programa ca o, permitem que se dena uma vari avel no instante em que ela passa a ser necess aria e em qualquer ponto do programa. (Exemplo: BASIC, dbase, APL etc) Em portugol (e em Pascal, Cobol, Fortran, C, Java etc), isto n ao e poss vel. Assim, nossos programas ter ao dois blocos: O primeiro e o de deni ca o de vari aveis, e o segundo e o de procedimentos, sempre nesta ordem.
O tipo cadeia traz consigo uma pequena diculdade, que e a necessidade de estabelecer - quando da deni ca o da vari avel - qual o seu tamanho m aximo, em n umero de caracteres. Esta atitude e necess aria para informar a quem l e o algoritmo (seja um homem ou um computador) quanto de espa co reservar para conter esta vari avel. Esta diculdade n ao existe nas vari aveis num ericas nem nas l ogicas que tem tamanhos predeterminados e principalmente xos. Existe uma caracter stica das linguagens de programa ca o conhecida como tipagem. H a linguagens de tipagem forte (por exemplo Pascal) e as h a de tipagem fraca (por exemplo C). Este conceito tem a ver com restri co es e verica co es que a linguagem determina ou executa a cada comando. A tipagem forte torna as linguagens um pouco mais demoradas, mas evita erros cometidos pelo programador ao n ao vericar as opera co es que comandou. Este tipo de erro, de resto muitas vezes e dif cil de localizar e corrigir, pois o sintoma que surge frequentemente e intermitente e nem sempre tem muito a ver com o real local onde o erro est a acontecendo. Outra vertente de linguagens fracamente tipadas e quando a linguagem tem regras de convers ao entre tipos diversos e elas s ao aplicadas antes de qualquer comando.
3.2.1
Existem cinco tipos de vari aveis b asicas em portugol: inteiro, real, caracter, l ogico e cadeia. Inteiro uma vari E avel que pode conter n umeros inteiros (positivos ou negativos, n ao importa). Exemplos: 5, 1009, -6730 etc. O conceito de inteiro e familiar a n os. Qualquer opera ca o de contagem, pode ser estabelecida a partir do conjunto dos valores inteiros. Uma 1 quantidade discreta (i. e. enumer avel) sempre pode ser processada com base nos inteiros. Embora possam ter uma deni ca o formal, para n os e suciente a seguinte descri ca o: Uma vari avel inteira e a que pode armazenar qualquer um dos n umeros do conjunto: , ... (n + 1), n, ..., 2, 1, 0, 1, 2, ..., n, n + 1, ..., + Real outra vari E avel num erica que pode conter qualquer n umero real, isto e, inteiro ou fracion ario. Ex.: 1.5, -0.99, 1700,78 etc. Claramente salta aos olhos que armazenar uma vari avel real e mais caro(em tempo e em recursos) do que processar uma vari avel inteira. Ali as, esta e uma das raz oes porque existem vari aveis inteiras. Outra e a caracter stica da enumerabilidade que n ao est a presente no conjunto dos n umeros reais. Caracter Uma vari avel que pode conter um u nico caracter, como uma letra, ou um u nico d gito. O real conte udo de uma vari avel caracter depende do c odigo b asico que est a em uso. Mas, por enquanto, pode-se simplicar esta quest ao dizendo que qualquer caracter que esteja no teclado do computador pode ser colocado em uma vari avel caracter. Cadeia ou string um tipo de vari E avel formado por um ou mais de um caracteres. Por exemplo, um nome: JOSE, ou uma cidade como CURITIBAetc. Ou seja, a diferen ca entre uma vari avel caracter e uma vari avel cadeia e que a primeira tem tamnho 1 (um u nico caracter) e a segunda tem tamanho maior que um, ou seja, v arios caracteres.
1 discreta
3.2.2
C odigo de caracteres
No momento de representar caracteres, aparece um problema: Qual sua lei de forma ca o e representa ca o ?. Tal problema n ao aparece nos n umeros: a matem atica ajuda. Entretanto, n ao h a uma aritm etica para caracteres, e portanto precisa-se construir uma s erie de propriedades e rela co es entre os caracteres. Para n ao criar um novo conceito, vai-se aproveitar o c odigo de representa ca o padr ao em uso nos computadores atuais. Trata-se do c odigo ASCII (American standard Code for Information Interchange). A seguir, uma parte do pr oprio:
= quantia que exprime valores inteiros, objetos, coisas, enm grandezas n ao cont nuas
C odigo de caracteres Existem diversos c odigos usados no mundo da computa ca o. O mais usual e o c odigo ASCII (American Standard Code for Intrechange of Informations), embora se usem tamb em o BCD, EBCDIC e mais recentemente haja uma tend encia no uso do UNICODE. Como exemplo, eis uma parte do c odigo ASCII.
88-08, Pedro Kantek
57
58
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 { | }
Exerc cio 6 Dena um algoritmo capaz de comparar dois n umeros inteiros e positivos
e imprimir a mensagem IGUAIS ou DIFERENTES em fun c ao dos valores de tais n umeros. Eles ser ao considerados IGUAIS quando sua diferen ca for menor a 10% do maior n umero. Ser ao considerados diferentes quando sua diferen ca for maior ou igual a 10% do valor do maior. O algoritmo termina quando for lido um n umero negativo.
Exerc cio 7 Dena e escreva um algoritmo que leia um n umero e determine se ele e
divis vel por 3. Se for o algoritmo deve imprimir a mensagem E DIVIS IVEL, e se n ao for E DIVIS deve imprimir NAO IVEL.
Exerc cio 8 Escrever um algoritmo que leia um conjunto de tr es vari aveis que indicam
respectivamente: Nome do funcion ario (cadeia-30), n umero de horas (inteiro) e valor da hora trabalhada (real). Se o n umero de horas e maior que 40, calcule o valor a pagar, sabendo que as horas extras s ao remuneradas a base de 1,5 x a hora normal. Se o sal ario for maior que R$ 650,00 retire 10% do sal ario para o governo (imposto). escreva nome, horas, valor da hora, valor a receber e valor do imposto. Dados terminam quando for lido um n umero de horas igual a zero. Por exemplo, Lido Impresso Jo ao,50,100 Jo ao,50,100,4950,550 Maria,30,10 Maria,30,10,300,0 XXX,0,0 m.
Esta seq u encia ASCII, e muito importante pois permite estabelecer o atributo de ordem no universo dos caracteres. Olhando para ela, podemos armar, por exemplo, que o caractere a e menor do que o caractere b. Da mesma maneira, o amin usculo e maior do que o Amai usculo (ali as, isto vale para todas as letras), e qualquer d gito num erico e menor do que qualquer letra. Um especial cuidado deve ser tomado, pois esta n ao eau nica seq u encia poss vel, e nem sequer a melhor. Cada m aquina e cada implementa ca o pode ter a sua. Alguns outros c odigos: BRASCII (C odigo padr ao BRASILEIRO para interc ambio de informa co es), EBCDIC (Extended binary-coded decimal interchange coded), Z-Code etc. Outra observa ca o e que na tabela ASCII n ao existem caracteres acentuados. Duas conseq u encias adv em deste fato: nem sempre se podem usar tais caracteres e se eles forem usados, n ao se sabe qual a sua ordem no conjunto. Trocando em mi udos, se se solicitar a ordena ca o de uma lista de palavras contendo AMORA, ANCORA BROA, CAFE, ARROZ, CEREAL, n ao ser a nenhuma surpresa se a resposta for AMORA, ARROZ, BROA, CAFE, CEREAL e ANCORA.
Exerc cio 3 Uma salada de frutas, produzida industrialmente leva ma c a, banana, abacaxi e a cu car nas propor co es de 1 Kg : 2 Kg : 0,5 Kg : 0,5 Kg respectivamente. Denir 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 o ser ao usadas logo total 10,10,10,10 5,10,2.5,2.5 20Kg dades que ultrapassam a propor c ao. Exemplos: 10,20,10,10 10,20,5,5 40Kg 10,10,1,1 2,4,1,1 8Kg
Exerc cio 4 Imagine que voc e tem uma entrada com um par de n umeros reais. Eles
representam as dimens oes x e y medidas em metros, de um ret angulo. Escreva o algoritmo que leia esse par de n umeros e escreva x, y e a area do ret angulo de lados x e y , apenas se o per metro deste mesmo ret angulo for superior a 12.0 m.
Exerc cio 5 Dena e escreva uma fun c ao que receba tr es n umeros reais, encontre e
devolva o maior deles.
vers ao de 10 de fevereiro de 2008
Exerc cio 10 Pretende-se informatizar um estacionamento. Nele existem 3 tipos de pre cos: 2 R $ por hora ou fra c ao para carros pequenos, 2,50 R$/hora para carros m edios e 3 R$/hora para carros grandes. Denir algoritmo que leia uma serie de informa co es formadas por: Tipo do carro: caracter; hora-entrada: inteiro, minuto-entrada: inteiro; hora-saida: inteiro, minuto-saida: inteiro. Para cada conjunto de informa co es lidas, o algoritmo deve imprimir a quantidade de dinheiro devida.
88-08, Pedro Kantek
59
60
CAP ITULO 3. ESCREVENDO ALGORITMOS NOME A XUNXO X NUM 1 AST * Duas perguntas a responder: A 1 A e vari avel num erica ou caracter ? B V B e vari avel l ogica ou cadeia ? Como regra geral, sempre que houver mistura entre elementos inteiros e reais, nas opera co es +, e o resultado ser a real. Exemplos de uso de operadores em express oes num ericas A 1 1,78 3 B trunc(3.1416) C abs (-6 + trunc (3.4)) D 1 + 10 + 100 - 1000 etc Uma observa ca o nal e bem importante e que dentro de um mesmo algoritmo uma vari avel pode ter diversos (isto e, mais de um) comandos de assinalamento. Isto n ao e erro, e ao contr ario e bem freq uente. Nestes casos, a vari avel ter a o valor que foi nela colocado por u ltimo. Por exemplo, em 1: A 1 2: ... 3: A 10 4: ... 5: escreva (A) 6: ... Se nos comandos representados com ... n ao houver nenhuma altera ca o na vari avel A, o resultado impresso ao nal ser a 10 (e n ao 1).
3.3
Comando de atribui c ao
Comando de atribui ca o e aquele que permite colocar/alterar valores de conte udo em vari aveis. Para tanto usaremos o s mbolo . 2 Quando dizemos express ao, podemos estar querendo dizer valor (que e a forma mais simples de express ao), ou simplesmente um conjunto de valores e operadores (que e a deni ca o de express ao). Exemplos: A 1 (aqui, a express ao e apenas um valor) B 1 + 2 (neste caso, a express ao e um conjunto de 2 valores e uma opera ca o, no caso, a adi ca o) importante notar, que a express E ao que se encontra do lado direito da echa de atribui ca o () deve ser compat vel com o tipo de vari avel que foi denida. Em outras palavras, no comando A 1+1, a express ao 1+1 tem que ser compat vel com a vari avel A, ou seja A dever a ter sido denida como inteira ou real, mas n ao como caracter, cadeia ou l ogica. Na atribui ca o de vari aveis do tipo inteira, a express ao dever a ser uma express ao inteira, isto e, sem parte fracion aria. Para vari aveis do tipo real, a express ao dever a ser num erica sem nenhuma outra restri ca o. Esta eau nica exce ca o ` a regra acima, pois podemos colocar um valor inteiro em uma vari avel real. Na atribui ca o de vari aveis cadeia, o valor dever a estar envolvido entre aspas simples (). Ele n ao dever a ter um tamanho maior do que aquele estabelecido para a vari avel. Se isto acontecer, o valor ser a truncado. Entretanto, n ao e boa norma de programa ca o usar esta facilidade (ou caracter stica) pois ela diculta a compreens ao do algoritmo. Finalmente, nas vari aveis l ogicas, deveremos usar as palavras VERDADEIRO e FALSO, ou quando n ao houver risco de confus ao, podemos usar as abreviaturas F ou V. Exemplos de atribui co es: 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 FALSO NAO VARLOG V VARLOG2 F
3.4
Express oes
Express oes s ao conjuntos de vari aveis, valores, opera co es e eventualmente par enteses, que demandam algum tipo de computa ca o determinada na express ao e produzem um resultado. As express oes se classicam em geral devido ao tipo de opera co es que existem dentro da express ao, podendo ser aritm eticas, condicionais, l ogicas e de caracteres.
3.4.1
Aritm eticas
As express oes aritm eticas s ao aquelas que envolvem vari aveis num ericas, valores idem e as opera co es aritm eticas, dando como resultado um n umero (que obviamente pode ser real ou inteiro). Nota c ao Exponencial Para os casos em que seja necess ario representar n umeros muito grandes ou muito pequenos, pode-se lan car m ao da nota ca o exponencial, que ser a escrita de acordo com a seguinte regra: A primeira parte do n umero ser a escrita como um n umero convencional, podendo ter o ponto decimal (constante ponto utuante) ou n ao (constante inteira). Depois, vem a letra mai uscula E, indicando elevado a. Um segundo n umero inteiro, positivo ou negativo indicando a pot encia de 10 a ` qual a primeira parte do n umero est a elevada.
88-08, Pedro Kantek
2 A quest ao do s mbolo da atribui ca o e bem complicada. Poucos ambientes (como o APL) disp oe do s mbolo nativo . Os outros improvisam, com os s mbolos := do Pascal, ou simplesmente = do C e Java. No primeiro caso, s ao 2 s mbolos, ao inv es de um u nico, e no segundo surge a confus ao entre A=1 (signicando A recebe 1) e A=1 (signicando a pergunta: A e igual a 1 ?). Da o C e o Java fazerem a pergunta com ==. N ao h a uma sa da f acil.
61
62
CAP ITULO 3. ESCREVENDO ALGORITMOS Por exemplo: o n umero deve ser entendido como 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 Opera co es usuais
Fun ca o Adi ca o
Subtra ca o
A-B
O valor absoluto de A Seno Sin(A) seno de A radianos Cosseno cos(A) cosseno de A radianos Inteiro trunc(A) A parte inteira de A Fracion ario frac(A) A parte fracion aria 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 pr oximo Raiz sqrt(A) Raiz quadrada quadrada de A Quadrado Somar 1 sqr(A) A++ O quadrado de A A vari avel A e incrementada de 1 unidade
abs(A)
inteiro real inteiro real inteiro real inteiro real inteiro real inteiro real inteiro real real real
ou ou ou ou ou ou ou
Tipo do resultado Se A e B s ao inteiros, A+B e inteiro. Se pelo menos um dos dois e real, o resultado e real idem ao anterior idem ao anterior real real O mesmo tipo de A real real inteiro real
Exemplo 3+7 e 10
ou ou
round(3.6) e 4 sqrt(4) e2
ou A( ou ou
real
O mesmo de A O mesmo de A
63
64
CAP ITULO 3. ESCREVENDO ALGORITMOS Subtrair 1 Divis ao inteira Resto A A div B A mod B A vari avel A e decrementada de 1 unidade o quociente inteiro da divis ao de A por B O resto da divis ao inteira de A por B inteira real inteiros ou O mesmo de A inteiro Se A e 10, A coloca 9 em A. 4 div 3 e1 trunc(1.8) e1 trunc(-1.8) e -1 round(1.8) e2 round(-1.8) e -2
inteiros
inteiro
10 mod 7 e3
Duas considera co es nais: Podemos considerar a exist encia no portugu es estruturado de uma constante chamada MAXINT, contendo sempre o MAIOR valor poss vel de ser representado em uma vari avel inteira. Em outras palavras, desde que A seja inteira, quando compararmos A com MAXINT, A ser a menor ou no m aximo igual a MAXINT, nunca maior. Para todos os efeitos pr aticos esse e o nosso innito (). Podem ser introduzidos pela pessoa que est a escrevendo o algoritmo quaisquer novos operadores matem aticos, desde que estes n ao sejam amb guos e sejam facilmente entend veis, a m de poderem ser seguidos mais tarde. Div e Mod Existem duas importantes fun co es matem aticas, a quem chamar-se- a div e mod e que s ao usadas em matem atica inteira. Ambas atuam sobre n umeros inteiros e d ao como resultado tamb em n umeros inteiros. Div devolve o resultado inteiro de uma divis ao. J a mod devolve o resto inteiro da divis ao de dois n umeros. Em ambos operadores, o segundo termo tem que ser diferente de zero. Em resumo, A div B, e o resultado inteiro da divis ao de A por B. Exemplo: 10 div 3 e3 5 div 3 e1 890 div 100 e8 1000 div 1 e 1000 A mod B e o resto inteiro da divis ao de A por B. Exemplo 10 mod 3 e1 5 mod 3 e2 890 mod 100 e 90 1000 mod 1 e0 As duas fun co es se completam na express ao I mod J = I (I div J ) J . Exemplo: 20 mod 6 2 2 2 = = = = 20 - (20 div 6) * 6 20 - 3 * 6 20 - 18 2
Prioridades Na execu ca o de um comando complexo, podemos encontrar duas ou mais opera co es num ericas uma ao lado da outra, e neste caso, pode surgir a pergunta: Qual realizar antes ? Exemplo: 2 + 3 4 e igual a 14 ou 20 ? Anal, 2 + (3 4) e 14, e(2 + 3) 4 e 20. Embora na matem atica tradicional j a se tenha uma lista de prioridades que deve ser obedecida, aqui no portugu es estruturado tamb em h a uma lista, que se resume a: 1. Primeira Prioridade: Par enteses 2. Prioridade: Fun co es 3. Prioridade: Menos un ario (oposto) 4. Prioridade: Potencia ca o 5. Prioridade: Multiplica ca o e divis ao 6. Prioridade: Adi ca o e subtra ca o 7. Prioridade: Compara co es (>, <, =, , , =) 8. Prioridade: Operadores l ogicos, , , . Se houverem duas opera co es de mesma prioridade, as mesmas ser ao realizadas em qualquer dire ca o convencionada, por exemplo, da esquerda para a direita. dif E cil decorar esta tabela, al em do que, algumas linguagens de computador podem implementar tabelas ligeiramente diferentes desta. Assim, resta como sugest ao ao aluno: Denir linhas pequenas (clareza e auto-documenta ca o). Se for necess ario, quebrar um comando complexo em v arios simples. Usar e abusar de par enteses, ainda que redundantes, pois eles refor cam a ordem de execu ca o e desobrigam de conhecer e consultar a tabela de prioridades. Round e Trunc Arredondar um n umero e converter um real em inteiro aproximando-o do inteiro mais pr oximo. A regra b asica e que n umeros cuja parte fracion aria e menor do que 0.5 s ao trazidos para o inteiro menor e n umeros cuja parte fracion aria e igual ou maior a 0.5 s ao arredondados para mais. J a o truncamento simplesmente despreza a parte fracion ario, trazendo o resultado sempre para o inteiro menor ou igual ao n umero dado. As fun co es round e trunc operam sobre n umeros positivos e negativos. Quando for este u ltimo caso, a deni ca o continua prevalecendo, o resultado e encontrado como se o operando fosse positivo, e a seguir o sinal de menos e colocado sobre o resultado. Acompanhe nos exemplos:
vers ao de 10 de fevereiro de 2008
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 e 0. Esta regra segue v alida se o primeiro n umero e 0. Por exemplo, em 0 div 5, a resposta segue sendo zero e n ao h a erro nesta chamada. A mesma considera ca o pode ser feita na fun ca o mod. 2 mod 3 e 2 e 0 mod 5 e zero, sem erro nos dois casos.
88-08, Pedro Kantek
65
66
CAP ITULO 3. ESCREVENDO ALGORITMOS suc, pred, ord e chr Para os tipos ordinais pr e-denidos (caracter, inteiro e l ogico), existem algumas fun co es que podem ser usadas. Para cada tipo de operandos os universos s ao: inteiros neste caso, a seq u encia de ordena ca o e aquela dos n umeros inteiros da matem atica: ... , ..., -2, -1, 0, 1, 2, ... +. caracteres aqui a seq u encia e dada pelo c odigo nativo do ambiente, no caso o ASCII. booleanos a seq u encia e FALSO, VERDADEIRO. Ord A Fun ca o ord devolve o ordinal do operando dentro do seu universo original. Assim, a ord de um operando caracter, devolve o ordinal dentro do c odigo ASCII. A ord de um l ogico, considera o universo de 2 valores (V e F). e a ord de um n umero inteiro, e o pr oprio n umero inteiro. Embora atue sobre os 3 tipos acima, na verdade ela se aplica verdadeiramente aos caracteres. Por exemplo: ORD(-3) e -3. ord(a) e 97. ord(FALSO) e 0. ord(7) e 55, ord(W) e 87, ord(z) e 122, No caso dos caracteres, a resposta ` a fun ca o ord se encontra na tabela vista anteriormente. Consultamos o operando de ord na coluna referente a ASCII, e a resposta de ord e o n umero decimal que estiver na mesma linha. Chr A fun ca o chr e a fun ca o inversa da fun ca o ord, por em s o funciona para caracteres. Dado um n umero inteiro entre 0 e 255, para o c odigo ASCII e 0 e 64536 para o c odigo UNICODE, a fun ca o chr deste n umero devolve o caractere correspondente a ele. Para simular como o portugol faz isto, dado um n umero, procura-se na tabela em qual linha ele ocorre sob a coluna decimal, e a seguir responde-se com o caractere ASCII correspondente ` a mesma linha. Exemplo, CHR(97) e a, etc. Suc Trata-se da fun ca o sucessora, que nos devolve o pr oximo valor ao do operando considerado o seu universo original. Esta fun ca o s o se aplica a operandos ordinais pr edenidos (inteiro, caracter e l ogico). Se o operando for inteiro, a resposta tamb em ser a. Se o operando for l ogico, a resposta tamb em ser a. Da mesma maneira se o operando for caracter. suc(a) e b suc(FALSO) e VERDADEIRO suc(23) e 24, e assim por diante suc(1) e 2, CUIDADO ====> succ(9) e : e succ(9) e 10. Uma aplica ca o interessante para esta fun ca o e a substitui ca o do incremento de vari aveis. Por exemplo, em vez de fazer: I I + 1; podemos fazer I suc(I);
vers ao de 10 de fevereiro de 2008
CAP ITULO 3. ESCREVENDO ALGORITMOS Pred Esta fun ca o devolve o predecessor, e tamb em s o se aplica a ordinais pr e-denidos. Tamb em (tal como no suc) o tipo da resposta e o mesmo tipo do operando. Exemplos: pred(b) e a pred(FALSO) e VERDADEIRO pred(23) e 22, e assim por diante.
3.4.2
Relacionais
As express oes relacionais s ao as que envolvem os operadores =, =, >, , < e . Este comum operadores visam a estabelecer se uma dada proposi ca o e falsa ou verdadeira. E em qualquer linguagem de programa ca o, comparar-se 2 valores, perguntando, por exemplo, se o primeiro e maior do que o segundo. A resposta, na forma l ogica, dir a se a arma ca o e ou n ao e verdade. S ao eles: igual (=), diferente (=), maior (>), maior ou igual (), menor (<) e menor ou igual (). Estes operadores sempre relacionam duas vari aveis ou constantes de tipos compat veis. Por exemplo ao perguntar 3 > 5?, a resposta ser a falso. Note que n ao e permitido (ou seja gera-se um erro), misturar valores de tipos distintos. Ent ao, a compara ca o A = 3, embora logicamente pudesse estar correta (ou seja a letra A n ao e igual ao n umero 3), d a erro em qualquer linguagem de programa ca o e portanto est a proibida de ser usada na constru ca o de algoritmos. A exce ca o a ` regra acima e quando se comparam dois n umeros, sendo um deles do tipo inteiro e outro do tipo real. Embora de tipos diferentes (inteiro e real), a matem atica permite fazer essa compara ca o, j a que ambos s ao n umeros. Tem-se ent ao que os operandos poder ao ser de qualquer tipo, desde que compat veis, mas a resposta sempre ser a do tipo l ogico. Fun ca o Formato Objetivo Operando Resultado Exemplo Igual A = B Comparar o ambos .V. se A = B 3 = 4 e .F., conte udo de A e inteiros, e .F. se A = 66.0 = 66 e .V., de B reals ou al- B. AB= ab e .F. fanum ericos Diferente A = B igual ao anterior igual ao an- .V. se A = B 3 = 4 e .V., 66.0 terior e .F. se A = = 66 e .F. B. AB= AB e .F. Maior A > B igual ao anterior ambos in- .V. se A > B 5 > 2 e .V. teiros ou e .F. se A 2 > 5 e .F. reais B. Maior ou A B igual ao anterior igual ao an- .V. se A B 5 2 e .V. igual terior e .F. se A < 2 2 e .V. B. Menor A < B igual ao anterior igual ao an- .V. se A < B 5 < 2 e .F. terior e .F. se A 2 < 5 e .V. B. Menor ou A B igual ao anterior igual ao an- .V. se A B 2 5 e .V. igual terior e .F. se A > 2 2 e .V. B.
3.4.3
L ogicas
As express oes l ogicas envolvem valores l ogicos (verdadeiro e falso) conectados por op eradores l ogicos, que s ao 3: E (), OU () e NAO ( ou ). Estes operadores
88-08, Pedro Kantek
67
68
CAP ITULO 3. ESCREVENDO ALGORITMOS destinam-se as opera co es l ogicas entre operandos. Eles atuam sobre os valores V (verdade) e F (falso). Acompanhe a seguir as tabelas verdade: Em termos verbais a express ao A B ser a verdadeira quando A e B forem verdadeiros e ser a falsa sen ao. Vendo na tabela a seguir: verdadeiro falso verdadeiro verdadeiro falso falso falso falso express ao l ogica (A B) C D (E F) G
CAP ITULO 3. ESCREVENDO ALGORITMOS ser a verdadeira quando... A e C forem verdadeira ou B e C forem verdadeiras D for falsa E e F forem verdadeiras ou ent ao se G for verdadeiro
Exerc cio 11 Suponha que voc e vai escrever um algoritmo em portugol para resolver as raizes de ax2 + bx + c = 0. Quais vari aveis seriam necess arias e como elas seriam denidas ? Exerc cio 12 Quando crian ca Gauss resolveu a somat oria 1 + 2 + 3 + ... + 4998 + 4999 + 5000, de uma forma brilhante, intuindo toda a teoria de progress oes. Se voc e tivesse que resolver o problema de Gauss, quais vari aveis deniria, e como elas seriam denidas ? Exerc cio 13 Para cada uma das f ormulas a seguir, supor que ser a criado um algoritmo,
no qual voc e dever a dizer quais vari aveis ser ao necess arias e como ser ao denidas: 1. per metro de um ret angulo 2. c alculo do terceiro angulo de um tri angulo, dados 2 angulos.
A express ao A B ser a verdadeira quando A for verdadeiro ou B for verdadeiro ou ainda quando ambos forem verdadeiros. A express ao s o ser a falsa quando A e B forem falsos. Veja: verdadeiro falso verdadeiro verdadeiro verdadeiro falso verdadeiro falso
A), devolve o valor l Finalmente, a express ao A (lida como NAO ogico oposto ao de A. Ent ao verdadeiro e falso e falso e verdadeiro. ou verdadeiro falso falso verdadeiro Operando ambos l ogicos Resultado .V. se A e B s ao .V., .F. em caso contr ario .V. se A ou B s ao .V., .F. em caso contr ario .V. se A e .F. .F. se A e .V. Exemplo .V. .V. e .V. .V. .F. e .F. .F. .V. e .F. .F. .F. e .F. .V. .V. e .V. .V. .F. e .V. .F. .V. e .V. .F. .F. e .F. .F. e .V. .V. e .F.
3. c alculo da quantidade de azulejos a serem colocados em um banheiro. 4. Volume de uma lata de leite 5. Pre co a pagar pelo estacionamento de um ve culo.
Exerc cio 14 Informe qual o resultado esperado para a vari avel VAR1
Fun ca o E-l ogico Formato Objetivo A B Realizar a opera ca o E-l ogico 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)
AB
ambos cos
l ogi-
A ou A
Nega logicamente A
l ogico
As palavrasverdadeiroe falso bem como os s mbolos Ve F podem ser considerados constantes l ogicas tamb em chamadas booleanas e podem ser empregados livremente na constru ca o dos algoritmos. As duas constantes, formam um conjunto ordenado, e 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 rela co es num ericas entre 0 e 1 continuam verdadeiras entre FALSO e VERDADEIRO. A grande import ancia dos valores l ogicos em portugol, decorre do fato de que qualquer compara ca o usando os operadores relacionais sempre devolve um l ogico. A import ancia das express oes l ogicas e que elas permitem conectar duas ou mais express oes relacionais, formando uma nova e maior express ao relacional. Veja-se nos exemplos:
69
70
Exerc cio 16 Na s erie de exerc cios a seguir, considere o seguinte conjunto de vari aveis:
X 5 (inteiro) Y 1 (inteiro) AA 0.5 (real) BB 4.9 (real) CC 3 (real) Para cada express ao pedida, calcule o resultado e determine o tipo (inteiro ou real) do 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)
vers ao de 10 de fevereiro de 2008
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))
73
74
CAP ITULO 4. COMANDOS Pode-se armar com certeza que primeiro ser a executado o comando 1. Depois dele e que ser a executado o comando 2, e a o valor da vari avel A j a estar a estabelecido corretamente.
Cap tulo 4
4.3
Entrada/Sa da
Comandos
4.1 Vis ao Top down e Bottom up
Estes termos, consagrados no jarg ao da inform atica, signicam maneiras de atacar e resolver um problema em computador. A maneira top down, que pode ser traduzido como de cima para baixo, pressup oe estudar o problema como um todo, e depois ir realizando a montagem do esquema completo, atrav es da execu ca o das partes, mas sem nunca esquecer o modelo completo. A vis ao bottom up, parte da constru ca o individual de todos os elementos, que poste poss riormente s ao juntados e testados. E vel fazer sistemas de computador usando as duas t ecnicas. Fazendo uma analogia (meio mambembe, mas v a l a) com a montagem de um carro, na vis ao top down a primeira coisa a fazer seria juntar a carroceria e as rodas, de maneira que o carro conseguisse se mover. Depois, os diversos sistemas e componentes iriam sendo instalados pe ca a pe ca no carro e a cada etapa o carro continuaria a andar em suas pr oprias rodas. A montagem terminaria quando o carro andasse sozinho. J a na vis ao bottom up cada um dos sistemas (motor, bancos, instrumenta ca o, ...) seria montado isoladamente, testado e em caso de sucesso levado aonde o carro est a sendo constru do e a posto em conex ao com os outros sistemas do carro. O processo tamb em termina quando o carro sair andando. O exemplo n ao e dos melhores, porque um carro e diferente de um programa de computador. L a se lida com coisas f sicas que ocupam espa co e pesam para ser carregadas. Aqui se fala de entidades abstratas (dados e programas). Outro exemplo, este talvez algo melhor e a proposta de escrever um livro. Antes de tudo h a que se ter o plano completo da obra, mas depois e poss vel visualizar a constru ca o top down e a constru ca o bottom up.
A maioria dos algoritmos necessitar a receber dados externos, e em algum momento do seu processamento precisar a comunicar respostas. Para resolver estes dois problemas atrav existem os chamados comandos de entrada/sa da. E es deles que o algoritmo se comunica com o mundo externo. Desprezando as complexidades inerentes a um processo de transfer encia de dados em um computador real eis a a principal vantagem do portugol , os comandos que se usar ao s ao dois: leia e escreva. O verbo ou comando leia signicar a uma entrada de dados externos para dentro do algoritmo. A forma desta entrada, isto e se os dados v ao entrar pelo teclado, v ao ser lidos do disco ou vir ao por uma linha telef onica e quest ao que n ao interessa agora. Nos pr oximos anos do curso, haver a muitas horas de aula sobre estas quest oes. Agora s o interessa o fato de que o dado entra para o algoritmo e pronto. Da mesma forma, para a sa da dos dados, usar-se- a o comando escreva, que tamb em n ao signica obrigatoriamente impress ao em papel. Estes dados podem estar saindo no v deo, em um plotter, em um disco, linha telef onica etc. O formato destes comandos e: leia (nome1, [nome2, ...]) Ao lado do verbo leia, e entre par enteses, deve-se escrever as vari aveis que dever ao ter seus valores fornecidos neste comando. Os identicadores citados j a dever ao ter sido denidos anteriormente no programa. Em geral (regra heur stica) dados que v ao ser lidos n ao precisam ser inicializados antes. O comando de impress ao e: escreva ([mensagem] nome1) Este comando externa um resultado dispon vel a quem est a operando o algoritmo. E claro que os valores a imprimir ter ao que ter sido inicializados e/ou calculados antes da impress ao. As vari aveis a escrever tem seu nome citado entre par enteses. Exemplos de leitura: VALOR1, VALOR2: inteiro leia (VALOR1, VALOR2) De impress ao VALOR1: inteiro VALOR1 .... escreva (O valor obtido e , VALOR1) Na impress ao e comum se colocar constantes alfanum ericas, mensagens ou textos explicativos antes ou depois dos dados para clarear e facilitar a leitura humana posterior. Por exemplo, ao calcular uma raiz na vari avel RZ, e muito melhor escrever escreva (A raiz e,RZ), do que simplesmente escreva (RZ). Neste u ltimo caso, o dado caria perdido (no v deo, no papel, ...) sem que o operador soubesse o que era aquilo. Identicamente, para imprimir uma a rea, e melhor fazer escreva (AR,m2), do que fazer s o escreva(AR).
4.2
Vale lembrar que a menos que o comando em quest ao determine outro caminho, os comandos dentro de um algoritmo v ao sendo executado seq uencialmente, come cando no primeiro e terminando no u ltimo, e sempre esperando terminar este para come car o pr oximo. Diz-se nestes casos que o uxo cai por decanta ca o. Assim, por exemplo, na seq u encia 1: A 1 2: B 2 + A 75
4.3.1
Comando de Entrada
76
in cio
1: 2: 3: 4: 5: 6: 7: 8: 9:
4.3.2
Comando de Sa da
Permite a gera ca o de resultados por parte do algoritmo. Permite mesclar vari aveis e express oes. Em geral, as express oes alfanum ericas inclu das no comando servem para auxiliar na interpreta ca o dos resultados gerados. escreva (<nome-1> | <express~ ao-1> [,<nome> | <express~ ao> ...]) Por exemplo, escreva (a raiz procurada e , RAIZ)
4.4.2
Alternativa composta
1:
4.4
O comando alternativo
Como j a se disse este e o comando que permite versatilidade e generalidade aos algoritmos. Ao permitir-se modicar caminhos tendo em vista certas condi co es e que o algoritmo habilita o computador a pensar (as aspas, por favor).
uma extens E ao da alternativa simples. Neste caso podemos determinar o que fazer se a condi ca o verdadeira, e o que fazer se a condi ca o for falsa. O formato deste comando e (` a esquerda em linguagem algor tmica, portugol, e a ` direita em uxograma. Se a condi ca o estabelecida e verdadeira, s ao executados os comandos c1, c2, ... e n ao s ao executados os comandos c10, c11.... Se a condi ca o e falsa, s ao executados os comandos c10, c11, ..., mas n ao os primeiros. Neste caso a identa ca o tamb em e importante. Os comandos se, sen ao e mse come cam na margem corrente. Todos os demais comandos internos a este deixam uma identa ca o de 3 caracteres. Exemplo:
4.4.1
Alternativa simples
in cio DELTA 4 ACsqr(B )
Existem oportunidades em que um determinado comando dentro de um algoritmo s o deve ser executado se certas condi co es o permitirem. Por exemplo, ao olhar se uma pessoa est a quites com as suas obriga co es militares, isto deve ser feito apenas se o sexo da pessoa e masculino. Em nosso pa s, mulheres est ao desobrigadas de tais tratativas. O comando que identica uma a ca o condicional e o comando SE, que tem o seguinte formato: se <condi c~ ao> ent~ ao a c~ ao fimse A condi ca o e uma express ao cujo resultado nal e do tipo l ogico, isto e VERDADEIRO ou FALSO. A a ca o pode ser um comando simples ou uma seq u encia de comandos. Exemplo: 1: se DELTA < 0 ent ao 2: escreva (n ao e poss vel extrair esta raiz); 3: mse Para efeito de clareza na leitura de um algoritmo, costuma-se identar os comandos subordinados a uma condi ca o. Esta e a raz ao pela qual se deixou 3 espa cos em banco ao in cio do comando escreva no exemplo acima. A margem deve ser trazida ao que era antes do comando se, apenas quando se escrever o mse correspondente.
vers ao de 10 de fevereiro de 2008
DELTA < 0
2: 3:
DELTA 4 A C - sqr(B ) se DELTA < 0 ent ao escreva (raizes imagin arias) 4: sen ao 5: X sqrt(DELTA) 6: mse
1:
4.4.3
Alternativas aninhadas
Nada impede que exista uma condi ca o dentro de outra, (regra da programa ca o estruturada) e assim por diante. Nestes momentos a identa ca o e mais importante ainda. Repare no exemplo a seguir: Para ver a vantagem da identa ca o analisar-se- a exatamente o mesmo c odigo, por em escrito sem este recurso:
88-08, Pedro Kantek
77
78
CAP ITULO 4. COMANDOS ... valor OK ... sen ao 4: ... valor ERRADO ... 5: mse
2:
in cio
3:
A=0 v
1:
B0
2: 3: 4: 5:
C=0 v D0
Denir se um valor num erico representativo de um m es, est a correto se MES > 0 MES < 13 ent ao ... mes OK ... sen ao ... mes ERRADO ... mse
1: 2: 3: 4: 5: 6: 7: 8:
F3
Um certo c odigo pode assumir os seguintes valores: 10, 15, 17, 18 e 30. Testar se ele est a ou n ao correto. 1: se COD = 10 COD = 15 COD = 17 COD = 18 COD = 30 ent ao 2: ... c odigo OK ... 3: sen ao 4: ... c odigo ERRADO ... 5: mse e n As vezes e mais f acil organizar a sa da correta atrav es do SENAO ao do ENTAO, 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 ent ao 2: ... indicador ERRADO ... 3: sen ao 4: ... indicador CERTO ... 5: mse Se entretanto, quis essemos n ao inverter as saidas, precisar amos negar as condi co es. Atente-se a que a nega ca o de um conjunto de OUs e um conjunto de Es. 1: se IND = 1 IND = 4 IND = 5 IND = 6 IND = 7 IND = 9 ent ao 2: ... indicador CERTO ... 3: sen ao 4: ... indicador ERRADO ... 5: mse Outra maneira de escrever o comando acima, seria: se (IND = 1) (IND > 3 IND < 8) (IND = 9) ent ao ... indicador ERRADO ... sen ao ... indicador CERTO ... mse Finalmente, se quis essemos manter as saidas sem invers ao: se (IND = 1) (IND 3 ou IND 8) (IND = 9) ent ao ... indicador CERTO ... sen ao ... indicador ERRADO ... mse 80
vers ao de 10 de fevereiro de 2008
G 77
1: 2: 3: 4: 5: 6: 7: 8:
1: 2: 3: 4: 5:
1: 2: 3: 4: 5:
79
CAP ITULO 4. COMANDOS misturarando tudo Funciona, embora n ao seja uma boa id eia. 1: se MD 7 AA 45 ent ao 2: ...APROVADO 3: sen ao 4: se AA 45 ent ao 5: ...REPROVADO POR MEDIA 6: sen ao 7: se MD 7 ent ao 8: ...REPROVADO POR FREQUENCIA 9: sen ao 10: ...REPROVADO NOS 2 CRITERIOS 11: mse 12: mse 13: mse Na programa ca o, o dem onio se esconde nos detalhes, Niklaus Wirth
Em resumo, a nega c ao de
Outro Exemplo: Suponhamos o seguinte trecho de l ogica: Um aluno estar a aprovado se: Tiver m edia maior ou igual a 7,00 E Tiver assistido a 45 ou mais aulas Supondo que a m edia e a vari avel M, e que o n umero de aulas assistidas e a vari avel AA, poderia car usando SEs aninhados Veja na gura 4.4.3
Exerc cio 22 Dena um algoritmo que receba s eries de 3 valores reais indicativos de
lados de um tri angulo, medidos em cent metros. Para cada tripla, o programa deve responder as seguintes perguntas: 1. Tais lados podem formar um tri angulo ?
in cio
2. Este tri angulo e ret angulo ? 3. Este tri angulo e equil atero ?
se MD 7 ent ao se AA 45 ent ao ...APROVADO sen ao ENCIA ...REPR. FREQU mse sen ao se AA 45 ent ao ...REPR. MEDIA sen ao ...REPR. NOS 2 mse mse
4. Este tri angulo e is osceles ? 5. Este tri angulo e escaleno ? 6. Este tri angulo e acut angulo ? 7. Este tri angulo e obtus angulo ? Condi co es do problema e triangulo ? maior < A+B retangulo maior2 = A2 + B2 equilatero A=B=C is osceles (A = B) ou (B = C) ou (A = C) escaleno (A = B) e (A = C) acut angulo maior2 < A2 + B2 obtus angulo maior2 > A2 + B2 Por exemplo se for lido dever a ser impresso 3,4,5 sim, ret angulo, escaleno 3,3,3 sim, equil atero, acut angulo 1,2,7 n ao 10,18,10 sim, is osceles, acut angulo
usando SEs compostos 1: se MD 7 AA 45 ent ao 2: ...APROVADO 3: mse 4: se MD 7 AA < 45 ent ao 5: ...REPROVADO POR FREQUENCIA 6: mse 7: se MD < 7 AA 45 ent ao 8: ...REPROVADO POR MEDIA 9: mse 10: se MD < 7 AA < 45 ent ao 11: ...REPROVADO NOS 2 CRITERIOS 12: mse
vers ao de 10 de fevereiro de 2008
Exerc cio 23 Um c odigo est a certo se for maior que 100, ou igual a 50. Escrever um algoritmo portugol que receba este valor e some 1 no c odigo se ele estiver errado. Exerc cio 24 Uma data vem acompanhada de um campo chamado DIASEM, cujo valor e 1 para domingo, 2 para segunda, ... , 7 para s abado. Escrever um algoritmo portugol que receba DIASEM e verique se o dia corresponde a um dia u til. (semana inglesa).
88-08, Pedro Kantek 88-08, Pedro Kantek
81
82
4.5
Estruturas de repeti c ao
NUMERO < 101 v SOMA SOMA + NUMERO NUMERO NUMERO + 1
Para obedecer ` a terceira estrutura da programa ca o estruturada e visando o reaproveitamento de c odigo, ver-se- ao agora as possibilidades de repetir partes do algoritmo. Estas estruturas cont em impl cito um comando de desvio (go to) e nas linguagens mais modernas eou nico desvio que e aceito. Os trechos de programas que s ao repetidos ao se usar as estruturas de repeti ca o s ao conhecidos genericamente com o nome de loops ou em portugu es la cos. Assim, um erro de programa ca o bastante comum e o chamado loop innito, quando inadvertidamente a condi ca o de sa da e tal, que nunca e alcan cada.
1:
4.5.1
2: 3: 4: 5: 6: 7: 8: 9:
Parece razo avel que um algoritmo deve ser criado para a execu ca o de um u nico conjunto de valores fornecidos como entrada. Por exemplo, ao escrever o algoritmo de aprova ca o de alunos na cadeira de algoritmos do Unicenp, o programador s o precisa se preocupar com um u nico aluno, pois a regra de um vale para todos. N ao teria sentido descrever os mesmos procedimentos para todos os alunos, isto seria intermin avel, al em de deixar o algoritmo espec co para um determinado n umero de alunos. Falando em termos mais gen ericos, ao escrever um programa de computador que calcule o sal ario de um empregado, deve-se imaginar apenas um empregado e n ao os milhares que o computador processar a. A chave para este problema est a no reaproveitamento de instru co es do algoritmo. Em outras palavras, uma vez escrito o caminho principal do algoritmo (o chamado caminho das pedras), n os vamos fazer todos os funcion arios (ou alunos) passarem por este caminho. Uma das chaves para este procedimento e o comando chamado ENQUANTO. Seu formato: enquanto <condi c~ ao> fa ca c1 c2 ... fimenquanto Este comando deve ser assim interpretado. A condi ca o e avaliada. Se ela for falsa, o algoritmo deve saltar todos os comandos subordinados e continuar a execu ca o ap os o comando menquanto. Entretanto, se a condi ca o for verdadeira, os comandos subordinados s ao executados, at e se encontrar o comando menquanto. Neste momento, h a um desvio na seq u encia de processamento e um retorno ao comando enquanto. A condi ca o e novamente avaliada. Se falsa, pulam-se os comandos subordinados. Se verdadeira, os comandos s ao novamente executados, e assim por diante. Se a condi ca o for uma verdade eterna, isto e, algo como 1 = 1, tem-se um la co innito, pois os comandos nunca deixar ao de ser executados. Por outro lado se a condi ca o for uma tautologia (sempre falsa), ent ao os comandos subordinados nunca ser ao executados. Exemplo Calcular a soma dos n umeros inteiros at e 100.
vers ao de 10 de fevereiro de 2008
SOMA:real NUMERO:inteiro SOMA 0 NUMERO 1 enquanto NUMERO < 101 fa ca SOMA SOMA + NUMERO NUMERO NUMERO + 1 menquanto escreva (SOMA)
escreva (SOMA)
Comandos internos ao comando enquanto devem estar identados de 3 espa cos, para clareza. enquanto <condi c~ ao> fa ca <comando-1> <comando-2> ... fimenquanto Por exemplo: leia A enquanto A < 11 fa ca 3: escreva A 4: AA+1 5: menquanto
1: 2:
4.5.2
O segundo comando que se usa para controlar la cos, atende pelo nome de para. Ele pressup oe a exist encia de uma vari avel de controle que ir a (como o nome diz) controlar o in cio e o m do la co. O formato do comando para e para vari avel DE valor-1 AT E valor-2 [PASSO valor-3] fa ca comando 1 comando 2
88-08, Pedro Kantek
83
84
CAP ITULO 4. COMANDOS ... comando n fimpara A regra de funcionamento do para e: Antes de come car o trecho inclu do no para, a vari avel mencionada no comando e inicializada com o valor-1. Se este valor for menor ou igual ao valor-2 o trecho subalterno e executado. Ao chegar ao nal dos comandos, a vari avel e incrementada com o valor-3 (ou com 1 se nada for referenciado) H a um desvio incondicional, ao in cio do comando para, e o teste denido no passo <2> acima e refeito, com id enticas sa das. Dentro dos comandos subalternos ao para, a vari avel de controle n ao pode ser alterada pelos comandos escritos pelo usu ario. Os valores 1, 2 e 3 podem ser valores auto-declarados (caso mais comum) ou podem ser quaisquer vari aveis num ericas. Neste caso, elas tamb em n ao podem ser alteradas dentro do para. Por conven ca o, quando o valor do passo for 1, toda a cl ausula pode ser omitida. Exemplo: o comando PARA K DE 1 ATE 10 equivale ao comando PARA K DE 1 ATE 10 PASSO 1. Uma especial observa ca o deve ser feita quando o valor-3 (o incremento) for negativo. Nestes casos h a v arias invers oes no comando, a saber: O valor 1 deve ser maior do que o valor 2, j a que a vari avel de controle vai diminuir ao inv es de aumentar. O teste de saida e para maior ou igual, por id entica raz ao. Veja-se dois exemplos para ajudar a entender e a guardar estas quest oes: 1: para J de 1 at e 9 passo 2 fa ca 2: escreva J 3: mpara Aqui ser ao impressos os valores 1, 3, 5, 7 e 9. J a em 1: para J de 9 at e 1 passo -2 fa ca 2: escreva J 3: mpara Ser ao impressos os valores 9, 7, 5, 3 e 1. Devemos lembrar que todo comando para pode ser convertido em seu equivalente enquanto. D a mais trabalho (s ao 3 comandos) mas sempre e poss vel. J a a rec proca nem sempre e verdadeira. S o e poss vel transformar um enquanto em um para equivalente, quando se souber o n umero exato de itera co es que o enquanto faria. Quando isto for desconhecido a convers ao n ao e poss vel. Exemplos: usando para equivalente usando enquanto para I de 1 at e 10 passo 2 I 1 escreva I enquanto (I 10) fimpara escreva I II + 2 fimenquanto
vers ao de 10 de fevereiro de 2008
4.5.3
Al em da instru ca o enquanto, a maioria das linguagens de alto n vel oferece outras formas de repetir uma parte do programa. A rigor, com uma u nica estrutura poder-seia resolver todos os problemas (como, demonstraram aqueles dois professores italianos). Entretanto, criar um programa n ao e um exerc cio acad emico, ou n ao e s o isso. Na universidade, n ao h a pressa, e o rigor cient co e o que importa. Na vida pr atica h a pressa, e o rigor e importante na medida em que garante qualidade, ele n ao e um m em s mesmo. Portanto, visando facilitar, acelerar e simplicar, tem-se aqui um outro comandos de repeti ca o: repita comando 1 comando 2 ... comando n at e <condi c~ ao> Os comandos internos ao repita s ao executados enquanto a condi ca o contida na cl ausula at e n ao for satisfeita. Isto e, quando o uxo chega ao at e, a condi ca o e avaliada. Se for verdadeira, o uxo segue ap os o at e. Se for falsa, o uxo retorna ao comando imediatamente seguinte ao repita. Embora parecido com o enquanto, o repita tem algumas diferen cas, a saber Os comandos internos ao repita s ao executados sempre ao menos uma vez, independente da condi ca o. J a no enquanto, tais comandos podem n ao ser executados nem uma vez. O la co do enquanto ser a realizado se a condi ca o for VERDADEIRA. J a o la co do repita ser a realizado se a condi ca o for FALSA. 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 e que para determinadas situa co es (que s ao espec cas de cada algoritmo) um ou outro pode ser mais indicado, isto e pode resolver o problema com menos l ogica adicional (o chamado overhead) tais como contadores, chaves, testes etc. Uma observa ca o meio extempor anea, mas ainda assim importante aos java-parlantes ou aos C-parlantes: Nestas duas linguagens o comando de repeti ca o com condi ca o no in cio e no nal e o mesmo. Trata-se do comando while. Muda apenas o local da condi ca o. Por esta raz ao, n ao existe a invers ao l ogica de sa da explicitada acima. Em Java e em C, a sa da quando a condi ca o aparece depois do bloco e quando a condi ca o e o contr FALSA. E ario do comando repita acima descrito. Veja-se em exemplos: No portugol acima descrito tem-se Neste trecho ser ao impressos os valores 4, 7, 10, 13, 16, 19 e 1000. J a em Java o trecho caria 1: J = 4 2: while { 3: system.out.println (J) // e assim mesmo ? 4: J = J + 3 5: J > 20 6: system.out.println (1000) } Ser a impresso pelo Java: 4, 1000.
88-08, Pedro Kantek
85
86
J4
escreva J JJ+3
J > 20
Exerc cio Resolvido 1 Escreva um algoritmo que leia uma s erie de notas (que se encerram quando for lido um n umero negativo) e ao nal escreva as duas maiores notas que 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 cio e um pouco mais complexo, vamos ver diversas estrat egias para a sua solu c ao:
1. primeira estrat egia 1: enquanto ... fa ca 2: leia(N) 3: se N > P ent ao 4: PN 5: mse 6: se N > S ent ao 7: SN 8: mse 9: menquanto DEFEITO: ao nal, P e S ter ao o mesmo valor (o maior) 2. segunda abordagem 1: enquanto ... fa ca 2: leia(N) 3: se N > P ent ao 4: PN 5: mse 6: se N > S ent ao 7: se N = P ent ao 8: SN 9: mse 10: mse 11: menquanto DEFEITO: Com a s erie 1, 10, 2, 8, 5 funciona
1: 2: 3: 4: 5: 6:
v escreva 1000
tipos de algoritmos (algo jocoso) Uma categoriza ca o com algo de chacota, mas que ajuda a entender os algoritmos: 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 n ao gera resultado nenhum externo ao computador. (Por exemplo, um programa que atualize o rel ogio da m aquina) Inventa e imprima o algoritmo n ao recebe nada, mas ao ser acionado gera um resultado (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 n umeros inteiros
(1, 2, 3, ... , 100)..
Exerc cio 27 Denir algoritmo que escreva a soma dos primeiros 100 n umeros pares inteiros (2, 4, 6, ... , 200). Exerc cio 28 Denir algoritmo que some todos os m ultiplos de 7 compreendidos entre
100 e 10000, e informe ao nal, quantos foram os m ultiplos e quanto resultou sua soma.
Exerc cio 30 Denir algoritmo que leia 17.000 n umeros reais e informe, quantos:
1. foram maiores do que 100;
vers ao de 10 de fevereiro de 2008
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 fa ca 6: leia (NUM, NOT) 7: se NOT > PNO ent ao 8: se PNO > SNO ent ao 9: SNO PNO 10: SNU PNU
88-08, Pedro Kantek
87
88
mse PNO NOT SNO NUM mse se NOT > SNO ent ao se NOT = PNO ent ao SNO NOT SNU NUM mse mse menquanto escreva (PNO,PNU) escreva (SNO,SNU)
Exerc cio 35 Dados o seguinte trecho de l ogica escritos usando o enquanto, escrever
trecho equivalente usando o repita 1: Z 10 2: enquanto Z > 0 fa ca 3: ZZ-3 4: escreva (Z) 5: menquanto
Eis a lista de vari aveis usada acima NUM = n umero do aluno atual NOT = nota do aluno atual PNU = n umero do aluno com a melhor nota at e agora PNO = melhor nota at e agora SNU = n umero do aluno com a segunda melhor nota at e agora SNO = segunda melhor nota at e agora X = contador at e 100
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 e GH = 5 Exerc cio 37 Escreva o trecho a seguir, usando
1. o comando Enquanto e 2. o comando Repita
1: 2: 3:
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. S ao dois jogadores, a quem chamaremos: m aquina (programa) e humano. O humano escolhe um n umero de palitos qualquer entre 20 e 30. A m aquina retira 1, 2 ou 3 palitos. O humano tamb em retira 1, 2 ou 3 palitos, e a seq u encia prossegue, at e que reste apenas um palito. Quem tirar o u ltimo palito perde. O programa deve atentar para impedir retiradas diferentes de 1 2 ou 3. Dica: Estrat egia vencedora: deixar o advers ario sempre com 1, 5, 9, 13, 17, 21, 25 ou 29
Exerc cio 38 Escrever um algoritmo que leia um u nico n umero (que por deni c ao e
PRIMOse ele for divis maior que 3), e escreva PRIMOse ele for primo, ou NAO vel. Por PRIMO, e se for lido 11, dever dizer exemplo, se for lido 10, o programa dever dizer NAO PRIMO.
Exerc cio 39 Denir algoritmo que leia uma seq u encia de valores num ericos inteiros
e determine, ao nal se eles estavam em ordem ascendente ou n ao. Se estiverem, deve imprimir EM ORDEM, e se n ao estiverem, deve imprimir FORA DE ORDEM.
Exerc cio 40 Dena algoritmo que calcule e escreva o somat orio expresso pela seguinte
s erie. O n umero de termos deve ser lido a priori. 1 1 1 1 S = 1 + 2 + 3 + ... + n 2 3 4 n+1
Exerc cio 32 Dena algoritmo que calcule e escreva o somat orio expresso pela seguinte
s erie: S= 20 500 480 460 + + + ... + 2 3 4 26
Exerc cio 33 Escreva um algoritmo que leia uma seq u encia de n umeros positivos (a condi c ao de m e a leitura do n umero -1) e escreva ao nal, qual o n umero mais pr oximo de 100 que foi lido. DESAFIO: escreva o n umero par mais pr oximo a 100. Exerc cio 34 Escreva um algoritmo que leia uma seq u encia de n umeros positivos (a condi c ao de m e a leitura do n umero -1) e escreva ao nal, qual o u ltimo n umero que foi lido. DESAFIO: escreva o ante-pen ultimo, ou -1 se n ao houver ante-pen ultimo
vers ao de 10 de fevereiro de 2008
Exerc cio 42 Dados o seguinte trecho de l ogica escritos usando o enquanto, escrever
trecho equivalente usando o repita. 1: A 10 2: B 20 3: enquanto (A + B) < 50 fa ca 4: AA+5 5: B B + 10 6: escreva (A+B)
88-08, Pedro Kantek
89
90
CAP ITULO 4. COMANDOS Obs: o pre co acima e para o comercial inteiro, ou seja, NAO e por segundo de comercial. Denir algoritmo que: 1. leia o valor da cota c ao do d olar naquele dia 2. leia s erie de duplas (dura c ao,hora) escreva a dupla e o valor a ser cobrado em reais. A dura c ao est a dada em segundos. Os dados terminam quando for lida uma dupla com dura c ao igual a zero. Valores v alidos: 0 Dura c ao 60, 0 Hora 23 Por exemplo, se o d olar estiver cotado a R$ 2,20 e forem lidos dever ser impresso 10,4 26,40 R$ 20,23 37,40 R$ 10,23 17,60 R$ 0,0 m...
menquanto
Exerc cio 43 Dados o seguinte trecho de l ogica escritos usando o enquanto, escrever
trecho equivalente usando o repita. 1: K 5 2: enquanto K < 10 fa ca 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 e T > 10 Exerc cio 45 Escreva o trecho a seguir, usando
1. o comando Enquanto e 2. o comando Repita
1: 2: 3:
Exerc cio 49 Denir um algoritmo que leia uma s erie indeterminada de valores positivos, sendo que a marca de m e a leitura do n umero -1. O algoritmo deve imprimir qual o u ltimo n umero lido, imediatamente antes do n umero -1. Por exemplo, se for lida a s erie 3, 7, 21, 4, -1, o algoritmo deve imprimir 4.
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 e (A > 10) b) 1: GH 5 2: repita 3: escreva (ABC) 4: at e (GH = 5) c) 1: T 0 2: repita 3: T T + 0.5 4: escreva (T * 2) 5: at e (T > 10) Exerc cio 47 Um comercial de r adio tem seu custo em fun c ao de 2 vari aveis, a saber:
dura c ao e hora de irradia c ao, segundo a tabela: Dura c ao At e 10 segundos De 11 a 30 segs Acima de 30 segs de 0 a 5h59min 5 US$ 12 US$ 16 US$ Hor ario 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
Exerc cio 50 Dena e escreva um algoritmo para imprimir todos os n umeros perfeitos
entre 1 e 500. Um n umero perfeito e aquele que e igual a soma de todos os seus fatores. O primeiro n umero perfeito e o 6 (6=1+2+3), logo por deni c ao o n umero 1 n ao e perfeito. Usar uma fun c ao para determinar se um n umero e ou n ao e perfeito. Outros n umeros s ao: 28, 496. Depois disso, descobrir qual o pr oximo n umero perfeito, maior que 500.
Exerc cio 51 Dena um algoritmo que calcule e escreva a soma da s erie a seguir,
considerando 50 termos: S= 100 2 4 6 + + + ... + 3 5 7 101
Exerc cio 52 Denir algoritmo que receba uma s erie de triplas de n umeros inteiros.
Para cada tripla deve ser gerada uma progress ao aritm etica supondo que: O primeiro elemento da tripla e o termo inicial O segundo elemento da tripla e a raz ao O terceiro elemento da tripla e o n umero de termos Os elementos da PA dever ao ser impressos. O processo termina quando for lido um n umero de termos igual a zero.
Exerc cio 53 Escreva um algoritmo que leia uma s erie de n umeros inteiros e positivos e ao nal do processamento escreva qual o maior deles. O processamento se encerra quando for lido qualquer n umero negativo que n ao deve ser considerado para efeitos de compara c ao.
88-08, Pedro Kantek
92
Exerc cio 56 Interprete o seguinte trecho de algoritmo, informando (em portugu es) o
que faz ou para que serve o algoritmo analisado. Estude e informe a condi c ao de m. Se necess ario, realize um chin essobre os dados. 1: inteiro CA,CE 2: leia(CA,CE) 3: enquanto CA = CE fa ca 4: se CA < CE ent ao 5: escreva(CA) 6: mse 7: escreva(CE) 8: leia(CA,CE) 9: menquanto
Exerc cio 55 Denir um algoritmo que leia uma s erie de pares de valores inteiros que
representam COMPRIMENTO e LARGURA de um ret angulo. Calcular e imprimir a area do ret angulo se o per 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 o ser a impressa a area 80, equivalente ` a dupla (10,8).
Exerc cio Resolvido 2 Imagine um rel ogio anal ogico de ponteiros. N ao existe o ponteiro de segundos, e os ponteiros realizam movimentos discretos, isto e, eles s o se movem a cada 60 segundos. Escreva um algoritmo que leia diversos conjuntos de hora e minuto, e para cada conjunto lido, informe qual o menor angulo que os dois ponteiros fazem entre si ao representar a hora informada. O algoritmo termina quando for lida a dupla 0,0. Os valores permitidos para hora est ao entre 0 e 11 e para minuto os valores v alidos est ao entre 0 e 59. A sa da do resultado pode ser em graus e d ecimos de grau, ou se o aluno preferir 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 fa ca 6: qtm (h * 60) + m 7: ah qtm * 0,5 8: am qtm * 6 9: enquanto ah 360 fa ca 10: ah ah - 360 11: menquanto 12: enquanto am 360 fa ca 13: am am - 360 14: menquanto 15: se se ah > am ent ao 16: angulo ah - am 17: sen ao 18: angulo am - ah 19: mse 20: se se angulo > 180 ent ao 21: angulo 360 - angulo 22: mse 23: escreva (angulo) 24: leia(h,m) 25: menquanto 26: m{algoritmo}
vers ao de 10 de fevereiro de 2008
Exerc cio 57 Interprete o seguinte trecho de algoritmo, informando o que faz ou para que serve o algoritmo analisado. Estude e informe a condi c ao de m. Se necess ario, realize um chin essobre 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 fa ca 10: se A < B ent ao 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 condi c ao de m. Se necess ario, realize um chin essobre 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) fa ca 7: se R = 0 ent ao 8: C 2 PI R 9: sen ao 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
s ao impressos ao nal.
88-08, Pedro Kantek
93
94
CAP ITULO 4. COMANDOS sen ao escreva (I,J,K) 15: K K + (*3) 16: v apara L1 17: mse 18: mse 19: mse 20: L3: J J + (*4) 21: K 5 22: v apara L1 23: L2: I++ 24: J (*5) 25: K 5 26: v apara L1 27: malgoritmo Os valores propostos para (*1) (*2) (*3) (*4) e (*5) para que os dois trechos sejam equivalentes s ao
13: 14:
inteiro A, B, C, D A0 B 10 CB3 DB+C+A enquanto D < 0 fa ca AA+1 DD+1 menquanto se A > 0 ent ao DD2 sen ao BB2 mse escreva (A,B,C,D)
a) b) c) d) e)
5, 5, 5, 1, 1,
5, 5, 5, 1, 1,
2, 2 2, 11 2, 11 1, 2 2, 1
4.5.4
Nos casos em que h a m ultiplas sa das para um determinado teste, n os podemos usar a estrutura de alternativas simples e compostas, devidamente encadeadas. Tal uso (de acordo com os dois mestres italianos) sempre e suciente para a solu ca o de qualquer problema. Entretanto, para simplicar a poss vel solu ca o, in umeras linguagens tem o comando de teste m ultiplo (COBOL tem o GOTO depending ON, PASCAL tem o comando CASE, dbase tem o CASE, APL tem o desvio para um vetor etc). Aqui, usar-se- ao seguinte formato: escolha <express~ ao> caso valor-1 [: valor-2 caso valor-a [: valor-b ... sen~ ao : comando-z fimescolha ...] : comando-1 ...] : comando-a
O funcionamento deste comando e simples: A express ao que aparece ao lado do comando Escolha e avaliada, e deve gerar um resultado determinado. Este resultado ser a comparado com os valores colocados ao lado direito das palavras caso. Quando um valor igual for encontrado, o comando colocado o seu lado ser a executado. Finalmente, se nenhum valor for igual, e existir a cl ausula sen ao, esta ser a executada. Exemplo 1: ESCOLHA (A + 1) 2: CASO 1 : comando-1; 3: CASO 2 : 3 : 4 : comando-2; omando-3; 4: SENAO: 5: FIMESCOLHA
88-08, Pedro Kantek
95
96
CAP ITULO 4. COMANDOS Aqui, se A for zero, ser a executado o comando-1. Se A for 1, 2 ou 3, ser a executado o comando-2. Se A tiver qualquer valor diferente de 0, 1, 2 ou 3, ser a executado o comando-3. A0 enquanto A = 3 fa ca 3: AA+1 4: escreva (A) 5: menquanto
1: 2:
4.5.5
Este comando exige uma sa da incondicional de cada uma das estruturas de repeti ca o (enquanto, repita ou para), independente de condi co es. Geralmente, este comando e colocado dentro de um se. O desvio sempre se d a para o comando seguinte ao m da estrutura que est a sendo usada. Eis o formato do comando abandone Este comando s o tem sentido quando emitido dentro de um la co de processamento (dentro de um enquanto, repita ou para). Ele e utilizado quando se deseja - a partir de uma determinada condi ca o - abandonar o processo iterativo em curso. Seu funcionamento e simples: ao ser executado, este comando provoca um desvio incondicional para o comando subseq uente ao m do la co. Exemplo 1: enquanto A > 10 fa ca 2: comando 1... 3: comando 2... 4: se B = 5 ent ao 5: abandone 6: mse 7: comando 10... 8: menquanto 9: comando 20... 10: ... Neste caso, quando abandone for executado, independente do estado da vari avel A (e do teste (A > 10), ser a executado o comando 20. Assim, quando abandone e executado 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 la cos (um dentro do outro), e for emitido um abandone, ele vale para o la co mais interno. Exemplo 1: enquanto (X = 10) fa ca 2: comando 1 ... 3: enquanto (Y > 20) fa ca 4: comando 10 ... 5: se (Z = 8) ent ao 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 a executado o comando 40 e n ao o comando 50 como poderia parecer a primeira vista.
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 e A > 10 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 e 20 fa ca 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 e 100 passo 2 fa ca 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:
Exerc cio 62 Dados o seguinte trecho de l ogica escritos usando o enquanto, escrever
trecho equivalente usando o repita.
vers ao de 10 de fevereiro de 2008
Exerc cio Resolvido 3 Dois n umeros s ao considerados amigosquando um n umero e igual a soma dos fatores do outro n umero. Por exemplo, 220 e 284 s ao amigos, pois 220 e igual a soma dos fatores de 284 (142,71,4,2,1) e 284 e a soma dos fatores de 220 (110 55 44 22 20 11 10 5 4 2 1). Denir algoritmo que escreva os pares de n umeros amigos existentes entre 1 e 500. 1: inteiro i,j,k,l,m,n 2: inteiro fun c ao somf (inteiro a) 3: inteiro var ind,som 4: som 0 5: para ind 1 to a-1 fa ca 6: se a mod ind = 0 ent ao 7: som som + i 8: mse 9: mpara
88-08, Pedro Kantek
97
98
CAP ITULO 4. COMANDOS A segunda abordagem, faz apenas uma leitura, mas a fun c ao e nitidamente menos limpa 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 fa ca 5: leia (a1, a2, a3, a4, a5, a6, apostador) 6: se a1 > 0 ent ao {pode ter chegado o negativo} 7: se ganhou (a1, a2, a3, a4, a5, a6) ent ao 8: escreva apostador 9: mse 10: mse 11: menquanto 12: m{algoritmo}
retorne som m{fun c ao } para i 1 to 500 fa ca escreva i para j i to 500 fa ca m somf(i) n somf(j) se (m = j) (n = i) ent ao escreva (i,j) mse mpara mpara
Exerc cio Resolvido 4 Escreva uma fun c ao que receba um n umero inteiro positivo k , calcule e devolva o pr oximo n umero primo x, onde k x.
Solu c ao Para resolver este exerc cio, consideraremos denida e operante a fun c ao EPRIMO, com o seguinte cabe calho l ogico fun c~ ao EPRIMO (inteiro x), que devolve VERDADEIRO quando x e primo e FALSO sen ao. Eis a resposta 1: inteiro fun c ao PROXPRIM (inteiro K) 2: enquanto 1=1 fa ca 3: se EPRIMO(K) ent ao 4: retorne K 5: abandone 6: mse 7: K++ 8: menquanto 9: mfun c ao Atente para a condi c ao terminadora do enquanto. J a que a sa da se dar a atrav es do abandone, qualquer condi c ao sempre verdadeira pode ser colocada a .
Exerc cio Resolvido 6 Seja agora a tarefa, muito comum em programa c ao, de obter n umeros constru dos segundo uma certa lei de forma c ao, a princ pio desconhecida. S o se conhecem os primeiros n umeros de uma seq u encia deles, e o que e pedido, e o resto dos n umeros. Por exemplo, se a seq u encia for 1,2,3,4,5,6 e for pedido o pr oximo n umero, a resposta e 7, por que a lei de forma c ao e a dos n umeros naturais. Entretanto, outras seq u encias podem ser menos evidentes e conseq uentemente mais 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
Exerc cio Resolvido 5 Voc e tem uma cole c ao seq uencial de 10.000.000 de apostas na sena. Para cada apostador, existem os 6 n umeros em que ele jogou e mais o n umero da aposta, que posteriormente identicar a o apostador. Suponha uma fun c ao l ogico ganhou (inteiro a1, a2, a3, a4, a5, a6) que devolve VERDADEIRO se esta aposta e vencedora e FALSO sen ao. Suponha tamb em que a condi c ao de m de dados ea leitura de a1 negativo. Solu c ao Para resolver este exerc cio, duas hip oteses podem ser consideradas: a primeira 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 fa ca 5: se ganhou (a1, a2, a3, a4, a5, a6) ent ao 6: escreva apostador 7: mse 8: leia (a1, a2, a3, a4, a5, a6, apostador) 9: menquanto 10: m{algoritmo}
vers ao de 10 de fevereiro de 2008
Uma estrat egia e pesquisar os poss veis valores de x, y e z , usando intui c ao, pistas, experi encias passadas, ao estilo de Sherlock Holmes. Uma segunda estrat egia e usar da informa c ao de que 2 x, y, z, 7 e adotar a for ca bruta, fazendo 1: para X de 2 at e 7 fa ca 2: para Y de 2 at e 7 fa ca 3: para Z de 2 at e 7 fa ca 4: para I de 1 at e 10 fa ca 5: escreva ... 6: mpara 7: escreva ... 8: mpara 9: mpara 10: mpara
Exerc cio 67 Escrever um algoritmo que leia uma s erie indeterminada de n umeros positivos. A leitura deve prosseguir at e ser lido o n umero 1203, quando o programa dar a mensagem 1203 ENCONTRADO e terminar o processamento. Se este n umero n ao for encontrado, ao nal dos dados (quando for lido um n umero negativo) o programa deve
88-08, Pedro Kantek
99
100
CAP ITULO 4. COMANDOS imprimir o n umero lido mais pr oximo de 1203, com a mensagem xxx MAIS PROXIMO, onde xxx e o n umero em quest ao.
Exerc cio 74 Dois inteiros positivos a e b s ao relativamente primos se n ao tiverem fatores comuns exceto 1. Por exemplo, 4 e 25 s ao relativamente primos, apesar de nenhum deles o ser. Escreva uma fun c ao que receba X e Y e devolva .V. se eles forem primos relativos e .F. sen ao. A prop osito, os n umeros 17.773 e 14.973 s ao relativamente primos ? Exerc cio 75 Diamantes s ao classicados atrav es de 3 testes distintos, como segue:
Dureza maior do que 12 Percentagem de impurezas menor que 45 Resist encia ` a tra c ao maior que 600 Kgf Se o diamante passa nos tr es testes, ele ganha o grau 50. Se passa em dois, ganha o grau 40, se passa apenas em um teste, ganha 30, e se n ao passa em nenhum ganha o grau 15. Escrever um algoritmo que leia um conjunto de vari aveis formado por N umero da partida (inteiro), dureza (real), percentagem de impurezas (real), resist encia (real); e escreva o n umero da partida e a nota do diamante. Os dados terminam quando for lida a partida n umero zero. A nota do diamante deve ser calculada por uma fun c ao.
Exerc cio 69 Escreva um algoritmo capaz de calcular e imprimir o valor da somat oria
dada pela s erie a seguir. O n umero de termos e lido ao in cio do algoritmo. 12 22 32 + + + ... S= 1 2 4 Para resolver este tipo de exerc cio, deve-se buscar a f ormula do termo gen erico. Sem esta f ormula e dif cil programar a solu c ao. Fica: 12 + (n 1) 10 Tn = 2 (n 1) e sobretudo S=
i=1 n
Tn
ou S=
i=1
12 + (n 1) 10 2 (n 1)
X2 Y5 enquanto (X < 5) (Y < 3) fa ca 4: X++ 5: Y- 6: menquanto Ao se encerrar este algoritmo quais os valores de X e Y ? O que acontece se se tirar o Ecolocando em seu lugar OU
Exerc cio 76 Escreva algoritmo capaz de criar e imprimir uma tabela de angulos, senos e cossenos, para todos os angulos de 0 a 90 graus. Exemplo ANGULO SENO COSSENO 0o 0 1 1o 0.01745240644 0.9998476952 2o 0.0348994967 0.999390827 o 3 0.05233595624 0.9986295348 o 4 0.06975647374 0.9975640503 5o 0.08715574275 0.9961946981 o 6 0.1045284633 0.9945218954 7o 0.1218693434 0.9925461516 ... Exerc cio 77 Denir um algoritmo que escreva a diferen ca entre o 21. n umero primo e o 13. n umero primo. Exerc cio 78 Resolver o seguinte problema usando o comando ESCOLHA. Numa organiza c ao, o n umero de dependentes limita a quantidade de dias que um empregado pode 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 n umero de dependentes e escreva a quantidade de dias que podem ser fruidos anualmente para cada caso.
A 56 B 10 enquanto (A+B) mod 14 = 0 fa ca A A + 10 BA+2 menquanto quais os valores de A e B ao nal ? Se A come car com 52, o que acontece com o algoritmo ?
Exerc cio 79 Um concurso de vendas e realizado dentro de uma empresa. Por raz oes
territoriais, cada venda unit aria, d a direito a um b onus cujo valor depende do estado em que foi feita a venda, segundo a tabela: PR e SC d ao direito a 5 b onus RS, SP e RJ 4 b onus MG, GO, MS e TO 3 b onus BA e PE 2 b onus demais estados n ao citados 1 b onus
88-08, Pedro Kantek
Exerc cio 72 Qual e o 30 n umero primo ? Exerc cio 73 Escreva o algoritmo de uma fun c ao que receba um n umero inteiro positivo X e devolva o pr oximo primo maior ou igual a X.
vers ao de 10 de fevereiro de 2008
101
102
CAP ITULO 4. COMANDOS Denir algoritmo que receba uma s erie de vendas no formato (valor, estado) e para cada uma informe a quantidade de b onus de direito. Os dados terminam quando for lido um estado igual a XX ou um valor de vendas negativo.
Exerc cio 85 Calcular a soma total e o produto total de uma s erie de n umeros inteiros e positivos que ser ao fornecidos. A s erie termina quando for lido o n umero -1. Exerc cio 86 Escreva um algoritmo capaz de move atribu das a atletas de gin astica ol mpica. Tal como na pr atica, este algoritmo deve eliminar a maior e a menor notas, e a seguir calcular e imprimir a m edia entre as duas notas restantes.
Exerc cio 80 Denir um algoritmo que leia uma s erie de n umeros inteiros e positivos
(condi c ao de m: leitura de um negativo). O algoritmo deve calcular e imprimir a m edia dos n umeros lidos EXCLU IDOS os zeros.
Exerc cio 82 Dados conjunto de 20 pares de n umeros, realizar sobre eles o seguinte
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 n umeros e o resultado obtido segundo as regras acima.
Exerc cio 83 Uma elei c ao e anulada se a somat oria de votos brancos e nulos e superior ` a metade dos votos totais. Suponha que numa elei c ao existem 3 candidatos e para apur a-la, deveremos ler um conjunto indeterminado de votos (n umeros inteiros), usando a regra:
1 = voto no candidato n umero 1 2 = voto no candidato n umero 2 3 = voto no candidato n umero 3 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 s ao: 1=55 anos, 2=58 anos e 3=47 anos. Escrever um algoritmo que: 1. Verique se a elei c ao foi v alida 2. Se foi, quem a venceu.
Exerc cio 84 Escreva um algoritmo que leia uma sequ encia de n umeros positivos (a leitura e um depois do outro, por restri c ao do problema n ao se pode usar um vetor) com condi c ao de m igual a leitura de um n umero negativo e escreva o u ltimo n umero lidos que tenha sido maior que 100.
vers ao de 10 de fevereiro de 2008
103
104
CAP ITULO 5. NASSI-SCHNEIDERMAN Outra possibilidade de representa ca o e atrav es dos diagramas de NASSI & SHNEIDERMAN, tamb em conhecidos como mapas de CHAPIN ou estructogramas. Alguns autores negam import ancia a este trabalho, armando tratar-se de pseudo-c odigo (no caso, PORTUGOL), apenas escrito de outra maneira. Outros, reconhecem for ca e inova ca o nesta id eia. A id eia destes diagramas e formatar em um ret angulo todas as informa co es do processamento usando marcas que identiquem as diversas opera co es permitidas. Tem a vantagem sobre os uxogramas de n ao permitirem o desvio. Os s mbolos usados s ao: nome da estrutura objetivo
comando inicial objetivo (nome do procedimento)
Cap tulo 5
Nassi-Schneiderman
Fluxos e Nassi-Schneiderman
Al em da maneira pela qual descreveremos nossos algoritmos (que e atrav es do Portugol), existem outras formas de representar algoritmos. Falaremos de mais duas: a primeira e a linguagem dos uxogramas. Tem import ancia hist orica na inform atica, pois foi a primeira (e durante muito tempo u nica) representa ca o de programas e similares. A seguir uma lista dos principais s mbolos usados em uxogramas
Iniciador/terminador Processo Alternativa
verdadeiro, a ca o 1 verdadeiro, a ca o 2 comando a repetir condi ca o de m condi ca o comando a executar item do caso
Conector
Fluxogramas perderam sua condi ca o de u nicas ferramentas, entre outras raz oes, pelas a seguir expostas: Prestam-se mal ` a programa ca o estruturada, pois permitem a constru ca o de algoritmos n ao estruturados. Exigem capricho, dando muito trabalho para serem feitos e mantidos. S ao necess arias quantidades enormes de papel, pois h a um overhead muito grande, isto e, s o se escreve dentro dos quadrinhos, e boa parte do papel se perde. Embora hoje j a existam programas para fazer e guardar uxos em computador (como por exemplo o FLOWCHART e o AUTOFLOW), eles n ao s ao muito pr aticos para este trabalho. Assim para seguir a tend encia moderna (que e guardar matriz da documenta ca o em computador e n ao em papel) o uxograma resulta inc omodo. 105
A seguir, alguns exemplos de algoritmos feitos em um e noutro esquema Seja o seguinte algoritmo Algoritmo Calcular {a soma dos n umeros inteiros at e 100} real SOMA inteiro NUMERO SOMA 0 NUMERO 1 enquanto {NUMERO < 101}
88-08, Pedro Kantek
106
CAP ITULO 5. NASSI-SCHNEIDERMAN SOMA SOMA + NUMERO NUMERO NUMERO + 1 fim{enquanto} imprima SOMA fim{algoritmo} calcular soma os 100 primeiros n umeros
real SOMA inteiro NUMERO SOMA 0 NUMERO 1 NUMERO < 101 SOMA SOMA + NUMERO NUMERO NUMERO + 1 imprima SOMA
CAP ITULO 5. NASSI-SCHNEIDERMAN raciocinar, a ponta da lapiseira ca sobre o ponto de interrup ca o. A tabela de valores das vari aveis vai sendo lida (consultada) e escrita (alterada) durante o chines Decis ao Quando o algoritmo e o chines terminam, um resultado e obtido. Ent ao, ele e comparado com o resultado esperado, acima calculado. Se for diferente, um erro aconteceu. Raras vezes e no processo manual de obten ca o do resultado, mas quando isso ocorre o algoritmo pode estar certo e e o resultado obtido que est a errado. Mas, na hora de procurar o erro e refazer maioria das vezes, e o algoritmo que est a errado. E todo o ciclo. Se ambos s ao iguais, o algoritmo funcionou para este caso de teste. Quanto deste funcionamento adequado pode ser generalizado para qualquer caso de testes ca em aberto.
5.1
Chines
Tamb em conhecido como teste de mesa, o chines e a execu ca o manual, passo a passo, de um algoritmo pelo programador. Em geral, e atrav es do chines que o autor do algoritmo se certica de que ele funciona. Infelizmente, o chines costuma apontar onde e quando o algoritmo falha, mas n ao garante de que o algoritmo esteja 100% correto, pois o caminho eventualmente errado pode n ao ter sido seguido durante o chines. As regras a seguir para um proveitoso chines, s ao: Obter uma massa de dados signicativa O conjunto a testar n ao deve ser extenso, mas precisa ser abrangente e incluir as condi co es que est ao sendo testadas. Escolher bem os dados a testar e uma arte. Se mal escolhidos n ao v ao certicar nada e s o v ao dar trabalho. Obter o resultado correto Com os dados de entrada em m aos, o programador precisa obter o resultado esperado que estes dados v ao gerar. Como fazer isto, varia de caso a caso, mas e imprescind vel que antes de come car o chines, se saiba qual resultado esperar. Listar os par ametros e vari aveis Deve-se providenciar no alto de uma folha de papel, o nome de todos os par ametros e vari aveis que o algoritmo manuseia. Deve haver bastante espa co abaixo dos nomes, a m de que os valores que ir ao sendo lan cados, 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
vers ao de 10 de fevereiro de 2008
107
108
CAP ITULO 6. VISUALG Fun c ao A fun ca o e uma unidade n ao aut onoma de programa ca o. Ela sempre precisa receber seus dados (atrav es de uma lista de par ametros) e devolver um resultado a quem a chamou. Em Visualg s ao colocadas imediatamente antes da palavra inicio do bloco a que se referem.
Cap tulo 6
Visualg
O VISUALG e um programa que auxilia o aprendizado de algoritmos na medida em que permite a entrada e execu ca o de um algoritmo escrito em portugol, conforme aqui descrito. Escrito pela empresa Apoio, pode ser obtido em www.apoioinformatica.com.br.
Formato 1: funcao <nome>( <parametros>) : <tipo-resultado> 2: var aveis locais 3: vari 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-fun ca o> obedece as mesmas regras de nomenclatura das vari aveis. Por outro lado, a <seq u encia-de-declara co es-de-par ametros> e uma seq u encia de [var] <seq u encia-de-par ametros>: <tipo-de-dado> separadas por ponto e v rgula. A presen ca (opcional) da palavra-chave var indica passagem de par ametros por refer encia; caso contr ario, a passagem ser a por valor. Por exemplo, eis alguns cabe calhos de fun co es 1: funcao CALC22 (A, B : inteiro; C : real) : real Deniu-se uma fun ca o de nome CALC22, que recebe 3 par ametros, sendo os dois primeiros inteiros e o terceiro real. A fun ca o devolve um resultado real. 1: funcao EQA6 (X : inteiro) : inteiro Deniu-se uma fun ca o de nome EQA6, que recebe um u nico n umero inteiro e devolve outro n umero inteiro. 1: funcao EXA (var X : inteiro) A fun ca o EXA recebe um par ametro inteiro. A presen ca da palavra var implica em que a passagem e por refer encia, ou seja o que a fun ca o modicar na vari avel X permanecer a modicado ap os o retorno da fun ca o EXA. Nomes Ao construir algoritmos e necess ario dar nomes a muitas coisas. A regra de constru ca o de nomes e Uma u nica palavra Composta de letras e n umeros Come cando com uma letra Escrita em mai usculo Tipos Os tipos poss veis s ao 4: inteiro, real, l ogico, caracter.
88-08, Pedro Kantek
6.1
Regras de Visualg
cada comando de visualg deve estar em uma linha n ao h a separadores (;), nem blocos (como { e {) nem goto todas as palavras reservadas n ao tem acentos ou cedilha n ao h a separa ca o entre mai usculas e min usculas nos comandos ou vari aveis o limite de vari aveis e de 500 (cada item de vetor conta como 1 vari avel) o ponto decimal e o ponto valores caractere est ao entre aspas duplas O s mbolo de atribui ca o e <-. Na verdade s ao dois s mbolos Existe recursividade
a unidade b Algoritmo E asica de escrita de algoritmos. formato 1: algoritmo <nome> 2: var aveis 3: vari 4: se houver, a fun ca o entra aqui 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
110
CAP ITULO 6. VISUALG Tipo inteiro real caracter logico Conte udo qualquer n umero inteiro, variando entre e + qualquer n umero inteiro ou n ao inteiro 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 n ao e expl cito A : logico Formato adi ca o (+), subtra ca o (), multiplica ca o (), divis ao real (/) divis ao inteira (barra ao contr ario) 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
CAP ITULO 6. VISUALG O que faz o usual da aritm etica s o usa inteiros o resto da divis ao inteira o valor absoluto de a arco xxx converte o caracter s em inteiro converte o byte c em caracter ou deve ser o comprimento do string copia um substring funcao trigonometrica divisao inteira de a po b eleva a base ao expoente converte graus em radianos converte real em inteiro logaritmo base 10 logaritmo base e converte para maiuscula converte para minuscula resto da divisao inteira de a por b converte numerica a caracter devolve o valor de pi devolve a posicao de subc em c devolve o quadrado de a converte radiano para grau devolve a raiz quadrada xxx pode sen,cos,tan,cotan
Exemplo A+3 A/2.5 5\2 e2 5%2 e1 abs(3) e 3; abs(-3 3 xxx pode ser cos, e tan
Vetor Um vetor (ou matriz) e denido, escrevendo-se o nome, dois pontos (:) a palavra vetor e as especica co es de repeti ca o. Veja nos exemplos: 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-c odigo s ao poucos < (recebe), leia, escreva, se...mse, enquanto...menquanto, para...mpara, repita...at e, retorne e abandone. Leia Serve para introduzir um dado externo para dentro do algoritmo. As vari aveis citadas no comando j a ter ao que ter sido denidas e tipadas. formato leia (<lista de vari aveis >) exemplo leia (A)
Escreva Serve para produzir um dado como resposta do algoritmo. As vari aveis citadas no comando j a ter ao que ter sido devidamente atribu das. formato escreva (<lista de vari aveis >) exemplo escreva (o valor procurado e ,x)
Para vari aveis num ericas, pode-se especicar var:tamanho:decimais. < Este comando permite inicializar uma vari avel ou alterar-lhe o conte udo. formato <vari avel> < <vari avel> OU <vari avel> < <constante> OU <vari avel> < <express ao> exemplo A<B B < CURITIBA C < A + 23
Express ao Num erica Qualquer combina ca o compat vel de fun co es que acabem gerando um u nico resultado num erico.
vers ao de 10 de fevereiro de 2008
Express ao Relacional Qualquer combina ca o compat vel de rela co es que acabem gerando um u nico resultado l ogico. Formato O que faz Exemplo Igual (=) devolve VERDADEIRO se seus operan- 3=3 e VERDADEIRO dos s ao iguais e FALSO sen ao Diferente (<>) devolve VERDADEIRO se seus operan- 3<>3 e FALSO dos s ao diferentes e FALSO sen ao Maior (>) Em A > B devolve VERDADEIRO se 3>4 e FALSO A e maior do que B Menor (>) Em A < B devolve VERDADEIRO se 3<4 e VERDADEIRO A e menor do que B Maior ou igual (>=) Em A >= B devolve VERDADEIRO 3>=3 e VERDADEIRO se A e maior ou igual do que B Menor ou igual (<=) Em A <= B devolve VERDADEIRO 3<=3 e VERDADEIRO se A e menor ou igual do que B
88-08, Pedro Kantek
111
112
CAP ITULO 6. VISUALG Express ao L ogica Qualquer combina ca o compat vel de express oes relacionais e/ou l ogicas que acabem gerando um u nico resultado l ogico. Formato E O que faz Em A E B, devolve VERDADEIRO se A e B s ao verdadeiros e devolve FALSO sen ao Em A OU B, devolve VERDADEIRO se A ou B ou ambos s ao VERDADEIRO e devolve FALSO sen ao Inverte o valor l ogico do operando Exemplo VERDADEIRO E VERDADEIRO e VERDADEIRO Todas as outras combina co es d ao FALSO FALSO OU FALSO e FALSO Todas as outras combina co es d ao VERDADEIRO NAO VERDADEIRO e FALSO e NAO FALSO e VERDADEIRO
CAP ITULO 6. VISUALG exemplo A<5 repita escreva (A) A<A+3 ate A > 9 ser ao impressos os valores 5 e 8.
Ou
N ao (NAO)
Se Este comando e denominado alternativo, pois permite escolher caminhos da programa ca o dependendo de uma condi ca o (express ao l ogica). Note que o trecho entre sen~ ao e o comando imediatamente anterior a fim{se} s ao opcionais, raz ao pela qual no formato eles aparecem entre colchetes. Os comandos entre ent~ ao e sen~ ao ou fim{se} (se n ao houver sen ao) ser ao executados apenas se a condi ca o do comando for verdadeira. Se houver comandos entre sen~ ao e fim{se} os mesmos ser ao executados apenas se a condi ca o for falsa. formato se <condi ca o> entao 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
Para Este comando tamb em permite a realiza ca o de la cos (loops) dentro de programas. No in cio a vari avel citada no comando e inicializada com <constante1>. Depois e feita a condi ca o. Se o passo est a ausente ou e positivo, a variavel e testada para <constante2>. (Se o passo e negativo, o teste e com ). Se o resultado e VERDADEIRO os comandos internos s ao executados. Ao nal deles, a vari avel e incrementada (ou decrementada se o passo e negativo) e depois h a um retorno ao teste inicial. Quando o passo n ao e explicito, ele vale 1. formato para <var> de <constante1> ate <constante2> [passo <constante3>] exemplo fa ca para K de 3 ate 8 passo 2 faca comando1 escreva (A) comando2 mpara ... mpara ser ao impressos os valores 3, 5 e 7.
Retorne Usado exclusivamente dentro de fun co es, tem a nalidade de devolver um resultado a quem chamou esta fun ca o. Ao contr ario do C, n ao necessariamente encerra a execu ca o da fun ca o. exemplo se A > 5 entao retorne A mpara
Enquanto Este comando permite a realiza ca o de la cos (loops) dentro de programas. Come cando o comando, a condi ca o e avaliada. Se ela for falsa, h a um desvio para o comando seguinte ao fim{enquanto}. Se a condi ca o for verdadeira os comando internos ao enquanto s ao executados. Ao se encontrar o fim{enquanto} h a um desvio incondicional ao in cio do enquanto e a condi ca o inicial e reavaliada. exemplo A<5 enquanto A <= 9 faca escreva (A) A<A+3 menquanto ser ao impressos os valores 5 e 8.
formato enquanto < condi ca o > faca comando1 comando2 ... menquanto
Outros Comandos aleatorio arquivo <nome-de-arquivo> algoritmo lendo do arquivoarquivo teste.txt timer on / timer o pausa debug eco cron ometro
6.2
Exemplos de Visualg
Exemplo 1 Repita Este comando tamb em permite a realiza ca o de la cos (loops) dentro de programas. algoritmo "primos" var J,K,R: inteiro
88-08, Pedro Kantek
113
114
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
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
vers ao de 10 de fevereiro de 2008
6.2.1
Suponha que o VisualG n ao tem a fun ca o raiz quadrada. Como poder amos construir uma ? Eis uma poss vel formula ca o Dado um n umero real x, x > 0, calcular a raiz quadrada dele. Pensando sobre o que j a aprendemos sobre a raiz quadrada de x, tem-se que y e a raiz quadrada de x se e somente se y 2 = x. Ou reescrevendo, y = x a uma id eia y . Isto nos d de algoritmo: Chute um valor g para y e teste-o. Calcule Se
x g x g
Se o processo estiver funcionando adequadamente, o chute inicial poder a ser qualquer n umero, ent ao vai-se padronizar o primeiro chute como sendo 1. Com isso a fun ca o sqrt em VisualG ca funcao sqrt(N:real):real retorne teste(N,1) fimfuncao A seguir, escreve-se a fun ca o teste e ca
88-08, Pedro Kantek 88-08, Pedro Kantek
115
116
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 fun co es, melhor e perto. Ei-las: 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 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.2
Agora o algoritmo e para zes n- esimas. Ou seja, dados w e n quaisquer, o que se achar ra pretende agora e achar n w . Para isto, deve-se procurar x tal que xn = w. Reescrevendo xn w = 0. Portanto, em f (x) = xn w procura-se encontrar o valor de x quando f (x) = 0, isto e, onde a curva corta o eixo dos x. Em outras palavras e mais genericamente, dada f (x) como descobrir onde a fun ca o corta o eixo x?. Para poder resolver este problema far-se- ao 3 hip oteses: a fun ca o cruza o eixo x apenas em um lugar a fun ca o e cont nua, vale dizer e diferenci avel a derivada no intervalo e sempre positiva ou sempre negativa Supondo uma fun ca o qualquer (sujeita ` as restri co es acima), imagina-se um chute 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 e do que a inclina ca o da curva no ponto g ) cruza o eixo x obtem-se um novo e melhor chute para a raiz procurada. Este, em ess encia, eo m etodo de Newton. 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
6.2.3
Depura c ao de algoritmos
Na atividade prossional ou amadora da constru ca o de programas ecientes e ecazes, a programa ca o ocupa apenas uma parte. E, n ao e a maior nem a principal parte. O que toma tempo e preocupa ca o e a atividade de depurar os programas. Entende-se por depura ca o a arte da descoberta, isolamento e corre c ao de erros. Ali as, o programador mais talentoso n ao e o que comete poucos ou nenhum erro (imposs vel), mas aquele que em os cometendo localiza-os e corrige-os com rapidez. Programar e ir das causas para o resultado, e depurar e ao contr ario, ir do resultado para as causas. S o que nesta segunda parte, conspiram contra a atividade: o ru do ambiente o fato do programa poder ter sido feito por outro a press ao do tempo e do $.
Exerc cio 88 Na v espera desta aula, os alunos ser ao divididos em 4 grupos. A cada
grupo ser a dado um conto de Sherlock Holmes, SEM A PARTE FINAL do mesmo. O grupo ter a entre 5 e 10 minutos para contar a hist oria e toda a turma ser a convidada a descobrir o que aonteceu. Depois deste prazo, o professor contar a o nal da hist oria.
117
118
FUNC CAP ITULO 7. MODULARIZAC AO: OES fimfun c~ ao A parte de deni ca o de vari aveis locais em uma fun ca o nem sempre e necess aria, logo e opcional, mas se presente deve aparecer logo ap os o cabe calho da fun ca o e antes dos procedimentos. Esta deni ca o e mais simples do que a do algoritmo completo. Os dados n ao precisam ser obtidos do exterior, eles ser ao entregues a ` fun ca o simplesmente por referenci a-los no cabe calho da fun ca o. Identicamente n ao e necess ario imprimir resultados bastando retorn a-los (a quem chamou a fun ca o). Acompanhe um mesmo problema resolvido dos dois jeitos. Seja escrever um algoritmo que calcule a m edia entre dois n umeros como algoritmo como fun ca o algoritmo MEDIA fun ca o MEDIA (A, B : real) : real real A B M retorne (A + B) / 2 leia A B mfun ca o MA+B/2 escreva M malgoritmo Do ponto de vista da disciplina de algoritmos, ambos os resultados acima s ao equivalentes. Entretanto, se algu em quisesse testar a segunda implementa ca o (a fun ca o), teria 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 fun ca o permite a modulariza ca o dos algoritmos. Deve-se denir e usar uma fun ca o sempre que: 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 Como uma fun c ao Em computa ca o, o uso da palavra fun c ao e ligeiramente diferente do uso similar na matem atica, embora os 2 conceitos tenham muitas similaridades. Aqui, o uso da palavra fun ca o indicar a um sub-programa separado do programa principal que computa alguns valores. A especica ca o do cabe calho de uma fun ca o ser a 1: fun ca o <nome> ([var] <lista-vars> : <tipo> [;...]) : <tipo-resultado> Com a seguinte regra de leitura: <nome> tal como no algoritmo, identica um nome u nico <lista-vars> uma seq u encia de nomes de vari aveis separadas por v rgulas. Se houver a palavra var no in cio a passagem ser a por referEncia e sen ao por valor <tipo> tipo das vari aveis da lista anterior ; separador em as listas de vari aveis (Se mais de uma houver) <tipo-resultado> especica qual o tipo que ser a devolvido por esta fun ca o ap os os c alculos que realizar a. Pode ser um dos 5 tipos conhecidos at e agora A fun ca o de encerra pela especica ca o 119 etc
Cap tulo 7
Existem 2 maneiras de denir um algoritmo. A primeira, e denindo um c odigo completo, 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 e por um cabe calho reconhecido pela palavra constante algoritmo <nome> Note que a especica ca o <nome> deve ser substitu da por um nome que identique este algoritmo. O bloco se encerra pela especica ca o fimalgoritmo Entre estas duas constantes, deve ser escrito o bloco do algoritmo que sempre ser a formado por 2 componentes: a descri ca o de vari aveis e os procedimentos que o algoritmo far a. Eles devem aparecer nesta ordem: primeiro a deni ca o de vari aveis e depois os procedimentos. Uma diculdade aqui e a necessidade de obter os dados do algoritmo do meio ambiente (possivelmente fazendo uma opera ca o de leitura) e gerar os dados de sa da para serem aproveitados, usualmente atrav es de uma opera ca o de impress ao.
7.1.1
Uma vari avel global existe desde que e criada e pode ser consultada e alterada por qualquer algoritmo ou fun ca o que rode enquanto ela existe. Dito de outra maneira, todas as fun co es subalternas que forem chamadas ap os a cria ca o da vari avel global a enxergar ao e poder ao modic a-la. O uso de vari aveis globais deve ser fortemente reprimido, pois elas s ao respons aveis por um dos maiores eventos causadores de erros em programas, o chamado efeito colateral. Tanto isto e verdade, que a grande vantagem do paradigma funcional de programa ca o e n ao ter vari avis globais. E, com isto ele acaba gerando programas que t em uma quantidade inacreditavelmente menor de erros. Quando um programa dene vari aveis e em seguida chama uma fun ca o, aquelas vari aveis que o programa deniu s ao consideradas como globais pela fun ca o chamada. Se esta primeira fun ca o chamar uma segunda fun ca o, esta u ltima tamb em enxergar a as variaveis denidas pelo programa, como sendo vari aveis globais.
88-08, Pedro Kantek
120
FUNC CAP ITULO 7. MODULARIZAC AO: OES J a a vari avel local a uma fun ca o e denida dentro da fun ca o e quando esta fun ca o se encerrar o programa original n ao ter a mais acesso a elas. Entretanto se esta primeira fun ca o chamar uma segunda, as vari aveis denidas como locais dentro da primeira fun ca o passam a ser globais e s ao enxergadas pela segunda fun ca o. A fun ca o pode ter suas pr oprias vari aveis internas, tamb em conhecidas como vari aveis locais ` a fun ca o. Existe um comando, tamb em opcional, chamado retorne, que signica devolver para o algoritmo que chamou esta fun ca o, qual o valor calculado por ela. O tipo deste resultado deve ser igual aquele especicado depois da palavra fun ca o. Toda fun ca o usada dentro de um programa deve ter sido denida antes de ser chamada. Em resumo, a regra de alcance das vari aveis e: uma vari avel denida em um local e global para todas as fun co es chamadas a seguir, mas n ao e enxergada pelas fun co es 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 Fun co es Quando existe uma fun ca o dentro de outra, as vari aveis da fun ca o externa s ao locais para ela e globais para as fun co es internas. J a as vari aveis da fun ca o interna s ao locais a ela e s ao desconhecidas pela fun ca o externa. Quando existe conito de nomes (duas vari aveis com mesmo nome, sendo uma local e outra global), vale a deni ca o local, e a global deixa de poder ser acessada (Embora continue existindo normalmente). Mas, este e um procedimento que deve ser evitado pelo programador, tanto quanto poss vel. A especica ca o dos par ametros nada mais e do que uma deni ca o de todas as vari aveis que existem na lista-de-par ametros. mse DV++ 10: menquanto 11: retorne QT = 0 12: mfun c ao Localiza c ao do n- esimo primo:
8: 9:
Entrada: um inteiro K qualquer Sa da: o k- esimo numero primo 1: inteiro fun c ao PRIMO (inteiro K) 2: inteiro Z, QTD 3: QTD 1 4: Z 1 5: enquanto (Z K) fa ca 6: se EPRIMO(QTD) ent ao 7: Z++ 8: mse 9: QTD++ 10: menquanto 11: retorne QTD - 1 12: mfun c ao Diferen ca entre 2 n umeros primos: Entrada: dois inteiros M e N Sa da: a diferen ca entre o m- esimo e o n- esimo n umeros primos 1: inteiro EXEMPLO1 (inteiro M, N) 2: retorne PRIMO(M) - PRIMO(N) 3: mfun c ao
Exerc cio Resolvido 7 Um exemplo de algoritmo Escreva uma fun c ao que receba 2 n umeros inteiros, X e Y, (X ( Y) e devolva a diferen ca entre o X- esimo e o Y- esimo n umeros primos. Por exemplo, se X = 10 e Y = 8 a fun c ao dever a devolver 6, pois o 10 n umero primo e 23 e o 8 e 17 e 23 - 17 = 6 Verica c ao se um n umero e primo:
Entrada: um inteiro X qualquer Sa da: .V. se X for primo e .F. sen ao 1: l ogico fun c ao EPRIMO (inteiro X) 2: inteiro DV, QT 3: QT 0 4: DV 2 5: enquanto (DV (X div 2)) fa ca 6: se X mod DV = 0 ent ao 7: QT++
vers ao de 10 de fevereiro de 2008
121
122
CAP ITULO 8. VETORES E MATRIZES Esta especica ca o indica m ultiplas ocorr encias de uma vari avel em uma u nica dimens ao <nome> : vetor [inicio..m] de <tipo> // exemplo: A : vetor [1..10] de inteiro Exemplos Vejamos alguns exemplos:
Cap tulo 8
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
Vetores e Matrizes
Se partirmos da premissa que algoritmos sozinhos s ao incapazes de ajudar a resolver problemas, necessitando de completas estruturas de deni ca o de dados, veremos que os quatro tipos de dados vistos at e aqui (inteiro, real, alfanum erico e l ogico) s ao insucientes. Por exemplo, vejamos o caso de um programa capaz de calcular a diferen ca entre o sal ario e a m edia salarial de um grupo de 50 pessoas. O algoritmo em si e f acil, entretanto se faz necess ario: a cria ca o de 50 vari aveis para conter os sal arios, permitir o c alculo da m edia, e depois das diferen cas individuais, OU A dupla leitura dos dados, a primeira para calcular a m edia, e a segunda para obter as diferen cas individuais. Nenhuma das duas alternativas e conceitualmente correta, pois ambas complicam desnecessariamente algo que e simples. A solu ca o para resolver este e in umeros problemas similares, e a introdu ca o do conceito de vetor. A caracter stica principal do vetor , e a cria ca o de muitas vari aveis de mesmo tipo, que atender ao pelo mesmo nome, e que ser ao acessadas pelo seu deslocamento dentro do vetor, ou seja pelo seu n umero. No caso acima (dos 50 sal arios), ao usar a solu ca o de vetores, criar amos uma u nica vari avel de nome SALAR, na forma de vetor, contendo 50 ocorr encias de uma vari avel tipo real. O conjunto poderia ser referenciado na totalidade com o nome de SALAR, ou cada um dos valores poderia ser acessado individualmente atrav es do seu ndice. A principal caracter stica que determina o uso de vetores para resolver problemas de programa ca o e o seu acesso direto ou via ndice. Isto signica que, em um vetor, dado um valor de ndice, e imediata o acesso ao elemento do vetor, seja para obt e-lo (leitura) seja para alter a-lo (escrita). Um vetor e uma cole ca o HOMOGENEA de coisas. Essas coisas s ao referenciadas pela sua posi ca o dentro do vetor, j a que s ao todas iguais. A cadeia e um vetor de caracteres, mas e t ao comum que acaba sendo um tipo fundamental. N ao precisaria.
Exerc cio Resolvido 8 Seja denir um vetor para conter as taxas inacionarias
dos u ltimos 12 meses: INFLACAO : vetor [1..12] de real
Exerc cio Resolvido 10 Podemos ter um vetor para guardar as popula co es brasileiras,
ano a ano, nos u ltimos 20 anos: POPAA : vetor [1..20] de inteiro Exemplo: V : vetor [1..5] de inteiro {deni ca o} V 20 10 35 65 47. O vetor V tem 5 inteiros. V[1] e 20, V[4] e 65. V[6] e erro. X : vetor [1..9] de caracter ou cadeia X {no segundo caso o tamanho e impl cito} X ABCDEFGHI. O vetor X tem 9 caracteres ( e portanto, uma cadeia). X[1] e A. X[5] e E. X[32] e erro. A : vetor [1..3] de logico A verdadeiro, falso, falso. A e um vetor de l ogicos. A[2] e falso. F : vetor [1..6] de real F 10.9 10 11 11.2 13 19. F e um vetor de reais. (Lembrar que um inteiro e um real tamb em. V[1] e 10.9, V[2] e 10.0, e assim por diante. O ndice em um vetor tem que obrigatoriamente ser: 1. inteiro e positivo 2. menor ou igual ao tamanho do vetor
8.1.1
8.1
Deni c ao de Vetor
Na cria ca o de vetores , apenas e necess ario indicar qual o fator de ocorr encia daquela vari avel. Este valor num erico inteiro, ser a escrito entre colchetes logo ap os o nome do vetor. Cuidado, que aqui o colchete n ao signica opcional. Azares de quem tem um universo limitado de caracteres a utilizar para escrever seus algoritmos. 123
A origem da contagem varia entre 0 e 1. N os sempre que NADA for dito em contr ario, usaremos 1. Quando a origem e zero, conta-se: 0, 1, 2, ... n-1 (para contar n elementos). Quando a origem e 1, a contagem e a trivial: 1, 2, ... , n. Repare que a nota ca o [inicio..nal] a rigor permitiria quaisquer valor inicial e nal, mas o mundo da programa ca o j a e sucientemente complexo. Assim, vai-se combinar que o in cio semore ser a 1 (como 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
8.2
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 fa ca V[I] I 10 {elemento a elemento} II+1 menquanto Na leitura e a mesma coisa Y : vetor[1..5] de real leia Y {5 pfs s ao lidos e colocados em Y} **** OU **** I1 enquanto I 5 fa ca leia Y[I] {leitura individual de cada elemento} II+1 menquanto Atribui c ao Trata-se de modicar o conte udo dos elementos do vetor. 1: A[i] A[i] + 1 Inicializa c ao a coloca E ca o do valor inicial dos elementos de um vetor , usualmente antes de come car o processamento. 1: B[j] 0 Enumera c ao Percorre-se todos os elementos de um vetor, executando sobre eles uma mesma opera ca o. Por exemplo, seja contar quantos elementos s ao negativos. 1: inteiro VALS[200] 2: inteiro I, QTOS 3: leia VALS 4: QTOS 0 5: para para I de 1 a 200 fa ca 6: se VALS[I] 0 ent ao 7: QTOS++ 8: mse 9: mpara Acumula c ao Parecido com a enumera ca o, mas com o car ater de acumula ca o sobre os resultados da opera ca o. Exemplo: seja somar todos os elementos de um vetor
vers ao de 10 de fevereiro de 2008
inteiro VALS[200] inteiro I, SOMA leia VALS SOMA 0 para para I de 1 a 200 fa ca SOMA SOMA + VALS[I] mpara
Inser c ao Coloca ca o de um novo elemento dentro do vetor. Usualmente, este novo elemento e encaixado em alguma posi ca o do vetor, e todos os elementos anteriores que tinham ndice igual ou maior a esta posi ca o s ao deslocados uma posi ca o. Exemplo: Seja manter um vetor de 10 notas, com as melhores notas at e ent ao aparecidas. 1: NOTAS : vetor[1..10] de real 2: NOTAS ... as notas at e aqui 3: NOVANOTA 4: I 1 5: enquanto (I < 11) (NOVANOTA < NOTAS[I]) fa ca 6: II+1 7: menquanto 8: se I = 11 ent ao 9: escreva (a nota nova e menor do que as 10 j a existentes) 10: sen ao 11: J9 12: enquanto (J > 0) (NOTAS[J] < NOVANOTA) fa ca 13: NOTAS[J+1] NOTAS[J] 14: JJ-1 15: menquanto 16: NOTAS[I] NOVANOTA 17: mse Supress ao Opera ca o inversa a ` da inser ca o. Retira-se um elemento, trazendo todos os que estavam uma posi ca o abaixo dele uma posi ca o acima. Busca No acesso direto, dado um ndice, obtemos o valor do elemento no vetor. Aqui ocorre o contr ario. Dado um valor do vetor, queremos saber qual seu ndice (isto e, onde ele est a?). Ordena c ao Reordenar os elementos de um vetor com vistas a deix a-los obedecendo alguma rela ca o de ordem.
125
126
CAP ITULO 8. VETORES E MATRIZES Genericamente Neste caso, considera-se um u nico valor para todas as ocorr encias do vetor. Por exemplo, para zerar um vetor pode-se fazer: 1: inteiro VETVEN [10] 2: VETVEN 0 O comando VETVEN 0 e permitido e faz com que TODOS os 10 elementos de VETVEN sejam zerados.
Conjuntamente Neste caso, um conjunto da de mesmo n umero de elementos e usado na refer encia ao 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) e usado para inicializar o vetor de uma s o vez com conte udos diferentes. Os valores devem aparecer entre par enteses, e devem ser em mesmo n umero do que a deni ca o original do vetor
Individualmente o caso mais comum, e pressup E oe a exist encia de um comando para cada elemento do 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, n ao se aplicam apenas ` a inicializa ca o, mas tamb em as demais a co es poss veis em . Assim, podemos ter testes: seVETVEN = 0 - signicando setodos os elementos de VETVEN, leituras: leia (VETVEN) - signicando leiatodos os elementos, grava ca o: escreva (VETVEN) - signicando escrevatodos..., etc. Todos os comandos vistos podem e devem ser usados junto com o conceito de vetores. Entretanto, existe um que e muito orientado para estas estruturas. Trata-se do comando para. Vejamos um exemplo, em que o para e usado para calcular a soma dos elementos 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 fa ca 7: SOMA SOMA + VET[I] 8: mpara 9: escreva(SOMA) 10: m algoritmo
vers ao de 10 de fevereiro de 2008
Um dos erros mais comuns e graves que acontece quando se utilizam vetores e o 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 n ao compreendido no intervalo da deni ca o do vetor. Este erro ocorre quase sempre em tempo de execu ca o (o que torna mais dif cil sua corre ca o).
88-08, Pedro Kantek
127
128
CAP ITULO 8. VETORES E MATRIZES Um algoritmo de ORDENAC AO e aquele que recebe um X qualquer (possivelmente desordenado), permuta seus elementos e devolve X em ordem. Tipicamente fazem parte de Xi um conjunto de informa co es. Neste caso, haver a uma parte de Xi denominada CHAVE e identicada por k (k=key) pela qual se fara a ordena ca o. Embora devamos ter em mente a exist encia dos outros campos, apenas a chave ser a tratada nos algoritmos. Existem 2 classes de algoritmos de ordena ca o: os que trazem todos os dados para a mem oria (sort interno) e os que ordenam dados em m dia magn etica seq uencial (sort externo). Note que neste caso o algoritmo apenas acessa uma parte do subconjunto total. Um algoritmo de ordena ca o e est avel se no caso particular em que se k[i] = k[j], a sempre bom que um m ordem original dos dados e preservada. E etodo de ordena ca o seja est avel. Antes de prosseguir, vale uma lembran ca. Para conjunto de dados pequenos (quanto?) n ao h a necessidade de grandes pesquisas e deve-se usar o algoritmo mais simples poss vel. O conjunto completo (completo?) de algoritmos de ordena ca o ser a visto e estudado no segundo ano (na disciplina de estrutura de dados), mas por enquanto vamos usar um algoritmo simples e f acil (mas ineciente) para ordenar vetores: Algoritmo de movimenta c ao 1: inteiro[1000] {fun ca o} MOVIMENTA (inteiro V[1000]) 2: inteiro Y[1000] 3: inteiro MAIOR, QUAL 4: inteiro I,J 5: para I de 1 at e 1000 fa ca 6: MAIOR 7: para J de 1 at e 1000 fa ca 8: se V[J] > MAIOR ent ao 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{fun ca o}
Indire c ao A indire ca o e uma dupla (ou tripla ou n-upla) indexa ca o. Usualmente e representada por diversos colchetes. Veja no exemplo 1: escreva A[A[x]] O que est a se pedindo acima e a dupla indexa ca o de A. A maneira de resolver o pedido (e descobrir o valor de A[A[x]]) e usando o valor de x, recuperar o conte udo da posi ca o 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]] e equivalente a 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 a erro) Note que a maioria das linguagens exige inteiro (ou real mas sem decimais).
8.3
Ordena c ao
Na d ecada de 70, James Martin sugeriu que 40% do tempo de TODOS os computadores e gasto neste algoritmo. O conceito de ordem e fundamental em programa ca o Excelente t opico para estudar algoritmos e estudar comportamentos e complexidades
Antes de come carmos a estudar a classica ca o, vamos denir o problema: Seja X um conjunto composto por i elementos entre os quais se pode estabecer uma rela ca o de ordem. Dados Xi e Xj com i = j , sempre pode-se estabelecer Xi > Xj ou Xi = Xj ou Xi < Xj . X estar a em ordem crescente se e somente se Xi Xj , i < j . X estar a em ordem estritamente crescente se e somente se Xi < Xj i < j . X estar a em ordem decrescente se e somente se Xi Xj , i < j . X estar a em ordem estritamente decrescente se e somente se Xi > Xj i < j .
vers ao de 10 de fevereiro de 2008
8.4
Dado um conjunto S de chaves, as 3 opera co es fundamentais em inform atica s ao as seguintes: Pesquisa Dada uma chave desconhecida x, pesquis a-la contra S signica vericar se x pertence ou n ao ao conjunto S. Em termos matem aticos, x S ? Esta fun ca o retorna um valor booleano.
88-08, Pedro Kantek
129
130
CAP ITULO 8. VETORES E MATRIZES Inser c ao Dada uma chave x que reconhecidamente n ao pertence ainda a S (e isto pode ser vericado pela opera ca o acima), a opera ca o de inser ca o signica inserir x em S . Ou S S {x}. A fun ca o pode retornar apenas um indicativo de sucesso. Exclus ao Dada uma chave x que sabidamente pertence a S , a opera ca o de exclus ao signica retirar x do conjunto S . Ou S S {x}. Pode-se retornar apenas um indicativo de sucesso. M aximo Dado um conjunto S , descobrir-lhe seu m aximo e obter o valor x, tal que y = x S, x y . Esta fun ca o retorna um ponteiro ou um cursor para o elemento x. M nimo Muito semelhante ao anterior, s o que busca-se x tal que y = x S, x y . Sucessor Esta opera ca o busca descobrir qual o seguinteelemento do conjunto segundo um crit erio qualquer. A fun ca o recebe como entrada um valor x que est a presente em S e devolve um apontador ou cursor para o n umero imediatamente maior a x em S . Outra hip otese de retorno e um terminador, caso x j a seja o maior elemento em S . Antecessor Esta opera ca o busca descobrir qual o anteriorelemento do conjunto segundo um crit erio qualquer. A fun ca o recebe como entrada um valor x que est a presente em S e devolve um apontador ou cursor para o n umero imediatamente menor a x em S . Outra hip otese de retorno e um terminador, caso x j a seja o menor elemento em S . anotaram a data da maratona a droga da gorda
o romano acata amores a damas amadas e roma ataca o namoro s a d a tapas e sapatadas Denir algoritmo capaz de ler uma frase de at e 80 caracteres e decidir se a mesma e ou n ao e um pal ndromo. O algoritmo deve imprimir a letra Sse for, e Nse n ao for. Desconsiderar os brancos que est ao ` a direita da frase e tamb em aqueles que est ao entre as palavras. Para executar este exerc cio valem as seguintes deni co es: 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 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 (Aur elio). Exemplos de pal ndromos: sairam o tio e oito marias oto come mocoto socorram me subi no onibus em marrocos roma me tem amor em ingl es: a man, a plan, a cat, a canal, panama murder for a jar of red rum rotor, radar, me v e se a panela da mo ca e de a co madalena paes e vem a diva da vida luz azul ato idiota o treco certo a base do teto desaba atila toledo mata modelo talita
Exerc cio 93 Escrever um trecho de algoritmo que dena um vetor de 365 elementos
reais, e inicial ze todos os elementos com o valor 0.
m?
Exerc cio 96 Como exerc cio, indique qual a modica c ao que se deveria fazer no algoExerc cio 94 Escrever um trecho de algoritmo que dena um vetor de 12 elementos
l ogicos, e inicial ze os primeiros 6 com VERDADEIRO e os outros 6 com FALSO. ritmo acima, se o vetor lido estiver em ordem ascendente, a m de n ao ter que percorr e-lo at e o m para certicar-se da n ao exist encia da chave.
Exerc cio Resolvido 11 Imagine um poss vel renamento para tornar mais r apido
o acesso seq uencial a uma tabela (de tamanho grande) classicada. R: Basta aumentar o tamanho do salto, de 1 linha para 10, 20 ou qualquer outro valor.
8.5
Tabelas
Trata-se da um signicativo melhoramento em termos de pesquisa a tabela. Agora a tabela e percorrida aos saltos, e n ao elemento a elemento. A redu ca o de acessos e grande e garante muita eci encia ao processo. Para poder usar esta pesquisa a tabela PRECISA estar ordenada. Se n ao estiver os resultados da t ecnica s ao imprevis veis. Em resumo e o seguinte: A tabela e dividida ao meio (da o nome bin ria) A chave e comparada com o elemento que dividiu a tabela. Se este for menor, a primeira parte da tabela e abandonada. Se for maior abandona-se a segunda parte. A pesquisa prossegue pela divis ao ao meio da parte que cou. Rapidamente as sucessivas divis oes ao meio esgotam a tabela. O processo termina quando a chave for encontrada, ou quando a parte que restou da divis ao for nula. 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] ent ao 9: FIM METADE - 1 10: sen ao 11: INIC METADE + 1 12: mse 13: at e VET[METADE] = CHAVE INIC > FIM 14: se VET[METADE] = CHAVE ent ao 15: escreva achou na posi ca o ,metade 16: sen ao 17: escreva n ao achou 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 bin aria para encontrar (ou n ao) a chave 77 nele. primeira itera ca o: INIC 1, FIM 10, METADE 5. Como VET[5] e 40, e 40 < 77, temos: INIC METADE + 1 ou INIC 6.
88-08, Pedro Kantek
133
134
CAP ITULO 8. VETORES E MATRIZES segunda itera ca o: INIC 6, FIM 10, METADE 8. Como VET[8] e 49, e 49 < 77, temos: INIC METADE + 1 ou INIC 9. terceira itera ca o: INIC 9, FIM 10, METADE 9. Como VET[9] e 60 e 60 < 77, temos: INIC METADE + 1 ou INIC 10. quarta itera ca o: INIC 10, FIM 10, METADE 10. Como VET10] e 88 e 88 > 77, temos FIM METADE - 1 ou FIM 9. Neste ponto o ciclo se encerra, pois IN ICIO > FIM. Finalmente descobrimos que a chave n ao est a presente pois, VET [10] e 88 que e diferente de 77. Note-se que o n umero m edio de acessos em uma pesquisa bin aria e da ordem de log2 N , onde N e o n umero de elementos da tabela. vetor 1 -----------------------Chave 3 Chave 8 Chave 36 Chave 87 Chave 500
CAP ITULO 8. VETORES E MATRIZES vetor2 -------------------------Chave 1 Chave 9 Chave 10 Chave 11 Chave 450 Chave 490
Exerc cio 97 Mediante a regra acima, determine qual o n umero m edio de acessos em uma pesquisa bin aria para uma tabela de:
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:
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,m es, escrever um algoritmo que as leia, escreva-as e calcule e escreva a diferen ca em dias entre ambas. Exerc cio Resolvido 12 Dadas duas datas na d ecada de 80, no formato dia,m es,ano,
escrever um algoritmo que as leia, escreva-as e calcule e escreva a diferen ca em dias entre 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 ent ao 11: qt2 d2 + v1b[m2] + v2[a2] 12: sen ao 13: qt2 d2 + v1[m2] + v2[a2] 14: mse 15: se a1 = 80 a1 = 84 a1 = 88 ent ao 16: qt1 d1 + v1b[m1] + v2[a1] 17: sen ao 18: qt1 d1 + v1[m1] + v2[a1] 19: mse 20: escreva (qt2-qt1)
8.6
Este e um problema tradicional em PD: Suponhamos que existam dois vetores, com as caracter sticas: Id enticos lay-outs Uma chave de controle (em geral n ao repetida> Ambos classicados pela chave de controle. O objetivo e intercalar os dois vetores formando um s o, e que continue classicado. Por exemplo:
vers ao de 10 de fevereiro de 2008
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 uni ao. Os elementos
88-08, Pedro Kantek
135
136
CAP ITULO 8. VETORES E MATRIZES est ao colocados em ordem decrescente (isto e as maiores d vidas na frente) e escreva a quantidade de estados que s ao necess arios para apresentar uma d vida de no m nimo 50% do total ? A chave seja encontrada, OU
Um elemento maior do que a chave seja encontrado, quando ent ao concluiremos pela n ao exist encia da chave na tabela. 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 fa ca 7: se VET[I] = CHAVE ent ao 8: escreva encontrou 9: abandone 10: mse 11: II+1 12: menquanto 13: se I = 101 ent ao 14: escreva N ao encontrou 15: mse 16: m?
Exerc cio 101 Denir um algoritmo equivalente para a leitura de um vetor de 200
elementos, seguido do c alculo e impress ao da soma dos elementos que s ao maiores que 1000. Deve ser impressa tamb em a quantidade de maiores de 1000.
Exerc cio 102 Escrever um algoritmo que seja capaz de ler um conjunto de 10 valores,
calcular a m edia, e imprimir todos os valores do conjunto, a m edia, e a diferen ca entre cada valor individual e a m edia calculada.
Exerc cio 103 Escreva um algoritmo que leia um vetor de 36 elementos e determine
qual maior, e qual seu ndice, imprimindo ambas as informa co es, mesmo que haja mais de um.
Exerc cio 104 Denir algoritmo que leia um vetor de 278 inteiros e escreva-o de tr as
para a frente.
Exerc cio 105 Escreva um algoritmo, que leia de uma s o vez um vetor de 100 elementos num ericos reais, e escreva aqueles que forem maiores do que o valor 150, e tamb em a 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 m edia dos valores positivos e qual a m edia dos valores negativos.
Exerc cio 110 Como exerc cio, indique qual a modica c ao que se deveria fazer no
algoritmo acima, se o vetor lido estiver em ordem ascendente, a m de n ao ter que percorr elo at e o m para certicar-se da n ao exist encia da chave.
Exerc cio 107 Denir algoritmo que leia uma frase de 80 caracteres e escreva a quantidade de vogais min usculas que apareceram na frase.
Exerc cio Resolvido 13 Imagine um poss vel renamento para tornar mais r apido
o acesso seq uencial a uma tabela (de tamanho grande) classicada. R: Basta aumentar o tamanho do salto, de 1 linha para 10, 20 ou qualquer outro valor.
Exerc cio 108 Denir algoritmo que leia uma frase de 90 caracteres e escreva a quantidade de consoantes mai usculas que apareceram na frase.
Exerc cio 111 Mediante a regra acima, determine qual o n umero m edio de acessos
em uma pesquisa bin aria para uma tabela de: 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 109 Denir algoritmo que leia uma frase de 100 caracteres e escreva a
quantidade de palavras que apareceram na frase.
8.7
Dada um vetor, uma das a co es mais comuns sobre ela, e a pesquisa para saber se determinado elemento se encontra ou n ao contido nela. A maneira mais simples de fazer esta pesquisa e percorrer a tabela em ordem seq uencial, at e que: O elemento (denominado CHAVE) seja encontrado, ou Chegue-se ao m da tabela, quando ent ao concluiremos que o elemento CHAVE n ao existe na tabela. Embora seja um algoritmo simples de se imaginar e de implementar, ele n ao e dos mais ecientes, principalmente para tabelas muito grandes e com muitas pesquisas por unidade de processamento. Um primeiro melhoramento que podemos fazer, e classicar a tabela, para diminuir a quantidade de acessos at e chegar a uma conclus ao sobre a exist encia ou n ao da chave. Com a tabela classicada em ordem (digamos ascendente), a pesquisa da chave deve ser feita at e que:
vers ao de 10 de fevereiro de 2008
Exerc cio 112 Dado o vetor: 1 4 5 6 8 10 13 18 21 60, realizar o chinez para descobrir
a presen ca ou n ao das chaves, atrav es do algoritmo de pesquisa bin aria: 1. 8 2. 9
88-08, Pedro Kantek
137
138
CAP ITULO 8. VETORES E MATRIZES E se ao nal do vetor, se colocar 99, em vez de zero, que mudan ca precisaria ser feita ?
Exerc cio 121 Denir algoritmo que leia um vetor de 1500 n umeros reais positivos
sem qualquer tipo de ordena c ao. O algoritmo deve gerar outro vetor tamb em com 1500 n umeros onde os elementos que forem menores do que 10000 ser ao colocados na frente, e onde os maiores car ao no m. Exceto esta mudan ca, a ordem original do vetor deve ser preservada. formados por CODIGO,VALOR referentes a arrecada co es do imposto de renda. CODIGO e um entre 137 c odigos poss veis, um para cada tipo de imposto. VALOR e o valor em reais efetivamente cobrado. Os dados terminam quando o c odigo 000 for lido. Ao nal do processamento, o algoritmo deve imprimir quantos reais foram arrecadados em cada um dos c odigos que foram lidos. Os dados n ao tem nenhum tipo de ordena c ao. Exemplos de c odigos poss veis (ct cios): 0246 0211 0192 0432 ... Taxas alfandeg arias Mensal~ ao Tri-le~ ao Multas por recolhimento fora de prazo,
Exerc cio 122 Denir algoritmo que leia uma s erie indeterminada de pares de valores
Exerc cio 114 Denir algoritmo que leia um vetor de 200 inteiros e escreva os elementos que s ao maiores do que seus medonhos de 10 chifres. Dene-se o medonho de n chifresdo elemento ndice k de um vetor, ao elemento do mesmo vetor, com o menor ndice j poss vel (onde j k ) tal que j e divis vel por n, se este existir. 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 e igual a 5. O pr oximo j maior que cinco e divis vel por 3 (3 chifres) e 6. Logo o medonho e o sexto elemento, que e o 7. Se pedirmos o medonho do u ltimo elemento de um vetor, ele s o existir a se o medonho for o pr oprio elemento (no caso de j ser igual a k ). Isto s o ocorrer a se a ordem do u ltimo elemento for divis vel pelo n umero de chifres.
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 a um total de 720 setores. Denir um algoritmo que leia 20 vetores (um de cada vez, e claro), 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 e de inteiros, e se existe um valor zero, isto signica que o setor est a livre. Qualquer valor diferente de zero, implica em que o setor n ao est a livre.
Exerc cio 115 Denir algoritmo que leia um vetor de 200 elementos inteiros, e a seguir
calcule e escreva a somat oria dos elementos do vetor DE ORDEM PAR.
Exerc cio 116 Denir algoritmo que leia um vetor de 200 elementos inteiros, e a seguir
calcule e escreva a somat oria dos elementos do vetor DE VALOR PAR.
Exerc cio 124 Denir um algoritmo que leia um vetor num erico real de 100 elementos,
onde est ao misturados: n umeros positivos e negativos e n umeros inteiros e fracion arios. O algoritmo deve criar um vetor de sa da tamb em de 100 elementos, onde a ordem e: Primeiro os n umeros negativos fracion arios Depois os positivos fracion arios 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 Sa da: -8.9 -3.1 -0.9 1.2 1.2 3.5 1.2 0 0 -4 -4 -0.9
Exerc cio 117 Denir algoritmo que leia um vetor de 300 inteiros, e escreva-o sujeito
` a ordem de entrada, mas imprimindo primeiro os pares e depois os mpares.
Exerc cio 118 Dado um vetor VIN de 10 elementos inteiros num ericos, criar o vetor
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 pre cos armazenados na forma de dois
vetores de 650 ocorr encias cada. No primeiro, a quem chamaremos COD est ao os c odigos dos produtos [inteiros]. No outro vetor, chamado PRE, est ao os pre cos de cada produto, 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 f ormula VALOR = PRE [I] * QUANTIDADE [I].
Exerc cio 120 Dado um vetor ALFA contendo 50 n umeros inteiros e fracion arios misturados, criar um vetor BETA de mesmo tamanho, onde s o aparecem os n umeros inteiros no in cio, e com zeros ao nal. [Tantos zeros quantos eram os fracion arios em BETA]. Escrever 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
Exerc cio Resolvido 14 Uma empresa de departamentos, quer saber quais os produtos que ela vende e que rendem mais faturamento. As op co es de vendas s ao: brinquedos (cod. 11), armarinhos (cod. 21), roupas (cod. 33) e produtos eletr onicos (cod. 40). O cadastro de vendas da empresa tem o seguinte formato: TIPO,inteiro VALOR, real
88-08, Pedro Kantek
140
CAP ITULO 8. VETORES E MATRIZES E nele consta 1 registro para cada venda efetuada, isto e, os c odigos se repetem. Escrever um algoritmo que leia o cadastro de vendas e totalize os quatro tipos ao nal. Solu c ao usando vetores: 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 fa ca 15: I 1; 16: enquanto tab[I].ti = reg.ti fa ca 17: I I + 1; 18: menquanto 19: tab[I].va tab[I].va + reg.va 20: leia(reg); 21: menquanto 22: escreva(tab)
14: 15:
CAP ITULO 8. VETORES E MATRIZES sen ao Retorne J 16: mse 17: Fim fun c ao Sobre o algoritmo acima, ser ao feitas 4 arma co es desnecess 1. E ario inicializar J com o valor 0, pois J tem o valor imediatamente alterado, logo abaixo. 2. Se em vez de fazer I 21 se zesse I 20 a fun c ao deixaria de funcionar 3. Esta fun c ao pode n ao funcionar no caso em que X n ao pertence a VET 4. Esta fun c ao pode n ao funcionar no caso em que X pertence a VET Est~ ao erradas as afirma c~ oes: 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
num ericos armazenando-os em uma vetor num erico (real). Feito isto, o algoritmo deve:
j calcular e imprimir a somat oria dos termos: a , onde j e um ndice que varia entre 1 j e 200, e aj e a vari avel que foi lida e armazenada no vetor.
2
Exerc cio 125 Suponha uma lista sequencial (um vetor num erico) de nome VET,
denido globalmente, formada por n umeros inteiros positivos e contendo espa co para 20 n umeros. O preenchimento sempre se d a a partir do come co do vetor sem lacunas. Os dados v alidos se encerram quando e encontrado um n umero negativo, que faz o papel de sentinela e que sinaliza FIM DE DADOS. Obviamente cabem apenas 19 n umeros v alidos pois sempre h a que se reservar espa co para o sentinela. Notar que logo ap os a sentinela os n umeros que porventura aparecerem em VET s ao n ao con aveis e n ao devem ser considerados, isto e, o vetor n ao foi inicializado de alguma maneira antes dele come car a ser usado. A seguir est a o algoritmo de uma fun c ao que recebe como par ametro um determinado n umero inteiro positivo X, e devolve a posi c ao dele dentro de VET (caso ele de fato existisse l a dentro) ou devolve o valor 20 o que deve ser entendido como X n ao se encontra em VET. 1: Inteiro fun c ao ACHANUMERO(inteiro X) 2: Inteiro I, J, K 3: I 1 4: J 0 5: enquanto I < 20 fa ca 6: se VET[I] = X ent ao 7: JI 8: I 21 9: mse 10: I++ 11: menquanto 12: se J = 0 ent ao 13: Retorne (20)
vers ao de 10 de fevereiro de 2008
Exerc cio 127 Denir algoritmo capaz de receber uma s erie da datas, sempre referentes 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 s erie de datas se encerra quando for lida um dia igual a zero.
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 informa co es (qual e o mais repetido, 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 n umeros negativos 5: leia(V) 6: para I de 1 at e 500 fa ca 7: J1 8: enquanto (J < 500) fa ca 9: se MAT[J,1] = V[I] ent ao 10: MAT[J,2] MAT[J,2] + 1 11: abandone 12: mse 13: se MAT[J,1] < 0 ent ao 14: MAT[J,1] V[I] 15: MAT[J,2] 1
88-08, Pedro Kantek
141
142
CAP ITULO 8. VETORES E MATRIZES na partilha. QTDDEF e a quantidade de rolamentos deste tipo defeituosos. Deve-se denir um algoritmo que leia todos os dados do arquivo, e para cada partida, deve-se imprimir seu n umero e a identica c ao ACEITAou REJEITADAUm poss vel exemplo de arquivo poderia ser: 001,1,1200,10 001,E,3000,100 002,1,100,4 002,2,100,6 003,E,10000,800 004... Neste caso, o programa deveria emitir o relat orio: 001 ACEITA 002 REJEITADA 003 ACEITA 004 ...
abandone mse JJ+1 menquanto mpara maior 0 I1 enquanto (I< 500) fa ca se MAT[I,2] > maior ent ao 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 decis ao
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 c~ ao do lote, inteiro Tipo de semente, inteiro Area do lote plantado, em m2, real 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 e um n umero que signica: 1=excelente, 2=razo avel, 3=inferior. Sup oe-se que o custo de todos os tipos de semente e o mesmo. Deve-se denir um algoritmo que leia o arquivo e determine e escreva qual o tipo de semente mais produtiva, seguindo o crit erio: Se o trigo produzido e excelente, a produtividade do lote deve ser aumentada em 20%. Se o trigo e inferior, a produtividade do lote deve ser diminu da em 15%. Para cada tipo de semente, devem ser totalizadas as informa co es de area e peso do produto produzido. A semente mais produtiva e aquela que tiver maior coeciente peso / area.
Exerc cio 130 Uma distribuidora de bebidas abastece o mercado com COCA-COLA.
A empresa, no momento, est a preparando o iminente lan camento da coca diet etica. Assim, resolveu fazer uma pesquisa de opini ao na cidade para determinar qual a melhor estrat egia a seguir. Os dados da pesquisa est ao em um arquivo cujo lay-out e: Identifica c~ ao do quarteir~ ao da cidade, inteiro Quantidade de crian cas no quarteir~ ao, inteiro Quantidade de adolescentes no quarteir~ ao, inteiro Quantidade de pessoas obesas, no quarteir~ ao, inteiro Quantidade de diab eticos no quarteir~ ao, inteiro. Quantidade total de pessoas no quarteir~ ao, inteiro Deve-se criar um algoritmo que leia e processe os dados informando: 1. Quantos quarteir oes tem mais de 100 obesos 2. Qual a percentagem m edia (=m edia das percentagens) de crian cas por quarteir ao 3. Quantos quarteir oes tem mais adolescentes do que crian cas 4. Quantos quarteir oes tem mais de 5 % de diab eticos.
Exerc cio 131 Uma revenda de autom oveis quer fazer uma pesquisa para determinar
se h a correla c ao entre renda familiar e cor do autom ovel adquirido. Para tanto, cada venda realizada no m es passado, gerou um registro magn etico contendo: Renda fam lia, real (em R\$) Cor do carro adquirido, cadeia As cores poss veis s ao: amarelo, azul, branco, cinza, marrom, preto e verde. J a as classes de renda s ao 3: Classe 1, vai de 0 at e 50 Sal arios m nimos. A classe 2, vai de 50,01 SM at e 150 SM. A classe 3 e de quem ganha mais que 150 SM. Para cada registro lido, deve-se ver em qual categoria ele cai (para tanto, o programa ler a no in cio, o valor de um sal ario m nimo) e incrementar 1 em uma vari avel que relacione 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
vers ao de 10 de fevereiro de 2008
Exerc cio 129 Uma partida de rolamentos e composta de quantidades vari veis de
rolamentos tipos 1, 2 e especial. Ela e aceita no TODO quando: pelo menos 97 % de rolamentos tipo 1 n ao tem defeito E pelo menos 95 % de rolamentos tipo 2 n ao tem defeito E Menos de 1000 rolamentos tipo especial tem defeito. Os dados referentes a cada partida est ao no computador na forma NUMPAR, inteiro, TIP, caracter, QTDROL, inteiro, QTDDEF, inteiro NUMPAR e um n umero que identica a partida. No arquivo existem diversas partidas, por em todos os dados de uma partida est ao agrupados. TIP, e apenas um caracter cujo conteudo pode ser: 1, 2ou E. QTDROL e a quantidade de rolamentos deste tipo que existem
vers ao de 10 de fevereiro de 2008
143
CAP ITULO 8. VETORES E MATRIZES menquanto se I = ULTIMOUSALDO+1 ent ao 8: retorne I 9: sen ao 10: retorne -1 11: mse Olhando os 2 algoritmos (que est ao corretos) podem-se fazer algumas arma co es. Supondo que existem 800.000 valores em VET, analise as arma co es a seguir e informe ao nal a soma das arma co es verdadeiras:
6: 7:
Exerc cio 132 Um fabricante de margarina planeja homenagear a sua m ae no lan camento de um novo produto no ano que vem. A nova margarina dever a ter um nome formado por alguma combina c ao das letras M,E,R,T,A, que e o nome da m ae do fabricante. O exerc cio deve criar o algoritmo que fa ca e escreva as 120 combina co es poss veis. Analisando o relat orio, o fabricante escolher a o nome que quiser.
Exerc cio 133 O instituto Nacional de Pesquisas Ufol ogicas estuda com interesse a
ocorr encia de contactos com seres extraterrestres em 5 pa ses: Brasil, Argentina, Canad a, Estados Unidos e Portugal. Cada contacto e minuciosamente analisado e um resumo e cadastrado no computador. Os dados s ao: M^ es da ocorr^ encia, inteiro Ano da ocorr^ encia, inteiro Pa s, cadeia Grau do contacto, inteiro (1, 2 ou 3) Confiabilidade, (1=prov avel embuste, 2=razo avel, 3=confi avel, 4=certo!) A partir deste arquivo, deseja-se saber: 1. Qual o pa s com mais relatos ? 2. Qual o pais que proporcionalmente ao n umero de contactos apresenta mais embustes ? 3. Qual o Pais com mais contactos do terceiro grau, con veis ou certos? 4. Qual o m es mais prop cio a ocorr encias ?
1 O algoritmo 1 e o mais r apido 2 O segundo nunca detecta a aus encia da chave, pois logo de cara inclui o elemento a buscar 4 No segundo algoritmo, como a vari avel ULTIMOUSADO n ao e alterada a inclus ao da chave buscada n ao ocorre 8 O segundo algoritmo e mais r apido 16 A eventual ordena c ao em ambos os casos deixa os algoritmos mais r apidos Pede-se a soma das arma co es verdadeiras
Exerc cio 135 No algoritmo a seguir, de uma fun c ao que detecta se o n umero X e ou
n ao e primo, h a quatro lacunas. Informe qual comando deveria ser colocado em cada uma das lacunas: 1: l ogico fun c ao PRIMO(inteiro X) 2: inteiro QTD 0 3: inteiro QUO 2 4: enquanto QUO teto(raiz-quadrada(X)) QTD = 0 fa ca 5: // teto(y) e o pr oximo inteiro maior ou igual a y 6: se X mod QUO = 0 ent ao 7: . 8: mse . 9: 10: menquanto 11: se QTD = 0 ent ao 12: retorne . 13: sen ao 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 134 Voc e tem a seguir 3 fun co es que buscam um determinado valor que
pode ou n ao estar contido em um vetor, por hip otese, GLOBAL. Considere o nome do vetor como VET, e considere tamb em que ele tem espa co de sobra no seu nal. Assim, por exemplo, ele pode ter espa co para 1.000.000 de valores, mas atualmente usa bem menos do que isso. Considere tamb em a exist encia de uma vari avel GLOBAL chamada ULTIMOUSADO que cont em o valor do u ltimo valor v alido dentro de VET. O algoritmo 1 e o seguinte: 1: inteiro fun c ao BUSCALIN (inteiro CHAVE) 2: inteiro I 1 3: inteiro RESPOSTA -1 4: enquanto I ULTIMOUSADO fa ca 5: se CHAVE = VET[I] ent ao 6: RESPOSTA I 7: I ULTIMOUSADO+1 8: mse 9: I++ 10: menquanto 11: retorne RESPOSTA Para o algoritmo 2: 1: inteiro fun c ao BUSCALINSEN (inteiro CHAVE) 2: inteiro I 1 3: VET[ULTIMOUSADO+1] CHAVE {note que ULTIMO n ao e alterado} 4: enquanto CHAVE = VET[I] fa ca 5: I++
vers ao de 10 de fevereiro de 2008
Exerc cio 136 Suponha 2 pilhas, devidamente denidas para armazenarem n umeros
inteiros, de nomes A e B. Considere que elas tem capacidades grandes (innitas, neste caso espec co). Na situa c ao inicial A pilha A cont em os seguintes elementos: 1 (o primeiro a entrar), 5, 8, 14, 3, 2, 9, 6, 7 e 5 (o u ltimo a entrar) e B est a vazia. Ap os a execu c ao do trecho correto de algoritmo a seguir, qual o conte udo de B (lido do primeiro a entrar para o ultimo a sair)
88-08, Pedro Kantek
145
146
CAP ITULO 8. VETORES E MATRIZES 150 elementos), sujeito a seguinte C [1 3 5 ... 97 99] C [2 4 6 ... 98 100] C [101 102 103 ... 149 150] lei de forma c ao: A B [1 2 3 ... 49 50] B [51 52 53 ... 99 100]
inteiro S 10 enquanto (S 50) fa ca Y desempilha (A) SS+Y empilha (B, Y) menquanto enquanto n ao vazia (B) fa ca Y desempilha (B) se Y mod 2 = 0 ent ao 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
Exerc cio 144 Denir algoritmo que leia um conjunto de 20 valores reais, armazene-os
em um vetor e a seguir calcule a somat oria expressa pela express ao: 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 m edia e o desvio padr ao. Posteriormente, devem-se imprimir as notas que estiverem fora do intervalo: limite inferior: Media - 3 desvio padr ao limite superior: Media + 3 desvio padr ao. (X Xm )2 n Exemplo: Dadas 5 notas (8,9,2,5,6), calcular seu desvio padr ao: DP = C alculo da m edia: 8 + 9 + 2 + 5 + 6 / 5 6 (m edia) pares: (8 - 6), (9 - 6), (2 - 6), (5 - 6), (6 - 6) Resultados: 2, 3, 4, 1, 0 Ao quadrado: 4, 9, 16, 1, 0 Somat orio: 30 Divido por 6: 5 Raiz de 5: 2,2. Logo o D.P. e 2,2.
a) b) c) d) e)
Exerc cio 137 Denir algoritmo que leia uma cadeia de 200 caracteres e escreva a
quantidade de letras mai usculas que s ao seguidas por uma letra min uscula.
Exerc cio 138 Denir algoritmo que leia um vetor de 208 inteiros e escreva os elementos que est ao entre n umeros maiores ou iguais. Exemplo: Se o vetor lido foi 1 16 4 24 23 22 10 8 8 8 7 1 2 0 3 devem ser impressos os n umeros 16, 24, 8, 8 e 2.
Exerc cio 139 Escreva algoritmo de uma fun c ao que leia um vetor de n umeros de
matr cula dos alunos aprovados em estrutura de dados (95 alunos) e que receba a matr cula de um aluno qualquer. A fun c ao deve devolver .V. se o aluno foi aprovado e .F. se foi reprovado.
Exerc cio 140 Denir algoritmo que implemente uma variante da linguagem do P,
a seguir descrita. Toda s laba formada s o por uma consoante e uma vogal e considerada process avel. A esta, na saida, deve ser agregada outra s laba com a consoante Pe a mesma vogal. O resto do texto n ao deve ser alterado. Denir algoritmo que leia uma frase de 150 caracteres, toda em mai uscula e escreva o resultado com os Ps incluidos. Exemplo: O RATO VAI AO BURACO O RAPATOPO VAPAI AO BUPURAPACOPO
Exerc cio 146 Existe um livro de 370 p aginas que foi recentemente impresso. A editora
deseja fazer um estudo sobre poss veis erros de impress ao. Desta forma, um especialista foi convidado a levantar quantos erros existem em cada p agina. Cada valor foi digitado na 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 p agina que tem mais erros ? (Suponha que s o existe uma, isto e ela eu nica) 2. Quantas p aginas tem zero erros ?
Exerc cio 141 Denir algoritmo que leia um vetor de 400 elementos inteiros e gere
um segundo vetor de 200 elementos, onde cada elemento e a soma de dois elementos consecutivos do vetor de entrada.
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 n umero de dias transcorridos desde o dia 1 de janeiro de 1990.
Exerc cio 142 Dado um vetor DIST com 15 distribui co es de freq uencia estat sticas,
criar um vetor ACUM, tamb em de 15 elementos, contendo as distribui co es acumuladas. O algoritmo deve ler DIST e imprimir DIST e ACUM.
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
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
vers ao de 10 de fevereiro de 2008
147
148
CAP ITULO 8. VETORES E MATRIZES Note-se que a rigor, qual e a primeira dimens ao e qual a segunda e um crit erio do programador. No caso acima, a matriz ter a 5 linhas por 12 colunas, mas nada impediria que ela fosse declarada como 12 linhas por 5 colunas. Exemplos a) A cria ca o de uma matriz 8 x 12 devidamente zerada, poderia ser assim: 1: M vetor de [1..8] [1..12] de real 2: inteiro I,J 3: para I de 1 at e 8 fa ca 4: para J de 1 at e 12 fa ca 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) fa ca 7: J1 8: enquanto (J < 14) fa ca 9: M2 [J] [I] M1 [I] [J] 10: JJ+1 11: menquanto 12: II+1 13: menquanto
Exerc cio 149 Denir algoritmo que leia 2 horas referentes sempre ao mesmo dia. A
primeira hora indica quando um determinado processo produtivo come cou, e a segunda hora indica quando ele terminou. Para cada par de horas, o programa deve calcular e imprimir qual a dura c ao do processo em horas, minutos e segundos. Os dados de entrada est ao no formato: HH,MM,SS. O dado de sa da tamb em est a no mesmo formato.
Exerc cio 150 Voc e precisa resolver um problema relativo a astronomia. Neste caso,
pela magnitude dos n umeros, o tipo real n ao e suciente. O Objetivo do exerc cio e escrever um algoritmo capaz de implementar n umeros inteiros com 40 casas de precis ao, e com eles realizar opera co es de adi c ao. Exemplo: Se o algoritmo ler os n umeros: 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 e-escola tem 125 dias de aula. Em cada dia, e
escolhido o aluno de melhor comportamento e seu n umero de matr cula e colocado em um vetor de 125 elementos na posi c ao correspondente ao dia espec 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 n umero do aluno que mais apareceu no vetor. O n umero de matr cula varia entre 1 e 2000 inclusive.
Exerc cio 152 A Pol cia Rodovi aria vai usar uma nova abordagem para a repress ao
ao excesso de velocidade na estrada. Na sa da de Curitiba, em dire c ao a Paranagu a, um posto vai anotar e digitar no computador as placas dos carros que passarem. Na chegada ` as praias, outro posto vai fazer o mesmo trabalho. Desde que o computador tem rel ogio e sabe a que horas aconteceram os dois fatos, e conhecendo a dist ancia entre os dois postos, que e de 92,6 Km, o programa ir a multar os mais afobados. O exerc cio pede que seja feita a rotina do programa que receber a os dois hor arios (no formato hh,mm ambos inteiros) e determine se o carro deve ou n ao ser multado. Lembrar que a velocidade m axima permitida e de 100 Km/h, com uma toler ancia de 10 %.
Exerc cio 153 Denir algoritmo que some duas matrizes A e B, de 7 linhas por 8
colunas cada uma, gerando a matriz C, tamb em 7 x 8, onde cada elemento de C e a soma dos dois elementos correspondentes em A e B.
8.8
Matriz
Exerc cio 154 Denir algoritmo que some duas matrizes A e B, de 7 linhas por 8
colunas cada uma, gerando a matriz C, tamb em 7 x 8, onde cada elemento de C e a soma dos dois elementos correspondentes em A e B, com uma restri c ao: S o se pode usar um ndice. Dica: L = f (x); C = f (x). Como s ao f e f ?
Pelas mesmas raz oes que nos levaram a criar o conceito de vetor, precisaremos agora tratar de um outro tipo de organiza ca o de dados: as matrizes. Trata-se de arranjos bi-dimensionais; de dados. Apenas para compara ca o, os vetores s ao arranjos unidimensionais de dados. Excepcionalmente, podemos ter mais de duas dimens oes, permitindo algumas linguagens tr es ou mais. Algumas s ao mais privilegiadas neste aspecto: APL por exemplo, permite at e 256 dimens oes em algumas implementa co es e at e 64 em outras. Nos vetores, n os precis avamos um ndice para referenciar um determinado elemento do vetor. No caso da matriz bi-dimensional, precisaremos 2 ndices: o ndice da linha e o da coluna. No caso de matrizes tridimensionais, s ao tr es os ndices: plano, linha e coluna. O formato e similar ao da deni ca o de vetor, agora acrescentando-se apenas a quantidade de elementos na segunda dimens ao. O formato e <nome> vetor de [in..] [in..] de <tipo> Por exemplo, a deni ca o de uma matriz para conter os pre cos mensais (12 meses) de um produto ao longo dos u ltimos 5 anos, seria 1: PRECO vetor de [1..5] [1..12] de real
vers ao de 10 de fevereiro de 2008
Exerc cio 155 Denir algoritmo onde dada uma matriz M1 de 6 x 9, devemos totaliz ala na vertical gerando um vetor de 9 elementos. Imprimir este vetor. A seguir deve-se encontrar e imprimir a m edia destes 9 valores.
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 dimens oes 4 e 9 (a
primeira) e 9 e 7 (a segunda). Ap os lidas as matrizes devem ser multiplicadas matricialmente gerando uma sa da de dimens oes 4 x 7. A matriz resultado deve ser impressa ao nal.
Exerc cio 158 Uma matriz esparsa e aquela que conta com grande n umero de elementos nulos dentro dela. Podemos arbitrar que uma matriz e esparsa quando apenas 5%
88-08, Pedro Kantek
149
150
CAP ITULO 8. VETORES E MATRIZES dos seus elementos n ao s ao nulos. Uma maneira razo avel de armazenar matrizes esparsas e criar matrizes comprimidasque guardam a linha e a coluna dos valores que n ao s ao zero (guardam o valor tamb em). Isto posto: Escreva algoritmo que receba matriz esparsa e devolva matriz comprimida. O inverso Supondo matrizes de inteiros, indique quais tamanhos e percentuais de valores diferentes de zero recomendam o uso de matrizes comprimidas (despreze o tempo de processamento para convers ao.) Proponha pelo menos outros 2 esquemas distintos deste, de economia de espa co para matrizes esparsas
23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
CAP ITULO 8. VETORES E MATRIZES mse KK+1 menquanto C [I] [J] menor JJ+1 menquanto II+1 menquanto escreva(C) m{algoritmo}
Exerc cio Resolvido 17 Dada uma matriz num erica contendo 30 linhas (uma para
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 a classicada em ordem ascendente de matr cula) Reclassif que-a em ordem descendente de m edia 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 fa ca I1 enquanto I < limite fa ca se MAT[I] [5] < MAT[I+1] [5] ent ao 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 fa ca 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
vers ao de 10 de fevereiro de 2008
151
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 166 Uma matriz representa os valores da cota c ao da soja no mercado de
Chicago em d olares por tonelada, de hora em hora (das 09:00 as 18:00 = 10 linhas), e nos 22 dias u teis de julho/89 (22 colunas). Deseja-se um algoritmo que informe: 1. Quais as maiores cota co es dia a dia (22 valores) 2. Qual a hora em que foi mais freq uente aparecer a maior cota c ao (Neste caso n ao haver a empate, por deni c ao). 3. Em quais dias a m edia da manh a (primeiros 5 valores) foi maior do que a m edia da tarde (5 u ltimos valores).
Exerc cio 160 Denir algoritmo que leia duas matrizes (A e B) de dimens oes 7 x 13 e
gere uma terceira matriz, onde cada elemento e o maior entre os elementos correspondentes em A e B.
Exerc cio 161 Denir algoritmo que leia duas matrizes A e B, de 9 x 16 elementos
num ericos, devendo gerar uma terceira matriz sujeita as seguintes regras: Se A[L, C ] + B [L, C ] > 100 ent ao C [L, C ] A[L, C ] e se A[L, C ] + B [L, C ] 100 ent ao C [L, C ] B [L, C ]
Exerc cio 167 Dada uma matriz de dimens oes 8 x 15, obter uma outra tamb em de
dimens oes 8 x 15, onde cada linha foi dividida pelo menor elemento da linha correspondente na matriz original.
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:
Exerc cio 168 Dada uma matriz de dimens oes 9 x 12, obter uma outra tamb em de
dimens oes 9 x 12, onde cada linha foi dividida pela somat oria dos elementos da linha correspondente 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 impress ao ao nal.
a resposta dever 0 0 3 3 1 1 2 1 1 4 3 2
Exerc cio 170 Dada uma matriz de 8 linhas por 6 colunas, deve-se criar um algoritmo
capaz de l e-la de uma s o vez, e a seguir gerar uma matriz de id entica forma (8x6) onde cada linha e o produto acumulado da linha da matriz original. Exemplo: Se a matriz lida for: 1 4 1 2 3 2 2 2 5 0 3 2 0 o resultado ser a 2 4 2 1 4 1 2 3 15 0 8 0 0 2 6 24 4 8 16
Exerc cio 163 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
Porqu e tudo come ca com 1 ? a resposta dever 1 4 3 2 1 2 1 8 2 0 0 1 0 9 3 3 2 3 ser: 3 4 7 1 7 0 A palavra digital vem do latim digitus que signica dedo, e por que temos 10 dedos, toda nossa l ogica aritm etica se criou sobre um sistema decimal (de 10). J a que s ao 10 d gitos e qualquer n umero e composto por uma combina ca o desses d gitos seria de se esperar que cada um dos 10 d gitos tivesse uma distribui ca o proporcional quando vai se representar um n umero qualquer. Assim, teoricamente, se analisarmos um grande conjunto de n umeros, seria de se esperar que os d gitos 1, 2, 3, ... aparecessem em 10% das vezes, cada um iniciando os n umeros. Anal, n ao existem d gitos mais bonitos ou mais simp aticos para que apare cam no come co dos n umeros mais do que os outros. Ou ser a que existem ? Em 1938, um matem atico chamado Benford, acabou descobrindo que sim, existem d gitos iniciais mais frequentes do que outros. Ele estudou um monte de distribui co es e chegou a ` conclus ao que o d gito 1 ocorre no come co em cerca de 30% das vezes, independente da fonte ou do fen omeno que e consultado. Parece estranho, mas e verdade: em qualquer tabela, uma grande quantidade de n umeros come ca com o d gito 1. Muito mais do que os demais d gitos.
88-08, Pedro Kantek
Exerc cio 164 Denir algoritmo que efetue a multiplica c ao matricial de duas matrizes,
que dever ao ser lidas de uma s o vez: A primeira matriz tem forma 8 linhas por 9 colunas, e 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 o vez) uma matriz de 23 linhas por 10 colunas. Esta matriz representa a popula c ao dos 10 maiores munic pios de cada estado Brasileiro. Em cada linhas, as colunas est ao em ordem decrescente, com exce c ao da primeira coluna, que sempre representa a capital. O algoritmo deve imprimir:
1. Qual o n umero do estado de capital mais populosa ? 2. Qual a m edia das popula co es das capitais do Brasil ? 3. Quais os n umeros (de estado e de munic pio) dos munic pios que tem popula c ao maior que a capital ?
vers ao de 10 de fevereiro de 2008
153
154
CAP ITULO 8. VETORES E MATRIZES Veja-se a seguinte conjunto de dados, extra do do livro de Benford. Veja na tabela 8.1. Parece que a distribui ca o do primeiro d gito em n umeros segue a seguinte distribui ca o logar tmica: P (n) log(n + 1) log n para n = 1, 2, ...9. Este e a Lei do Primeiro D gito.
Col.
A B C
D E F G H I J K L M N
Popula co es Constantes Exemplares aleat orios de jornais Calores espec cos de subst ancias Peso molecular Drainage Peso at omico n1 ou n exemplares do Readers Digest Voltagem de raios X Dados da liga americana de baseball Endere cos aleat orios n1 , n2 , ...n! Taxas de Mortalidade M edia
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
155
156
CAP ITULO 9. REGISTROS Deve-se lembrar que uma matriz tamb em pode ser denida com um vetor de vetores (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 inv es de 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) d ebitos. Para acessar a presta ca o do 10o cliente, far amos: CLIENTES[10].PRESTACAO registro de vetores Tamb em nada impede que um registro tenha vetores estrutura ECONOMETRIA pontoutuante INFLACAO[12] inteiro POPULACAO inteirolongo PIB m { estrutura } ECONOMETRIA BRASIL, ARGENTINA, PARAGUAI Neste caso, como acessar as 2 u ltimas taxas de ina ca o de BRASIL e de PARAGUAI ? BRASIL.INFLACAO[12], BRASIL.INFLACAO[11] e PARAGUAI.INFLACAO[12], PARAGUAI.INFLACAO[11]
Cap tulo 9
Registros
Este tipo indica uma estrutura complexa, formada por v arios tipos primitivos, e que passam a ser usados conjuntamente. Ela e criada em duas etapas. Na primeira, denese do que e composta a estrutura, e na segunda, quais as vari aveis que ser ao mapeadas por essa estrutura. Defini c~ ao da estrutura: estrutura <nome da estrutura> <tipo> <nome campo 1> <tipo> <nome campo 2> ... <tipo> <nome campo n> fim {estrutura} Utiliza ca o da estrutura em vari aveis: <nome da estrutura> <nome da vari avel> // exemplo: ENDERE CO CLIENTE // exemplo: estrutura ENDERE CO // alfanum RUA [30] // inteiro N UMERO // 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 indica ca o <tipo> apare ca, por exemplo, em vetores.
9.1
Deni c ao de registros
uma cole registro E ca o HETEROGENEA de coisas. As coisas s ao reconhecidas pelo seu nome. Por exemplo, uma placa de automovel e um conjunto de 3 letras e 4 n umeros. N ao 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) N ao confunda PLACA ( e apenas uma estrutura, n ao ocupa lugar na mem oria e pode ser referenciada em comandos) com VEICULO (a vari NAO avel cuja estrutura e PLACA, ocupoa lugar, pode ser referenciada... 157
158
CAP ITULO 9. REGISTROS cad [mes,dia] cad [mes,dia] + valor leia (dia,mes,valor) 10: menquanto 11: escreva(cad)
8: 9:
11:
enquanto dia = 0 fa ca acum [dia] acum [dia] + reg.valor 12: leia(reg) 13: menquanto 14: escreva(acum)
vai distribuir R$ 100.000 de pr Exerc cio 171 A Empresa DEUNOPE emio de m de ano a seus vendedores. Cada vendedor receber um xo de 1.000. A diferen ca, isto e, a quantia que sobrar, ser a distribu da proporcionalmente ao total de vendas de cada um. A Empresa tem no m aximo 50 vendedores , e seus dados est ao em um arquivo que cont em o 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 cart oes na forma: 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 m edia para cada aluno, usando a f ormula: M = ((T1 2) + T2 + (Nprova 7)) 10 Ap os cada c alculo, deve-se imprimir, o n umero da matr cula, a m edia nal e a mensagem: PARABENS, caso a m edia tenha sido maior ou igual a 7. Se a m edia foi menor que 7, a mensagem e PRECISAMOS ESTUDAR MAIS.... tipo C = registro inteiro: matric real: t1, t2, pr mregistro C: cad real: media caracter: mensagem leia (cad) enquanto matric = 0 fa ca media (t1 * 2) + t2 + (pr * 7) media media / 10 se media 7 ent ao mensagem PARABENS sen ao mensagem PRECISAMOS ESTUDAR MAIS... mse escreva (matric, media, mensagem) leia (cad) menquanto
tipo R = registro inteiro: dia real:valor mregistro R: reg inteiro: diaant real: total total 0 leia(reg) ant dia enquanto dia = 0 fa ca enquanto dia = diaant fa ca total total + valor leia(reg) menquanto escreva (total) total valor diaant dia se dia = 0 ent ao leia(reg) mse menquanto
Exerc cio Resolvido 20 Uma empresa tem registros de vendas de todo o ano de
1987, na forma (dia,m es,valor). Dia e m es s ao inteiros, e valor e real. Criar um algoritmo que leia todo o arquivo e escreva os totais di arios. N ao e necess rio denir registro. 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 fa ca
vers ao de 10 de fevereiro de 2008
Exerc cio Resolvido 22 Existe um arquivo que cont em alunos que dever ao se
dirigir a unidades da universidade para fazer vestibular. Tais dados est ao em um cadastro que tem o formato:
88-08, Pedro Kantek
159
160
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; mregistro E: CADE; tipo S = registro inteiro: MS, UP; real: DU; mregistro S: CADS; leia (CADE); enquanto ME = 0 fa ca se U1 U2 U1 U3 ent ao UP 1; DU U1; mse se U2 U1 U2 U3 ent ao UP 2; DU U2; mse se U3 U1 U3 U2 ent ao UP 3; DU U3; mse MS ME; grave (CADS); leia (CADE); menquanto
CAP ITULO 9. REGISTROS Pede-se o desenho da area F, com todos os seus componentes
Exerc cio 173 Projete a estrutura necess aria para comportar todas as informa co es
dos alunos do UNICENP. Veja que cada aluno tem NOME (com tamanho m aximo de 40 caracteres), idade e c odigo de matr cula. Os alunos se agrupam em turmas de no m aximo 70 alunos. Cada turno tem 4 turmas e cada curso tem 2 turnos. Finalmente, h a no UNICENP 28 cursos. Para a estrutura acima, responda Quantos alunos cabem no total ? Supondo que alunos n ao preenchidos cont em idade = 0, qual o algoritmo que conta quantos alunos h a no curso 22 ? Qual o algoritmo que conta quantos alunos estudam pela manh a (1. turno) ? Qual o algoritmo que imprime o nome de todos os alunos do curso de inform atica (curso=8)
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
Exerc cio 174 Suponha a estrutura necess aria para conter um romance, sujeito as
seguintes limites: linhas de 60 caracteres; p aginas de 43 linhas; cap tulos de 20 p aginas; livros de 18 cap tulos. Dena a estrutura em quest ao 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 p aginas mpares dos cap tulos pares.
Exerc cio 175 Suponha que para identicar uma origem ou um destino, h a que se
ter 3 informa co es: nome da cidade, sigla do estado a que pertence e pa s. Isto posto, escreva a estrutura necess aria para identicar uma viagem. Uma viagem e composta pelas informa co es: origem, destino, data da viagem, dura c ao em dias.
Exerc cio Resolvido 23 Na realiza c ao da u ltima feira de moda no Parque Barig ui,
estiveram perto de 100.000 visitantes. Cada fam lia informou seu estado de origem e quantos componentes tinha. Tais dados se encontram em um arquivo com o formato: ESTADO, cadeia[2]; NUMVIS, inteiro. ESTADO e a sigla com 2 caracteres. Criar um algoritmo que leia tal arquivo, exclua os visitantes do estado do Paran a, (sigla PR), e totalize por estado de origem, em ordem alfab etica. Os dados terminam quando for lido um estado igual a XX, que n ao deve ser considerado para efeito de c alculo.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
estrutura X inteiro A real B inteiro C[5] m estrutura estrutura Y inteiro D X E[3] m estrutura YF 161
88-08, Pedro Kantek
tipo R = registro estado : caracter qtd : inteiro mregistro TAB [1:24] vetor de R reg : R tab[1].estado AC tab[2].estado AL tab[3].estado AM tab[4].estado BA 162
vers ao de 10 de fevereiro de 2008
CAP ITULO 9. REGISTROS tab[i].qtd tab[i].qtd + reg.qtd mse 20: leia (reg) 21: menquanto 22: escreva (tab)
18: 19:
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 fa ca se reg.estado = PR ent ao I1 enquanto tab[I].estado = reg.estado fa ca II+1 menquanto tab[i].qtd tab[i].qtd + reg.qtd mse leia (reg) menquanto escreva (tab)
Exerc cio Resolvido 24 Uma companhia a erea tem 6 tipos de avi oes: 737-200,
737-300, 727, 707, A300 e Bandeirantes. Do cadastro de viagens realizadas no u ltimo ano, obteve-se o seguinte arquivo: TIPO,cadeia[6]; PASSAG,inteiro; DIST,real, onde TIPO e um campo de 6 posi co es com a identica c ao de tipo de avi ao, PASSAG ea quantidade de pessoas transportadas e DIST e a dist ancia do trecho percorrido. Cada vo 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 ocorr encias contendo as quantidades totais de passageiros e dist ancias por tipo de avi ao. O objetivo nal e conhecer a produtividade de cada tipo de avi ao, dada pela raz ao: passageiros / dist ancia. O programa deve imprimir o nome do tipo de todos os avi oes, e 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 = ) fa ca 17: I 1; 18: enquanto (I < 7) fa ca 19: se aviao [I] = av ent ao 20: abandone 21: mse 22: se aviao [I] = ent ao 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 ent ao
88-08, Pedro Kantek
Outra possibilidade se solu c ao seria n ao colocar os estados na tabela, e a medida que eles fossem chegando, a tabela fosse sendo incrementada. Neste caso, se a sa da tivesse que ser ordenada este trabalho teria que ser feito a parte ao nal dos dados. A solu c ao 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 ... {espa cos e zeros} 8: leia (reg); 9: enquanto (reg.estado = XX fa ca 10: se reg.estado = PR ent ao 11: I1 12: enquanto tab[I].estado = reg.estado TAB[I].ESTADO = fa ca 13: II+1 14: menquanto 15: se TAB[I].ESTADO = ent ao 16: TAB[I].ESTADO REG.ESTADO 17: mse
vers ao de 10 de fevereiro de 2008
163
164
passag [I] passag [I] + pa; distancia [I] distancia[I] + di; mse leia(reg); menquanto I 1; enquanto I < 7 fa ca prod passag [I] distancia [I] escreva (Tipo , aviao [I], produtividade, prod); I I + 1; menquanto
para J de 1 ate 5 fa ca S0 para K de 1 ate 4 fa ca S S + A[I;K] B[K;J] mpara R[I;J] S mpara mpara escreva R
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 fa ca 165
88-08, Pedro Kantek
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 m aquina de escrever capaz de realizar todas as tarefas triviais do manuseio de textos e tamb em algumas outras facilidades desejadas. A import ancia deste assunto, em um curso de l ogica de constru ca o de algoritmos est a em que para manusear texto, desenvolvem-se in umeras t ecnicas muito u teis para a interpreta ca o e manuseio de dados na forma alfab etica, que n ao necessariamente precisam ser textos. Um texto, nesta acep ca o e um conjunto indeterminado de caracteres. Pode ser uma vari avel cadeia (limitada a 255), ou um vetor de caracteres, neste caso, sem limite. Alguns caracteres inclu dos no meio do texto podem format a-lo de maneira a mudar seu visualquando o imprimirmos. Um exemplo deste tipo de caracter s ao o RETORNO DE CARROe o MUDANCA DE LINHA. Quando colocados juntos no meio de um texto, eles causam a mudan ca de linha e o retorno ao in cio da pr oxima linha. Os caracteres ASCII referentes: retorno de carro: CR = carriage return = C odigo 13 do ASCII LF = line feed = C odigo 10 do ASCII
88-08, Pedro Kantek
166
CAP ITULO 9. REGISTROS Em outros textos, cada linha tem no seu in cio, uma vari vel num erica que indica qual o comprimento da linha, e neste caso n ao h a necessidade de usarem-se delimitadores.
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.UVAem 20 posi co es, devemos inserir 1 (n2) bloco de 3 (b2) espa cos, e 2 (n1) blocos de 2 (b1) espa cos no texto. O local de inser c ao ca a crit erio do usu ario, mas pode-se sugerir a seguinte coloca c ao: (. signica espa co em branco) IVO...VIU....A...UVA.
Exerc cio 181 Imagine um algoritmo capaz de ler uma entrada formada por at e 60 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 176 Escreva um algoritmo que leia uma frase terminada por um ponto, com
tamanho inferior a 80 caracteres, e um u nico espa co em branco separando cada palavra, e escreva o n umero de palavras da frase. DESAFIO: a quantidade de palavras femininas (i. e: terminadas em A).
Exerc cio 182 Escrever um algoritmo que leia uma linha de caracteres (m aximo de 60)
contendo uma frase (palavras separadas por branco). O algoritmo deve imprimir as palavras cujo comprimento for maior que 6 caracteres.
Exerc cio 177 Denir algoritmo capaz de receber uma frase e converter as letras
min usculas lidas em mai usculas, imprimindo este resultado. Exemplo: Se for lida a frase Ivo viu a LARANJA, a resposta ser a IVO VIU A LARANJA.
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. N ao quebrar palavras.
Exerc cio 184 Dado um texto, na forma de um vetor e formado por min usculas e
mai usculas indistintamente, imprimi-lo todo em mai usculas.
Exerc cio 178 Denir um algoritmo que leia uma frase de at e 80 caracteres, alinhada
` a esquerda e determine e escreva: 1. Qual o n umero da maior palavra da frase 2. Quantos caracteres ela tem de comprimento. Exemplo: Se for lida a frase Maria comeu a melancia, o algoritmo dever a imprimir 4,8.
Exerc cio 185 Dado um texto, na forma de um vetor e formado s o por min usculas,
imprimi-lo colocando cada primeira letra de todas as palavras em mai usculos.
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 179 Escrever um algoritmo para criptografar textos, usando o algoritmo da
Criptograa de Cezar, para k=3.
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 e vari avel embora xo no texto a criptografar.
Exerc cio 180 Justica c ao: Dada uma linha com um comprimento cl, e supondo uma
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 justica c ao, e os bons datil ografos fazem isto quase instintivamente. Por exemplo,. se tivermos a frase IVO.VIU.A.UVA(. e branco), que tem um cf de 13, para ser impressa em uma linha de 20 (cl=20), alinhada a esquerda e a direita, como fazer isto ? Um poss vel ataque para o problema e estabelecer: nb = n umero de brancos (nb = cl - cf). No caso: 20 - 13 = 7 np = n umero de palavras. No caso np = 4
vers ao de 10 de fevereiro de 2008
Exerc cio 188 Dado um texto, sem nenhum caracter de controle, na forma de um
vetor, imprimi-lo com tamanho de linha vari avel, informado no in cio do programa, alinhado a esquerda. N ao quebrar palavras.
Exerc cio 189 Dado um texto, sem nenhum caracter de controle, na forma de um
vetor, imprimi-lo com tamanho de linha vari avel, informado no in cio do programa, alinhado ` a direita. N ao quebrar palavras.
88-08, Pedro Kantek
167
168
Exerc cio 190 Suponha que todas as palavras terminadas em as ao femininas e todas
as terminadas em os ao masculinas. Dena um algoritmo que leia uma frase de no m aximo 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 s ao masculinas 3. Quantas s ao femininas Imprimir estes resultados ao nal
i i + tamanho(P) {pode ser +1. Depende da deni ca o} sen ao i++ CONTADOR++ mse menquanto m algoritmo
Este algoritmo e claramente ruim, tem complexidade no pior caso de O(tamanho(P ) tamanho(T )). Acompanhe no exemplo, a quantidade de testes que e feita: T=o galo o gato e a gata gaguejaram e P=gato QUANTIDADE DE TESTES = 38
Exerc cio 191 Imagine um algoritmo capaz de ler uma entrada formada por at e 60 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.
Algoritmos ecientes
H a toda uma fam lia de algoritmos que diminuem o tempo de processamento nesta tarefa. Todos realizam algum tipo de pr e-processamento sobre as cadeias T e/ou P. Rabin-Karp
For ca Bruta
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
A id eia deste algoritmo e converter a cadeia em n umeros (ou melhor dizendo, e usar a interpreta ca o num erica das cadeias) para efeito da busca. Dado que, caracteres em computador s ao representados usando bits, sempre ser a poss vel este procedimento sem perda de generalidade. O algoritmo come ca calculando a representa ca o decimal de P, o que ocupa p d gitos. Depois, um vetor de mesmo comprimento de T e calculado. A cada p d gitos de P a sua representa ca o decimal e calculada e este valor e guardado. O processo e r apido. A cada deslocamento em T, basta excluir o d gito de mais alta ordem e acrescentar um novo d gito a ` direita. A diculdade neste caso e quanto ao tamanho dos n umeros envolvidos, sobretudo se P e grande. A maneira de contornar esta diculdade e usar a aritm etica dos ponteiros do rel ogio, com o m odulo q . Este valor usualmente e escolhido de forma que 10q caiba em uma palavra do computador de modo a poder fazer toda a aritm etica inteira. Entretanto, esta escolha introduz a possibilidade de acertos esp urios. Isto ocorre quando houver a coincid encia de P mod q com T[i..j] mod q, sem que haja P = T[i..j]. Entretanto, pela escolha judiciosa de q , pode-se garantir que haja poucos acertos esp urios. Seja como for, a igualdade num erica n ao garante a localiza ca o de P em T. H a que se fazer o testye expl cito a seguir. A vantagem do algoritmo de Rabin-Karp e excluir a grande maioria de candidatos em uma busca linear simples. Aut omatos de correspond encia O aut omato nito e uma m aquina de estados composto por um conjunto nito de estados, um estado inicial, um alfabeto nito de entrada e uma fun ca o Q em Q, chamada fun ca o de transi ca o. Veja-se um exemplo, extra do de CLR p ag. 726 (vers ao brasileira) Cada palavra P tem o seu pr oprio aut omato de busca. Depois que o aut omato foi constru do ele e eciente: examina-se cada caractere de T uma u nica vez. O problema e que a constru ca o do aut omato pode ser demorada principalmente se e grande. Veja-se a seguir um aut omato para pesquisar P=ababaca, extra da da mesma obra, p ag. 727.
88-08, Pedro Kantek
Algoritmo For ca Bruta para busca em cadeias (padr ao P, texto T) i1 CONTADOR 0 enquanto (i < tamanho(T)-tamanho(P)) fa ca aux 0; j 1 enquanto (j tamanho(P)) (T[aux + i] = P[j]) fa ca CONTADOR++ aux++ j++ menquanto se j = tamanho(P) + 1 ent ao escreva ocorr encia em ,i 169
88-08, Pedro Kantek
170
Algoritmo de Boyer-Moore
Este algoritmo, descrito na d ecada de 70, usa 3 artif cios aceleradores que permitem aumentar o tamanho do salto a busca e feita da esquerda para a direita Pr e-compila uma tabela de ocorr encias de caracteres Pr e-compila uma tabela de ocorr encias de prexos no padr ao. Os algoritmos s ao: (refer encia para todos CLR, ingl es, pag 870) 1: Algoritmo BOYER-MOORE (texto T, padrao P) 2: tabela1 CARACTERRUIM (padr ao P, alfabeto S) 3: tabela2 SUFIXOBOM (padr ao P) 4: i 0 5: enquanto (i tamanho(T) - tamanho(P)) fa ca 6: j tamanho(P) 7: enquanto (j > 0) P[j] = T[i + j] fa ca 8: j 9: menquanto 10: se (j = 0) ent ao 11: escreva ocorr encia em ,i 12: i i + tamanho(P) 13: sen ao 14: i i + MAX ((j-tabela1[T[i+j]]), tabela2[j])
vers ao de 10 de fevereiro de 2008
Algoritmo CARACTERRUIM (padr ao P, alfabeto S) {alfabeto S cont em todos os caracteres de T (n ao repetidos)} 2: para cada caracter do alfabeto fa ca 3: tabela1[indice do caracter] 0 4: mpara 5: para j de 1 at e tamanho(P) fa ca 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 e construida pela fun ca o SUFIXOBOM, cujo algoritmo e: 1: Algoritmo SUFIXOBOM (padr ao P) 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 e tamanho(P) fa ca 6: j tamanho(P) - tabelaPILINHA [LM] 7: se (tabela2 [j] > LM - tabelaPILINHA [LM]) ent ao 8: tabela2[j] LM - tabelaPILINHA [LM] 9: mse 10: mpara 11: retorne tabela2 12: m algoritmo
1:
Fun ca o PREFIXO (padr ao P) tabelaPREFIXOS 0..0 (o mesmo tamanho de P) 3: k 0 4: para q de 2 at e tamanho(P) fa ca 5: enquanto (k > 0) (P[k+1] = P[q]) fa ca 6: k tabelaPREFIXOS [k] 7: menquanto 8: se P[k+1] = P[q] ent ao 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 padr ao P=gato aqui, o n umero de testes e de apenas 10. Compare com os 38 da FORCA BRUTA. Vejamos um exemplo:
1: 2:
P O R Q U E 6 6 6 6 6 1
vers ao de 10 de fevereiro de 2008
171
172
CAP ITULO 9. REGISTROS Resposta 7 (contra 41 da for ca bruta) 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 =
vers ao de 10 de fevereiro de 2008
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 resist encias ligadas em paralelo, podemos substitu -las por uma u nica resist encia chamada EQUIVALENTE, que tem uma resist encia calculada pela f ormula: 1 1 1 1 = + + ... + Req R1 R2 Rn Denir um algoritmo que leia um conjunto indeterminado de resist encias, suponha-as ligadas em s erie, calcule e escreva a resist encia equivalente do conjunto. Dados terminam quando for lido um valor igual a zero. Por exemplo, se forem lidos os valores de resist encias iguais a 5, 10, 1 e zero, a resposta da resist encia equivalente ser a 10/13.
Exerc cio 193 De acordo com o regulamento do servi co postal americano, n ao pode seguir pelo correio, nenhum pacote cujo comprimento (maior dimens ao) somado ` a amarra c ao seja superior a 72 polegadas. Amarra c ao e o comprimento do menor barbante que possa toda a volta ao pacote. Construa um algoritmo portugol que leia 3 dimens oes e escreva PODEse PODEse n o pacote puder ser mandado via correio, ou NAO ao puder. As dimens oes est ao em cent metros, e deve ser usada a convers ao: 1 polegada = 2,5 cm. Exerc cio 194 Escreva uma fun c ao capaz de receber dois n umeros (inteiros) e devolver
a m edia geom etrica entre eles (real).
Exerc cio 195 Escreva uma fun c ao capaz de receber um valor representativo de uma
dist ancia medida em polegadas, e retorne a mesma dist ancia medida em metros (1pol = 2,54cm)
Exerc cio 196 Suponha um algoritmo para c alculo de um D.V. para c odigos de 4
d gitos assim formulado: c odigo XYZT-d c alculo de Q Q = X + Y + Z + T c alculo de d d = Q mod 10 Escreva um algoritmo para calcular o DV de uma s erie de c odigos lidos, na forma de 4 inteiros positivos. Para cada c odigo lido, o algoritmo deve imprimi-lo junto com o DV. Os dados terminam quando for lido um n umero negativo. O c alculo do DV deve ser feito por uma fun c ao.
Exerc cio 197 Suponha um algoritmo para c alculo de um D.V. para c odigos de 4
d gitos assim formulado:
88-08, Pedro Kantek 88-08, Pedro Kantek
173
174
CAP ITULO 9. REGISTROS c odigo XYZT-d c alculo de Q Q = 2X + 3Y + 4Z + 5T c alculo de d d = Q mod 7 Escreva um algoritmo para calcular o DV de uma s erie de c odigos lidos, na forma de 4 inteiros positivos. Para cada c odigo lido, o algoritmo deve imprimi-lo junto com o DV. Os dados terminam quando for lido um n umero negativo. O c alculo do DV deve ser feito por uma fun c ao. 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 n umero de
matr cula dos alunos das FACULDADES NEUTRAS. Tal n umero e formado por 4 d gitos e o vericador e assim calculado: n umero: d1 d2 d3 d4 res = (d1 * 2) + (d2 * 3) + (d3 * 5) + (d4 * 7) d gito = resto da divis ao de res por 9. O algoritmo deve ler uma s erie de n umeros e para cada um, deve imprimir o n umero e o correspondente d gito. A s erie termina quando for lido o n umero 0.
Exerc cio 198 Suponha um algoritmo para c alculo de um D.V. para c odigos de 4
d gitos assim formulado: c odigo XYZT-d c alculo de Q Q = 3X + 5Y + 7Z + 9T c alculo de w w = Q mod 11 c alculo de d Se w = 10, ent ao d = 0, sen ao d = w. Escreva um algoritmo para calcular o DV de uma s erie de c odigos lidos, na forma de 4 inteiros positivos. Para cada c odigo lido, o algoritmo deve imprimi-lo junto com o DV. Os dados terminam quando for lido um n umero negativo. O c alculo do DV deve ser feito por uma fun c ao.
9.2.1
Calend arios
Exerc cio 199 Suponha um algoritmo para c alculo de um D.V. para c odigos de 4
d gitos assim formulado: c odigo XYZT-d c alculo de q1 q1 = 2X + 3Z c alculo de q2 q2 = 2Y + 3T c alculo de Q q = q1 + q2 c alculo de d d = q mod 10 Escreva um algoritmo para calcular o DV de uma s erie de c odigos lidos, na forma de 4 inteiros positivos. Para cada c odigo lido, o algoritmo deve imprimi-lo junto com o DV. Os dados terminam quando for lido um n umero negativo. O c alculo do DV deve ser feito por uma fun c ao.
Exerc cio 200 Denir algoritmo capaz de gerar um d gito vericador alfab etico, para
um c odigo formado por 7 d gitos num ericos. A regra deve ser: dv = ((d1 8) + (d2 7) + (d3 6) + (d4 5) + (d5 4) + (d6 3) + (d7 2)) mod 26 dv deve ser transformado de letra em n umero e a seguir impresso. O algoritmo deve ler in umeros c odigos (na forma cadeia[7]) at e ler a cadeia 0000000.
Exerc cio 201 Denir algoritmo que leia um conjunto indeterminado, mas menor do
que 129, de triplas formadas por: n umero do bimestre: inteiro de 1 a 4 n umero do aluno: inteiro de 1 a 32 Nota do aluno: real de 0,0 a 10,0. Os dados terminam quando for lido um n umero de bimestre diferente daqueles valores v alidos. Ap os ler o conjunto, o algoritmo deve imprimir: 1. Qual a m edia anual de cada aluno (32 valores) 2. Qual a m edia da turma em cada bimestre (4 valores) 3. Qual o n umero do aluno e o n umero do bimestre em que ocorreu a MAIOR NOTA absoluta do ano.
vers ao de 10 de fevereiro de 2008
Em 1347 a peste negra devastou a Europa. Esta doen ca e na verdade uma pneumonia que causa bub oes (incha cos nas axilas e virilhas), sendo tamb em chamada de peste bub onica. Os bub oes eram caldos de cultura da bact eria causadora, que tamb em era transmitida por pulgas dos ratos. O nome negra, vem do fato de que (supostamente) a carne das v timas enegrecia pouco antes da morte. A hist oria come ca quando uma tribo Mogol de nome Kipchak resolve atacar um posto comercial genov es no Mar Negro. Usaram para isso uma das primeiras armas biol ogicas que a hist oria registra: cad averes humanos contaminados com a doen ca eram atirados atrav es de catapultas para dentro da cidade. Esta embora armada e provisionada para resistir ao cerco, ao ver-se impotente para enfrentar esta arma resolveu fugir de navio de volta a G enova, abandonando o posto comercial. Junto com eles, foi a doen ca. Durante os 4 anos seguintes a peste foi para a Sic lia, Africa, It alia, Espanha, Fran ca, Inglaterra e depois toda a Europa. Vinte e cinco milh oes de pessoas, um quarto da popula ca o europ eia, morreram. Dois s eculos passariam antes que a popula ca o retornasse ao n umero de 100 milh oes. A devasta ca o da peste negra encerrou um ciclo na hist oria da humanidade. Levantes sociais e pol ticos espoucaram, a m ao de obra escasseou, o campo foi abandonado, os alimentos rarearam. At e aqui, o universo era governado por regras estabelecidas por duas autoridades: Arist oteles (384322 aC) e o eg pcio Cl audio Ptolomeu (100-170 dC). No mil enio anterior, a Igreja havia mesclado essas regras a ` sua vis ao de mundo, resultando um bloco homog eneo: Deus havia criado a Terra no centro do Universo. Estrelas e planetas giravam em o rbitas circulares em volta da terra. Oito esferas conc entricas feitas de material imut avel e eterno continham a Lua, o Sol, Marte, Merc urio, J upiter, V enus e Saturno. A u ltima esfera continha as estrelas. Apenas na terra a mat eria se decompunha e morria. Nas esferas tudo era eterno. Veja-se o reexo disso nos nomes dos dias de semana, nos principais idiomas ocidentais: Corpo Celeste Sol Lua Marte Merc urio J upiter V enus Saturno Ingl es Sunday Monday Tuesday Wednesday Thursday Friday Saturday Franc es dimanche lundi mardi mercredi jeudi vendredi samedi Italiano domenica lunedi martedi mercoledi giovedi venerdi sabato Espanhol domingo lunes martes mi ercoles jueves viernes s abado
A rea ca o a ` peste foi um novo cen ario que buscou enterrar e esquecer aquele o mais r apido poss vel: a renascen ca. A It alia, pela localiza ca o central iniciou o movimento do com ercio entre oriente e ocidente. Nasceram aqui os primeiros sistemas administrativos, o conhecimento nanceiro e os bancos. A ci encia (a matem atica) come cou a ser usada:
88-08, Pedro Kantek
175
176
CAP ITULO 9. REGISTROS na arquitetura, no com ercio, na cartograa. Sabemos hoje que a Terra demora 365 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 diferen ca de 11 minutos e 14 segundos). Com a ado ca o do calend ario eg pcio por J ulio C ezar no s eculo I dC, esta disparidade foi se acumulando ano ap os ano, afastando as datas do calend ario das esta co es. Em meados do s eculo XV ja havia dez dias de atraso. Em 1475 o papa Sisto IV pedira um estudo para determinar a causa do erro. N ao houve quem conseguisse compatibilizar Arist oteles e Ptolomeu com o calend ario. Podiam garantir estabilidade pol tica, mas estavam cada vez mais incapazes de calcular a data da P ascoa corretamente. Cop ernico (1473-1543) come cou a desenvolver em 1506 um sistema astron omico baseado em suas pr oprias observa co es e c alculos. Na tentativa de tirar a Terra do centro do universo e colocar a o Sol, a diculdade era explicar como as coisas n ao ca amem dire ca o ao sol. Achava-se na epoca, que a mat eria era naturalmente atra da para o centro do universo (embaixo da terra). Quando recrutado pelo secret ario do papa, em 1514 para resolver o problema do calend ario, Cop ernico viu-se num dilema: ou rearmava a teoria que a vaidade, o medo e a B blia haviam montado (estamos no centro do universo) e n ao resolvia o problema, ou chutava o pau da barraca para propor um novo calend ario. Ele, que bobo n ao era, recusou o convite, embora continuando a estudar o problema em segredo. Convencido pela corre ca o de seus c alculos e encorajado por amigos, esbo cou um rascunho de suas id eias em 1530. Este escrito provocou rea co es mistas. Finalmente, em 1543, autorizou a publica ca o de De Revolutionibus Orbium Coelestium, comumentemente conhecido como As Revolu co es. Cop ernico recebeu o primeiro exemplar em 24 de maio de 1543 e morreu poucas horas depois. O pr oximo personagem desta hist oria e Galileu Galilei. Pulamos Giordano Bruno, 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 Arist oteles que armara chegar a mais pesada antes. H a d uvidas se isso de fato ocorreu. Mais modernamente sup oe-se que tenha sido uma experi encia intelectual apenas. O argumento intelectual e not avel1 Este e o melhor jeito de fazer f sica, ` a la Einstein... Galileu freq uentou diversas universidades na It alia, sempre conitando com os demais professores. Escreveu in umeros livros, inventou o telesc opio 2 Ao usar os telesc opios, viu quatro sat elites orbitando J upiter e os an eis de Saturno e relatou isso no livro Sidereus Nuncius (O Mensageiro Celeste). Escreveu de leve, ainda sem adotar completamente o modelo copernicano. A Igreja j a come cou a enviar mensagens de que n ao concordava com as id eias desse livro. Em 21 de dezembro de 1614, o padre Tom as Caccini, em Floren ca criticou Galileu aformando que se Deus parou o sol a pedido de Josu e para que os israelitas derrotassem os amoritas, como o sol poderia ser o centro do universo ? O padre foi mais longe: acusou Galileu, a matem atica e todos os matem aticos de hereges pol ticos e religiosos. A defesa de Galileu e perfeita: N ao me sinto na obriga ca o de acreditar que o mesmo Deus que nos dotou de sentidos, raz ao e intelecto, tencionava descartar o uso destes e por algum outro meio nos dar o conhecimento que com eles podemos obter [...] A
jogar as 2 bolas e suponha que Arist oteles estava certo: a mais pesada chega antes. Agora suponha as mesmas duas bolas por em ligadas por o. Por um lado pode-se argumentar que a mais leve 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 o, que passa a ser mais pesada que a bola anterior. O resultado e que agora as bolas chegam antes do que chegavam. Para que ambos os racioc nios estejam certos e est ao, a u nica possibilidade e elas chegarem juntas. 2 Ele e assim considerado pois construiu os maiores telesc opios em uso na Europa, ultrapassando seus modelos anteriores por diversas vezes.
vers ao de 10 de fevereiro de 2008
1 Suponha
CAP ITULO 9. REGISTROS inten ca o do Esp rito Santo e ensinar-nos como se vai para o c eu e n ao como o c eu funciona. Em 5 de mar co de 1616 o cardeal Belarmino da Santa Inquisi ca o decretou que o sistema copernicano era falso e err oneo armando que Deus xou a Terra em seus alicerces para jamais ser movida. Galileu nunca se conformou com este decreto, buscando incessantemente a sua revoga ca o. Em 1624, obteve do papa uma autoriza ca o para escrever seu livro mais famoso Di alogo sobre os dois m aximos sistemas do mundo, que foi publicado em 1632 e recebido com louvores por acad emicos de toda a Europa. Pouco depois, foi acusado pela inquisi ca o de herege. N ao pode ver as acusa co es ou as provas. Ficou no dilema: ou se retratava ou morria como Giordano Bruno. Em decis ao que alguns criticaram como prejudicial a ci encia, ele resolveu pela vida. Em 22 de junho de 1633, fez uma longa retrata ca o. Diz a lenda que depois de terminada a leitura, ao se erguer da posi ca o de joelhos onde estava,Galileu teria dito E pur, si muove . S o em 1757 a Igreja retirou a proibi ca o sobre a obra. Em 1992, o papa Jo ao Paulo II reconheceu formalmente o erro da Igreja. Depois vem Isaac Newton, um dos 5 maiores cientistas que a Humanidade produziu (decomposi ca o da luz, c alculo diferencial e integral, gravita ca o entre outros). Ao escrever sobre a lei universal da gravita ca o, ele acabou de consolidar o modelo copernicano, que j a havia sido engordado com as leis de Kepler sobre o deslocamento dos planetas.
Novas propostas
Em 1954, a ONU prop os um novo calend ario. Ele tem 52 semanas de 7 dias = 364 dias. O dia 365 e no nal do ano e n ao tem n umero nem nome. Os quadrimestres sempre tem 31 + 30 + 30 + 30 dias. Outra proposta foi o do calend ario xo, com 13 meses de 28 dias cada um. Aqui, as segundas sempre ser ao dias 1, 8, 15 e 22. Falta 1 dia, que ca no nal do ano. O dia do bissexto e ap os 28 de junho. O novo m es e o SOL que ca entre junho e julho. Finalmente, h a uma nova proposta de estabelecer um tempo mundial, (desvinculado do sol), orientado a neg ocios e com divis oes decimais.
88-08, Pedro Kantek
177
178
CAP ITULO 9. REGISTROS Neste segundo caso, ser a muito bom se o dono do sistema disponibilizar um balance line. Neste caso, o operador preparar a uma massa de atualiza ca o (possivelmente usando o notepad ou similar), far a as verica co es e corre co es, e quando a massa estiver OK, submete-la- a, eventualmente via upload para atualiza ca o serializada. Ao inv es de 400 transa co es, o operador ter a que se preocupar com apenas 1. O resto ca por conta do algoritmo Balance Line.
Regra do bissexto
Sejam R4 resto da divis ao do ano por 4; R100 resto da divis ao do ano por 100 e R400 resto da divis ao do ano por 400. SE R4=0 ((R100 = 0) (R400 = 0)) o ano e bissexto sen ao n ao e.
Exerc cio 203 Imagine um cilindro cujo di ametro da base tem o mesmo comprimento
de sua altura. Dentro dele est a inscrita uma esfera, cujo raio e o mesmo raio da base do cilindro. Escrever algoritmo que leia uma s erie de raios, e para cada um deles, calcule e escreva a diferen ca de volume entre o cilindro e a esfera. Os raios s ao lidos em cm e a diferen ca deve ser expressa em cm3. O ultimo raio e zero, e indica m. Denir duas fun co es: uma para o c alculo do volume da esfera, e outra para o c alculo do volume do cilindro. Vesf era = 4 R3 3
Vcilindro = R2 h
Exerc cio 204 Denir algoritmo que calcule e escreva a soma dos primeiros 50 n umeros
pares acima de 1000 (1000 inclu do), com os 60 primeiros n umeros mpares acima de 500 (501 includo).
Exerc cio 205 Denir algoritmo que determine se uma seq u encia contendo 1000 ele ou NAO ESTA classicado em ordem descendente. Ao nal do algoritmo, mentos, ESTA este deve imprimir as mensagens EM ORDEMou FORA DE ORDEMconforme o caso.
179
180
CAP ITULO 10. EXERC ICIOS PRATICOS: 003 -RAIZ QUADRADA tamb em pode ser negativo, mas com o mesmo valor absoluto. Se n ao for poss vel obter a igualdade (y 2 = x), espera-se que y 2 seja menor que x e t ao pr oximo quanto poss vel. As etapas do algoritmo s ao: 1. Pegue uma folha de papel e escreva uma cruz grande, divindo a a rea de trabalho em 4 quadrantes.
Cap tulo 10
2. Escreva o n umero do qual se quer achar a raiz quadrada (a quem chamaremos ), no quadrante superior esquerdo. Ao nal do processo, a raiz vai aparecer no quadrante superior direito. 3. Separe o n umero em grupos de 2 d gitos, a partir de sua v rgula decimal, a ` direita e a ` esquerda, completando com zeros n ao signicativos quando necess ario. 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
Suponha que sua vida dependa de obter a raiz quadrada de um determinado n umero, por exemplo 54.768,87. O que voc e faria ? 1. A solu ca o mais obvia seria buscar uma calculadora capaz de extrair uma raiz quadrada. Por azar de nossa simula ca o, n ao h a calculadoras, computadores, celular, etc. Nenhuma traquitana dispon vel. 2. Considerando que a opera ca o de multiplica ca o e razoavelmente conhecida, outra possibilidade, seria avan car na base da tentativa-e-erro, usando o seguinte algoritmo. (a) Chute um n umero (b) Multiplique-o por ele mesmo (c) Se o resultado for igual ao n umero procurado, parab ens! (d) Se for menor, aumente o chute (e) Se for maior, diminua o chute (f) Volte ` a etapa da multiplica ca o 3. Outra possibilidade, esta trazida pela teoria dos logaritmos (n ao confunda logaritmo com algoritmo) e achar o logaritmo do n umero dado, dividir este valor por 2 e depois achar o antilogaritmo. Por exemplo, se n ao soubermos que 64 = 8, podemos fazer o log2 64 = 6. Dividindo 6 2 = 3. E 23 = 8. O problema est a que poucas pessoas tem uma t aboa de logaritmos na cabe ca, ou mesmo conhecem as propriedades dos logaritmos. 4. A resposta exata vem atrav es do algoritmo de extra ca o de raiz quadrada, posto ` a nossa disposi ca o pela matem atica. Algoritmo para raiz quadrada Por deni ca o, dado y = x, onde x e n ao negativo, deve-se achar o real y , tal que y 2 = x. Embora o n umero localizado seja positivo, deve-se lembrar que em tese ele 181
Esta tabela e importante pois todos os grupos acima formados s ao menores do que 100. 5. Busque o n umero que elevado ao quadrado gere um n umero menor ou igual do que G1. Coloque este n umero no quadrante superior direito. Chame-se este n umero 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 n umero A2 1 de P1 . 7. Fa ca G1 menos P1 e escreva o resultado da subtra ca o embaixo de P1 (no quadrante G1.G2.G3. ... A P1 inferior esquerdo). Chamemos este n umero de T1 . Fica T1 8. (aaa) Baixe o pr oximo grupo (neste caso o G2 , colocando-o ao lado de T1 , junte-os e obtenha um novo n umero (T1 G2 ). 9. Dobre o n umero A1 (multiplicando-o por 2) e escreva-o no quadrante inferior direito, embaixo de A1 . Chame-se este n umero de D1 . 10. (***) Divida (divis ao inteira) T1 G2 por D1 10. Este resultado deve ser escrito em 3 lugares: Ao lado de A1 , j a que ele e o pr oximo n umero da raiz Ao lado de D1 . Imediatamente depois, escreva um sinal de (vezes) Ao lado do sinal de (vezes) escrito acima 11. Calcule a multiplica ca o posta acima. Se o resultado for menor ou igual a T1 G2 , prossiga. Se for maior, OPS!, Volte a ` etapa (***) e repita o processo com um resultado uma unidade menor. 12. Escreve-se o resultado da multiplica ca o embaixo de T1 G2 e efetua-se a subtra ca o. 13. Volte a (aaa)
88-08, Pedro Kantek
182
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 --------------
CAP ITULO 10. EXERC ICIOS PRATICOS: 003 -RAIZ QUADRADA / = x = --------------
01 47 96 50 00 00 00 ============ -1 ----------0 47 -44 ------------3 396 -241 ---------------155 15550 -14556 ------------------994 99400 -97296 ---------------------2104 210400 -0 ------------------------210400 21040000 Treino
10.2
Exerc cio 1
Simule a execu ca o do algoritmo acima da raiz quadrada para os valores abaixo e em cada um, descubra o quinto n umero que e subtra do no algoritmo. Por exemplo, no exemplo dado acima, o quinto n umero seria 97296 e no que zemos junto seria 355925. 24681 52543 26008 SUBTRA Nos 3 casos, ache o QUINTO NUMERO QUE E IDO na parte esquerda da tabela acima. 1 2 3
10.3
Exerc cio 2
Simule a execu ca o do algoritmo acima da raiz quadrada para os valores abaixo e em cada um, descubra o quinto n umero que e subtra do no algoritmo. Por exemplo, no exemplo dado acima, o quinto n umero seria 97296 e no que zemos junto seria 355925. 44431 28819 37226 SUBTRA Nos 3 casos, ache o QUINTO NUMERO QUE E IDO na parte esquerda da tabela acima. 1 2 3
10.4
Exerc cio 3
-------------
Simule a execu ca o do algoritmo acima da raiz quadrada para os valores abaixo e em cada um, descubra o quinto n umero que e subtra do no algoritmo. Por exemplo, no exemplo dado acima, o quinto n umero seria 97296 e no que zemos junto seria 355925. 38692 26660 55802 SUBTRA Nos 3 casos, ache o QUINTO NUMERO QUE E IDO na parte esquerda da tabela acima. 1 2 3
----------------
-------------------
184
10.5
Exerc cio 4
Simule a execu ca o do algoritmo acima da raiz quadrada para os valores abaixo e em cada um, descubra o quinto n umero que e subtra do no algoritmo. Por exemplo, no exemplo dado acima, o quinto n umero seria 97296 e no que zemos junto seria 355925. 46951 41068 14107 SUBTRA Nos 3 casos, ache o QUINTO NUMERO QUE E 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
185
186
CAP ITULO 11. EXERC ICIOS PRATICOS: 004-INTRODUC AO 2. 10 mod 2 = 3. 100 div 33 = 4. 100 mod 33 = . . . . . . . . .
Cap tulo 11
11.1.1
Um algoritmo e um m etodo nito, escrito em um vocabul ario simb olico xo, regido por instru co es precisas, que se movem em passos discretos, cuja execu ca o n ao requer insight, esperteza, intui ca o, intelig encia, ou clareza e lucidez e que mais cedo ou mais tarde chega a um m. (David Berlinski) O algoritmo e o que est a por tr as de todos os programas de computadores. Fazendo
Dene-se o m aximo divisor comum entre dois n umeros inteiros A e B como sendo o maior n umero inteiro que divide simultaneamente tanto A como B sem deixar resto. Por exemplo, se quisermos achar o MDC entre 10 e 14, teremos que achar os divisores de 10 (que s ao: 1, 2, 5 e 10) e de 14 (que s ao 1, 2, 7, 14) e localizar o maior n umero que e comum a `s duas listas, no caso 2. Assim, 2 e o MDC entre 10 e 14. Para treinar Informe qual o MDC entre 1. M DC (15, 18) = 2. M DC (20, 40) = 3. M DC (17, 31) = . . . .
uma analogia com a Rose (a empregada robot da fam lia Jetson). Quando ela apresenta uma bela torta de ma ca s, a torta e o produto nal, a Rose e o computador e a receita da torta e o algoritmo. Algoritmos s ao bem antigos na hist oria do mundo. Provavelmente o mais antigo que e conhecido e devido a Euclides. Para poder observ a-lo, vamos relembrar uma opera ca o da aritm etica b asica. Trata-se da divis ao inteira. Quando os n umeros inteiros A e B s ao divididos em divis ao inteira, dois resultados aparecem: o quociente e o resto. Por exemplo, na divis ao inteira 10 7, o quociente (resultado) e 1, enquanto o resto e 3. Nos nossos algoritmos, o quociente da divis ao inteira vai ser representado pela palavra div , j a que o s mbolo e mesmo a barra simples / car ao reservados para a divis ao real. Portanto poderemos armar que 10 div 7 = 1 Da mesma maneira, o resto da divis ao inteira, ser a representado pela palavra mod, e aqui podemos armar que 10 mod 7 = 3 . Para treinar Procure calcular e responder: 1. 10 div 2 = . 187
4. M DC (2, 11) =
Do exerc cio anterior percebeu-se que quando um dos n umeros e primo, o MDC e sempre 1. Isto decorre da deni ca o dos n umeros primos: Um n umero inteiro e primo, quando seus u nicos divisores inteiros s ao a unidade e ele pr oprio.
11.1.2
Este algoritmo sempre e chamado com dois inteiros. Note que o primeiro n umero deve ser maior ou igual do que o segundo. Se esta condi ca o n ao estiver satisfeita, os n umeros devem ser INVERTIDOS antes de serem entregues ao algoritmo. Este algoritmo recursivo e devido a Euclides 1: inteiro fun ca o MDC(inteiro a, b) {obrigatoriamente: a b} 2: se b = 0 ent ao 3: devolva a 4: \\ esta e outra maneira de identicar coment arios 5: sen ao 6: devolva MDC(b, (a mod b)) 7: mse 8: m {fun ca o} Suponha que far-se- a a chamada ao algoritmo acima, como segue:
88-08, Pedro Kantek
188
CAP ITULO 11. EXERC ICIOS PRATICOS: 004-INTRODUC AO 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 e 3
11.1.6
Exerc cio 3
1224
Chame o algoritmo mdc com os valores 1370 Responda no quadro pr oprio, qual o MDC pedido
11.1.3
Na nossa vida, tamb em usamos muitos algoritmos. Aqui eles t em uma caracter stica t ao restrita como os algoritmos computacionais, porque supostamente eles ser ao seguidos por seres inteligentes. Mas, vale a experi encia: acompanhe o algoritmo que um de n os poderia usar para ir do Unicenp at e a Pra ca Tiradentes 1: Algoritmo para ir do Unicenp at e a Pra ca Tiradentes 2: se tenho dinheiro ? ent ao 3: se tenho pressa ? ent ao 4: chamo um taxi 5: mando ele ir para a Pra ca 6: sen ao 7: procuro uma carona OU 8: vou para o ponto do onibus 9: ao desembarcar, pergunto qual a dire ca o da Pra ca 10: sigo andando at e chegar nela 11: sen ao 12: saio do Unicenp pela JK, pegando ` a direita 13: pego a BR277 ` a direita, sigo at e a Pe Agostinho 14: pego a Pe Agostinho ` a esquerda e sigo at e a Al. Cabral 15: viro ` a direita at e a Carlos de Carvalho 16: viro ` a esquerda e sigo at e a Pra ca Tirandentes 17: mse 18: mse
11.1.8
Exerc cio 5
1434
Chame o algoritmo mdc com os valores 1659 Responda no quadro pr oprio, qual o MDC pedido
11.1.9
Exerc cio 6
1471
Chame o algoritmo mdc com os valores 1777 Responda no quadro pr oprio, qual o MDC pedido
11.1.4
Chame o algoritmo mdc com os valores 1987 1669 Chame o algoritmo mdc com os valores 1808 Responda no quadro pr oprio, qual o MDC pedido
11.1.5
Exerc cio 8
1234
Chame o algoritmo mdc com os valores Responda no quadro pr oprio, qual o MDC pedido Responda no quadro pr oprio, qual o MDC pedido
189
190
11.1.12
1876
Exerc cio 9
1721
11.1.13
1724
Exerc cio 10
1707
11.1.14
1 2 3 4 5 6 7 8 9 10 1 2 2 1 3 1 16 2 1 1
Respostas
191
192
CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA sendo disponibilizados no mercado, signicando que o jogo poderia ser rodado por horas nessa m aquinas que n ao eram utilizadas de noite. Isto escondeu a popularidade posterior dos fractais gerados por computador. Para muitos accionados, Life era simplesmente um desao de programa ca o, um m etodo divertido de gastar os ciclos da CPU. Para alguns, no entanto, Life tinha conota co es mais los ocas. Ele desenvolveu um culto atrav es dos anos 70 e no meio dos 80; os desenvolvimentos atuais foram t ao longe a ponto de criar emula co es te oricas de sistemas de computadores com as regras de um tabuleiro de Life. Regras do Jogo da Vida As regras s ao simples e elegantes: Qualquer c elula viva com menos de dois vizinhos vivos morre de solid ao. Qualquer c elula viva com mais de tr es vizinhos vivos morre de superpopula ca o. Qualquer c elula com exatamente tr es vizinhos vivos se torna uma c elula viva. Qualquer c elula com dois vizinhos vivos continua no mesmo estado para a pr oxima gera ca o.
Cap tulo 12
O Jogo da vida foi desenvolvido pelo matem atico brit anico John Horton Conway em 1970. Come cou com uma brincadeira mas depois virou coisa s eria. O jogo foi criado de modo a reproduzir, atrav es de regras simples, as altera co es e mudan cas em grupos de seres vivos, tendo aplica co es em diversas areas da ci encia. As regras denidas s ao aplicadas a cada nova gera ca o; assim, a partir de uma imagem em um tabuleiro bi-dimensional denida pelo jogador, percebem-se mudan cas muitas vezes inesperadas e belas a cada nova gera ca o, variando de padr oes xos a ca oticos. Origem Um dos problemas matem aticos mais famosos dos anos 40 era o de achar uma m aquina que fosse capaz de construir c opias de si mesma, que teve uma solu ca o baseada em um aut omato celular extremamente engenhoso e complicado inventado pelo renomado matem atico John von Neumann. Conway inventou o Jogo da Vida (ou Game of Life) ao utilizar suas descobertas anteriores relacionadas com o problema de encontrar um grupo sim etrico de esferas em 24 dimens oes, proposto por John Leech para simplicar a solu ca o de von Neumann. O jogo fez sua primeira apari ca o na edi ca o de Outubro de 1970 da Scientic American, na coluna de jogos matem aticos de Martin Gardner. De um ponto de vista te orico, ele e interessante, pois tem o poder de uma m aquina de Turing universal: tudo pode ser computado atrav es de algoritmos no Jogo da Vida de Conway. Tamb em era dito desde 1970 que foi destinado mais tempo de computa ca o ao Jogo da Vida do que a qualquer outra atividade. Desde sua publica ca o, ele tem atra do muito interesse devido aos caminhos surpreendentes que pode tomar. Life e um exemplo de auto-organiza ca o. Ele e interessante para bi ologos, matem aticos, economistas, l osofos e outros a observar o modo como imagens complexas podem surgir de implementa co es de regras muito simples. O Jogo da Vida tem um n umero de imagens reconhecidas que emergem de posi co es iniciais particulares. Antes da publica ca o, muitas imagens interessantes j a haviam sido descobertas, incluindo o sempre envolvente R-pentomin o, o auto propulsionado glider, e v arias guns(armas) que geravam um uxo sem m de novas imagens, todas aumentando o interesse no jogo. Sua popularidade foi ajudada pelo fato de ele ter vindo justo no momento em que uma nova gera ca o de minicomputadores de baixo custo estavam 193
importante entender que todos os nascimentos e mortes ocorrem simultaneamente. E Juntos eles constituem uma gera ca o ou, como podemos cham a-los, um instantena hist oria da vida completa da congura ca o inicial. Descri c ao Este jogo e na realidade um jogo sem jogador, o que quer dizer que sua evolu ca o e determinada pelo seu estado inicial, n ao necessitando de nenhuma entrada de jogadores humanos. Ele e jogado em um conjunto de c elulas quadradas que seguem ao innito em todas as dire co es. Cada c elula tem oito vizinhos, que s ao as c elulas adjacentes, incluindo as diagonais. Cada c elula pode estar em dois estados: vivaou morta. (Tamb em s ao usados os termos ligadoe desligado.) O estado do tabuleiro evolui e se modica em pequenas passagens de tempo. Os estado de todas as c elulas em um instante s ao considerados para calcular o estado de todas as c elulas no instante seguinte. Todas as c elulas s ao atualizadas simultaneamente. As transi co es dependem apenas do n umero de vizinhos vivos (ver as regras acima). A id eia b asica do jogo e come car com uma congura ca o simples de c elulas vivas (organismos) que s ao colocadas em um tabuleiro 2D de v arios m etodos. Isto constitui a primeira gera ca o. As leis gen eticasde Conway para nascimentos, mortes e sobreviv encia (as quatro regras acima) s ao ent ao aplicadas e a nova gera ca o e ent ao colocada de acordo. Gera ca o a gera ca o os jogador(es)observam as v arias imagens que surgem. A vida sempre segue De uma imagem inicial de c elulas vivas no tabuleiro, percebe-se que, conforme passam as gera co es, a popula ca o anda constantemente de modo n ao usual, algumas vezes belo e quase sempre inesperado, por em muda. Em muitos poucos casos a sociedade eventualmente morre (todas as c elulas se tornam c elulas mortas), apesar de que isso pode n ao acontecer at e que ocorram uma s erie de novas gera co es. A maioria das imagens iniciais chegam a guras est aveis - Conway chama-as de vida parada- que n ao podem mudar ou imagens que oscilam para sempre. Imagens sem simetria inicial tendem a se tornar sim etricas. Uma vez que isto ocorre, a simetria n ao pode mais ser perdida, apesar de poder crescer em riqueza. Conway originalmente sup os que nenhuma imagem poderia crescer ilimitadamente. Em outras palavras, qualquer congura ca o com um n umero nito de c elulas n ao pode crescer al em de um limite nito superior ao n umero de c elulas do campo. Esta foi provavelmente a mais profunda e mais dif cil quest ao colocada pelo jogo atualmente. Conway ofereceu um pr emio de $50 a ` primeira pessoa que pudesse provar a arma ca o
88-08, Pedro Kantek
194
CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA ou seu contr ario antes do m de 1970. Um caminho para provar seu contr ario era ser capaz de descobrir imagens que continuassem adicionando contadores ao campo: Uma gun(uma congura ca o que constantemente atira objetos que se movimentam, como o glider) ou um puer train(uma congura ca o que se move mas deixa atr as uma trilha de fuma ca). O pr emio foi ganho em novembro do mesmo ano por um time do MIT, a congura ca o inicial (mostrada no topo da p agina) cresce como um gun, emitindo seu primeiro glider na 40a gera ca o. A gun emite ent ao um novo glider a cada 30 gera co es. Imagens Existe uma s erie de diferentes imagens que podem ocorrer no Jogo da Vida, incluindo imagens paradas (vidas paradas), imagens repetitivas (osciladores- o conjunto de vidas paradas), e imagens que se movimentam atrav es do tabuleiro (naves espaciais). Imagens chamadas Matusalenspodem evoluir por longos per odos de tempo antes de se repetir. Diehard e uma imagem que eventualmente desaparece ap os 130 gera co es, ou passos. Acornleva 5206 gera co es para criar 13 gliders depois se estabiliza como v arios osciladores. Desde ent ao, uma s erie de constru co es complicadas t em sido feitas, incluindo portas l ogicas de gliders, um somador, um gerador de n umeros primos e uma unidade de c elula que emula o Jogo da Vida em uma escala muito maior e a passos lentos. poss poss E vel construir portas l ogicas AND, OR e NOT usando gliders. E vel construir uma imagem que aja como uma m aquina de estado nito conectada a dois contadores. Isto possui o mesmo poder computacional de uma m aquina de Turing universal (veja contador para a prova), Jogo da Vida e t ao poderoso quanto qualquer computador com mem oria ilimitada: e o Turing completo. Al em disso, uma imagem pode conter um conjunto de guns que se combina para construir novos objetos, incluindo c opias da imagem original. Um construtor universalpode ser constru do que contenha um computador Turing completo, e que pode construir uma s erie de objetos complexos, incluindo mais c opias de si mesma. Para este exerc cio considere que o tabuleiro est a rodeado por c elulas mortas. Filosoa O Jogo da Vida de Conway cria um universo complicado a partir de poucas imagin regras. E avel que todo o universo real seja um jogo similar, jogado em alguma dimens ao mais alta. Esta possibilidade pode inuenciar o debate de vivermos em um universo perfeitamente ajustado que requer um projeto inteligente. (texto fortemente baseado em pr.wikipedia.org)
CAP ITULO 12. EXERC ICIO PRATICO: 006-JOGO DA VIDA Informe a seguir se a posi ca o pedida, ap os 4 gera co es, est a viva ou morta. Indique que ela est a viva escrevendo 1 e que est a morta escrevendo 0. 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 c elula morta e X signica c elula viva.
Informe a seguir se a posi ca o pedida, ap os 4 gera co es, est a viva ou morta. Indique que ela est a viva escrevendo 1 e que est a morta escrevendo 0. 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 c elula morta e X signica c elula viva.
12.2
Exerc cio 1
Seja o seguinte tabuleiro inicial, onde . signica c elula morta e X signica c elula viva. . . . X . X . . . . . . . X . . X X . . X . X . . X . . . . . . . . . . . . X . X X X X X . . X . . . X . . . . . X X . . . . . . . . . X . . . . X . X . . . . . . X . . X . . . X X . . X . . . . . . 195
88-08, Pedro Kantek
Informe a seguir se a posi ca o pedida, ap os 4 gera co es, est a viva ou morta. Indique que ela est a viva escrevendo 1 e que est a morta escrevendo 0. L= 8 , C= L= 8 , C= L= 9 , C= L= 10 , 8 9 4 C= 2
196
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 c elula morta e X signica c elula viva.
Informe a seguir se a posi ca o pedida, ap os 4 gera co es, est a viva ou morta. Indique que ela est a viva escrevendo 1 e que est a morta escrevendo 0. 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
197
198
CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Decodicando as localiza co es dos sat elites a partir dos sinais de microondas (tipo de onda electromagn etica) e de uma base de dados interna, e sabendo a velocidade de propaga c ao do sinal, o receptor, pode situar-se na intersec c ao de quatro esferas, uma para cada sat elite.
Cap tulo 13
Coordenadas com um GPS com B ussula e Alt metro integrado Al em de sua aplica c ao o bvia na avia c ao geral e comercial e na navega c ao mar tima, qualquer pessoa que queira saber a sua posi c ao, encontrar o seu caminho para determinado local (ou de volta ao ponto de partida), conhecer a velocidade e direc c ao do seu deslocamento pode-se beneciar com o sistema. Atualmente o sistema est a sendo muito difundido em autom oveis com sistema de navega c ao de mapas, que possibilita uma vis ao geral da area que voc e est a percorrendo. A comunidade cient ca utiliza-o pelo seu rel ogio altamente preciso. Durante experi encias cient cas de captura de dados, pode-se registrar com precis ao de micro-segundos (0,000001 segundo) quando a amostra foi obtida. Naturalmente a localiza c ao do ponto onde a amostra foi recolhida tamb em pode ser importante. Agrimensores diminuem custos e obt em levantamentos precisos mais rapidamente com o GPS. Unidades espec cas t em custo aproximado de 3.000 d olares e precis ao de 1 metro, mas existem receptores mais caros com precis ao de 1 cent metro. A captura de dados por estes receptores e mais lenta. Guardas orestais, trabalhos de prospec c ao e explora c ao de recursos naturais, ge ologos, arque ologos, bombeiros, s ao enormemente beneciados pela tecnologia do sistema. O GPS tem-se tornado cada vez mais popular entre ciclistas, balonistas, pescadores, ecoturistas, geocachers (uma divers ao bem moderna: uma caixa lacrada cheia de pinduricalhos e de um livro e escondida em algum lugar no planeta e suas coordenadas publicadas. Veja mais em http://www.geocaching.com), ou por leigos que queiram apenas orienta c ao durante as suas viagens. Com a populariza c ao do GPS, um novo conceito surgiu na agricultura: a agricultura de precis ao. Uma m aquina agr cola dotada de receptor GPS armazena dados relativos ` a produtividade em um cart ao magn etico que, tratados por programa espec co, produz um mapa de produtividade da lavoura. As informa co es permitem tamb em otimizar a aplica c ao de corretivos e fertilizantes.
Tipos de receptores Existem diferentes receptores GPS, desde diversas marcas que comercializam solu co es tudo-em-um, at e os externos que s ao ligados por cabo ou ainda por bluetooth. Geralmente categorizados em termos de demandas de uso em Geod esicos, Topogr acos e de Navega c ao. A diferencia c ao entre essas categorias, que a princ pio pode parecer meramente de pre co de aquisi c ao e principalmente devido ` a precis ao alcan cada, ou seja a raz ao da igualdade entre o dado real do posicionamento, e o oferecido pelo equipamento. Sendo os mais acurados, com valores na casa dos mil metros, os receptores Geod esicos s ao capazes de captar as duas freq u encias emitidas pelos sat elites (L1 e L2), possibilitando assim a elimina c ao dos efeitos da refra c ao ionosf erica. Os topogr acos, que tem caracter sticas de trabalho semelhantes ` a categoria anterior, por em somente captam a portadora L1, tamb em possuem elevada precis ao, geralmente na casa dos cent metros. Ambas as categorias tem aplica co es t ecnicas, e caracter sticas pr oprias como o p os-processamento, o que signica que geralmente n ao informam o posicionamento instantaneamente. No caso da categoria de maior uso, a de navega c ao, embora possua menor precis ao de posicionamento, tem in umeras vantagens como o baixo pre co de aquisi c ao e in umeras aplica co es, onde v e-se uma innidade de modelos, tanto aqueles que integram diversos equipamentos como computadores de m ao, celulares, rel ogios, etc., como aqueles dedicados exclusivamente ao posicionamento GPS, onde tamb em encontramos aplica co es para uso do dado de posicionamento em outros equipamentos como notebooks, rastreadores de ve culos, etc.
88-08, Pedro Kantek
200
CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Dia 3 de setembro de 1989 Maracan a lotado para assistir ao Brasil X Chile, pelas eliminat orias da Copa do Mundo de 90. Longe dali, em algum ponto a princ pio entre Marab a e Bel em, Cezar Augusto Garcez comanda um v oo cego. Perdido em pleno ar, tenta se posicionar. Localiza, em v ao, uma r adio que transmitia a partida que entraria para a hist oria como o jogo da fogueteira. Aquele v oo tamb em estaria nos jornais no dia seguinte: Avi ao desaparece na Amaz onia, publicou O Globo. Her oi e vil ao, ao mesmo tempo, o comandante Garcez e a principal personagem do RG-254 que caiu na selva amaz onica em 1989. O que deveria ser um v oo rotineiro se transformou numa trag edia. Desorientado, Garcez permaneceu durante tr es horas em v oo cego. Temendo que o erro fosse descoberto, passou diversas informa co es truncadas para a base, armou estar onde n ao estava. Sem combust vel, arriscou o aparentemente imposs vel: um pouso na copa das arvores, em plena noite, com visibilidade praticamente nula. Garcez foi acusado de negligenciar rotinas b asicas da avia ca o. Por outro lado, salvou a vida de muitos passageiros ao conseguir aterrissar a aeronave e cuidar dos feridos. Ainda hoje, aguarda julgamento.
CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Daqui, pode-se inferir que o receptor est a sobre a esfera de centro x, y, z (as coordenadas no espa co do sat elite) e de raio R, que e a dist ancia entre o receptor e o sat elite. Ao fazer o mesmo c alculo com um segundo sat elite, obtem-se uma segunda esfera, e o receptor est a sobre o c rculo de intersec ca o das duas esferas. Finalmente ao fazer o c alculo com um terceiro sat elite, obt em-se uma terceira esfera. O receptor ainda pertence a `s 3 esferas, e a intersec ca o das 3 apresenta apenas 2 pontos no espa co. Um deles apenas sobre a superf cie terrestre, e logo esta e a posi ca o do receptor, com precis ao de metros.
13.1.1
Problemas
13.1
GPS
Na d ecada de 70, os EUA come caram a projetar e implementar o sistema conhecido como GPD (Global Positioning System). O primeiro sat elite Navstar foi lan cado em 1978. O objetivo principal era permitir que os estimados 40.000 usu arios militares americanos se orientassem sobre a terra. Os civis come caram a usar o sistema a partir da d ecada de 80. Hoje, estima-se em mais de 50.000.000 de dispositivos capazes de receber os sinais de GPS e apresentar uma estimativa de localiza ca o. Al em do sistema americano, existe o russo Glonass de uso exclusivo pelos militares e a partir da u ltima semana de 2005, o sistema Galileu constru do e operado pela Ag encia Espacial Europ eia. A grande explos ao de uso, dever a vir quando celulares e autom oveis come carem a vir de f abrica com a possibilidade de informar sua localiza ca o. Associados a sistemas de mapas embarcados, poder ao informar ao motorista qual caminho tomar para ir virtualmente a qualquer lugar sobre a superf cie terrestre. Associados a telefones celulares, poder ao informar a localiza ca o do telefone. Associados a sistemas de prote ca o contra roubo de autom oveis, informar ao a localiza ca o em tempo real e assim por diante. A lista de aplica co es poss veis parece inesgot avel. Todos os sistemas acima se baseiam na triangula ca o (ou quadrangula ca o) do receptor em rela ca o a 3 ou 4 (ou mais) sat elites em orbita da terra. O sistema come ca pela identica ca o de diversos pontos xos sobre a superf cie terrestre. Tais pontos contam com esta co es transmissoras e permitem a cada sat elite a recep ca o de diversos pontos. Medindo o tempo gasto por cada sinal desde a esta ca o terrena at e o sat elite, e fazendo isso com diversas esta co es, o sat elite conhece sua real posi ca o com precis ao de cent metros. Cada sat elite possui um rel ogio at omico, integrado ` a rede GPS e que garante precis ao de tempo de 1 bilion esimo de segundo. Todos os sat elites emitem 2 mensagens: A primeira, envia a identica ca o do sat elite, sua posi ca o no espa co e sua hora interna. Uma segunda mensagem e uma seq u encia de impulsos digitais em um padr ao inconfund vel. Tudo funciona como se o receptor tamb em gerasse no mesmo instante de tempo a mesma seq u encia de impulsos digitais. Da an alise dos dois sinais (o gerado pelo sat elite e o gerado internamente no receptor) e poss vel medir o retardo do sinal do sat elite. Conhecendo a velocidade da luz (xa e igual a 299.729.458 m/seg) e conhecendo o tempo gasto pelo sinal do sat elite ao receptor, e poss vel estabelecer a dist ancia entre sat elite e receptor.
vers ao de 10 de fevereiro de 2008
Se os receptores pudessem ter um rel ogio at omico 3 sat elites bastariam. Como um rel ogio at omico e muito caro e pesado, os receptores usam rel ogios de quartzo comum (sujeitos a erros de 1 seg/dia). Ent ao usa-se um quarto sat elite para refazer os c alculos e permitir acertar o atraso/adiantamen do rel ogio local ao rel ogio da rede. Se o usu ario estiver em movimento, os sinais ainda v em afetados pelo efeito Doppler, que precisa ser analiticamente corrigido antes de estabelecer a posi ca o do receptor. Idem para os efeitos relativ sticos associados. O sistema americano usa duas radiofrequencias: L1 e L2. A L1 e chamada Sinal Civil, embora os militares tamb em a usem. A L2 e de uso exclusivo militar, j a que seus c odigos (a segunda parte das mensagens) n ao s ao p ublicos e s ao protegidos por criptograa. Ao usar apenas o sinal L1, receptores conseguem determinar sua posi ca o com erros de 5 a 10 m, causados pela a ca o da ionosfera. A camada de ar sobre a terra aumenta a densidade da atmosfera, causando refra ca o nos sinais. E como um l apis colocado dentro de um copo de a gua. A pot encia de um sat elite e de 500W, o equivalente a 5 l ampadas de 100W. Apenas para efeito de compara ca o, o sinal de TV de um sat elite e 1 bilh ao de vezes mais forte. Este fato permite que interfer encias (` as vezes propositais) obscure cam ou at e invalidem o sinal dos sat elites. Este fato e usado em teatros de guerra, quando as for cas americanas introduzem geradores locais de ru do centrados na banda usada pelo sistema. Essa ea raz ao pela qual embora o sistema seja p ublico, russos e europeus tratam de ter cada um o seu.
13.2
Dois amigos
Vamos simular o c alculo de uma posi ca o desconhecida usando triangula ca o, mas vamos trabalhar apenas em 2D, que ningu em aqui est a a m de enlouquecer por causa da geometria anal tica. ;-) Suponhamos uma regi ao plana, na qual dois pontos tem coordenadas conhecidas. Voc e vai colocar 2 amigos, um em cada ponto, todos munidos de rel ogios absolutamente acertados at e o mil esimo do segundo, e completamente precisos. Voc e combinou que a `s 14h00, um dos seus amigos dar a um tiro de espoleta. Nessa mesma hora, voc e ligar a um cron ometro. Alguns d ecimos de segundos depois, voc e ouvir a o tiro e desligar a o cron ometro, obtendo um tempo gasto pelo barulho para percorrer a dist ancia entre o seu primeiro amigo e voc e. Vamos chamar esta dist ancia de D1 . Lembrando que o som se propaga a 340m/seg, voc e conseguir a uma medida con avel entre voc e e seu amigo 1. O procedimento ser a repetido a `s 14h15 com seu amigo n umero 2. Pelo mesmo mecanismo voc e obter a a dist ancia entre voc e e seu amigo 2. Ser a a dist ancia D2 .
88-08, Pedro Kantek
201
202
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 , tamb em no centro de um c rculo de raio D2 , e que voc e se encontra sobre os dois c rculos, pede-se que voc e calcule a sua posi ca o. Obs: se voc e n ao tiver muita intimidade com a geometria an alitica, um bom m etodo e o gr aco. Use um papel milimetrado, disponha os dois pontos, trace duas circunfer encias de raios D1 e D2 e nos encontros das duas circunfer encias voc e estar a. Obs: Este procedimento tamb em pode ser usado para vericar o acerto/erro das contas e a verica ca o nal do ponto. Como s o usaremos 2 amigos (ao inv es de 3), haver a 2 pontos candidatos, ambos na superf cie da terra. Responda os 2.
CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Os dois pontos candidatos a serem sua localiza ca o s ao: x,y x,y
13.2.4
Dados:
Problema 2
Seu amigo 1 est a em x1 = 392 e y1 = 173. Seu amigo 2 est a em x2 = 696 e y2 = 210. 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 localiza ca o s ao: x,y x,y
13.2.1
Exemplo
Seja um caso em que x1 = 264m, y1 = 141m. x2 = 520m, y2 = 291m. Os tempos s ao: t1 = 0, 4749seg e t2 = 0, 4017seg . Obtem-se d1 = 161, 48m e d2 = 136, 6m. A f ormula do circulo 1 e x2 + y 2 528x 282y + 63501.21 = 0 A f ormula do circulo 2 e x2 + y 2 1040x 582y + 336421 = 0 Subtraindo uma equa ca o da outra, ca-se com 512x + 300y 272920 = 0 e y= 272920 512x = 909.7 1.7x 300
13.2.5
Dados:
Problema 3
Substituindo o y obtido em qualquer uma das equa co es, chega-se ao valor correto do observador que e xo = 410m, yo = 210m.
Seu amigo 1 est a em x1 = 283 e y1 = 130. Seu amigo 2 est a em x2 = 507 e y2 = 275.
13.2.2
Como fazer
Para entender o funcionamento do sistema, e necess ario relembrar um pouco de f sica e de geometria an alitica. Da f sica: dist ancia = velocidade tempo. Sabendo que a velocidade do som e 340 m/seg, obt em-se as duas dist ancias. Da geometria anal tica, um c rculo no plano e perfeitamente determinada se soubermos as coordenadas , do seu centro, bem como o raio dele, usualmente representada por R. Da geometria anal tica, a f ormula e (x )2 + (y )2 = R2 Do problema, s ao conhecidos 1 , 2 , 1 , 2 , D1 e D2 . Obtem-se agora duas f ormulas em x2 , x, y 2 e y . Operando com elas obtem-se dois pares de x, y que s ao os pontos candidatos.
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 localiza ca o s ao: x,y x,y
13.2.6
Dados:
Problema 4
Seu amigo 1 est a em x1 = 310 e y1 = 170. Seu amigo 2 est a em x2 = 679 e y2 = 256. 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 localiza ca o s ao: x,y x,y
13.2.3
Dados:
Problema 1
Seu amigo 1 est a em x1 = 253 e y1 = 169. Seu amigo 2 est a em x2 = 671 e y2 = 225. O tiro do amigo 1 demorou t1 = .675453 segundos. O tiro do amigo 2 demorou t2 = .568409 segundos.
vers ao de 10 de fevereiro de 2008
203
204
CAP ITULO 13. EXERC ICIO PRATICO:007-GPS Os dois pontos candidatos a serem sua localiza ca o s ao: x,y x,y
13.2.7
Dados:
Problema 5
Seu amigo 1 est a em x1 = 201 e y1 = 163. Seu amigo 2 est a em x2 = 627 e y2 = 251. 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 localiza ca o s ao: x,y x,y
13.2.11
Dados:
Problema 9
Seu amigo 1 est a em x1 = 313 e y1 = 195. Seu amigo 2 est a em x2 = 506 e y2 = 279. O tiro do amigo 1 demorou t1 = .367376 segundos. O tiro do amigo 2 demorou t2 = .256153 segundos.
13.2.8
Dados:
Problema 6
Seu amigo 1 est a em x1 = 288 e y1 = 109. Seu amigo 2 est a em x2 = 619 e y2 = 205. 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 localiza ca o s ao: x,y x,y
13.2.12
Dados:
Problema 10
Seu amigo 1 est a em x1 = 329 e y1 = 145. Seu amigo 2 est a em x2 = 519 e y2 = 219. O tiro do amigo 1 demorou t1 = .231924 segundos. O tiro do amigo 2 demorou t2 = .372242 segundos.
13.2.9
Dados:
Problema 7
Seu amigo 1 est a em x1 = 308 e y1 = 157. Seu amigo 2 est a em x2 = 561 e y2 = 204. 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 localiza ca o s ao: 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
13.2.10
Dados:
Problema 8
Seu amigo 1 est a em x1 = 274 e y1 = 105. Seu amigo 2 est a em x2 = 511 e y2 = 264. O tiro do amigo 1 demorou t1 = .473127 segundos. O tiro do amigo 2 demorou t2 = .366280 segundos.
vers ao de 10 de fevereiro de 2008
205
206
14.1.2
Problema 2
Cap tulo 14
Em um tanque h a 4000 bolinhas de pingue-pongue. Um menino come cou a retirar as bolinhas, uma por uma, com velocidade constante quando eram 10h. Ap os 6 horas, h 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 f ormula desta salada, envolve as seguintes frutas e ingredientes nas seguintes propor co es: 1 Kg de banana; 0,5 Kg de abacaxi; 2 Kg de laranja e 250 gramas de a cucar. Suponha que em um determinado dia, existem dispon veis as seguintes quantidades no dep osito: 100 Kg de a cucar, 300 Kg de abacax , 800 Kg de bananas e 1 tonelada de laranja. Pergunta-se quantos quilos de salada de fruta poder ao ser produzidos preservando as propor co es da f ormula original ?
14.1.4
Problema 4
A soma de dois n umeros primos a e b e 34 e a soma dos primos a e c e 33. Quanto vale a + b + c ? (OBM 2004)
14.1.5
1 a b b 3 --------* * * * * * --------1 c c 0 1
Problema 5
14.1
Cada um dos exerc cios a seguir apresenta uma resposta num erica u nica. Descubra-a e coloque o seu valor no quadrado duplo que segue a deni ca o.
14.1.1
Problema 1
Qual o valor de a + b + c
Um certo espet aculo musical no Jap ao, tem um custo para entrar de 3500 ienes para adultos e 1200 ienes para estudantes. No s abado passado havia 608 pessoas, e a renda da noite foi de 1.707.100 ienes. Quantos estudantes havia ? 207
88-08, Pedro Kantek
208
CAP ITULO 14. EXERC ICIO PRATICO: 008 - PROBLEMAS 6 7 8 9 10 14.0 20.0 30.0 14.0 0
14.1.6
Problema 6
O per metro de determinado ret angulo e 16 vezes maior do que o menor lado do ret angulo. O comprimento do maior lado e 12 cent 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 n umeros inteiros. Se O B M = 240, (O B )+M = 46 e O + (B M ) = 64, quanto vale O + B + M ? (OBM 2005)
14.1.8
Problema 8
Na ocina mec anica do Z e Ti ao, nesta semana foram reparados 40 ve culos, entre motos e carros. Como curiosidade, o auxiliar do Z e Ti ao contou que o n umero total de rodas 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 s o aceita transportar pacotes com peso inferior a 3 Kg e comprimento master menor que 250 cent metros. O comprimento master e o maior barbante que d a a volta completa ao pacote. Supondo um pacote de 2,85 Kg e cujas dimens oes em metros s ao: 0,3 x 0,7 x 1,1 m, pergunta-se Este pacote pode (responda 1) ou n ao pode (responda 0) ser mandado pelo correio ?
14.1.11
1 2 3 4 5
Respostas
210
CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA
15.2
Exerc cio 1
Cap tulo 15
?
390
Neste folha de exerc cios, ser ao apresentadas diversas seq u encias de 11 n umeros. Os n umeros iniciais (1, 2 ou 3) a depender da seq u encia s ao aleat orios. Os pr oximos at eo nal seguem uma determinada lei de forma ca o. Um dos n umeros do nal da seq u encia e representado por um sinal de ?. Voc e deve descobrir que n umero e esse
?
1166 206 144 159
?
387 377
+ + + + + + + + + + + + + + + + + + + +
? ?
293 4616 262 459 360 1591 120 2238
?
11144 425
? ?
281
?
586 3841 194
? ? ?
927 1591 277 165
8 211 ? ? 131 207 212 60 206 1941 137 158 147 125 ? 212 211
11 513 895 822 555 509 514 254 508 27312 581 987 913 529 390 514
resposta
some em 3
?
9273 740
? ?
304 2646 171 4109
+ + + + + + + + + +
?
6388
?
93
?
9920 388 173
?
207 66 211 618
? ?
292
?
3532 201 368 285 687 3223 349
?
3602 8527 325
? ?
200
?
385 1361
? ?
1335 214 212
? ?
CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA
CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA
15.3
Exerc cio 2
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 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
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
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
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
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
10
11 10666 562 4781 15422 511 713 630 3756 22148 398 1013 524 899 781 720 665 4782 623 748 645 1024 1425 992 507 2732 13621 478 453 513 510
resposta
some em 3
?
389 435 457 391 323 534
? ?
135
+ + + + + + + + + + + + + + + + + + + +
?
1096 209 115 148 468 1574 94 233 84 209 126
? ?
2387
+ + + + + + + + + + + + + + + + + + + +
?
291
?
390
?
122 158 210
?
210 240
? ?
291 915 1199
?
2209 2385 360 474
?
3800 152
? ?
1876
? ?
135
?
293 293 135
?
155
? ?
623
?
212
?
554
?
249 8597
?
230 272 196 1198 238 221
?
1475 137
?
222 939
?
107
?
443
?
1877 387 386
?
2386 385 407 397 512
?
206 205 208 191
? ?
383 313 1661 451
? ? ?
149
? ?
4010 734 391
?
256 421
?
229 228 205 340 968 112
? ?
210 210 112 828
?
286 684 2337
?
610
?
291 181 1999 147 3800
? ? ?
239
? ? ?
295 280 392 389
?
173 292 289
?
1574 243 213
?
651
? ? ?
214
CAP ITULO 15. EXERC ICIO PRATICO: 009-ACHAR O NUMERO QUE FALTA
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
?
353
?
296 124
? ?
301 414 1369 230
?
225 679
? ?
374 1877
?
469 265
?
434 133
?
215 539 391
?
204
?
210 205 1294
?
291 291
?
386
?
3124
15.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
215
216
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
Cap tulo 16
16.1.3
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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
Note que a opera ca o x mod y, quando y = 0, matematicamente n ao est a denida. Entretanto, para esta folha, combinar-se- a que x mod y = x quando y = 0. Da mesma maneira, x 0 n ao est a denido. O caso particular, v alido apenas aqui e 0 0 que aqui dar a 1.
16.1.1
16.1.4
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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.2
16.1.5
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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
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
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.6
16.1.9
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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.7
16.1.10
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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.1.8
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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)))
vers ao de 10 de fevereiro de 2008
16.2
16.2.1
Exerc cio 2
Exerc cio 2.1
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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 88-08, Pedro Kantek
219
220
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
CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS
16.2.4
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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.2
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 1 ((23 div 1) div 4)<(((9 + 6) + (3 + 7)) + (4 - 2))
16.2.5
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
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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))
16.2.3
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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
16.2.6
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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
221
222
CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS
CAP ITULO 16. EXERC ICIOS PRATICOS: 011 - MATEMATICA E LOGICA BASICAS
16.2.7
16.2.10
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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.8
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
Resolva as 6 linhas abaixo e some (aritm eticamente) os n umeros das linhas que respondem VERDADEIRO, lan cando o total no quadro abaixo 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
Resolva as 6 linhas abaixo e some (aritm eticamente) os resultados encontrados, lan cando 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
223
224
CAP ITULO 17. EXERC ICIOS PRATICOS: 017-SES COMPOSTOS E ENCADEADOS ... fim {se condi c~ ao} 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.
Cap tulo 17
17.1.1
Permite executar uma ou mais instru co es caso uma condi c ao seja verdadeira. Opcionalmente, pode ter a alternativa inversa, ou seja, executar outros comandos, se a condi ca o for falsa. Comandos internos ao comando sedevem estar identados de 3 espa cos, para clareza. se <condi c~ ao> <comando-1> <comando-2> ... [sen~ ao <comando-11> <comando-12> ...] fim {se} Alternativa Simples S o possui a primeira parte do comando (comandos s ao executados se a condi ca o for verdadeira) se <condi c~ ao> comando-1 comando-2 ... fim {se} Alternativa Composta Possui as duas partes. A primeira, se a condi ca o for verdadeira e a segunda se for falsa. se condi c~ ao c1 c2 ... sen~ ao c10 c11 225
Suponha a chamada EX1 ( 1, 6, 6, 6, 1, 6 ), com a seguinte deni ca o 1: fun ca o EX1 (inteiro A, B, C, D, E, F) 2: se ((E = 5) (B < 4)) ent ao 3: se (F = 1) ent ao 4: DE5 5: sen ao 6: FE4 7: mse 8: FA+D 9: sen ao 10: ACD 11: se ((B 5) (A = 6)) ent ao 12: BC-D 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
17.1.2
Suponha a chamada EX2 ( 4, 2, 3, 2, 1, 2 ), com a seguinte deni ca o 1: fun ca o EX2 (inteiro A, B, C, D, E, F) 2: se ((F 1) (C 5)) ent ao 3: se (D > 5) ent ao 4: FAC 5: sen ao 6: DCF 7: mse 8: DB+5 9: sen ao 10: EB+5 11: se (( (B = 2)) ( (A 1))) ent ao 12: CC+2 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
17.1.3
Suponha a chamada EX3 ( 3, 1, 2, 1, 3, 4 ), com a seguinte deni ca o 1: fun ca o EX3 (inteiro A, B, C, D, E, F) 2: se (((D 5) (F 5)) (A = 3)) ent ao 3: se ((F > 6) ( (D 2))) ent ao
88-08, Pedro Kantek
226
BA-E sen ao CD-E mse EC-2 sen ao DA4 se ((A = 4) (A < 4)) ent ao FDB mse mse imprima A + B + C + D + E m {fun ca o}
m {fun ca o}
17.1.6
17.1.4
Suponha a chamada EX4 ( 2, 4, 5, 1, 2, 5 ), com a seguinte deni ca o 1: fun ca o EX4 (inteiro A, B, C, D, E, F) 2: se (((E < 5) ( (C = 1))) ( (D < 3))) ent ao 3: se ((E = 2) (E = 4)) ent ao 4: CC+B 5: sen ao 6: CBE 7: mse 8: CF-C 9: sen ao 10: CAE 11: se (A 6) ent ao 12: CD-4 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
Suponha a chamada EX6 ( 1, 4, 3, 5, 2, 3 ), com a seguinte deni ca o 1: fun ca o EX6 (inteiro A, B, C, D, E, F) 2: se (( (F 2)) ( (B 6))) ent ao 3: se ((D < 3) ( (B = 6))) ent ao 4: CD-E 5: sen ao 6: BCF 7: mse 8: BA+2 9: sen ao 10: BC-2 11: se (F = 4) ent ao 12: FB-F 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o} 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
17.1.5
Suponha a chamada EX5 ( 5, 3, 3, 3, 3, 6 ), com a seguinte deni ca o 1: fun ca o EX5 (inteiro A, B, C, D, E, F) 2: se (( (D 3)) ( (A = 4))) ent ao 3: se (( (B < 6)) (E = 4)) ent ao 4: DC-E 5: sen ao 6: FB2 7: mse 8: AA+5 9: sen ao 10: FB-4 11: se (((D > 4) (C 2)) (C = 5)) ent ao 12: FA3 13: mse 14: mse 15: imprima A + B + C + D + E
vers ao de 10 de fevereiro de 2008
Suponha a chamada EX1 ( 3, 2, 2, 3, 2, 1 ), com a seguinte deni ca o 1: fun ca o EX1 (inteiro A, B, C, D, E, F) 2: se ((( (D 1)) (B < 1)) (A > 6)) ent ao 3: se (D = 2) ent ao 4: DCD 5: sen ao 6: AC+4 7: mse 8: AF+E 9: sen ao 10: BC3 11: se (((B = 5) (F = 1)) (B > 4)) ent ao 12: CE5 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
88-08, Pedro Kantek 88-08, Pedro Kantek
227
228
17.2.2
Suponha a chamada EX2 ( 1, 4, 6, 3, 3, 2 ), com a seguinte deni ca o 1: fun ca o EX2 (inteiro A, B, C, D, E, F) 2: se (( (D 6)) ( (D > 5))) ent ao 3: se (( (D > 1)) ( (C > 1))) ent ao 4: AD5 5: sen ao 6: DC-3 7: mse 8: AE-4 9: sen ao 10: CA-3 11: se ((C < 2) (F = 5)) ent ao 12: DE-B 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
FF2 se (((A < 6) ( (B = 6))) ( (A = 6))) ent ao DB+4 mse mse imprima A + B + C + D + E m {fun ca o}
17.2.5
17.2.3
Suponha a chamada EX3 ( 4, 1, 2, 3, 3, 1 ), com a seguinte deni ca o 1: fun ca o EX3 (inteiro A, B, C, D, E, F) 2: se ( (F 1)) ent ao 3: se ((E = 3) (E > 4)) ent ao 4: BF2 5: sen ao 6: FE+F 7: mse 8: CB3 9: sen ao 10: EC+E 11: se ((D 1) (E 6)) ent ao 12: DFE 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
Suponha a chamada EX5 ( 1, 2, 4, 2, 6, 6 ), com a seguinte deni ca o 1: fun ca o EX5 (inteiro A, B, C, D, E, F) 2: se (((B = 1) (B > 1)) ( (F > 4))) ent ao 3: se ( (A < 4)) ent ao 4: CA+E 5: sen ao 6: CE2 7: mse 8: EB-4 9: sen ao 10: FF2 11: se (C > 2) ent ao 12: AFD 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
17.2.6
17.2.4
Suponha a chamada EX4 ( 6, 4, 6, 4, 2, 4 ), com a seguinte deni ca o 1: fun ca o EX4 (inteiro A, B, C, D, E, F) 2: se (( (D 2)) (E = 6)) ent ao 3: se (((D < 6) (A = 6)) ( (F 6))) ent ao 4: AC-B 5: sen ao 6: BFD 7: mse 8: CA-5 9: sen ao
vers ao de 10 de fevereiro de 2008
Suponha a chamada EX6 ( 6, 2, 6, 1, 5, 3 ), com a seguinte deni ca o 1: fun ca o EX6 (inteiro A, B, C, D, E, F) 2: se ((( (A > 4)) ( (A 1))) ( (A > 6))) ent ao 3: se ( (F 4)) ent ao 4: BF+2 5: sen ao 6: CD4 7: mse 8: AC+3 9: sen ao 10: DA-C 11: se (( (A = 4)) (E 3)) ent ao 12: FC-4 13: mse 14: mse 15: imprima A + B + C + D + E 16: m {fun ca o}
88-08, Pedro Kantek 88-08, Pedro Kantek
229
230
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
231
232
CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS MM4 MK+2 fim{se} Se os trechos acima forem equivalentes, some 1 a ` resposta.
Cap tulo 18
A seguir, s ao apresentados um uxograma e a seguir um trecho em pseudo-c odigo. Ambos devem ser analisados e deve-se chegar a uma conclus ao: s ao equivalentes ? Se forem, os n umeros que identicam cada exerc cio devem ser somados. Ao nal da s erie, a soma deve ser respondida.
ex002 se (A5)(B=9) ent~ ao ZY-8 sen~ ao KN+2 fim{se} Se os trechos acima forem equivalentes, some 2 a ` resposta. ex004 A>8 v
18.1.1
ex001 A>4 v ZZ-3 TY5 TZ+6 m
Exerc cio 1
234
CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS KM9 sen~ ao TT6 SP5 fim{se} fim{se} Se os trechos acima forem equivalentes, some 4 ` a resposta. ex008 A=1 v C=4 v MK-7 TY-4 XT-8 m NN6 KK-2 E=5 v PS7 SR-7 RT6 UH+1 XT9 m YZ5 YZ5
ex008 se (A=1) ent~ ao se (E=5) ent~ ao PS7 SR-7 RT6 sen~ ao UH+1 fim{se} sen~ ao se (C=4) ent~ ao MK-7 NN6 KK-2 sen~ ao TY-4 XT-8 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 ` a resposta.
vers ao de 10 de fevereiro de 2008
ex016 se (A=7)(B<3) ent~ ao se (C=5) ent~ ao SP-6 SR9 SP2 sen~ ao LL8 NK3 MM7 fim{se} sen~ ao YZ5 YZ5 XT9 fim{se}
235
236
ex032 A=6 B 1 v C 6 v YZ2 YX-6 TY+9 m ML+4 MK2 E=6 v SP+9 TP8 RT7 JG5 HU3
ex032 se (A=6)(B<1) ent~ ao se (C6) ent~ ao YZ2 YX-6 TY+9 sen~ ao ML+4 MK2 fim{se} sen~ ao se (E=6) ent~ ao SP+9 TP8 RT7 sen~ ao JG5 HU3 fim{se} fim{se}
ex064 se (A2)(B3) ent~ ao se (C1)(D>2) ent~ ao SS-6 RT6 sen~ ao LM4 fim{se} sen~ ao ZX-2 ZY+7 fim{se}
237
238
ex128 se (A=6)(B<9) ent~ ao se (E<3)(F1) ent~ ao RP5 TR8 TP+2 sen~ ao JU+9 fim{se} sen~ ao se (C>9)(D=4) ent~ ao NM8 sen~ ao YX4 ZZ9 XY7 fim{se} fim{se}
Se os trechos acima forem equivalentes, some 1 a ` resposta. ex002 A1 B< 2 v TX+4 m MK3
Se os trechos acima forem equivalentes, some 128 ` a resposta. Responda a soma dos exerc cios que s ao equivalentes
18.1.2
Exerc cio 2
Se os trechos acima forem equivalentes, some 2 a ` resposta.
88-08, Pedro Kantek
A seguir, some o n umero dos exerc cios em que o trecho de pseudoc odigo e 100% equivalente ao uxograma apresentado
vers ao de 10 de fevereiro de 2008
239
240
ex008 se (A<9) ent~ ao se (E1) ent~ ao PT5 sen~ ao GU2 JH3 JJ3 fim{se} sen~ ao se (C=4) ent~ ao LL-9 sen~ ao XZ+4 XT-5 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 a ` resposta. ex016 A=5 B=8 v TY2 TY-8 XX-6 m C> 8 v
ex004 se (A=6) ent~ ao se (C>7) ent~ ao TT-9 RS+7 sen~ ao LK+7 fim{se} sen~ ao TT-8 fim{se} Se os trechos acima forem equivalentes, some 4 ` a resposta. ex008 A9 v E>1 v C=4 v XZ+4 XT-5 m
vers ao de 10 de fevereiro de 2008
ex016 se (A=5)(B=8) ent~ ao TY2 TY-8 XX-6 sen~ ao se (C>8) ent~ ao KN2 NM-3 sen~ ao PT5 fim{se}
88-08, Pedro Kantek 88-08, Pedro Kantek
241
242
CAP ITULO 18. EXERC ICIOS PRATICOS: 018-FLUXOGRAMAS fim{se} ex064 A=2 B> 3 v
Se os trechos acima forem equivalentes, some 16 ` a resposta. ex032 A=4 B< 2 v C< 5 v LK2 ML-4 ZT+3 m LM9 E>4 v TR-9 PP+9 PS6 GG9
ex032 se (A=4)(B<2) ent~ ao se (C<5) ent~ ao TR-9 PP+9 PS6 sen~ ao GG9 fim{se} sen~ ao se (E>4) ent~ ao LK2 ML-4 LM9 sen~ ao ZT+3 fim{se} fim{se}
ex064 se (A=2)(B3) ent~ ao se (C5)(D>5) ent~ ao TR-6 ST-2 RP3 sen~ ao MM5 LK+9 fim{se} sen~ ao XT2 TZ6 fim{se}
243
244
ex128 A>5 B 7 v C=4 D=4 v KM9 XT2 m LL+4 E=3 F3 v TS5 JG-8
ex128 se (A>5)(B7) ent~ ao se (C=4)(D=4) ent~ ao TS5 sen~ ao JG-8 fim{se} sen~ ao se (E=3)(F3) ent~ ao KM9 LL+4 sen~ ao XT2 fim{se} fim{se} Se os trechos acima forem equivalentes, some 128 ` a resposta. Responda a soma dos exerc cios que s ao equivalentes
18.1.3
1 2
Respostas
153 93
245
246
Cap tulo 19
YZ3
LN2 ex002 se (A=5)(B>5) ent~ ao LM3 KN4 LN2 sen~ ao YZ3 fim{se} Se os trechos acima forem equivalentes, some 2 a ` resposta. ex004 A=1 C=7 PP-5 SP8 RT4
19.0.4
ex001
Exerc cio 1
f v f
YZ9 XX-4
KL2
ex001 se (A=1) ent~ ao ZZ+4 TZ5 ZX9 sen~ ao MK8 KN5 KM2 fim{se}
ex004 se (A=1) ent~ ao se (C=7) ent~ ao PP-5 SP8 RT4 sen~ ao KL2 fim{se} sen~ ao YZ9 XX-4 fim{se}
88-08, Pedro Kantek
248
CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI se (C6) ent~ ao NM+8 sen~ ao RR+7 SP5 fim{se} fim{se} f f v KN3 NK+3 RR-7 E>1 HH4 GJ-5 v v f
v v
ZX4
Se os trechos acima forem equivalentes, some 16 a ` resposta. ex032 A2 B4 C 3 KK3 NM+8 f v E7 UG-3 JU-2
ex008 se (A<1) ent~ ao se (E1) ent~ ao RR-7 sen~ ao HH4 GJ-5 fim{se} sen~ ao se (C<4) ent~ ao KN3 NK+3 sen~ ao ZX4 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 ` a resposta. ex016 A<8 B=5 v C< 6 RR+7 SP5
f f
YT1
v TZ-5
f f
NM+8
ex032 se (A<2)(B<4) ent~ ao se (C3) ent~ ao YT1 sen~ ao KK3 NM+8 fim{se} sen~ ao se (E>7) ent~ ao RS9 TR-3 PT+6 sen~ ao UG-3 JU-2 fim{se} fim{se}
250
CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI sen~ ao MM7 fim{se} sen~ ao se (E>7)(F2) ent~ ao TT+6 TT2 sen~ ao HG+6 fim{se} fim{se} Se os trechos acima forem equivalentes, some 128 a ` resposta. Responda a soma dos exerc cios que s ao equivalentes
v ZZ-1
f f
ex064 se (A<2)(B>6) ent~ ao ZZ-1 sen~ ao se (C5)(D=3) ent~ ao NK8 KM5 KM3 sen~ ao RS+2 fim{se} fim{se} Se os trechos acima forem equivalentes, some 64 ` a resposta. ex128 A6 B>6 C=4 D<1 MM7 f v E7 F>2 HG+6
19.0.5
ex001
Exerc cio 2
v XX-9
A=8 KK6
XZ8
v v
f f
ex001 se (A=8) ent~ ao XX-9 XZ8 sen~ ao KK6 fim{se} Se os trechos acima forem equivalentes, some 1 a ` resposta. ex002 A4 B=8 LM4 NM4 NK+2
TT+6 TT2
TZ6 TZ5
251
252
ex002 se (A4)(B=8) ent~ ao LM4 NM4 NK+2 sen~ ao TZ6 TZ5 fim{se}
v v
f f
Se os trechos acima forem equivalentes, some 2 ` a resposta. ex004 A>8 v C< 6 TP6
v XX-2
f f
ex008 se (A=5) ent~ ao se (C1) ent~ ao ZY+2 ZT+5 XY7 sen~ ao LL7 KL+5 fim{se} sen~ ao se (E=1) ent~ ao RS8 PS+3 RR+5 sen~ ao JG+7 GU6 fim{se} fim{se} Se os trechos acima forem equivalentes, some 8 a ` resposta. ex016 A>6 B=1 v NL-7 NK3 C 3 RT4
ex004 se (A>8) ent~ ao XX-2 sen~ ao se (C6) ent~ ao NN+6 MK+4 ML-6 sen~ ao TP6 fim{se} fim{se}
f f
TZ9
ex016
88-08, Pedro Kantek 88-08, Pedro Kantek
253
254
CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI se (A>6)(B=1) ent~ ao se (C3) ent~ ao RT4 sen~ ao NL-7 NK3 fim{se} sen~ ao TZ9 fim{se}
ex064 A>1 B=4 v NN-2 NK3 C=3 D=1 RS-9 SR5 PR4
f f
YX7 TX8
Se os trechos acima forem equivalentes, some 16 ` a resposta. ex032 A=8 B7 C< 4 NK+2 LN8 LK+6 f v TS-9 E3 UG-3 UJ+4 HH+5 ex064 se (A1)(B=4) ent~ ao se (C=3)(D=1) ent~ ao RS-9 SR5 PR4 sen~ ao NN-2 NK3 fim{se} sen~ ao YX7 TX8 fim{se}
v v
f f
YZ7
ex032 se (A=8)(B>7) ent~ ao se (E>3) ent~ ao TS-9 sen~ ao UG-3 UJ+4 HH+5 fim{se} sen~ ao se (C4) ent~ ao NK+2 LN8 LK+6 sen~ ao YZ7 fim{se} fim{se}
Se os trechos acima forem equivalentes, some 64 a ` resposta. 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
255
256
CAP ITULO 19. EXERC ICIOS PRATICOS: 018 - NASSI XY-9 sen~ ao LM5 ML+7 fim{se} sen~ ao se (E=2)(F4) ent~ ao RS2 TP-2 sen~ ao GH+2 HU-2 GJ8 fim{se} fim{se} Se os trechos acima forem equivalentes, some 128 ` a resposta. Responda a soma dos exerc cios que s ao equivalentes
19.0.6
1 2
Respostas
12 232
257
258
CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNC OES SIMPLES
19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
Cap tulo 20
mse sen ao se ( (C = B)) ent ao AC2 sen ao BA-3 mse mse imprima A, B, C m{fun ca o}
Exerc cio 1.2 Suponha a chamada a ` fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 5 4: B 2 5: C 2 6: se (B < C) ent ao 7: se (A C) ent ao 8: se (C = B) ent ao 9: AC-4 10: sen ao 11: AA-A 12: mse 13: sen ao 14: se ( (C = B)) ent ao 15: BA-4 16: sen ao 17: BC+3 18: mse 19: mse 20: sen ao 21: se (A < 6) ent ao 22: CB+5 23: sen ao 24: AC4 25: mse 26: mse 27: imprima A, B, C 28: m{fun ca o} Exerc cio 1.3 Suponha a chamada a ` fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 1 4: B 9 5: C 9 6: se ( (C > A)) ent ao
88-08, Pedro Kantek
Os exerc cios a seguir est ao indicados para desenvolver as habilidades de saber resolver condi co es l ogicas adquirir destreza em avaliar comandos condicionais ganhar disciplina mental para seguir testes de mesma (chineses) Os exerc cios a seguir implementam fun co es. Em todas, as vari aveis A, B e C s ao inicializadas no in cio da fun ca o. Voc e deve seguir a fun ca o at e o nal e neste ponto informar os valores de A, B e C.
20.1.1
Exerc cio 1
Exerc cio 1.1 Suponha a chamada ` a fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 1 4: B 8 5: C 7 6: se (B > 5) ent ao 7: se (C = A) ent ao 8: se (A B) ent ao 9: CC5 10: sen ao 11: BB-B 12: mse 13: sen ao 14: se (B C) ent ao 15: AB-3 16: sen ao 17: BB+2 18: mse 259
260
CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNC OES SIMPLES
7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNC OES SIMPLES
27: 28:
se (C B) ent ao se (B = C) ent ao CB5 sen ao BB+B mse sen ao se (B > A) ent ao CB-2 sen ao CC+B mse mse sen ao se ( (A = 2)) ent ao AA5 sen ao BA-2 mse mse imprima A, B, C m{fun ca o}
imprima A, B, C m{fun ca o}
Exerc cio 1.5 Suponha a chamada a ` fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 7 4: B 8 5: C 8 6: se (A = C) ent ao 7: se (C < 3) ent ao 8: se (A 4) ent ao 9: BA+2 10: sen ao 11: CCC 12: mse 13: sen ao 14: se ( (B = 1)) ent ao 15: AA+2 16: sen ao 17: CC+4 18: mse 19: mse 20: sen ao 21: se ( (B 3)) ent ao 22: BC-4 23: sen ao 24: BCA 25: mse 26: mse 27: imprima A, B, C 28: m{fun ca o} Respostas Exerc 1 Var. B Exerc 2 Var. C Exerc 3 Var. B Exerc 4 Var. B Exerc 5 Var. B
Exerc cio 1.4 Suponha a chamada ` a fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 4 4: B 8 5: C 7 6: se ( (B < A)) ent ao 7: se ( (C < B)) ent ao 8: se (B < C) ent ao 9: BC+4 10: sen ao 11: BAB 12: mse 13: sen ao 14: se (B < A) ent ao 15: CA-B 16: sen ao 17: BC+3 18: mse 19: mse 20: sen ao 21: se (B = 1) ent ao 22: AA+A 23: sen ao 24: BC-4 25: mse 26: mse
vers ao de 10 de fevereiro de 2008
20.1.2
Exerc cio 2
Exerc cio 2.1 Suponha a chamada a ` fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 8 4: B 4
88-08, Pedro Kantek 88-08, Pedro Kantek
261
262
CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNC OES SIMPLES
5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNC OES SIMPLES mse mse 27: imprima A, B, C 28: m{fun ca o}
25: 26:
C5 se (A < C) ent ao se ( (B > C)) ent ao se (C < B) ent ao BB-2 sen ao BA+B mse sen ao se ( (C A)) ent ao CA+5 sen ao BB+B mse mse sen ao se (B = A) ent ao AAA sen ao CB+C mse mse imprima A, B, C m{fun ca o}
Exerc cio 2.3 Suponha a chamada a ` fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 9 4: B 8 5: C 7 6: se (B > C) ent ao 7: se ( (A = 4)) ent ao 8: se ( (B < 5)) ent ao 9: BC4 10: sen ao 11: AB-2 12: mse 13: sen ao 14: se (C < A) ent ao 15: CB-3 16: sen ao 17: AB5 18: mse 19: mse 20: sen ao 21: se ( (A 1)) ent ao 22: BA-5 23: sen ao 24: AA-5 25: mse 26: mse 27: imprima A, B, C 28: m{fun ca o} Exerc cio 2.4 Suponha a chamada a ` fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 3 4: B 2 5: C 9 6: se (A = 2) ent ao 7: se ( (C > 1)) ent ao 8: se (C 5) ent ao 9: CA2 10: sen ao 11: BB5 12: mse
88-08, Pedro Kantek 88-08, Pedro Kantek
Exerc cio 2.2 Suponha a chamada ` a fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 4 4: B 5 5: C 7 6: se (A = 1) ent ao 7: se ( (B 2)) ent ao 8: se ( (B = C)) ent ao 9: BA+4 10: sen ao 11: BC5 12: mse 13: sen ao 14: se (A > C) ent ao 15: CC+C 16: sen ao 17: CC3 18: mse 19: mse 20: sen ao 21: se (B = 2) ent ao 22: BC-B 23: sen ao 24: AC2
vers ao de 10 de fevereiro de 2008
263
264
CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNC OES SIMPLES
13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
CAP ITULO 20. EXERC ICIOS PRATICOS: 021 - 5 FUNC OES SIMPLES Respostas Exerc 1 Var. C Exerc 2 Var. B Exerc 3 Var. B Exerc 4 Var. C Exerc 5 Var. B
sen ao se (C = 1) ent ao AAA sen ao BA-4 mse mse sen ao se (C = 2) ent ao AA+C sen ao CCA mse mse imprima A, B, C m{fun ca o}
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
Exerc cio 2.5 Suponha a chamada ` a fun ca o CALC, com a seguinte deni ca o 1: fun ca o CALC 2: inteiro A, B, C 3: A 1 4: B 6 5: C 6 6: se ( (C = 2)) ent ao 7: se (C = 3) ent ao 8: se (A = 2) ent ao 9: BA4 10: sen ao 11: BA-5 12: mse 13: sen ao 14: se (A > C) ent ao 15: CA+3 16: sen ao 17: CC+5 18: mse 19: mse 20: sen ao 21: se (B = A) ent ao 22: BB+B 23: sen ao 24: AAB 25: mse 26: mse 27: imprima A, B, C 28: m{fun ca o}
vers ao de 10 de fevereiro de 2008
265
266
CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS todas as caracter sticas originais estabelecidas pelo propriet ario da informa ca o, incluindo controle de mudan cas e garantia do seu ciclo de vida (nascimento, manuten ca o e destrui ca o). Disponibilidade - propriedade que garante que a informa ca o esteja sempre dispon vei para o uso leg timo, ou seja, por aqueles usu arios autorizados pelo propriet ario da informa ca o. Mecanismos de seguran ca O suporte para as recomenda co es de seguran ca pode ser encontrado em: Controles f sicos: s ao barreiras que limitam o contato ou acesso direto a informa ca o ou a infra-estrutura (que garante a exist encia da informa ca o)que a suporta. Existem mecanismos de seguran ca que ap oiam os controles f sicos: Portas / trancas / paredes / blindagem / guardas / etc .. Controles l ogicos: s ao barreiras que impedem ou limitam o acesso a informa ca o, que est a em ambiente controlado, geralmente eletr onico, e que, de outro modo, caria exposta a altera ca o n ao autorizada por elemento mal intencionado. Existem mecanismos de seguran ca que ap oiam os controles l ogicos: Mecanismos de encripta ca o. Permitem a transforma ca o revers vel da informa ca o de forma a torn a-la inintelig vel a terceiros. Utiliza-se para tal, algoritmos determinados e uma chave secreta para, a partir de um conjunto de dados n ao encriptados, produzir uma sequ encia de dados encriptados. A opera ca o inversa e a desencripta ca o. Assinatura digital. Um conjunto de dados encriptados, associados a um documento do qual s ao fun ca o, garantindo a integridade do documento associado, mas n ao a sua condencialidade. Mecanismos de garantia da integridade da informa ca o. Usando fun co es de Hashingou de checagem, consistindo na adi ca o. Mecanismos de controle de acesso. Palavras-chave, sistemas biom etricos, rewalls, cart oes inteligentes. Mecanismos de certica ca o. Atesta a validade de um documento. Integridade. Medida em que um servi co/informa ca o e genuino, isto e, esta protegido contra a personica ca o por intrusos. Existem duas losoas por tr as de qualquer pol tica de seguran ca: a proibitiva (tudo que n ao e expressamente permitido e proibido) e a permissiva (tudo que n ao e proibido e permitido). Integridade erros poss veis em digita ca o erro oblitera ca o repeti ca o transposi ca o substitui ca o fraude
88-08, Pedro Kantek
Cap tulo 21
Seguran ca da informa c ao Seguran ca de Informa ca o est a relacionada com a prote ca o existente ou necess aria sobre dados que possuem valor para algu em ou uma organiza ca o. Possui aspectos b asicos como condencialidade, integridade e disponibilidade da informa ca o e n ao se aplica ou est a restrita a sistemas computacionais, nem a informa co es eletr onicas ou qualquer outra forma mec anica de armazenamento. Ela se aplica a todos os aspectos de prote ca o e armazenamento de informa co es e dados, em qualquer forma. Um dos padr oes de seguran ca mais conhecidos e o BS7799, que estabelece melhores pr aticas para implementa ca o e na gest ao da seguran ca da informa ca o. A s erie de normas ISO 27000, encabe cadas pela ISO 27001 est ao sendo elaboradas para substituir e completar os padr oes denidos pela BS7799. Algumas normas denem aspectos que devem ser levados em considera ca o ao elaborar pol ticas de seguran ca. Entre essas normas est ao a BS 7799 (elaborada pela British Standards Institution) e a NBR ISO/IEC 17799 (a vers ao brasileira desta primeira). A ISO come cou a publicar a s erie de normas 27000, em substitui ca o ` a ISO 17799 (e por conseguinte ` a BS 7799), das quais a primeira, ISO 27001, foi publicada em 2005. Entende-se por informa ca o todo e qualquer conte udo ou dado que tenha valor para alguma organiza ca o ou pessoa. Ela pode estar guardada para uso restrito ou exposta ao p ublico para consulta ou aquisi ca o. A seguran ca de uma determinada informa ca o pode ser afetada por fatores comportamentais 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 informa ca o. A tr ade CIA (Condentiality, Integrity and Availability) Condencialidade, Integridade e Disponibilidade representa as principais propriedades que, atualmente, orientam a an alise, o planejamento e a implementa ca o da seguran ca para um determinado grupo de informa co es que se deseja protejer. Outras propriedades est ao sendo apresentadas (legitimidade e autenticidade) na medida em que o uso de transa co es comerciais em todo o mundo, atrav es de redes eletr onicas (p ublicas ou privadas) se desenvolve. Condencialidade - propriedade que limita o acesso a informa ca o t ao somente ` as entidades leg timas, ou seja, ` aquelas autorizadas pelo propriet ario da informa ca o. Integridade - propriedade que garante que a informa ca o manipulada mantenha 267
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 e obtido como uma fun ca o matem atica do c odigo e e grudado nele. Pela simples an alise do DV e poss vel detectar grande parte dos erros acima descritos. A fun ca o mais usada e MOD, j a que e uma fun ca o de m ao u nica. (n ao tem inversa) Por exemplo DOBRO de 2 e 4. Logo A METADE de 4 e 2. J a 8 MOD 7 e 1. Mas n ao e poss vel determinar x em X mod 7 = 1. x pode ser 8, 22, 29,... Exemplos o c UPC=C odigo de produto universal E odigo de barras que encontramos nos produtos do supermercado. As 3 primeiras posi co es do c odigo indicam o pa s de produ ca o do bem. Neste caso, o Brasil e 789. Ou ltimo d gito (0 13o ) e assim obtido: 1. Soma-se os d gitos que ocupam posi co es mpares (1, 3, 5...) e multiplica-se o resultado por 3. 2. Soma-se os d gitos que ocupam posi co es pares, e soma-se este resultado ao da etapa anterior 3. Subtrai-se o resultado do pr oximo m ultiplo de 10. O resultado e o DV. Sejam exemplos de um recipiente de tinta de carimbo, marca Japan Stamp. Seu c odigo e 7898076820584. Calcule e ache o resultado correto (4). Outro exemplo, um tubo de cola Tenaz. Seu c odigo e 7891200304295. Note-se que ` as vezes, a ind ustria procede diferente. Ao inv es do c odigo do produto ocupar as posi co es 4 a 12, sendo o DV a posi ca o 13, o c odigo do produto passa a ocupar as posi co es 5 a 13, e o DV (de maneira a que o u ltimo d gito do produto na posi ca o 13) seja correto, o 5 d gito e convenientemente estabelecido. ISBN 10 (International Standard Book Number) O u ltimo d gito da s erie de 10 do ISBN e o DV. Ele e calculado de maneira a que multiplicando cada d gito do c odigo pela sua posi ca o (come cando da direita e em 1) e somando tudo, o resto desta soma por 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 e 240. Dividindo 240 por 11 tem-se 21.8, e portanto o pr oximo inteiro divis vel por 11 e 11 vezes 22, que e 242. Fazendo-se 242-240=2 que e o DV procurado. O ISBN 13 (em uso a partir de Janeiro de 2007) gera seu d gito da mesma maneira que o UPC. C odigos de cart ao de cr edito Usa-se o algoritmo de Luhn, (Hans Peter Luhn, funcion ario da IBM, 1896-1964), tamb em conhecido como m odulo 10, foi desenvolvido nos anos 60, como um m etodo para validar c odigos. Ele e usado nos n umeros de cart ao de cr edito e no c odigo de seguro social do Canad a. O algoritmo e de dom nio p ublico. Ele protege contra o erro acidental e n ao contra o ataque malicioso. Come cando com o d gito mais a direita (que e o DV), dobre o valor dos d 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 ent ao 2+1+2+1 e 6. J a 8763 torna-se 7733, ent ao 7+7+3+3 e 20. Se o total termina em zero ( e m ultiplo de 10) o c odigo completo e v alido de acordo com a f ormula de Luhn, sen ao n ao e. Ent ao 1111 n ao e v alido enquanto 8763 e.
vers ao de 10 de fevereiro de 2008
CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS Para testar o algoritmo de Luhn, calcule o DV do cart ao 4931 4701 2604 479?. A resposta deve ser 2. Este algoritmo tamb em e usado no sistema banc ario da Noruega, no c odigo ISSN (peri odicos), no n umero de identica ca o do ve culo em alguns estados americanos, no cart ao de identica ca o de israelenses e no Yugoslav Unique Master Citizen Number (JMBG). C odigo de barras da FEBRABAN Este c odigo est a presente no sistema banc ario brasileiro e ele permite o interc ambio de pagamentos entre os bancos (ou seja, um t tulo de um banco pode ser pago em qualquer outro, at e o vencimento). Al em do c odigo de barras, adequado para uma leitura mec anica, existe um c odigo num erico, que cont em as mesmas informa co es, mas n ao na mesma ordem. Note-se tamb em que os d gitos vericadores s o aparecem no c odigo num erico a digitar, mas n ao no c odigo de barras. Aqui eles s ao desnecess arios. O c odigo num erico e formado por 5 campos. O primeiro, de 10 d gitos e formado pelo c odigo do banco (3 posi co es, B1 , B2 , B3 ), c odigo da moeda (9=real, M4 ), e pelas posi co es L20 , L21 ,L22 ,L23 ,L24 do conte udo livre ( area do cliente), al em de um DV obtido pelo m etodo de base 10. O segundo campo contendo 11 d gitos e formado pelo conjunto L25 ,...,L34 al em de um novo DV base 10. O terceiro campo contendo 11 d gitos e formado pelo conjunto L35 ,...,L44 al em de um novo DV base 10. O quarto campo e o DV do conjunto completo, calculado com o d gito 11 e pesos 2345678923... onde o 2 inicial corresponde ao caracter mais a ` direita. Nesta representa ca o ele e o D5 . Finalmente, o quinto campo e formado por 14 d gitos, sendo os 4 primeiros o fator de vencimento (dias decorridos desde 07/10/1997) at e o dia de vencimento, ou seja F6 , 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 c odigo de barras, apresenta os dados na ordem em que eles foram apresentados 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 . Al em destes sinais, o c odigo de barra come ca por um start e termina por um stop. Este c odigo e o chamado entrela ca do 5-2, j a que os d gitos s ao calculados de 5 em 5 sinais, e tanto as barras quanto os espa cos s ao usados para o reconhecimento. No c alculo do DV mod 11, ao subtrair 11 menos o resto da divis ao, se a resposta for 0, 1 ou maior do que 9, o d gito vericador e 1. O que e oblitera c ao ?
- 2 Na acep c ao 2 do Aur elio, obliterar e destruir, eliminar, suprimire e sobre isto que
nos fala esta hist oria. Quantas vezes ao escrever uma palavra qualquer no micro ecrevemos (aten c ao revis ao: e ecrevemos e n ao escrevemos) errado ? Voc e acabou de ver uma oblitera c ao, algu em (meus dedos ?) sumiu com a letra sde escrevemos. Isto e comum quando o pensamento e mais r apido que os dedos que digitam, isto e quase 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 oblitera co es s ao em geral descobertas e corrigidas. Quando o texto e muito importante, e comum pedir-se a outra pessoa que fa ca a revis ao, j a que muitos erros cometidos pelo digitador n ao podem ser facilmente descobertos por esse mesmo revisor. H a necessidade de um terceiro. S ao cuidados m nimos para n ao pagar mico, e na sua falta, o implac avel imponder avel sempre d a as suas caras, como vai-se ver a seguir.
88-08, Pedro Kantek
269
270
CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS A cena e o exame nal do curso de inform atica em uma universidade bem conceituada de Curitiba. Nesse curso, os alunos para se formarem precisam construir um software desde a sua concep c ao at e sua opera c ao sem nenhum erro grave. Eles t em 1 ano para essa tarefa e acreditem-me, geralmente e pouco tempo. H a alguns anos, uma equipe estava na u ltima banca para aprova c ao. N os chamamos esta banca de magna, pois por ser a u ltima e composta por todos os professores orientadores, que naquele ano eram em n umero de 9. A equipe em quest ao era formada por 3 alunas, bonitas, charmosas e tamb em competentes, n ao esque camos de armar. Estavam as 3 nervosas, roendo os dedos que as unhas j a haviam acabado, numa espera imensa e infernal quando chegou a vez delas: Entraram na sala, instalaram o software, os micros, eram 3 que aquilo rodava em rede, o canh ao, enm todas essas parafern alias que todos t ao bem conhecemos. Rolava a apresenta c ao, sem maiores problemas, o que por s s o j a devia ser s erio ind cio de que alguma coisa grave ia acontecer, essas coisas nunca rolam sem maiores problemas, quando... Mostrou-se uma transpar encia imensa cujo t tulo era processamento de pedidos, anal o software era para automatizar uma pequena lojinha de bairro. Nessa hora a oblitera c ao (a maldita) introduziu-se na hist oria. O digitador (o maldito) esquecera-se de digitar, obliterara uma letra no t tulo. Maior gravidade n ao haveria se fosse qualquer letra, mas qual o qu e: a letra roubada fora a terceira letra da terceira palavra, as alunas estavam apresentando uma transpar encia onde em letras garrafais se dizia processamento de peidos. N ao preciso descrever como terminou a banca. Apenas informo que as alunas foram aprovadas, o software estava muito bom. Pedro Kantek Os principais m etodos usados:
CAP ITULO 21. EXERC ICIOS PRATICOS: 024 -DVS Se o resto e 0 ou 1, o DV e igual a 0. (No BB se R=0, DV=X) Letra Chave Este m etodo tem como resposta uma letra e n ao um d gito. Separe os d gitos e crie um vetor de pesos adequado. Some e ache o resto de uma divis ao por 26. A LC e obtida pela equival encia: R = 0, LC = A; R = 1, LC = B ; ... R = 25,LC = Z . Este m etodo se encontra em desuso. Foi usado na Receita do PR at e 96.
21.1.3
21.1.1
M odulo 10
Separe os d gitos do c odigo a processar. Ex: se o c odigo e 13865, tem-se d1 = 1, d2 = 3, d3 = 8, d4 = 6 e d5 = 5. Crie um vetor de pesos P, com o mesmo n umero de d gitos, e contendo 2 e 1, come cando com 2 e alternando. Ex: p1 = 2, p2 = 1, p3 = 2, p4 = 1, p5 = 2. Multiplique os dois vetores, tirando NOVES FORA em cada multiplica ca o. Ex: 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 multiplica ca o. Ex:2 + 3 + 7 + 6 + 1 = 19 O que faltar para completar a pr oxima dezena ser a o DV mod 10. No exemplo, o que falta a 19 para completar 20 e 1. Logo DV = 1. Obs: 1: noves fora: se x > 9, x x 9 ; 2:se deu a dezena, a resposta e 0.
a) S ao 2 DVs. b) O primeiro e calculado pelo MOD 11, com pesos = 10, 9, 8, 7, 6, 5, 4, 3, 2. c) O DV calculado e colocado no seu lugar e o processo refeito, agora com os pesos: 11, 10, 9, 8, 7, 6, 5, 4, 3, 2. d) O segundo d gito e colocado no seu lugar. Obs: O nono d gito de um CPF e a regi ao onde foi criado. 6=MG, 7=ES/RJ, 8=SP, 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 divis ao por 11 tem como resto 4. Logo o primeiro DV e 11 4 = 7. Refazendo 1 11+7 10+6 9+2 8+9 7+4 6+3 5+3 4+8 3+7 2 = 303,cujo resto da divis ao por 11 e 6. Assim, o DV e 11 6 = 5. O CPF completo ca sendo 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 e 999 999 999 - 99 e 000 000 000 - 00. Veja se acerta: . Resposta: 40. CPF = 357 432 754 CPF = 247 212 764 . Resposta: 27.
21.1.4
21.1.2
M odulo 11
Separe os d gitos. Crie vetor P. O menor peso e 2, alocado ao d gito mais a direita. A seq u encia de pesos cresce para a esquerda. Ex: 7, 6, 5, 4, 3, 2. A lei de forma ca o destes pesos PODE VARIAR em cada m etodo. O DV = 11 resto da soma dividido por 11.
vers ao de 10 de fevereiro de 2008
a) S ao 3 DVs. b) O DV1 ocupa a 8.posi ca o do c odigo e e um MOD 10 dos 7 d gitos iniciais. c) O DV2 ocupa a 13.posi ca o e e um MOD 11 de todos os anteriores com o vetor de pesos = 543298765432. d) O DV3 ocupa a 14.posi ca o e e um MOD 11 de todos os 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 e o que falta para a pr oxima dezena, NESTE CASO 50, ou DV1=7. Com isso o primeiro c odigo e: 76.483.817. Continuando: A lial e 0001, e ca: 76.483.817/0001. O DV2 e igual a: = 7 5 + 6 4 + 4 3 + 8 2 + 3 9 + 8 8 + 1 7 + 7 6 + 0 5 + 0 4 + 0 3 + 1 2 = 229. O DV2 e 11 menos o resto de 229 por 11 que e 2. DV3=76+65+44+83+32+89+18+77+06+05+04+13+22 = 254. O resto de 254 dividido por 11 e 1, logo o DV3=11-1=10 ou zero. Assim, o CNPJ completo da COPEL e: 76.483.817/0001-20.
88-08, Pedro Kantek
271
272
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. Observa ca o: Alguns CNPJs inexplicavelmente n ao seguem o aqui escrito. Aparentemente foram criados antes da regra. Por exemplo, o CGC da Light: 66 444 437/0001-46. 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
Exerc cio 6
21.2
Exerc cio 1
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. .
3= 7 4 7 7 8 3 4 4= 8 1 6 0 4 0 0
/0094/0069-
. .
Exerc cio 7
Calcule os d gitos dos Cadastros de Pessoa F sica:
Exerc cio 2
Calcule os d gitos dos Cadastros de Pessoa F sica:
1= 6 6 7 6 1 6 4 2 2 2= 6 0 6 9 9 1 4 9 5 3= 6 6 9 5 0 0 3 4= 3 3 9 7 7 2 1
. . /0005/0003. .
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. .
Exerc cio 8
Calcule os d gitos dos Cadastros de Pessoa F sica:
Exerc cio 3
Calcule os d gitos dos Cadastros de Pessoa F sica:
1= 5 2 2 8 4 2 5 3 4 2= 6 8 2 9 1 8 2 0 6 3= 7 2 0 8 7 2 7 4= 6 0 1 1 5 1 5
. . /0006/0028. .
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. .
Exerc cio 9
Calcule os d gitos dos Cadastros de Pessoa F sica:
Exerc cio 4
Calcule os d gitos dos Cadastros de Pessoa F sica:
1= 8 0 5 4 5 2 6 7 3 2= 8 1 5 9 7 1 9 3 1 3= 6 0 8 8 8 3 2 4= 9 2 6 9 8 9 4
. . /0005/0086. .
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. .
Exerc cio 10
Calcule os d gitos dos Cadastros de Pessoa F sica:
Exerc cio 5
Calcule os d gitos dos Cadastros de Pessoa F sica:
1= 4 5 1 2 4 4 4 0 2 2= 4 1 7 0 9 9 8 8 6 -
. .
. 273
88-08, Pedro Kantek
274
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
275
276
DECIMAL CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO 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
Cap tulo 22
Nos exerc cios a seguir, tente fazer as convers oes e as opera co es solicitadas: 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. Subtra coes em base diferente de 10 00176(18) - 00128(18) = ________________(18) 00297(12) - 00181(12) = ________________(12) 000LF(26) - 000GP(26) = ________________(26) 000DD(27) - 00080(27) = ________________(27)
88-08, Pedro Kantek
A aritm etica, tal como a conhecemos, n ao sofre nenhuma mudan ca conceitual ou operacional se passarmos a usar bases n ao decimais. O sistema de numera ca o usado, desde que posicional, funciona legal. Para as opera co es a seguir, considere um conjunto de d gitos sujeito as seguintes regras: 1. O primeiro digito e sempre ZERO. 2. Existem tantos d gitos quanto e o valor da base. 3. Se forem necess arios mais de 10 d gitos, o 11o ser a a letra A, o 12o a letra B e assim por diante at e o 36o d gito que ser a o Z. Na soma individual, d gito a d gito, a regra e simples: se a soma for maior que a base, retira-se uma base do total e vai um... Na subtra ca o individual, d gito a d gito, se o n umero a subtrair e maior do que o n umero do qual vai ser feita a subtra ca o, empresta-se uma base do vizinho esquerdo. Exemplos: 27(10) + 45(10) = 2 7 + 4 5 ----7 2
Como 7 + 5 = 12 e 12 e maior do que a base, subtrai-se uma base (10) e o resultado e 2, e vai um. A resposta nal e 72. 94(10) - 59(10) = 9 4 5 9 ----3 5 Como 4 9 n ao pode ser feito (pois 9 > 4), a solu ca o e emprestar uma base do vizinho. Com isto, tem-se 4 + 10 = 14, e agora pode-se fazer 14 9, cujo resultado e 5. O um que foi emprestado do 9, deixa-o valendo apenas 8, e agora tem-se 8 5 = 3. O resultado nal e 35. Para facilitar, use a seguinte tabela: 277
278
DECIMAL CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO
DECIMAL CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO 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 convers ao de base qualquer para base 10 algoritmo "convers~ aoQ10" 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
22.1.1
Programa VISUALG
A seguir um programa escrito em VISUALG que resolve as adi c oes e subtra co es em bases n ao decimais. Note-se que o programa n ao faz nenhuma consist encia, e se algum erro aparecer, o programa abortar a. Eis alguns dos poss veis erros: Usar n umeros de comprimento maior que 9 d gitos Usar bases maiores do que 36 Escrever opera co es de subtra ca o cujo resultado seja negativo Incluir caracteres diferentes de 0..Znos operandos Usar opera co es diferentes de + e Usar espa cos em branco entre os d 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)
279
280
DECIMAL CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO 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 convers ao de base 10 para base qualquer algoritmo "convers~ ao10Q" 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"
vers ao de 10 de fevereiro de 2008
DECIMAL CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO
escreval ("Conversao de numeros de base 10 para base qualquer - v.1.1 - P.kantek 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) =
= =
(11) (12)
+ GN
(29)
= =
(29) (19)
+ 1A6
(19)
- F8 - I0
(17) (20)
= =
(17) (20)
281
282
DECIMAL CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO
DECIMAL CAP ITULO 22. EXERC ICIOS PRATICOS: 027 - ARITMETICA NAO 3. Somas em base diferente de 10 7J
(24)
22.3
Exerc cio 2
+ D3
(24)
= =
(24) (14)
152
(14)
+ 180
(14)
4. Subtra co es em base diferente de 10 2. Convers oes de base 10 para base Q 00939 00319
(10) (10)
1E0 JD
(18)
- 173
(18)
(18) (25)
= =
(13) (32)
(25)
- BG
(25)
22.4.1
3. Somas em base diferente de 10 108 IM
(22) (29)
Respostas
13R 2G9 181 Q3 KM 2D2 5C 8C 6F 5A 93 7M
+ 7F + 7A
(22) (29)
= =
1 990 273 738 410 2 985 1175 573 9V 3 883 516 483 72
(22) (29)
- 151 - 172
(13) (11)
= =
(13) (11)
22.4
Exerc cio 3
= =
(13) (30)
283
284
DE DATAS CAP ITULO 23. EXERC ICIOS PRATICOS: 031 - MANIPULAC AO A B C D F G H I R , o dia em quest ao e .
Cap tulo 23
E como R =
23.1.2
S erie de algoritmos e truques para calcular dias de semana e datas de feriados m oveis em nosso calend ario.
23.1.1
O algoritmo seguinte e devido ao astr onomo napolitano Aloysius Lilius e ao matem atico alem ao e jesuita Cristopher Clavius. Escrito no s eculo XVI e usado pelas igrejas ocidentais para calcular o dia do domingo de P ascoa. Existiram outros algoritmos antes 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 formula ca o: 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 e s abado, R = 1 e domingo, R = 2 e segunda, R = 3 e ter ca R=4 e quarta, R = 5 e quinta e R = 6 e sexta-feira. Exemplo: Calculemos o dia da semana de hoje, / / 285
Os 3 feriados m oveis (ter ca de carnaval, sexta feira santa e Corpus Christi) s ao baseados todos no dia do domingo de P ascoa. Portanto, a primeira coisa a fazer e calcular em que dia cai a P ascoa. Dado um ano com quatro digitos (maior que 1587), a P ascoa e: A ano mod 19 B (ano 100) C ano mod 100 D (B 4) E B mod 4 F (B + 8) 25 G (1 + B F ) 3 H ((19 A) + B + 15 (D + G)) mod 30 I (C 4) K C mod 4 L (32 + (2 E ) + (2 I ) (H + K )) mod 7 M ((A + (11 H ) + (22 L)) 451) P ((H + L + 114 (7 M )) 31) Q (H + L + 114 (7 M )) mod 31 A P ascoa e o dia Q+1 do m es P.
23.1.3
Bissexto
dia
A regra do bissexto pode ser assim descrita: sejam R4 resto da divis ao do ano por 4 R100 resto da divis ao do ano por 100 e R400 resto da divis ao do ano por 400. SE R4=0 ((R100 = 0) (R400 = 0)) o ano e bissexto sen ao n ao e. Outra maneira de descrever o algoritmo e usando SEs encadeados 1: se (ANO mod 400) = 0 ent ao 2: ... e bissexto 3: sen ao 4: se (ANO mod 100) = 0 ent ao 5: ... NAO e bissexto 6: sen ao 7: se (ANO mod 4) = 0 ent ao 8: ... e bissexto 9: sen ao 10: NAO e bissexto 11: mse 12: mse
88-08, Pedro Kantek
286
DE DATAS CAP ITULO 23. EXERC ICIOS PRATICOS: 031 - MANIPULAC AO mse Se lembrarmos que os dias de cada m es s ao 31, (28/29), 31, 30, 31, 30, 31, 31, 30, 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 n ao bissextos) ou V A 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 (anos bissextos) e calcularmos dc V A[P ] + Q ent ao dc e o dia absoluto a partir de 1/janeiro desse ano. A Sexta feira santa e dc 2, o carnaval e dc 47 e Corpus Christi e dc + 60 Note que os dias da semana sempre ser ao sexta, ter ca e quinta respectivamente. dccarn dc 47, dcsexs dc 2 e dccorp dc + 60 O m es de cada uma dessas datas, deve ser lido em VA vis-a-vis o valor de dcxxxx. Assim, se dcxxxx e 94, essa data corresponde a 4/abril, para um ano n ao bissexto. Mais formalmente: A passagem de dd,mm,aa para dc e dc = V A[mes] + dia 1. A passagem de dc para dd,mm,aa e: O dia corresponde a dc MENOS o maior elemento de VA menor ou igual a dc MAIS 1. Por exemplo, se dc e 100 e VA e 1 32 60 91 121... o dia ser a (100-91)+1= dia 10. O m es, por sua vez, corresponde ao ndice do elemento acima.
13:
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.2
Exerc cio 1
(0=sab, 1=dom,...6=sex)
23.8
/ /
Exerc cio 7
(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
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.3
Exerc cio 2
(0=sab, 1=dom,...6=sex)
23.9
Exerc cio 8
(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
vers ao de 10 de fevereiro de 2008
1. Calcule dia da semana do dia 16/ 7/1941 e informe: 2. Calcule o Carnaval de 1941 E o Corpus-Christi de 1941 / 288 /
/ / 287
88-08, Pedro Kantek
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
(ter ca) (segunda) (sexta) (quarta) (quinta) (ter ca) (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
289
290
DE OLEODUTO CAP ITULO 24. EXERC ICIOS PRATICOS: 035 - LOCALIZAC AO Supondo que o duto principal deva ser extendido no sentido leste-oeste, em qual ordenada ele deveria estar ? Proposta de solu c ao
Cap tulo 24
1. Como o sentido e leste-oeste, podem-se desprezar as abcissas. 2. Ficando apenas com as ordenadas, t em-se: 9, 26, 19, 14, 22, 20, 12, 4, 25. 3. Deslocando a origem dos indices, a m de diminuir o trabalho bra cal por meio de uma transla ca o, ca: 5, 22, 15, 10, 18, 16, 8, 0, 21 razo 4. E avel se supor que o duto esteja entre o ponto 0 e o ponto 22. Na realidade, entre 4 e 26, antes da transla ca o.
5. Para descobrir onde deve passar suponha-o localizado em cada um dos 9 po cos e me ca a quantidade de duto auxiliar necess ario. Neste caso temos: 80, 83, 54, 59, 61, 55, 65, 115 6. Como se pode ver o menor valor e de 54 km, correspondendo a ` ordenada 19, do terceiro po co. 7. A resposta esperada, portanto e 54,19, signicando que s ao necess arios 54m de 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 po cos, a resposta dever a ser a m edia 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
Suponha que voc e tem um terreno de 100 km 100 km contendo um certo n umero de po cos de petr oleo. O terreno ir a ser atravessado integralmente por um duto mestre, ao qual ir ao se ligar (sempre de maneira transversal, isto e, fazendo 90 graus) ramais auxiliares que conectar ao cada um dos po cos ao duto mestre.
Percebe-se que as dist ancias m nimas s ao: 35, 37, 37, 77, 67, 49, 35, 41 que correspondem aos po cos 1 e 7. Com isso, a ordenada do duto principal deve ser a m edia das duas ordenadas dos po cos: 13 + 16 = 29 2 = 14.5 km. A resposta deveria ser 35, 14.5. Lembrando, o valor 35 corresponde a quantidade de duto auxiliar necess aria. Observa co es Lembre que se o duto principal estiver na dire ca o norte-sul, vale o mesmo racioc nio visto acima, apenas mudando ordenadas por abcissas, e desprezando-se o segundo n umero das coordenadas de cada po co. Finalmente, o algoritmo aqui esbo cado, a quem poder amos chamar de for ca bruta, funciona e apresenta o resultado correto. Entretanto voc e e livre para procurar outro algoritmo que seja mais eciente, (mas que funcione tamb em, e claro.)
O objetivo do exerc cio e descobrir por onde dever a passar o duto mestre, de maneira a minimizar a quantidade de duto auxiliar necess ario. O duto mestre sempre ser a instalado no sentido NORTE-SUL ou no LESTE-OESTE, conforme explicitado no exerc cio. Outra coisa que voc e deve calcular e a quantidade de duto auxiliar necess ario (medido em kil ometros). Os po cos ser ao identicados pelas suas coordenadas (x, y ), sendo que a origem dos ndices, o ponto 0, 0, estar a localizado no canto inferior esquerdo do terreno. A primeira medida de cada po co (o x) indicar a a dist ancia no sentido leste-oeste e o segundo n umero (o y) indicar a a dist ancia no norte-sul. Assim, se um po co estiver nas coordenadas (12,78), ele se encontrar a 12 metros ` a direita da origem e 78 metros acima da mesma origem. Veja-se o seguinte exemplo: Suponha-se a seguinte ditribui ca o de po cos: x 11 10 17 5 16 13 1 26 15 y 9 26 19 14 22 20 12 4 25 291
24.2 24.3
x y
Suponha o duto principal no eixo L-W . Os po cos se encontram nas seguintes posi co es:
Para este caso, a metragem de duto auxiliar e de e a posi ca o do duto principal deve ser .
88-08, Pedro Kantek
292
DE OLEODUTO CAP ITULO 24. EXERC ICIOS PRATICOS: 035 - LOCALIZAC AO Mais, um: Suponha o duto principal no eixo N-S . Os po cos se encontram nas seguintes posi co es: x y 20 6 1 3 2 21 10 18 9 11 5 27 16 15 13 17 24 8
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
Para este caso, a metragem de duto auxiliar e de e a posicao do duto principal deve ser . Este exerc cio foi adaptado de CORMEN, T. et alli, Algoritmos, p ag 155 (edi ca o brasileira).
24.4
Exerc cio 2
Suponha o duto principal no eixo N-S . Os po cos se encontram nas seguintes posi co es: 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 e de e a posi ca o do duto principal deve ser .
Mais, um: Suponha o duto principal no eixo L-W . Os po cos se encontram nas seguintes posi co es: 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 e de e a posicao do duto principal deve ser .
24.5
Exerc cio 3
Suponha o duto principal no eixo N-S . Os po cos se encontram nas seguintes posi co es: 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 e de e a posi ca o do duto principal deve ser .
Mais, um: Suponha o duto principal no eixo L-W . Os po cos se encontram nas seguintes posi co es: 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 e de e a posicao do duto principal deve ser .
vers ao de 10 de fevereiro de 2008
293
294
Cap tulo 25
X 14 Y4 enquanto X >7 fa ca YY+3 XX-4 menquanto imprima Y mfun ca o fun ca o A33 X5 para Y de 6 a 20 passo 3 fa ca X X + Y +9 mpara imprima X mfun ca o fun ca o A13 X 20 Y 19 enquanto X > 4 fa ca YY+X+3 XX-3 menquanto imprima Y mfun ca o fun ca o A41 X3 Y2 se X > 5 ent ao YY+X+4 sen ao Y Y - (X + 12) mse imprima Y mfun ca o fun ca o A22 X4 Y6 repita YY+2 XX+4 at e X >17 imprima Y mfun ca o fun ca o A34 296
vers ao de 10 de fevereiro de 2008
5.
1: 2: 3: 4: 5: 6: 7:
6.
1: 2: 3: 4: 5: 6: 7: 8: 9:
Nos trechos de algoritmos a seguir, voc e deve seguir a l ogica de cada trecho descobrindo qual o valor que e impresso ao nal.
25.2
1.
1: 2: 3: 4: 5: 6: 7:
Exerc cio 1
fun ca o A11 X 15 enquanto X >8 fa ca XX-4 menquanto imprima X mfun ca o fun ca o A21 X5 repita XX+4 at e X >18 imprima X mfun ca o 8. fun ca o A32 X0 para Y de 5 a 19 passo 3 fa ca XX+Y mpara imprima X mfun ca o fun ca o A12 295 9.
7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
2.
1: 2: 3: 4: 5: 6: 7:
1: 2: 3: 4: 5: 6: 7: 8: 9:
3.
1: 2: 3: 4: 5: 6: 7:
4.
1:
1:
X5 para Y de 3 a 21 passo 3 fa ca se (Y mod 2) = 0 ent ao XX+Y+4 sen ao XX+Y+1 mse mpara imprima X mfun ca o fun ca o A41 X4 Y4 se X > 8 Y>9 ent ao YY+X+3 sen ao Y Y - (X + 12 ) mse imprima Y mfun ca o fun ca o A23 X6 Y9 repita YY+X+3 XX+2 at e X 17 imprima Y mfun ca o fun ca o A11 X 18 enquanto X >5 fa ca XX-3 menquanto imprima X mfun ca o fun ca o A32 X1 para Y de 17 a 4 passo -3 fa ca XX+Y mpara imprima X mfun ca o fun ca o A21 297
88-08, Pedro Kantek
X6 repita XX+4 at e X >13 imprima X mfun ca o fun ca o A41 X3 Y4 se X 8 ent ao YY+X+5 sen ao Y Y - (X + 12) mse imprima Y mfun ca o fun ca o A13 X7 Y5 enquanto X 16 fa ca YY+X+4 XX+4 menquanto imprima Y mfun ca o fun ca o A33 X5 para Y de 3 a 17 passo 3 fa ca XX+Y+5 mpara imprima X mfun ca o
1 2 3 4 5 6
15.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
10.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
16.
1: 2: 3: 4: 5: 6: 7: 8: 9:
11.
1: 2: 3: 4: 5: 6: 7: 8: 9:
17.
1: 2: 3: 4: 5: 6: 7:
12.
1: 2: 3: 4: 5: 6: 7:
13.
1: 2: 3: 4: 5: 6: 7:
10
11
12
Respostas
13 14 15 16 17
25.3
1.
1:
Exerc cio 2
fun ca o A11 2: X 19 298
vers ao de 10 de fevereiro de 2008
14.
1:
4:
enquanto X >7 fa ca XX-2 5: menquanto 6: imprima X 7: mfun ca o fun ca o A21 X 10 repita XX+3 at e X 13 imprima X mfun ca o
mfun ca o fun ca o A41 X7 Y1 se X = 5 ent ao YY+X+7 sen ao Y Y - (X + 11) mse imprima Y mfun ca o fun ca o A22 X 17 Y 20 repita YY+3 XX-4 at e X 8 imprima Y mfun ca o fun ca o A34 X7 para Y de 4 a 19 passo 2 fa ca se (Y mod 2) = 0 ent ao XX+Y+5 sen ao XX+Y+1 mse mpara imprima X mfun ca o fun ca o A41 X1 Y6 se X = 4 Y<4 ent ao YY+X+4 sen ao Y Y - (X + 10) mse imprima Y mfun ca o
7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
2.
1: 2: 3: 4: 5: 6: 7:
8.
1: 2: 3: 4: 5: 6: 7: 8: 9:
3.
1: 2: 3: 4: 5: 6: 7:
fun ca o A32 X0 para Y de 3 a 18 passo 3 fa ca XX+Y mpara imprima X mfun ca o fun ca o A12 X4 Y4 enquanto X 18 fa ca YY+2 XX+3 menquanto imprima Y mfun ca o fun ca o A33 X3 para Y de 17 a 7 passo -3 fa ca XX+Y+6 mpara imprima X mfun ca o fun ca o A13 X 14 Y 20 enquanto X 3 fa ca YY+X+2 XX-3 menquanto imprima Y 299
88-08, Pedro Kantek
4.
1: 2: 3: 4: 5: 6: 7: 8: 9:
9.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
5.
1: 2: 3: 4: 5: 6: 7:
10.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
6.
1: 2: 3: 4: 5: 6: 7: 8:
300
repita YY+X+4 XX-4 at e X <10 imprima Y mfun ca o fun ca o A11 X9 enquanto X 13 fa ca XX+2 menquanto imprima X mfun ca o fun ca o A32 X0 para Y de 4 a 15 passo 2 fa ca XX+Y mpara imprima X mfun ca o fun ca o A21 X7 repita XX+3 at e X >17 imprima X mfun ca o fun ca o A41 X1 Y2 se X > 2 ent ao YY+X+5 sen ao Y Y - (X + 12) mse imprima Y mfun ca o fun ca o A13 X 16 Y 20 enquanto X 3 fa ca YY+X+3 XX-3 menquanto 301
88-08, Pedro Kantek
17.
1: 2: 3: 4: 5: 6: 7:
12.
1: 2: 3: 4: 5: 6: 7:
13.
1: 2: 3: 4: 5: 6: 7:
10
11
12
Respostas
13 14 15 16 17
14.
1: 2: 3: 4: 5: 6: 7:
25.4
1.
1: 2: 3: 4: 5: 6: 7:
Exerc cio 3
fun ca o A11 X6 enquanto X <17 fa ca XX+4 menquanto imprima X mfun ca o fun ca o A21 X 18 repita XX-2 at e X 7 imprima X mfun ca o fun ca o A32 X0 para Y de 3 a 18 passo 3 fa ca XX+Y mpara imprima X mfun ca o fun ca o A12 X 14 302
vers ao de 10 de fevereiro de 2008
15.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
2.
1: 2: 3: 4: 5: 6: 7:
3.
1: 2: 3: 4: 5: 6: 7:
16.
1: 2: 3: 4: 5: 6: 7:
4.
1: 2:
Y9 enquanto X 7 fa ca YY+4 XX-4 menquanto imprima Y mfun ca o fun ca o A33 X4 para Y de 5 a 14 passo 3 fa ca XX+Y+9 mpara imprima X mfun ca o fun ca o A13 X 15 Y 16 enquanto X 6 fa ca YY+X+4 XX-2 menquanto imprima Y mfun ca o fun ca o A41 X5 Y5 se X = 1 ent ao YY+X+8 sen ao Y Y - (X + 11) mse imprima Y mfun ca o fun ca o A22 X 20 Y 14 repita YY+4 XX-4 at e X <10 imprima Y mfun ca o fun ca o A34 X5 303
88-08, Pedro Kantek
5.
1: 2: 3: 4: 5: 6: 7:
para Y de 4 a 16 passo 2 fa ca se (Y mod 2) = 0 ent ao XX+Y+4 sen ao XX+Y+2 mse mpara imprima X mfun ca o fun ca o A41 X1 Y7 se X 9Y<4 ent ao YY+X+4 sen ao Y Y - (X + 11) mse imprima Y mfun ca o fun ca o A23 X 19 Y 18 repita YY+X+2 XX-2 at e X<9 imprima Y mfun ca o fun ca o A11 X7 enquanto X <13 fa ca XX+3 menquanto imprima X mfun ca o fun ca o A32 X0 para Y de 4 a 18 passo 3 fa ca XX+Y mpara imprima X mfun ca o fun ca o A21 X8 304
vers ao de 10 de fevereiro de 2008
10.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
6.
1: 2: 3: 4: 5: 6: 7: 8: 9:
11.
1: 2: 3: 4: 5: 6: 7: 8: 9:
7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
12.
1: 2: 3: 4: 5: 6: 7:
8.
1: 2: 3: 4: 5: 6: 7: 8: 9:
13.
1: 2: 3: 4: 5: 6: 7:
9.
1: 2:
14.
1: 2:
15. fun ca o A41 X7 Y6 se X > 9 ent ao YY+X+9 sen ao Y Y - (X + 12) mse imprima Y mfun ca o fun ca o A13 X7 Y8 enquanto X 15 fa ca YY+X+4 XX+4 menquanto imprima Y mfun ca o fun ca o A33 X7 para Y de 4 a 20 passo 2 fa ca XX+Y+5 mpara imprima X mfun ca o
1 2 3 4 5 6
10:
16.
1: 2: 3: 4: 5: 6: 7: 8: 9:
17.
1: 2: 3: 4: 5: 6: 7:
10
11
12
Respostas
13 14 15 16 17
25.5
1 2 3
Respostas
7 7 18 21 13 6 55 63 63 10 110 112 -13 14 77 66 -17 17 78 91 -11 305 14 105 -12 93 29 135 -5 76 26 103 -5 114 3 15 13 56 54 50 14 12 19 -11 20 -13 50 75 85 70 53 160
88-08, Pedro Kantek
306
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU
6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
Cap tulo 26
enquanto y < n fa ca se 0=n mod y ent ao x x+1 mse y y+1 menquanto imprima x n n+incr ct++ menquanto mfun ca o
26.1
Por exemplo
fun ca o seq2 (inteiro alfa xn2 xn1) ct 1 enquanto ct < 9 fa ca ax (alfa xn2) + xn1 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfun ca o
Seja o seguinte algoritmo: 1: fun ca o seq1 (inteiro n incr) 2: ct 1 3: enquanto ct < 9 fa ca 4: y2 5: x2 6: enquanto y < n fa ca 7: se 0=n mod y ent ao 8: x x+1 9: mse 10: y y+1 11: menquanto 12: imprima x 13: n n+incr 14: ct++ 15: menquanto 16: mfun ca o Este algoritmo, se chamado seq1(3,7) dar a como resposta 2, 4, 2, 8, ..., e o oitavo elemento ser a 6. Se chamado com seq1(4,8) a resposta ser a 3, 6, 6, 6, ... 12 e se chamado com seq1(33,55) dar a 4, 8, 4, 12, ... 8.
Sendo chamado com seq2( 3 , 3 , 6 ) Gerando os 4 primeiros n umeros: 15, 33, 78, 177 3.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
fun ca o seq3 (inteiro xn2 xn1) ct 1 enquanto ct < 9 fa ca ax (teto(sqrt(xn1))) xn2 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfun ca o
Sendo chamado com seq3( 6 , 7 ) Gerando os 4 primeiros n umeros: 18, 35, 108, 385 4.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
26.2
1.
1: 2: 3: 4: 5:
Exerc cio 1
fun ca o seq1 (inteiro n incr) ct 1 enquanto ct < 9 fa ca y2 x2 307
fun ca o seq4 (inteiro xn) ct 1 enquanto ct < 9 fa ca se xn mod 2 = 0 ent ao ax 1 + 3 xn sen ao ax (4 xn)-1 mse imprima ax xn ax ct++ menquanto mfun ca o 308
vers ao de 10 de fevereiro de 2008
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU Sendo chamado com seq4( 3 ) Gerando os 4 primeiros n umeros: 11, 43, 171, 683 5.
1: 2: 3: 4: 5: 6: 7: 8: 9:
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU
5: 6: 7: 8: 9: 10: 11: 12: 13:
fun ca o seq5 (inteiro xn1) ct 1 enquanto ct < 9 fa ca ax xn1 + (ct-1)ct mod 3 imprima ax xn1 ax ct++ menquanto mfun ca o
x (ct mod 3)+(ct mod 4)+(ct mod 5) sen ao x (ct mod 2)+(ct mod 3)+(ct mod 4) mse x x+zz imprima x ct ct+1 menquanto mfun ca o
Sendo chamado com seq8( 9 ) Gerando os 4 primeiros n umeros: 12, 15, 13, 14
1 2 3 4 5 6 7 8
fun ca o seq6 (inteiro xn2 xn1) ct 1 repita ax chao(sqrt(xn1)) bx 3 xn2 cx ax + bx imprima cx xn2 xn1 xn1 cx ct++ at e ct > 8 mfun ca o
Respostas
26.3
1.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
Exerc cio 2
fun ca o seq1 (inteiro n incr) ct 1 enquanto ct < 9 fa ca y2 x2 enquanto y < n fa ca se 0=n mod y ent ao x x+1 mse y y+1 menquanto imprima x n n+incr ct++ menquanto mfun ca o
Sendo chamado com seq6( 5 , 4 ) Gerando os 4 primeiros n umeros: 17, 16, 55, 55 7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
fun ca o seq7 (inteiro x) ct 1 repita se ct < 3 ent ao ax x 4 sen ao se ct<6 ent ao ax x 3 sen ao ax x 2 mse mse imprima ax x ax ct ct+2 at e ct > 16 mfun ca o
Sendo chamado com seq7( 5 ) Gerando os 4 primeiros n umeros: 20, 60, 180, 360 8.
1: 2: 3:
fun ca o seq2 (inteiro alfa xn2 xn1) ct 1 enquanto ct < 9 fa ca ax (alfa xn2) + xn1 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfun ca o
Sendo chamado com seq2( 5 , 4 , 5 ) Gerando os 4 primeiros n umeros: 25, 50, 175, 425 3.
1: 2:
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU
3: 4: 5: 6: 7: 8: 9: 10:
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU 7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
enquanto ct < 9 fa ca ax (teto(sqrt(xn1))) xn2 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfun ca o
Sendo chamado com seq3( 5 , 7 ) Gerando os 4 primeiros n umeros: 15, 28, 90, 280 4.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
fun ca o seq4 (inteiro xn) ct 1 enquanto ct < 9 fa ca se xn mod 2 = 0 ent ao ax 1 + 3 xn sen ao ax (4 xn)-1 mse imprima ax xn ax ct++ menquanto mfun ca o
fun ca o seq7 (inteiro x) ct 1 repita se ct < 3 ent ao ax x 4 sen ao se ct<6 ent ao ax x 3 sen ao ax x 2 mse mse imprima ax x ax ct ct+2 at e ct > 16 mfun ca o
Sendo chamado com seq7( 5 ) Gerando os 4 primeiros n umeros: 20, 60, 180, 360 8.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
Sendo chamado com seq4( 8 ) Gerando os 4 primeiros n umeros: 25, 99, 395, 1579 5.
1: 2: 3: 4: 5: 6: 7: 8: 9:
fun ca o seq5 (inteiro xn1) ct 1 enquanto ct < 9 fa ca ax xn1 + (ct-1)ct mod 3 imprima ax xn1 ax ct++ menquanto mfun ca o
fun ca o seq8 (inteiro zz) ct 1 enquanto ct < 9 fa ca se ct mod 2 = 0 ent ao x (ct mod 3)+(ct mod 4)+(ct mod 5) sen ao x (ct mod 2)+(ct mod 3)+(ct mod 4) mse x x+zz imprima x ct ct+1 menquanto mfun ca o
Sendo chamado com seq8( 10 ) Gerando os 4 primeiros n umeros: 13, 16, 14, 15
1 2 3 4 5 6 7 8
fun ca o seq6 (inteiro xn2 xn1) ct 1 repita ax chao(sqrt(xn1)) bx 3 xn2 cx ax + bx imprima cx xn2 xn1 xn1 cx ct++ at e ct > 8 mfun ca o
Respostas
26.4
1.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 88-08, Pedro Kantek
Exerc cio 3
fun ca o seq1 (inteiro n incr) ct 1 enquanto ct < 9 fa ca y2 x2 enquanto y < n fa ca se 0=n mod y ent ao x x+1 mse y y+1 312
vers ao de 10 de fevereiro de 2008
Sendo chamado com seq6( 9 , 4 ) Gerando os 4 primeiros n umeros: 29, 17, 91, 60
vers ao de 10 de fevereiro de 2008
311
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU
11: 12: 13: 14: 15: 16:
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU
4: 5: 6: 7: 8: 9:
fun ca o seq2 (inteiro alfa xn2 xn1) ct 1 enquanto ct < 9 fa ca ax (alfa xn2) + xn1 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfun ca o
Sendo chamado com seq2( 5 , 4 , 6 ) Gerando os 4 primeiros n umeros: 26, 56, 186, 466 3.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
fun ca o seq6 (inteiro xn2 xn1) ct 1 repita ax chao(sqrt(xn1)) bx 3 xn2 cx ax + bx imprima cx xn2 xn1 xn1 cx ct++ at e ct > 8 mfun ca o
fun ca o seq3 (inteiro xn2 xn1) ct 1 enquanto ct < 9 fa ca ax (teto(sqrt(xn1))) xn2 xn2 xn1 xn1 ax imprima ax ct++ menquanto mfun ca o
Sendo chamado com seq6( 6 , 5 ) Gerando os 4 primeiros n umeros: 20, 19, 64, 65 7.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
Sendo chamado com seq3( 6 , 7 ) Gerando os 4 primeiros n umeros: 18, 35, 108, 385 4.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
fun ca o seq4 (inteiro xn) ct 1 enquanto ct < 9 fa ca se xn mod 2 = 0 ent ao ax 1 + 3 xn sen ao ax (4 xn)-1 mse imprima ax xn ax ct++ menquanto mfun ca o
fun ca o seq7 (inteiro x) ct 1 repita se ct < 3 ent ao ax x 4 sen ao se ct<6 ent ao ax x 3 sen ao ax x 2 mse mse imprima ax x ax ct ct+2 at e ct > 16 mfun ca o
Sendo chamado com seq7( 7 ) Gerando os 4 primeiros n umeros: 28, 84, 252, 504 8.
1: 2: 3: 4: 5: 6: 7: 8: 9:
Sendo chamado com seq4( 6 ) Gerando os 4 primeiros n umeros: 19, 75, 299, 1195 5.
1: 2:
fun ca o seq8 (inteiro zz) ct 1 enquanto ct < 9 fa ca se ct mod 2 = 0 ent ao x (ct mod 3)+(ct mod 4)+(ct mod 5) sen ao x (ct mod 2)+(ct mod 3)+(ct mod 4) mse x x+zz 314
vers ao de 10 de fevereiro de 2008
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU imprima x ct ct+1 12: menquanto 13: mfun ca o
10: 11:
ENCIAS CAP ITULO 26. EXERC ICIOS PRATICOS: 057 - CONTINUAR SEQU
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
315
316
CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA 723 10 2 3 Percebe-se que a inicializa ca o original do A foi 1. A resposta deste exemplo portanto, e 1.
Cap tulo 27
27.2
Exerc cio 1
A seguir, diversos algoritmos. Em cada um deles, voc e deve dizer qual o valor inicial da vari avel A.
1 fun ca o A1 A . 3: B 7 4: C 13 5: enquanto (A + B) > 4 fa ca 6: se A > C ent ao 7: AA-1 8: sen ao 9: AA+1 10: mse 11: BB-2 12: imprima A, B, C 13: menquanto Esta execu ca o deu como resultado 6 5 13 7 3 13 8 1 13 9 -1 13 10 -3 13 11 -5 13 12 -7 13 13 -9 13
1: 2:
Se a programa ca o fosse mais engenharia e menos arte, talvez n ao precis assemos tanto usar os dons de Sherlock Holmes para corrigir programas. Infelizmente (ou ser a felizmente ??) tal n ao ocorre, e um programador prossional gasta mais de 50% do seu tempo procurando e corrigindo erros em programas. tarefa dif ` vezes um ponto fora do lugar p E cil, sutil, complexa e delicada. As oe a t perder um imenso projeto. E ao importante a tarefa que se diz que bom programador n ao e aquele de programa bem, mas aquele que depura bem. A prop osito, depurar e identicar, localizar e corrigir erros, de maneira continuada e integrada para produzir software de qualidade. O exerc cio de hoje, visa estimular esta habilidade. Voc e vai receber alguns c odigos e alguns resultados, e dever a inferir quais as inicializa co es originais das vari aveis em cada c odigo. Por exemplo, no algoritmo 1: fun ca o EXEMPLO . 2: A 3: B 2 4: C 3 5: enquanto A < 10 fa ca 6: se (B mod 3) = 0 ent ao 7: AA+1 8: sen ao 9: AA+2 10: mse 11: se (C mod 4) = 0 ent ao 12: BB+2 13: sen ao 14: AA+1 15: mse 16: imprima A, B, C 17: menquanto Analisando as sa das, que s ao: 423 317
2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
fun ca o A2 . A B9 C 11 enquanto (C = 0) (C = 1) fa ca se (B mod 5) = 0 ent ao BB-1 mse se (A mod 3) = 0 ent ao AA+1 mse se (A > B) ent ao AA+2 mse CC-1 318
vers ao de 10 de fevereiro de 2008
CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA se C > B ent ao BB-3 14: mse 15: imprima A, B, C 16: AA-1 17: BB-1 18: CC-2 19: menquanto Esta execu ca o deu como resultado 11 15 13 10 14 11 8 13 9 7 12 7 6 11 5
12: 13:
13 15 18 21 24 27 30 33 36 39
3 fun ca o A3 A . B3 4: C 5 5: repita 6: AA+1 7: BB+1 8: CC+1 9: enquanto C > 10 fa ca 10: CC-2 11: menquanto 12: se (C = 3) (B = 2) ent ao 13: AA+2 14: mse 15: imprima A, B, C 16: at e (A + B + C ) > 30 Esta execu ca o deu como resultado 646 957 12 6 8 15 7 9
1: 2: 3:
Respostas Escreva aqui os valores presumidos para as 4 vari aveis A de cada um dos 4 algoritmos
1 2 3 4
27.3
Exerc cio 2
A seguir, diversos algoritmos. Em cada um deles, voc e deve dizer qual o valor inicial da vari avel A. 1 fun ca o A1 . A 3: B 7 4: C 11 5: enquanto (A + B) > 4 fa ca 6: se A > C ent ao 7: AA-1 8: sen ao 9: AA+1 10: mse 11: BB-2 12: imprima A, B, C 13: menquanto Esta execu ca o deu como resultado 7 5 11 8 3 11 9 1 11 10 -1 11 11 -3 11 12 -5 11 11 -7 11
1: 2:
4
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
fun ca o A4 . A B 15 C 13 enquanto (A>10) (B>10) (C>10) fa ca se A > B ent ao CC-1 mse se (B mod 3) = 1 ent ao AA-1 mse 319
88-08, Pedro Kantek
320
fun ca o A2 . A B 10 C9 enquanto (C = 0) (C = 1) fa ca se (B mod 5) = 0 ent ao BB-1 mse se (A mod 3) = 0 ent ao AA+1 mse se (A > B) ent ao AA+2 mse CC-1 imprima A, B, C menquanto Esta execu ca o deu como resultado 10 8 10 7 10 6 10 5 10 4 10 3 10 2 10 1
4 fun ca o A4 . A 3: B 12 4: C 13 5: enquanto (A>10) (B>10) (C>10) fa ca 6: se A > B ent ao 7: CC-1 8: mse 9: se (B mod 3) = 1 ent ao 10: AA-1 11: mse 12: se C > B ent ao 13: BB-3 14: mse 15: imprima A, B, C 16: AA-1 17: BB-1 18: CC-2 19: menquanto Esta execu ca o deu como resultado 12 9 13 11 5 10
1: 2:
16 18 21 24 27 30 33 36
Respostas Escreva aqui os valores presumidos para as 4 vari aveis A de cada um dos 4 algoritmos 3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
1 2 3 4
fun ca o A3 A . B2 C5 repita AA+1 BB+1 CC+1 enquanto C > 10 fa ca CC-2 menquanto se (C = 3) (B = 2) ent ao AA+2 mse imprima A, B, C at e (A + B + C ) > 30
27.4
Exerc cio 3
A seguir, diversos algoritmos. Em cada um deles, voc e deve dizer qual o valor inicial da vari avel A. 1
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
fun ca o A1 A . B8 C9 enquanto (A + B) > 4 fa ca se A > C ent ao AA-1 sen ao AA+1 mse BB-2 imprima A, B, C 322
vers ao de 10 de fevereiro de 2008
321
CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA menquanto Esta execu ca o deu como resultado 769 849 929 10 0 9 9 -2 9 10 -4 9 9 -6 9
13: 10:
CAP ITULO 27. EXERC ICIOS PRATICOS: 062 - ENGENHARIA REVERSA CC-2 menquanto 12: se (C = 3) (B = 2) ent ao 13: AA+2 14: mse 15: imprima A, B, C 16: at e (A + B + C ) > 30 Esta execu ca o deu como resultado 843 11 5 4 14 6 5 17 7 6 20 8 7
11:
2 fun ca o A2 . A 3: B 9 4: C 10 5: enquanto (C = 0) (C = 1) fa ca 6: se (B mod 5) = 0 ent ao 7: BB-1 8: mse 9: se (A mod 3) = 0 ent ao 10: AA+1 11: mse 12: se (A > B) ent ao 13: AA+2 14: mse 15: CC-1 16: imprima A, B, C 17: menquanto Esta execu ca o deu como resultado 13 8 9 15 7 8 18 6 7 21 5 6 24 5 5 27 5 4 30 5 3 33 5 2 36 5 1
1: 2:
4 fun ca o A4 A . 3: B 14 4: C 15 5: enquanto (A>10) (B>10) (C>10) fa ca 6: se A > B ent ao 7: CC-1 8: mse 9: se (B mod 3) = 1 ent ao 10: AA-1 11: mse 12: se C > B ent ao 13: BB-3 14: mse 15: imprima A, B, C 16: AA-1 17: BB-1 18: CC-2 19: menquanto Esta execu ca o deu como resultado 15 14 14 13 13 11 12 12 9 11 11 7
1: 2:
3
1: 2: 3: 4: 5: 6: 7: 8: 9:
Respostas Escreva aqui os valores presumidos para as 4 vari aveis A de cada um dos 4 algoritmos
1 2 3 4
27.5
1
Respostas
5 11 3 11 324
vers ao de 10 de fevereiro de 2008
325
326
CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
32: 33:
Cap tulo 28
Exerc cio 1
14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
fun ca o programa11 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 fa ca C2 se C=4 ent ao T2 enquanto T<2 fa ca II+2 GG+3 SS+A+3 TT+1 menquanto sen ao Q3 repita FF+D+3 WW+1 LL+2 QQ+2 at e Q9 mse VV+1 menquanto UU+1 at e U>5 327
fun ca o programa12 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 ent ao P1 repita H2 enquanto H8 fa ca C3 se C=3 ent ao MM+3 TT+2 sen ao EE+3 OO+C+2 KK+A+1 XX+D+3 YY+D+1 mse HH+1 menquanto PP+1 at e P>6 sen ao N3 enquanto N<8 fa ca G2 enquanto G<5 fa ca RR+B+1 II+1 VV+3 GG+2 menquanto NN+1 menquanto mse imprima K+P+M+V mfun ca o
3
1:
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:
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:
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 ent ao S2 enquanto S3 fa ca Q2 enquanto Q<8 fa ca U3 enquanto U<3 fa ca ZZ+3 FF+1 VV+B+3 UU+2 menquanto QQ+2 menquanto SS+2 menquanto sen ao P1 repita I1 repita O2 repita K3 repita KK+1 at e K8 OO+2 at e O9 II+2 at e I 2 PP+1 at e P6 mse imprima Z+D+I+F mfun ca o
A8 se A>6 ent ao A7 se A>9 ent ao Z1 repita V3 enquanto V2 fa ca D8 se D9 ent ao WW+B+1 FF+A+1 NN+C+3 HH+C+2 KK+1 sen ao SS+B+2 RR+D+3 II+A+1 PP+B+1 QQ+2 mse VV+1 menquanto ZZ+1 at e Z 8 mse sen ao B7 se B=9 ent ao E2 repita Y2 repita YY+2 at e Y2 EE+2 at e E>8 mse mse imprima K+B+F+P mfun ca o
1 2 3 4
4
1: 2: 3: 4: 5: 6: 7: 8: 9:
fun ca o programa14 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 Q3 E1 Y3 329
88-08, Pedro Kantek
Respostas
28.2
1
1:
Exerc cio 2
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:
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:
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 fa ca C1 se C>7 ent ao V2 enquanto V<1 fa ca QQ+D+3 ZZ+A+1 TT+A+3 VV+1 menquanto sen ao H3 repita KK+C+1 II+D+1 JJ+B+3 HH+2 at e H>7 mse SS+1 menquanto MM+1 at e M>9 imprima T+A+Z+H mfun ca o
II+A+1 sen ao PP+B+1 VV+2 EE+3 FF+1 HH+1 mse RR+1 menquanto KK+1 at e K8 sen ao G2 enquanto G<5 fa ca L2 enquanto L<7 fa ca MM+A+2 JJ+B+2 SS+1 LL+2 menquanto GG+1 menquanto mse imprima F+E+J+B mfun ca o
3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
fun ca o programa12 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 ent ao K2 repita R1 enquanto R4 fa ca A4 se A8 ent ao XX+B+3 331
88-08, Pedro Kantek
fun ca o programa13 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 ent ao M2 enquanto M<9 fa ca U3 enquanto U<2 fa ca N3 enquanto N6 fa ca JJ+1 VV+3 EE+3 NN+2 menquanto UU+2 menquanto MM+2 menquanto sen ao 332
vers ao de 10 de fevereiro de 2008
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:
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:
X3 repita R3 repita I3 repita K3 repita KK+2 at e K>7 II+1 at e I 8 RR+2 at e R8 XX+2 at e X4 mse imprima M+K+C+R mfun ca o
FF+2 menquanto NN+1 at e N4 mse sen ao C4 se C=4 ent ao S2 repita Y2 repita YY+2 at e Y>2 SS+2 at e S8 mse mse imprima Z+O+D+Y mfun ca o
1 2 3 4
4
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
fun ca o programa14 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 ent ao C5 se C3 ent ao N2 repita F2 enquanto F8 fa ca D8 se D=1 ent ao VV+3 HH+1 GG+D+3 EE+1 ZZ+D+1 sen ao XX+C+1 OO+3 MM+3 II+2 WW+2 mse 333
88-08, Pedro Kantek
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
fun ca o programa11 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 fa ca D3 se D<1 ent ao F3 enquanto F<1 fa ca LL+C+3 GG+C+1 YY+A+1 FF+2 menquanto sen ao N3 repita XX+A+3 KK+B+1 334
vers ao de 10 de fevereiro de 2008
CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA TT+1 menquanto 43: mse 44: imprima I+P+C+J 45: mfun ca o
41: 42:
VV+C+2 NN+1 at e N>3 mse MM+2 menquanto EE+1 at e E2 imprima M+K+C+F mfun ca o
3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
fun ca o programa12 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 ent ao N2 repita M3 enquanto M7 fa ca D5 se D6 ent ao OO+2 II+1 sen ao JJ+2 GG+B+2 KK+C+1 PP+1 EE+1 mse MM+2 menquanto NN+1 at e N9 sen ao T3 enquanto T<5 fa ca F2 enquanto F3 fa ca UU+B+2 QQ+C+2 WW+3 FF+1 menquanto 335
88-08, Pedro Kantek
fun ca o programa13 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 ent ao P3 enquanto P<9 fa ca N3 enquanto N<2 fa ca U3 enquanto U6 fa ca MM+A+1 YY+1 II+1 UU+2 menquanto NN+2 menquanto PP+2 menquanto sen ao V3 repita F2 repita H3 repita S2 repita SS+1 at e S4 HH+2 at e H>9 FF+1 at e F6 VV+2 at e V3 mse imprima V+M+A+D mfun ca o
4
1:
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:
CAP ITULO 28. EXERC ICIOS PRATICOS: 065 - SE, ENQUANTO, REPITA
1 2 3 4
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 ent ao D7 se D=6 ent ao X1 repita T3 enquanto T<3 fa ca D4 se D4 ent ao YY+D+3 LL+1 II+2 HH+D+1 ZZ+2 sen ao QQ+2 UU+3 MM+3 OO+2 JJ+3 mse TT+1 menquanto XX+2 at e X1 mse sen ao B8 se B<3 ent ao N3 repita K1 repita KK+1 at e K6 NN+2 at e N7 mse mse imprima Y+D+X+Q mfun ca o
Respostas
28.4
1 2 3
Respostas
12 17 23 41 10 9 9 17 7 8 11 14
337
338
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 )) fa ca 9: se (F < 1) ent ao 10: G G+1 11: mse 12: enquanto ((F > 4) (G 16)) fa ca 13: G G+2 14: F F 2 15: se (I > 13) ent ao 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)
Cap tulo 29
A seguir existem 4 algoritmos que foram gerados de maneira aleat oria. Todos est ao corretos, n ao entram em loop, geram valores perfeitamente determinados e todos t em complexidade aceit avel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas 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) fa ca 9: se (A < 7) ent ao 10: B B+1 11: mse 12: enquanto (A > (4 6)) fa ca 13: B A+B+2 14: A A2 15: E E+7 16: se (D > (E 13)) ent ao 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)
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) fa ca 9: LL+1 10: se (N 3) ent ao 11: enquanto (M 12) fa ca 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) fa ca 20: N N +1 21: menquanto 22: menquanto 23: imprima (K + L + M + N + P ) Algoritmo 4 339
88-08, Pedro Kantek
340
(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) ent ao R R+1 mse se (T > 11) ent ao S S+2 mse enquanto (U 17) fa ca U U +4 se (S > 10) ent ao T T +1 mse menquanto QQ+2 at e ((Q > 0) (R = 0)) imprima (Q + R + S + T + U ) (Q+R+S+T+U)
SOMA =
SOMA =
29.2
Exerc cio 2
A seguir existem 4 algoritmos que foram gerados de maneira aleat oria. Todos est ao corretos, n ao entram em loop, geram valores perfeitamente determinados e todos t em complexidade aceit avel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas 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) fa ca 9: se (A < 1) ent ao 10: B B+1 11: mse 12: enquanto (A > (6 6)) fa ca 13: B A+B+2 14: A A2
vers ao de 10 de fevereiro de 2008
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 )) fa ca 9: se (F < 20) ent ao 10: G G+1 11: mse 12: enquanto ((F > 3) (G 5)) fa ca 13: G G+2 14: F F 2 15: se (I > 5) ent ao 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) fa ca 9: LL+1 10: se (N 17) ent ao 11: enquanto (M 3) fa ca 12: M M +6 13: menquanto 341
88-08, Pedro Kantek 88-08, Pedro Kantek
342
SOMA =
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) ent ao 10: R R+1 11: mse 12: se (T > 17) ent ao 13: S S+2 14: mse 15: enquanto (U 19) fa ca 16: U U +4 17: se (S > 5) ent ao 18: T T +1 19: mse 20: menquanto 21: QQ+2 22: at e ((Q > 0) (R = 0)) 23: imprima (Q + R + S + T + U ) SOMA = (Q+R+S+T+U)
inteiro A, B, C, D, E A 14 B 4 C 1 D3 E 5 enquanto (D > 0) fa ca se (A < 17) ent ao B B+1 mse enquanto (A > (2 6)) fa ca B A+B+2 A A2 E E + 3 se (D > (E 20)) ent ao C C + 10 mse menquanto D D4 menquanto imprima (A + B + C + D + E ) (A+B+C+D+E)
SOMA =
29.3
Exerc cio 3
A seguir existem 4 algoritmos que foram gerados de maneira aleat oria. Todos est ao corretos, n ao entram em loop, geram valores perfeitamente determinados e todos t em complexidade aceit avel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas pedidas. Algoritmo 1 1: Algoritmo 1
vers ao de 10 de fevereiro de 2008
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 )) fa ca 9: se (F < 16) ent ao 10: G G+1 11: mse 12: enquanto ((F > 2) (G 18)) fa ca 13: G G+2 14: F F 2 15: se (I > 8) ent ao 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 343
88-08, Pedro Kantek 88-08, Pedro Kantek
344
CAP ITULO 29. EXERC ICIOS PRATICOS: 069 - 4 ALGORITMOS SOMA = (Q+R+S+T+U)
Algoritmo 3 inteiro K, L, M, N, P K 13 L 9 M 0 N 19 P 15 enquanto (K 1) fa ca LL+1 se (N 4) ent ao enquanto (M 18) fa ca M M +6 menquanto M M +1 mse K K 3 N N +1 P P +2K enquanto (N mod 3 = 0) fa ca N N +1 menquanto menquanto imprima (K + L + M + N + P ) (K+L+M+N+P)
29.4
Exerc cio 4
A seguir existem 4 algoritmos que foram gerados de maneira aleat oria. Todos est ao corretos, n ao entram em loop, geram valores perfeitamente determinados e todos t em complexidade aceit avel. Execute os testes de mesa pedidos e ao nal calcule as 4 somas 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) fa ca 9: se (A < 4) ent ao 10: B B+1 11: mse 12: enquanto (A > (9 6)) fa ca 13: B A+B+2 14: A A2 15: E E + 5 16: se (D > (E 12)) ent ao 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)
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) ent ao 10: R R+1 11: mse 12: se (T > 17) ent ao 13: S S+2 14: mse 15: enquanto (U 18) fa ca 16: U U +4 17: se (S > 2) ent ao 18: T T +1 19: mse 20: menquanto 21: QQ+2 22: at e ((Q > 0) (R = 0)) 23: imprima (Q + R + S + T + U )
vers ao de 10 de fevereiro de 2008
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 )) fa ca 9: se (F < 17) ent ao 10: G G+1 11: mse 12: enquanto ((F > 4) (G 1)) fa ca 13: G G+2 14: F F 2 345
88-08, Pedro Kantek 88-08, Pedro Kantek
346
SOMA =
S S+2 mse enquanto (U 18) fa ca U U +4 se (S > 2) ent ao T T +1 mse menquanto QQ+2 at e ((Q > 0) (R = 0)) imprima (Q + R + S + T + U ) (Q+R+S+T+U)
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) fa ca 9: LL+1 10: se (N 17) ent ao 11: enquanto (M 12) fa ca 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) fa ca 20: N N +1 21: menquanto 22: menquanto 23: imprima (K + L + M + N + P ) SOMA = (K+L+M+N+P)
SOMA =
29.5
1 2 3 4
Respostas
67 -27 121 -4 32 76 16 32 48 36 32 50 61 47 41 31
Algoritmo 4 1: Algoritmo 4 2: inteiro Q, 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) ent ao 10: R R+1 11: mse 12: se (T > 6) ent ao
vers ao de 10 de fevereiro de 2008
347
348
CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO para I de 1 at e 10 fa ca imprima (x + I )3 3: mpara Para a seq u encia 512 729 1000 1331 1728 2197 2744 3375 4096 4913, pode-se ver que o 10o valor da seq u encia e 4913, j a que x = 7.
1: 2:
Cap tulo 30
Seq u encia 5 1: para I de 1 at e 10 fa ca 2: imprima (x I )2 3: mpara Para a seq u encia 36 144 324 576 900 1296 1764 2304 2916 3600, pode-se ver que o 10o valor da seq u encia e 3600, j a que x = 6. Seq u encia 6 1: para I de 1 at e 10 fa ca 2: imprima (x I )3 3: mpara Para a seq u encia 8 64 216 512 1000 1728 2744 4096 5832 8000, pode-se ver que o 10o valor da seq u encia e 8000, j a que x = 2. Seq u encia 7 1: para I de 1 at e 10 fa ca 2: imprima xI 3: mpara Para a seq u encia 2 4 8 16 32 64 128 256 512 1024, pode-se ver que o 10o valor da seq u encia e 1024, j a que x = 2. Seq u encia 8 1: para I de 1 at e 10 fa ca 2: imprima ((I 2 ) + x) y 3: mpara Para a seq u encia 12 18 28 42 60 82 108 138 172 210, pode-se ver que o 10o valor da seq u encia e 210, j a que x = 5 e y = 2. Seq u encia 9 1: para I de 1 at e 10 fa ca 2: imprima ((I 3 ) + x) y 3: mpara Para a seq u encia 15 50 145 330 635 1090 1725 2570 3655 5010, pode-se ver que o 10o valor da seq u encia e 5010, j a que x = 2 e y = 5. Seq u encia 10 1: para I de 1 at e 10 fa ca 2: imprima ((x + I )2 ) y 3: mpara Para a seq u encia 180 245 320 405 500 605 720 845 980 1125, pode-se ver que o 10o valor da seq u encia e 1125, j a que x = 5 e y = 5. Seq u encia 11 1: para I de 1 at e 10 fa ca 2: imprima ((x + I )3 ) y 3: mpara Para a seq u encia 2401 3584 5103 7000 9317 12096 15379 19208 23625 28672, pode-se ver que o 10o valor da seq u encia e 28672, j a que x = 6 e y = 7.
88-08, Pedro Kantek
30.1
Exemplos
Para este exerc cio, s ao apresentadas diversas seq u encias de 7 n umeros. Naturalmente, elas s ao objeto de um programa de computador. O programa e apresentado, mas faltam nele certos par ametros (x, y e z ), cujos valores ser ao inteiros e sempre estar ao entre 2 e 7, inclusive. Pelo aspecto da seq u encia e do programa mostrado, voc e deve inferir tais valores. Depois disso, a seq u encia j a impressa deve ser vericada (preferencialmente pelo computador). Estando os 7 primeiros valores corretos, devem estar os seguintes. Para cada seq u encia, voc e deve responder qual ser a o d ecimo valor. Seq u encia 1 para I de 1 at e 10 fa ca 2: imprima x + (I 2 ) 3: mpara Para a seq u encia 5 8 13 20 29 40 53 68 85 104, pode-se ver que o 10o valor da seq u encia e 104, j a que x = 4.
1:
Seq u encia 2 1: para I de 1 at e 10 fa ca 2: imprima x + (I 3 ) 3: mpara Para a seq u encia 4 11 30 67 128 219 346 515 732 1003, pode-se ver que o 10o valor da seq u encia e 1003, j a que x = 3. Seq u encia 3 1: para I de 1 at e 10 fa ca 2: imprima (x + I )2 3: mpara Para a seq u encia 16 25 36 49 64 81 100 121 144 169, pode-se ver que o 10o valor da seq u encia e 169, j a que x = 3. Seq u encia 4 349
350
CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO Seq u encia 12 1: para I de 1 at e 10 fa ca 2: imprima ((x + I )2 ) + y 3: mpara Para a seq u encia 22 31 42 55 70 87 106 127 150 175, pode-se ver que o 10o valor da seq u encia e 175, j a que x = 3 e y = 6. Seq u encia 13 1: para I de 1 at e 10 fa ca 2: imprima ((x + I )3 ) + y 3: mpara Para a seq u encia 131 222 349 518 735 1006 1337 1734 2203 2750, pode-se ver que o 10o valor da seq u encia e 2750, j a que x = 4 e y = 6. Seq u encia 14 1: para I de 1 at e 10 fa ca 2: imprima (xI ) + y 3: mpara Para a seq u encia 8 10 14 22 38 70 134 262 518 1030, pode-se ver que o 10o valor da seq u encia e 1030, j a que x = 2 e y = 6. Seq u encia 15 1: para I de 1 at e 10 fa ca 2: imprima xI +y 3: mpara Para a seq u encia 32 64 128 256 512 1024 2048 4096 8192 16384, pode-se ver que o 10o valor da seq u encia e 16384, j a que x = 2 e y = 4. Seq u encia 16 1: para I de 1 at e 10 fa ca 2: imprima ((x + (I 2 )) y ) + z 3: mpara Para a seq u encia 25 37 57 85 121 165 217 277 345 421, pode-se ver que o 10o valor da seq u encia e 421, j a que x = 4, y = 4 e z = 5. Seq u encia 17 1: para I de 1 at e 10 fa ca 2: imprima ((x + (I 3 )) y ) + z 3: mpara Para a seq u encia 31 59 135 283 527 891 1399 2075 2943 4027, pode-se ver que o 10o valor da seq u encia e 4027, j a que x = 6, y = 4 e z = 3. Seq u encia 18 1: para I de 1 at e 10 fa ca 2: imprima (((x + I )2 ) y ) + z 3: mpara Para a seq u encia 255 346 451 570 703 850 1011 1186 1375 1578, pode-se ver que o 10o valor da seq u encia e 1578, j a que x = 5, y = 7 e z = 3. Seq u encia 19 1: para I de 1 at e 10 fa ca 2: imprima (((x + I )3 ) y ) + z 3: mpara Para a seq u encia 2061 3075 4377 6003 7989 10371 13185 16467 20253 24579, pode-se ver
vers ao de 10 de fevereiro de 2008
CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO que o 10o valor da seq u encia e 24579, j a que x = 6, y = 6 e z = 3. Seq u encia 20 1: para I de 1 at e 10 fa ca 2: imprima ((xI ) + y ) z 3: mpara
Para a seq u encia 10 14 22 38 70 134 262 518 1030 2054, pode-se ver que o 10o valor da seq u encia e 2054, j a que x = 2, y = 3 e z = 2.
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
v4 18 69 36 343 144 4096 81 115 330 196 1372 40 1333 86 128 59 332 207 1376 54
v5 27 130 49 512 225 8000 243 160 635 256 2048 53 1730 248 256 86 637 249 2052 102
v6 38 221 64 729 324 13824 729 215 1090 324 2916 68 2199 734 512 119 1092 295 2920 198 352
v7 51 348 81 1000 441 21952 2187 280 1725 400 4000 85 2746 2192 1024 158 1727 345 4004 390
10o ?
351
CAP ITULO 30. EXERC ICIOS PRATICOS: 073 - ACHAR O DECIMO TERMO
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.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
Respostas
102 1005 144 2197 900 64000 59049 4915 59054 8192 311 5012 519 8792 107 1007 196 1728 900 64000 1024 4915 1026 32768 313 5013 452 8645 104 1005 196 2197 400 64000 59049 59053 8192 629 3017 1797 5188 7203 102 1006 144 2197 3600 27000 1024 2199 1026 65536 616 7038 578 5494 535 5010 3078 416 2004 4108 424 7035 728 2014 6156 676 1183 512 8788 5184 5184 148 199 201 261
30.4
seq 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Exerc cio 3
v1 5 6 25 64 4 64 3 28 42 98 81 30 127 7 16 35 20 348 85 49 v2 8 13 36 125 16 512 9 40 91 128 192 41 218 13 32 53 41 453 196 63 v3 13 32 49 216 36 1728 27 60 224 162 375 54 345 31 64 83 98 572 379 91 v4 20 69 64 343 64 4096 81 88 483 200 648 69 514 85 128 125 209 705 652 147 v5 29 130 81 512 100 8000 243 124 910 242 1029 86 731 247 256 179 392 852 1033 259 v6 40 221 100 729 144 13824 729 168 1547 288 1536 105 1002 733 512 245 665 1013 1540 483 353 v7 53 348 121 1000 196 21952 2187 220 2436 338 2187 126 1333 2191 1024 323 1046 1188 2191 931 10o ?
2 3 4
900 16384
354
Cap tulo 31
19:
inteiro V ET [6] inteiro SOM A, I pontoutuante M ED leia(V ET ) SOM A 0 I1 enquanto I < 7 fa ca SOM A SOM A + V ET [I ] I ++ menquanto M ED SOM A 6 I1 enquanto (I < 7) fa ca se V ET [I ] > (M ED 5) ent ao imprima V ET [I ] mse I ++ menquanto Para os dados
117 190 121 108 167 198 O algoritmo DOIS dever a imprimir
31.1
31.1.1
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
Exerc cio 1
Algoritmo 1 31.1.3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
Algoritmo 3
Algoritmo U M cadeia C [80] inteiro I, J leia(C ) I0 J 1 enquanto I < 2 fa ca se C [J ] = ent ao I ++ mse J ++ menquanto enquanto C [J ] = O fa ca imprima C [J ] J ++ menquanto Para os dados
Algoritmo T RES inteiro V ET [6] inteiro I, J I2 enquanto I 6 fa ca leia V ET [I ] I ++ menquanto I3 enquanto (I 6) fa ca V ET [1] V ET [I ] J I 1 enquanto (V ET [J ] > V ET [1]) fa ca V ET [J + 1] V ET [J ] J menquanto V ET [J + 1] V ET [1] I ++ menquanto imprima V ET [3] Para os dados 43 44 55 68
53
31.1.2
1:
Algoritmo 2
356
Algoritmo 4
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
31.2.2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
Algoritmo 2
Algoritmo QU AT RO inteiro M AT [4][5] inteiro C, I, J, LIN, COL leia (C, LIN, COL) I1 enquanto I 4 fa ca J 1 enquanto (J 5) fa ca M AT [I ][J ] C C C+9 J ++ menquanto I ++ menquanto imprima M AT [LIN ][COL]
Solu c ao 1 2 2
19:
Algoritmo DOIS inteiro V ET [6] inteiro SOM A, I pontoutuante M ED leia(V ET ) SOM A 0 I1 enquanto I < 7 fa ca SOM A SOM A + V ET [I ] I ++ menquanto M ED SOM A 6 I1 enquanto (I < 7) fa ca se V ET [I ] > (M ED 2) ent ao imprima V ET [I ] mse I ++ menquanto Para os dados
154 142 112 120 173 114 O algoritmo DOIS dever a imprimir
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 31.2.3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
Algoritmo 3
Algoritmo U M cadeia C [80] inteiro I, J leia(C ) I0 J 1 enquanto I < 2 fa ca se C [J ] = O ent ao I ++ mse J ++ menquanto enquanto C [J ] = A fa ca imprima C [J ] J ++ menquanto Para os dados
Algoritmo T RES inteiro V ET [6] inteiro I, J I2 enquanto I 6 fa ca leia V ET [I ] I ++ menquanto I3 enquanto (I 6) fa ca V ET [1] V ET [I ] J I 1 enquanto (V ET [J ] < V ET [1]) fa ca V ET [J + 1] V ET [J ] J menquanto V ET [J + 1] V ET [1] I ++ menquanto imprima V ET [3] Para os dados 70 75 82 79 358
vers ao de 10 de fevereiro de 2008
56
vers ao de 10 de fevereiro de 2008
357
CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS O algoritmo TRES dever a imprimir
31.3.2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
Algoritmo 2
31.2.4
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
Algoritmo 4
Algoritmo QU AT RO inteiro M AT [4][5] inteiro C, I, J, LIN, COL leia (C, LIN, COL) I1 enquanto I 4 fa ca J 1 enquanto (J 5) fa ca M AT [I ][J ] C C C+7 J ++ menquanto I ++ menquanto imprima M AT [LIN ][COL] Para os dados 7 3 5
Algoritmo DOIS inteiro V ET [6] inteiro SOM A, I pontoutuante M ED leia(V ET ) SOM A 0 I1 enquanto I < 7 fa ca SOM A SOM A + V ET [I ] I ++ menquanto M ED SOM A 6 I1 enquanto (I < 7) fa ca se V ET [I ] > (M ED + 3) ent ao imprima V ET [I ] mse I ++ menquanto Para os dados
169 186 105 179 160 187 O algoritmo DOIS dever a imprimir
31.3
31.3.1
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
Exerc cio 3
Algoritmo 1
31.3.3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
Algoritmo 3
Algoritmo U M cadeia C [80] inteiro I, J leia(C ) I0 J 1 enquanto I < 3 fa ca se C [J ] = ent ao I ++ mse J ++ menquanto enquanto C [J ] = A fa ca imprima C [J ] J ++ menquanto Para os dados
Algoritmo T RES inteiro V ET [6] inteiro I, J I2 enquanto I 6 fa ca leia V ET [I ] I ++ menquanto I3 enquanto (I 6) fa ca V ET [1] V ET [I ] J I 1 enquanto (V ET [J ] > V ET [1]) fa ca V ET [J + 1] V ET [J ] J menquanto V ET [J + 1] V ET [1] I ++ menquanto imprima V ET [4] Para os dados 45 42 37 59 360
vers ao de 10 de fevereiro de 2008
55
vers ao de 10 de fevereiro de 2008
359
CAP ITULO 31. EXERC ICIOS PRATICOS: 077 - ALGORITMOS O algoritmo TRES dever a imprimir 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 fa ca 7: J 1 8: enquanto (J 5) fa ca 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 a imprimir sectionRespostas 1 SE-ADUNA190 167 198 44 55 -COIT 154 142 173 79 105 IND 169 186 179 187 45 76
361
362
Cap tulo 32
52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79:
SAI ENT imprima (SAI) CC LECAD sen ao se (CM < CC) ent ao se (ME.CODMOV = A) ent ao Erro: , ME.DA.CODIGO, nao existe para alterar sen ao se (ME.CODMOV =E) ent ao Erro: , ME.DA.CODIGO, nao existe p/ excluir sen ao 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 sen ao se (ME.CODMOV = I) ent ao Erro: ,ME.DA.CODIGO,ja existente SAI ENT imprima (SAI) sen ao se (ME.CODMOV = A) ent ao SAI ENT se (ME.DA.NOME = ) ent ao SAI.NOME ME.DA.NOME mse se (ME.DA.IDADE = 0) ent ao SAI.IDADE ME.DA.IDADE mse se (ME.DA.DIVIDA = 0.0) ent ao SAI.DIVIDA ME.DA.DIVIDA mse imprime (SAI) mse mse CC LECAD CM LEMOV mse mse menquanto m algoritmo
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 37felipe 38jane 40ana 41hugo 43felipe 46sara 47paula 48carmem 49elaine
CAP ITULO 32. EXERC ICIO PRATICO: 084 BALANCE LINE 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 da e as mensagens de erro, e responda: Qual a linha numerada do cadastro de sa da ? 7 21 28 Qual a mensagem de erro numerada ? 1 17
3. Numere o cadastro de sa da e as mensagens de erro, e responda: Qual a linha numerada do cadastro de sa da ? 3 9 26 Qual a mensagem de erro numerada ? 6 9
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
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
366
CAP ITULO 32. EXERC ICIO PRATICO: 084 BALANCE LINE Qual a linha numerada do cadastro de sa da ? 5 11 22 Qual a mensagem de erro numerada ? 13 15 2 / 13felipe / 24kica / 50pedro
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
22 21 24
27 27 21
9. Numere o cadastro de sa da e as mensagens de erro, e responda: Qual a linha numerada do cadastro de sa da ? 21 22 24 Qual a mensagem de erro numerada ? 11 13
32.1
Respostas
367
368
14. Z [ V [
7 ] +
] + 7 ] ] - M ] - A
11 1 14
15. Z [ V [ Z [ 13 + E
Cap tulo 33
16. V [
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
6 5 1
Exerc cio 1
5 3 2 3 6 5 4 4 7 8 3 2 8 3 1 4 9 2 7 15 10 2 12 14 11 6 10 11 12 2 9 10 13 14 1 12 14 8 19 16 15 12 16 6 16 20 19 18
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 [ 8 ] + M 2 ] - 8 ________ ________ ________ 2 1 ] - H ] - A ] - 1 ] ] + 4 ________ ________ ________ ________ 2 ] - K ] + 1 ] + 4 ________1.________ ________ ________
4. Z [ Z [ 5. V [ V [
3 + A 5 ] ]
8 V [ 5 V [ 12 ] - 7
6. T [ T [ Z [ 10 + 7. T [ 16 8. Z [ T [ 2 ]
] + K
] + A
] + 4
12 V [ T [ 3 Z [ Z [ 8 + 1 T [ V [ Z [ 10 ] - A ] + M 7 -
8 ] ] - 5 6 + 1 ] + H ] ] + 4
9. Z [ Z [ T [ 10. V [ 3 + 1 3 +
12 V [ 13 + K ] + 5 ] + -2 V [ Z [ 3 + E 5 T [ T [ V [ 3 + A ] ] - A
] - 6 2 8 + ] - M 369 ] ] + 3 1 ] + 2 ] ] + 8
11. T [ V [
12. Z [ T [ T [ 13. V [ 6 + H
10 V [ 14
88-08, Pedro Kantek
5 - H
370
E INDIREC CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXAC AO AO 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 ________ ________ T [
E INDIREC CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXAC AO AO 8 - K ] - 7 2 ] ] + M 1 ] ] ________ ________ ________ ________5.________ ] - E ] ] 1 ] 2 ] ________ ________ ________ 2 ] + 1 ] 1 ] ________ ________ ________ ] + A 2 3 ] + 8 ] + 4 2 5 ] - H 6 ________ ________6.________
V [ T [ Z [ Z [ 11 - K V [ T [ ]
4 ] -
V [ Z [
3 -
T [ Z [ V [ V [ 5 ] + 5
5 ] +
2 ] -
T [ V [ V [ T [ 13 + A
3 + M ] - A 2
V [ V [ 10 + A T [ V [ T [ V [ 17 V [ T [ 2 7 -
3 + K ] - 3 1 6 ] 2 2 + 2
Z [ V [ 14 ] + V [ V [ V [ Z [ 5 + 1 3 -
2 + A ] - H 1
] + 1
Z [ Z [ V [ V [ 8 + 2 9 +
] + E
T [ V [
] ] ] +
Z [ T [ V [ T [ 6 1
5 + K ] + A 2
V [ Z [
Z [ V [ V [ Respostas 1
] + E
T [ V [ 10 ] +
V [ V [ T [ 13 V [ 10 - E ] + 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.________
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
T [ 13 -
9 - E
] + A
T [ Z [ 15 + A T [ V [
T [ Z [ Z [ V [ 1 ] - 9 7 +
2 ] - M
1 ] + E 7 ] + 8
] + 7 1 ] ] +
V [ Z [ V [ T [ 4 + E
V [ V [
Z [ V [ Z [
9 - K
V [ V [
9 - M
] ]
371
372
E INDIREC CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXAC AO AO 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.________ ] 1 2 ] - A ] - K ] + 3 ________ ________ ________ 1 ] ] ] + A ________ ________ ________ 2 ] - 2 ] + 2 ] ] ________ ________3.________ ________ ] - M ] + E ] - M ________ ________ ________ 1 ] + E ] 1 ] + H ________ ________ ________ ________4.________ ] ] ________ ________
E INDIREC CAP ITULO 33. EXERC ICIOS PRATICOS: 110 - INDEXAC AO AO 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 ]
4 ] ] ] ]
V [ T [ 13 ] + H V [ Z [ Z [ Z [ 14 ] T [ V [ 6 +
V [ T [ 10 - E Z [ V [ V [ Z [ 15 + M V [ Z [
3 + ] - M 1 6 -
] - M
T [ T [ T [ 16 ] + H V [ 17 - H ] + 8
] ] - E
8 -
V [ T [ Z [ Z [ 16 1
] + K
T [ T [ 10 - H T [ Z [ Z [ T [ 11 + T [ V [ 2
] ] + K
] + K 1 ] 2
6 ] ] + M ] + E 2
V [ V [ 17 -
Z [ T [ T [ 10 + Z [ 13 ] T [ Z [ 11 ] +
] + M
4 ] +
V [ V [ Z [ Respostas 1 2
4 ] - M 3
V [ T [ V [ 15 - H V [ 10 + T [ Z [ 2 8 ] - 6 2 1 + ] - H ] +
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
] + M 2
V [ Z [ T [ V [ 12 + A
] - A
Sejam os vetores: 1 2 3 4 V 3 4 3 2 T 3 2 7 2 Z 4 7 2 5
V [ T [ 15 + E T [ Z [ Z [ T [ 1 + 1
E, 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 ] + 6 ] ] - A ] - A 374 ________ ________ ________ ________ ________ ________
vers ao de 10 de fevereiro de 2008
2 - E ] + 6 1
] + H
Z [ V [ 10 -
] ] - E 1 ] - K
V [ V [ Z [ 13 Z [ 6 ]
V [ V [ Z [ V [
8 - M
T [ V [ V [
vers ao de 10 de fevereiro de 2008
5 -
373
V [ 16 -
] ] + A ] ] - 9 1 ] + K ]
________ ________1.________ ________ ________ ________ ] + M ] ] - A ________ ________ 1 ] + ] 1 ] - E ] ________ ________ ________2.________
T [ Z [ V [ V [ 3 ]
1 ] ] ] + H
________ ________
T [ T [ 11 + E T [ Z [ T [ Z [ 7 + 1
8 - K ] + 5 ]
T [ V [
1 + A
] ] + 5 ] + A ]
Z [ Z [ T [ V [ 13 - H
4 ] - E ] + A ] +
V [ V [ 14 ] - K
V [ T [ Z [ 18 - A T [ 2 + 2 6 + ] + 5 2
T [ T [ 17 - K
] - E ]
T [ V [ Z [ 14 ] ] + H Z [ 8 ] - E 8 + E ] 1
T [ Z [
] + 2
T [ Z [ T [ 10 + V [ 12 ] V [ V [ 14 T [ V [ V [ V [ 4 + 2 8 + 1
V [ V [
] + 1 1 ]
Z [ Z [ Z [ 12 + M V [ 13 ] - K T [ V [ 19 - A Z [ Z [ V [ Z [ 5 - A
] ] +
] +
2 ] +
] 2 ] + 4
7 ] + A ] 2 ] ] 1
] - H 1
] ] - A ] ] - 8
1 + ] - M
V [ Z [
T [ T [ Z [ 15 Z [ 16 ] V [ Z [ 6 - E
Z [ Z [ 18 + H Z [ T [ V [ Respostas 1 2
] - K ] 3
] - M 2 4 ] + 2 5 ] 6
________ ________6.________
8 + E
] -
] ]
Z [ T [ T [ 12 ] - K V [ 9 2 ]
] + K
33.4
1 2 3
Respostas
37 64 56 82 99 68 47 89 48 72 72 30 17 78 67 51 69 37
V [ V [
8 ] ] - 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 88-08, Pedro Kantek
376
CAP ITULO 34. EXERC ICIOS PRATICOS: 116 - MANUSEIO DE TABELAS inteiro MUNICIPIO[200], CONTADOR[200] para I de 1 at e 200 fa ca 3: MUNICIPIO[I] CONTADOR[I] 0 4: mpara
1: 2:
Cap tulo 34
A tabela e uma excelente ferramenta para ajudar na programa ca o. Sempre que se necessita consultar, acumular, separar em classes e tarefas similares, a tabela e a solu ca o. A tabela pode ser de 1 dimens ao e neste caso e chamada vetor. Por exemplo, Se sabendo existirem 1200 alunos no curso, quisermos saber quantos alunos h a em cada um dos 5 anos do curso, e supondo que cada aluno e assim identicado informa ca o signicado c odigo de o n umero u nico que identica o matricula aluno na institui ca o nome do aluno s erie do em que ano do curso ele est a (inaluno teiro?) Como fazer ? Basta criar um vetor 1: inteiro QTDAL [5] 2: QTDAL 0
1:
Um segundo caso, algo mais complexo, ocorre quando os identicadores da classe n ao s ao conhecidos de antem ao. Por exemplo, suponhamos querer saber qual o local de nascimento (munic pio) mais freq uente entre os 1200 alunos do curso. de se esperar que existam uns poucos munic Aqui, uma esperteza: E pios que concentrem a maioria das pessoas (esta regra e conhecida como Regra de Pareto). O problema e que n ao sabemos quais s ao. Naturalmente, n ao precisamos criar um vetor com 5000 n umeros (5000 s ao os munic pios brasileiros, n umero aproximado. Agora, o ndice de acesso n ao e mais conhecido de antem ao e precisa ser localizado. Suponhamos existir o campo MUNALU, como sendo o c odigo num erico do munic 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 c odigos de munic pio que forem surgindo e o segundo para guardar os contadores. Ambos os vetores ser ao acessados pelo mesmo ndice. 377
E, ao processar cada aluno, incluir o seguinte comando QTDAL [serie-aluno] QTDAL [serie-aluno] + 1
A partir deste ponto, os dois vetores est ao prontos para receber os dados. Para cada MUNALU lido, deve-se pesquisar o vetor MUNICIPIO da matriz at e que uma das tr es coisas aconte ca: a) Achar um MUNICIPIO = MUNALU; b) Achar um MUNICIPIO = 0; c) Ultrapassar o limite de I = 200. A primeira indica que este munic pio j a havia aparecido e seu contador deve ser incrementado em uma unidade. A segunda, informa ser a primeira vez que este munic pio est a aparecendo e seu contador deve ser 1. A terceira, n ao deveria ocorrer e se acontecer indicar a um erro. Eis o algoritmo inteiro MUNICIPIO[200], CONTADOR[200] para I de 1 at e 200 fa ca MUNICIPIO[I] CONTADOR[I] 0 mpara leia MUNALU enquanto MUNALU 0 fa ca I1 enquanto MUNALU = MUNICIPIO[I] MUNICIPIO[I] = 0 fa ca I++ se I> 200 ent ao ...erro... mse menquanto CONTADOR[I] CONTADOR[I] + 1 leia MUNALU menquanto // achar o mais freq uente MELHOR QUAL 0 I1 enquanto I 200 MUNICIPIO[I] = 0 fa ca se CONTADOR[I] > MELHOR ent ao MELHOR CONTADOR[I] QUAL I mse I++ menquanto imprima MUNICIPIO[QUAL] Opera co es fundamentais: inclus ao Para incluir um novo elemento em uma tabela, duas condi co es devem ocorrer: a) Deve haver espa co na estrutura; b) A chave a incluir deve ser nova (isto e conhecido como atributo UNIQUE). Em geral, o primeiro ponto e controlado por uma vari avel global, por exemplo QTDUSADA, que come ca com zero, e incrementada a cada inclus ao e pode crescer at eo limite (200 no exemplo acima). Note-se que na inclus ao de tabelas que sofrer ao busca linear ordenada, a tabela dever a ser mantida ordenada, o que talvez implique reordena co es.
88-08, Pedro Kantek
378
CAP ITULO 34. EXERC ICIOS PRATICOS: 116 - MANUSEIO DE TABELAS Exclus ao Se necessita diminuir o contador de linhas v alidas e eventualmente reagrupar as linhas (caso a linha a excluir n ao seja a u ltima), para evitar a exist encia de buracos na tabela Pesquisa Busca Linear Para este algoritmo o conjunto de chaves n ao e mantido ordenado. O algoritmo b asico e: 1: fun ca o BUSCALIN(inteiro CHAVE, inteiro TABELA[num]) 2: inteiro i 1; qtd 0 3: enquanto i tamanho(TABELA) fa ca 4: qtd qtd + 1 5: se CHAVE = TABELA[i] ent ao 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
enquanto CHAVE = TABELA[i]) fa ca qtd++ i++ menquanto se i = (ULTIMO + 1) ent ao ...ACHOU... mse devolva qtd
38 BUSCALINSEN 24 35 91 18 8 72 10 88 27 54 28 34 43 3 38 e 14 54 BUSCALINSEN 63 17 35 68 27 86 54 53 5 78 41 58 44 51 25 e 6 61 BUSCALINSEN 75 67 51 60 85 38 49 74 73 78 66 35 24 4 2 e 15 Alguns dados experimentais Para o teste a seguir, z 6 passagens de 1000 chaves. Para cada m etodo, em cada passagem foram 3 tentativas: as primeiras 2 com sucesso e a 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 u ltima 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 m edia 1378.0 959.9 687.6
Busca linear ordenada Neste algoritmo, o conjunto de chaves dever a estar ordenado. Eis o algoritmo: 1: fun ca o BUSCALINORD (inteiro CHAVE, inteiro TABELA[num]) 2: inteiro i 1; qtd 0 3: enquanto (i tamanho(TABELA)) (CHAVE > TABELA[i]) fa ca 4: qtd qtd + 2 5: i++ 6: menquanto 7: se CHAVE = TABELA[i] ent ao 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
34.2
Calcule:
Exerc cio 1
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
34.3
Calcule:
Exerc cio 2
Busca linear com sentinela A tabela n ao precisa estar ordenada, e a busca gasta apenas a metade dos testes da busca linear. A sentinela e a chave que se busca que e for cosamente inclu da ao nal da tabela. Assim, a sa da do la co sempre se dar a pela igualdade de chaves. Se a chave procurada for encontrada no meio da tabela, ...ACHOU... Se for encontrada no nal da tabela, (onde foi explicitamente colocada) e porque ela n ao se encontrava l a antes do in cio do algoritmo. 1: fun ca o BUSCALINSEN (inteiro CHAVE, inteiro TABELA[num]) 2: inteiro i 1; qtd 0 3: TABELA[ULTIMO+1] CHAVE {note que ULTIMO n ao e alterado}
vers ao de 10 de fevereiro de 2008
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
34.4
Calcule:
Exerc cio 3
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
379
34.5
1 2 3
Respostas
13 3 19 10 10 24 7 15 4
381
382
Cap tulo 35
mse menquanto enquanto i < ULTIMO fa ca TABELA[i] TABELA [i+1] i++ menquanto ULTIMO ULTIMO - 1
Qual a quantidade de opera co es para fazer uma exclus ao do tipo 1; qual o n umero m edio de opera co es para achar um item que est a na tabela e qual o n umero m edio de opera co es para concluir que um dado n umero n ao est a na tabela elementos ops para ops para ops para exclus ao achar concluir que n ao est a 100 10.000 1.000.000 n
A segunda estrat egia e incluir algum indicador (f iller) que informe que o item foi eliminado. 1: fun ca o EXCLUSAO2NORD (inteiro CHAVE) 2: inteiro i 1 3: enquanto TABELA[i] = CHAVE fa ca 4: i++ 5: se i > ULTIMO ent ao 6: ...erro... 7: mse 8: menquanto 9: TABELA[i] 9999999 Qual a quantidade de opera co es para fazer uma exclus ao do tipo 2; qual o n umero m edio de opera co es para achar um item que est a na tabela e qual o n umero m edio de opera co es para concluir que um dado n umero n ao est a na tabela elementos ops para ops para ops para exclus ao achar concluir que n ao est a 100 10.000 1.000.000 n
Exclus ao de itens em tabelas desordenadas H a duas estrat egias aqui: a primeira e eliminar o item puxando os que caram abaixo da exclus ao para tampar o buraco. 1: fun ca o EXCLUSAO1NORD (inteiro CHAVE) 2: inteiro i 1 3: enquanto TABELA[i] = CHAVE fa ca 4: i++ 5: se i > ULTIMO ent ao 6: ...erro... 383
A vantagem desta segunda alternativa e que a exclus ao e mais r apida, mas em compensa ca o as buscas tendem a car mais demoaradas. Busca bin aria Conjunto ordenado, o timo desempenho 1: fun ca o BUSCABIN(inteiro CHAVE)
88-08, Pedro Kantek
384
CAP ITULO 35. EXERC ICIO PRATICO: 119 - MANUSEIO DE TABELAS II elementos 100 10.000 1.000.000 n opera co es
inteiro INIC,METADE,FIM INIC 1 FIM ULTIMO repita METADE ((INIC + FIM)/2) se CHAVE TABELA[METADE] ent ao FIM METADE - 1 sen ao INIC METADE + 1 mse at e TABELA[METADE] = CHAVE INIC > FIM se TABELA[METADE] = CHAVE ent ao devolva METADE sen ao devolva -1 mse
35.1
Exerc cio 1
Escreva a seguir um algoritmo de uma fun ca o que Receba uma matriz global, de nome MAT-ENT, cujo conte udo e: MAT-ENT e uma matriz de 3 colunas, sendo todas inteiros, formada por c odigo da transa ca o valor da transa ca o c odigo da cidade O algoritmo dever a criar e imprimir uma segunda matriz, de apenas duas colunas MAT-SAI e uma matriz de 2 colunas, sendo ambos inteiros, formada por c odigo da cidade total dos valores de transa co es Nesta matriz de sa da, os valores de d ebito (c od 2) dever ao ser totalizados, e quando houver quebra de cidade, uma nova linha deve ser introduzida na matriz de saida com o total. Note que a matriz de entrada est a ordenada por cidade. (ENUNCIADO 2)
Qual a quantidade de opera co es para fazer pesquisa e qual o n umero m edio de opera co es para concluir que um dado n umero n ao est a na tabela elementos ops para ops para conpesquisa cluir que n ao est a 100 10.000 1.000.000 n
35.2
Exerc cio 2
Escreva a seguir um algoritmo de uma fun ca o que Receba uma matriz global, de nome MAT-VENDAS, cujo conte udo e: MAT-ENT e uma matriz de 3 colunas, sendo todas inteiros, formada por n umero de parcelas valor da transa ca o c odigo da cidade O n umero de parcelas pode ser de 1 a 6. O algoritmo dever a criar e imprimir uma segunda matriz, de apenas duas colunas MAT-SAI e uma matriz de 2 colunas, por 2 linhas sendo ambos inteiros, formada por n umero de parcelas quantidade de vendas Nesta matriz de sa da, dever ao ser mostrados o n umero de parcelas campe ao positivo (em quantidade de vendas) e o campe ao negativo (idem), associado ao n umero de vendas de cada um. (ENUNCIADO 3)
Inclus ao em tabela ordenada A contrapartida para poder fazer a busca ordenada e criar e manter a tabela em ordem. Para isso, a inclus ao de novos elementos deve ocorrer em seus locais espec cos e n ao no nal, como vimos acima.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
fun ca o INCLUSAOORD (inteiro CHAVE) ULTIMO ULTIMO + 1 se ULTIMO > num ent ao ...erro... mse inteiro i 1 enquanto TABELA[i] < CHAVE fa ca i++ menquanto k ULTIMO enquanto k > i fa ca TABELA[k] TABELA[k-1] k menquanto TABELA[k] CHAVE
35.3
Exerc cio 3
Escreva a seguir um algoritmo de uma fun ca o que Receba uma matriz global, de nome MAT-ENT, cujo conte udo e: MAT-ENT e uma matriz de 3 colunas, sendo todas inteiros, formada por c odigo do estado a rea do estado popula ca o do estado O algoritmo dever a imprimir o c odigo do estado de maior densidade populacional e o c odigo do estado de menor densidade populacional, imprimindo tamb em quantas vezes o primeiro e mais populoso do que o segundo. (ENUNCIADO 4)
88-08, Pedro Kantek
Qual a quantidade de opera co es para fazer uma inclus ao em tabela ordenada no caso de uma tabela de
vers ao de 10 de fevereiro de 2008
385
386
35.4
Exerc cio 4
Escreva a seguir um algoritmo de uma fun ca o que Receba duas matrizes globais, de nomes MAT1 e MAT2, cujos conte udos s ao: MAT1 e uma matriz de 3 colunas, sendo todas inteiros, formada por c odigo da transa ca o valor da transa ca o c odigo da cidade MAT2 e uma matriz de 2 colunas, sendo ambos inteiros, formada por c odigo da cidade O algoritmo dever a criar e imprimir uma terceira matriz, de apenas duas colunas MATSAIDA e uma matriz de 2 colunas, sendo ambos inteiros, formada por estado onde foi efetuada a transa ca o valor da transa ca o Nesta segunda matriz, apenas as transa co es de d ebito dever ao ser inclu das. (ENUNCIADO 1) estado a que pertence
387
388
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS se DDD = 0 ent ao devolva EEE 13: sen ao 14: devolva FFF 15: mse 16: mfuncao Esta funcao correta, deu os seguintes resultados: A01PRIM(30) = NAOPRIMO ; A01PRIM(39) = NAOPRIMO ; A01PRIM(31) = PRIMO . As substitui co es a fazer s ao: AAA=2 ; BBB=N ; CCC=0 ; DDD=M ; EEE=primo e FFF=nao primo .
11: 12:
Cap tulo 36
Algoritmo 2 Escreva uma fun ca o que receba um n umero N (inteiro e positivo, n ao e preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N, 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 fa ca 5: Z DDD mod EEE 6: se FFF = Z ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=2 ; CCC=N-1 ; DDD=N ; EEE=T ; FFF=0 ; GGG=M ; HHH=T ; III=M . Algoritmo 3 Escreva uma fun ca o que receba dois inteiros N e X Se X for maior que zero, a funcao deve calcular e devolver o n umero N X e se n ao for deve devolver -1. 1: funcao A03POTE (N,X : inteiro) : inteiro 2: R : inteiro 3: R AAA 4: se X > 0 ent ao 5: enquanto BBB >0 fa ca 6: R R CCC N 7: X X DDD 1 8: menquanto 9: devolva EEE 10: sen ao 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 substitui co es a fazer s ao:
88-08, Pedro Kantek
390
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS AAA=0 ; BBB=X ; CCC=vezes (multiplicacao) ; DDD=- (subtracao) ; EEE=R ; FFF=-1 . Algoritmo 4 Escreva uma fun ca o que receba tr es inteiros D, M e A representando uma data (D e o dia, M e o m es e A e o ano). O algoritmo deve devolver 1 se a data estiver errada e 0 sen ao. 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ent ao 4: biss1 5: sen ao 6: se 0 = (BBB mod 100) ent ao 7: biss0 8: sen ao 9: se 0 = (A mod 4) ent ao 10: bissCCC 11: sen ao 12: bissDDD 13: mse 14: mse 15: mse 16: erro 0 17: se M = EEE ent ao 18: se biss = 1 ent ao 19: se D > FFF ent ao 20: erro 1 21: mse 22: sen ao 23: se D > GGG ent ao 24: erro 1 25: mse 26: mse 27: sen ao 28: se (M=4)(M=6)(M=9)(M=11) ent ao 29: se D > HHH ent ao 30: erro 1 31: mse 32: sen ao 33: se D > III ent ao 34: erro 1 35: mse 36: mse 37: mse 38: se M > JJJ ent ao 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 substitui co es a fazer s ao:
vers ao de 10 de fevereiro de 2008
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO 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 e um grande distribuidor de presentes em todo o pa s. Recentemente, a empresa teve a oportunidade de comprar pequenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend e-los como surpresa, mais ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimens oes A, B e C, medidas em cent metros. Escreva uma fun ca o que receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos caber ao 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 ent ao 6: devolva 30 7: sen ao 8: se diag > CCC ent ao 9: devolva 20 10: sen ao 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 substitui co es a fazer s ao: AAA=3 ; BBB=40 ; CCC=20 .
Responda
R=
391
392
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS M AAA para T de BBB a CCC fa ca 5: Z DDD mod EEE 6: se FFF = Z ent ao 7: M GGG + HHH 8: mse 9: mpara 10: devolva III 11: mfuncao Esta funcao correta, deu os seguintes resultados: A02SOMD(16) = 14 ; A02SOMD(86) = 45 ; A02SOMD(29) = 0 . As substitui co es a fazer s ao: AAA=0 ; BBB=2 ; CCC=N-1 ; DDD=N ; EEE=T ; FFF=0 ; GGG=M ; HHH=T ; III=M .
3: 4:
36.2
Exerc cio 2
Algoritmo 3 Escreva uma fun ca o que receba dois inteiros N e X Se X for maior que zero, a funcao deve calcular e devolver o n umero N X e se n ao for deve devolver -1. 1: funcao A03POTE (N,X : inteiro) : inteiro 2: R : inteiro 3: R AAA 4: se X > 0 ent ao 5: enquanto BBB >0 fa ca 6: R R CCC N 7: X X DDD 1 8: menquanto 9: devolva EEE 10: sen ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=X ; CCC=vezes (multiplicacao) ; DDD=- (subtracao) ; EEE=R ; FFF=-1 . Algoritmo 4 Escreva uma fun ca o que receba tr es inteiros D, M e A representando uma data (D e o dia, M e o m es e A e o ano). O algoritmo deve devolver 1 se a data estiver errada e 0 sen ao. 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ent ao 4: biss1 5: sen ao 6: se 0 = (BBB mod 100) ent ao 7: biss0 8: sen ao 9: se 0 = (A mod 4) ent ao 10: bissCCC 11: sen ao 12: bissDDD
88-08, Pedro Kantek
393
394
mse mse mse erro 0 se M = EEE ent ao se biss = 1 ent ao se D > FFF ent ao erro 1 mse sen ao se D > GGG ent ao erro 1 mse mse sen ao se (M=4)(M=6)(M=9)(M=11) ent ao se D > HHH ent ao erro 1 mse sen ao se D > III ent ao erro 1 mse mse mse se M > JJJ ent ao erro 1 mse retorne erro mfuncao Esta funcao correta, deu os seguintes resultados: A04DATA(28 11 7636) = 0 ; A04DATA(27 2 1852) = 0 ; A04DATA(29 2 2000) = 0
se diag > CCC ent ao devolva 20 sen ao 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 substitui co es a fazer s ao: AAA=2 ; BBB=40 ; CCC=20 . Responda
R=
. As substitui co es a fazer s ao: AAA=400 ; BBB=A (ano) ; CCC=1 e DDD=0 ; EEE=2 ; FFF=29 ; GGG=28 ; HHH=30 ; III=30 ; JJJ=12 . Brinquedos PIRRALHOS ENDIABRADOS e um grande distribuidor de presentes em todo o pa s. Recentemente, a empresa teve a oportunidade de comprar pequenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend e-los como surpresa, mais ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimens oes A, B e C, medidas em cent metros. Escreva uma fun ca o que receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos caber ao 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 ent ao 6: devolva 30 7: sen ao
vers ao de 10 de fevereiro de 2008
36.3
Exerc cio 3
395
396
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS O algoritmo cont em um erro. Este erro deriva-se de uma (e apenas uma) substitui ca o de constante por um valor errado. Voc e n ao precisa determinar onde est a o erro (se bem que isso e um interessante desao), mas precisa apenas determinar que o algoritmo est a errado. Uma boa maneira de vericar isto e acompanhar as 3 execu co es do algoritmo (correto) que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos est ao corretos denindo An como: A1 1 se o algoritmo 1 est a correto e A1 0 sen ao. Idem para A2 , A3 , A4 e A5 . Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma fun ca o que receba um n umero N (inteiro e positivo, n ao e preciso testar) e devolva a cadeia primo se ele for PRIMO e n ao primo sen ao. 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 fa ca 6: Z BBB mod T 7: se Z = CCC ent ao 8: MM+1 9: mse 10: mpara 11: se DDD = 0 ent ao 12: devolva EEE 13: sen ao 14: devolva FFF 15: mse 16: mfuncao Esta funcao correta, deu os seguintes resultados: A01PRIM(26) = NAOPRIMO ; A01PRIM(71) = PRIMO ; A01PRIM(37) = PRIMO . As substitui co es a fazer s ao: AAA=2 ; BBB=N ; CCC=0 ; DDD=N ; EEE=primo e FFF=nao primo . Algoritmo 2 Escreva uma fun ca o que receba um n umero N (inteiro e positivo, n ao e preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N, 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 fa ca 5: Z DDD mod EEE 6: se FFF = Z ent ao 7: M GGG + HHH 8: mse 9: mpara 10: devolva III 11: mfuncao
vers ao de 10 de fevereiro de 2008
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS Esta funcao correta, deu os seguintes resultados: A02SOMD(20) = 21 ; A02SOMD(27) = 12 ; A02SOMD(71) = 0 . As substitui co es a fazer s ao: 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 fun ca o que receba dois inteiros N e X Se X for maior que zero, a funcao deve calcular e devolver o n umero N X e se n ao for deve devolver -1. 1: funcao A03POTE (N,X : inteiro) : inteiro 2: R : inteiro 3: R AAA 4: se X > 0 ent ao 5: enquanto BBB >0 fa ca 6: R R CCC N 7: X X DDD 1 8: menquanto 9: devolva EEE 10: sen ao 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 substitui co es a fazer s ao: AAA=1 ; BBB=X ; CCC=+ (adicao) ; DDD=- (subtracao) ; EEE=R ; FFF=-1 . Algoritmo 4 Escreva uma fun ca o que receba tr es inteiros D, M e A representando uma data (D e o dia, M e o m es e A e o ano). O algoritmo deve devolver 1 se a data estiver errada e 0 sen ao. 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ent ao 4: biss1 5: sen ao 6: se 0 = (BBB mod 100) ent ao 7: biss0 8: sen ao 9: se 0 = (A mod 4) ent ao 10: bissCCC 11: sen ao 12: bissDDD 13: mse 14: mse 15: mse 16: erro 0 17: se M = EEE ent ao 18: se biss = 1 ent ao 19: se D > FFF ent ao 20: erro 1 21: mse 22: sen ao
88-08, Pedro Kantek
397
398
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS As substitui co es a fazer s ao: AAA=2 ; BBB=20 ; CCC=20 . Responda R=
se D > GGG ent ao erro 1 mse mse sen ao se (M=4)(M=6)(M=9)(M=11) ent ao se D > HHH ent ao erro 1 mse sen ao se D > III ent ao erro 1 mse mse mse se M > JJJ ent ao erro 1 mse retorne erro mfuncao Esta funcao correta, deu os seguintes resultados: A04DATA(25 12 8360) = 0 ; A04DATA(28 2 1968) = 0 ; A04DATA(29 2 2000) = 0
. As substitui co es a fazer s ao: 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 e um grande distribuidor de presentes em todo o pa s. Recentemente, a empresa teve a oportunidade de comprar pequenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend e-los como surpresa, mais ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimens oes A, B e C, medidas em cent metros. Escreva uma fun ca o que receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos caber ao 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 ent ao 6: devolva 30 7: sen ao 8: se diag > CCC ent ao 9: devolva 20 10: sen ao 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 .
vers ao de 10 de fevereiro de 2008
36.4
Exerc cio 4
399
400
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma fun ca o que receba um n umero N (inteiro e positivo, n ao e preciso testar) e devolva a cadeia primo se ele for PRIMO e n ao primo sen ao. 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 fa ca 6: Z BBB mod T 7: se Z = CCC ent ao 8: MM+1 9: mse 10: mpara 11: se DDD = 0 ent ao 12: devolva EEE 13: sen ao 14: devolva FFF 15: mse 16: mfuncao Esta funcao correta, deu os seguintes resultados: A01PRIM(20) = NAOPRIMO ; A01PRIM(54) = NAOPRIMO ; A01PRIM(67) = PRIMO . As substitui co es a fazer s ao: AAA=1 ; BBB=N ; CCC=0 ; DDD=M ; EEE=primo e FFF=nao primo . Algoritmo 2 Escreva uma fun ca o que receba um n umero N (inteiro e positivo, n ao e preciso testar) e devolva um inteiro contendo a soma dos divisores inteiros de N, 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 fa ca 5: Z DDD mod EEE 6: se FFF = Z ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=2 ; CCC=N-1 ; DDD=N ; EEE=T ; FFF=0 ; GGG=N ; HHH=T ; III=M . Algoritmo 3 Escreva uma fun ca o que receba dois inteiros N e X Se X for maior que zero, a funcao deve calcular e devolver o n umero N X e se n ao for deve devolver -1. 1: funcao A03POTE (N,X : inteiro) : inteiro
vers ao de 10 de fevereiro de 2008
DE CAP ITULO 36. EXERC ICIOS PRATICOS: 125A - CORREC AO ALGORITMOS R : inteiro R AAA 4: se X > 0 ent ao 5: enquanto BBB >0 fa ca 6: R R CCC N 7: X X DDD 1 8: menquanto 9: devolva EEE 10: sen ao 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 substitui co es a fazer s ao: AAA=1 ; BBB=X ; CCC=vezes (multiplicacao) ; DDD=+ (adicao) ; EEE=R ; FFF=-1 .
2: 3:
Algoritmo 4 Escreva uma fun ca o que receba tr es inteiros D, M e A representando uma data (D e o dia, M e o m es e A e o ano). O algoritmo deve devolver 1 se a data estiver errada e 0 sen ao. 1: funcao A04DATA (D, M, A : inteiro) : inteiro 2: biss, erro : inteiro 3: se 0 = (A mod AAA) ent ao 4: biss1 5: sen ao 6: se 0 = (BBB mod 100) ent ao 7: biss0 8: sen ao 9: se 0 = (A mod 4) ent ao 10: bissCCC 11: sen ao 12: bissDDD 13: mse 14: mse 15: mse 16: erro 0 17: se M = EEE ent ao 18: se biss = 1 ent ao 19: se D > FFF ent ao 20: erro 1 21: mse 22: sen ao 23: se D > GGG ent ao 24: erro 1 25: mse 26: mse 27: sen ao 28: se (M=4)(M=6)(M=9)(M=11) ent ao 29: se D > HHH ent ao 30: erro 1 31: mse
88-08, Pedro Kantek
401
402
sen ao se D > III ent ao erro 1 mse mse mse se M > JJJ ent ao erro 1 mse retorne erro mfuncao
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
Esta funcao correta, deu os seguintes resultados: A04DATA(25 10 32) = 0 ; A04DATA(29 2 2080) = 0 ; A04DATA(29 2 1900) = 1 . As substitui co es a fazer s ao: 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 e um grande distribuidor de presentes em todo o pa s. Recentemente, a empresa teve a oportunidade de comprar pequenos brinquedos, todos embalados em caixas retangulares. O objetivo da compra, foi colocar cada brinquedo em uma esfera colorida, para revend e-los como surpresa, mais ou menos como o Kinder ovo. Existem esferas de raios 10, 20 e 30 cm. Cada brinquedo, tem as suas 3 dimens oes A, B e C, medidas em cent metros. Escreva uma fun ca o que receba A,B,C e retorne e o raio da menor esfera poss vel. Todos os brinquedos caber ao 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 ent ao 6: devolva 30 7: sen ao 8: se diag > CCC ent ao 9: devolva 20 10: sen ao 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 substitui co es a fazer s ao: AAA=2 ; BBB=40 ; CCC=20 .
Responda R=
403
404
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS EEE I mse 10: FFF I + 1 11: menquanto 12: devolva GGG 13: 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 substitui co es a fazer s ao: AAA=1 ; BBB=MAI ; CCC=I ; DDD=MAI ; EEE=QUA ; FFF=I ; GGG=QUA .
8: 9:
Cap tulo 37
Algoritmo 2 Escreva uma fun ca o que receba um n umero K (inteiro, n ao e preciso testar) e um vetor N de 10 inteiros e e devolva a posi ca o de K em N. Se houver mais de 1 valor de K em N, deve retornar o primeiro. Se n ao houver K em N, retornar -1. 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 e o mesmo, a resposta e 4. Se K=13 e N e o mesmo, a resposta e -1. 1: funcao B02ACHKK (K, N[10] : inteiro) : inteiro 2: inteiro RES,I 3: RES AAA 4: I BBB 5: enquanto CCC < 11 fa ca 6: se N[I] = DDD ent ao 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 substitui co es a fazer s ao: 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 tamb em inteira 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 e 2. Se K=18, a resposta e 0 e se K=1, a reposta e 1. 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD fa ca 5: se N[I] = EEE ent ao 6: QTD FFF+ 1 7: mse 8: mpara 9: devolva GGG
88-08, Pedro Kantek
406
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO 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 substitui co es a fazer s ao: AAA=0 ; BBB=1 ; CCC=10 ; DDD=1 ; EEE=K ; FFF=QTD ; GGG=QTD .
10:
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS O vetor est a em ordem ? Escreva o algoritmo de uma fun ca o que receba um vetor de 10 inteiros e devolva 0 se o vetor est a em ordem crescente e 1 sen ao. Um vetor V est a em ordem crescente para quaisquer i e j , sendo que j > i, e v alida a express ao V [j ] V [i]. Note a presen ca da igualdade na condi ca o. Al em disso, essa express ao tem que ser v alida para todos os pares dentro do vetor. Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta e 0. Se o vetor for 1,3,4,5,6,8,7,10,16,21 a resposta e 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta e 0. 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB fa ca 6: se N[I] >N[I+1] ent ao 7: RES 1 8: mse 9: II+1 10: menquanto 11: devolva CCC 12: mfuncao
Algoritmo 4 Escreva uma fun ca o que receba um vetor ordenado de 11 inteiros. A fun ca o deve devolver 3 valores (um real e dois inteiros), a saber: m edia A soma dos elementos dividido por 11 moda o valor mais freq uente no vetor 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 fa ca 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 fa ca 13: SOM 0 14: para J de 1 a 11 fa ca 15: se N[I] = N[J] ent ao 16: SOM SOM + 1 17: mse 18: mpara 19: CTDR[I] FFF 20: mpara 21: MAI -9999 22: para J de 1 a 11 fa ca 23: se CTDR[J] > GGG ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
1: 2: 3:
vers ao de 10 de fevereiro de 2008
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 substitui co es a fazer s ao: AAA=0 ; BBB=10 ; CCC=I .
Responda
R=
407
408
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS funcao B02ACHKK (K, N[10] : inteiro) : inteiro inteiro RES,I 3: RES AAA 4: I BBB 5: enquanto CCC < 11 fa ca 6: se N[I] = DDD ent ao 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(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 substitui co es a fazer s ao: AAA=-1 ; BBB=1 ; CCC=I ; DDD=K ; EEE=I ; FFF=11 (ou qualquer > 10) ; GGG=I .
1: 2:
37.2
Exerc cio 2
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 tamb em inteira 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 e 2. Se K=18, a resposta e 0 e se K=1, a reposta e 1. 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD fa ca 5: se N[I] = EEE ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=1 ; CCC=10 ; DDD=1 ; EEE=I ; FFF=QTD ; GGG=QTD . Algoritmo 4 Escreva uma fun ca o que receba um vetor ordenado de 11 inteiros. A fun ca o deve devolver 3 valores (um real e dois inteiros), a saber: m edia A soma dos elementos dividido por 11 moda o valor mais freq uente no vetor mediana O valor do meio (neste caso o N[6]) funcao B04ESTA (N[11] : inteiro) : real,inteiro,inteiro MED : real 3: I,J,MOD,MAN,SOM,ASA,CTDR[11] : inteiro
1: 2: 88-08, Pedro Kantek
409
410
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS I1 SOM AAA 6: enquanto I < BBB fa ca 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 fa ca 13: SOM 0 14: para J de 1 a 11 fa ca 15: se N[I] = N[J] ent ao 16: SOM SOM + 1 17: mse 18: mpara 19: CTDR[I] FFF 20: mpara 21: MAI -9999 22: para J de 1 a 11 fa ca 23: se CTDR[J] > GGG ent ao 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 substitui co es a fazer s ao: AAA=1 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
4: 5:
Responda R=
O vetor est a em ordem ? Escreva o algoritmo de uma fun ca o que receba um vetor de 10 inteiros e devolva 0 se o vetor est a em ordem crescente e 1 sen ao. Um vetor V est a em ordem crescente para quaisquer i e j , sendo que j > i, e v alida a express ao V [j ] V [i]. Note a presen ca da igualdade na condi ca o. Al em disso, essa express ao tem que ser v alida para todos os pares dentro do vetor. Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta e 0. Se o vetor for 1,3,4,5,6,8,7,10,16,21 a resposta e 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta e 0. 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB fa ca 6: se N[I] >N[I+1] ent ao 7: RES 1 8: mse 9: II+1 10: menquanto 11: devolva CCC
vers ao de 10 de fevereiro de 2008
37.3
Exerc cio 3
411
412
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS Uma boa maneira de vericar isto e acompanhar as 3 execu co es do algoritmo (correto) que acompanham o enunciado. Trata-se de algo similar a um chines reverso. Identique qual(is) dos 5 algoritmos est ao corretos denindo An como: A1 1 se o algoritmo 1 est a correto e A1 0 sen ao. Idem para A2 , A3 , A4 e A5 . Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva uma fun ca o que receba um vetor de 10 n umeros inteiros e devolva a posi ca o daquele n umero que e o maior do vetor. Se houver dois ou mais iguais a este maior, deve-se retornar o endere co do primeiro. Por exemplo, se o vetor for 4, 7, 2, 19, 21, 8, 7, 19, 8, 6 a resposta deve ser 5, j a que o 21 (o maior) e o quinto elemento. 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 fa ca 6: se N[I] > DDD ent ao 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 substitui co es a fazer s ao: AAA=1 ; BBB=MAI ; CCC=N[I] ; DDD=MAI ; EEE=QUA ; FFF=I ; GGG=QUA . Algoritmo 2 Escreva uma fun ca o que receba um n umero K (inteiro, n ao e preciso testar) e um vetor N de 10 inteiros e e devolva a posi ca o de K em N. Se houver mais de 1 valor de K em N, deve retornar o primeiro. Se n ao houver K em N, retornar -1. 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 e o mesmo, a resposta e 4. Se K=13 e N e o mesmo, a resposta e -1. 1: funcao B02ACHKK (K, N[10] : inteiro) : inteiro 2: inteiro RES,I 3: RES AAA 4: I BBB 5: enquanto CCC < 11 fa ca 6: se N[I] = DDD ent ao 7: RES EEE 8: I FFF 9: mse 10: II+1 11: menquanto 12: devolva GGG 13: mfuncao
vers ao de 10 de fevereiro de 2008
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO 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 substitui co es a fazer s ao: 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 tamb em inteira 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 e 2. Se K=18, a resposta e 0 e se K=1, a reposta e 1. 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD fa ca 5: se N[I] = EEE ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=1 ; CCC=10 ; DDD=1 ; EEE=K ; FFF=QTD ; GGG=I . Algoritmo 4 Escreva uma fun ca o que receba um vetor ordenado de 11 inteiros. A fun ca o deve devolver 3 valores (um real e dois inteiros), a saber: m edia A soma dos elementos dividido por 11 moda o valor mais freq uente no vetor 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 fa ca SOM CCC + N[I] II+1 menquanto DDD SOM 11 EEE N[6] para I de 1 a 11 fa ca SOM 0 para J de 1 a 11 fa ca se N[I] = N[J] ent ao SOM SOM + 1 414
vers ao de 10 de fevereiro de 2008
413
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS mse mpara 19: CTDR[I] FFF 20: mpara 21: MAI -9999 22: para J de 1 a 11 fa ca 23: se CTDR[J] > GGG ent ao 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 substitui co es a fazer s ao: AAA=1 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
17: 18:
37.4
Exerc cio 4
O vetor est a em ordem ? Escreva o algoritmo de uma fun ca o que receba um vetor de 10 inteiros e devolva 0 se o vetor est a em ordem crescente e 1 sen ao. Um vetor V est a em ordem crescente para quaisquer i e j , sendo que j > i, e v alida a express ao V [j ] V [i]. Note a presen ca da igualdade na condi ca o. Al em disso, essa express ao tem que ser v alida para todos os pares dentro do vetor. Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta e 0. Se o vetor for 1,3,4,5,6,8,7,10,16,21 a resposta e 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta e 0. 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB fa ca 6: se N[I] >N[I+1] ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=10 ; CCC=RES . Responda R=
415
416
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS funcao B02ACHKK (K, N[10] : inteiro) : inteiro inteiro RES,I 3: RES AAA 4: I BBB 5: enquanto CCC < 11 fa ca 6: se N[I] = DDD ent ao 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(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 substitui co es a fazer s ao: AAA=-1 ; BBB=1 ; CCC=I ; DDD=K ; EEE=I ; FFF=11 (ou qualquer > 10) ; GGG=RES .
1: 2: 4:
DE CAP ITULO 37. EXERC ICIOS PRATICOS: 125B - CORREC AO ALGORITMOS I1 SOM AAA 6: enquanto I < BBB fa ca 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 fa ca 13: SOM 0 14: para J de 1 a 11 fa ca 15: se N[I] = N[J] ent ao 16: SOM SOM + 1 17: mse 18: mpara 19: CTDR[I] FFF 20: mpara 21: MAI -9999 22: para J de 1 a 11 fa ca 23: se CTDR[J] > GGG ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=12 ; CCC=SOM ; DDD=MED ; EEE=MAN ; FFF=SOM ; GGG=MAI ; HHH=J ; III=MOD .
5:
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 tamb em inteira 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 e 2. Se K=18, a resposta e 0 e se K=1, a reposta e 1. 1: funcao B03CONK (K,N[10] : inteiro) : inteiro 2: inteiro QTD,I 3: QTD AAA 4: para I de BBB a CCC passo DDD fa ca 5: se N[I] = EEE ent ao 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 substitui co es a fazer s ao: AAA=0 ; BBB=0 ; CCC=10 ; DDD=1 ; EEE=K ; FFF=QTD ; GGG=QTD . Algoritmo 4 Escreva uma fun ca o que receba um vetor ordenado de 11 inteiros. A fun ca o deve devolver 3 valores (um real e dois inteiros), a saber: m edia A soma dos elementos dividido por 11 moda o valor mais freq uente no vetor mediana O valor do meio (neste caso o N[6]) funcao B04ESTA (N[11] : inteiro) : real,inteiro,inteiro MED : real 3: I,J,MOD,MAN,SOM,ASA,CTDR[11] : inteiro
1: 2:
vers ao de 10 de fevereiro de 2008
O vetor est a em ordem ? Escreva o algoritmo de uma fun ca o que receba um vetor de 10 inteiros e devolva 0 se o vetor est a em ordem crescente e 1 sen ao. Um vetor V est a em ordem crescente para quaisquer i e j , sendo que j > i, e v alida a express ao V [j ] V [i]. Note a presen ca da igualdade na condi ca o. Al em disso, essa express ao tem que ser v alida para todos os pares dentro do vetor. Por exemplo se o vetor for 1,3,4,5,6,7,9,10,16,21 a resposta e 0. Se o vetor for 1,3,4,5,6,8,7,10,16,21 a resposta e 1 e se for 2,2,2,2,2,2,2,2,2,2 a resposta e 0. 1: funcao B05ESORN (N[10] : inteiro) : inteiro27 2: inteiro I, RES 3: RES AAA 4: I 1 5: enquanto I < BBB fa ca 6: se N[I] >N[I+1] ent ao 7: RES 1 8: mse 9: II+1 10: menquanto 11: devolva CCC
88-08, Pedro Kantek
417
418
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
419
420
Cap tulo 38
TAM 1 enquanto X[TAM] AAA . fa ca TAM TAM + 1 menquanto INI 1 FIM BBB EPAL 1 enquanto INI < CCC fa ca enquanto X[DDD] = fa ca INI INI + 1 menquanto enquanto X[EEE] = fa ca FIM FIM - 1 menquanto se X[INI] FFF X[FIM] ent ao 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 substitui co es a fazer s ao: 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 fun ca o que receba uma chave K (Inteiro) e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tamb em crescente onde a chave K foi inclu da em seu local correto. 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA fa ca 4: R[I] V[I] 5: mpara 6: I BBB 7: enquanto (R[I] CCC)(I<DDD) fa ca 8: I EEE 9: menquanto 10: J FFF 11: enquanto J I fa ca 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
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO 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 substitui co es a fazer s ao: AAA=11 ; BBB=1 ; CCC=K ; DDD=11 ; EEE=I+1 ; FFF=10 ; GGG=J-1 ; HHH=K ; III=R .
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS Algoritmo 4 Escreva o algoritmo de uma fun ca o que receba uma chave K (inteiro) e um vetor V de 10 inteiros. A fun ca o deve excluir de V todas as ocorr encias (se houver) de K, incluindo zeros ao nal se necess ario. Por exemplo, se chamada com 22 e 1 7 21 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 fa ca 6: se V[I] = K ent ao 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF fa ca 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 substitui co es a fazer s ao: 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 fa ca 6: se X[I] > CCC ent ao 7: MAI X[I] 8: mse 9: se X[I] < DDD ent ao 10: MEN X[I] 11: mse 12: mpara 13: AMP MAI - MEN 14: RRRR AMP 15: mfuncao
16:
Algoritmo 3 Escreva o algoritmo de uma fun ca o que receba uma frase (cadeia de 80 caracteres, o u ltimo u til e um ponto) e devolva o n umero da palavra que e a maior da frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o n umero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 letras e como h a empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA 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] = . fa ca 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM fa ca 12: se X[I] CCC ent ao 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 fa ca 24: se TMS[I] > MAI ent ao 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 substitui co es a fazer s ao: AAA=1 ; BBB=TAM+1 ; CCC== ; DDD=CTP+1 ; EEE=I ; FFF=2 ; GGG=CTP ; HHH=I ; III=QUA .
vers ao de 10 de fevereiro de 2008
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 substitui co es a fazer s ao: AAA=-9999 ; BBB=-9999 ; CCC=MAI ; DDD=MEN .
88-08, Pedro Kantek
423
424
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS Responda R=
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS contr ario. Exemplos: ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observa ca o: note que as posi co es do espa co em branco n ao s ao as mesmas na ida e na volta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI,FIM,EPAL,TAM 3: TAM 1 4: enquanto X[TAM] AAA . fa ca 5: TAM TAM + 1 6: menquanto 7: INI 1 8: FIM BBB 9: EPAL 1 10: enquanto INI < CCC fa ca 11: enquanto X[DDD] = fa ca 12: INI INI + 1 13: menquanto 14: enquanto X[EEE] = fa ca 15: FIM FIM - 1 16: menquanto 17: se X[INI] FFF X[FIM] ent ao 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 substitui co es a fazer s ao: 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 fun ca o que receba uma chave K (Inteiro) e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tamb em crescente onde a chave K foi inclu da em seu local correto. 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA fa ca 4: R[I] V[I] 5: mpara 6: I BBB 7: enquanto (R[I] CCC)(I<DDD) fa ca 8: I EEE 9: menquanto 10: J FFF
88-08, Pedro Kantek
38.2
Exerc cio 2
425
426
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO 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 substitui co es a fazer s ao: 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 fun ca o que receba uma chave K (inteiro) e um vetor V de 10 inteiros. A fun ca o deve excluir de V todas as ocorr encias (se houver) de K, incluindo zeros ao nal se necess ario. Por exemplo, se chamada com 22 e 1 7 21 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 fa ca 6: se V[I] = K ent ao 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF fa ca 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 substitui co es a fazer s ao: 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 fa ca 6: se X[I] > CCC ent ao 7: MAI X[I] 8: mse 9: se X[I] < DDD ent ao 10: MEN X[I] 11: mse 12: mpara 13: AMP MAI - MEN 14: RRRR AMP
88-08, Pedro Kantek
enquanto J I fa ca 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 substitui co es a fazer s ao: 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 fun ca o que receba uma frase (cadeia de 80 caracteres, o u ltimo u til e um ponto) e devolva o n umero da palavra que e a maior da frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o n umero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 letras e como h a empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA 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] = . fa ca 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM fa ca 12: se X[I] CCC ent ao 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 fa ca 24: se TMS[I] > MAI ent ao 25: MAI TMS[I] 26: QUA HHH 27: mse 28: mpara 29: devolva MAI 30: mfuncao
vers ao de 10 de fevereiro de 2008
427
428
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS Algoritmo 1 Escreva uma fun ca o que receba uma frase (cadeia de at e 80 caracteres, terminada por um ponto) e devolva 1 se a frase for um pal ndromo e 0 sen ao. Um pal ndromo e aquela frase que pode ser lida tanto da direita para a esquerda como ao contr ario. Exemplos: ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observa ca o: note que as posi co es do espa co em branco n ao s ao as mesmas na ida e na volta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI,FIM,EPAL,TAM 3: TAM 1 4: enquanto X[TAM] AAA . fa ca 5: TAM TAM + 1 6: menquanto 7: INI 1 8: FIM BBB 9: EPAL 1 10: enquanto INI < CCC fa ca 11: enquanto X[DDD] = fa ca 12: INI INI + 1 13: menquanto 14: enquanto X[EEE] = fa ca 15: FIM FIM - 1 16: menquanto 17: se X[INI] FFF X[FIM] ent ao 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 substitui co es a fazer s ao: 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 fun ca o que receba uma chave K (Inteiro) e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tamb em crescente onde a chave K foi inclu da em seu local correto. 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA fa ca 4: R[I] V[I] 5: mpara 6: I BBB 7: enquanto (R[I] CCC)(I<DDD) fa ca
88-08, Pedro Kantek
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 substitui co es a fazer s ao: AAA=-9999 ; BBB=+9999 ; CCC=MAI ; DDD=MEN . Responda R=
38.3
Exerc cio 3
429
430
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS I EEE menquanto 10: J FFF 11: enquanto J I fa ca 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(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 substitui co es a fazer s ao: AAA=10 ; BBB=1 ; CCC=K ; DDD=11 ; EEE=I+1 ; FFF=10 ; GGG=J-1 ; HHH=K ; III=R .
8: 9: 29: 30:
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO 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 substitui co es a fazer s ao: AAA=1 ; BBB=TAM+1 ; CCC=sinal de igual (=) ; DDD=CTP+1 ; EEE=I ; FFF=1 ; GGG=CTP ; HHH=I ; III=QUA . Algoritmo 4 Escreva o algoritmo de uma fun ca o que receba uma chave K (inteiro) e um vetor V de 10 inteiros. A fun ca o deve excluir de V todas as ocorr encias (se houver) de K, incluindo zeros ao nal se necess ario. Por exemplo, se chamada com 22 e 1 7 21 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 fa ca 6: se V[I] = K ent ao 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF fa ca 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 substitui co es a fazer s ao: 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 fa ca 6: se X[I] > CCC ent ao 7: MAI X[I] 8: mse 9: se X[I] < DDD ent ao 10: MEN X[I] 11: mse 12: mpara
88-08, Pedro Kantek
Algoritmo 3 Escreva o algoritmo de uma fun ca o que receba uma frase (cadeia de 80 caracteres, o u ltimo u til e um ponto) e devolva o n umero da palavra que e a maior da frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o n umero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 letras e como h a empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA 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] = . fa ca 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM fa ca 12: se X[I] CCC ent ao 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 fa ca 24: se TMS[I] > MAI ent ao 25: MAI TMS[I] 26: QUA HHH 27: mse 28: mpara
vers ao de 10 de fevereiro de 2008
431
432
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16)
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 substitui co es a fazer s ao: AAA=-9999 ; BBB=+9999 ; CCC=MEN ; DDD=MEN . Responda R=
38.4
Exerc cio 4
Algoritmo 1 Escreva uma fun ca o que receba uma frase (cadeia de at e 80 caracteres, terminada por um ponto) e devolva 1 se a frase for um pal ndromo e 0 sen ao. Um pal ndromo e aquela frase que pode ser lida tanto da direita para a esquerda como ao contr ario. Exemplos: ROMA ME TEM AMOR SOCORRAM ME SUBI NO ONIBUS EM MARROCOS SAIRAM O TIO E OITO MARIAS OVO Observa ca o: note que as posi co es do espa co em branco n ao s ao as mesmas na ida e na volta. 1: funcao C01PALI (X[80] : caracter) : inteiro 2: inteiro INI,FIM,EPAL,TAM 3: TAM 1 4: enquanto X[TAM] AAA . fa ca 5: TAM TAM + 1 6: menquanto 7: INI 1 8: FIM BBB 9: EPAL 1 10: enquanto INI < CCC fa ca 11: enquanto X[DDD] = fa ca 12: INI INI + 1 13: menquanto 14: enquanto X[EEE] = fa ca 15: FIM FIM - 1 16: menquanto 17: se X[INI] FFF X[FIM] ent ao 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 substitui co es a fazer s ao: 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 fun ca o que receba uma chave K (Inteiro) e um vetor V (de 10 inteiros) crescente e devolva outro vetor de 11 inteiros, tamb em crescente onde a chave K foi inclu da em seu local correto. 1: funcao C02INCL (K, V[10] : inteiro) : R[11] inteiro 2: inteiro I,J 3: para I de 1 a AAA fa ca 4: R[I] V[I]
88-08, Pedro Kantek
433
434
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS mpara I BBB 7: enquanto (R[I] CCC)(I<DDD) fa ca 8: I EEE 9: menquanto 10: J FFF 11: enquanto J I fa ca 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 substitui co es a fazer s ao: AAA=10 ; BBB=1 ; CCC=K ; DDD=11 ; EEE=I+1 ; FFF=10 ; GGG=J+1 ; HHH=K ; III=R .
5: 6: 26: 27:
DE CAP ITULO 38. EXERC ICIOS PRATICOS: 125C - CORREC AO ALGORITMOS QUA HHH mse 28: mpara 29: devolva MAI 30: 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 substitui co es a fazer s ao: AAA=1 ; BBB=TAM+1 ; CCC=sinal de igual (=) ; DDD=CTP+1 ; EEE=I ; FFF=2 ; GGG=CTP ; HHH=I ; III=MAI . Algoritmo 4 Escreva o algoritmo de uma fun ca o que receba uma chave K (inteiro) e um vetor V de 10 inteiros. A fun ca o deve excluir de V todas as ocorr encias (se houver) de K, incluindo zeros ao nal se necess ario. Por exemplo, se chamada com 22 e 1 7 21 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 fa ca 6: se V[I] = K ent ao 7: R[J] V[I] 8: J DDD 9: mse 10: I EEE 11: menquanto 12: enquanto J < FFF fa ca 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 substitui co es a fazer s ao: 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 fa ca 6: se X[I] > CCC ent ao 7: MAI X[I] 8: mse 9: se X[I] < DDD ent ao
88-08, Pedro Kantek
Algoritmo 3 Escreva o algoritmo de uma fun ca o que receba uma frase (cadeia de 80 caracteres, o u ltimo u til e um ponto) e devolva o n umero da palavra que e a maior da frase. Se houver empate (mais de uma palavra com o mesmo comprimento), devolver o n umero da primeira. Por exemplo, na frase IVO VIU A UVA, a maior palavra tem 3 letras e como h a empate a resposta deve ser 1. Na frase OUVIRAM DO IPIRANGA 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] = . fa ca 6: TAM BBB 7: menquanto 8: CTP 1 9: I 1 10: J 0 11: enquanto I TAM fa ca 12: se X[I] CCC ent ao 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 fa ca 24: se TMS[I] > MAI ent ao 25: MAI TMS[I]
vers ao de 10 de fevereiro de 2008
435
436
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 substitui co es a fazer s ao: 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
437
438
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO retorne V mfun ca o As substitui co es a fazer s ao: AAA=J ; BBB=SOM ; CCC=I ; DDD=J . Esta fun ca o correta, deu os seguintes resultados: 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:
Cap tulo 39
Algoritmo 2 Escreva o algoritmo de uma fun ca o que receba uma matriz de 4 linhas por 4 colunas de n umeros inteiros. A fun ca o deve gerar um vetor de 4 n umeros reais. O elemento k da resposta e calculado como a soma dos elementos da coluna k , que est ao acima da linha k , dividido pela soma dos elementos que est ao na coluna k e nas linhas k , k + 1, ..., 4. 1: fun ca o D02MSMI (M[1..4] [1..4] : inteiro) V[1..4]:real 2: J,NUM,DEN,I : inteiro 3: para J de 1 a 4 fa ca 4: NUM AAA 5: DEN 0 6: para I de 1 a BBB fa ca 7: NUM NUM + M[I][EEE] 8: mpara 9: para I de CCC a 4 fa ca 10: DEN DEN + M[DDD][J] 11: mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=0 (zero) ; BBB=J-1 ; CCC=1 (um) ; DDD=I ; EEE=J ; FFF=NUM . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba uma matriz de 4 linhas por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont em o menor valor em cada linha. 1: fun ca o D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro 2: I,J,MEN : inteiro 3: para I de 1 a 4 fa ca 4: MEN AAA 5: para J de 1 a BBB fa ca 6: se M[I][CCC] < MEN ent ao 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfun ca o
88-08, Pedro Kantek
440
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO As substitui co es a fazer s ao: AAA=999999 ; BBB=5 ; CCC=J ; DDD=J . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba duas matrizes conform aveis, isto e a primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A fun ca o deve multiplicar as duas matrizes, gerando o resultado que ter a 3 linhas por 3 colunas. 1: fun ca o D04MUMA (A[1..3][1..4]:inteiro, 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at e aqui e o cabe calho... 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA fa ca 6: para J de 1 a BBB fa ca 7: SOM 0 8: para K de 1 a CCC fa ca 9: SOM SOM+(A[I][DDD]B[EEE][J]) 10: mpara 11: V[FFF][J] SOM 12: mpara 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=3 ; BBB=3 ; CCC=4 ; DDD=K ; EEE=K ; FFF=K . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba uma matriz de 6 linhas por 2 colunas contendo o resultado de uma elei ca o. A primeira coluna corresponde ao n umero do candidato, sendo que nem todas as linhas estar ao preenchidas. Neste caso as linhas n ao usadas conter ao zeros. Existem dois c odigos em especial que estar ao sempre presentes e que s ao 998=votos em branco e 999=votos nulos. A segunda coluna cont em a quantidade de votos a cada candidato e tamb em brancos e nulos. A fun ca o deve devolver o n umero do candidato eleito, ou -1 se a elei ca o n ao for v alida. O eleito e aquele que obteve o maior n umero de votos se a elei ca o foi v alida. Uma elei ca o e v alida quando o total de votos dados a candidatos mais os votos em 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 hip otese e o mais velho). 1: fun ca o D05ELEI (VOT[1..6][1..2]:inteiro):inteiro 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA fa ca 5: se VOT[I][1] = BBB ent ao 6: VAL VAL + VOT[I][CCC] 7: sen ao
vers ao de 10 de fevereiro de 2008
NUL VOT[I][2] mse mpara TOT VAL 2 se NUL > DDD ent ao retorne -1 sen ao MAI -999999 para I de 1 a 6 fa ca se VOT[I][EEE] > MAI ent ao FFF VOT[I][2] QUEM VOT[I][1] mse mpara se (GGG = 998) (GGG=999) ent ao retorne 1 sen ao retorne QUEM mse mse mfun ca o As substitui co es a fazer s ao: AAA=6 ; BBB=999 ; CCC=2 ; DDD=NUL ; EEE=2 ; FFF=MAI ; GGG=QUEM
. Esta fun ca o correta, deu os seguintes resultados: 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 . Responda R=
39.2
Exerc cio 2
441
442
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO Identique qual(is) dos 5 algoritmos est ao corretos denindo An como: A1 1 se o algoritmo 1 est a correto e A1 0 sen ao. Idem para A2 , A3 , A4 e A5 . Responda o resultado R R = (A1 1) + (A2 2) + (A3 4) + (A4 8) + (A5 16) Algoritmo 1 Escreva o algoritmo de uma fun ca o que receba uma matriz de 9 inteiros (3 linhas por 3 colunas), totalize as colunas e devolva um vetor de 3 totais. 1: fun ca o D01VESO (M [1..3] [1..3] : inteiro) V[1..3]:inteiro 2: I,J,SOM : inteiro 3: V 0,0,0 4: para AAA de 1 a 3 fa ca 5: BBB 0 6: para CCC de 1 a 3 fa ca 7: SOM SOM + M[I] [J] 8: mpara 9: V[DDD] SOM 10: mpara 11: retorne V 12: mfun ca o As substitui co es a fazer s ao: AAA=J ; BBB=SOM ; CCC=J ; DDD=J . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba uma matriz de 4 linhas por 4 colunas de n umeros inteiros. A fun ca o deve gerar um vetor de 4 n umeros reais. O elemento k da resposta e calculado como a soma dos elementos da coluna k , que est ao acima da linha k , dividido pela soma dos elementos que est ao na coluna k e nas linhas k , k + 1, ..., 4. 1: fun ca o D02MSMI (M[1..4] [1..4] : inteiro) V[1..4]:real 2: J,NUM,DEN,I : inteiro 3: para J de 1 a 4 fa ca 4: NUM AAA 5: DEN 0 6: para I de 1 a BBB fa ca 7: NUM NUM + M[I][EEE] 8: mpara 9: para I de CCC a 4 fa ca 10: DEN DEN + M[DDD][J] 11: mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=0 (zero) ; BBB=J-1 ; CCC=J ; DDD=J ; EEE=J ; FFF=NUM . Esta fun ca o correta, deu os seguintes resultados: 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 .
vers ao de 10 de fevereiro de 2008
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO Algoritmo 3 Escreva o algoritmo de uma fun ca o que receba uma matriz de 4 linhas por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont em o menor valor em cada linha. 1: fun ca o D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro 2: I,J,MEN : inteiro 3: para I de 1 a 4 fa ca 4: MEN AAA 5: para J de 1 a BBB fa ca 6: se M[I][CCC] < MEN ent ao 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfun ca o As substitui co es a fazer s ao: AAA=0 (zero) ; BBB=5 ; CCC=J ; DDD=MEN . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba duas matrizes conform aveis, isto e a primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A fun ca o deve multiplicar as duas matrizes, gerando o resultado que ter a 3 linhas por 3 colunas. 1: fun ca o D04MUMA (A[1..3][1..4]:inteiro, 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at e aqui e o cabe calho... 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA fa ca 6: para J de 1 a BBB fa ca 7: SOM 0 8: para K de 1 a CCC fa ca 9: SOM SOM+(A[I][DDD]B[EEE][J]) 10: mpara 11: V[FFF][J] SOM 12: mpara 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=3 ; BBB=3 ; CCC=4 ; DDD=K ; EEE=K ; FFF=I . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba uma matriz de 6 linhas por 2 colunas contendo o resultado de uma elei ca o. A primeira coluna corresponde ao
88-08, Pedro Kantek
443
444
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO n umero do candidato, sendo que nem todas as linhas estar ao preenchidas. Neste caso as linhas n ao usadas conter ao zeros. Existem dois c odigos em especial que estar ao sempre presentes e que s ao 998=votos em branco e 999=votos nulos. A segunda coluna cont em a quantidade de votos a cada candidato e tamb em brancos e nulos. A fun ca o deve devolver o n umero do candidato eleito, ou -1 se a elei ca o n ao for v alida. O eleito e aquele que obteve o maior n umero de votos se a elei ca o foi v alida. Uma elei ca o e v alida quando o total de votos dados a candidatos mais os votos em 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 hip otese e o mais velho). 1: fun ca o D05ELEI (VOT[1..6][1..2]:inteiro):inteiro 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA fa ca 5: se VOT[I][1] = BBB ent ao 6: VAL VAL + VOT[I][CCC] 7: sen ao 8: NUL VOT[I][2] 9: mse 10: mpara 11: TOT VAL 2 12: se NUL > DDD ent ao 13: retorne -1 14: sen ao 15: MAI -999999 16: para I de 1 a 6 fa ca 17: se VOT[I][EEE] > MAI ent ao 18: FFF VOT[I][2] 19: QUEM VOT[I][1] 20: mse 21: mpara 22: se (GGG = 998) (GGG=999) ent ao 23: retorne 1 24: sen ao 25: retorne QUEM 26: mse 27: mse 28: mfun ca o As substitui co es a fazer s ao: AAA=6 ; BBB=999 ; CCC=2 ; DDD=TOT ; EEE=2 ; FFF=MAI ; GGG=QUEM . Esta fun ca o correta, deu os seguintes resultados: 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 .
39.3
Exerc cio 2
Responda R=
445
446
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO DEN 0 para I de 1 a BBB fa ca 7: NUM NUM + M[I][EEE] 8: mpara 9: para I de CCC a 4 fa ca 10: DEN DEN + M[DDD][J] 11: mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=1 (um) ; BBB=J-1 ; CCC=J ; DDD=I ; EEE=J ; FFF=NUM . Esta fun ca o correta, deu os seguintes resultados: 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:
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO para K de 1 a CCC fa ca SOM SOM+(A[I][DDD]B[EEE][J]) 10: mpara 11: V[FFF][J] SOM 12: mpara 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=3 ; BBB=4 ; CCC=4 ; DDD=K ; EEE=K ; FFF=I . Esta fun ca o correta, deu os seguintes resultados: 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:
Algoritmo 3 Escreva o algoritmo de uma fun ca o que receba uma matriz de 4 linhas por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont em o menor valor em cada linha. 1: fun ca o D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro 2: I,J,MEN : inteiro 3: para I de 1 a 4 fa ca 4: MEN AAA 5: para J de 1 a BBB fa ca 6: se M[I][CCC] < MEN ent ao 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfun ca o As substitui co es a fazer s ao: AAA=999999 ; BBB=5 ; CCC=J ; DDD=J . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba duas matrizes conform aveis, isto e a primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A fun ca o deve multiplicar as duas matrizes, gerando o resultado que ter a 3 linhas por 3 colunas. 1: fun ca o D04MUMA (A[1..3][1..4]:inteiro, 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at e aqui e o cabe calho... 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA fa ca 6: para J de 1 a BBB fa ca 7: SOM 0
vers ao de 10 de fevereiro de 2008
Algoritmo 5 Escreva o algoritmo de uma fun ca o que receba uma matriz de 6 linhas por 2 colunas contendo o resultado de uma elei ca o. A primeira coluna corresponde ao n umero do candidato, sendo que nem todas as linhas estar ao preenchidas. Neste caso as linhas n ao usadas conter ao zeros. Existem dois c odigos em especial que estar ao sempre presentes e que s ao 998=votos em branco e 999=votos nulos. A segunda coluna cont em a quantidade de votos a cada candidato e tamb em brancos e nulos. A fun ca o deve devolver o n umero do candidato eleito, ou -1 se a elei ca o n ao for v alida. O eleito e aquele que obteve o maior n umero de votos se a elei ca o foi v alida. Uma elei ca o e v alida quando o total de votos dados a candidatos mais os votos em 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 hip otese e o mais velho). 1: fun ca o D05ELEI (VOT[1..6][1..2]:inteiro):inteiro 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA fa ca 5: se VOT[I][1] = BBB ent ao 6: VAL VAL + VOT[I][CCC] 7: sen ao 8: NUL VOT[I][2] 9: mse 10: mpara 11: TOT VAL 2 12: se NUL > DDD ent ao 13: retorne -1 14: sen ao 15: MAI -999999 16: para I de 1 a 6 fa ca 17: se VOT[I][EEE] > MAI ent ao 18: FFF VOT[I][2] 19: QUEM VOT[I][1] 20: mse 21: mpara 22: se (GGG = 998) (GGG=999) ent ao 23: retorne 1 24: sen ao 25: retorne QUEM
88-08, Pedro Kantek
447
448
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO mse mse 28: mfun ca o As substitui co es a fazer s ao: AAA=6 ; BBB=999 ; CCC=2 ; DDD=TOT ; EEE=2 ; FFF=MAI ; GGG=QUEM . Esta fun ca o correta, deu os seguintes resultados: 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 .
26: 27:
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO retorne V mfun ca o As substitui co es a fazer s ao: AAA=I ; BBB=SOM ; CCC=I ; DDD=J . Esta fun ca o correta, deu os seguintes resultados: 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:
Responda R=
39.4
Exerc cio 3
Algoritmo 2 Escreva o algoritmo de uma fun ca o que receba uma matriz de 4 linhas por 4 colunas de n umeros inteiros. A fun ca o deve gerar um vetor de 4 n umeros reais. O elemento k da resposta e calculado como a soma dos elementos da coluna k , que est ao acima da linha k , dividido pela soma dos elementos que est ao na coluna k e nas linhas k , k + 1, ..., 4. 1: fun ca o D02MSMI (M[1..4] [1..4] : inteiro) V[1..4]:real 2: J,NUM,DEN,I : inteiro 3: para J de 1 a 4 fa ca 4: NUM AAA 5: DEN 0 6: para I de 1 a BBB fa ca 7: NUM NUM + M[I][EEE] 8: mpara 9: para I de CCC a 4 fa ca 10: DEN DEN + M[DDD][J] 11: mpara 12: V[J] FFF DEN 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=0 (zero) ; BBB=J-1 ; CCC=J ; DDD=I ; EEE=J ; FFF=NUM . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba uma matriz de 4 linhas por 5 colunas contendo inteiros e devolva um vetor de 4 inteiros que cont em o menor valor em cada linha. 1: fun ca o D03MEHO (M[1..4][1..5]:inteiro) V[1..4]:inteiro 2: I,J,MEN : inteiro 3: para I de 1 a 4 fa ca 4: MEN AAA 5: para J de 1 a BBB fa ca 6: se M[I][CCC] < MEN ent ao 7: MEN M[I][J] 8: mse 9: mpara 10: V[I] DDD 11: mpara 12: retorne V 13: mfun ca o
88-08, Pedro Kantek
449
450
DE ALGORITMOS CAP ITULO 39. EXERC ICIOS PRATICOS 125D - CORREC AO As substitui co es a fazer s ao: AAA=999999 ; BBB=5 ; CCC=I ; DDD=MEN . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba duas matrizes conform aveis, isto e a primeiro de 3 linhas por 4 colunas e a segunda de 4 linhas por 3 colunas. A fun ca o deve multiplicar as duas matrizes, gerando o resultado que ter a 3 linhas por 3 colunas. 1: fun ca o D04MUMA (A[1..3][1..4]:inteiro, 2: B[1..4][1..3]:inteiro) 3: V[1..3][1..3]:real // at e aqui e o cabe calho... 4: I,J,K,SOM:inteiro 5: para I de 1 a AAA fa ca 6: para J de 1 a BBB fa ca 7: SOM 0 8: para K de 1 a CCC fa ca 9: SOM SOM+(A[I][DDD]B[EEE][J]) 10: mpara 11: V[FFF][J] SOM 12: mpara 13: mpara 14: retorne V 15: mfun ca o As substitui co es a fazer s ao: AAA=4 ; BBB=3 ; CCC=4 ; DDD=K ; EEE=K ; FFF=I . Esta fun ca o correta, deu os seguintes resultados: 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 fun ca o que receba uma matriz de 6 linhas por 2 colunas contendo o resultado de uma elei ca o. A primeira coluna corresponde ao n umero do candidato, sendo que nem todas as linhas estar ao preenchidas. Neste caso as linhas n ao usadas conter ao zeros. Existem dois c odigos em especial que estar ao sempre presentes e que s ao 998=votos em branco e 999=votos nulos. A segunda coluna cont em a quantidade de votos a cada candidato e tamb em brancos e nulos. A fun ca o deve devolver o n umero do candidato eleito, ou -1 se a elei ca o n ao for v alida. O eleito e aquele que obteve o maior n umero de votos se a elei ca o foi v alida. Uma elei ca o e v alida quando o total de votos dados a candidatos mais os votos em 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 hip otese e o mais velho). 1: fun ca o D05ELEI (VOT[1..6][1..2]:inteiro):inteiro 2: VAL,I,NUL,TOT,MAI,QUEM:inteiro 3: VAL 0 4: para I de 1 a AAA fa ca 5: se VOT[I][1] = BBB ent ao 6: VAL VAL + VOT[I][CCC] 7: sen ao
vers ao de 10 de fevereiro de 2008
NUL VOT[I][2] mse mpara TOT VAL 2 se NUL > DDD ent ao retorne -1 sen ao MAI -999999 para I de 1 a 6 fa ca se VOT[I][EEE] > MAI ent ao FFF VOT[I][2] QUEM VOT[I][1] mse mpara se (GGG = 998) (GGG=999) ent ao retorne 1 sen ao retorne QUEM mse mse mfun ca o As substitui co es a fazer s ao: AAA=6 ; BBB=999 ; CCC=2 ; DDD=TOT ; EEE=2 ; FFF=MAI ; GGG=QUEM
. Esta fun ca o correta, deu os seguintes resultados: 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 . Responda R=
39.5
Respostas
linhas onde ocorreu o erro 03464 34100 01420 10310 soma dos certos 1 24 17 18
451
452
CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES Zerando a matriz abaixo da diagonal principal Este e um problema t pico em teoria de grafos. A matriz de adjac encia de um digrafo (grafo direcionado) usa todas as linhas da matriz. Se este grafo passar a ser considerado como n ao direcionado, a parte abaixo da diagonal principal precisa ser zerada. Eis o algoritmo que o faz: 1: real MZ[i][i] fun ca o ZERAB (real M[i][i]) 2: inteiro J, K 3: para J de 1 at e i fa ca 4: para K de 1 at e i fa ca 5: se K < J ent ao 6: MZ[J][K] 0 7: sen ao 8: MZ[J][K] M[J][K] 9: mse 10: mpara 11: mpara 12: devolva MZ 13: m{fun ca o} multiplica c ao matricial Este e um algoritmo famoso na matem atica. Dadas as matrizes A (de i linhas por j colunas) e B (de k linhas por m colunas), onde j = k , obter a matriz C, multiplica ca o de A por B, de i linhas por m colunas, a partir de C [i][m] = j x=1 A[i][x] B [x][m] Para implement a-lo, tem-se o 1: real C [i][m] fun ca o MM (real A[i][j], B[k][m]) {j tem que ser igual a k} 2: inteiro AUX 3: inteiro IND1, IND2, IND3 4: para IND1 = 1 at e i fa ca 5: para IND2 = 1 at e m fa ca 6: AUX 0 7: para IND3 = 1 at e j fa ca 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{fun ca o} Solu c ao de sistema de equa co es lineares Seja A a matriz de coecientes e seja B a matriz coluna de termos independentes em um sistema Ax + B = 0. O par ametro do algoritmo e uma matriz de n linhas e n + 1 colunas, onde a matriz coluna B ocupa a (n + 1)- esima coluna de A. 1: real R[n] fun ca o RSEL (real A[n][n+1]) 2: real OLA 3: inteiro I,J,K 4: I 1 5: enquanto I < n fa ca 6: Jn 7: enquanto J > I fa ca 8: se A[J-1][I] = 0 ent ao
88-08, Pedro Kantek
Cap tulo 40
454
CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES troque as linhas A[J] e A[J-1] mse 11: se A[J-1][I] = 0 ent ao 12: OLA 0 13: sen ao 14: OLA A[J][I] A[J-1][I] 15: mse 16: para K de 1 at e n+1 fa ca 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 fa ca 25: R[I] A[I][I+1] A[I][I] 26: para K = 1 at e n fa ca 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{fun ca o} Este algoritmo, pela sua complexidade vale alguma explica ca o. Seja o seguinte sistema: A solu ca o de um sistema de equa co es lineares, do tipo c11 .x1 + c12 .x2 + c13 .x3 + ... = t1 c21 .x1 + c22 .x2 + c23 .x3 + ... = t2 c31 .x1 + c32 .x2 + c33 .x3 + ... = t3 ... cn1 .x1 + cn2 .x2 + cn3 .x3 + ... = tn Passa pela estrat egia de diagonaliza ca o, como segue. Seja a.x + b.y + c.z = M d.x + e.y + f.z = N g.x + h.y + i.z = P O objetivo inicial e zerar g , e para isso, a nova linha (3) passar a a ser a linha (3) g somada com a linha (2) esta devidamente multiplicada por d e ca a.x + b.y + c.z = M d.x + e.y + f.z = N 0.x + h .y + i .z = P Depois, o objetivo e zerar d e para isso a nova linha (2) passa a ser a linha (2) somada d com a linha (1) esta devidamente multiplicada por a e ca 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 h linha (2) esta devidamente multiplicada por e e ca a.x + b.y + c.z = M 0.x + e .y + f .z = N 0.x + 0.y + i .z = P Note que neste ponto, z pode ser calculado, fazendo-se z = P i .
9: 10:
vers ao de 10 de fevereiro de 2008
CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES Conhecido z , a coluna 3 da matriz pode ser toda calculada e jogada para a coluna do termo independente. Ao fazer isto, passa-se a ter um sistema de 2 equa co es e 2 inc ognitas, x e y . Agora o processo se repete at e o nal. Vamos ver um exemplo disto. Seja o sistema 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 m ao ou via computador, voc e decide ;-) o seguinte sistema de 8 equa co es lineares a 8 inc ognitas: -1 2 1 2 -1 1 1 2 47 4 1 1 -5 3 -1 1 1 26 2 2 -2 3 -1 -1 2 1 39 5 -5 1 1 2 1 2 2 67 3 2 -3 2 1 3 2 -1 31 2 -2 1 2 2 3 1 3 78 1 -1 5 4 2 -2 2 -2 88 -2 3 2 3 3 4 -4 -3 34 E, informe o valor das 8 vari aveis encontradas: x1 x2 x3 x4 x5 x6 x7 x8
40.2
Exerc cio 2
Resolva (a m ao ou via computador, voc e decide ;-) o seguinte sistema de 8 equa co es lineares a 8 inc ognitas: 2 1 1 2 2 2 1 -3 41 2 1 3 4 6 1 -1 1 104 2 1 2 2 3 -3 2 1 43 5 2 1 -2 -2 2 1 3 38 3 2 -4 -1 4 4 5 -1 51 1 -1 2 1 3 1 2 4 89 -2 -3 5 3 2 -2 1 1 60 -1 2 2 1 -4 4 -2 -2 8
88-08, Pedro Kantek
455
456
CAP ITULO 40. EXERC ICIOS PRATICOS: 128 - MATRIZES E, informe o valor das 8 vari aveis encontradas: x1 x2 x3 x4 x5 x6 x7 x8
40.3
Exerc cio 3
Resolva (a m ao ou via computador, voc e decide ;-) o seguinte sistema de 8 equa co es lineares a 8 inc ognitas: 1 2 1 1 2 3 -1 3 65 3 2 4 3 1 1 2 2 100 1 1 3 1 -2 -3 1 1 3 5 -4 1 -1 1 1 2 3 68 2 2 -3 1 2 1 6 -1 75 2 -2 -1 1 3 3 2 2 81 1 -3 1 1 1 -1 2 -1 24 -2 3 3 2 2 2 3 -1 84 E, informe o valor das 8 vari aveis encontradas: x1 x2 x3 x4 x5 x6 x7 x8
40.4
Exerc cio 4
Resolva (a m ao ou via computador, voc e decide ;-) o seguinte sistema de 8 equa co es lineares a 8 inc ognitas: 2 1 2 1 1 3 3 2 75 2 3 4 -5 1 2 -1 1 43 2 2 3 3 2 3 2 3 107 3 -3 2 -1 2 2 2 1 15 -2 3 -2 -2 3 5 5 -2 35 1 2 1 1 2 1 -1 3 52 -1 1 3 2 2 2 2 -1 64 -2 1 3 2 1 3 -2 1 42 E, informe o valor das 8 vari aveis encontradas: 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
457
458
CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - O CUBO RUBIK 3. Note que as 6 pe cas centrais das 6 faces s ao xas e n ao mudam de orienta ca o entre si (umas em rela ca o a ` outras).
Cap tulo 41
4. Finalmente, para economia de papel, a congura ca o acima vai ser apresentada como 123456789abcdefghiABCDEFGHI jklmnopqrJKLMNOPQRstuvxyz()
Operadores
Na tentativa de escrever um programa de computador que resolva o cubo de Rubik, usa-se em geral o algoritmo A* (Hart, 68 e 72). Uma parte importante do algoritmo e a lista de operadores que se aplicam a um estado qualquer. Para os operadores que vir ao a seguir, considere o estado inicial como
ou
123 456 789 abc ABC jkl JKL def DEF mno MNO ghi GHI pqr PQR stu vxy z()
onde a face marcada com 1 corresponde ` a aresta superior do cubo. A 2 e a face esquerda, a 3 e a frontal, a 4 e a direita e a 5 e a face posterior. Finalmente, a face 6 e a face inferior do cubo. 459
460
CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - O CUBO RUBIK nome 1=cubo vertical antihor ario como cou 369 258 147 JKL abc ABC jkl MNO def DEF mno 5=face PQR ghi GHI pqr frontal antizvs hor ario (xt )yu
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 a como resposta um cubo que ter a, na face frontal na posi ca o L= 2 e C= 3 o valor 2. Aplique o operador 6 ao cubo lO7 852 Lmg 3Ba 1FR zKc AdJ 4no MN6 kef DEb jqr PQp uhi GH9 )(I yxv Cts e obter a como resposta um cubo que ter a, na face direita na posi ca o L= 2 e C= 3 o valor 3. Quais (2) operadores devem ser usados no cubo 36c 25F 14I JKL abu pmA 7kl def DEy qnB 8NO ghi GH) roC 9QR stP vxM z(j a m de resolv e-lo ?
lor knq jmp 369 CFI uy) PMJ 258 BEH tx( QNK 6=face 147 ADG svz ROL lateralD cfi antibeh hor ario adg (observador a ` esABC querda) DEF GHI cfi stu pmj 987 beh vxy qnk 654 7=face adg z() rol 321 superior RQP hor ario ONM LKJ
123 456 jmp ab9 CFI ukl JKL de8 BEH tno MNO nome gh7 ADG sqr PQR 8=face frontal cfi hor ario vxy z()
como cou 123 456 ifc abs GDA 7kl JKL det HEB 8no MNO ghu IFC 9qr PQR pmj vxy z()
369 258 147 JKL abc ABC jkl def DEF mno MNO ghi GHI pqr PQR stu vxy z()
12C 45F 78I abc ABu pmj 9KL def DEy qnk 6NO ghi GH) rol 3QR 9=face lateral stP direita vxM hor ario z(J (observador ` a es741 querda) 852 963 ABC jkl JKL abc def DEF mno MNO ghi GHI pqr PQR stu vxy z()
12P 45M 78J abc AB3 lor )KL def DE6 knq yNO ghi GH9 jmp uQR stC vxF z(I
Observa ca o importante: Note que quando ocorrem giros na face direita, a posi ca o do operador SEMPRE e a esquerda do cubo. Se tiver d uvidas sobre este operador, olhe as tabelas acima nos casos 3, 6 e 9.
461
462
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 a como resposta um cubo que ter a, na face superior na posi ca o L= 1 e 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 a como resposta um cubo que ter a, na face superior na posi ca o L= 3 e 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 e-lo ?
CAP ITULO 41. EXERC ICIOS PRATICOS: 135 - O CUBO RUBIK e obter a como resposta um cubo que ter a, na face esquerdo na posi ca o L= 1 e 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 a como resposta um cubo que ter a, na face superior na posi ca o L= 2 e 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 e-lo ?
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 a como resposta um cubo que ter a, na face direita na posi ca o L= 1 e C= 1 o valor 2. Aplique o operador 6 ao cubo 463
88-08, Pedro Kantek 88-08, Pedro Kantek
41.2
Exerc cio 3
1. Aplique o operador 2 ao cubo AB3 DEh GHg cfi stR zvl J87 y54 beQ (xo Mnq u21 adC 96r Pmp LOj KNk IF)
vers ao de 10 de fevereiro de 2008
464
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 a como resposta um cubo que ter a, na face frontal na posi ca o L= 3 e C= 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 e-lo ?
Respostas 1 2 3 4 4 A g L K r B i 9 4 7 9 7 9 7 5
465
466
CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - OSTRAS -10 0 20 0 200 99 0 E a resposta neste caso dever a ser 400 m2 .
Cap tulo 42
42.1.1
Resolvendo...
Zing Zhu possue uma ilha que vem a ser um peda co de terra chata. Todos os dias, quando a mar e sobe a ilha e inundada pela agua do mar. Depois de muito pensar e tamb em pedir conselhos a alguns membros de sua fam lia, Zing Zhu decidiu estabelecer uma fazenda de ostras na ilha. Ele usar a um sosticado sistema de cercas de pl astico, ` a prova d agua para controlar as areas que dever ao ser inundadas e as areas que dever ao car secas durante a subida da mar e. As cercas usadas pelo Zing ser ao verticais ou horizontais e v em em tiras que tem diversas alturas e comprimentos. Duas cercas podem se interceptar em um ponto n ao necessariamente no seu nal ou come co. Voc e foi contactado pelo Zing para calcular, dada a altura que a mar e vai alcan car vai ser inudada e a posi ca o e altura de todas as cercas, a area total de terra que NAO durante a mar e alta. Voc e pode assumir que a largura das cercas e muito na quando comparada aos tamanhos de terra envolvida e para o prop osito do c alculo da area total, as cercas podem ser consideradas como tendo largura zero. A entrada do algoritmo cont em diversas linhas: a primeira linha de um caso de teste cont em um inteiro N indicando o n umero de cercas na ilha (1 N 20). Cada uma das N pr oximas linhas cont em 5 inteiros: X1 , Y1 , X2 , Y2 e H representando respectivamente o ponto de in cio de uma cerca (X1 , Y1 ) e o ponto de m (X2 , Y2 ), e a altura da cerca. Au ltima linha da entrada cont em um inteiro W que representa a altura da mar e. As coordenadas s ao dadas em metros, as alturas em cent metros. Al em disso X1 = X2 ou Y1 = Y2 (mas n ao ambos). 500 X1 , Y1 , X2 , Y2 500; e 1 W , H 1000. O m dos dados e indicado por N = 0 A sa da Para cada conjunto de dados de entrada, o programa deve devolver a quantidade total de area de ilha que vai permanecer seca (i. e, que n ao vai ser inundada). Exemplo Seja a entrada 4 -20 20 20 20 200 20 20 20 -20 200 0 0 0 20 100 467
Este problema apresenta algumas novidades interessantes. A primeira, e ele ter sido uma extra do da lista de problemas da maratona de programa ca o da ACM de 2004. E disputa mundial com fases locais, regionais e a fase nal que envolve o planeta. S ao 6 problemas similares a este com cerca de 5 horas para sua solu ca o em equipes de 4 pessoas mais um t ecnico. A segunda, que nem e t ao novidade assim, mas que n ao costuma freq uentar as nossas aulas e o fato de n ao existir nenhuma estrat egia evidente para resolver o problema. Embora a vida real a fora seja exatamente assim, os nossos problemas de sala de aula podem dar a entender que o mundo e certinho, sempre tem solu ca o, a solu ca o eu nica e 100% correta e assim por diante. Isso n ao e verdade. A terceira observa ca o, tamb em importante, e que para problemas complexos nem sempre se acha uma solu ca o 100% correta, e mais do que isso, conhece-se de antem ao ONDE o algoritmo achado falha e quais problemas ele deixa de resolver. Age-se assim, quando na falta de solu ca o melhor, usa-se a que se tem, na expectativa de que uma quase-solu ca o e melhor do que nenhuma-solu ca o. A proposta de solu ca o que vai ser sugerida aqui e a de construir uma nova matriz de dimens oes 2 L + 1 e 2 C + 1, onde L e C s ao o n umero de linhas e colunas da matriz proposta originalmente pelo problema. Age-se assim para criar um espa co adicional onde representar as cercas (que lembrando, no problema original t em largura 0). Nesta nova matriz, as cercas s ao dispostas, e a seguir, para cada espa co da matriz e feita uma an alise de submers ao. Vem em nosso socorro o fato de que as cercas s ao verticais ou horizontais apenas. Assim, s o 4 dire co es precisam ser examinadas. Para cada ponto examinado, escreve-se em qual altura de mar e ele car a submerso (na verdade, o menor valor dos 4 retornados na pesquisa acima). Esta estrat egia pressup oe que ap os a primeira cerca est a o mar (o que nem sempre pode ser correto, aqui a falha deste algoritmo). Fica como sugest ao melhorar este aspecto. Estabelecido este valor, e hora de retornar a ` matriz original (j a sem as cercas), mas com os valores de cota de submers ao. Agora, a resposta ao pedido e apenas uma opera ca o de compara ca o (da cota com a altura da mar e) e de contagem de metros quadrados, j a que lembrando, todas as dimens oes s ao de n umeros inteiros.
42.1.2
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 express oes: ESCADA 1 + (2 M AIORY M EN ORY ) L 1 + abs((1 + (2 (Y M EN ORY ))) ESCADA) C 1 + (2 (X M EN ORX )) Note o c alculo da ESCADA que serve para inverter a ordem de crescimento das linhas (no mundo cartesiano, as linhas crescem de baixo paa cima e no mundo da programa ca o crescem de cima para baixo. Feita esta convers ao, os dados do problema (as cercas) s ao transpostas a ` suas novas um mapeamento simples. coordenadas da matriz. E
88-08, Pedro Kantek
468
CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - OSTRAS Nas linhas (e colunas) mpares desta nova matriz est a o espa co para a coloca ca o das cercas. Nas linhas (e colunas) pares est ao representados os metros quadrados da fazenda. Lan cadas as cercas, anda-se nas linhas e colunas pares, olhando para cima, direita, baixo e esquerda, olhando o que (altura) impede a entrada da a gua. O menor desses quatro valores estabelece quando a agua vai chegar. Toda a fazenda e assim mapeada. Depois, pela retirada das cercas (linhas e colunas mpares) o que sobra e area u til da fazenda. altura mar e 70 cm 90 cm a rea seca
m2 m2 170 cm m2 230 cm m2
42.2
Na inst ancia a seguir, o problema foi ligeiramente adaptado ` as caracter sticas usuais da fam lia VIVO de problemas. O enunciado segue mais ou menos o mesmo. Suponha ent ao uma fazenda de ostras, cujas cercas t em a seguinte distribui ca o 6 10 2 4 14 14 4 3 9 13 13 4 4 10 18 14 14 4 4 17 9 13 4 4 13 240 400 160 100 100 200
Na inst ancia a seguir, o problema foi ligeiramente adaptado a `s caracter sticas usuais da fam lia VIVO de problemas. O enunciado segue mais ou menos o mesmo. Suponha ent ao uma fazenda de ostras, cujas cercas t em a seguinte distribui ca o 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 area seca quando a mar e chegar a altura mar e 90 cm 110 cm m2 170 cm m2 230 cm m2 area seca
O senhor Zing Zhu quer saber qual a a rea seca quando a mar e chegar a altura mar e 70 cm 90 cm m2 150 cm m2 230 cm m2 a rea seca
m2
m2
42.3
Na inst ancia a seguir, o problema foi ligeiramente adaptado ` as caracter sticas usuais da fam lia VIVO de problemas. O enunciado segue mais ou menos o mesmo. Suponha ent ao uma fazenda de ostras, cujas cercas t em a seguinte distribui ca o 6 10 3 5 14 14 5 3 10 13 13 5 5 10 19 14 14 5 5 18 10 13 5 5 13 400 360 200 160 80 80
Na inst ancia a seguir, o problema foi ligeiramente adaptado a `s caracter sticas usuais da fam lia VIVO de problemas. O enunciado segue mais ou menos o mesmo. Suponha ent ao uma fazenda de ostras, cujas cercas t em a seguinte distribui ca o 6 9 3 3 14 14 3 3 9 13 13 4 4 9 17 14 14 3 3 17 9 13 4 4 13 380 280 80 100 180 200 470
vers ao de 10 de fevereiro de 2008
O senhor Zing Zhu quer saber qual a area seca quando a mar e chegar a
vers ao de 10 de fevereiro de 2008
469
CAP ITULO 42. EXERC ICIOS PRATICOS: 139 - OSTRAS O senhor Zing Zhu quer saber qual a area seca quando a mar e chegar a altura mar e 70 cm 90 cm m2 110 cm m2 190 cm m2 area 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
471
472
43.0.1
1: 2: 3: 4:
Cap tulo 43
17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
inteiro fun ca o R2A (cadeia NROM[n]) 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 fa ca K1 enquanto CADAUX[K] = NROM[I] fa ca K++ menquanto se (I+1)TAM ent ao M1 enquanto CADAUX[M] = NROM[I+1] fa ca M++ menquanto se VALAUX[K] < VALAUX[M] ent ao SUM SUM + VALAUX[M] - VALAUX[K] II+2 sen ao SUM SUM + VALAUX[K] II+1 mse sen ao SUM SUM + VALAUX[K] II+1 mse menquanto devolva SUM m {fun ca o} Converta para ar abico:
Exerc cios de aquecimento XVI XXXVII XLVI XCVI CI CDXCVI CIV XXV XLV MDXI
43.0.2
1: 2: 3:
(cadeia RESP[10]) fun ca o ARD (inteiro A, cadeia LETRAS[3]) cadeia AUX[10] inteiro K 4: se A 0 ent ao
88-08, Pedro Kantek
474
CAP ITULO 43. EXERC ICIOS PRATICOS: 144 - ROMANOS Exerc cios de aquecimento 38 44 35 104 496 107 665 388 1002 843 Converta para romano:
se A=0 ent ao devolva sen ao se A=1 ent ao devolva LETRAS[1] sen ao se A=2 ent ao devolva LETRAS[1]+LETRAS[1] sen ao se A=3 ent ao devolva LETRAS[1]+LETRAS[1]+LETRAS[1] sen ao se A=4 ent ao devolva LETRAS[1]+LETRAS[2] sen ao se A=5 ent ao devolva LETRAS[2] sen ao se A=6 ent ao devolva LETRAS[2]+LETRAS[1] sen ao se A=7 ent ao devolva LETRAS[2]+LETRAS[1]+LETRAS[1] sen ao se A=8 ent ao devolva LETRAS[2]+LETRAS[1]+LETRAS[1]+LETRAS[1] sen ao se A=9 ent ao devolva LETRAS[1]+LETRAS[3] mse sen ao K1 enquanto K < abs(A) fa ca AUX[K] LETRA[1] K++ menquanto devolva AUX mse m{fun ca o} (cadeia RESP[10]) fun ca o A2R (inteiro V) 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{fun ca o}
43.1
Exerc cio 1
Responda:
43.2
Exerc cio 2
Responda:
475
476
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 ar abico DCCXIX XLII MMDCCXCIII DCCCLXIV IV MMIX Responda:
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
477
478
CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS seguintes tem o formato STRO K STR1 STR2 ... STRK onde STRO e o nome de uma disciplina avan cada, 1 K 15 e o n umero de disciplinas que s ao pr e-requisitos de STR0 e STR1, STR2, ... STRK s ao os nomes das disciplinas que s ao pr e-requisitos de STRO. O nome de uma disciplina e uma cadeia com no m nimo um e no m aximo sete caracteres alfanum ericos mai usculos (A-Z e O-9). Note que as disciplinas b asicas s ao aquelas que aparecem apenas como pr e-requisito de alguma disciplina avan cada. Para concluir o curso, o aluno deve cursar (e passar!) todas as disciplinas b asicas e avan cadas. A prioridade das disciplinas e determinada pela ordem em que elas aparecem pela primeira vez na entrada: a que aparece primeiro tem maior prioridade, e a que aparece por u ltimo tem a menor prioridade. N ao h a circularidade nos pr e-requisitos (ou seja, se a disciplina B tem como pr e-requisito a disciplina A ent ao A n ao tem B como pr e-requisito, direta ou indiretamente). O n umero total de disciplinas e no m aximo igual a 200. O nal da entrada e indicado por N = M = 0. A entrada deve ser lida da entrada padr ao. Sa da Para cada caso de teste da entrada seu programa deve produzir a sa da na seguinte forma. A primeira linha deve conter a frase Formatura em S semestres, onde S e o n umero de semestres necess arios para concluir o curso segundo a sugest ao do reitor. As S linhas seguintes (levem conter a descri ca o das disciplinas a serem cursadas em cada semestre, um semestre por linha, no formato mostrado no exemplo de sa da abaixo. Para cada semestre, a lista das disciplinas deve ser dada em ordem lexicogr aca. Deni c ao: considere as cadeias de caracteres Sa = al a2 ... am e Sb = bl b2 ... bn . Sa precede Sb em ordem lexicogr aca se e apenas se Sb e n ao-vazia e uma das seguintes condi co es e verdadeira: Sa e uma cadeia vazia; 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 da deve ser escrita na sa da padr ao. Exemplo Exemplo de entrada 2 2 B02 3 A01 A02 A03 C01 2 B02 B01 Sa da para o exemplo Formatura em 4 semestres Semestre 1 : A01 A02 Semestre 2 : A03 B01 Semestre 3 : B02 Semestre 4 : CO1 Formatura em 4 semestres Semestre 1 : ARTE1 MAT1 Semestre 2 : ARTE2 PROG1 Semestre 3 : PROG2 Semestre 4 : PROG3
Cap tulo 44
Estes dois exerc cios foram retirados da Maratona de Programa ca o da ACM de 2005, onde apareceram com os nomes de Curso Universit ario e cubos coloridos. H a alguns anos atr as, a Universidade de Pinguinhos introduziu um novo sistema ex vel de cr editos para os alunos ingressantes de cursos de gradua ca o. No novo sistema os alunos podem escolher as disciplinas que desejam cursar em um semestre com a u nica restri ca o de n ao poderem cursar uma dada disciplina A sem antes terem cursado todas as disciplinas que tiverem sido estabelecidas como pr e-requisitos de A. Ap os alguns 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 e quinze disciplinas em um semestre. Sendo muito s abio, este ano o reitor introduziu uma regra adicional limitando o n umero de disciplinas que cada estudante pode cursar por semestre a um certo valor N. Essa regra adicional, no entanto, fez com que os alunos cassem muito confusos na a hora de escolher as disciplinas a serem cursadas em cada semestre. E que voc e entra na est oria. O reitor resolveu disponibilizar um programa de computador para ajudar os 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 e atribu da uma prioridade. Se mais do que N disciplinas podem ser cursadas em um determinado semestre (obedecendo ao sistema pr erequisitos), 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 descri ca o de pr e-requisitos para cada disciplina, a prioridade de cada disciplina, e o n umero m aximo de disciplinas por semestre, seu programa deve calcular o n umero necess ario de semestres para concluir o curso, segundo a sugest ao do reitor, e a lista de disciplinas que o aluno deve matricular-se em cada semestre. Entrada A entrada, cont em v arios casos de teste. Se uma disciplina n ao tem qualquer pr e-requisito ela e denominada b asica - caso contr ario ela e denominada avan cada. A primeira linha de um caso de teste cont em dois inteiros 1 N 100 e 1 M 10, indicando respectivamente o n umero de disciplinas avan cadas do curso e o n umero m aximo de disciplinas que podem ser cursadas por semestre. Cada uma das N linhas 479
44.2
Exerc cio 1
480
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
CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS O nal da entrada e indicado por N = 0. A entrada deve ser lida da entrada padr ao. Sa da Para cada caso de teste seu programa deve imprimir uma linha contendo um u nico inteiro, correspondendo ao n umero de tipos de cubos no conjunto dado. A sa da deve ser escrita na sa da padr ao. Exemplos
GEOL ENGA
materia 3 do semestre 2
3 0 0 7 2 3 1
0 1 2 3 7 0
3 0 0 2 1 , resposta = 2 7
2. Seja uma inst ancia composta de 6 FORT 2 QUIM 4 ENGE 4 MEDI 2 ENGA 4 RETO 4 0 0 4 PORT FRAN CMAM PORT BAND BAND ENGC MATB DISC INGL GEOL ALGO
44.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
materia 1 do semestre 3
44.4
Exerc cio 2
3 CALE ALGO BAND COBO PORT FISI
1. Seja uma inst ancia composta de 6 CULI 4 ENGE 4 ENFE 3 GEOA 2 GEOM 2 ALEM 4 0 0
44.2.1
Cubos Coloridos
Crian cas adoram brincar com pequenos cubos. Elas passam horas criando casas, pr edios, etc. O irm aozinho de Tomaz acabou de ganhar um conjunto de blocos coloridos no seu anivers ario. Cada face de cada cubo e de uma cor. Como Tomaz e uma crian ca muito anal tica, ele decidiu descobrir quantos tiposdiferentes de cubos o seu irm aozinho ganhou. Voc e pode ajud a-lo? Dois cubos s ao considerados do mesmo tipo se for poss vel rotacionar um deles de forma que as cores nas faces respectivas dos dois cubos sejam iguais. Entrada A entrada cont em v arios casos de teste. A primeira linha do caso de teste cont em um inteiro N especicando o n umero de cubos no conjunto (1 < N < 1000). As pr oximas 3 N linhas descrevem os cubos do conjunto. Na descri ca o as cores ser ao identicadas pelos n umeros de O a 9. A descri ca o de cada cubo ser a dada em tr es linhas mostrando as cores das seis faces do cubo aberto, no formato dado no exemplo abaixo. No exemplo abaixo, as faces do cubo t em cores de 1 a 6, a face com cor 1 est a no lado oposto da face com a cor 3, e a, face com cor 2 e vizinha das faces 1, 3, 4 e 6, e est a no lado oposto da face com cor 5. 1 2 4 5 6 3
vers ao de 10 de fevereiro de 2008
MEDI CALE
materia 2 do semestre 3
2. Seja uma inst ancia composta de 6 GEOL 2 ESDA 2 LOGI 3 DISC 4 ENGE 4 3 PORT ENGC FRAN PORT FRAN
CALE CALC INFO INGL LATI MEDI CARI COBO LATI PORT 482
vers ao de 10 de fevereiro de 2008
481
CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS ALGO 3 INGL CMAM ENFE 0 0 Resolva-a e informe: semestresmateria 1 do semestre 5
CAP ITULO 44. EXERC ICIOS PRATICOS: 148 - DIVERSOS Resolva-a e informe: semestresmateria 2 do semestre 4
materia 1 do semestre 7
materia 3 do semestre 3
44.7 44.5
4 2 4 8 8 3 4
Exerc cio 3a
9 6 9 7 1 9 9 9 1 9 7 6 1 9 7 9 6 9
Exerc cio 2a
3 8 4 8 2 4 2 4 4 8 3 8 8 4 3 4 8 2
4 9 9 7 9 6 1
44.8
1 1a 2 2a 3 3a 6 3 8 4 7 2
Respostas
LATI DISC 13 ENGE FRAN COBO ESDA 12 14 24 6 ALEM CALC 7 CARI INGL 7 ESDA RETO
44.6
Exerc cio 3
1. Seja uma inst ancia composta de 6 GEOA 4 ALGO 3 LATI 4 ESDA 2 MEDI 3 CALC 2 0 0 3 CALE CARI COBO ENGE DBAS FRAN
materia 2 do semestre 6
2. Seja uma inst ancia composta de 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
483
484
CAP ITULO 45. EXERC ICIOS PRATICOS: 151 - DIVERSOS poss vel. Caso contr ario, imprima uma linha contendo a palavra impossivel (note a aus encia de acentua ca o). Alguns exemplos Para as entradas
Cap tulo 45
752 0 268 3.0 3.0 0.9 300 300 300 a resposta dever a ser 0 0 220 12.5 12.5 1.6 5000 0 3000 a resposta dever a ser 4464 0 2501 3.0 3.0 1.0 300 300 300 0 0 0 a resposta dever a ser impossivel
45.1
A Piscina
O Centro Comunit ario decidiu construir uma nova piscina, em tempo para o ver ao do ano que vem. A nova piscina ser a retangular, com dimens oes X por Y e com profundidade Z . A piscina ser a recoberta com um novo tipo de azulejo cer amico de alta tecnologia que e produzido em tr es tamanhos distintos: 5 5, 15 15 e 30 30 (em cent metros). Cada azulejo desses tamanhos custa 2 centavos, 15 centavos e 50 centavos respectivamente. Os azulejos s ao de alta qualidade, feitos de um material que n ao pode ser cortado (ou 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 e deve escrever um programa que determine se o estoque de azulejos dispon vel na loja e suciente para azulejar toda a piscina. Se o estoque for suciente, seu programa deve determinar tamb em o n umero de azulejos de cada tamanho que s ao necess arios para que o custo de azulejar a piscina seja o menor poss vel. Os azulejos devem ser usados para recobrir completamente toda a superf cie da piscina sem deixar qualquer espa co sem azulejos e sem deixar sobras de azulejos transpassando as bordas da piscina. Entrada A entrada cont em v arios casos de teste. Cada caso de teste e composto por duas linhas. A primeira linha cont em tr es n umeros reais X , Y e Z , representando as dimens oes e a profundidade da piscina, em metros, com precis ao de uma casa decimal (0 < X, Y 50.0 e 0 < Z 2.0). A segunda linha cont em tr es n umeros inteiros P , M e G, representando a quantidade dispon vel de azulejos de tamanho pequeno, m edio e grande (0 P, M, G 2000000), respectivamente. O nal da entrada e indicado por X = Y = Z = 0. Sa da Para cada caso de teste da entrada seu programa deve produzir uma linha de sa da. Se e poss vel recobrir completamente a piscina com o estoque dispon vel, imprima uma linha com tr es inteiros descrevendo respectivamente as quantidades de azulejos pequenos, m edios e grandes para recobrir toda a piscina com o menor custo 485
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
az. m edio
az. grande
486
CAP ITULO 45. EXERC ICIOS PRATICOS: 151 - DIVERSOS Entrada A entrada cont em diversas inst ancias. A primeira linha contem N , onde N e a quantidade de inst ancias que vir ao a seguir (1 N 10000). Cada inst ancia e composta por uma u nica linha na qual est ao 4 cartas separadas por brancos. Cada carta tem 1 caracteres para seu valor e um caracter para o seu naipe, como visto acima. As cartas vem na ordem em que s ao apresentadas pelo assistente. Sa da A sa da deve ser composta pela quinta carta. Exemplos Para a entrada 2 7 , 8 , 8 , J T, 2, A, 5 o programa dever a responder Q e A, respectivamente.
45.3
M agico
Um m agico inventou um novo truque de cartas e apresentou-o na prestigiosa American Conference of Magicians (ACM). O truque e muito interessante e ele recebeu o pr emio Best Magic Awardna confer encia. O truque requer 3 participantes: o m agico, um expectador 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 aleat orias. Elas s ao passadas ao assistente, sem que o m agico as veja. Ap os mostrar 4 dessas cartas ao m agico, ele magicamente adivinha a quinta carta. O truque funciona pelo fato do assistente, depois de olhar as 5 cartas, escolher quais quatro ser ao mostradas, e ele as escolhe de modo a codicar a informa ca o para o m agico sobre a quinta carta. O c odigo e baseado em uma dada ordena ca o do baralho. As cartas s ao ordenadas primeiro por naipe e depois pelo seu valor de face. Usar-se- a a seguinte ordem T =10, J =valete, Q=dama e A < 2 < ... < 9 < T < J < Q < K , onde A=As, 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 estrat egia do assistente ea 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 m aximo 6 posi co es ` a direita na tabela c clica A < 2 < ... < T < J < Q < K < A < 2 < ... de outra carta y do mesmo naipe. Isto ser a sempre poss vel, j a que existem apenas 13 cartas do mesmo naipe. (No exemplo, o assistente esconde a dama de ouros). Se duas ou mais cartas satisfazem o crit erio acima, escolha a que tem o menor valor de face. mostre y ao m agico. Neste ponto ele saber a o naipe da carta escondida (o mesmo de y ). Saber a tamb em que o valor da carta escondida n ao est a a mais de 6 posi co es a direita de y . ` com as 3 cartas sobrantes, o assistente codica um n umero entre 1 e 6. Para fazer isto ele ordena as tr es cartas (digamos z1 , z2 e z3 ) em ordem, onde z1 < z2 < z3 . Cada uma das 6 ordens poss veis em que as cartas s ao mostradas deve ser interpretada pelo m agico como sendo um n umero: 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 m agico qual e a quinta carta. Sua tarefa e desenvolver um programa que receba as 4 cartas mostradas pelo assistente e informe ao m agico qual a quinta carta.
vers ao de 10 de fevereiro de 2008
45.4
Exerc cio 1a
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
az. m edio
az. grande
487
488
45.6
Exerc cio 2a
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
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
az. m edio
az. grande
45.8
Exerc cio 3a
489
490
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 v alida poss vel, arredondada para duas casas decimais. Exemplos
Cap tulo 46
0 5 0 5 0
0 10 0 1 -1 5 1 0 10 0 1 0 5 1 0 0 0 0
46.3
Ilumina c ao da festa
Este exerc cio foi retirado da Maratona de Programa ca o da IOI de 1998. Na pr oxima nal da IOI, haver a uma festa de congra camento, para comemorar as premia co es. Nesta festa, ter-se- a uma ilumina ca o fe erica que precisa ser controlada. A ilumina ca o ser a composta por N l ampadas. No in cio da festa, todas as l ampadas come cam acesas. Para ajustar o acende-apaga, h a 4 bot oes cujos comportamentos s ao: bot ao 1 Todas as l ampadas trocam de estado, ou seja as acesas apagam e as apagadas acendem. bot ao 2 Trocam de estado as l ampadas de n umero mpar (1, 3, ...) bot ao 3 Trocam de estado as l ampadas de n umero par (2, 4, ...)
46.2
Regata de cientistas
Todos os anos desde 1996, cientistas da computa ca o do mundo todo se encontram para a famosa Regata dos Cientistas. A competi ca o consiste em uma corrida de barcos com obst aculos pelo oceano, onde o objetivo de cada equipe e, partindo de um ponto em comum, alcan car o ponto de chegada sem que nenhum obst aculo seja tocado ou transpassado. Uma equipe que toca ou transpassa um obst aculo e automaticamente desclassicada. A equipe vencedora e aquela que primeiro atinge o ponto de chegada (o ponto de chegada e distinto do ponto de in cio). Voc e foi contratado pela equipe brasileira para desenvolver um programa que calcule o comprimento da menor rota v alida poss vel do ponto de partida ao ponto de chegada. O oceano e considerado um plano innito, onde cada obst aculo e localizado em uma posi ca o xa e representado por um segmento de reta dado pelos seus dois extremos (x1 , y1 ) e (x2 , y2 ). Os barcos s ao adimensionais, representados por um ponto no plano e os obst aculos possuem espessura desprez vel. Os obst aculos est ao dispostos de tal forma que os mesmos n ao se interceptam. De forma similar, os pontos de in cio e chegada da competi ca o n ao s ao interceptados por nenhum obst aculo. Entrada A entrada e composta por v arios casos de teste. A primeira linha de um caso de teste cont em 5 n umeros inteiros xi , yi , xf , yf , n, representando respectivamente as coordenadas do ponto de in cio (xi , yi ), as coordenadas do ponto de chegada (xf , yf ) e a quantidade de obst aculos n (n 150). Cada uma das n linhas seguintes de um caso de teste corresponde a quatro n umeros inteiros (x1 , y1 , x2 , y2 ) que s ao as coordenadas dos dois extremos de um obst aculo. Considere que as coordenadas x, y de qualquer ponto, satisfazem 5000 x, y 5000. O nal da entrada e representada por uma linha contendo xi = yi = xf = yf = n = 0. 491
bot ao 4 Trocam de estado as l ampadas de cujo n umero obedece a ` regra 3K + 1, com K 0, ou seja as l ampadas 1, 4, 7, ... Cada vez que um dos bot oes e pressionado, incrementa-se um contador C, que no in cio sempre cont em o valor 0 (zero). Voc e deve idealizar um algoritmo que receba informa co es de entrada conforme descritas baixo e mostre quais as congura co es poss veis de l ampadas acesas e apagadas s ao poss veis. Entrada A entrada e composta por 4 linhas, a saber:
1. A primeira linha cont em o n umero N de l ampadas (10 N 100) 2. A segunda, cont em o valor nal do contador C de bot oes (1 C 10000) 3. A terceira cont em uma seq u encia de nenhuma, uma ou duas l ampadas que dever ao estar ACESAS ao nal. A seq u encia termina com -1. 4. A u ltima cont em uma seq u encia de nenhuma, uma ou duas l ampadas que dever ao estar APAGADAS ao nal. A seq u encia termina com -1. Sa da A sa da dever a ter todas as congura co es poss veis de serem alcan cadas apertando C vezes algum dos quatro bot oes e que satisfa cam as restri co es de aceso e apagado da entrada. Por exemplo, supondo a entrada 12 3 1 6 -1 2 -1
88-08, Pedro Kantek
492
CAP ITULO 46. EXERC ICIOS PRATICOS: 152 - REGATA DE CIENTISTAS E LUZES DA FESTA Sugere que haver a 12 l ampadas, os bot oes ser ao pressionados 3 vezes, e ao nal as l ampadas 1 e 6 dever ao estar acesas e a l ampada 2 dever a estar apagada. Naturalmente, as l ampadas n ao citadas aqui, poder ao estar em qualquer estado. Outro exemplo, dada a entrada: 11 3 4 8
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
9 -1
-1
8 -1
-1 regata 2 luzes
A resposta ser a 00111000111 Que corresponde ` as aplica co es dos bot oes 1, 3 e 4. Para voc e fazer 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
regata 1
46.5
Exerc cio 3
Para voc e fazer 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
regata 1
-1 10
-1 regata 2 luzes
regata 1
46.4
Regata de cientistas Para voc e fazer 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
Para voc e fazer 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
vers ao de 10 de fevereiro de 2008
493
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
CAP ITULO 46. EXERC ICIOS PRATICOS: 152 - REGATA DE CIENTISTAS E LUZES DA FESTA
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
495
496
CAP ITULO 47. EXERC ICIOS PRATICOS: 153A - JOGO DO RETANGULO elas s ao intercambi aveis), basta montar um dos tri angulos (acima ou abaixo da diagonal principal). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Depois de ter preenchido este quadro, verique o que caracteriza as posi co es perdedoras. Note que para que m e n sejam um ret angulo perdedor, deve existir um inteiro k que torne verdadeira a express ao m + 1 = (n + 1) 2k . baseada nesta f E ormula, que voc e deve procurar a jogada a fazer. Use o algoritmo: 1: fun ca o JOGUE (inteiro M, N): inteiro 2: inteiro LIMM,LIMN,I,J,XX 3: LIMM M 2 4: LIMN N 2 5: I 1 6: enquanto (I LIMM) fa ca 7: XX podeparar (M-I, N) 8: se XX = 1 ent ao 9: jogue (M-(I+1)),N 10: caiafora 11: mse 12: I++ 13: menquanto 14: J 1 15: enquanto (J LIMN) fa ca 16: XX podeparar (M, N-J) 17: se XX = 1 ent ao 18: jogue M, N-(J+1) 19: caiafora 20: mse 21: J++ 22: menquanto{casos perdedores} 23: se M=1 N=1 ent ao
88-08, Pedro Kantek
Cap tulo 47
47.1
Considere-se um jogo de 2 jogadores. H a um ret angulo x y , onde x e y s ao inteiros e positivos. Cada jogador faz um corte no ret angulo. e repassa o maior dos dois ret angulos para que o advers ario fa ca o seu corte. O corte deve ser u nico, vertical ou horizontal. Os ret angulos resultados devem ambos ter dimens oes inteiras. Se o corte dividiu o ret angulo em duas metades, uma delas e descartada. O jogador que recebe um ret angulo de 1 1, e que portanto n ao pode mais fazer cortes, perde o jogo. A tarefa e escrever um programa que jogue e ganhe o jogo do ret angulo. As dimens oes x e y ser ao inteiros emtre 1 e 100.000.000. Ao menos uma das dimens oes e maior do que 1. Quando o programa come ca, ele recebe o ret angulo original e deve fazer o primeiro corte. O maior peda co e preservado e ent ao apresentado ao seu oponente. Exemplo de intera ca o: 1. O jogo come ca com 4, 3. Voc e deve jogar algo, digamos vertical, 1 e o novo ret angulo e 3, 3 2. Seu oponente joga horizontal, 1 e o novo ret angulo e 3, 2. 3. Nova jogada sua, digamos horizontal, 1 e ca 3, 1. 4. O outro joga vertical, 1 e ca 2, 1 5. Voc e joga vertical, 1 e ca 1, 1, e voc e acaba de ganhar o jogo Uma estrat egia de solu c ao Construa-se uma tabela, digamos 15 15, representando poss veis 225 tabuleiros (de dimens ao m axima 15) cada. Assinale com um X a primeira posi ca o perdedora, que e de acordo com a deni ca o a 1, 1. Marque com uma o as posi co es vencedoras que conduzem ` a perdedora, no caso as posi co es 1, 2 e 2, 1. Marque a posi ca o 2, 2 como perdedora, pois ela invariavelmente conduzir a` a 1, 2 ou 2, 1 e estas s ao vencedoras. Prossiga at e montar o mapa completamente. Note que como a matriz e absolutamente sim etrica em rela ca o ` a diagonal principal (tanto faz usar a vertical ou a horizontal, 497
498
perdi caiafora mse se x < 2 ent ao jogue M,(N-1) // e seja o que Deus quiser sen ao jogue (M-1), N // e seja o que Deus quiser mse mfun ca o fun ca o podeparar (inteiro: A,B) : inteiro inteiro VOLTA, MAIOR, MENOR, K se A B ent ao MAIOR A MENOR B sen ao MAIOR B MENOR A mse K0 VOLTA 0 enquanto 2K MAIOR fa ca se MAIOR = ((2K ) MENOR) + (2K ) 1 ent ao VOLTA 1 K mse K++ menquanto retorne VOLTA mfun ca o
47.3
Exerc cio 2
1. Seguindo os algoritmos acima, fa ca o primeiro lance para 25,12 Trate de ganhar o jogo ! Se for imposs vel ganhar esta inst ancia, responda PERDI no quadro pr oprio. 2. Idem para 31,33 3. E para 25,32 1 2 3
47.4
Exerc cio 3
1. Seguindo os algoritmos acima, fa ca o primeiro lance para 40,39 Trate de ganhar o jogo ! Se for imposs vel ganhar esta inst ancia, responda PERDI no quadro pr oprio. 2. Idem para
47.2
Exerc cio 1
35,30 3. E para
1. Seguindo os algoritmos acima, fa ca o primeiro lance para 39,30 Trate de ganhar o jogo ! Se for imposs vel ganhar esta inst ancia, responda PERDI no quadro pr oprio. 2. Idem para 18,37 3. E para 38,33 1 2 3
37,18 1 2 3
47.5
Exerc cio 4
1. Seguindo os algoritmos acima, fa ca o primeiro lance para 25,33 Trate de ganhar o jogo ! Se for imposs vel ganhar esta inst ancia, responda PERDI no quadro pr oprio. 2. Idem para
499
500
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
501
502
CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO A seq u encia de casas (m1 , n1 ), ..., (mk , nk ) ser a chamada de caminho de A no tabuleiro. Desta maneira, dado o tabuleiro 44 a seguir, as cadeias SOLA, HOLAe ADIOSest ao contidas nele, mas n ao ocorre o mesmo com GOZA, HORAnem HALA.
Cap tulo 48
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 s ao (1, 1), (2, 2), (2, 3) e (3, 1). Para HOLAs ao (1, 2), (2, 2), (2, 3), (1, 3). Para ADIOSo caminho e (1, 3), (4, 3), (4, 4), (4, 1), (1, Dado um tabuleiro com as caracter sticas citadas e uma palavra A composta de letras mai usculas, se pede calcular o caminho de A. Quando construir o programa, pode-se armar que A est a contida no tabuleiro, e que o caminho A e unico. 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 e (12,12);(11,12);(10,1);(9,2);(8,2);(8,1);(7,2) e (6,3). Vulc ao Neste caso se deseja simular o deslocamento da lava de um vulc ao ao largo da encosta do mesmo. Representar-se- a o vulc ao por uma superf cie retangular quadriculada. Para cada uma das casas, conhece-se a altura dela em rela ca o ao n vel do mar, sendo este n umero entre 1 e 9. O comportamento da lava se rege pelas seguintes regras: 1. A lava ue desde a casa na qual est a situada a cratera do vulc ao 2. Dada uma casa alcan cada pela lava, a mesma ue para qualquer um dos 8 vizinhos que tem altura menor que a casa original. 3. A cada instante de tempo, a lava se desloca 1 casa nas 8 dire co es. 4. No instante de tempo t=1, apenas 1 casa (a cratera) cont em lava. Pede-se a confec ca o de um mapa das encostas do vulc ao que identique os pontos alcan cados pela lava, em todos os instantes de tempo.
88-08, Pedro Kantek
Estes exerc cios foram baseados em similares pedidos na Olimp ada Espanhola de Inform atica. Caminhos Seja um tabuleiro de dimens oes M N , onde 1 M 20 e 1 N 20, tal que cada casa contenha uma letra mai uscula. Aquela casa que est a na linha M e na coluna N e identicada pela dupla (m, n). Duas casas diferentes (mi , ni ) e (mj , nj ) s ao adjacentes se para a primeira componente: |mi mj | 1 ou ent ao |mi mj | = M 1. A segunda componente tem express ao semelhante: |ni nj | 1 ou ent ao |ni nj | = N 1. Em outras palavras, s ao adjacentes todas as casas que rodeiam uma dada, imaginando que no tabuleiro, a u ltima la est a unida ` a primeira, e a mesma coisa para as colunas. No desenho a seguir, marca-se com um asterisco, as casas adjacentes ` a (2,3), ` a esquerda e (1,1) ` a direita, ambas em tabuleiros 4 4. - * * * - * - * - * - * * * - * - * * * - - - - - - * * - * Dada uma palavra A de k letras mai usculas A = a1 , a2 , ...ak , k 1 diz-se que A est a contida no tabuleiro se e verdade que existe uma casa (m1 , n1 ) que cont em a letra a1 para cada letra a1 + 1, 1 i k , existe uma casa (mi+1 , ni+1 ) que cont em ai+1 sendo que (mi , ni ) e (mi+1 , ni+1 ) s ao adjacentes no tabuleiro e 503
504
CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO Entrada A entrada e uma matriz de 12 linhas, contendo a altura dos 144 plat os das encostas. Informa-se tamb em a coordenada (linha,coluna) da cratera. 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 plat os imersos=1; para t=2, Q=7; para t=3, Q=11; para t=4, Q=16 e para t=5, Q=17. Neste ponto, o programa p ara, pois a lava n ao tem para onde ir. Para voc e fazer Seja a palavra ACIONADAS e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| L H J L X R E B F J O Q 2| C I F R H X E T U J S Z 3| X A N X K K X C B C A I 4| O A D X E U F G T Q D N 5| S C T O W E Y U Q B A N 6| O B P B F O E W G C X Z 7| O E D H F K P Q P L Q V 8| C N S Y F H M B T N O P 9| O C P M B G Z V J E H S 10| G D L C E R L P S N H L 11| J A F C L M Y G F P N W 12| F C T I N S X B E T P O Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc ao 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 2 9 6 7 8 9 4 3 6 9 5 4 2| 2 7 4 3 9 8 3 3 8 1 3 2 3| 9 7 5 1 5 1 9 9 8 9 7 6 4| 4 3 3 6 1 4 6 6 4 2 8 3
vers ao de 10 de fevereiro de 2008
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 plat os s ao atingidos nos instantes t=3, t=4 e t=5 ?
em t=3, t=4 e
48.2
Exerc cio 2
Caminhos Para voc e fazer Seja a palavra COMPLETA e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| N B L X B R R S D V N P 2| L I P R N K I I S G B K 3| N Q J C Z V P H Y J C Z 4| Z K U H N O Z K V A P B 5| D Q T H B N S H O Z U X 6| J F Z F V A H N P O Q A 7| H A M P Y O V G X Z H M 8| L T Z T X E H Y Z L O P 9| E O I O X Z G N G J P C 10| K I O G C Y R F V L E E 11| H Q J M W U Y D Z C Y C 12| M O W A F Q R I M G E Y Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc ao 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 2 8 9 5 4 6 9 4 4 5 9 6 2| 1 6 7 2 8 8 7 6 2 7 1 6 3| 1 5 8 5 9 5 4 2 1 6 5 5 4| 7 4 9 2 2 9 7 8 8 7 7 4 5| 1 3 6 9 2 7 2 1 4 2 7 1 6| 9 1 6 4 3 2 5 1 7 3 4 6 7| 1 3 1 2 7 9 1 3 8 1 6 7
505
506
CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO 8| 9| 10| 11| 12| 8 7 9 8 1 6 2 7 5 5 2 8 8 4 5 6 6 8 2 3 1 9 6 6 3 6 4 8 8 9 9 1 6 2 6 4 9 2 4 9 8 7 5 1 8 2 2 1 8 1 5 8 2 7 9 6 4 9 9 8
CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO 11| 12| 5 3 4 2 1 3 4 7 9 6 3 3 2 5 6 9 2 2 1 8 8 8 3 9
com a cratera disposta no plato (linha,coluna): 5 3 Pergunta-se quantos plat os s ao atingidos nos instantes t=3, t=4 e t=5 ?
com a cratera disposta no plato (linha,coluna): 10 1 Pergunta-se quantos plat os s ao atingidos nos instantes t=3, t=4 e t=5 ?
em t=3, t=4 e
em t=3, t=4 e
Exerc cio 4
Caminhos Para voc e fazer Seja a palavra SERVINDO e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| S M V H B Z X E I R W H 2| S U B U H N O H N H K L 3| R D Z F R G W D A E N Y 4| I D S X O Q D U T Q H D 5| N A W V R K T P R R G G 6| I V W G I U X F K N R B 7| C H I D W E P Y I O D E 8| G O R E L N Q R K S V K 9| V C H J X D R U V S U J 10| A E T K O T G H T I D J 11| G B S S N H W A G D N S 12| A O O E S S W L T V E O Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc ao 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 3 1 7 4 2 7 9 9 8 8 1 5 2| 5 8 2 6 8 4 3 4 9 8 4 9 3| 5 2 4 3 7 3 7 6 9 9 1 4 4| 8 9 2 4 5 3 8 4 9 3 6 1 5| 3 3 9 9 7 1 8 7 7 6 2 3 6| 5 7 8 2 8 7 1 4 3 2 7 1 7| 5 6 8 4 8 8 6 1 8 2 9 2 8| 3 8 7 1 7 8 9 7 2 6 7 6 9| 4 8 8 3 9 8 3 8 9 8 2 6 10| 7 9 7 1 3 7 1 2 8 6 2 1 11| 1 1 2 5 5 6 2 9 7 5 8 8 12| 7 9 3 7 7 7 6 1 8 6 8 7
88-08, Pedro Kantek 88-08, Pedro Kantek
Caminhos Para voc e fazer Seja a palavra TRABALHAM e o tabuleiro 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| E T R Z J G C W S S U A 2| C E F Y C I I X T L D H 3| K A Q M O O U L M C S U 4| R R C G A A C A H W W S 5| Q N B T F B X A M Q U L 6| N H X A G H U T Z Y G K 7| C I U A H H S W K U H L 8| A W M P L B A X M V N A 9| B P P A O A A M U G X O 10| F X M H X R F F I R V Z 11| U U D D O T T O I Z U F 12| Q L F M T H R H O S N Y Pergunta-se: Qual a linha e coluna da sexta letra da palavra ? Seja o vulc ao 1 2 3 4 5 6 7 8 9 10 11 12 +------------------------------------------------1| 6 7 3 2 1 4 8 8 5 8 2 5 2| 8 8 8 8 1 1 6 3 8 2 3 6 3| 7 2 6 9 7 8 5 6 1 5 1 9 4| 5 4 3 4 9 8 4 6 8 6 5 3 5| 9 7 9 4 3 8 4 4 3 4 4 7 6| 4 7 6 3 2 1 6 2 9 4 7 6 7| 2 8 7 5 1 3 3 7 5 5 9 3 8| 1 6 8 4 1 8 8 5 9 6 1 4 9| 6 6 3 5 6 5 9 9 2 8 6 6 10| 4 3 5 2 6 9 1 6 8 8 9 4
vers ao de 10 de fevereiro de 2008
507
508
CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO com a cratera disposta no plato (linha,coluna): 711 Pergunta-se quantos plat os s ao atingidos nos instantes t=3, t=4 e t=5 ?
CAP ITULO 48. EXERC ICIOS PRATICOS: 155A - CAMINHOS NO TABULEIRO E DESCARGA DO VULCAO
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
509
510
CAP ITULO 49. EXERC ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS Exemplo de Entrada 2 4 AC TGGT 4 25 CATA TCATATGCAAATAGCTGCATACCGA 0 0
Cap tulo 49
Sa da de Dados: Seu programa deve produzir uma sa da onde para cada conjunto de teste do arquivo de entrada seu programa deve produzir duas linhas. Na primeira linha deve aparecer a lista, em ordem crescente, com a posi ca o inicial de cada ocorr encia, na forma direta, do padr ao p na seq u encia t. Na segunda linha deve aparecer a lista, em ordem crescente, com a posi ca o inicial de cada ocorr encia, na forma complementar invertida, do padr ao p na seq u encia t.
Um grande projeto mundial est a em curso para mapear todo o material gen etico do ser humano: o Projeto Genoma Humano. As mol eculas de DNA (mol eculas que cont em material gen etico) podem ser representadas por cadeias de caracteres que usam um alfabeto de apenas 4 letras: A, C, T e G. Um exemplo de uma tal cadeia e: TCATATGCAAATAGCTGCATACCGA Nesta tarefa voc e dever a produzir uma ferramenta muito utilizada no projeto Genoma: um programa que procura ocorr encias de uma pequena cadeia de DNA (que vamos chamar de p) dentro de uma outra cadeia de DNA (que vamos chamar de t). Voc e dever a procurar dois tipos de ocorr encia: a diretae a complementar invertida. Uma ocorr encia direta e quando a cadeia p aparece como subcadeia dentro de t. Por exemplo, se p = CATA e t = TCATATGCAAATAGCTGCATACCGA
Exemplo de Sa da Teste 1 ocorrencia direta: 0 ocorrencia complementar invertida: 3 Teste 2 ocorrencia direta: 2 18 ocorrencia complementar invertida: 4 (esta sa da corresponde ao exemplo de entrada acima) Este exerc cio e igual ao proposto na OBI99.
49.2
Palavras Cruzadas
ent ao p ocorre na forma direta na posi ca o 2 e na posi ca o 18 de t. Uma ocorr encia complementar invertida depende da seguinte correspond encia entre as letras do DNA: A T e G C. Complementar o DNAsignica trocar as letras de uma cadeia de DNA seguindo essa correspond encia. Se complementarmos a cadeia CATA, vamos obter GTAT. Mas al em de complementar, e preciso tamb em inverter, ou seja, de GTAT obter TATG. E e esta cadeia que dever a ser procurada, no caso da ocorr encia complementar invertida. Assim, se p e t s ao as mesmas cadeias do exemplo anterior, ent ao p ocorre na forma complementar invertida na posi ca o 4 de t. Tarefa: Sua tarefa e escrever um programa que, dadas duas cadeias p e t, onde o comprimento de p e menor ou igual ao comprimento de t, procura todas as ocorr encias diretas e todas as ocorr encias complementares invertidas de p em t. Entrada de Dados: A entrada cont em v arios conjuntos de teste. Cada conjunto de teste e composto por tr es linhas. A primeira linha cont em dois inteiros positivos, M e N, M N, que indicam respectivamente o comprimento das cadeias de DNA p e t, conforme descrito acima. A segunda linha do conjunto de teste cont em a cadeia p, e a terceira linha cont em a cadeia t, onde p e t s ao compostas utilizando apenas os caracteres A, C, G e T. O nal do arquivo de testes e indicado quando M = N = 0 (este u ltimo conjunto de testes n ao e v alido e n ao deve ser processado). 511
O conhecido passatempo de palavras cruzadas e composto por uma grade retangular de quadrados brancos e pretos e duas listas de deni co es. Uma das listas de deni co es e para palavras escritas da esquerda para a direita nos quadrados brancos (nas linhas) e a outra lista e para palavras que devem ser escritas de cima para baixo nos quadrados brancos (nas colunas). Uma palavra e uma seq u encia de dois ou mais caracteres do alfabeto. Para resolver um jogo de palavras cruzadas, as palavras correspondentes a `s deni co es devem ser escritas nos quadrados brancos da grade. As deni co es correspondem a `s posi co es das palavras na grade. As posi co es s ao denidas por meio de n umeros inteiros seq uenciais colocados em alguns quadrados brancos. Um quadrado branco e numerado se uma das seguintes condi co es e vericada: (a) tem como vizinho a ` esquerda um quadrado preto e como vizinho a ` direita um quadrado branco; (b) tem como vizinho acima um quadrado preto e como vizinho abaixo um quadrado branco; (c) e um quadrado da primeira coluna a ` esquerda e tem como vizinho a ` direita um quadrado branco; d) e um quadrado da primeira linha acima e tem como vizinho abaixo um quadrado branco. Nenhum outro quadrado e numerado. A numera ca o come ca em 1 e segue seq uencialmente da esquerda para a direita, de cima para baixo. A gura abaixo ilustra um jogo de palavras cruzadas com numera ca o apropriada.
88-08, Pedro Kantek
512
CAP ITULO 49. EXERC ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 23 0 26 29 0 99 27 0
CAP ITULO 49. EXERC ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 0 24 0 0 0 0 0 0 0 99 0 99 0 0 99 30 0 99 28 0 0 25 0 0 0 0 99 0 0 0 0 0
Este exerc cio est a baseado (mas l a e diferente), na prova da OBI 99.
49.3
Exerc cio 1
Para o problema do Genoma, seja a entrada: 4 40 TGGT GAAGGGGATGGTGCAGGGCATGGTGTACCATTGTTTCGTC 5 44 GGACT CTGTGGACAGTAGTATTGAGTCCGGACTCTGACTTGTCAAGCAG 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada inst ancia) Sejam os tabuleiros de palavras cruzadas 7 9 7 9 15 20 38 40 46 52 57 59 8 8 10 13 24 27 29 34 39 50 53 56 0 0 Pergunta-se 3 valores para cada inst ancia: o valor da linha 1 e os PENULTIMOS valores da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2
Uma palavra horizontal e escrita em uma seq u encia de quadrados brancos em uma linha, iniciando-se em um quadrado numerado que tem um quadrado preto ` a esquerda ou que est a na primeira coluna ` a esquerda. A seq u encia de quadrados para essa palavra continua da esquerda para a direita, terminando no quadrado branco imediatamente anterior a um quadrado preto, ou no quadrado branco da coluna mais ` a direita da grade. Uma palavra vertical e escrita em uma seq u encia de quadrados brancos em uma coluna, iniciando-se em um quadrado numerado que tem um quadrado preto acima ou que est a na primeira linha acima. A seq u encia de quadrados para essa palavra 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 e escrever um programa que recebe como entrada uma especica ca o de um tabuleiro de palavras cruzadas e deve produzir 3 coisas: * A quantidade total de casas numeradas * a lista de casas iniciais para as palavras HORIZONTAIS * a lista de casas iniciais para as palavras VERTICAIS Entrada de Dados: A entrada cont em 2 linhas. Na primeira linha h a dois inteiros positivos, M e N, que indicam respectivamente o n umero de linhas e o n umero de colunas do jogo de palavras cruzadas. A segunda linha cont em os n umeros das casas pretas do tabuleiro. As casas do tabuleiro foram numeradas de 1 (a mais alta ` a esquerda) ate M N , a mais baixa ` a direita. Exemplo de Entrada 10 10 2 13 18 20 23 24 37 47 57 72 75 77 86 89 95 Sa da de Dados: A saida deve produzir o maior n umero achado, a lista de casas que iniciam palavras horizontais e a lista ... verticais. 30 2 8 10 11 12 15 18 19 20 21 22 23 24 25 26 28 29 30 1 3 4 5 6 7 9 13 14 16 17 27 28 (esta sa da corresponde ao exemplo de entrada acima) Apenas para refer encia, eis como cou a numera ca o do tabuleiro acima (99 e preto) 1 8 11 15 19 21 99 9 0 0 0 0 2 99 99 16 0 0 3 10 99 17 0 0 4 0 12 0 0 0 5 0 0 0 0 0 6 0 0 99 99 99 0 99 13 18 20 22 7 0 0 0 0 0 513 0 99 14 0 0 0
88-08, Pedro Kantek
49.4
Exerc cio 2
Para o problema do Genoma, seja a entrada: 5 34 AAAGT ATGTTTGTTAAAGTAAGTAAAGTTACTTTGCTAG 6 46 CATGCC TGCAATCCTAGACCATGCCGAGCTGGCTGCAGGCATGATGCCCGAC 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada inst ancia) Sejam os tabuleiros de palavras cruzadas
88-08, Pedro Kantek
514
CAP ITULO 49. EXERC ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 7 7 8 20 21 27 31 32 40 45 8 8 3 4 12 16 17 22 37 43 46 61 0 0 Pergunta-se 3 valores para cada inst ancia: o valor da linha 1 e os PENULTIMOS valores da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2
CAP ITULO 49. EXERC ICIO PRATICO: 156 - GENOMA E PALAVRAS CRUZADAS 4 38 GGTT GTTCCCCGTAGAAGTGTAGTAGAACCGGGTTGCCAGCA 5 50 GTAGA TCTACGTCTACATGTAGTAGATAGATGTAACAAGTACTAAGTAACGATGA 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada inst ancia) Sejam os tabuleiros de palavras cruzadas 8 7 5 7 10 12 23 28 35 42 55 8 8 4 8 13 31 33 36 41 49 53 56 0 0 Pergunta-se 3 valores para cada inst ancia: o valor da linha 1 e os PENULTIMOS valores da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2
49.5
Exerc cio 3
Para o problema do Genoma, seja a entrada: 4 40 CCTT CTGGGAGTGCGCACGTGACTGAAGGTATCCTTTTATTTAT 5 49 TGGCA ACAGTGGCAGGGTGCCAGACGATTGTGGCACGTTGATTTGCAGGGCCCC 0 0 Pergunta-se: quais as 4 linhas da resposta (2 linhas para cada inst ancia) Sejam os tabuleiros de palavras cruzadas 6 8 3 9 10 11 16 18 26 41 10 10 14 18 21 22 24 27 58 61 63 69 71 74 75 78 88 0 0 Pergunta-se 3 valores para cada inst ancia: o valor da linha 1 e os PENULTIMOS valores da segunda e terceira linha. L1 i 1 L2 i 1 L1 i 2 L2 i 2 L1, L1, p/L2 p/L2 p/L3 i p/L3 i 1 2
49.7
1 2 3 4
Respostas
9 21 10 19 29 0 28 0 0 0 0 0 27 25 22 23 0 0 0 0 0 0 0 0 24 0 14 0 5 26 17 0 0 0 0 0 19 32 13 1 0 0 0 7 0 0 0 0 18 19 13 17 17 14 18 14 11 9 15 13 20 25 30 21 19 24 29 20 15 22 27 16
49.6
Exerc cio 4
515
516
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
Cap tulo 50
Sa da de Dados Para cada conjunto de teste do arquivo de entrada seu programa deve produzir a informa ca o 1=trem ou 2=caminh ao. Exemplo de Sa da: 1, 1 e 2 (corresponde ` a entrada acima)
50.2
RoboCoee
A produtora de refrigerantes CaraCola precisa enviar com freq u encia grandes carregamentos para as suas distribuidoras em outros estados. Para isso ela pode utilizar uma transportadora que trabalha com caminh oes ou uma transportadora que trabalha com trens. As duas transportadoras competem agressivamente para conseguir o servi co, mas seus custos dependem do momento (por exemplo, se h a ou n ao caminh oes dispon veis, etc.). A cada carregamento, a CaraCola consulta as duas transportadoras, que informam as condi co es de pre co vigentes no momento, para o estado desejado. Sua tarefa e escrever um programa que, baseado nas informa co es das transportadoras, decida se o melhor e enviar o carregamento por trem ou por caminh ao. As transportadoras informam os seus custos na forma de duas vari aveis, representando duas parcelas. Uma parcela e um custo xo A que independe do peso do carregamento, e a outra parcela e um custo vari avel B que depende do peso do carregamento, em kilogramas. A CaraCola utiliza o peso do carregamento para calcular o custo dos transporte por trem e por caminh ao e decidir qual empresa transportadora contratar. Por exemplo, suponha que a transportadora por trem informa que o seu custo xo e A = R$ 450,00 e o seu custo por kilograma e B = R$ 3,50. Suponha ainda que a transportadora por caminh ao informa que seu custo xo e A = R$ 230,00 e o seu custo por kilograma e B = R$ 3,70. Neste caso, para um carregamento que pesa 2354 kg a CaraCola decide que e melhor fazer o envio por trem, pois 450 + 3, 50 2354 < 230 + 3, 70 2354. Se a diferen ca entre os custos for menor do que R$ 1,00 a CaraCola prefere o transporte por trem. Tarefa Sua tarefa e escrever um programa que recebe como entrada v arios casos, cada um apresentando uma lista de custos, e determina se a CaraCola deve enviar o carregamento por trem ou por caminh ao. Entrada de Dados A entrada cont em v arios conjuntos de teste. Cada conjunto de teste e composto por uma linha, que cont em cinco valores. O primeiro valor e um n umero inteiro positivo K que representa o peso, em kilogramas, do carregamento. Os quatro valores restantes s ao n umeros reais A, B, C e D que representam os custos informados pelas empresas de transporte. A e B representam respectivamente o custo xo e o custo vari avel por kilograma informado pela empresa que utiliza trem. C e D representam respectivamente o custo xo e o custo vari avel por kilograma informado pela empresa que utiliza caminh ao. Os custos s ao apresentados sempre com precis ao de dois algarismos decimais. O nal do arquivo de testes e indicado quando K = 0 (este u ltimo conjunto de testes n ao e v alido e n ao deve ser processado). Exemplo de Entrada 517
Dona Mercedes, a eciente funcion aria respons avel pela distribui ca o de cafezinho na empresa RoboCamp, fabricante de rob os industriais, vai aposentar-se em breve. Para ocupar a fun ca o de Dona Mercedes os engenheiros da empresa adaptaram um rob o existente, ao qual acoplaram uma m aquina de caf e. Para diminuir os custos de fabrica ca o, o novo rob o tem uma opera ca o bem simples, sendo capaz de apenas tr es movimentos b asicos: car parado (para que os empregados possam servir-se de caf e), andar para a frente, e girar sobre o seu eixo (para colocar-se de frente para o seu pr oximo ponto destino). A programa ca o do rob o e feita atrav es de uma seq u encia de N pontos no plano, numerados de 0 a N-1 (o rob o desenvolvido n ao sobe escadas, mas felizmente a empresa ocupa um u nico pavimento). Cada ponto e determinado por coordenadas inteiras (X,Y). O ponto i e sempre distinto do ponto i+1, para 0 i < N, e o ponto N-1 e distinto do ponto 0 (veja a regra 4 abaixo). O rob o move-se a partir do ponto 0, atrav es de todos os pontos dados, observando as seguintes regras: 1. O rob o inicia no ponto 0 de frente para o ponto 1; 2. O rob o move-se sempre para a frente; 3. Chegando ao ponto i (0 i N-1) o rob o gira sobre seu eixo, no sentido do rel ogio, de um a ngulo (0o < 360o), de modo a car de frente para o ponto (i+1) mod N, e faz uma pausa para que os usu arios possam servir-se de caf e; 4. No nal, para completar o percurso, o rob o movimenta-se do ponto N-1 para o ponto 0, e gira de modo a car de frente para o ponto 1. Tarefa Sua tarefa e escrever um programa que, dada a seq u encia de N pontos no plano que corresponde a ` programa ca o do rob o, determina quantas voltas completas sobre o seu eixo o rob o perfaz durante seu percurso. Entrada de Dados Cada conjunto de teste corresponde a uma programa ca o do rob o. A linha de um conjunto de testes cont em um inteiro positivo, N, que indica o n umero de pontos presentes no conjunto de teste, seguido por N pares de n umeros inteiros que correspondem ao valor das coordenadas X e Y de um ponto, separados por espa co em branco (-1000 X 1000, -1000 Y 1000). O nal do arquivo de testes e indicado quando N = 0 (este u ltimo conjunto de teste n ao e v alido e n ao deve ser 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
CAP ITULO 50. EXERC ICIO PRATICO 157 Sa da de Dados Para cada conjunto de teste do arquivo de entrada seu programa deve indicar o n umero de rota co es completas efetuadas pelo rob o durante seu percurso, encontrado pelo seu programa. Exemplo de Sa da: 1 e 3 (corresponde a ` entrada) 1471 1116 1975 0 0 Robot 930 824 900 1.34 1.48 1.75 308 270 290
CAP ITULO 50. EXERC ICIO PRATICO 157 3.27 2.49 1.56
50.3
Restaurante
Au nicoMP (Universidade Independente de Computa ca o) possui v arios refeit orios que servem seus milhares de alunos e professores. Para melhorar o atendimento a u nicoMP planeja fazer uma reforma nos refeit orios, mas para isso necessita saber qual o n umero m aximo de pessoas que s ao atendidas simultaneamente em um mesmo refeit orio. Para isso a u nicoMP, que possui catracas eletr onicas, coletou os seguintes dados: 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 s ao inteiros positivos que indicam o n umero de minutos transcorridos desde a abertura do restaurante. A entrada e a sa da do restaurante se faz por uma u nica catraca, onde passa apenas uma pessoa por vez. Se acontecer de uma pessoa entrar e outra sair no mesmo minuto, quem entra tem a prefer encia de uso da catraca. Nos elementos de E n ao h a valores repetidos. A mesma coisa para S. Tarefa Sua tarefa e escrever um programa que, dados dois vetores de inteiros E e S, ambos de comprimento igual a N, calcula o n umero m aximo de pessoas que est ao presentes ao mesmo tempo dentro do restaurante. Entrada de Dados Cada conjunto de teste e composto por tr es linhas. A primeira linha cont em um inteiro positivo, N, que indica o comprimento dos vetores E e S, conforme descrito acima. A segunda linha do conjunto de teste cont em os elementos do vetor E, separados por espa co em branco, e a terceira linha cont em os elementos do vetor S, separados por espa co em branco. O nal do arquivo de testes e indicado quando N = 0 (este u ltimo conjunto de testes n ao e v alido e n ao deve ser processado). Exemplo de Entrada 3 14 67 98 1890 1900 2123 2 200 1800 1543 2324 0 Sa da de Dados Para cada conjunto de teste do arquivo de entrada seu programa deve produzir o n umero m aximo de pessoas presentes simultaneamente no restaurante, encontrado pelo seu programa. Exemplo de Sa da: 3 e 1 (corresponde a ` entrada acima)
2 -4, 0 -3 4 4
0 -2
11 12 13 18 23 26 27 31 32 37 19 23 27 29 34 39 41 45 47 50 10 13 17 21 22 23 24 29 30 16 17 19 20 23 24 28 30 33 13 16 21 22 26 29 32 34 23 25 29 34 38 42 45 48
Responda T1 T2
T3
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
50.4
Exerc cio 1
Transporte:
vers ao de 10 de fevereiro de 2008
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
519
520
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 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 0 -3, -1 0, -2 2, 0 -4, -4 4, 4 -3, 2 0, 1 -3, -1 2 2 -2, 3 1 3 1 T3 28 33 36 40 40 43 45 48 22 24 27 28 32 37 3 5 0,
4 -3,
5,
0 -2
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:
27 31 32 33 38 42 43 44 47 50 54 56
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
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
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:
521
522
Cap tulo 51
Uma seq u encia de 0s e 1s e chamada de seq u encia-H se e composta por um u nico 0 ou se e composta por um 1 seguido de duas seq u encias-H. Por exemplo, 0, 100 e 10100 s ao seq u encias-H, mas 10, 111 e 10010 n ao s ao. Tarefa Sua tarefa e determinar se uma dada seq u encia e ou n ao uma seq u encia-H. Entrada de Dados Cada conjunto de teste e composto por uma u nica linha, que cont em a seq u encia a ser testada, composta de d gitos 0s e 1s (sem espa cos em branco intermedi arios). O nal da seq u encia e indicado pelo primeiro espa co em branco da linha. O nal da entrada e indicado quando os primeiros caracteres da linha de teste s ao -1. Exemplo de Entrada 0 10100 10010 -1 Sa da de Dados Para cada conjunto de teste do arquivo de entrada seu programa deve produzir o d gito 1 se a seq u encia e uma seq u encia-H, ou o d gito 0 se a seq u encia n ao e uma seq u encia-H. Exemplo de Sa da 1 , 1 , 0 (esta sa da corresponde ao exemplo de entrada acima)
51.3
Rede otica
51.2
Carga Pesada
Um dos maiores problemas no transporte de cargas pesadas por rodovias e a altura dos viadutos, pois muitas vezes a carga e mais alta do que o v ao do viaduto sob o qual o caminh ao deve passar. Considere o mapa abaixo. E poss vel tranportar uma turbina de hidroel etrica, que em cima do caminh ao mede 7 metros de altura, da cidade Xis da Serra para a cidade Ypsilon Bonito? 523
Os caciques da regi ao de Tutua cu pretendem integrar suas tribos a ` chamada aldeia global. A primeira provid encia foi a distribui ca o de telefones celulares a todos os paj es. Agora, planejam montar uma rede de bra o tica interligando todas as tabas. Esta empreitada requer que sejam abertas novas picadas na mata, passando por reservas de ora e fauna. Conscientes da necessidade de preservar o m aximo poss vel o meio ambiente, os caciques encomendaram um estudo do impacto ambiental do projeto. Ser a que voc e consegue ajud a-los a projetar a rede de bra o tica? Tarefa Vamos denominar uma liga ca o de bra o tica entre duas tabas de um ramo de rede. Para possibilitar a com unica ca o entre todas as tabas e necess ario que todas elas
88-08, Pedro Kantek
524
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 informa ca o do impacto ambiental que causar a a constru ca o dos ramos. Alguns ramos, no entanto, nem foram considerados no estudo ambiental, pois sua constru ca o e imposs vel. 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 o tica 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
Sua tarefa e escrever um programa para determinar quais ramos devem ser constru dos, de forma a possibilitar a com unica ca o entre todas as tabas, causando o menor impacto ambiental poss vel. Entrada A entrada e composta de v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em o n umero de tabas. As tabas s ao numeradas de 1 a N. As M indica co es seguintes cont em tr es inteiros positivos X, Y e Z, que indicam que o ramo de rede que liga a taba X ` a taba Y tem impacto ambiental Z. Com os conjuntos de teste dados sempre e poss vel interligar todas as tabas. O nal da entrada e indicado quando 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 da Para cada conjunto de teste da entrada seu programa deve produzir uma lista dos ramos de redes que devem ser constru dos. Um ramo e descrito por um par de tabas X e Y , com X < Y. Os ramos de rede podem ser listados em qualquer ordem, mas n ao deve haver repeti ca o. Se houver mais de uma solu ca o poss vel, imprima apenas uma delas. Exemplo de Sa da 1 2 ; 1 3 1 3 ; 2 3 ; 2 5 ; 3 4 (esta sa da corresponde ao exemplo de entrada acima)
51.5
Exerc cio 2
Seq u encia-H: 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 o tica 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
51.4
Exerc cio 1
525
526
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.6
Exerc cio 3
Seq u encia-H: 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 otica 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
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
S4
C1 C2
R1
R2
51.7
Exerc cio 4
Seq u encia-H: 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 otica
vers ao de 10 de fevereiro de 2008
527
528
CAP ITULO 52. EXERC ICIO PRATICO - 159 Exemplo de Sa da 3 e 10 (esta sa da corresponde ao exemplo de entrada acima)
52.2
Bits Trocados
Cap tulo 52
Os alunos do u ltimo 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, Te olo, dono de uma loja de inform atica, decidiu doar um computador para ser sorteado entre os que comparecessem. Os alunos prepararam barracas de quent ao, pipoca, doces, ensaiaram a quadrilha e colocaram ` a venda ingressos numerados sequencialmente a partir de 1. O n umero do ingresso serviria para o sorteio do computador. Ficou acertado que Te olo decidiria o m etodo de sorteio; em princ pio o sorteio seria, claro, computadorizado. O local escolhido para a festa foi o gin asio da escola. A entrada dos participantes foi pela porta principal, que possui uma roleta, onde passa uma pessoa por vez. Na entrada, um funcion ario inseriu, em uma lista no computador da escola, o n umero do ingresso, na ordem de chegada dos participantes. Depois da entrada de todos os participantes, Te olo come cou a trabalhar no computador para preparar o sorteio. Vericando a lista de presentes, notou uma caracter stica not avel: havia apenas um caso, em toda a lista, em que o participante que possuia o ingresso numerado com i, havia sido a i- esima pessoa a entrar no gin asio. Te olo cou t ao encantado com a coincid encia que decidiu que o sorteio n ao seria necess ario: esta pessoa seria o ganhador do computador. Tarefa Conhecendo a lista de participantes, por ordem de chegada, sua tarefa e determinar o n umero do ingresso premiado, sabendo que o ganhador eou nico participante que tem o n umero do ingresso igual ` a sua posi ca o de entrada na festa. Entrada A entrada e composta de v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em um n umero inteiro positivo N que indica o n umero de participantes da festa. A linha seguinte cont em a sequ encia, em ordem de entrada, dos N ingressos das pessoas que participaram da festa. O nal da entrada e indicado quando N = 0. Para cada conjunto de teste da entrada haver a um u nico ganhador. Exemplo de Entrada 4 4 5 3 1 10 9 8 7 6 1 4 3 2 12 10 0 Sa da A sa da deve conter o n umero do ingresso do ganhador, conforme determinado pelo seu programa. 529
As Ilhas Weblands formam um reino independente nos mares do Pac co. Como e um reino recente, a sociedade e muito inuenciada pela inform atica. A moeda ocial eo Bit; existem notas de B$ 50,00, B$10,00, B$5,00 e B$1,00. Voc e foi contratado(a) para ajudar na programa ca o dos caixas autom aticos de um grande banco das Ilhas Weblands. Tarefa Os caixas eletr onicos das Ilhas Weblands operam com todos os tipos de notas dispon veis, mantendo um estoque de c edulas para cada valor (B$ 50,00, B$10,00, B$5,00 e B$1,00). Os clientes do banco utilizam os caixas eletr onicos para efetuar retiradas de um certo n umero inteiro de Bits. Sua tarefa e escrever um programa que, dado o valor de Bits desejado pelo cliente, determine o n umero de cada uma das notas necess ario para totalizar esse valor, de modo a minimizar a quantidade de c edulas entregues. Por exemplo, se o cliente deseja retirar B$50,00, basta entregar uma u nica nota de cinquenta Bits. Se o cliente deseja retirar B$72,00, e necess ario entregar uma nota de B$50,00, duas de B$10,00 e duas de B$1,00. Entrada A entrada e composta de v arios conjuntos de teste. Cada conjunto de teste e composto por uma u nica linha, que cont em um n umero inteiro positivo V, que indica o valor solicitado pelo cliente. O nal da entrada e indicado por V = 0. Exemplo de Entrada 1 72 0 Sa da Para cada conjunto de teste da entrada seu programa deve produzir quatro inteiros I, J, K e L que representam o resultado encontrado pelo seu programa: I indica o n umero de c edulas de B$50,00, J indica o n umero de c edulas de B$10,00, K indica o n umero de c edulas de B$5,00 e L indica o n umero de c edulas de B$1,00. Exemplo de Sa da 0 0 0 1 e 1 2 0 2 (esta sa da corresponde ao exemplo de entrada acima)
52.3
Saldo de gols
Hip olito e um torcedor fan atico de um grande clube curitibano. Coleciona amulas, 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 funda ca o, em 1909. Depois de inseridos os dados, Hip olito come cou 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 Hip olito tem o computador h a muito pouco tempo, n ao sabe programar muito bem, e precisa de sua ajuda. dada uma lista, numerada seq Tarefa E uencialmente a partir de 1, com os resultados de todos os jogos do time (primeira partida: 3 x 0, segunda partida: 1 x 2, terceira partida: 0 x 5 ...). Sua tarefa e escrever um programa que determine em qual per odo o time conseguiu acumular o maior saldo de gols. Um per odo e denido pelos n umeros de seq u encia de duas partidas, A e B, onde A B. O saldo de gols acumulado entre A e B e dado pela soma dos gols marcados pelo time em todas as partidas realizadas entre
88-08, Pedro Kantek
530
CAP ITULO 52. EXERC ICIO PRATICO - 159 A e B (incluindo as mesmas) menos a soma dos gols marcados pelos times advers arios 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 e maior). Se ainda assim houver mais de uma solu ca o poss vel, escolha qualquer uma delas como resposta. Entrada Seu programa deve ler v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em um inteiro n ao negativo, N, que indica o n umero de partidas realizadas pelo time (o valor N = 0 indica o nal da entrada). Seguem-se N linhas, cada uma contendo um par de n umeros inteiros n ao negativos X e Y que representam o resultado da partida: X s ao os gols a favor e Y os gols contra o time de Hip olito. As partidas s ao numeradas sequencialmente a partir de 1, na ordem em que aparecem na 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 u ltima 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 express ao nenhum. Exemplo de Sa da 2 2, 3 8 e nenhum acima)
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.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
vers ao de 10 de fevereiro de 2008
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 531
88-08, Pedro Kantek 88-08, Pedro Kantek
532
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 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
n2
n3
n4
s1
s2
s3
52.7
Exerc cio 4
Quermesse 16 10 2 2 0 18 5 17 1 3 15 11 12 20 4 9 10 14 7 6 8 19 2 13 13 4 18 1 17 6 11 20 3 12 19 5 7 8 16 9 2 14 15 11 7 5 19 16 1 18 8 6 4 12 17 13 10 9 15 20 3 14 14 17 20 9 7 16 5 4 18 13 11 8 6 12 10 3 15 19 1
Notas 289 123 208 236 0 Saldo de gols 7 1 6;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
vers ao de 10 de fevereiro de 2008
533
534
Cap tulo 53
Sa da Para cada conjunto de teste da entrada seu programa deve produzir as coordenadas do ret angulo de interse ca o encontrado pelo seu programa, no mesmo formato utilizado na entrada. Caso a interse ca o seja vazia, a segunda linha deve conter a express ao nenhum. Exemplo de Sa da 2 4 6 3 e nenhum (esta sa da corresponde ao exemplo de entrada acima)
53.2
O macaco-prego e um animal irrequieto e barulhento, merecedor tamb em dos adjetivos desordeiro e despudorado. A sua cabe ca, encimada por uma densa pelagem negra ou marrom-escura, semelhante a um gorro, torna seu aspecto inconfund vel. Apesar de ser o macaco mais comum nas matas do pa s, uma de suas sub-esp ecies encontra-se seriamente amea cada de extin ca o: o macaco-prego-do-peito-amarelo, que se distingue das demais pela colora ca o amarelada do peito e da parte anterior dos bra cos. Um grande esfor co foi feito pelos primatologistas para aumentar a popula ca o dos macacosprego-do-peito-amarelo. Sabe-se que eles se alimentam de plantas, das quais consomem preferencialmente frutos e brotos. Alimentam-se tamb em de muitos animais, preferencialmente lesmas, lagartas e r as, e preferem as orestas mais densas. Para determinar o melhor local do pa s para criar uma nova reserva ambiental para os macacos-pregodo-peito-amarelo, o governo fez um levantamento das regi oes no pa s onde as condi co es preferidas desses animais ocorrem: regi oes de oresta densa, regi oes com frutos, regi oes com muitos brotos, etc. Ajude a salvar os macacos-prego-do-peito-amarelo. Tarefa As regi oes prop cias para o macaco-prego-do-peito-amarelo foram determinadas como ret angulos cujos lados s ao todos verticais ou horizontais. Sua tarefa e encontrar o local ideal para a reserva ambiental, denida como a interse ca o de todas as regi oes dadas.
MASP
O MASP (Museu de Arte de S ao Paulo) tem o melhor acervo de obras de arte da Am erica Latina, sendo reconhecido mundialmente. Al em disso, o MASP e diferente de museus tradicionais porque seus quadros n ao s ao pendurados em paredes (j a que as paredes do MASP s ao janelas de vidro), mas sim apresentados em cavaletes no meio da sala de exposi ca o. Uma grande exposi ca o est a em curso, ocupando todo o sal ao de exposi co es. Considere que: a) as obras est ao organizadas no sal ao de exposi co es no formato de uma matriz de N 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 ( ultima coluna); c) uma trajet oria de visita e composta de uma seq u encia de passos; a cada passo o 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 s ao mostrados na gura abaixo:
e) para dicultar ainda um pouco mais o problema, a primeira e u ltima linhas (linhas de n umero 1 e N) da matriz s ao consideradas adjacentes (o que n ao e poss vel no MASP!); Entrada Seu programa deve ler v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em um inteiro n ao negativo, N, que indica o n umero de regi oes (o valor N = 0 indica o nal da entrada). Seguem-se N linhas, cada uma contendo quatro n umeros inteiros X, Y, U e V que descrevem uma regi ao: o par X, Y representa a coordenada do canto superior esquerdo e o par U, V representa a coordenada do canto inferior direito de um ret angulo. Exemplo de Entrada (horizontalizados...) 535 f ) cada obra tem associada uma prioridade de visita. A prioridade e um n umero inteiro; quanto menor o n umero, maior a prioridade de que a obra seja apreciada (note que a prioridade pode ser negativa); Tarefa Sua tarefa e escrever um programa que determine a trajet oria o tima para uma visita ao museu, obedecendo as regras acima. A trajet oria o tima e aquela que tem a menor soma total das prioridades das obras visitadas. Como exemplo, considere as duas exposi co es abaixo (a u nica diferen ca entre as duas exposi co es e a prioridade das obras da u ltima linha):
88-08, Pedro Kantek
536
CAP ITULO 53. EXERC ICIO PRATICO - 160 -2 5 -8 -13 -5 0 4 0 Masp As trajet orias otimas para as duas exposi co es s ao indicadas na gura. Note que a trajet oria otima para a exposi ca o da direita utiliza a propriedade da adjac encia entre a primeira e a u ltima linhas. No caso de haver mais de uma trajet oria otima poss vel, seu programa deve imprimir a trajet oria de menor ordem lexicogr aca (veja o formato de Sa da, abaixo). Entrada A entrada e composta de v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em dois n umeros inteiros positivos N e M, que indicam respectivamente o n umero de linhas e o n umero de colunas da matriz. As N linhas seguintes cont em cada uma M n umeros inteiros que representam as prioridades das obras. O nal da entrada e indicado por N = M = 0. 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 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
0 0
masp2
Sa da Para cada conjunto de teste da entrada seu programa deve produzir a trajet oria otima, descrita por uma seq u encia de M inteiros (separados por um espa co em branco), representando as linhas da matriz que constituem a trajet oria otima. No caso de haver mais de uma trajet oria otima poss vel, seu programa deve imprimir a trajet oria de menor ordem lexicogr aca (a primeira achada). Exemplo de Sa da Teste 1 1 2 3 4 4 5 Teste 2 1 2 1 5 4 5 Teste 3 1 1 (esta sa da corresponde ao exemplo de entrada acima)
53.4
4 -5 -2 -14 -5 5 -5 -13 3 -13 -7 0 Masp 8 8 9 8 14 6 13 12 8
Exerc cio 2
53.3
4 3 -12 -11 10 10 10
Exerc cio 1
6 6 8 4 5 8 7 5
88-08, Pedro Kantek
538
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.6
4 -10 0 -15 -6 5 2 -7 -9 -9 -6 0 Masp 6 6 1 4 9 8 7 8 5 3 9 6 6 4 6 6 9 3 5 8 8 9 1 1 4 1 8 8 0 0 3 6 5 6 9 6 9 9 3 9 7 9 8 4 7 2 4 4 5 2 3 5 2 2 12 7 7 8 12 12 8 9 10
Exerc cio 4
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 15 6 15 15 5 13 14 12 5
Exerc cio 3
9 3 3 5 5 9 9 6 4 5 4 3
2 7 1 7 9 5 4 2 2 5 4 3
5 8 2 1 9 4 2 4 7 6 6 6
7 5 4 5 6 2 2 8 1 5 4 3
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 539
88-08, Pedro Kantek
540
CAP ITULO 54. EXERC ICIO PRATICO - 161 D.B.ABAA D.BBBB.A DDDDAD.A E...AAAA EEEEEE.. ..ACCCA... ..AAAAA... .......... ...BBB.... ...B.B.... ...BBB....
Cap tulo 54
Sa da Para cada conjunto de teste da entrada seu programa deve produzir uma lista das letras dos an eis, na ordem em que estes foram empilhados, do mais abaixo para o mais acima. Exemplo de Sa da EDABC e (ABC ou ACB ou BAC ou BCA ou CAB ou CBA)
54.2
Considere os seguintes an eis quadrados, cada um denido em uma matriz de 8 colunas por 9 linhas, conforme a gura abaixo. Agora coloque um anel sobre o outro, come cando 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 an eis pelo lado de cima vemos o seguinte: ........ 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..
Balaio
Os an eis s ao formados por letras mai usculas, cada anel com uma letra diferente. O caractere ponto (.) e utilizado para representrar espa cos vazios. A espessura das paredes do anel e de exatamente um caractere e o comprimento dos lados nunca e menor do que tr es caracteres. Pelo menos uma parte de cada um dos lados do anel e vis vel (note que um canto conta como vis vel para dois lados). Tarefa Sua tarefa e escrever um programa que, dada a congura ca o de uma pilha de an eis, determine qual a seq u encia de empilhamento (de baixo para cima) que foi utilizada na constru ca o da pilha. No exemplo acima a resposta e EDABC. So h a uma ordem poss vel de empilhamento. Entrada A entrada e composta de v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em dois n umeros inteiros positivos X e Y que indicam, respectivamente, a altura e a largura da matriz que cont em os an eis. As X linhas seguintes cont em Y caracteres cada, representando a vista superior da pilha de an eis. O nal da entrada e indicado quando X = Y = 0. Exemplo de Entrada (horizontalizado...) 9 8 10 10 0 0 .CCC.... ..AAAAA... ECBCBB.. ..ACCCA... DCBCDB.. ..AC.CA... DCCC.B.. ..AC.CA... 541
Maria mora no interior de Minas Gerais e e especialista em fabricar balaios de junco. Os balaios de Maria s ao muito bem feitos e t em grande aceita ca o na regi ao. Cada balaio demora exatamente um dia de trabalho para ser confeccionado: Maria come ca a tecer um balaio no in cio do dia e no nal do dia entrega o produto para um cliente. Com a crescente demanda, Maria come cou a aceitar pedidos para o futuro: Narciso precisa de 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, est ao anotados computador que o lho de Maria comprou. Maria n ao sabe dizer n ao, e agora percebeu que aceitou mais pedidos do que vai conseguir produzir, se for considerar as datas-limite impostas pelos seus clientes. Algu em poderia ajudar Maria? Tarefa Sua tarefa e escrever um programa que determine qual a melhor ordem de entrega dos balaios de Maria, de forma a minimizar a chatea ca o total causada por eventuais atrasos na entrega. A medida da chatea ca o utiliza um sistema de medi ca o desenvolvido por Maria, por experi encia anterior: ela sabe que se atrasar o balaio de Narciso, isso vai causar uma chatea ca o de n vel 13; Esmeralda e muito boazinha e, se Maria atrasar a sua entrega, a chatea ca o ser a n vel 0. No entanto, se atrasar o balaio do Coronel Zoio, ela ter a uma chatea ca o de n vel 125. A chatea ca o total e dada pela soma das chatea co es causadas por todos os atrasos. Considere que Maria trabalha todos os dias, sem descanso, e os dias s ao numerados sequencialmente a partir de 1. Entrada A entrada e composta de v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em um n umero inteiro positivo N, que indica quantidade de pedidos pendentes. A segunda linha cont em o vetor de inteiros positivos L, em que L[i] que indica a data-limite para entrega do pedido i (1 i N). A terceira linha cont em o vetor de inteiros positivos C, em que C[i] indica o n vel de chatea ca o ocasionado se o prazo L[i] n ao for obedecido (1 i N). O nal da entrada e indicado por N = 0. 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 da Para cada conjunto de teste da entrada seu programa deve produzir a chatea ca o total m nima daquela entrada. Pode ocorrer que mais de uma seq u encia de produ ca o gere a mesma chatea ca o m nima, mas como a resposta deve ser o valor do m nimo, este fato n ao tem import ancia. Exemplo de Sa da 0 e 30 (a seq. neste caso pode ser 5 2 4 3 6 7 1)
88-08, Pedro Kantek
542
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
54.3
Meteoros
Em noites sem nuvens pode-se muitas vezes observar pontos brilhantes no c eu que se deslocam com grande velocidade, e em poucos segundos desaparecem de vista: s ao as chamadas estrelas cadentes, ou meteoros. Meteoros s ao na verdade part culas de poeira de pequenas dimens oes que, ao penetrar na atmosfera terrestre, queimam-se rapidamente (normalmente a uma altura entre 60 e 120 quil ometros). Se os meteoros s ao sucientemente grandes, podem n ao queimar-se completamente na atmosfera e dessa forma atingem a superf cie terrestre: nesse caso s ao chamados de meteoritos. Z e Fel cio e um fazendeiro que adora astronomia e descobriu um portal na Internet que fornece uma lista das posi co es onde ca ram meteoritos. Com base nessa lista, e conhecendo a localiza ca o de sua fazenda, Z e Fel cio deseja saber quantos meteoritos ca ram dentro de sua propriedade. Ele precisa de sua ajuda para escrever um programa de computador que fa ca essa verica ca o automaticamente. Tarefa S ao dados: uma lista de pontos no plano cartesiano, onde cada ponto corresponde ` a posi ca o onde caiu um meteorito; as coordenadas de um ret angulo que delimita uma fazenda. As linhas que delimitam a fazenda s ao paralelas aos eixos cartesianos. Sua tarefa 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 v arios conjuntos de testes. A primeira linha de um conjunto de testes quatro n umeros inteiros X1, Y1, X2 e Y2, onde (X1, Y1) e a coordenada do canto superior esquerdo e (X2, Y2) e a coordenada do canto inferior direito do ret angulo que delimita a fazenda. A segunda linha cont em um inteiro, N, que indica o n umero de meteoritos. Seguem-se N linhas, cada uma contendo dois n umeros inteiros X e Y, correspondendo ` as coordenadas de cada meteorito. O nal da entrada 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 da Para cada conjunto de teste da entrada seu programa deve produzir o n umero de meteoritos que ca ram dentro da fazenda. Exemplo de Sa da 1 e 2 (esta sa da corresponde ao exemplo de entrada acima)
30
54.4
Exerc cio 1
Responda aneis1
543
544
CAP ITULO 54. EXERC ICIO PRATICO - 161 5 6 17 15 0 0 0 0 Responda aneis1 aneis2 balaio1 balaio2 met1 met2
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
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
25 28 10 22 26 30 27 21
26
7 1 1 5 2 5 4 3 49 87 28 62 84 39 14 7 4 2 3 4 5 4 4 11 12 58 63 34 27 79 0
29
Meteoros 5 6 25 15 12 1 546
vers ao de 10 de fevereiro de 2008
28
21
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 7 5 1 5 4 2 3 3 78 74 50 36 72 17 84 0 25 4 Meteoros 7 6 11 11 26 4 8 2 1 6 22 21 15 29 4 18 0 0 0 3 25 12 16 19 14 0 aneis2 12 8 21 27 16 16 28 22 27 10
Responda aneis1
21
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
vers ao de 10 de fevereiro de 2008
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
547
548
CAP ITULO 55. EXERC ICIOS PRATICOS - 162 Exemplo de Sa da sim, nao e sim (esta sa da corresponde ao exemplo de entrada acima)
55.2
Sorvete
Cap tulo 55
Todos conhecem o jogo de domin os, em que pe cas com dois valores devem ser colocadas na mesa em seq u encia, de tal forma que os valores de pe cas imediatamente vizinhas sejam iguais. O objetivo desta tarefa e determinar se e poss vel colocar todas as pe cas de um conjunto dado em uma forma ca o v alida.
Jo aozinho e um menino que costuma ir a ` praia todos os nais de semana com seus pais. Eles freq uentam sempre a mesma praia, mas cada semana o pai de Jo aozinho estaciona o carro em um local diferente ao longo da praia, e instala sua fam lia em um ponto na praia em frente ao carro. Jo aozinho e muito comil ao, e adora de tomar sorvete na praia. Contudo, alguns dias acontece de nenhum sorveteiro passar pelo local onde eles est ao. Intrigado com isto, e n ao querendo mais car sem tomar seu sorvete semanal, Jo aozinho foi at e a Associa ca o dos Sorveteiros da Praia (ASP), onde cou sabendo que cada sorveteiro passa o dia percorrendo uma mesma regi ao da praia, indo e voltando. Al em disto, cada sorveteiro percorre todos os dias a mesma regi ao. Jo aozinho conseguiu ainda a informa ca o dos pontos de in cio e m da regi ao percorrida por cada um dos sorveteiros. Com base nestes dados, Jo aozinho quer descobrir os locais da praia onde o pai dele deve parar o carro, de forma que pelo menos um sorveteiro passe naquele local. S o que o volume de dados e muito grande, e Jo aozinho est a pensando se seria poss vel utilizar o computador para ajud a-lo nesta tarefa. No entanto Jo aozinho n ao sabe programar, e est a pedindo a sua ajuda. Tarefa Voc e deve escrever um programa que leia os dados obtidos pelo Jo aozinho e imprima uma lista de intervalos da praia por onde passa pelo menos um sorveteiro. Entrada Seu programa deve ler v arios conjuntos de teste. A primeira linha de um conjunto de teste cont em dois inteiros n ao negativos, P e S, que indicam respectivamente o comprimento em metros da praia e o n umero de sorveteiros. Seguem-se S linhas, cada uma contendo dois n umeros inteiros U e V que descrevem o intervalo de trabalho de cada um dos sorveteiros, em metros contados a partir do in cio da praia (U < V, 0 U P e 0 V P). O nal da entrada e indicado por S=0 e P=0. 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 da Para cada conjunto de teste da entrada seu programa deve indicar O MAIOR obvio que se s intervalo cont guo de praia que e servido por um sorveiteiro. E o houver um intervalor, este e que ser a a resposta. Exemplo de Sa da 110 180 ; 10 1000 ; 1 4 (esta sa da corresponde ao exemplo acima)
dado um conjuto de pe Tarefa E cas de domin o. Cada pe ca tem dois valores X e Y, com X e Y variando de 0 a 6 (X pode ser igual a Y). Sua tarefa e escrever um programa que determine se e poss vel organizar todas as pe cas recebidas em seq u encia, obedecendo as regras do jogo de domin o. Entrada A entrada e composta de v arios conjuntos de teste. A primeira linha de um conjunto de testes cont em um n umero inteiro N que indica a quantidade de pe cas do conjunto. As N linhas seguintes cont em, cada uma, a descri ca o de uma pe ca. Uma pe ca e descrita por dois inteiros X e Y (0 X 6 e 0 Y 6) que representam os valores de cada lado da pe ca. O nal da entrada e indicado por N = 0. 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
55.3
Pir amide
Sa da Para cada conjunto de teste da entrada seu programa deve produzir a express ao simse for poss vel organizar todas as pe cas em uma forma ca o v alida ou a express ao naocaso contr ario. 549
Joana quer ser artista pl astica, mas enquanto estuda procura trabalhos tempor arios durante suas f erias escolares. Joana conseguiu emprego como auxiliar de almoxarifado 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 n ao podem ser deitadas em outra posi ca o (todas t em que ser armazenadas obedecendo a ` indica ca o Este lado para cima). Joana e a respons avel por armazenar o carregamento de caixas, e, seguindo seu senso art stico,
88-08, Pedro Kantek
550
CAP ITULO 55. EXERC ICIOS PRATICOS - 162 quer construir com as caixas a pilha mais alta poss vel na forma de uma pir amide, ou seja, uma pilha constru da de tal forma que uma caixa A e empilhada sobre uma outra caixa B somente se as dimens oes de A (largura e a profundidade) n ao s ao maiores do que as dimens oes de B (as caixas podem ser viradas de forma a trocar a profundidade com a largura). Voc e pode ajud a-la? dado um conjuto de caixas de mesma altura mas com largura e profunTarefa E didades diferentes. Sua tarefa e escrever um programa que determine qual a pilha de caixas mais alta que Joana pode construir com as restri co es acima. Entrada A entrada e composta de v arios conjuntos de teste. A primeira linha de um conjunto de testes cont em um n umero inteiro N que indica a quantidade de caixas do conjunto. As N linhas seguintes cont em, cada uma, a descri ca o de uma caixa. Uma caixa e descrita por dois inteiros X e Y (1 X 15000 e 1 Y 15000) que representam os valores de cada lado da pe ca. O nal da entrada e indicado por N = 0. 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 da Para cada conjunto de teste da entrada seu programa deve produzir o n umero m aximo de caixas que podem ser empilhadas na forma de uma pir amide, conforme determinado pelo seu programa. Exemplo de Sa da 3 ; 4 (esta sa da corresponde ao exemplo de entrada acima)
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
Pir amide de caixas 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.4
Domin o
Exerc cio 1
55.6
Domin o
Exerc cio 3
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
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
Pir amide de caixas 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 3 ; 0 9;15 12 ; 0 3; 8 2; 1 2 ; 0
Pir amide de caixas 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
s1
s2
s3
p1
p2
p3
Responda d1 d2 d3
s1
s2
s3
p1
p2
p3
551
552
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
Pir amide de caixas 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
553