Fundamentos de programación estructurada con PSeInt y Scratch

Introducción a la programación

Introducción a la programación

¿Qué es programar? Programación estructurada

Programar es proporcionar las instrucciones necesarias a una máquina o aparato para que realice su función de manera automática.

En todo programa existe una serie de elementos que siempre van a estar presentes:

En programas extensos es probable que existan fragmentos de código que deban repetirse con alguna frecuencia. Para la automatización de ese proceso, y manteniendo un principio de programación llamado DRY explicado posteriormente, recurriremos a las funciones.

El desarrollo de un programa consta de los siguientes pasos:

  1. Definición y análisis del problema.
  2. Diseño del algoritmo mediante diagramas de flujo.
  3. Codificación del programa: obtención del código fuente utilizando el lenguaje de programación elegido.
  4. Compilación: conversión del código fuente al lenguaje máquina.
  5. Depuración de errores y verificación del programa.
  6. Explotación: documentación y mantenimiento. En este curso por la sencillez de los programas realizados no entraremos en este paso, si bien es fundamental que todo buen programa esté acompañado de una buena documentación y de un buen plan de actualizaciones.

Cuando hablamos de programación estructurada hablamos una forma de programar que se basa únicamente en la combinación de tres órdenes para el procesamiento de los datos:

  1. Secuencia. La estructura secuencial es la que se da de forma natural en el lenguaje, porque las sentencias se ejecutan en el orden en el que aparecen en el programa, es decir, una detrás de la otra.
  2. Selección o condicional. La estructura condicional se basa en que una sentencia se ejecuta según el valor que se le atribuye a una variable booleana. Por tanto, esta estructura se puede ejecutar de dos formas distintas, dependiendo del valor que tenga su variable. Para este fin, los lenguajes utilizan la estructura if o Si en español.
  3. Iteración (ciclo o bucle). La estructura de repetición ejecuta una o un conjunto de sentencias siempre que una variable booleana sea verdadera. Para los bucles o iteraciones, los lenguajes de programación usan las estructuras while y for. (Mientras y para en español)

La programación estructurada se contrapone habitualmente a la programación orientada a objetos. No obstante existen una serie de principios a la hora de diseñar el software que son comunes:

  • KISS: acrónimo de Keep It Simple, Stupid! Este principio nos dice que cualquier sistema va a funcionar mejor si se mantiene sencillo que si se vuelve complejo. La sencillez tiene que ser una meta en el desarrollo y  la complejidad innecesaria debe ser eliminada.
  • DRY: acrónimo de Don't Repeat Yourself. Lo que se intenta evitar con este principio es la duplicidad del código, en primer lugar por el principio anterior, y también porque el mantenimiento posterior se vuelve más difícil ya que no sabemos donde tenemos que modificar las cosas porque se repiten en diversas ocasiones a lo largo del programa y las inconsistencias se multiplican.

Para más información sobre las diferencias entre estos dos tipos de programación consultar aquí.

Para más información sobre los principios de diseño del software consultar aquí.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Introducción a la programación

Diagramas de flujo

Un algoritmo es una sucesión de pasos que se deben realizar para resolver un problema.

Un diagrama de flujo es una forma de representar un proceso o algoritmo de manera visual, estructurada y organizada. Es una herramienta muy útil para organizar y estructurar una tarea de programación antes de entrar directamente con el código.

Ejemplo de diagrama de flujo:

image-1654533440823.png

Aunque existen diversos programas informáticos para la realización de diagramas de flujo, en este curso utilizaremos una funcionalidad de PSeInt que lo permite. No obstante, y atendiendo a la cada vez más abundante evidencia científica al respecto, recomendamos que los diagramas de flujo se aborden con el alumnado en primer lugar con papel y boli, y si es pertinente de forma colaborativa, dejando para el software simplemente su edición final para incluir como documentación del programa.

Elementos del diagrama de flujo

Un diagrama de flujo está formado fundamentalmente por los siguientes elementos:

image-1654535499072.png

image-1654535632765.png

image-1654535451517.png

image-1654535421186.png

image-1654535543002.png

Ejemplos sencillos de diagramas de flujo

Ejemplo 1: Diagrama de flujo de un programa que a partir de dos números los suma y muestra el resultado en pantalla

SOLUCIÓN:

Diagrama de flujo:

image-1654535965816.png

Ejemplo 2: Diagrama de flujo de un programa que a partir de dos números compara cuál es mayor y lo muestra en pantalla.

Diagrama de flujo:

image-1654536227461.png


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Primeros pasos con PSeInt y Scratch

Primeros pasos con PSeInt y Scratch

¿Qué es PSeInt y qué es Scratch?

PSeInt

PSeInt es una herramienta para ayudar al alumnado en sus primeros pasos en programación estructurada. Utiliza un pseudolenguaje en español (complementado con un editor de diagramas de flujo), que permite centrar la atención en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje tales como el aprendizaje de un código y una sintaxis concreta y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos.

PSeInt es software libre multiplataforma, por lo que es accesible para toda la comunidad educativa sea cual sea su capacidad económica y el tipo de Sistema Operativo que utilice.

image-1654456198655.png

Es una herramienta a mitad de camino entre la programación por bloques, en los que la sintaxis y la estructura se desdibujan completamente, y aprender un lenguaje de programación determinado con la dificultad y el grado de especificidad que eso conlleva.

La última versión es de Junio de 2021 por lo que sus creadores lo van actualizando regularmente. En la página http://pseint.sourceforge.net/ se puede encontrar aparte de los enlaces para descarga abundante documentación sobre sus funcionalidades y otras informaciones de interés.

image-1654454297652.png

Scratch

Scratch es al mismo tiempo un lenguaje de programación con una interfaz sencilla que permite a los jóvenes crear historias digitales, juegos y animaciones utilizando programación por bloques y es también la comunidad de programación para niños y niñas más grande del mundo. Scratch está diseñado, desarrollado y moderado por la Scratch Foundation, una organización sin ánimo de lucro, que lo ofrece de forma abierta y gratuita en más de 70 idiomas.

image-1654456249983.png

Scratch ha sido desarrollado específicamente para jóvenes de entre 8 y 16 años, si bien personas de cualquier edad pueden participar en el proyecto.

En su web está accesible una versión online de la herramienta, accesible sin necesidad de ningún tipo de registro. En los siguientes apartados veremos cómo proceder para descargarnos la herramienta offline si así lo deseamos.

image-1654456049526.png

En otros cursos de Aularagon se ha profundizado con más detalle en el manejo de esta herramienta, cursos que recomendamos visitar. Sin embargo, en este nos interesará más estudiarla en comparación con una herramienta de pseudocódigo como es PSeInt para ver cómo dar el salto de una a otra y empezar a introducir código con nuestro alumnado de secundaria.

