miércoles, 9 de diciembre de 2015

Estructura y simbología algoritmos

ESTRUCTURA Y SIMBOLOGÍA PARA ALGORITMOS CON DIAGRAMAS DE FLUJO

 

Veamos aquí la principal simbología utilizada en los algoritmos creados mediante diagramas de flujo:

 

 

Y TENDRÍAMOS DIFERENTES TIPOS DE ESTRUCTURA DE DIAGRAMAS:

 

Estructura secuencial:

Estructura condicional:

Estructura cíclica:


EJEMPLOS DE ALGORITMOS:

Tenemos una  Lámpara que no funciona:

 Número par o no:

 

 Distinción entre variaciones, permutaciones y combinaciones:

 

 

Algoritmo para decidir pasar o no en un cruce con semáforo:

 

 

Indicación entre tres números enteros dados, cuál es mayor, cuál menor y cuál queda entre ellos:

 


 

Formas de escribir un algoritmo

FORMAS DE ESCRIBIR UN ALGORITMO

 

                                                    - LENGUAJE NATURAL

                                                    - DIAGRAMAS DE FLUJO

 

Tomemos como ejemplo el algoritmo para encontrar las raíces de una ecuación de segundo grado.


Si lo expresamos con LENGUAJE NATURAL, tendríamos que señalar los siguientes pasos:

1. Definir los coeficientes de la ecuación de segundo grado, a, b y c

2. Determinar el valor del discriminante   

3. Si el discriminante es cero, sólo hay una solución:

4. Si el discriminante es positivo, pero no cero, entonces hay dos soluciones:

  

5. Si el discriminante es negativo, entonces no hay soluciones reales

ESTA REPRESENTACIÓN NATURAL TIENE VENTAJAS E INCONVENIENTES:

VENTAJAS: Facilidad de comprensión

INCONVENIENTES: El lenguaje natural no es universal; es inútil para los no hispanohablantes (en este caso). Es ambiguo y, por tanto, susceptible de errores. Y es demasiado amplio, instrucciones demasiado largas.

POR TANTO, ES MEJOR ACOSTUMBRARSE A UTILIZAR DIAGRAMAS DE FLUJO.

VEAMOS ASÍ EL EJEMPLO ANTERIOR.

 

VENTAJAS: Símbolos Universales. Menos propensos a la ambigüedad. Número pequeño de bloques, Forma constructiva más semejante a cómo trabaja un ordenador.

INCONVENIENTES: Necesidad de conocer su simbología. Sigue utilizando lenguaje natural dentro de sus bloques. Su representación puede resultar tediosa y confusa si el algoritmo es muy grande. Un ordenador no es capaz de utilizar una representación visual como descripción de un algoritmo.

 LOS ORGANIGRAMAS DEBEREMOS UTILIZADOS PARA PLANTEAR NUESTRO PROBLEMA Y PODER RESOLVERLO MEDIANTE UN LENGUAJE DE PROGRAMACIÓN, COMO PUEDE SER SCRATCH

 

 

 

 

  

Qué es un algoritmo

  ¿QUÉ ES UN ALGORITMO?

Es un conjunto de instrucciones que especifican la secuencia ordenada de operaciones a realizar para resolver un problema.

Cada instrucción es una indicación sencilla y no ambigua.

 

 

Características principales que debe tener un algoritmo:

- Debe ser comprensible y preciso, indicando el orden de realización de cada paso 

- Debe ser predecible, si se aplica partiendo de la misma situación incial, debe obtenerse siempre el mismo resultado

- Debe ser finito, debe terminar en algún momento, con un número finito de pasos

- Debe tener un conjunto de entradas y salidas definidas y precisas

 

 

UN LENGUAJE DE PROGRAMACIÓN NO ES MÁS QUE UN MEDIO PARA EXPRESAR UN ALGORITMO

Y UNA COMPUTADORA NO ES MÁS QUE UN PROCESADOR PARA EJECUTARLO
 

SCRATCH Y ARDUINO

