ex amen practico

6
Pontificia Universidad Cat´ olica de Chile Escuela de Ingenier´ ıa Departamento de Ciencia de la Computaci´ on IIC1103 Introducci´ on a la Programaci´ on - Secci´ on 1 Primer Semestre 2013 Examen final - Parte Pr´ actica (60 %) Instrucciones generales Esta parte pr´ actica est´ a compuesta de 6 ejercicios (pero no te asustes! cada uno es mucho m´ as corto que los del examen preparativo). Crea una carpeta de trabajo en tu computador en donde s´ olo tengas los archivos relacionados a este examen. De esa manera, despu´ es podr´ as comprimir esa carpeta completa y entregarla en el buz´ on. Debes entregar un ´ unico archivo comprimido con todos los archivos que hayas creado para este examen. Debes completar cada ejercicio en un archivo diferente, cuyos nombres deben ser ejercicio x.py (con x el n´ umero del ejercicio). Puedes crear otros archivos que importes desde ´ estos si quieres, pero es importante que la soluci´ on a cada ejercicio se logre ejecutando el archivo con nombre ejercicio x.py respectivo. El enunciado de algunos ejercicios mencionar´ a una librer´ ıa o m´ odulo desde donde debes cargar cierta funci´ on o clase. Ese archivo podr´ as descargarlo desde el sitio del curso (secci´ on Examen) y debes agregarlo a tu misma carpeta de trabajo para que puedas importarlo desde los ejercicio x.py que lo necesiten. Puedes simplemente usar el import global (teniendo cuidado de no crear funciones/clases con el mismo nombre de la(s) que vayas a usar): from libexamen import * Recuerda: entiende primero, luego piensa y dise˜ na/idea/modela tus algoritmos, y finalmente escr´ ıbe- los en odigo. 1

Upload: matias-ignacio-gutierrez-candia

Post on 16-Aug-2015

219 views

Category:

Documents


4 download

DESCRIPTION

Examen Introducción a la Programación. Lenguaje: Python.

TRANSCRIPT