De igual forma Scratch es software libre multiplataforma, garantizándose de esa forma la accesibilidad universal al mismo.

PSeInt vs Scratch

Está claro que Scratch es más atractivo, motivador y gamificador, pero la experiencia demuestra que el alumnado fácilmente va a concentrar su atención en la edición de elementos visuales que no tienen nada que ver con la programación. Es muy típico que el alumnado dedique mucho más tiempo a la edición de los escenarios que a la programación en sí.

Por otra parte PSeInt no tiene estos elementos de distracción, concentrándose el alumnado en la programación pura. Una similitud en robótica es utilizar Lego y Arduino. En el primer caso el alumnado se concentra en la construcción y tuneado con los Legos, fuera del objetivo del pensamiento computacional, mientras que con  Arduino no tiene esos elementos.

El docente tiene que elegir según su objetivo y la madurez del aula entre un camino u otro, que por supuesto no son excluyentes. Por ejemplo, se puede iniciar por PSeInt y avanzar con Scratch.


pseint-scratch.png

Adaptado de image: Flaticon.com'. This cover has been designed using resources from Flaticon.com

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Primeros pasos con PSeInt y Scratch

Instalación

¿Cómo instalar PSeInt?

El programa está disponible en su página de descargas en http://pseint.sourceforge.net y existen versiones para Windows, Linux y MacOs.

image-1654453433672.png

En el caso de disponer de Vitalinux en el equipo, su instalación está disponible a través de la aplicación Vitalinux Play.

image-1654453401943.png

¿Por qué y cómo instalar Scratch offline?

La última versión disponible del programa es Scratch 3.0 accesible para los tres sistemas operativos mayoritarios desde el siguiente enlace. Allí también explica por qué puede ser beneficioso utilizar la versión Desktop en lugar de la online y que podemos resumir en los siguientes aspectos:

En el caso de disponer como Sistema Operativo Vitalinux, su descarga es directa a través de la aplicación Vitalinux Play, teniendo disponibles tanto la versión 2.0 (ficheros con extensión .sb2) como la 3.0 (ficheros de extensión .sb3)

image-1654455190430.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Primeros pasos con PSeInt y Scratch

Interfaz

Pantalla de inicio de PSeInt

Una vez instalado el programa, al arrancar nos encontramos con la siguiente interfaz:

image-1663514649720.png

Se distingue en la ventana varias zonas diferenciadas:

Cabe destacar como opciones de accesibilidad para alumnado con deficiencia visual que el menú Configurar, en la opción Presentación, nos permite modificar tipos y tamaños de fuente, colores de fondo, usar iconos grandes, etc...

image-1666634354970.png

Pantalla de inicio de Scratch

Para este curso hemos utilizado la versión Offline de Scratch 3.0 llamada Scratux, si bien la interfaz es similar en todas las versiones.

image-1657544595380.png

Respecto a la accesibilidad de esta herramienta para alumnado con Necesidades Educativas Especiales, recomendamos consultar el siguiente artículo de la Universidad Complutense de Madrid, o esta presentación realizada por personal de ONCE para el caso específico de alumnado con deficiencia visual.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Elementos básicos en programación

Elementos básicos en programación

Salidas

Normalmente programamos porque queremos obtener un resultado. Ese resultado es lo que llamamos habitualmente SALIDA del programa, si bien todo aquello que el programa muestra a la persona usuaria recibe la misma denominación.

Cuando se están dando los primeros pasos en programación, se suele comenzar por la creación del programa Hola Mundo que no es más que un programa que muestra ese mensaje en pantalla. Este sencillo programa nos ayudará a familiarizarnos con las salidas. Veamos cómo hacerlo paso a paso:

Pasos 1 y 2: Análisis y diagrama de flujo del programa Hola mundo

Según lo visto en el primer apartado tendría los siguientes elementos:

- Inicio y fin del algoritmo.

- Una única salida que mostraría ese mensaje.

SOLUCIÓN:

image-1655054533293.png

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Hola mundo con PSeInt

PSeInt ya arranca por defecto con el inicio y final  del algoritmo escrito:

image-1655054709032.png

En primer lugar le cambiaríamos el nombre al algoritmo

image-1655054791683.png

y por último debemos encontrar el comando para mostrar una salida en pantalla. Eso lo realiza el comando Escribir.

image-1657545262320.png

 Si hacemos clic sobre Escribir, se añade automáticamente el código en la línea del programa donde tengamos el cursor, con la sintaxis correcta, y nos muestra en la parte inferior una ayuda para completar la sintaxis.

En este caso, al ser una frase, deberemos escribir el texto que queremos mostrar entrecomillado. También es conveniente terminar la línea con un punto y coma para acostumbrarnos puesto que así es en la mayor parte de los lenguajes de programación, si bien PSeInt al ser pseudocódigo no es tan estricto con este tipo de errores y nos ejecutará el programa igualmente.

image-1655055341053.png

Si ahora queremos ver el correcto funcionamiento del programa, haremos clic en la herramienta Ejecutar (el triángulo verde) y se nos abrirá la ventana de ejecución del programa o consola donde veremos el resultado. Esta instrucción realiza la compilación y la verificación en el mismo paso. En programas más complejos podremos utilizar la herramienta Ejecutar paso a paso, muy útil para la depuración de errores.

image-1655055664482.png

Si queremos comprobar que nuestro diagrama de flujo es correcto, simplemente deberemos hacer clic en la herramienta Dibujar diagrama de flujo y veremos que es el mismo que habíamos dibujado al principio.

Como se puede comprobar PSeInt es un programa que proporciona salidas muy simples de tipo alfanumérico. No obstante, su sencillez nos ayuda a comprender el funcionamiento básico. Ahora realizaremos la comparación con Scratch, un programa cuya potencia gráfica es muchísimo mayor.

Pasos 3, 4 y 5Codificación, compilación y verificación del programa Hola mundo con Scratch.

En primer lugar remarcar que Scratch es un programa muchísimo más complejo y completo que PSeInt. Para empezar en Scratch nuestros programas tienen varios objetos ejecutando código a la vez, y las Salidas que proporciona son mucho más complejas y sofisticadas.

Los bloques de código asociados a las salidas son:

image-1657544980941.png

En concreto para nuestro programa nos van a interesar un par de bloques de los de Apariencia:

image-1655057454528.png

Vemos que dichos bloques mostrarán al objeto diciendo un mensaje, en el primer caso durante un tiempo determinado, en el segundo de forma indefinida.