En el mundo actual vivimos rodeados de tecnología y parece interesante que los alumnos de secundaria comprendamos el funcionamiento de los dispositivos automáticos. Son dispositivos con los que se interacciona a través de botones o diferentes sensores de modo que generan efectos en forma de sonidos, luces o movimiento. Suponemos que cualquiera de estos aparatos tiene cierta inteligencia, capacidad de memorizar e incluso pueden detectar lo que sucede a su alrededor. Sin embargo, para la mayoría de nosotros se muestran como objetos dotados de cierta magia y muy pocas personas sabrían explicar de un modo sencillo cómo funcionan.
La interacción de estos dispositivos con variables físicas como luz, temperatura o movimiento se produce a través de sensores cuyas señales deben ser procesadas por nuestro protagonista principal, el microcontrolador que es un chip programable que contiene instrucciones precisas de cuál será la respuesta del dispositivo hacia el mundo físico exterior.
Además la automatización es interesante desde el punto de vista didáctico ya que permite poner en práctica gran parte de los conocimientos que a estas alturas y como alumnos de tecnología ya debemos de tener.

¿Cómo puede un dispositivo interactuar con el entorno?
Ya conocemos los fundamentos de la programación en Scratch y ahora vamos ponerlos en práctica para interactuar con el entorno, gracias a la placa Arduino nuestro programa podrá reaccionar de la manera que nosotros establezcamos a ciertas señales que le lleguen del exterior. Usaremos para ello S4A (Scratch for Aruino) que es igual que Scratch pero preparado para comunicarse con Arduino.

¿Qué es Arduino?
Arduino es una placa electrónica inteligente, que nos permite interactuar con el entorno, ya que dispone de varias entradas y salidas, las cuales trabajan a 5v, por lo tanto si trabajamos a otras tensiones debemos adaptarlas.





¿Cómo funciona?
Utilizar S4A y Arduino es muy sencillo, si por ejemplo queremos saber si un botón esta pulsado, solo tenemos que preguntarlo mediante programa:


Lo mismo si queremos enviar una señal al exterior, para por ejemplo poner una luz en rojo:


 
También podemos recibir información analógica (que no tenga solo dos estados posibles) como temperatura, distancia, etc.

Como la mejor forma de aprender algo es haciendolo, vamos a construir y automatizar un parking, en el que estén controlados varios parámetros mediante un programa. Este será realizado mediante el lenguaje Scratch, en el que se establecerá la lógica de funcionamiento, para el contacto con el mundo exterior se utilizará la placa Arduino, que permite explorar señales o entradas y enviar señales al exterior o salidas.



Instrucciones para realizar el proyecto
En equipos de tres o cuatro intragrantes debemos construir una maqueta de un parking y automatizarla. Esta dispondrá de una barrera que permita o impida la entrada de vehículos. Este parking tiene una capacidad máxima de 20 plazas, cuando esta capacidad sea alcanzada debe evitarse la entrada de más vehículos, no abriendo la barrera y estableciendo el semáforo en rojo, esta condición debe mantenerse hasta que alguno de los vehiculos abandone el parking.
Además cuando entre un vehículo debe encenderse la luz del parking durante 30 segundos, para dar tiempo a que el vehículo aparque, al igual que si se pulsa el botón de encendido de la luz dentro del garaje.

A modo unicamente de ejemplo vamos a ver unas imagenes de una de las posibles soluciones:



En esta imagen podemos apreciar la realización del circuito mediante protoboard, circuito básico similar a los vistos en clase:



Aquí un vídeo de su funcionamiento:




Y un pantallazo del programa de control realizado mediante S4A:



PROGRAMACIÓN SCRATCH

Tarea 1.- “El laberinto”

1. Descripción de la tarea:

Debéis diseñar un programa que se desarrollará en un laberinto. El jugador deberá poder mover el disfraz principal (un gato, por ejemplo) que tendrá que desplazarse por el laberinto hasta lograr salir de él. En la salida se encontrará con un león. Podéis hacer uso de bocadillos para los personajes y... ¡sed creativos!

