153
Capítulo 1. Introducción: Aprender a programar José Francisco Quesada

Aprende a programar con Scratch

Embed Size (px)

DESCRIPTION

Iniciación a la Programación para niños de primaria

Citation preview

Captulo 1.Introduccin: Aprender aprogramar Jos Francisco Quesada Captulo 1Introducci on: Aprender aprogramarIndice1.1. Aprender a programar: tecnologa y metodologa . . . . . . 21.2. Arrancando con Scratch . . . . . . . . . . . . . . . . . . . . . 31.2.1. Scratch Online . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2. Scratch Oine . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3. El editor de Scratch. . . . . . . . . . . . . . . . . . . . . . . . 101.4. Un primer programa . . . . . . . . . . . . . . . . . . . . . . . 121.4.1. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.4.2. Bloques e instrucciones . . . . . . . . . . . . . . . . . . . . . 131.4.3. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.4.4. Arrastrar y soltar . . . . . . . . . . . . . . . . . . . . . . . . . 141.4.5. Un saludo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.4.6. Instrucciones y parametros . . . . . . . . . . . . . . . . . . . 161.5. Guardar y recuperar proyectos . . . . . . . . . . . . . . . . . 161.5.1. El men u Archivo en el Editor oine . . . . . . . . . . . . . . 171.5.2. El men u Archivo en el Editor online . . . . . . . . . . . . . . 18 2015 Jose F. QuesadaClub Scratch Iberoamericano Organizaci on de Estados Iberoamericanos (OEI)Esta obra esta bajo una Licencia Creative Commons Atribucion-NoComercial-SinDerivar1CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMAR1.1. Aprender a programar: tecnologa y metodologaLa programacion informatica es actualmente una disciplina compleja y extensa. Nor-malmente se ense na en niveles formativos intermedios como especializacion profesional,o en titulaciones universitarias. As que la pregunta basica e inicial que nos tenemosque plantear es:Para que aprender a programar?O dicho de otra forma, tiene interes aprender a programar si no queremos ser expertosprogramadores?Podramos pensar en distintos argumentos que nos llevan a respuestas negativas. Perocreo que hay muchas mas razones que nos llevan a respuestas positivas.Por un lado, aprender a programar no tiene que ser lo mismo que ser un experto progra-mador. Podemos tener conocimientos de historia sin ser historiadores profesionales. Ytenemos conocimientos mas o menos basicos o avanzados de matematicas sin dedicar-los profesionalmente a las matematicas. As pues, aparece el argumento que podramosdenominar de cultura general. Esta claro que la informatica, en el sentido amplio detecnologas de la informacion y las comunicaciones, se ha introducido totalmente ennuestro da a da. Y el ritmo de incorporacion es cada vez mas pronunciado.En muchos pases existe ademas un claro decit de vocaciones cientco-tecnicas. Me-dianteladifusiondeestetipodecontenidossepretendefavorecerunavisionmascercana de areas relacionadas con la ingeniera y la ciencia.Es importante tambien resaltar que en los ultimos a nos esta cobrando gran relevancia laintroduccion del aprendizaje de la programacion desde edades tempranas, y han surgidoiniciativasdegranimpactointernacional as comom ultiplesproyectosendistintospases tanto a nivel p ublico como privado.El objetivo principal de este curso es por tanto iniciar la familiarizacion con un cam-po como es la programacion informatica. Ahora bien, no nos interesa la tecnologa ens misma. Es importante conseguir destrezas y conocimientos, habilidades y competen-cias para utilizar sistemas informaticos, y en particular para conocer un lenguaje deprogramacion y utilizarlo de forma adecuada. Pero la clave esta en utilizar dicha tec-nologa en el contexto de una metodologa coherente. En este sentido, la metodologaque inspira este curso es el pensamiento computacional. A lo largo del mismo iremosintroduciendo algunas nociones clave relativas a este ambito.El planteamiento de este curso es eminentemente practico, as que iremos introduciendolos conceptos y estrategias a la vez que vamos aprendiendo a usar la tecnologa que nosservira de apoyo.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 2CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMAR1.2. Arrancando con ScratchVamos a comenzar usando el entornoScratch para aprender a programar. Seg un lapropia descripcion de este sistema que ofrecen sus creadores:Con Scratch puedes programar tus propias historias interactivas, juegos yanimaciones y compartir tus creaciones con otros en la comunidad enlnea.Scratchayudaalosjovenesaaprenderapensarcreativamente, razonarsistematicamente, ytrabajarcolaborativamentehabilidadesesencialespara la vida en el siglo XXI.Scratch es un proyecto del Grupo Lifelong Kindergarten del Laboratorio deMedios del MIT. Se ofrece de forma gratuita.La siguiente cita que se encuentra en la pagina web del proyecto Scratch es especial-mente importante ya que conecta con los objetivos de este curso:La habilidad para programar computadores es una parte impor-tante del alfabetismo en la sociedad actual. Cuando las personasaprendenaprogramarenScratch, aprendenestrategiasimpor-tantes pararesolverproblemas, dise narproyectos ycomunicarideas.Scratch es un lenguaje de programacion y una comunidad en lnea, donde puedes creartus propias historias interactivas, juegos y animaciones, y compartir tus creaciones contodoel mundo. Al dise naryprogramarproyectosdeScratch, seaprendeapensarcreativamente, razonar sistematicamente y trabajar colaborativamente.Scratch se puede usar tanto online, es decir, con un navegador web directamente, o biencon un programa instalado en tu propio ordenador. Los dos entornos de trabajo sonfuncionalmente identicos. La diferencia clave es que para usar el sistema online deberastener en todo momento conexion a internet, ya que todo lo estaras ejecutando en losservidores del proyecto Scratch.A continuacion explicaremos como usar ambos entornos.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 3CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMAR1.2.1. Scratch OnlinePara acceder al entorno de trabajo de Scratch debes conectarte a la siguiente direccion:scratch.mit.eduEn la gura 1.1 aparece la imagen principal. De momento observa que en la esquinasuperior derecha aparecen dos etiquetas que te permiten:Unete a Scratch: crear una nueva cuenta si eres nuevo y a un no formas partedel club Scratch.Ingresar: entrar en el entorno con tu identicacion si ya tienes una cuenta.Figura 1.1: Pagina web de ScratchUnete a ScratchEmpezaremos explicando que debes hacer para crear una cuenta. Si pulsas sobre laetiquetaUnete a Scratch se te abrira una ventana como la indicada en la gura 1.2.Ahora debes elegir un nombre de usuario y la contrase na que usaras para identicarte.Figura 1.2: Creando una cuenta en Scratch - Etapa 1Ten en cuenta que el sistema no te dejara elegir un nombre de usuario que ya tengaotra persona. Una vez elegido, pasaras a la siguiente ventana en la que te pide algunosJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 4CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARdatos de identicacion y que utilizan los investigadores de Scratch para conocer el perlde las personas que lo usan: Figura 1.3.Figura 1.3: Creando una cuenta en Scratch - Etapa 2A continuacion debes indicar una cuenta de correo electronico a la que quedara vin-culado tu usuario en Scratch (gura 1.4). Por ultimo, se te mostrara un mensaje enel quesetedalabienvenida, yademasseteenviaraunmensajealadirecciondecorreo electronico que has indicado (gura 1.5). Este mensaje es muy importante, yaque aunque hayas creado la cuenta, debes conrmar ese mensaje si quieres compartirtus proyectos.Figura 1.4: Creando una cuenta en Scratch - Etapa 3Figura 1.5: Creando una cuenta en Scratch - FinalJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 5CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARDe hecho, tras haber creado la cuenta, el sistema te habra introducido en tu cuenta.Para comprobarlo observa que en la esquina superior derecha, donde antes apareca eltextoUneteaScratch ahora aparece tu nombre de usuario. Pero podras observarque aparece un mensaje que indica:Conrm your email to enable sharingEsdecir, teindicaquedebesconrmartuemail parapermitirlacomparticiondeproyectos. En el mensaje que has debido recibir en la cuenta que indicaste, observarasque aparece un texto que indica:... Please conrm your email address by clicking the buttom below:En funcion del tipo de entorno de lectura de correo que tengas lo veras de una formau otra, pero en cualquier caso si pulsas sobre dicho enlace el proceso de creacion de tucuenta habra nalizado.Una nota importante. Aunque de momento han aparecido algunos mensajes en ingles,en cuanto entremos en nuestra cuenta podremos congurar Scratch para trabajar encastellano.Bien, una vez creada la cuenta y conrmada la direccion de correo, veras que en laesquina superior derecha aparece tu nombre de usuario como habamos indicado. Sipulsas sobre dicho nombre te aparecera una lista de opciones tal y como se muestra enla gura 1.6.Figura 1.6: Men u asociado al nombre de usuarioLa opcion Perl te permite editar algunos datos sobre t, para presentarte a la co-munidad de usuarios de Scratch. En el bloque Mis cosas podras ver organizados losproyectos en los que estas trabajando (veremos su funcionamiento al nal de este captu-lo). La opcion Conguracion de la cuenta te permitira modicar los valores creadosal crear la cuenta, tales como el pas, la contrase na o el correo electronico. Finalmente,la opcion Salir te permite cerrar la sesion de trabajo.De momento, usaremos esta ultima opcion Salir para terminar esta primera actividad.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 6CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARIngresarSi ya tienes una cuenta y quieres trabajar en Scratch (version online), debes pulsar elboton Ingresar que se encuentra en la esquina superior derecha de la pagina principal.A continuacion se abrira una peque na ventana (gura 1.7) que te pide el nombre deusuario y la contrase na asociada, y con eso ya estaras listo para empezar a trabajar.Figura 1.7: IngresarUna vez que has ingresado, te aparecera una ventana similar a la gura 1.8Figura 1.8: Accediendo al entorno onlineObserva las opciones que aparecen en la barra superior: tras el logo de Scratch aparecenlas opciones Crear, Explorar, Comentar y Ayuda.Pulsa sobre la opcion Crear. Ya estas en el editor online de Scratch. Y ya estamoslistos para comenzar a programar: gura 1.9.De este editor, de momento observa que en la barra superior de opciones, aparece ellogo de Scratch, a continuacion una especie de esfera terrestre, a la que le siguen lasopciones Archivo, Editar, etc. Si pulsas sobre el icono con la esfera puedes seleccionarel idioma con el que quieres trabajar: gura 1.10.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 7CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARFigura 1.9: Editor online de ScratchFigura 1.10: Seleccionando el idioma de trabajo1.2.2. Scratch OineComo hemos indicado mas arriba, para trabajar en este curso puedes utilizar tanto elentorno online, tal y como se ha descrito en la seccion anterior, o en entorno oine.Ambos son funcionalmente equivalentes. Te sera util este segundo entorno si tienes quetrabajar sin conexion a Internet en alg un momento. A continuacion te explicamos comodebes hacer la instalacion.Para poder utilizar el entorno oine de Scratch, debes descargarlo en primer lugar dela siguiente direccion:scratch.mit.edu/scratch2download/Al acceder a dicha pagina te aparecera la gura 1.11.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 8CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARFigura 1.11: Pagina web con la distribucion del Editor Oine de Scratch 2Debes tener en cuenta que para poder utilizar el editor, necesitas tener instalado entu ordenador el software Adobe AIR, que es lo que se te indica como paso 1. Debesdescargarlopulsandosobreel enlaceadecuadoseg untusistemaoperativo. Enfun-cion tambien del sistema operativo debes seguir las instrucciones correspondienes deinstalacion.Una vez instalado Adobe AIR, el segundo paso consiste en la propia instalacion deleditor oine de Scratch. Es lo que aparece como paso 2 en la pagina anterior. De nuevotienes que descargar el sistema seg un el tipo de sistema operativo que estes usando.Una vez descargado, la instalacion es muy sencilla. El tercer apartado de esta paginate permite descargar alg un material de aprendizaje extra. De momento no lo vamos ausar.Como resultado se te abra instalado una aplicacion en tu ordenador. Cuando la arran-ques te aparecera un entorno como el que aparece en la gura 1.12. Observa que real-mente es identico al editor online que vimos en la gura 1.10. Incluso los men us soniguales, y dispones tambien del icono con una especie de esfera terrestre donde puedeselegir el idioma en el que trabajaras.Amboseditoressonpracticamenteidenticos. Veremosquehaypeque nasvariacionesentre uno y otro que afectan sobre todo al hecho de que uno se esta usando localmenteen nuestro ordenador y el otro se esta ejecutando en la web.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 9CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARFigura 1.12: Editor Oine de Scratch 21.3. El editor de ScratchEste editor, bien en su version online u oine, constituira nuestra herramienta inicialde trabajo, as que es importante que nos familiaricemos con el.El entorno esta formado por una serie de areas principales, tal y como se muestra enla gura 1.13. Aunque iremos analizando de forma progresiva la funcionalidad de cadauna de estas areas, es importante saber que contiene cada una de ellas:La zona de Men us contiene distintos bloques de opciones. En particular seranmuy importantes el men u Archivo y Editar.El area Escenario es donde se ejecuta el programa que construyamos. La losofade Scratch se basa en la creacion de uno o mas objetos que ejecutaran las ordenesque se le indiquen. Esos objetos se muestran en el area del escenario, donde seiran desplazando, mostrando, dibujando, etc.En el area Lista de objetos tendremos un listado de todos los objetos creadosen el proyecto activo. As mismo, podemos ver que a la izquierda de esta zonaaparece un apartado correspondiente al escenario o fondo. Es decir, el escenario estambien un objeto de nuestras animaciones. Tendra una funcionalidad reducida,ya que el fondo o escenario por ejemplo no se puede mover.Las instrucciones con las que podemos programar estan organizadas en bloquesseg un su funcionalidad. El area Paleta de bloques contiene los identicativosJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 10CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARde estos grandes bloques. En Scratch 2 se diferencian 10 bloques basicos, comopor ejemplo Movimiento, Apariencia, etc.Cada uno de los bloques de instrucciones contiene una serie de comandos u opera-ciones basicas. El area Instrucciones del bloque muestra en cada momento lasinstrucciones correspondientes al bloque seleccionado en la zona de paleta de blo-ques. Puedes practicar seleccionando distintos bloques en la paleta, y observarascomo cambia el contenido del area de Instrucciones del bloque.ElArea de programas es la zona en la que iremos creando nuestro programa.Inicialmente esta vaca. Tambien es importante resaltar que cada vez que pulsemossobre el icono de un objeto en la zona Lista de objetos cambiara el contenidodel area de programas. Esto es importante porque nos sirve para indicar que cadaobjeto tendra denidos sus propios programas.Figura 1.13:Areas principales del editor de ScratchJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 11CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMAR1.4. Un primer programaHa llegado el momento de crear nuestro primer programa.1.4.1. ObjetosTal y como hemos visto, un programa en Scratch estara formado en primer lugar porobjetos. CadavezquearrancamosScratch, noscrearaunproyectovaco, peroquecontendra un objeto. El objeto inicial con el que se arranca es el famoso gato o mascotade Scratch. Podemos ver que el objeto aparece dibujado en el centro del escenario, yademas se encuentra en la zona de la lista de objetos, con un icono mas peque no. Deentrada el nombre de este objeto es Sprite1. Sprite es el termino en ingles utilizadopor el equipo de Scratch para nombrar un objeto. Nosotros utilizaremos los terminosobjeto o personaje con este n.En la gura 1.14 hemos resaltado como aparece el icono del objeto inicial (Sprite1) enel area de la lista de objetos.Figura 1.14: El objeto inicial: Sprite1Es importante observar el simbolito con una letra i en blanco sobre un crculo azulsituado en la esquina superior derecha del icono del objeto. Si pulsas sobre esa letraaparecera un men u con toda la Informacion del objeto (gura 1.15).Figura 1.15: Ficha de informacion de un objetoEn esta cha o men u informativo del objeto podemos ver la siguiente informacion:Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 12CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARNombre del objeto: Aparece un area de texto, inicialmente con el descriptor Spri-te1. Pero ah podemos escribir y asignarle al objeto el nombre que nos interese.Esto es importante ya que posteriormente podremos hacer referencia a los objetospor su nombre.Coordenadas y direccion: En este apartado se nos indican las coordenadas delobjeto en los ejes x e y del escenario, as como la direccion a la que apunta. Sino has modicado nada, las coordenadas deben ser 0 en los dos ejes, y debe estarmirando hacia la derecha (90 grados). En el siguiente captulo veremos como seorganiza el escenario para entender este sistema de coordenadas y posiciones.Estilo de rotacion: veras que aparecen tres posibilidades. La primera (activa) conuna especie de rueta, la segunda con una lnea con doble echa, y la tercera conun punto.A continuacion aparecen dos selectores, es decir, opciones que podemos activaro desactivar. Observa por ejemplo como el selector mostrar tiene un impactoinmediato ya que si eliminas la seleccion el objeto desaparece del escenario. Demomento, nos interesara que el objeto se muestre.Puedes cerrar este men u informativo del objeto pulsando sobre el icono con una especiede echa sobre un crculo azul situado en la parte superior izquierda del dibujo delobjeto.1.4.2. Bloques e instruccionesHemos visto que en la paleta de bloques aparecen 10 etiquetas asociadas a distintosbloques o grupos de instrucciones. Cada paleta lleva asociado un color, que nos permiteademas clasicar las instrucciones seg un el bloque al que pertenece: gura 1.16.Figura 1.16: Paleta de bloquesPuedes observar que si pulsas en cada una de estas etiquetas cambia el contenido delarea de instrucciones. Y ademas que todas las instrucciones de un mismo bloque utilizanel mismo color identicativo.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 13CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARVamos a crear a continuacion un sencillo programa utilizando instrucciones de variosbloques. De momento no es importante entender y conocer todas las instrucciones detodos los bloques. Lo hiremos haciendo de forma progresiva.1.4.3. EventosUn concepto muy importante es el de evento. Un evento es un suceso o fenomeno que elsistema es capaz de detectar o incluso de provocar. Cuando construyamos un proyecto,cada uno de sus componentes (script o guion) debera comenzar por la deteccion de unevento. De esta forma, los eventos act uan como disparadores de los procesos.Pulsa sobre la etiqueta Eventos de la Paleta de bloques. Veras que cambia el con-tenido del area de instrucciones.Uno de los eventos que mas usaremos es el denominado Al pulsarlabanderaverde.Observa el escenario (el area grande de fondo blanco situada en la esquina superiorizquierda del editor). Justo encima del escenario, a la derecha, aparece un icono conuna bandera verde y otro con una octogono rojo.Figura 1.17: Evento: Al pulsar la bandera verdeLa convencion que se usara en Scratch es que utilizaremos la bandera verde para arran-car nuestros programas. Por tanto, cuando nosotros pulsemos la bandera verde sobreel escenarioseproduciraunevento(lapropiapulsacion), quelosprogramasdetec-taran mediante la instruccion Al pulsar la bandera verde. Por tanto esta instruccion seutilizara para indicar los puntos de inicio de un programa.Por otro lado, al pulsar el octogono rojo (que recuerda la se nal de Stop) estaremosforzando la interrupcion inmediata de todo lo que se este ejecutando.1.4.4. Arrastrar y soltarPara crear un programa, debemos ir construyendo bloques o secuencias de instruccionesenel areadeprogramas. Paraello, tenemosqueseleccionarlainstruccionquenosintereseenlazonadeinstrucciones, unavezquelahemosseleccionandoclickandosobre ella con el raton, sin soltarla la desplazamos al area de programas. Veremos quese desplaza una copia de la instruccion. La movemos con el raton hasta la zona que nosinterese y la soltamos dejando de pulsar el raton.De esta forma, podemos comenzar construyendo un primer programa, seleccionando lainstruccion Al pulsarla bandera verde de la paleta Eventos y soltandola en la zona deprogramasJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 14CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARFigura 1.18: Arrastrando una instruccion a la zona de programas1.4.5. Un saludoSeleccionemos a continuacion la paleta Apariencia. Veremos que se activan una seriede instrucciones de color morado en la zona de instrucciones debajo de la paleta. Enconcreto, la primera instruccion de esta paleta es DeciralgoporNsegundos (gura1.19).Figura 1.19: Apariencia: Decir algo por N segundosA continuacion, arrastre esta instruccion al bloque de programas. Observe que si antesde soltar la instruccion la acerca a la parte inferior de la instruccion que ya habamoscolocadopreviamente(Al pulsarlabanderaverde)apareceunafranjablancaentreambas: 1.20. Si en ese momento sueltas el raton, ambas instrucciones quedaran pegadas.Figura 1.20: Pegando instrucciones para construir programasComo practica, sera interesante que intentes separar de nuevo las instrucciones, sim-plementepulsandosobrealgunadeellasydesplazandola. Tambienpuedeseliminardenitivamente una instruccion arrastrandola con el raton hasta el area de instruccio-nes (fuera del area de programas en cualquier caso).Unavezconstruidoesteprogramapodemosobservarcomosi pulsamoslabanderaverde, se inicia la ejecucion del programa, lo que supone que durante 2 segundos el gatonos saludara diciendo Hello! (gura 1.21).Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 15CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARFigura 1.21: Un primer saludo!1.4.6. Instrucciones y parametrosLainstruccion hacequeel objetocorrespondientedigaunmensaje. Como se ha podido observar, en este caso decir supone la aparicion de unaespecie de bocadillo similar a los que se utilizan en los comics, en el que se escribe unmensaje. Ademas, ese mensaje se muestra durante un tiempo determinado.Decimos que estainstruccion utiliza parametros para modicar su comportamiento.Es decir, podemos cambiar el valor de estos parametros y la misma funcion hara ope-raciones diferentes. Para ello, simplemente pulsa con el raton sobre la zona de fondoblanco donde aparecen los valores actuales y cambialos por valores nuevos. Por ejemplo,hagamos que el programa nos salude en castellano, durante 5 segundos:Figura 1.22: Cambiando los parametros del saludo1.5. Guardar y recuperar proyectosAunque el proyecto que acabamos de construir es especialmente simple y facil de vol-ver a programar, habitualmente querremos guardar nuestro trabajo para recuperarloJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 16CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARenfuturasocasiones, oinclusoparacompartirloenel entornodeScratchconotroscompa neros, estudiantes, etc.Para ello, Scratch nos permite guardar y recuperar los proyectos en los que estamostrabajando.Esta funcionalidad cambia un poco entre el editor online y el oine, as que la vamosa describir por separado, aunque las ideas son muy parecidas.1.5.1. El men u Archivo en el Editor oineSi estamos usando el editor oine (local a nuestro ordenador), al pulsar sobre la opcionArchivo de la barra de men us superiores nos aparecen varias opciones: Figura 1.23.Figura 1.23: Editor oine: men u ArchivoNuevo: Esta opcion nos permite crear un proyecto nuevo. Se borrara todo lo quetengamos en ese momento, y se creara un proyecto vaco desde el principio. Esdecir, un proyecto donde estara unicamente el objeto gato inicial (Sprite1), sinning un programa. El sistema nos avisara antes de borrar para que conrmemosque queremos abandonar lo que estamos haciendo.Abrir: Estaopcionnospermitecargarenel editorunproyectoyarealizadoypreviamenteguardado. Puestoqueestaopciontambieneliminatodoloquetengamos en edicion en ese momento, el sistema nos advertira si queremos borrarlopor si no lo hemos guardado.Guardar: Nospermitealmacenarennuestroordenadorel proyectoenel queestamos trabajando. Si guardamos un proyecto por primera vez, nos pedira lacarpeta donde lo queremos grabar y el nombre que le queremos dar al proyecto.Si ya lo habamos guardado previamente, esta opcion simplemente actualiza lacopia guardada con lo que en ese momento tengamos en el editor.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 17CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARGuardar como: Similar a la opcion Guardar, lo que nos permite es guardar laversion actual que tengamos en el editor como un proyecto diferente.Compartir al sitio web: Nos permite publicar en la web de Scratch el proyectoque hemos hecho para que otros usuarios lo puedan ver. El sistema nos pedira elnombre que le queremos dar al proyecto as como nuestro usuario y contrase na(los mismos que habramos creado para acceder al editor online).Buscar actualizaciones: Nos permite comprobar si nuestra version del editorno esta actualizada y a continuacion instalar la ultima version disponible.Quit: Termina la sesion de trabajo en Scratch.As pues, en este momento, podramos guardar el trabajo que hemos hecho creando elproyecto denominado por ejemplo saludo. Observe que en el sistema operativo, se guar-da un chero denominado saludo.sb2. La extension sb2 se utiliza como identicadorde los proyectos de Scratch para la version 2.Serainteresantequecomprobasesquesi salesdel editoryvuelvesaentrarpuedescargar el chero con el proyecto que has grabado usando la opcion Abrir.1.5.2. El men u Archivo en el Editor onlineObservemos que en este caso las opciones son algo diferentes. Al pulsar sobre el men u Ar-chivo aparecen las opciones que muestra la gura 1.24.Figura 1.24: Editor online: men u ArchivoLo primero que tenemos que tener en cuenta para entender este entorno es que estamostrabajando en los servidores del proyecto Scratch. En estos servidores, cada usuario quese crea cuenta tendra zona personal de trabajo. Esa zona se denomina Mis cosas.La segunda idea importante que tenemos que tener en cuenta es que todo proyectotiene un nombre. En el caso del editor oine, el nombre del proyecto es el mismo que eldel chero en el que lo hemos grabado. Pero observemos en el editor online, que justoJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 18CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARencima del escenario, y a la izquierda de la bandera verde aparece un area de texto.Posiblemente contenga un descriptor del tipo Untitled-1 (es decir, Sin ttulo, n umero1). En esa zona es donde debemos escribir el nombre de nuestro proyecto.Por ejemplo, una vez construido el programa de saludo que hemos analizado anterior-mente, podramos escribir en dicha zona directamente saludo.Veamos a continuacion las opciones del men u Archivo del editor online.Nuevo: De forma similar, nos permite crear un proyecto vaco. Eliminara todo loque tengamos en el editor, previa conrmacion, y creara un proyecto que con-tendra unicamente al gato y sin ning un programa asociado.Guardarahora: Guarda el estado actual de nuestro proyecto, y con el nombre quetenga asignado en la casilla de nombre de proyecto (situada encima del escenario)en la zona personal Mis cosas.Guardarunacopia: Crea una copia del proyecto actual. Esta copia la crea en lazona de edicion, en el nombre del proyecto le a nade automaticamente la termi-nancion copy para diferenciarlo del anterior. Esto nos permite crear rapidamenteuna copia de un proyecto, manteniendo el original, por si queremos hacer cambiosy deseamos quedarnos con la version anterior por alg un motivo.IraMisCosas: Accedemos al entorno de almacenamiento en la red donde te-nemos todos nuestros proyectos.Porejemplo, si enestemomentotenemosel proyectodesaludoquehemoscreadopreviamente, y hemos introducido el ttulo saludo en la zona de nombre de proyecto,y a continuacion seleccionamos la opcion Guardarahora, este proyecto se grabara. Noen nuestro ordenador, sino en los servidores del proyecto Scratch.A continuacion podemos pulsar sobre la opcion IraMisCosas. Si solo hemos grabadoel proyecto saludo nos aparecera algo similar a lo que muestra la gura 1.25.Enlazonadelaizquierdadeestagurapodemosverlaclasicaciondenuestrosproyectos entre compartidos y no compartidos. Los proyectos compartidos se publicanen el servidor y otras personas pueden acceder a ellos y usarlos. Los no compartidospermanecen en estado privado y solo accesibles a nosotros mismos. En el bloque centralpodemos ver la lista de proyectos que tenemos. De momento aparece un solo proyecto,denominado saludo. Las opciones clave que tenemos son:Borrar: que destruye totalmente el proyecto.Ver dentro: que abre el editor con el contenido de este proyecto.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 19CAPITULO 1. INTRODUCCION: APRENDER A PROGRAMARFigura 1.25: Editor online: Mis CosasContinuando con el men u Archivo del entorno online, las dos siguientes opciones nospermiten conectar el mundo Internet con nuestro ordenador personal:Subir de tu computadora: nos permite abrir un chero que tengamos en local(por ejemplo construido mediante el editor oine) para ser usado por el editoronline.Descargar a tu computadora: realiza la operacion contraria, es decir, grabaen nuestro ordenador local el contenido del proyecto que estamos editando.Terminamosaqu estaprimeraunidaddel curso. Esimportantesobretodoquetefamiliarices con el entorno de trabajo que vamos a empezar a usar, y que aprendasa crear, modicar proyectos, aunque de momento sean tan simples que solo permitansaludar.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 20 Captulo 2.Escenario y movimiento.Programas y algoritmos Jos Francisco Quesada Captulo 2Escenario y movimiento.Programas y algoritmos.Indice2.1. El escenario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.1.1. La posicion de un objeto . . . . . . . . . . . . . . . . . . . . . 222.1.2. Direcciones en el escenario . . . . . . . . . . . . . . . . . . . . 232.2. Movimientos relativos . . . . . . . . . . . . . . . . . . . . . . . 23Ejemplo 1: Dibujar un cuadrado - Movimientos relativos. . . . . . . 252.3. Esperar: deteniendo los objetos . . . . . . . . . . . . . . . . . 26Ejemplo 2: Dibujar un cuadrado - Movimientos relativos y esperas . 272.4. El lapiz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Ejemplo 3: Dibujar un cuadrado - Movimientos relativos, esperas ytrazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.5. Movimientos absolutos . . . . . . . . . . . . . . . . . . . . . . 30Ejemplo 4: Dibujar un cuadrado - Movimientos absolutos, esperas ytrazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.6. Deslizamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Tarea 1: Dibujar un cuadrado - Deslizamientos y trazo . . . . . . . 33 2015 Jose F. QuesadaClub Scratch Iberoamericano Organizaci on de Estados Iberoamericanos (OEI)Esta obra esta bajo una Licencia Creative Commons Atribucion-NoComercial-SinDerivar21CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.2.7. Algoritmos y programas . . . . . . . . . . . . . . . . . . . . . 332.7.1. Algoritmo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.7.2. Programas, guiones e instrucciones . . . . . . . . . . . . . . . 352.7.3. Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Tarea 2: Figuras geometricas . . . . . . . . . . . . . . . . . . . . . . 372.1. El escenarioHemos visto en el captulo anterior que los componentes basicos con los que vamos atrabajar son los objetos. Asociados con dichos objetos iremos creando distintos guiones(secuencias de instrucciones) que denen las operaciones que cada uno de los objetosrealizaran.Las instrucciones basicas con las que construimos los guiones o secuencias estan organi-zadas en bloques, y mediante la paleta podemos ir activando cada uno de esos bloques.De ellos, podemos utilizar las instrucciones concretas simplemente arrastrandolas hastael area de programas, donde vamos construyendo los guiones agrupando las instruccio-nes correspondientes.As mismo, hemos visto que las instrucciones pueden realizar operaciones, y que dichasoperaciones suelen utilizar parametros para adaptar su comportamiento a las necesida-des especcas.Tambien hemos indicado que los objetos se muestran y mueven por el escenario, unarea especialmente importante del entorno. Vamos a continuacion a estudiar con unpoco mas de detalle esta zona.Podemos considerar el escenario como una supercie (area plana con dos dimensioneso dos ejes). La gura 2.1 muestra gracamente esta estructura. Es decir, se trata deuna supercie cuyas coordenadas en el eje horizontal (X) va desde la posicion -240(izquierda) hasta la posicion 240 (derecha). Por su parte, el eje vertical (Y) va desdela posicion -180 (abajo) hasta la posicion 180 (arriba).La posicion central del escenario sera por tanto el punto (0,0).2.1.1. La posicion de un objetoAunque un objeto se muestra en la pantalla ocupando un area mas o menos grande enfuncion de la gura representada, el objeto siempre esta asociado con un punto unicoen el escenario. Ese punto es en el que se encuentra su posicion central. Es interesanterecordar que en el captulo 1, al analizar la cha de informacion de un objeto, aparecalas coordenas X e Y en las que se encuentra dicho objeto.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 22CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Figura 2.1: Escenario de Scratch2.1.2. Direcciones en el escenarioAdemas de tener una posicion, los objetos apuntan o se dirigen hacia una direccion. Lasdirecciones en el espacio bidimensional denido por el escenario se indican en la gura2.2. En los siguientes ejemplos explicaremos con mas detalle este modelo.2.2. Movimientos relativosUna vez que conocemos las caractersticas basicas del escenario en el que nos vamos amover, comencemos a estudiar algo mas en profundidad el bloque o paleta de instruc-ciones de movimiento (gura 2.3).Esta instruccion mueve tantos pasos hacia adelante como se indique en el parame-tro. Es decir, esta instruccion tiene en cuenta la posicion y direccion actual delobjeto, y simplemente lo mueve N pasos a partir de la direccion actual y siguiendola direccion a la que apunta.Podemos ver que en la plantilla de la instruccion se indica por defecto el valor 10,indicando por tanto mover 10 pasos. No obstante, el valor 10 se puede modicarJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 23CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.t60?180180-90 90