Por último nos quedará marcar el inicio y final del programa. En Scratch el inicio se marca haciendo clic sobre la bandera verde que hay en la parte superior de la ventana de programa, y esa orden se encuentra en el bloque Eventos. El final no se especifica.

image-1655056726124.png

Al hacer clic en la bandera verde, el objeto al que le hemos asignado el código saldrá diciendo ese mensaje.

image-1655056783851.png

En este caso hemos asociado la SALIDA a un objeto/personaje. De igual forma se lo podíamos haber asociado al escenario, simplemente cambiando el fondo a uno que incluyera ese mensaje, en el bloque Apariencia, y que previamente tendríamos que haber creado.

image-1655057108749.png


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Elementos básicos en programación

Entradas

Un programa como el ejemplo del programa Hola mundo visto en el apartado anterior no es lo habitual en programación. Cada vez más, buscamos realizar programas que realicen acciones no meramente preprogramadas y automatizadas, sino que reaccionen en función de unos parámetros suministrados por la persona usuaria. Todos aquellos datos que se le proporcionan al programa de forma externa para su posterior procesamiento es lo que llamamos ENTRADAS.

Las entradas pueden ser suministradas de dos formas:

Para entender mejor el concepto de Entrada realizaremos una  variante del programa Hola mundo que llamaremos Transmito tu mensaje en el que el programa solicitará de la persona usuaria el mensaje que quiere transmitir, y a continuación lo mostrará en pantalla. Vayamos paso a paso:

Pasos 1 y 2: Análisis y diagrama de flujo del programa Transmito tu mensaje

. Veamos en primer lugar los elementos necesarios en dicho programa y su diagrama de flujo:

El diagrama de flujo sería:

image-1655305389946.png

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Transmito tu mensaje con PSeInt

Partiremos de nuestro fichero Hola_mundo.psc, le cambiaremos el nombre al algoritmo y al fichero, y en este caso introduciremos una vez más el comando Escribir puesto que necesitamos dos salidas.

Para recibir entradas en PSeInt se utiliza el comando Leer seguido de la variable en la que se almacenará el contenido recibido. Nosotros le llamaremos simplemente mensaje.

image-1657545691602.png

PSeInt nos facilita el no tener que definir el tipo de contenido a recibir previamente (textual, numérico...) sino que se adapta a la respuesta, en este caso una cadena de caracteres.

Para comprobar su funcionamiento, haremos clic en el botón Ejecutar de la barra de herramientas y comprobaremos que realiza lo esperado.

image-1655305982569.png

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Transmito tu mensaje con Scratch

En Scratch parte de los bloques relacionados con la entrada de datos en el programa se encuentran en el menú SENSORES, y tienen color azul claro. También proporcionamos entradas con el menú EVENTOS, con bloques para indicar qué acción exterior determinará el que el programa se ejecute de una forma u otra.

image-1663515499737.png

Como veíamos antes, en SENSORES se incluyen tanto bloques para preguntar y recibir respuestas directas de las personas usuarias, como otro tipo de entradas relacionadas con estar tocando algo (otros objetos, colores), estar a determinada distancia, alcanzar un volumen de sonido, encontrarse en una zona determinada del lienzo, pulsar una tecla o el ratón, etc...

Si quisiéramos programar algo similar al programa anterior tendríamos que utilizar los siguientes bloques:

image-1655307221897.png

Scratch almacena lo introducido por teclado en una variable predefinida llamada respuesta, disponible en el mismo bloque de sensores. Precisamente las variables y otras estructuras de almacenamiento de datos son el objetivo del siguiente punto.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Elementos básicos en programación

Almacenamiento

Ya hemos visto que para poder operar con los datos, previamente hemos debido reservar unos espacios de memoria en los que almacenarlos. A esto es a lo que llamamos estructuras de almacenamiento de datos.

Para que los datos puedan ser correctamente tratados, estas estructuras deben ser definidas mediante:

En este curso introductorio vamos a conocer dos estructuras únicamente, variables y vectores (también llamados arrays), si bien solo vamos a deternos en profundidad en la primera.

Variables y constantes

Son espacios que almacenan un único DATO de diferente naturaleza, y al que se le asocia un nombre que lo identifica. Los datos que pueden almacenar son:

Las variables, como su nombre indica, son estructuras de datos que van a tomar diferentes valores a lo largo de la ejecución del programa, mientras que las constantes adoptan el mismo valor durante todo el programa (Por ejemplo el número PI, o el porcentaje del IVA).

Es muy importante seleccionar adecuadamente el nombre de las variables y constantes para que ayuden a la comprensión de los datos almacenados. Generalmente  las constantes se definen con nombres en mayúscula y las variables en minúscula.

Para conocer más de su funcionamiento, vamos a realizar un pequeño programa que solicite un precio, un porcentaje de oferta  y a partir de un porcentaje de IVA (Constante)  muestre un mensaje con el precio total a pagar. Le llamaremos CALCULADORA DE REBAJAS.

Pasos 1 y 2: Análisis y diagrama de flujo del programa Calculadora de Rebajas

Los elementos implicados serán:

El diagrama de flujo sería:

image-1657550591499.png

A las variables de igual forma también se les podrían asignar valores iniciales, aunque vayan a ser modificados a lo largo del programa. Si no se hace, asumen como valor inicial el 0 o vacío.

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Calculadora de Rebajas con PSeInt

Como hemos visto en el ejemplo de Entradas, PSeInt es un programa menos "riguroso" con el código, y nos ha permitido utilizar variables sin haberlas definido previamente (como hacíamos con num1 y num2, variables que almacenaban los valores de los números introducidos)

No obstante, el procedimiento ordinario en todo programa es definir previamente las variables (y constantes) que vamos a necesitar, mediante la asignación de un identificador y un tipo de datos a almacenar. En PSeInt esto se realiza mediante la instrucción Definir. Al escribir dicha instrucción, la ayuda nos solicita el nombre de las variables que queramos definir, separadas entre comas.

image-1657559249851.png

Podemos también especificar el tipo de datos que van a contener, añadiendo después del nombre la instrucción como, que nos abrirá las cuatro opciones disponibles en PSeInt: entero, real, carácter o lógico, también llamado booleano. En el caso de las cadenas de caracteres, no permite su definición como tal, si bien veremos que mediante asignación podemos almacenarlas en variables de igual forma.

image-1657559396197.png

Realizamos este proceso tantas veces como necesitemos, por el tipo de datos que hemos definido en el problema. En el caso de las constantes, les asignaremos su valor (21% en el caso del IVA y el texto del mensaje que queramos)

Para almacenar un valor en una variable o constante se utiliza el comando Asignar, de la ventana de la derecha.

image-1657630542224.png

