You are on page 1of 110
Argentina Programa - 2 - JAVASCRIPT Capitulo 2: Programacién Imperativa éYa estas para salir del tablero? ;Acompafanos a aprender més sobre programacién imperativa y estructuras de datos de la mano del lenguaje JavaScript! Lecciones 1. Funciones y tipos de datos L.Introduccién a JavaScript 2.Funciones, declaracién 3. Funciones, uso 4,Probando funciones 5, Haciendo cuentas 6.Poniendo topes 7. Libros de la buena memoria 8.Booleanos 9. Palabras, sélo palabras 10. Operando strings 11. jGRITAR! 12. Y quétalsi..? 13. De qué signo sos? 14, Elretorno del booleano 15. Los premios 16. Tipos de datos 17. Datos de todo tipo 2. Practica Funciones y Tipos de Datos 1. Comprando Hardware 2. gMe conviene? 3. Triangulos 4,Cuadrados 5. Esté afinado? 6.2Esta cerca? 7.Cartelitos 8. Mas Cartelitos 9.Cartelitos éptimos 10.Caraoceca 11 jEnvido! 12, Quiero retruco! 13. {Quiero vale cuatro! 3. Variables y procedimientos 1.2¥eltablero? 2. Impresién por pantalla 3. Martin Fierro 4.2Y los procedimientos? 5.2¥ el program? 6.Coerciones 7.Elcirculo de la vida 8. Plenso que asi es mas facil 9. Esto no tiene valor 10. Variables globales 11. Volviendonos ricos 12. gYesto cuanto vale? 4, Logica booleana 1. iQue el ultimo apague la luz! 2. Negar no cuesta nada 3. Los peripatéticos 4, La verdad detras de la conjuncién 5. jJuguemos al TEG.! 6.Y ahora... :quién podra ayudarnos? 7. iBuen dial 8 La verdad es que no hay una verdad 10. Precedencia 11. Unejercicio: 12. Puedo subir? precedentes 5. Listas 1 Series favoritas 2.Yesto, es una lista 3. Juegos de azar 4 Listas vacias 5. Diferente, pero no tanto. Sila compards con su equivalente Gobstones... ‘function dobtecmumero) { ‘return (2° mara) ) _notards que los paréntesisenel return no son necesarios,y que la Ultima linea la terminamas con 5 ‘Veamos se ve entenciendo: escribi ahora una funcion JavaScript nitae, que tome un mimero dewuelva su mitad Tenéen cuenta que el operador dedivsinenJavaSerintes J B Dame una pista! 1 function mtad(numero) { a 2 return numero / 23 3} 8 8 | 1 jMuy bien! Tu solucién pas6 todas las pruebas Perfecto, aviste que no era tan terrible? @) Sinole pusiste ; alfinal dela sentencia habras visto que funciona igual. De todas formas ponelo, ya que de esa manera evitamos posibles problemas. ‘Sempre que aprendamos un lenguaje nuevo vamos a tener que aprender una nueva sintaxls Sin embargo y por fortuna, tends los conceptos laros, noes nada del otro mundo @). ‘Aprendamos ahora a usar estas funciones. entina Programa 2_01_03 Funciones, uso 2Yesto con qué se come? Digo, chm... c6mo se usan estas funciones? Como hago para pasarles pardmetros y obtener resultados? [Bastacon poner el nombre dela funcién y entre paréntesis, sus argumentos. is igual que en Gobstones debe) ‘Y adems podemos usarlas dentro de otras funciones. Por ejemplo: fonction doble(numero) { > function stgutentepetDobte(mumere) { return eoble(nunero) + 1; ? luso mejor: Fanetion deble(nunere) { > ‘function sigutemte(nusers) { ? function sigutentepedDobte¢nunero) { beturn sigulente(doble(nunero)) ? ‘Veamos se entiende; esrb las siguientes funciones: ‘+ anterior :toma un nimeroy devuelve ase nmere menosuno + triple :dewueve el tripe deun nimero + ontericrel ripe que combinals dos unclones antertores:muftipliea aun amera por 2ylerests 2 1 function anterior(nunero) ( a 2 return nunero - 13 3} 4 5 function triple(nunero) ( 6 return numero * 33 7 8 9 function anteriorDelTriple(numero) { 30 return anterior(triple(nunero)) ; a) | {Muy bien! Tu solucién pas6 todas las pruebas (Quizés ahora estés pensando: ino tengo.un tablero, ;cémo sé simi funcién hace lo que debe? Acompafianos.. Estagula fue desrellada por Franco Bulgareli bsolos términosde fa. one's Creative Commons Compara 40 (ntipsereativecommons orglicensesfbysa/4.0/, ©Copyright 2015-2020 Mu invki(http://mumuki org OMe. entina Programa 2_01_04 Probando funciones ‘Quizés yalonotaste pero, junto al editor ahora aparece una solapa nueva: laconsola, La consola es una herramienta muy util para hacer pruebas répidas sobre lo que estas haciendo: te permite, por ejemplo, probar expresiones, funciones que vengan con JavaScript, incluso funciones que vos definas en el editor. Lapodes reconocer féciimente porque arranca con elchirimbolito & que se lama pron (httpsves wikipedia. orgwik/Prompt). Para entender mejor cémo funciona, en qué puede ayudarnos y algunos consejos sobre su uso, te recomendamos mirar este video: LaConsola® ‘Veamos si seentence, prob enlaconsolalassgulentes expresiones + rath. roundts.5) + Funcionnastariosa(1, 2, 3) (yaladeclaramos po vos ylapodés use) 1B wath. round(4.3) 8 functommisterdosa(d, 2, 3) Math. round(4.5) entina Programa 2_01_05 Haciendo cuentas ‘Ademés de los operadores matematicos +, -, / y * existen muchas otras funciones matematicas comunes, algunas de las cuales ya vienen con JavaScript y estén Iistas para ser usadas Sin embargo. la sintaxis de estas funciones matematicas es apenitas diferente de lo que veniamos haciendo hasta ahora: hay que prefijarlas con hath. . Por ejemplo, la funcién que nos sirve pararedondear un nimeroes Math. round : ‘function euantesaieAprotinadanente(precto, Anpuestes) { return Math. round(precto * inpuestos); , Probi eniaconsoalassgulentes expresiones: + rath. round(e.a) + noth. round.) + rath. naa, 7) + vath.adn(a, 7) ath. nound(4.6) 1B math.aants 7) 27 1B wathemin(ty 7) entina Programa 2_01_06 Poniendo topes ‘Hagamos un alto en nuestro camine y miremos as funciones ath.max y Hoth.win quenos pueden ahorrar mes trabajo del que parece. "Necesitamos una funcion que diga cudnta plata queda ent cuenta (que tiene un cierto saldo) siextraesun cierto monto : 1/ o1 sada os $100, of nonto 2 extracr, $28 2 B extraer(109, 36 78 //quedan $70 ($189 - $30 = $70) Pero como no queremos quedarnos en negativo,siel monto a extraer es mayoral saldo, nuestro saldo debe quedar en cero. B extraer(i02, 128) ps, quisines sacar ads plata de 1a que tenianos. {Nos quod con $0 ‘Como ves, esto es casiuna resta entre saido y aonto ,conlasalvedad de que estamos poniendo un top inferior: no puede dar menos de cero ©. En otras palabras (ipreparate!, esto te puede volar la cabeza @f) extraer devuelve el maximo entrelaresta saldo - wont y @ | vensscrosisatngn eter 1B Dame una pista! 1 function extraer(saldo, monto) a 2 return Mathemax(soldo - wort, @)s 3) ® a 1 jMuy bien! Tu solucién pas6 todas las pruebas ‘Bien hecho! Ahora anda y probalo en la consola ©) ‘Como ves lafuncién wath.nax nos sirvié para implementar un tope inferior. De forma anloga,lafuncién Math.min nos puede servir para ‘mplementar un tope superior. ‘An, ysiests pensande ‘en Gobstones podria haber hechoesto con un if" itenés razén!. Pero esta solucién es mucho ms breve ysimple ©). Libros de la buena memoria {Meamos mis operadores! Dani ama el primer dia de cada mes J, y por eso escribé esta funcién.. ‘Function esDtaFavorsto(aiapeites) { ) _ya.usa as (y la dejé ena biblioteca para quelapruebes}: +> << que nos dicen si dos valores son iguales, mayores-o-iguales, ‘Como ves, en JavaScript contamos con operadores como mayores, ete. Los vamos ausar bastante @). ‘Ahorate toca vos! Dani también dice que algulen Lecustateer cuandolacantiad de ibrosquerecuerda haber ldo es mayor 20, Por ejemplo: B lecustateen(s5) false B Logustatoor( 45) Desaralliy proba enlaconsolalafuncién lesustateen 8 Consola 1 function LegustaLeer(1ibres) ( a 2 return Libros > 20 3) s a | @ {Muy bien! Tu solucién pasé todas las pruebas {Bien hecho! ‘Capazpasé desapercibide, pero LecustaLeer devuelve true o False ,0s decir es una funcion que devuelve booleanos. Eso significa queen. JavaScript, no sélo hay nmeros sino que también... hay booleanos @). entina Programa 2_01_08 Booleanos ‘Ahora miremos alos booleanos con un poco mas de detale + Sepueden negar, mediante el operador |: thayComida ‘+ Se puede hacer la conjuncién logica entre dos booleanos (and, también conocido en espanol como y légico), mediante el operador aa hayContaa aa hayBebtaa + Se puede hacer la disyuncién logica entre dos boolean (or, tam Uunaéxpresion || otratxpresion conocido en espariol como o légico], mediante el operador || ‘Veamos se entiende; esrb lssguentesfuncones: + estatnere que tome tres nimeras ydiga sel primers mayer al segundeymenar al tercera, + estaruerapetang: que tome tres nimerosy digasiel primero es menor al segundo omayer al tercero Ejemplos: 8 caemtee( 11) B estatntre(oo, 1, 10) false H extatntre(so, 1, 10) false B estatueraoenango(1. 1, 10) 1 function estatntre(x, ys 2) 4 2 return (x > y) BE (x <2)5 3 e 4 a 5 function estaFuerabeRango(x, y, 2) { 6 return (x 2)5 7) 8 {Muy bien! Tu solucién pasé todas las pruebas ‘Bien hecho! ‘Ya fueron suficientes booleanos y cuentas por ahora, no? Exploremos algo més interesante: los string s. entina Programa 2_01_09 Palabras, sdlo palabras ‘Muchas veces queremos escribir programas que trabajen con texto E]: queremos saber cusntas palabras hay en un libro, 0 convertir ‘mindsculas a mayisculas,o saber en qué parte de un texto esté otro. Poraeste tino de problemas tenemos los strings, también llamados cadenas de caracteres: “Ahora 1a bobé tone que dormir on 12 cuna TEL Alerro nos ayuda a jugar’ + “itota miguel!" ‘Como se observa, todos los strings estan encerrados entre comillas simples o dobles. ;Da igual usar unas u otras! Pero sé consistente: por smplo, si abriste comilla doble, tenés que cerrar comilla doble. Ademas, un string puede estar formado por (casi) cualquier cardcter: letras, _nGmeros, simbolos, espacios, ete. 2 qué podemos hacer con os strings? Por ejemplo, compararios, como a cualquier otro valor: ola ‘Veamos si queda car: escrb la funcién esFindeSenana que tome un string que represente el nombre de un dla de semana. y nos ga si es 1 esFanoesenana(saba00") BesFinoesenana("nartes) false B Dame una pista! Para saber siun dia es fin de semana ese diatene que ser "sabado™ ose da tiene que ser “dowingo” .Recorda que elo légico" opera bbooleanos,no strings. 66) 1 Consola 2 function esFinbesenana(dia) { a 2 return (dia == “sabado*) || (dia == “dontngo" 3) . © jMuy bien! Tu solucién pas6 todas las pruebas Estaguia fu desarollada por Franco Bulgareli bzjolostérmingsdela Licsnc2¢ (bttosJereativecommons.xglicensestbysa/40A, ©Copyright 2015-2020 &yMuinukithttp:/mumukiorg) entina Programa 2_01_1 Operando strings 2 qué podemas hacer con los strings, ademés de compararios?jVarlas casas! Por ejemplo, podemnos preguntarles cusles su cantidad de letras: B longitua("bibliotecs") . 2 dongstad("sbel") (© también podemos concatenartos,es decir, obtener uno nuevo que junta dos strings: ‘© podemos preguntarles siuno comienza con otro: 1 contenzacen("una pagina", “una”) 1B contenzacen("12 bibiieteca", “toces 10s *4egos") ‘Veamos s queda claro: escrib una funclén 1ongitulonbreCorpeto que tome un nombre yun apelid,y devuelva su longitud ttal, cantando un ‘espacio entra para separara ambos: 1B loagstuddonbreCorpleto(*Cosne", “Fulanttot) » 1 Function LongitudNoabreconpleto(nonbre, apellido) { a return Longitud(nonbre) + 1 + longitud(apellido); 2 3) 4 1 {Muy bien! Tu solucién pasé todas las pruebas Estagula fue dessrollada por Franco Bulgarll bajo los términos de ccnsisCreative Connon Compartir lava AG (ptipsereativecommons orgliensesfbysa/40/, ©Copyright 2015-2020 Mu invki(http://mumuki org (Oe. entina Programa 2_01_11 iGRITAR! ‘Una conocida banda, para agregar gritos varios a su cancién, nos pidié que desarrollemos una funcién gritar, que tome un string y lo dewuelva en maydsculas y entre signos de exclamacion., Por ejemplo: B gritar(*aiguel") Touet* B gritar(*beniter) Escriblafuncion grstar Te éjamos para queuseslafuncion convertirtsMayusculs, que, ehm.. bueno. bisicamente converte en mayuscuas un ‘string ©. Dame una pista! Tend en cuenta que los signos de admiracién |" y "I~ (al igual que los espacios y otros signos de puntuaclén) son strings y que los strings se pueden concatenar usando el eperador + Por ejemplo: 1 function gritar(palabra) { a Paes eT Get ceoscutscnin) + 3) a 4 5 3 {Muy bien! Tu solucién pasé todas las pruebas entina Pro; 7a 0) a 2 éY qué tal si...? \Ningunaintroduccin al lenguaje JavaScript estarla completa sin mostrar al menos una estructura de control que ya conocemos: la alternativa condicional. Veamos un ejemplo: ‘yequivatente 9 yath.abs ‘function valorabastutaundanera) { S (urmunere >= 8) { deise { : > ) ‘Veamos sseentiende escrbuna funcién xine, que funcone come rath. ax (ino vale usara]y dewuela el maximo entre dos nimeros. or femplo, el mismo entre 5 es 5,yel mixima entre 104,26 10. 1 Function maximo(nunerol, nunero2) { a if (nunerot > nunero2) { return nunerod 5 J else ( return numero2s ® } > 3 {Muy bien! Tu solucién pas6 todas las pruebas éDe qué signo sos? "Necesitamos una funcién signe que dado un nmero nos devuelva: + -Asiel ndmeroes negativo | ewes om cant B Dame una pstal ‘Un ndimero es positive cuando es mayor a0 y negativo cuando es menor a0. Solucién | @ Biblioteca Consola 1 function signo(numero) ( a Af (numera > 8) { 5 return 2 ¥ AF (numero === 9) return @ ¥ 46 (numero < 0) return -1 Bomvausun {Muy bien! Tu solucién pasé todas las pruebas entina Programa 2_01_14 El retorno del booleano Para cerrar, ahora que ya vimos cOmo escribir Ia alternativa condlcfonal, es momento de un pequefo recordatorio:siusés adecuadamente las ‘expresiones booleanas, noes necesario utilizar esta estructura de control! ‘Supongamos que queremos desarrollar una funcién estayordeEdad. que nos diga sl alguion tiene 18 afios o més. Una tentacion es escribir lo siguiente: ‘Function esmyorbetdad(ecea) { Se (edad > 3) ( return trues pete { return false; Sin embargo, este 4 es totalmente innecesario, dado que la expresion edad >= 18 yaesbooleana: ‘function estayoroetaaa(esad) { , Mucho méssimple sno? © Para fmaunniimeroes delasuertes + expostvay + eemenora100.y + noesel35. crib lafnciin eeimorceLsSuerte que dado n nero dig sl cmoelalgice anterior, No le sar 3¢ B Solucién | @ Biblioteca Consola 41 function esNumerobeLasuerte (numero) ( a 2 return (numero >= 0) && (numero < 109) && (numero | 3y e 8 {Muy bien! Tu solucién pasé todas las pruebas En general, como regla practica si tenes ifs que devuelven true £0 false s, prabablemente lo estas haciencla mal SY si bien funcionard, hhabrs escrito cécigo innecesariamente complejo y/o extenso. Recordé: imenos cédigo, mas felicidad! @) Esta guia fue desarollada por Franco Bulgareli bsjolostérminosde la ins Create Commons Compartir aul 40 (pttpsereativecommons orglicensesfbysa/4.0), ©Copyright 2015-2020 &yMuinukithttp:/mumukiorg/ SOC

You might also like