Para su desarrollo el alumno deberá de manejar el lenguaje de programación dirigido por eventos de Scratch. En primer lugar deberá diseñar el escenario y su correspondiente fondo (recordemos que debe de tratarse de un laberinto, deberá de establecer un color de fondo y dibujar con la herramienta correspondiente el recorrido del mismo). Es importante tener en cuenta que las paredes del laberinto no deben de poder ser traspasadas por los disfraces, sino que nuestro gato deberá de rebotar al chocar con alguna de las paredes del laberinto. Por otra parte, deberá de incluir los diferentes disfraces, en este caso dos (un gato y un león), que deberán de escalarse (aumentar o disminuir su tamaño) de forma que sus dimensiones sean proporcionadas a la dimensión del laberinto. A estos disfraces deberán de asignarles los programas necesarios para el correcto desarrollo del programa: movimientos, apariencia, eventos, control,...

2. Funcionamiento del programa:

Al presionar la bandera verde se iniciará el programa, visualizaremos el gato ubicado en la posición de inicio y el león en la salida del laberinto.

El jugador desplazará el gato presionando las teclas del teclado de “flechas”: hacia arriba, hacia abajo, hacia la derecha y hacia la izquierda. Una vez recorrido el laberinto y al llegar a la salida, el gato se encontrará con un león al que deberá comer, una vez comido el león desaparecerá y el gato podrá salir del laberinto.
No os olvidéis de incluir a los disfraces algún comentario que se visualice en forma de "bocadillo".
El juego finalizará una vez que el gato haya conseguido salir del laberinto.

Ejemplo de diseño de laberinto.
Ejemplo de comentario en forma de "bocadillo".

3. Agrupamientos:

La tarea será desarrollada individualmente por cada alumno.

4. Instrumento de evaluación:

La tarea será evaluada mediante una rúbrica.


Tarea 2.- “El acuario”

1. Descripción de la tarea:

El alumno deberá diseñar un programa que se desarrollará en un acuario. El programa consistirá en que el jugador moviendo el disfraz principal (un pulpo) deberá comer el mayor número de peces posible.

Para su desarrollo el alumno deberá de manejar el lenguaje de programación de Scratch. En primer lugar deberá diseñar el escenario y su correspondiente fondo (recordemos que debe de tratarse de un acuario). Por otra parte, deberá de incluir los diferentes disfraces (un pulpo y tres tipos de peces). A estos disfraces deberá de asignarles los programas necesarios para el correcto desarrollo del programa: movimientos, apariencia, eventos, control,...sin olvidarnos que debemos de encontrar en pantalla un contador (indicará los puntos obtenidos) durante todo el desarrollo del programa.

2. Funcionamiento del programa:

Al iniciar el juego (presionando la bandera verde), aparecerá un submarinista que nos dará las indicaciones oportunas para dar comienzo al mismo (nos dará la bienvenida y nos indicará que para iniciar el juego debemos presionar la tecla espacio). En esta pantalla inicial ya se encontrará visible para el jugador, el contador que nos indicará cuántos puntos vamos obteniendo según el número de peces que vayamos comiendo.

Una vez que presionemos la tecla espacio aparecerá en pantalla el disfraz con el que jugará el usuario, en este caso un pulpo. Este pulpo será desplazado por el jugador presionando las teclas del teclado de “flechas”: hacia arriba, hacia abajo, hacia la derecha y hacia la izquierda.

Una vez aparezca el pulpo en pantalla comenzarán a aparecer los diferentes disfraces de peces que debemos de tratar de comer. Cada pez comido sumará un punto en nuestro contador.

Al finalizar el juego (una vez hayan desaparecido de la pantalla todos los peces) el contador nos indicará el número total de puntos obtenidos.

Ejemplo de visualización inicial del programa.
Ejemplo visual del inicio del programa.


Ejemplo de visualización de pantalla final del programa.


3. Agrupamientos:

La tarea será desarrollada individualmente por cada alumno.

4. Instrumento de evaluación:

La tarea será evaluada mediante una rúbrica.

¡¡Y ASÍ OS TIENE QUE SALIR!!


Metodología de la programación

METODOLOGÍA DE LA PROGRAMACIÓN

  ¿CUAL ES EL OBJETIVO DE LA PROGRAMACIÓN?

UTILIZAR LA COMPUTADORA COMO UNA HERRAMIENTA PARA LA RESOLUCIÓN DE PROBLEMAS

 

Fases:

- Análisis del problema (especificación)

- Diseño o desarrollo de un algoritmo

- Transformación del algoritmo en un programa

- Compilación y ejecución del programa

- Verificación y validación

- Depuración

- Mantenimiento

- Documentación