También se pueden escribir directamente el signo menor y el guión mediante el teclado.

image-1657629506076.png

En el momento en que definimos variables y constantes en el programa, si hacemos clic en la pestaña situada a la izquierda llamada Lista de Variables se nos abre una ventana con las variables definidas.

image-1657629840670.gif

Una vez definidas las variables que van a contener la información necesaria, solicitaremos y almacenaremos los valores del precio inicial y el porcentaje de rebaja.

image-1657630216896.png

Por último, operaremos con ellos mediante operaciones aritméticas (ver siguiente punto) y asignaremos el valor obtenido a la variable precio_final que será la que mostraremos por consola.

image-1657630645655.png

Como se puede apreciar en la última fila del programa, la instrucción Escribir permite la concatenación de diferentes tipos de datos sin más que separarlos entre comas.

Ya solo nos quedará comprobar el correcto funcionamiento del programa dándole a Ejecutar. Debido a la mayor longitud de este programa puede ser un buen momento para comprobar como funciona la orden Ejecutar paso a paso.

image-1657630951667.gif

En el paso de depuración de errores y verificación del programa puedes probar a introducir errores posibles, para ver cómo reaccionaría el programa: por ejemplo meter los decimales con una coma, o un porcentaje de descuento decimal. En programación es fundamental adelantarse a equívocos o posibles confusiones de la persona usuaria, para tener prevista una respuesta que no bloquee el programa o prevenirlas mediante mensajes de aviso.

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Calculadora de Rebajas con Scratch

En Scratch, las estructuras de almacenamiento de datos se encuentran en el bloque Variables. Desde allí podremos crear tantas variables como necesitemos, y también asignarles el valor deseado mediante el bloque correspondiente.

image-1657631516502.png

Al crear una variable lo primero que nos solicita aparte de su identificador es saber si se define como local (solo de este objeto) o como global (común para todos los objetos) En este curso solo desarrollamos programas de un mismo objeto por lo que nos daría igual.

image-1663515981704.png

Una vez definidas las variables necesarias pasaremos a crear el código en el objeto utilizando sensores, apariencia y los operadores aritméticos y de concatenación que necesitemos, y que veremos con más detalle en el siguiente apartado. El código en bloques quedaría de la siguiente forma:


image-1657635736663.png

Pruébalo aquí:

Estructuras complejas de almacenamiento de datos

Aunque no es objeto de este curso, en programación se pueden almacenar conjuntos de datos siempre que sean del mismo tipo en otro tipo de estructuras complejas, los llamados arrays que en español se traducen como vectores o matrices, y en PSeInt se denominan dimensiones.

Para más información sobre cómo utilizar dimensiones en PSeInt se puede consultar el siguiente video.

En Scratch solo se contempla la utilización de listas que serían series ordenadas de datos del mismo tipo, y que se encuentran disponibles dentro del mismo bloque Variables.

image-1657636178529.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Elementos básicos en programación

Procesamiento

Tipos de operaciones

Las operaciones a realizar con los datos  pueden ser de muy diversa naturaleza:

Los tres primeros tipos de operaciones ya los hemos ido viendo en los apartados anteriores. Nos centraremos ahora en las dos últimas , si bien introduciremos diversas operaciones en los ejemplos para profundizar en su uso.

Iteraciones y bucles

Para practicar con estas estructuras, realizaremos un pequeño programa que nos calcule el promedio de varios números. En primer lugar el programa solicita la cantidad de números a promediar, luego pide que se introduzcan los números tantas veces como le hayamos dicho (aquí está la repetición) Al final muestra el promedio. En este caso, como el número de iteraciones es conocido, usaremos la instrucción Para. Asimismo, utilizaremos operadores aritméticos y de concatenación.

Pasos 1 y 2: Análisis y diagrama de flujo del programa Promedio de n números

Los elementos implicados serán:

El diagrama de flujo asociado a la instrucción PARA es el siguiente:

image-1663516782391.png

Diagrama de flujo:

image-1662139909769.png

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Promedio de n números con PSeInt

Como vimos en el apartado anterior, después de renombrar el algoritmo comenzamos por definir las variables implicadas escribiendo la expresión Definir

image-1662140249122.png

PSeInt permite definir varias variables del mismo tipo en la misma línea, separadas con comas. Como veis, hemos definido una única variable numi donde guardaremos el número introducido por la persona usuaria cada vez.

A continuación solicitamos la cantidad de números a promediar (Escribir), leemos la respuesta y la almacenamos en la variable correspondiente (leer) e inicializamos el valor de acum en 0, aunque en realidad no sería necesario puesto que es el valor asignado por defecto.

image-1662141575309.png

Con el valor de nnum definido por el usuario llega el momento de la repetición: solicitaremos al usuario que introduzca un número nnum veces. Para ello usaremos el comando  Para disponible en la ventana de la derecha.

image-1662141816788.png

Al hacer clic sobre el comando, se nos escriben las siguientes instrucciones en nuestra hoja de algoritmo

image-1662141863542.png

Como variable numérica habitualmente se define una variable local (i, j, k...) que hace de contador. El valor inicial es 1 y el valor final el número de veces que queremos repetir la instrucción. En paso se especifica el crecimiento del contador de una iteración a otra (en nuestro caso de uno en uno)

Por último en la secuencia de acciones hemos de poner que es lo que queremos que se repita en cada ocasión. En nuestro caso solicitar el número, leerlo y sumarlo a los anteriores guardando el resultado en la variable acum.

image-1662142157986.png

El valor de numi se refresca y varía en cada iteración, puesto que ya hemos guardado el valor del número anterior en el acumulado.

En un programa es muy importante usar el mínimo número de variables precisas para no añadir complejidad innecesaria al mismo. (Principio KISS de diseño de software)

Hemos concatenado en el mensaje de solicitud la variable numérica de contador. Eso nos permite mostrarle al usuario en qué iteración se encuentra. La instrucción Escribir seguida de los elementos a concatenar separados por comas los coloca en la misma línea y sin separación entre ellos. Por eso es preciso considerar los espacios de separación en las cadenas de caracteres que incluyamos.

Por último, asignamos el valor del promedio al cálculo correspondiente y mostramos el resultado nuevamente concatenando dos mensajes.

image-1662142637559.pngFinalmente le damos a Ejecutar y verificamos el proceso realizado.

image-1662142946677.gif

Nuevamente en la verificación del programa podemos experimentar la robustez del programa frente a fallos, introduciendo números decimales con coma, negativos, etc...Invitamos a realizarlo e introducir las instrucciones necesarias para prevenir dichos fallos.

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Promedio de n números con Scratch