PontificiaUniversidadCat olicadeChileEscueladeIngenieraDepartamentodeCienciadelaComputaci onIIC1103IntroduccionalaProgramacion-Seccion1PrimerSemestre2013Examennal-PartePractica(60%)InstruccionesgeneralesEsta parte practica esta compuesta de 6 ejercicios (pero no te asustes! cada uno es mucho mas corto quelos del examen preparativo). Crea una carpeta de trabajo en tu computador en donde solo tengas los archivosrelacionados a este examen. De esa manera, despues podras comprimir esa carpeta completa y entregarla enel buzon. Debesentregarun unicoarchivocomprimidocontodoslosarchivosquehayascreadoparaesteexamen.Debes completar cada ejercicio en un archivo diferente, cuyos nombres deben ser ejerciciox.py (con xeln umero delejercicio). Puedes crear otros archivos que importes desde estos siquieres, pero es importantequelasolucionacadaejercicioselogreejecutandoelarchivoconnombreejerciciox.pyrespectivo.El enunciadodealgunosejerciciosmencionaraunalibreraomodulodesdedondedebescargarciertafuncion o clase. Ese archivo podras descargarlo desde el sitio del curso (seccion Examen) y debes agregarlo atu misma carpeta de trabajo para que puedas importarlo desde los ejerciciox.py que lo necesiten. Puedessimplementeusarelimportglobal(teniendocuidadodenocrearfunciones/clasesconelmismonombredela(s)quevayasausar):from libexamen import *Recuerda: entiende primero, luego piensa y dise na/idea/modela tus algoritmos, y nalmente escrbe-losencodigo.1Ejercicio1:Emisionesdecarbono(17%)Eshoradeconocercualesnuestrahuelladecarbono.Estosereerealacantidaddecarbonoque,pornuestrasactividadesdiarias,agregamosanuestraatmosfera.Para esto, debes escribir un programa que le pregunte al usuario una serie de datos y, con esa informacion,vayacalculandolacantidaddekilosdecarbonoqueelusuariogeneramensualmente.AcontinuacionestanlaspreguntasquedebeshacerlealusuarioycomoesosdatosdebesconsiderarlosenelcalculodecantidaddeemisiondeCO2:Cantidaddepersonasquevivenensuhogar.Cantidadtotal dekWhdeelectricidadqueseconsumeensuhogarmensualmente. PorcadakWhconsumidomensualmenteporpersonadelhogar,seemiten0.432kgdeCO2.Cantidadtotal demetros c ubicos degas queseconsumeensuhogar mensualmente. Por cadam3consumidomesualmenteporpersonadelhogar,seemiten1.631kgdeCO2.Que movilizacion utiliza a diario. Las opciones son auto, micro, metro y bicicleta. Puedes suponer queelusuarioutilizasolounodeestosmedios.Si el usuario se moviliza en auto, debes preguntar la cantidad de litros de combustible que gasta su autoalasemana, yquetipodecombustibleusa(diesel ogasolina). Porcadalitrodegasolinasemanal,seemiten9.739kgdeCO2mensuales. Porcadalitrodediesel semanal, seemiten11.55kgdeCO2mensuales.Sielusuariosemovilizaenmicro,debesaveriguarlacantidaddeviajessemanalesquerealizaenesemediodetransporteyladistanciapromedio(enkm)decadaunodeesosviajes.LaemisiondeCO2porestemediodetransporteseramensualmentede0.115kgporcadakmdecadaviajesemanal.Sielusuariosemovilizaenmetro,suaporteserasimplementede0.926kgdeCO2mensualporcadaviajesemanalquerealice(porlotanto,debespreguntarlesolamentelacantidaddeviajesquerealizaenunasemana).Sielusuariosemovilizaenbicicleta...adivina...nadadeCO2!Eselmediomaslimpio,sustentableysaludabledelocomocion;)Finalmente, debes mostrarle al usuario, seg unlas respuestaque entrego, cuantos kgde CO2emitemensualmente.Enpromedio,unapersonaemitealrededorde2.3toneladasdeCO2ala no(s,toneladas),ocaso 200 kilos de CO2 mensual.Sabas que unarbol, entodasulargavida,podra absorverenpromediosolo 1 tonelada de CO2? No es tan facil limpiar nuestra huella de carbono, pero al menos hay varios consejosquepuedesseguirparaemitirvarioskilosmenos. Investigaporah... (perodespuesdel examen... tefaltan5ejerciciosa un!).2Ejercicio2:Porquesiempresepuedemejorar(16%)UnamigotuyosepusoaprogramarunjuegodeDamasenPython(niideaporque...).Yhayuntrozodecodigoquelevisteporahqueloquehaceescontarlacantidaddechasquehayeneltablero.Eltienerepresentado el tablero como una lista de listas de n umeros (una lista de 8 listas de 8 n umeros cada una), enqueun0signicaunespaciovaco,un1esunachadeljugador1yun2sonlasdeljugador2.Cadalistacorrespondeaunala.Comotuamigoquerahacerunprogramaeciente,sediocuentaquenotenaparaquerevisartoooooodosloscuadros,pueslaschasenlasDamassolopuedenirenlamitaddeloscuadros.Asqueprogramoelsiguientetrozodecodigo:i = 0par = Truefichas = 0while i < len(tablero ):if par:if tablero[i][0] == 1 or tablero[i][0] == 2:fichas += 1if tablero[i][2] == 1 or tablero[i][2] == 2:fichas += 1if tablero[i][4] == 1 or tablero[i][4] == 2:fichas += 1if tablero[i][6] == 1 or tablero[i][6] == 2:fichas += 1else:if tablero[i][1] == 1 or tablero[i][1] == 2:fichas += 1if tablero[i][3] == 1 or tablero[i][3] == 2:fichas += 1if tablero[i][5] == 1 or tablero[i][5] == 2:fichas += 1if tablero[i][7] == 1 or tablero[i][7] == 2:fichas += 1if par:par = Falseelse:par = Truei += 1print("Hay", fichas , "fichas")Estecodigoestacorrecto,notienening unproblema.Peroestanlargoycarreteroparasuspreguntas...noesunmuybuenprograma.Tumisionesescribirunprogramaquehagaexactamentelomismo,quesigabuscandolaschassoloenloscuadrosendondepodrahaberunacha(ndices0, 2, 4y6paralaslasde ndicepar, ndices1,3,5y7paralaslasdede ndiceimpar),pero:puedesusarmaximounasolainstruccionify3instruccionesdeloop(whileofor).Challengeaccepted?3Ejercicio3:Montculosdelterreno(17%)En la librera del examen (libexamen.py) hay una funcion llamadageneraterreno, que recibe un altoyunancho, ytegeneraunalistadealtolistasdeanchon umeroscadauna; todosestosn umerossonaleatorios. Esta matriz representa a un terreno dividido en una grilla, en donde cada n umero de la matrizindicalacantidaddemetrosdeelevaciondelterrenoendichopunto.Dado esto, tu mision es escribir un programa que obtenga una matriz generada por esta funcion y mues-tre en pantalla todos los pares de ndices (la, columna) de este terreno que corresponda a un maximolocal.Osea,unpuntoqueesestrictamentemayoralos8puntosquelorodean.Tu programa debe mostrar los pares de ndices en donde se encuentran estos maximos locales y, ademas,unmensajeindicandolacantidaddemaximoslocalesencontrados.Aqu puedes ver un ejemplo de las listas de listas que genera la funciongeneraterreno con parametros(5,5)(elresultadoseradiferentecadavez,puesesaleatorio)yelresultadoesperadoparaestecaso.5 5 6 2 5 3 75 9 9 1 7 9 65 9 1 3 6 8 65 3 7 1 3 2 74 1 1 9 6 6 3Maximo local en fila 1 , columna 5Maximo local en fila 4 , columna 3Se encontraron 2 maximos locales4Ejercicio4:Eligiendounrobotparalamisionespacial(16%)Enel DCC(DepartamentodeCienciadel Cosmos) vanalanzar unamisionespacial al cinturondeasteroidesdenuestrosistemasolar, yparaesoquierenreclutaraalg unrobotquepuedaayudaracumplirconsusobjetivos. El DCCtieneunalistadevariosrobotscontresdatosdecadauno: sunombre(todoslosnombressonuna unicapalabra),unindicadornumericoenterodeinteligenciayunindicadornumericoenterodeduraciondebatera.Parapoderseleccionarmasfacilmenteal robotquerealizaraesteviajeespacial necesitanordenarlosrobotscandidatosseg unloimportantequesonciertoscriteriosparaellos.ElprincipalfactorparaelDCCesqueseaunrobotinteligente, porloqueunrobotmasinteligentequeotrodebeestarmasarribaenlalista. Entredosrobotsquesonigual deinteligentes, haraladiferencialaautonomaocantidaddebateraquetiene. Ysi dosrobotstienenlamismacantidaddeinteligenciaybatera, entoncestienenquequedarordenadosalfabeticamenteseg unsunombre.Porejemplo,aqutienesunapeque nalistayaordenadaseg unestoscriterios(encadalneasemuestraelnombre,lainteligenciaylabatera,separadasporunespacio):Optimus 11 13C3PO 10 9Herb 10 6Megaman 10 6Wall -e 9 12En libexamen.py tienes una funcion llamada cargarobots, que no recibe parametros y te entrega comoresultado una lista desordenada de objetos de una clase Robot (tambien presente en este modulo). Un objetode la claseRobot tendra 3 atributos (autoexplicativos con su nombre...):nombre,inteligencia ybateria.Tuaporte aestamisionseraobtener este listadoinicialmente desordenadoymostrarloenpantallacompletamenteordenadoseg unloscriteriosdescritos(primerointeligencia,luegobaterayluegonombre).BonusEjercicio4(8%adicional)En realidad, la funcioncargarobots tiene escrita la lista de robots directamente en el codigo... pero enel DCCtienentodosestosdatosenunarchivollamadorobots.txt(quepuedesdescargartambiendesdeelsitiodelcurso,seccionExamen),quelovanactualizandoconcualquiernuevapostulacion.Porello,parael DCCseramuchomas util que, enlugardeusarlafuncioncargarobots, carguest udirectamentelosdatosdesdeestearchivo. Lamaneraenlaqueestanguardadoslosdatosenestearchivoesunalneaporcadarobot,enqueencadalneaaparecesunombre,suinteligenciaysubatera,separadosporunespacio(y,naturalmente,unsaltodelneaalnaldecadalnea...).5Ejercicio5:Primoonoprimo?(17%)Elenunciadomascortodelexamen:escribeunprogramaquelepregunteunn umeroalusuarioyluegolerespondasiesteesonoesprimo(unn umeroesprimosiesdivisibleenformaexactasoloporsmismoyporel1).Perohayunapeque narestriccion:tienesprohibidoelusodecualquierloop(palabraswhileyforvetadas!).S,lose,necesitasrepetirciertasoperacionesparalograresteobjetivo...perolosloopsnosonla unicamaneraderepetiroperacionestampoco,os?Ejercicio6:Torredecontrol(17%)EnelaeropuertodeLlanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch,Gales(s,esaciudadsexiste...)quierenhacerunasimulaciondecomofuncionarasutorredecontrolconunaciertalogicaparacoordinar los aterrizajes de sus aviones. Para ello, te piden que simules el funcionamiento de estos aterrizajesenunperiodode24horas,seg unlassiguientescaractersticasqueteexplican:Encadaminutoquepasa,hayunaprobabilidadde8 %dequellegueunavionquequieraaterrizar.Un avion que llega tendra, aleatoriamente, una cantidad de pasajeros de entre 100 y 400, y una cantidaddecombustibledisponibledeentre5.000y10.000litros.Haysolounapistadeaterrizaje,quepuedeusarsolounavionalavez.Cuandollegaunavion, si lapistadeaterrizajeestalibre, procedeaaterrizar, perosi estaocupada,tendraqueesperarsobrevolandoelaeropuerto.Cadaminutoqueunavionesperaporlapista,gasta25litrosdecombustiblemas0.05litrosporcadapasajeroquetengaabordo.Encadaminutoquepasa, si lapistadeaterrizajesedesocupa, seleautorizaraaaterrizaral avionquelequedelamenorcantidaddecombustible(hayqueirsealasegura...). El restodelosavionestendraqueseguiresperando.Unavezqueunavioncomienzasuaterrizaje, ocuparalapistadurante8minutosmas0.05minutosadicionalesporcadaminutoquetuvoqueestaresperandoporaterrizar(dicenqueesporqueelpilotoquedachatodelaesperayseponemaslentoparaaterrizarelavion...).Enelaeropuertonecesitanquetusimulacionentregueuninformeconlacantidaddeaterrizajesrealiza-doseneltiemposimuladoyelpromediodeesperadelosavionesquealcanzaronaatterizar.Hay un requisito especial que nos pone el aeropuerto: necesita que el programa lo hagas con una (o mas)clase(s)quemodelensusituacion(considerandoquelosobjetostienendatosymetodos),yestoseraparteimportantecuandoeval uentuaporteasuaeropuerto.6