45@@@@@@@@R135

135@@@@@@@@I45eje-x -eje-y?6Figura 2.2: Direcciones en el escenarioFigura 2.3: Paleta de MovimientoJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 24CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.cuando se copia la instruccion en el area de programas para indicar el valor quenos interese.Esta instruccion modica la direccion a la que apunta el objeto, cambiando Ngrados en el sentido de las agujas del reloj. Para simplicar diremos que hacemosun giro a la derecha para este tipo de giro.De forma similar a la instruccion anterior, pero el cambio de direccion se produceen sentido contrario a las agujas del reloj. Tambien en este caso, simplicaremosla expresion diciendo que realizamos un giro a la izquierda del objeto.Es importante tener en cuenta que estas tres instrucciones provocan un cambio relativo,ya que la posicion o direccion nal del objeto dependen de la posicion y direccion quetuviese antes de aplicarse la instruccion.Ejemplo 1Dibujar un cuadrado - Movimientos relativosUtilizando las instrucciones anteriores, nos vamos a plantear un primer pro-blema: como conseguir que un objeto de Scratch se mueva por el escenariodescribiendo un cuadrado?Una primera version para realizar este problema podra conseguirse mediante movi-mientos y giros relativos.1[Proyecto: cuadrado-relativo]Esdecir, podramoshacerqueel objetosemuevainicialmenteunaseriedepasos,por ejemplo 100, a continuacion gire en el sentido de las agujas del reloj 90 grados, acontinuacion vuelva a avanzar otros 100 pasos, vuelva a girar y as lo haramos hastacompletar la gura. Tambien podemos usar el giro en el sentido contrario a las agujas1En el material complementario asociado con esta documentaci on se incluyen los proyectos desa-rrollados en el mismo. Te recomendamos como practica general que en primer lugar intentes realizart u mismo los ejercicios, y posteriormente consultes las soluciones que te proponemos. Por otro lado,ten siempre en cuenta que un mismo problema puede tener m ultiples soluciones, por lo que el hechode que tu soluci on sea diferente a la propuesta no quiere decir que sea incorrecta. Junto al enunciadodel ejemplo aparece una etiqueta con el ttulo Proyecto que indica el nombre del proyecto en Scratchque contiene la soluci on al ejemplo propuesto.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 25CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.del reloj, pero lo importante es que una vez elegido un tipo de giro debemos hacer elmismo las 4 veces.Podemos describir de forma detallada los pasos necesarios para realizar esta tarea si-guiendo el siguiente esquema:1. al pulsar la bandera verde2. mover 100 pasos3. girar 90 grados en el sentido de las agujas del reloj4. mover 100 pasos5. girar 90 grados en el sentido de las agujas del reloj6. mover 100 pasos7. girar 90 grados en el sentido de las agujas del reloj8. mover 100 pasos9. girar 90 grados en el sentido de las agujas del relojSi trasladamos este esquema a un proyecto Scratch deberamos obtener lo que se mues-tra en la gura 2.4.Figura 2.4: Cuadrado usando movimientos y giros relativosNo obstante, cuando ejecutamos este proyecto pulsando sobre la bandera verde, nos sor-prendera el hecho de que aparentemente no sucede nada. El gato se queda en el mismositio en el que se encontraba al empezar. Realmente el gato ha hecho los movimientos,pero de una forma tan rapida que no la llegamos a percibir.2.3. Esperar: deteniendo los objetosDentrodelapaletaControl, laprimerainstrucciondisponiblepermitedetenerlaejecucion de un programa.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 26CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Esta instruccion detiene la ejecucion del bloque de instrucciones en el que aparece.La parada durara tantos segundos como se indique en su parametro de congu-racion. Ten en cuenta que tambien puedes usar fracciones de segundo utilizandon umeros con decimales: por ejemplo 0.5 segundos forzara una parada de mediosegundo.Ejemplo 2Dibujar un cuadrado - Movimientos relativos y esperasModica el ejemplo anterior, de forma que el gato se detenga medio segundoen cada una de las esquinas del cuadrado por las que pasa.[Proyecto: cuadrado-relativo-con-esperas]Observa que lo que debemos hacer es introducir una instruccion de espera cada vez queel gato llega a una de las esquinas del cuadrado:1. al pulsar la bandera verde2. mover 100 pasos3. girar 90 grados en el sentido de las agujas del reloj4. esperar 0.5 segundos5. mover 100 pasos6. girar 90 grados en el sentido de las agujas del reloj7. esperar 0.5 segundos8. mover 100 pasos9. girar 90 grados en el sentido de las agujas del reloj10. esperar 0.5 segundos11. mover 100 pasos12. girar 90 grados en el sentido de las agujas del reloj13. esperar 0.5 segundosA la hora de construir el programa en Scratch, puedes observar que si arrastras unainstruccion nueva y la situas entre dos instrucciones de un guion ya creado, la instruccionautomaticamente se inserta entre las dos. El modelo nal lo podemos ver en la gura2.6.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 27CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Figura 2.5: Cuadrado relativo con esperas2.4. El lapizFijemonos en la paleta denominada Lapiz.Scratch utiliza una idea heredada del lenguaje de programacion Logo, que conceba losobjetos como una especie de tortugas que se iban moviendo tambien por un escenario.Trasladada a Scratch esta idea, debemos imaginarnos que todo objeto tiene asociado unlapiz, que estara posicionado justo en su centro (las coordenadas x e y del objeto). Ellapiz puede estar subido o bajado. Cuando el lapiz esta subido, si el objeto se desplazano sucede nada. Pero si el lapiz esta bajado, cada vez que el objeto se desplaza deja unrastro por el escenario. Es decir, el lapiz pinta una lnea conforme se desplaza.Esta instruccion hace que el lapiz se baje para empezar a dibujar.Por su parte, esta instruccion se encarga de subir el lapiz. A partir de ese momento,cuando el objeto se desplace, ya no dibujara la lnea.Ahora bien, como borrar las lneas que ya hemos dibujado? Scratch incluye estainstruccion que borra todas las lneas dibujadas sobre el escenario.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 28CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Ejemplo 3Dibujaruncuadrado- Movimientos relativos, esperas ytrazoModica el ejemplo anterior, de forma que ademas de ir deteniendose enlos vertices, el gato dibuje un trazo cuando se desplaza creando al nal laimagen de un cuadrado.[Proyecto: cuadrado-relativo-con-esperas-y-trazo]Para conseguir esta funcionalidad sera necesario bajar el lapiz antes de iniciar los mo-vimientos.Ademas, convendra subir el lapiz al nal del proceso. Es una buena practica que losguiones o programas dejen los objetos al nalizar con el lapiz subido. Y nalmente,antes de comenzar a dibujar el cuadrado sera util borrar todas las lneas del escenario.De esta forma, si volvemos a ejecutar el proyecto una segunda vez, podremos ver comose va dibujando progresivamente.Por tanto, la nueva secuencia de instrucciones quedara de esta forma:1. al pulsar la bandera verde2. borrar3. bajar lapiz4. mover 100 pasos5. girar 90 grados en el sentido de las agujas del reloj6. esperar 0.5 segundos7. mover 100 pasos8. girar 90 grados en el sentido de las agujas del reloj9. esperar 0.5 segundos10. mover 100 pasos11. girar 90 grados en el sentido de las agujas del reloj12. esperar 0.5 segundos13. mover 100 pasos14. girar 90 grados en el sentido de las agujas del reloj15. esperar 0.5 segundos16. subir lapizEl resultado de la ejecucion de este proyecto se muestra en la gura 2.7.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 29CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Figura 2.6: Cuadrado relativo con esperas y trazosFigura 2.7: Cuadrado relativo con esperas y trazos: Resultado2.5. Movimientos absolutosHemos visto y usado varias instrucciones que ejecutan un movimiento relativo del ob-jetocorrespondiente. EnlapaletaMovimientohayalgunasinstruccionesmas. EnJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 30CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.concreto, las dos siguientes instrucciones se denominan absolutas ya que la posicion(en el caso del desplazamiento) o la direccion (en el caso del giro) no dependen de laposicion o direccion iniciales sino unicamente de los valores indicados en el argumentocorrespondiente.En este caso, el objeto se desplaza a las coordenadas exactas que indiquemos paralos valores x e y.Hace que el objeto apunte exactamente a la direccion que se indique en su argu-mento.Ejemplo 4Dibujaruncuadrado-Movimientosabsolutos, esperasytrazoNos planteamos ahora la siguiente cuestion: Como podemos dibujar el mis-mo cuadrado que hemos hecho en el ultimo ejemplo, pero utilizando instruc-ciones de movimiento absoluto?[Proyecto: cuadrado-absoluto-con-esperas-y-trazo]Si consideramos que el objeto parte de la posicion inicial (0,0), y el primer lado del cua-drado es el horizontal hacia la derecha de dicha posicion, debera por tanto moverse enprimer lugar hasta la posicion 100 puntos a la derecha en el eje horizontal, y permaneceren la misma posicion vertical (0). Por tanto debera ir a la posicion (100,0).En segundo lugar debera desplazarse a la esquina o vertice inferior derecho del cua-drado. Esa posicion esta por debajo (eje vertical) de la actual. Si la posicion en el ejey es la 0 debera moverse hasta la -100. Es decir, la segunda esquina es la posicion(100,-100).A continuacion debera ir hasta la esquina inferior izquierda, lo que supone 100 posicio-nes a la izquierda de la actual, es decir a la posicion (0,-100). Y por ultimo regresaraal punto de partida (0,0).La secuencia de pasos exacta sera:Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 31CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.1. al pulsar la bandera verde2. borrar3. bajar lapiz4. ir a 100 , 05. esperar 0.5 segundos6. ir a 100 , -1007. esperar 0.5 segundos8. ir a 0 , -1009. esperar 0.5 segundos10. ir a 0 , 011. esperar 0.5 segundos12. subir lapizFigura 2.8: Cuadrado absoluto con esperas y trazos2.6. DeslizamientoRegresemos de nuevo a la paleta de Movimiento. Detengamonos un momento en lasiguiente instruccion:La instruccion deslizar hace que el objeto se desplace hasta las coordenadas xe y que se indiquen. En este sentido es identica a la instruccion ir. No obstante,mientras que la instruccion ir realiza un movimiento instantaneo, la instruccionJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 32CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.deslizar hace que el objeto se vaya moviendo poco a poco, en concreto tardandotanto tiempo (en segundos) como se indique en el primer parametro.Tarea 1Dibujar un cuadrado - Deslizamientos y trazoModica el ultimo ejemplo realizado de forma que se construya elmismocuadradoperoutilizandoinstruccionesdedeslizamiento. Observaqueyanoseranecesariodetenerel programaenlasesquinasyaqueel propiodeslizamiento nos permite ver como se va dibujando la gura.22.7. Algoritmos y programasEs el momento de introducir alguna terminologa, aclarar terminos y poner un poco deorden. Hemos venido usando con cierta imprecision terminos como instruccion, bloque,guion, programa o proyecto. Intentemos denir con mas claridad que es cada uno ycomo lo vamos a usar de aqu en adelante de una forma mas precisa.2.7.1. AlgoritmoEl terminoalgoritmoesmuyimportante. LaReal AcademiaEspa noladelalenguadene este termino como1. m. Conjunto ordenado y nito de operaciones que permite hallar lasolucion de un problema.2. m. Metodo y notacion en las distintas formas del calculo.En 1966, Donald E. Knuth, una de las personas mas importantes en la historia de lasciencias de la computacion, escriba en un artculo titulado Las ciencias de la compu-tacion y sus relaciones con las matematicas:1. Que son las ciencias de la computacion? Ya que las ciencias de lacomputacion son relativamente nuevas, debo comenzar explicando que son.Al menos, mi mujer me dice que debe explicarlo cada vez que alguien le pre-gunta que hago, y supongo que mucha gente hoy en da tiene una percepcionalgo distinta a la ma de este campo. De hecho, no habra dos informaticos2Las tareas son ejercicios de refuerzo que debes realizar para aanzar lo que est as aprendiendo.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 33CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.que den probablemente la misma denicion; lo cual no es sorprendente yaque es tan difcil como encontrar dos matematicos que den la misma de-nicion de las Matematicas. Afortunadamente, esta de moda en los ultimosa nos tener crisis de identidad, as que los informaticos estamos totalmentea la moda.Para m, la mejor forma para describir las ciencias de la computacion escomo el estudio de los algoritmos. Un algoritmo es un secuencia de reglasdenida con precision que indican como producir una informacion de salidadeterminada a partir de una informacion dada de entrada en un n umeronito de pasos. Se denomina programa a una representacion concreta de unalgoritmo, ... Quizas el descubrimiento mas importante obtenido con la apa-ricion de las ciencias de la computacion sean los algoritmos, los cuales, comoobjetos de estudio, son extraordinamiente ricos en propiedades interesantes;por otro lado, un punto de vista algortmico se convierte en una forma utilde organizacion del conocimiento en general.3Es un texto realmente interesante, ya que muestra la vision novedosa de la informaticaen esos a nos, y por otro lado, la importancia que ya tena la idea de algoritmo.Y de la misma denicion de Knuth, es importante resaltar varias ideas clave. Un algo-ritmo es una:1. Secuencia2. Ordenada3. Precisa4. Finita5. de Reglas6. que procesan datos de entrada para generar un resultado o salida.De alguna forma, el algoritmo es la idea o estrategia que se nos ocurre para resolver unproblema.Y a continuacion indica Knuth que cuando ese algoritmo se representa de una formaconcreta podemos hablar de programa.Lo que ocurre es que en la practica tambien nos interesa expresar los propios algoritmos.Enlahistoriadelainformaticahanaparecidovariasestrategiasparadescribirun3Donald E. Knuth (1966): Computer Science and its relation to Mathematics.https://www.maa.org/sites/default/files/pdf/upload library/22/Ford/DonaldKnuth.pdfJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 34CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.algoritmo: utilizandopseudocodigo(queesel enfoquequeinspiralassecuenciasdeinstrucciones que hemos usado en los ejemplos anteriores de este captulo), diagramasde ujo, etc.En general, decimos que estamos describiendo un algoritmo cuando lo estamos haciendoa un nivel independiente del lenguaje de programacion.La programacion informatica consistira en el proceso de traduccion desde un algoritmo(expresado con generalidad) hasta el lenguaje concreto. Es algo as como si tuviesemosuna idea (que ni siquiera puedo escribir porque ya estara usando un lenguaje). Y esaidea la pudieramos a continuacion expresar en castellano, chino, arabe o ingles. En esemomento estaramos en el nivel de programa, porque estamos usando las caractersticasque nos da cada lenguaje. Cada lenguaje, en este caso natural, tiene un alfabeto, unlexico, unas reglas gramaticales, etc.Algo similar ocurre con los lenguajes de programacion. Cada uno de ellos nos ofreceunas posibilidades tanto ling usticas como operativas para trabajar.En este curso nos interesara tanto descubrir algoritmos, estrategias abstractas de re-soluciondeunproblema, as comolasestrategiasespeccasparaimplementarlosoconvertirlosenprogramasconcretosenunlenguajedeprogramacion. Al igual queocurreconloslenguajesnaturales, loslenguajesdeprogramaciontambienimponenrestricciones y de esta forma hay cuestiones que es mas facil hacer en un lenguaje queen otro.Desde el punto de vista operativo es interesante trabajar de forma simultanea el estudiode los algoritmos y su programaci on. Hay manuales y cursos centrados exclusivamenteen el estudio de algoritmos (lo que se denomina algoritmia como disciplina espec-ca); y hay manuales y cursos centrados unicamente en el estudio de un lenguaje deprogramacion.Ennuestrocaso, abordamosunenfoquehbridoenel queestudiaremosproblemas,buscaremos estrategias de solucion y nos interesara ver como se programan, por ejemploen Scratch, tal y como hemos empezado a hacer. Y para poder hacerlo, evidentementenecesitaremos conocer como funciona el lenguaje de programacion concreto que estamosusando.2.7.2. Programas, guiones e instruccionesInstrucciones: comandos y parametrosSi nos centramos ya en Scratch como un lenguaje de programacion especco, hemosvisto que los elementos estructuralmente mas simple de este lenguaje son las instruc-ciones. Ejemplos de instrucciones son ir a x y, bajar el lapiz, esperar N segundos.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 35CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Las instrucciones tendran un comando u operacion (ir, bajar lapiz, esperar, ...) y algunasde ellas podran usar uno o mas parametros. Por ejemplo, la instruccion bajar el lapizno utiliza ning un parametro ya que el lapiz se baja o no, no hay nada que modicar endicha accion. Mientras que la instruccion esperar s que necesita saber cuanto tiempotiene que esperar.GuionesAlassecuenciasordenadasdeinstruccioneslasdenominaremosguiones. Unguion,siguiendo el sentido del termino, da unas pautas de comportamiento.Sera posible, e incluso habitual, que un objeto tenga mas de un guion.El termino programa se utiliza en muchas ocasiones como sinonimo de guion. De hechoen los ejemplos anteriores hemos podido hacer referencia al programa que dibuja uncuadrado con trazos, esperas y movimientos relativos.En realidad, hay un algoritmo que describe la solucion a ese problema, y la secuencia deinstrucciones se corresponde con la version en Scratch de dicho algoritmo, y por tantoes un programa.Peroseraadecuadoutilizarel terminoguionparareferirnosespeccamenteacadasecuencia o bloque de instrucciones.2.7.3. ProyectoDenominaremosproyectoal conjuntodetodoslosobjetosytodossusguionesqueconstituyen la solucion completa a un problema. Hasta ahora hemos visto proyectosformados por un solo objeto con un solo guion, pero no sera lo habitual.Lo que s sera com un en Scratch es que un proyecto se almacene en un chero.Desafortunadamente, el termino programa tambien se usa en muchas ocasiones comosinonimodeproyecto, eindicaremosquehemoshechounprogramaparahacerunvideojuego con coches de carreras. Evidentemente, estamos haciendo referencia en dichocaso a un proyecto que incluye varios objetos, cada uno de los cuales tiene a su vezm ultiples guiones.Aunque la ambig uedad existe, normalmente queda claro por el contexto a lo que nosreferimos nosotros o incluso a lo que se reeren los textos que podais leer en distintasfuentes.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 36CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Tarea 2Figuras geometricasCon el objetivo de practicar las instrucciones estudiadas en este captulo,esinteresantequeintentescrearunproyectoporcadaunadelasgurasque se muestran en la gura 2.9. Es importante que intentes practicar condistintas estrategias, usando instrucciones de movimiento absoluto, relativoo desplazamiento.Paralasgurasverasqueaparecenenrojonotasexplicativas:longitudespara los lados y los angulos de giro.Y un ultimo reto, seras capaz de conseguir todos los dibujos en el mismoproyecto de forma que apareciesen en el escenario todos a la vez, exacta-mente tal y como aparecen en la gura? Evidentemente, no se deben incluirlos textos explicativos y por otro lado, sera necesario ajustar los tama nosde las guras para que todas quepan simultaneamente en el escenario.Figura 2.9: Ejemplos de guras geometricasJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 37CAPITULO 2. ESCENARIO Y MOVIMIENTO. PROGRAMAS Y ALGORITMOS.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 38 Captulo 3.Datos Jos Francisco Quesada Captulo 3DatosIndice3.1. Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.2. Posicion y direccion. . . . . . . . . . . . . . . . . . . . . . . . 433.2.1. Monitores de las variables . . . . . . . . . . . . . . . . . . . . 433.3. Preguntas y respuestas . . . . . . . . . . . . . . . . . . . . . . 44Ejemplo 1: Saludar y preguntar el nombre. . . . . . . . . . . . . . . 463.3.1. Operadores: unir mensajes . . . . . . . . . . . . . . . . . . . . 47Ejemplo 2: Saludar, preguntar el nombre y responder educadamente 483.4. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Ejemplo 3: Media aritmetica de dos n umeros . . . . . . . . . . . . . 483.5. Creacion de variables . . . . . . . . . . . . . . . . . . . . . . . 49Tarea 1: Media aritmetica de tres n umeros . . . . . . . . . . . . . . . 55 2015 Jose F. QuesadaClub Scratch Iberoamericano Organizaci on de Estados Iberoamericanos (OEI)Esta obra esta bajo una Licencia Creative Commons Atribucion-NoComercial-SinDerivar39CAPITULO 3. DATOSEn muchas ocasiones se ha denido un programa informatico como un sistema que escapaz de recibir unos datos de entrada, manipularlos aplicando distintas operacionespara terminar generando unos datos de salida.Por ejemplo, un programa podra recibir las notas de todos los alumnos de una asig-natura y tras procesarlas devolvernos la media aritmetica. De esta forma, podramosdiferenciar tres fases en el dise no: la fase de lectura en la cual leemos los datos (es decir,el programa tiene que ir obteniendo la informacion que necesita para trabajar); la fasede proceso (en la cual el programa opera con dichos datos); y la fase de salida (en lacual el programa proporciona los resultados obtenidos).Aunque es una simplicacion, y no todos los programas operan de esta forma, ni eje-cutan secuencialmente estas tres fases, es cierto que en cierta medida, los programasnecesitan informacion que esta en el exterior a ellos mismos, que realizan determinadasoperaciones o calculos y que generan un resultado. El resultado no tiene que ser un va-lor numerico nal, como en el ejemplo de la media aritmetica. Por ejemplo, podramospensar en un programa que lee una lista de ttulos de libros y nos los devuelve ordena-dos alfabetivamente. O la salida puede ser mas compleja. Podemos pensar por ejemploenunvideojuegoenel queel sistemaestacapturandoconstantementeinformacionde entrada (por ejemplo, las pulsaciones que el jugador realiza sobre los mandos queeste usando), procesa esa informacion teniendo en cuenta la logica del juego denida(lo que constituye en parte el propio programa) y genera un resultado (que en estecaso puede consistir en visualizar fenomenos gracos: desplazamientos de personajes,cambios de escenario, etc.).Pero en practicamente todos los programas medianamente utiles lo que observamos esun patron: Un programa realiza una serie de operaciones sobre unos datos. Es decir, ne-cesitamos datos con los que operar, y necesitamos controlar como vamos a ir realizandodichas operaciones.Este captulo se centra en el primer ingrediente basico: Datos y el siguiente captuloabordara las estructuras de Control.3.1. MemoriaEvidentemente para poder operar con datos necesitamos guardarlos, almacenarlos enalg un sitio. Y ese es el principal objetivo de la memoria de un ordenador. En la memoriase almacenan tambien los propios programas, pero ese es un tema mas avanzado queno veremos aqu.As que la memoria nos servira como una especie de bloc de notas en el que poder irregistrando informacion.La memoria de un ordenador se organiza como un conjunto de casillas. No entraremosJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 40CAPITULO 3. DATOSen los detalles tecnicos de almacenamiento, representacion y gestion de memoria. Noobstante, sera importante que entendamos la memoria de un ordenador como una es-pecie de casillero, donde tenemos una serie de posiciones, casillas o celdas. Podemosimaginar una estructura similar a la representada en la gura 3.1.Figura 3.1: Celdas de memoriaEn cada una de estas casillas podremos almacenar un valor. Evidentemente, toda casillaqueda identicada por su posicion en la estructura. Por ejemplo, la gura 3.2 muestrauna secuencia de numeracion de casillas de memoria a partir de una zona.Figura 3.2: Numeracion de las celdas de memoriaNo obstante, una cosa es la direccion o posicion de una celda de memoria y algo muydistinto es su contenido. Por ejemplo, podemos suponer que estamos construyendo unprograma en el que hemos almacenado el nombre y la edad de un alumno. La gura 3.3muestra que en la posicion 1525 de memoria se encuentra almacenado el valor Davidmientras que en la posicion 1526 se encuentra almacenado el valor 14.Figura 3.3: Almacenando datos en la memoriaEl n umero de posiciones es realmente grande. Cuando hablamos de que un ordenadortiene1KB(kilobyte)dememoriaestamosindicandoquetiene1024(210)casillas.Cuando hablamos de 1 MB (megabyte) estaramos hablando de mas de un millon deJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 41CAPITULO 3. DATOSposiciones (exactamente 220, es decir, 1 MB es 1024 veces 1024). Y en este orden demagnitudes, 1 GB (gigabyte) se corresponde con 230posiciones, es decir mas de 1000millones de casillas.Por tanto, recordar donde esta un dato almacenado usando su direccion es poco practi-co. En su lugar, resultara mas comodo darle nombres a dichas casillas. Y as aparecela idea de Variable.Una variable por tanto no es mas que el nombre que le damos a una region de memoria.Cuando nosotros creamos una variable, el sistema informatico, en este caso Scratch,seencargadereservarlasposicionesnecesariasyvinculardichasposicionesconelnombre que le hemos indicado. De esta forma, cada vez que en el futuro usemos elnombre de la variable, internamente el sistema estara utilizando la posicion o posicionescorrespondientes.De hecho, al crear las variables lo que hacemos es generar una tabla que relaciona lasvariables que creamos con las posiciones correspondientes. En la gura 3.4 podemosobservar como la variable denominada nombre se ha asociado con la posicion 1525, yde forma similar la variable edad esta enlazada con la posicion 1526.Figura 3.4: Tabla de memoriaRealmente a efectos practicos podemos asumir que una variable realmente apunta a lazona de memoria correspondiente, tal y como se representa de forma resumida en lagura 3.5.Figura 3.5: Memoria: nombres de variables y contenidoResumiendo, la memoria de un ordenador esta organizada en celdas, que quedan iden-ticadas mediante su n umero o posicion en el sistema de memoria general.Una variable es una referencia creada para acceder a la memoria. La variable tiene porJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 42CAPITULO 3. DATOStanto un nombre (que sera el identicador que usaremos para hacer referencia a ella).Automaticamente queda asociada a una posicion de memoria (aunque esa operaciones transparente a nosotros como programadores), y tendra un contenido, que s quetendremos que controlar.Es evidente que las dos operaciones basicas que podemos hacer con la memoria, y portanto con una variable, seran:Leer: es decir, pedirle a la memoria que nos indique que contenido tiene exacta-mente la memoria y que nos lo devuelva.Escribir: lo que supone modicar el contenido de la memoria colocando el datoque le indiquemos en lugar del dato que tuviese.3.2. Posici on y direccionEn el captulo 2 se han explicado los conceptos de escenario y movimiento. Y en con-creto, se ha visto que todo objeto esta ubicado en el escenario en unas coordenadas(posiciones en los ejes x e y) y que esta orientado hacia una direccion concreta.Pues bien, estos datos (ubicacion y direccion) para cada objeto se almacenan en varia-bles. Estas variables las crea de forma automatica Scratch. Pero lo importante es quelas podemos usar.Comencemos por tanto observando la paleta Movimiento del editor de Scratch. Enla parte inferior de esta paleta aparecen unas construcciones nuevas (gura 3.6). Verasque cuando todas las instrucciones de una paleta no caben en la pantalla puedes des-plazarte usando la barra de desplazamiento o scroll situada a la derecha del bloque deinstrucciones.Figura 3.6: Variables de posicion y direccion en la paleta de MovimientoLasvariablessedenominanposicion-x, posicion-yydireccion. Veremosquelaspodemos utilizar en cualquier contexto donde podamos usar una variable.3.2.1. Monitores de las variablesObservalospeque noscuadraditosqueaparecenalaizquierdadel nombredeestasvariables. Si pulsas sobre el cuadradito aparecera una peque na marca en el cuadrado.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 43CAPITULO 3. DATOSPero el efecto inmediato mas interesante es que en el escenario aparecera un rectangulopor cada uno de los cuadrados que marques. La gura 3.7 muestra el resultado trashaber marcado los tres cuadraditos en un proyecto recien creado.Figura 3.7: Activando los monitores de posicion y direccionPara cada cuadrito observa que aparece en primer lugar, sobre fondo gris, el identica-dor del objeto. En este caso el objeto se denomina Sprite1, pero el sistema utilizara elnombre que le hayas dado al objeto. A continuacion el nombre de la variable, por ejem-plo direccion, y por ultimo, un un recuadro con fondo azul, el valor. En este momento,el valor de direccion es 90.Estas estructuras se denominan Monitores ya que nos permiten observar el contenidode una variable en todo momento.Dejemos esta lnea de trabajo de momento, y continuemos en paralelo por otro apartado.3.3. Preguntas y respuestasVamosacomenzaratrabajarconunapaletanueva. Setratadelapaletadenomi-nada Sensores. De esta paleta nos interesan dos bloques que aparecen exactamenteen la quinta y sexta posicion del bloque. En concreto, las denominadas preguntar yrespuesta (gura 3.8).Puedes observar que el bloque respuesta tiene una apariencia similar al visto paralas variables de posicion y direccion. Efectivamente, se trata de un bloque de variable,que tiene asociado un cuadradito. Si lo pulsas observaras que tambien te aparece unmonitor en el escenario.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 44CAPITULO 3. DATOSFigura 3.8: Paleta: SensoresAunque lo veremos con detalle mas adelante, aqu aparece una idea muy importante.Podras observar que mientras que las variables de posicion y direccion indicaban (en susmonitores) el nombre del objeto, el monitor de la variable respuesta no indica ning unnombre de objeto. La idea es que hay variables que son especcas de un objeto (sololas puede manipular dicho objeto) y hay variables globales que son accesibles a todoslos objetos de un proyecto.En este caso, la posicion y direccion son datos particulares de un objeto, y por tantopara hacer referencia a una posicion concreta tenemos tambien que saber de que objetose trata. O dicho de otra forma, si tenemos dos objetos, tendremos una posicion-x parael objeto A y una posicion-x para el objeto B, y as para la posicion-y y la direccion.Por el contrario, respuesta es una variable global, unica para todos los objetos.Los bloques asociados con las variables no los podemos usar para construir guiones osecuencias de instrucciones. Observa que no tienen muescas arriba y abajo para engar-zarlas con otros bloques.Pero observa ahora la instruccion preguntar:Esta instruccion lanza una pregunta al usuario, utilizando como texto de la pre-gunta lo que se escriba en el parametro. A continuacion, abre un cuadro de lecturade texto que se sit ua en la parte inferior del escenario. En ese momento se puedeescribir cualquier cosa en dicha area. Cuando se pulse intro lo que se haya escritoen el area de lectura se guardara en la variable respuesta.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 45CAPITULO 3. DATOSEjemplo 1Saludar y preguntar el nombreParapracticarel usodelaconstruccionpreguntarysurelacionconlavariablerespuestavamosaconstruirunproyectoenel queel gatonossaludeynospregunteel nombre. Acontinuacion, nospermitiraescribirnuestro nombre, queuna vez introducido se reejara enel monitor de lavariable respuesta.[Proyecto: saludar-y-preguntar-nombre]La solucion a este ejercicio es realmente trivial (gura 3.9). Solo debemos asociar alobjeto gato un guion que detecte la pulsacion de la bandera verde (como evento quedisparael iniciodel programa), yacontinuacionejecutelainstruccionpreguntardonde habremos modicado el parametro para indicar el saludo que nos interese.Es imporante haber marcado tambien la activacion del monitor de la variable respues-ta en la paleta Sensores.Figura 3.9: Saludar y preguntar el nombrePero el gato debera ser algo mas educado. Si nos ha preguntado el nombre, estarabien que nos respondiera. Por ejemplo, si le hemos dicho que nuestro nombre es Jose,podra respondernos diciendo Hola, JosePara ello podemos utilizar el bloque de la paleta Apariencia. Ahora bien,que debemos colocar en el parametro de este bloque?Si colocamosdirectamentelaexpresionHola, Joseloqueocurriraesquesiemprenos respondera con este mensaje sea cual sea el nombre que hayamos indicado. Peroobservad que es posible hacer lo siguiente:A partir del programa de la gura 3.9, arrastramos la instruccion yla colocamos despues de la instruccion preguntar que ya tenamos.Ahora nos vamos a la paleta Sensores, seleccionamos el bloque correspondientea la variable respuesta y lo arrastramos hasta colocarlo en el hueco (parametro)de la instruccion decir, tal y como aparece en la gura 3.10Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 46CAPITULO 3. DATOSFigura 3.10: Saludar, preguntar el nombre y primera respuesta3.3.1. Operadores: unir mensajesA un no nos ha respondido tal y como queramos, pero ya nos vamos acercando. Real-mente debemos construir un mensaje formado por dos trozos: el primero de ellos con eltexto Encantado y el segundo con el contenido de la respuesta que hayamos dado (quees nuestro nombre).Losoperadoressoninstruccionesquepermitenmanipularexpresionesodatosparacrear datos nuevos. Por ejemplo, el operador de suma permite tomar dos n umeros yobtener la suma de ambos.La paleta Operadores de Scratch contiene los operadores mas comunes. Puedes obser-var que si seleccionas esta paleta, al principio te aparecen bloques para los operadores desuma, resta, multiplicacion y division. Mas adelante los usaremos. Observa un operadordenominado unir:El operador unir utiliza dos argumentos de entrada y obtiene como resultado launion o concatenacion de sus valores.Por ejemplo, si el primer valor es Hola. y el segundo valor es Adios., el resultadode unir ambos valores sera Hola.Adios.. Es importante tener en cuenta que sise trata de cadenas de texto (mensajes) los espacios en blanco son importantes.Por tanto si quieres que tras el punto de Hola. aparezca un espacio debes deintroducirlo a nal de la primera expresion o al principio de la segunda.Yunacosainteresante, cualquieradelosoperandos(parametros)utilizadosporeloperador de union puede ser una variable.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 47CAPITULO 3. DATOSEjemplo 2Saludar, preguntar el nombre y responder educadamenteModicar el ejemplo anterior de forma que tras leer el nombre, el gato nosresponda con un saludo que incluya el nombre introducido.[Proyecto: saludar-preguntar-y-responder]Para realizar este ejercicio, lo que debemos hacer es introducir la instruccion decir trasla instruccion preguntar que ya tenamos. A continuacion, en el hueco de la instrucciondecir colocamos el operador unir. Y ya podemos indicar en el primer apartado de esteoperador el texto Encantado (recuerda poner un espacio al nal; en caso contrario,observa lo que sucede); y por ultimo colocamos el bloque de la variable respuesta, tal ycomo aparece en la gura 3.11, asociado al proyecto saludar-preguntar-y-responder.Figura 3.11: Saludar, preguntar el nombre y responder educadamente3.4. VariablesHemos visto hasta ahora distintas variables que el propio sistema crea de forma au-tomatica.Ahora bien, en muchas ocasiones, necesitaremos crear nuestras propias variables pararealizar un programa. Consideremos el siguiente problema: calcular la media aritmeticade dos n umeros.Ejemplo 3Media aritmetica de dos n umerosRealizar un proyecto en el que el gato de Scratch nos pregunte sucesivamentepor dos n umeros y nos indique al nal cual es la media aritmetica de ambos.Por ejemplo, si indicamos como primer valor 8 y como segundo valor 20,nos tendra que indicar que la media aritmetica es 14 (resultado de sumar8 mas 20 y a continuacion dividirlo entre 2).Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 48CAPITULO 3. DATOS[Proyecto: media-aritmetica-de-dos-numeros]Pararesolver esteproblema, pensemosen unaprimeraaproximacion al mismo. Losprincipales pasos que debemos realizar son:1. al pulsar la bandera verde2. leer el primer n umero3. leer el segundo n umero4. calcular la media aritmetica del primer y segundo n umeros ledos5. mostrar el resultado obtenidoAhora bien, en la operacion 4 anterior debemos usar simultaneamente los dos n umerosque hemos ledo. Hasta ahora hemos visto que disponemos de una variable ya creada(denominada respuesta). Podramos usar esta variable en la operacion 2, y usar lainstruccion para preguntar por el primer n umero, esperar a queel usuario lo escriba, y a continuacion guardar el valor escrito en la variable respuesta.No obstante, si aplicamos la misma estrategia a la operacion 3, volveramos a preguntaren esta ocasion por el segundo n umero, pero al leerlo y grabarlo en la misma variablerespuesta, estaramos perdiendo en valor del primer n umero, con lo cual no podramosusar simultaneamente ambos valores en la operacion 4 para calcular la media.Obviamente, necesitamos mas variables.3.5. Creacion de variablesEn primer lugar, observe lo que aparece en la paleta Datos (gura 3.12). Observamosque aparecen dos botones. Es decir, no son instrucciones que podamos arrastrar al areade programas sino botones que ejecutan una accion al ser pulsados. Se nos permiteCrear una variable o Crear una lista.Figura 3.12: Paleta DatosJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 49CAPITULO 3. DATOSDe momento, empezaremos a trabajar con variables. Para ello, observemos lo que sucedeal pulsar el boton Crear una variable: gura 3.13.Figura 3.13: Variable nuevaEste formulario nos permite indicar el nombre de la variable. Por ejemplo, podramosindicar como nombre de la variable numero1. Por otro lado nos permite indicar si lavariable se crea:Para todos los objetos: denominaremos a estas variables globales, y se caracterizanporque laspodemos usar en todoslos objetosque secreen en el proyecto. Lavariable respuesta que hemos comentado previamente es de este tipo.Solo para este objeto: a este tipo de variables las denominaremos locales, ya quesolo podran ser usada por el objeto que tenemos activo en este momento. Unacuestion interesante es que podemos tener variables locales con el mismo nombreendistintosobjetos, yaqueenrealidadsonvariablesdiferentes. Porejemplo,las variables de posicion y direccion son locales a los objetos. Los monitores delas variables locales mostraran el nombre del objeto asociado ademas del propionombre de la variable.En este caso, puesto que solo tenemos un objeto, es indiferente lo que usemos, aunquepor defecto sera util dejar marcada la opcion Para todos los objetos: gura 3.14.Figura 3.14: Creando la variable numero1Observemos lo que ocurre al pulsar Ok en el formulario de creacion de una variablenueva (gura 3.15). Automaticamente aparecen un grupo de bloques de instruccion enla paleta de Datos que previamente no existan. Y estos s son bloques que podemosusar para construir nuestros programas.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 50CAPITULO 3. DATOSFigura 3.15: Bloque de datos tras la creacion de la variable numero1A esta construccion o bloque la denominaremos informador de la variable. Losinformadores devuelven el valor contenido en la memoria para que lo podamosusar en un momento determinado. Es decir, un informador accede a la memoria,lee el dato que este registrado y lo devuelve al programa.El monitor no es realmente una instruccion. El cuadradito asociado a toda variablepermite activar o desactivar el monitor que visualiza el contenido de la variableen la zona del escenario.Esta instruccion permite asignarle un valor a la variable correspondiente.Es importante observar que esta instruccion tiene dos parametros. El primero deellos se selecciona pulsando sobre el rectangulo donde aparece el nombre de lavariable y tiene una peque na echa hacia abajo. Si en este momento solo hay unavariable sera la unica opcion, pero cuando creemos mas variables, podremos endicho selector elegir la variable que queremos usar.En el segundo parametro podemos indicar directamente el valor que queremosasignarle. Por defectoaparece0, peropodemosindicarunvalordirectamente,otra variable o el resultado de un operador.Esta instruccion es similar a la de jar, pero lo que hace es modicar el valor dela variable.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 51CAPITULO 3. DATOSEsdecir, imaginemosquetenemosunavariable, porejemplo, numero1, cuyocontenido en un instante determinado es igual a 10.Si en ese momento utilizamos la instruccion jar numero1 a 2, se asignara elvalor2adichavariable. Esdecir, asignamosojamosel valordelavariableindependientemente del valor anterior.Por el contrario, si utilizamos la instruccion cambiar numero1 por 2, lo queocurre es que se modica el valor actual sumandole el indicado en el parametro.En este caso, el valor nuevo sera 12.Tambien se pueden usar valores negativos. De esta forma, si numero1 vale 10,y aplicamos la instruccion cambiar numero1 por -1, entonces el valor nuevosera 9.En realidad, una instruccion del tipo:cambiarVARIABLEporVALORes equivalente a:fijarVARIABLEaVARIABLE+VALORHemos visto que el cuadradito situado a la izquierda del informador de la varia-ble en la paleta de Datos activa el monitor de la variable en el escenario. Peroesta opcion solo nos permite activar o desactivar el monitor mientras hacemos elprograma. Para poder controlar la aparicion del monitor durante la ejecucion deun programa podemos usar la instruccion mostrar, donde de nuevo tenemos queseleccionar en el hueco rectangular el nombre de la variable a la que le queremosaplicar la funcion.Deformaequivalente, estainstruccionocultara(escondera)el monitordelavariable seleccionada del escenario en el momento de ejecutarse.Una vez analizados el proceso de creacion de variables y los bloques de instruccionesbasicos asociados con las mismas, volvamos al ejemplo en el que estabamos trabajando:como calcular la media aritmetica de dos n umeros?Aunquerealmentesepuedehacerconmenosvariables, sera util plantearel proble-ma utilizando cuatro variables: necesitaremos una variable para el primer n umero (leJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 52CAPITULO 3. DATOSllamaremos numero1), otra para el segundo n umero que nos proporcione el usuariodel programa (numero2), vamos a usar otra variable para sumar estos dos n umeros(suma), y nalmente otra variable para calcular la media aritmetica (media).As que para realizar este programa comenzaremos creando estas cuatro variables trascomo aparece en la gura 3.16.Figura 3.16: Media aritmetica: creacion de las cuatro variablesRecuperemos el algoritmo generico que habamos planteado para este problema:1. al pulsar la bandera verde2. leer el primer n umero3. leer el segundo n umero4. calcular la media aritmetica del primer y segundo n umeros ledos5. mostrar el resultado obtenidoLa operacion 2 leera un dato usando la instruccion pero dichainformacion queda almacenada en la variable general de Scratch respuesta. As que siqueremos que dicho valor permanezca en la variable que acabamos de crear numero1deberemos utilizar la instruccion jar para asignarle a la variable numero1 el valorde respuesta. De esta forma, una version mas detallada del algoritmo sera:1. al pulsar la bandera verde2. leer el primer n umero3. jar numero1 a respuesta4. leer el segundo n umero5. jar numero2 a respuesta...Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 53CAPITULO 3. DATOSEn este momento ya tenemos los valores correctos en las variables numero1 y nu-mero2. Necesitamos a continuacion calcular la suma de ambos valores, para despuesdividir este valor entre 2 obteniendo el valor de la media que es lo que mostraremos:...6. jar suma a (numero1 + numero2)7. jar media a (suma / 2)8. decir (unir La media es y media)Esdecir, necesitaremosusarel operadordesumaden umeros(situadoenlapaletade Operadores) para obtener la suma. Y los argumentos de este operador seran losinformadores de las variables correspondientes.En la operacion 7, debemos jar el valor nal de media utilizando de nuevo un operadormatematico, en este caso el de division, y usando como argumentos en primer lugar elinformador de la variable suma y en segundo lugar el valor literal 2.Finalmente, para que el sistema nos muestre el resultado utilizaremos la instrucciondecir de la paleta Apariencia. Pero queremos concatener un mensaje formado por eltexto literal La media es seguido del propio valor de la media. Por tanto, usaremosel operador unir asociado con los argumentos correspondientes. El guion completo conla solucion para este problema aparece en la gura 3.17.Figura 3.17: Media aritmetica: guion con la solucionSi enestemomentoloejecutas, eintroducescomoprimervalor8ycomosegundovalor 20, como resultado obtendras lo que aparece en la gura 3.18 donde ademas semuestran los monitores de las variables usadas.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 54CAPITULO 3. DATOSFigura 3.18: Media aritmetica: resultado de la ejecucionTarea 1Media aritmetica de tres n umerosModica el proyecto anterior de forma que se pueda calcular la media aritmeti-ca de tres valores. El sistema deber a leer cada dato por separado y nalmentedevolver la respuesta correcta.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 55CAPITULO 3. DATOSJose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 56 Captulo 4.Control Jos Francisco Quesada Captulo 4ControlIndice4.1. Los elementos del lenguaje . . . . . . . . . . . . . . . . . . . . 584.1.1. Constantes o literales . . . . . . . . . . . . . . . . . . . . . . 584.1.2. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.1.3. Expresiones y operadores . . . . . . . . . . . . . . . . . . . . 594.1.4. Operadores de comparacion. . . . . . . . . . . . . . . . . . . 604.1.5. Operadores logicos . . . . . . . . . . . . . . . . . . . . . . . . 624.1.6. Condiciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.2. Ejecucion condicional . . . . . . . . . . . . . . . . . . . . . . . 64Ejemplo 1: Indicar si un n umero es positivo o negativo. . . . . . . . 644.2.1. Condicionales anidados . . . . . . . . . . . . . . . . . . . . . 65Ejemplo 2: Indicar si un n umero es cero, positivo o negativo . . . . . 66Tarea 1: Leer dos n umeros y decir cual es el mayor . . . . . . . . . . 674.2.2. Condicional simple. . . . . . . . . . . . . . . . . . . . . . . . 684.3. Repeticiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.3.1. Repeticion nita . . . . . . . . . . . . . . . . . . . . . . . . . 69Ejemplo 3: Dibujar un cuadrado repetiendo las instrucciones que di-bujan los lados . . . . . . . . . . . . . . . . . . . . . . . . . . 69 2015 Jose F. QuesadaClub Scratch Iberoamericano Organizaci on de Estados Iberoamericanos (OEI)Esta obra esta bajo una Licencia Creative Commons Atribucion-NoComercial-SinDerivar57CAPITULO 4. CONTROL4.3.2. Repeticion innita . . . . . . . . . . . . . . . . . . . . . . . . 70Ejemplo 4: Movimiento aleatorio innito. . . . . . . . . . . . . . . . 714.3.3. Repeticion condicionada. . . . . . . . . . . . . . . . . . . . . 73Ejemplo 5: Sumatorio de los primeros n umeros . . . . . . . . . . . . 73Tarea 2: Sumatorio de los primeros n umeros usando el algoritmo deGauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Tarea 3: Factorial de un n umero . . . . . . . . . . . . . . . . . . . . 77Unprogramaeslatraducciondeunalgoritmoaunlenguajedeprogramacion. Unalgoritmo es una secuencia nita y organizada de instrucciones construidas para resolverun problema. En uno u otro nivel, nos encontramos con una secuencia de instrucciones.Podemos pensar que las instrucciones se ejecutan una tras otra desde la primera hastala ultima. As lo hemos venido realizando en los captulos anteriores. Por ejemplo, elprograma para calcular la media aritmetica de dos n umeros estaba formado por ungrupo nito, ordenado y secuencial de instrucciones.Ahora bien, en muchas ocasiones tendremos que tomar decisiones y ejecutar unas uotras instrucciones en funcion de determinadas condiciones. O incluso tendremos querepetir un mismo proceso o bloque de instrucciones mientras que ocurra algo o hastaque ocurra algo.En denitiva, necesitaremos instruccionesquecontrolanlaejecuciondeotrasinstrucciones. Este captulo estudia de forma sistematica estas instrucciones.4.1. Los elementos del lenguajeEn los primeros captulos nos hemos venido familiarizando con las caractersticas deScratch como lenguaje de programacion. Es el momento de denir y claricar algunosconceptos y nociones con mayor precision.4.1.1. Constantes o literalesSe denomina constante o literal a un valor introducido directamente. Los ejemplos mascomunes de literales son los n umeros o las cadenas de texto que escribimos en nuestrasinstrucciones.Por ejemplo, en la instruccion el valor 10 es una constante.De forma similar, en la instruccion el texto Ayuda! y eln umero 0.5 son literales. Podemos incluso decir que el primer valor es un literal de tipotexto, tambien denominado cadena de caracteres, y el segundo es un literal o constantenumerica.Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 58CAPITULO 4. CONTROL4.1.2. VariablesLas variables que hemos aprendido a crear en el captulo anterior son tambien elementosimportantes del lenguaje.Hacen referencia a valores, pero podemos cambiar su contenido (de ah la nocion devariable).Literales y variables constituyen los elementos mas simples o elementos de todo len-guaje.4.1.3. Expresiones y operadoresUn operador es una construccion que devuelve un calculo a partir de unos argumentosde entrada.Consideremos la suma. La suma es un operador matematico que si recibe dos n umerosdevuelve el resultado de sumarlos.Podramos por tanto hablar de expresiones simples (que seran las constantes o litera-les, junto con las variables) y de expresiones compuestas que seran las formadas poroperadores y otras expresiones.Por ejemplo, consideremos la expresion:2+3que en Scratch podemos construir comoEn este caso, 2 y 3 son expresiones (en concreto literales, o expresiones simples). Com-binadas con el operador de suma, crean una nueva expresion (compuesta).Lo interesante es que la expresion resultante tambien se puede usar como argumentode otros operadores.Podemos recordar que en el ejemplo del calculo de la media aritmetica tenamos dosvariables (numero1 y numero2) que primero tenamos que sumar y posteriormentedividir entre 2.As pues, a partir de las dos variables podemos crear la expresion de suma:En dicho ejemplo, el resultado de este calculo se asignaba (jar) a la variable suma,que posteriormente se utilizaba para calcular la media con otra expresion matematica,formada por el operador de division y dos expresiones simples (en este caso, una variabley un literal):Jose F. Quesada Aprende a programar con ScratchClub Scratch Iberoamericano - OEIPagina 59CAPITULO 4. CONTROLPues bien, tambien podramos haber construido una unica expresion usando el siguientemodelo:Es importante resaltar que en este caso tenemos una expresion cuyo operador principales una division, la cual utiliza dos argumentos. El primer argumento de la division esuna expresion compuesta (formada por el operador suma y dos expresiones simples -en este caso las variables numero1 y numero2). El segundo argumento de la divisiones una expresion simple (el literal 2).Es importante observar que tanto las variables como los operadores que devuelven re-sultados de tipo texto o n umero tienen bordes redondeados. Es decir, los informadoresque se crean asociados a las variables tienen forma de rectangulos con los bordes redon-deados. Tambien tienen dicha forma los operadores (en la paleta verde de Operadores)de suma, resta, multiplicacion o division (todos ellos devuelven resultados numericosa partir de argumentos numericos). Tambien tiene esta forma redondeada el operadorunir que ya vimos se utiliza para concatenar cadenas de caracteres.Los otros operadores los iremos estudiando a lo largo de este captulo y los siguientes.4.1.4. Operadores de comparacionSi observamos la paleta de Operadores algunos de ellos tienen un borde puntiagudo.Estos operadores no devuelven un resultado de tipo texto o n umero, sino que lo quedevuelven es un valor logico. Es decir, devuelven un valor qu