En Scratch los bloques relacionados con las estructuras repetitivas se encuentran en Control y son Por siempre, Repetir y Repetir hasta que.

image-1662143361611.png

En nuestro caso, como el número estará definido, usaremos Repetir.

En primer lugar en el bloque Variables definiremos las variables necesarias.

image-1662143846692.png

De forma análoga, utilizando los bloques de Sensores, Apariencia, Variables explicados en los apartados de Entradas, Salidas y Datos, construimos el programa. En Operadores encontraremos los bloques necesarios para la realización de las operaciones aritmético, lógicas y de concatenación.

image-1662144265898.png

El programa finalmente con todos los elementos quedaría así:

image-1662144307622.png

Condicionales

Para practicar con estas estructuras, realizaremos un pequeño programa en el que tras solicitar una nota numérica, y verificar en primer lugar si el valor recibido es correcto, nos indicará si la nota corresponde a un APROBADO o un SUSPENSO.

Pasos 1 y 2: Análisis y diagrama de flujo del programa Boletín

Los elementos implicados serán:

Diagrama de flujo:

image-1662145686642.png

En este caso hemos definido la condición de error mediante el operador lógico O, indicando que se considere errónea cualquier calificación menor que cero o mayor que 10. Este programa puede ser resuelto de forma análoga utilizando el operador Y, indicando que considere válida cualquier nota numérica mayor o igual que cero y menor o igual que 10.

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Boletín con PSeInt

En primer lugar renombramos el algoritmo (boletin en nuestro caso) y definimos las variables implicadas que solo es la calificación numérica (nota_num)

A continuación solicitamos la calificación numérica (Escribir) y la introducimos en la variable definida (Leer)

image-1663089130188.png

Ahora vendría la aplicación de la condición. Los comandos encargados en PSeInt de introducir las condiciones son Si-entonces, Según, Mientras y Repetir. Un ejemplo de la sintaxis de cada una se puede apreciar en la siguiente figura

image-1663089429905.png

En nuestro ejemplo la condición solo se evalúa una vez por lo que descartamos las dos últimas, y el valor numérico introducido puede tener infinitos valores entre 0 y 10 por lo que la segunda tampoco es válida. Usaremos entonces el comando Si-entonces.

Vamos a aprovechar para introducir dos nuevos operadores, el operador Y representado por el carácter & y el operador representado por la doble barra || que se utilizan cuando queremos que se evalúe más de una condición simultáneamente. En nuestro caso podemos considerar dos opciones:

image-1663090532743.png

image-1663090588263.png

Las dos son correctas y elegir una u otra solo dependerá de la persona programadora y si prefiere usar operadores Y u O.

image-1663091091215.png

Finalmente sólo nos quedaría Ejecutar el programa y verificar su correcto funcionamiento.

Dejamos como ejercicio de ampliación el reformular este programa para que siga preguntando hasta que reciba una calificación válida. Como pista sugerimos explorar las posibilidades de la instrucción Repetir.

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Boletín con Scratch

En Scratch los bloques relacionados con las estructuras condicionales se encuentran en Control, junto a los bucles.

image-1663091520009.png

Los operadores lógicos Y y O se encuentran en Operadores, junto con los de comparación y los ya vistos anteriormente: aritméticos, de concatenación...

image-1663091770998.png

Como en todos los programas empezaremos definiendo las variables necesarias, en nuestro caso sólo una desde los bloques de Variables.

A continuación solicitaremos la calificación mediante el bloque disponible en Sensores y almacenaremos su respuesta en la variable recién creada.

Por último evaluaremos la respuesta obtenida mediante el bloque correspondiente de Control y utilizando los operadores lógicos de Operadores, según sea su valor ofreceremos el mensaje de error o escribiremos la calificación final  con el bloque correspondiente de Apariencia.

El código resultante sería el siguiente:

image-1663092570898.png

En este caso hemos utilizado el operador O porque Scratch no dispone de los operadores combinados menor o igual y mayor o igual, y así nos ahorramos el tener que combinar ambos operadores con un operador lógico O. Recordad el principio KISS.

Por último, verificamos el correcto funcionamiento del programa y su robustez frente a los errores más comunes. En Scratch ejecutamos haciendo clic sobre la bandera verde.

image-1663093519089.gif

Pruébalo aquí !!

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Elementos básicos en programación

Funciones

A veces en nuestros programas existen acciones que hemos de realizar varias veces a lo largo de los mismos, y que nos resultaría farragoso tener que copiar el código una y otra vez. De igual forma, cualquier modificación en algún elemento tendría que buscarse y repetirse todas las veces en que ese código saliera. Para automatizar todo esto cumpliendo el principio DRY de programación nos ayudan las funciones.

Las funciones, también llamados métodos o procedimientos, empaquetan y ‘aíslan’ del resto del programa una parte de código que realiza alguna tarea específica de forma que nos sea muy sencillo de manipular y reutilizar. Se definen al principio como pequeños subprogramas y después se "invocan" desde el algoritmo principal cuando se necesitan.

Las funciones pueden pueden devolver o no un resultado y también ser con o sin parámetros.

Se podría parametrizar la función contarAtras (n) indicándole a la función el número a partir del que realizar la cuenta atrás. Te invitamos a explorar cómo sería.

Las funciones se suelen denominar con un verbo o un conjunto de varias palabras que comienza con un verbo en minúsculas; es decir, con la primera letra en minúscula y la primera letra de las palabras siguientes en mayúsculas. 

Por ejemplo, vamos a imaginar un programa que calcula el área de una figura geométrica plana compuesta como la de la figura.

image-1663266791752.png

Pasos 1 y 2: Análisis y diagramas de flujo del programa Area compuesta

Los elementos serían:

Diagrama de flujo (sin funciones):

image-1663267727042.png

Otra forma de  abordar su solución  sería  predefinir unas funciones que nos calcularan por ejemplo el área de un rectángulo y el área de un círculo.  Veamos como quedaría el diagrama de flujo en ese caso.

image-1663870271586.png

Y habría que realizar de forma independiente los diagramas de flujos de cada una de las funciones.

image-1663870313416.png

image-1663870357205.png

Las funciones necesarias en este caso devuelven un resultado, y tienen parámetros. Como se puede deducir fácilmente, esto tendría mucho más sentido en programas donde fuera necesario calcular áreas de diferentes figuras de forma repetida.

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Area_compuesta con PSeInt.

En PSeInt para introducir funciones se definen al principio del código y utilizando el comando Función.

image-1663525013870.png

En la ventana de ayuda rápida nos explica cada uno de los elementos que aparecen en el código.

image-1663525052570.png

Cambiamos pues el nombre del fichero y definimos dos funciones al inicio, una para calcular el área de un rectángulo y otra para calcular el área de un círculo. Ambas devuelven resultado y necesitan parámetros, la primera la base y la altura, y la segunda el radio. En PSeInt existe de forma predefinida la constante PI con el valor  3.1415926536  por lo que podemos usarla y no habrá que definirla.

image-1663870432663.png

Una vez definidas las funciones, pasaremos a escribir el algoritmo principal. El argumento de las funciones será el valor introducido por el usuario y que corresponde con el lado del cuadrado.

image-1664037553257.png

Al ser funciones que devuelven un resultado hemos tenido que definir una variable areaTotal que almacene el resultado de lo obtenido por las funciones. De forma más correcta y generalizable tendríamos que haber predefinido previamente las variables lado y areaTotal como números reales, y unidad como string, si bien PSeInt nos permite ser un poco más laxos en el procedimiento.
La última línea es la concatenación del valor obtenido, la unidad introducida y un 2 puesto que la unidad será elevada al cuadrado.

Solo nos queda ejecutar el programa y verificar su funcionamiento.

image-1663534738177.gif

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Area_compuesta con Scratch.

En Scratch no existe de forma explícita la opción de crear funciones que devuelven un resultado. Solo existe lo que hemos llamado procedimientos, eso sí con o sin parámetros. Eso se hace mediante la creación de nuevos bloques. Para crear funciones que devuelvan un resultado tendremos que crear dichos bloques y asignarles dentro del mismo el valor calculado a una variable predefinida. Veámoslo con el ejemplo.

En primer lugar cargaremos la imagen de la figura cuyo área queremos calcular como fondo del escenario. Para ello en la parte inferior derecha hacemos clic sobre el botón verde y escogemos la opción de cargar un escenario.

image-1663779131251.png

A continuación crearíamos las variables necesarias. Como en este programa las únicas variables necesarias son el lado del cuadrado y su unidad, y eso hemos visto que va a ser almacenado por defecto como respuesta del usuario, no es necesario. Tampoco vamos a necesitar crear una variable areaTotal para almacenar el resultado puesto que lo mostraremos directamente concatenando operadores y así nos ahorraremos un bloque.

A continuación crearemos las funciones calcularAreaRect(base, altura) y calcularAreaCirc (radio) Para ello Scratch nos permite crear nuevos bloques a los que les asociemos un código. Eso se hace desde Mis Bloques y pinchando en Crear un bloque.

image-1663780376705.png

Al  clicar sobre Crear un bloque se nos abre una ventana donde elegir el identificador de la función/bloque, así como opciones de añadirle argumentos o parámetros a esa función. Pueden ser texto, número, variable booleana o simplemente una etiqueta de texto.

image-1663780563996.png

En nuestro caso crearemos dos nuevos bloques. El del área del rectángulo requiere dos entradas numéricas (base y altura), y el del área del círculo una única entrada numérica (radio).

image-1663875213108.png

image-1663875245259.png

En ese momento en nuestra área de código aparecen dos nuevos elementos para que definamos bajo ellos los bloques que van a componer cada uno de estos subprocedimientos.

image-1663875307274.png

Como hemos dicho antes, son funciones que devuelven un resultado, por lo que primero habremos de crear variables para poder almacenar en ellas ese resultado. Les llamaremos resultRect y resultCirc.

image-1663780943198.png

Mediante operadores aritméticos en este caso, añadiremos los bloques correspondientes al cálculo del área de cada figura, dados sus parámetros.

image-1663875348215.png

Por último, una vez definidas las funciones/bloques, solo nos quedará el algoritmo principal, que tendrá este aspecto:

image-1663875389571.png

La última línea incluye la concatenación de texto con los resultados parciales de las funciones creadas. Solo quedaría comprobar su funcionamiento y depurar posibles errores.

Prúebalo aquí.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Elementos básicos en programación

Permitidme un comentario...

A lo largo de los ejercicios y ejemplos anteriores habrás visto que en algunos casos han aparecido comentarios en los programas.

Un comentario en programación es un texto en nuestro código fuente que el compilador ignora. Y si lo ignora, ¿por qué lo ponemos? Habitualmente para darnos explicaciones internas de cuál es la función de cada parte del programa. También son muy útiles para descartar fragmentos de código de forma temporal, sin tener que borrarlos, y así facilitar su posterior recuperación.

Los comentarios en programación son fundamentales:

En muchas ocasiones bastará como ejercicio que a nuestro alumnado le propongamos un programa y le digamos que lo organice  y le coloque comentarios. Eso nos dará idea de si entiende realmente el funcionamiento del mismo, paso previo a que pueda más adelante adaptar ese programa a nuevas necesidades e incluso crear uno desde cero. Pero esto lo veremos con más detalle en el módulo siguiente.

Comentarios en PSeInt

Para realizar comentarios en PSeInt simplemente tendremos que encabezar el punto en el que queremos insertar el comentario con una doble barra. Eso nos pondrá el texto que viene a continuación en un gris pálido y en cursiva que nos indicará que el compilador no va a tomar en cuenta lo escrito de esta forma.

image-1664039616377.pngTambién se pueden introducir los comentarios al final de una línea de código.

image-1664039753364.png

PSeInt solo permite comentar líneas y no fragmentos enteros de código, por lo que si queremos descartar un conjunto de instrucciones deberemos comentar línea por línea todas las que constituyan el bloque. Eso obviamente no sucede en lenguajes estructurados de programación que sí poseen esta capacidad.

image-1664039681042.png

Esta capacidad es especialmente útil en las fases de depuración de fallos, para aislar los fragmentos de código donde se encuentran los errores.

Los comentarios por supuesto no aparecen en la ventana de ejecución del programa. Dónde sí son visibles es en el diagrama de flujo asociado.

image-1664039924729.png

Comentarios en Scratch

En Scratch se pueden añadir comentarios desde la ventana de edición de código asociado a cada objeto. Los comentarios pueden estar tanto asociados a un bloque como sobre la misma ventana de edición. Se añaden clicando con el botón derecho sobre el lugar donde queremos insertar el comentario.

image-1664040210893.png

Una vez añadidos, quedan como notas visibles en el área de edición del código.

image-1664040425025.png


Por supuesto en Scratch no existe la opción de comentar y descomentar bloques para que no sean tenidos en cuenta por el compilador. La opción disponible para realizar esto es separar el evento que determina la ejecución de ese bloque y el código quedará temporalmente desactivado.

image-1664040753143.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Ejercicios resueltos

Ejercicios resueltos

Secuenciación de ejercicios

A la hora de plantear ejercicios con nuestro alumnado, con cada concepto nuevo que introduzcamos deberemos respetar una secuencia lógica que vaya poniendo en juego habilidades cognitivas de menor a mayor complejidad, según nos indica la Taxonomía de Bloom revisada por Anderson y Krathwohl. Para ello recomendamos:

  1. Partir de programas realizados en los que tengan que analizar sus elementos, predecir su comportamiento, comentarlos, encontrar errores, etc... (CONOCER, COMPRENDER)
  2. Continuar proponiendo modificaciones a programas proporcionados para personalizarlos (APLICAR)
  3. Comparar programas propuestos para solucionar un mismo problema atendiendo a diferentes criterios: funcionalidad, complejidad, cantidad de código empleado... (ANALIZAR, EVALUAR)
  4. Por último crear programas sencillos desde cero partiendo de problemas reales. (CREAR)

Proponemos a continuación algunos ejemplos para verlo de forma más concreta.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Ejercicios resueltos

Ejercicios de conocimiento y comprensión

EJEMPLO 1

ENUNCIADO:

Dado el siguiente código:

image-1654441595250.png

a) Explica para qué sirve este programa.

b) Detecta si existe algún error en el código y justifica por qué.

c) Realiza el diagrama de flujo del mismo.

d) Cópialo en un fichero de PseInt y comprueba si has contestado correctamente los apartados a), b) y c)

e) Introduce los comentarios necesarios para su mejor comprensión.

SOLUCION

a) Es un sencillo programa para comparar dos números introducidos por el usuario.

b) Al reproducirlo con PseInt se detectan dos errores:

image-1654441901371.png

1. Esto es erróneo, debería poner num1 es menor que num2 para ser cierta la condición de la línea anterior.

2. Falta un punto y coma al final

c) El diagrama de flujo es:

image-1654442006509.png

e) Un ejemplo de este programa comentado podría ser:

image-1654442142463.png


EJEMPLO 2

ENUNCIADO:

Dado el siguiente diagrama de bloques

image-1654442512547.png

a) Dí qué realiza este programa.

b) Identifica en el dibujo qué elementos pertenecen a Entradas, Salidas, Datos u Operaciones.

c) ¿Detectas algún error o imprecisión?

d) Realiza el diagrama de flujo del mismo.

e) Reproduce el programa en Scratch y comprueba tus respuestas anteriores.

f) OPCIONAL: ¿Se te ocurre alguna forma más sencilla de reescribir este programa?

SOLUCION:

a) Es un programa que muestra en pantalla un mensaje elegido por el usuario 5 veces, durante 2 segundos y dejando un espacio entre un mensaje y otro de 1 segundo.

b) 

image-1654442962524.png

c) El error es que la variable num no tiene un valor inicial predefinido, aunque sería más una imprecisión puesto que si no se asigna valor inicial, se asume el valor 0 que es el que nosotros queríamos poner.

image-1654443077535.png

d) Diagrama de flujo:

image-1654443217068.png

f) Si realmente se quiere repetir el mensaje 5 veces y no un número determinado por el usuario bastaría con este esquema.

image-1654443297281.png

El código inicial solo tiene sentido si el número de veces que se repite también quiere ser personalizado por la persona usuaria.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Ejercicios resueltos

Ejercicios de aplicación

EJEMPLO 1:

ENUNCIADO:

Dado el siguiente código,

image-1654443470796.png

a) Realiza su diagrama de flujo

b)  Realiza tres programas similares que realicen la RESTA, PRODUCTO y DIVISIÓN de DOS NÚMEROS dados.

SOLUCIÓN:

a)

image-1654443572461.png

b) ALGORITMO RESTA

image-1654443846701.png

ALGORITMO PRODUCTO

image-1654444236190.png

ALGORITMO DIVISIÓN

image-1654444312628.png

EJEMPLO 2:

ENUNCIADO

A partir del siguiente diagrama de bloques

image-1654444641103.png

a) Explica qué hace este programa

b) Realiza otros tantos programas que permitan dibujar un hexágono, un octógono y un dodecágono. Elige un color y un grosor deseado y añade las mejoras que quieras.

SOLUCIÓN

a) Dibuja un pentágono regular con el color y grosor predeterminado por el programa.

b) Posible código a implementar.

image-1654444951237.png

Como mejoras aparte de fijar el color y el tamaño, puede ser el marcar el lugar de inicio del dibujo, e incluso la orientación para asegurarse que siempre se dibuja en el centro del lienzo.

image-1654445054419.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Ejercicios resueltos

Ejercicios de análisis y evaluación

EJEMPLO 1

ENUNCIADO:

Compara los siguientes procedimientos para realizar la misma acción

image-1654451674408.png

Escribe en cada caso como los utilizarías en un programa  que a partir de dos números nos devolviera su cociente.

SOLUCIÓN

image-1654452224529.png

Opción 2: Es una función que no devuelve un valor (procedimiento) por lo tanto puede ser invocada por separado, si bien necesita que se le pasen dos parámetros para realizarse, que el programa habrá tenido que proporcionar antes.

image-1654452417008.png

image-1654452522328.png

La elección entre unas u otras vendrá determinada por lo que sea más conveniente en el programa.  La opción 3 es la que resulta más conveniente cuando una misma expresión se va a utilizar repetidas veces a lo largo del código, mientras que la opción 1 puede resultar conveniente si ese resultado quisiéramos introducirlo en posteriores instrucciones para tomar decisiones o realizar otras operaciones.

EJEMPLO2

ENUNCIADO

Compara los siguientes programas.

Programa 1

image-1663095545071.png

Programa 2

image-1663092570898.png

a) ¿Hacen lo mismo?

b) Justifica sus diferencias y  explica cuál utilizarías tú y por qué.

SOLUCIÓN

a) Efectivamente hacen lo mismo. Es un programa que al introducir una calificación numérica evalúa que esté en el rango correcto y si no, devuelve un mensaje de error, y si está en el rango correcto evalúa si corresponde a un APROBADO o un SUSPENSO. Es el programa descrito en el último ejemplo del capítulo anterior.

b) La diferencia es:

En el programa 2 el código es más sencillo y por lo tanto es la opción más recomendable.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Ejercicios resueltos

Ejercicios de creación

EJEMPLO 1

ENUNCIADO

A partir de los ejercicios vistos anteriormente realiza un programa que simule ser una pequeña calculadora con las cuatro operaciones básicas (sumar, restar, multiplicar y dividir):

SOLUCIÓN

Seguimos los mismos pasos vistos en el capítulo anterior en la creación de un programa.

Pasos 1 y 2: Análisis y diagrama de flujo del programa Calculadora.

Los elementos implicados son

En cuanto a la estructura del programa se propone realizar funciones parciales para cada una de las operaciones.

Para mostrar el menú se propone la estructura SEGUN ya que las opciones son discretas (4 operaciones) dentro de una estructura REPETIR hasta que la opción seleccionada sea la correcta.

El reinicio se realiza al finalizar cada operación, preguntando y si la respuesta es afirmativa, modificar la condición que volvía a mostrar el menú inicial (operac).

Diagrama de flujo:

diagramaflujo.png

Las dimensiones del diagrama no permiten distinguirlo bien, pero sí notar que hay una estructura REPETIR HASTA QUE la variable operac tenga un valor comprendido entre 1 y 4, que muestra el mensaje inicial con las operaciones a elegir.

image-1664305359822.png

image-1664305246214.png

Dentro de ella una estructura SEGÚN que abre 5 opciones posibles, la última la de que se haya elegido un número distinto del 1 al 4 que vuelve a iterar el proceso, y las otras 4 una por cada operación.

También que cada una de las 4 operaciones termina con un bloque condicional para preguntar por el reinicio, y en caso de querer reiniciar, le da a la variable operac un valor diferente de 1,2, 3 y 4 lo que reactiva el bucle repetir hasta que.

image-1664305097276.png

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Calculadora con PSeInt.

Empezamos por definir las funciones. La suma la haremos directamente dentro del algoritmo principal para ver la diferencia.

image-1654451001598.png

El algoritmo principal quedaría de la siguiente forma:

image-1664305476461.png

image-1664305520242.png

image-1664305565107.png

EJEMPLO2

ENUNCIADO

Crea un programa en Scratch para aprender las tablas de multiplicar. Las condiciones del programa son:

SOLUCIÓN

Seguimos los mismos pasos vistos en el capítulo anterior en la creación de un programa.

Pasos 1 y 2: Análisis y diagrama de flujo del programa Tabla de multiplicar

Los elementos implicados son

Diagrama de flujo:

image-1663263840580.png

Pasos 3, 4 y 5: Codificación, compilación y verificación del programa Tabla de multiplicar con Scratch

Como siempre empezamos por definir las variables. Definimos una variable contador y le asignamos el valor 0 al inicio del programa. La otra variable no será necesario crearla puesto que al ser respuesta de una pregunta, la crea el programa por defecto.

image-1663264147617.png

image-1663264137317.png

Saludamos y realizamos la pregunta con los bloques correspondientes de Apariencia y Sensores ya que son Salidas.

image-1663264272988.png

Ahí comienza el primer bucle, en este caso condicional puesto que depende de la respuesta obtenida. En scratch el bloque que realiza esta operación es Repetir hasta que

image-1663264383423.png

Cuando realizamos comparaciones con textos, hay que tener en cuenta las variaciones de mayúsculas, minúsculas, tildes, etc...Lo mejor en ese caso sería usar el operador "O" que nos admite como válidas cualquiera de las posibilidades (Sí, Si, SI, si)

Una vez obtenida la respuesta afirmativa (ENTRADA), pasamos a preguntar de nuevo por el número del 1 al 10 del que se quiere usar la tabla (SALIDA).

image-1663264617264.png

Con la respuesta obtenida (ENTRADA) realizamos otro bucle en este caso del 0 al 10 por lo que son 11 veces, donde se va a mostrar en pantalla al personaje diciendo el numero de la tabla x contador = resultado y el valor del contador se va incrementando de uno en uno en cada iteración.

image-1663264859184.png

Tras una última salida con la despedida, el programa quedaría así.

image-1663264971872.png

Por último vendría el momento de verificación del funcionamiento.

image-1663265372307.gif

Consideraciones finales:

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Ejercicios resueltos

Y la LOMLOE "pa cuándo"?

En la nueva normativa educativa publicada el año 2022 se impulsa de forma decisiva la enseñanza de contenidos relacionados con la programación tanto desde las primeras etapas como por supuesto en Secundaria y Bachillerato.

En concreto los contenidos abordados en este curso corresponden a la Competencia Específica nº 5 de la materia de Tecnología y Digitalización desarrollada en la Orden ECD/1172/2022, de 2 de agosto, por la que se aprueban el currículo y las características de la evaluación de la Educación Secundaria Obligatoria . En concreto esta competencia consiste en "Desarrollar algoritmos y aplicaciones informáticas en distintos entornos, aplicando los principios del pensamiento computacional e incorporando las tecnologías emergentes, para crear soluciones a problemas concretos, automatizar procesos y aplicarlos en sistemas de control o en robótica."

Específicamente en los criterios de evaluación de dicha competencia, para el curso de 2º de ESO, se habla de:

Asimismo el currículo de dicha materia establece como uno de los bloques de saberes básicos de esta materia aquellos concernientes a Programación, pensamiento computacional y robótica, estableciendo como conocimientos, destrezas y actitudes a desarrollar con el alumnado en 2º de ESO las siguientes:

Algorítmica y diagramas de flujo.
Aplicaciones informáticas sencillas para ordenadores: Programación por bloques.

Autoconfianza e iniciativa: el error, la reevaluación y la depuración de errores como parte del proceso de aprendizaje

Por lo tanto tanto los ejercicios planteados en el curso así como la metodología encajan perfectamente en la programación de esta materia en 2º de ESO, siendo los contenidos de robótica tratados en otros cursos de Aularagón más propios de la misma materia pero en 3º.

A pesar de que en el currículo habla de programación por bloques, nos ha parecido interesante en este curso introducir en paralelo un programa de pseudocódigo como PSeInt para acompañar al alumnado en esa transición desde lo intuitivo de una programación por bloques, visual y con la que muchos ya vienen familiarizados desde Educación Primaria, con la sintaxis de los lenguajes de programación, con los que tendrán que empezar a manejarse en cursos posteriores.

Una vez que el alumnado se ha familiarizado con los conceptos básicos de la programación estructurada contenidos en este curso, es tiempo de plantearle situaciones de aprendizaje en los que aplicarlos, preferentemente en la resolución de problemas reales y aplicando metodologías de trabajo en equipo. Esto correspondería a la última fase de Ejercicios de Creación. descrita en el apartado de Ejercicios resueltos.

La Competencia arriba descrita también se encuentra en el Currículo de la materia optativa de 3º de ESO de Programación y Robótica como Competencia Específica nº 4 de esa materia, pudiendo aplicarse todo lo dicho anteriormente también en el desarrollo de dicha materia.


Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Créditos

Curso creado en Octubre de 2022 por:

Ana Mª López Floría

Cualquier observación o detección de error en soporte.catedu.es

Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.

image-1648462225402.gif

image-1648462299882.png

image-1648462361893.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png