|
|
(20 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
| + | [[Usuario:ManuelRomero/certificado/Contenido|Volver]] |
| + | </div> |
| {{:Usuario:ManuelRomero/Scratch/Contenidos/nav}} | | {{:Usuario:ManuelRomero/Scratch/Contenidos/nav}} |
− |
| |
− | <br>
| |
− | {{#widget:Slides}}
| |
− | <div class="slides layout-regular template-default">
| |
− |
| |
− |
| |
− | <!--1------------------------------------------------------>
| |
| <div id=parrafo> | | <div id=parrafo> |
− | <div class="slide">
| + | {{Scratch/conceptosProgramacion}} |
− | | + | |
− | ===Qué es programar===
| + | |
− | *Programar es resolver un problema de una manera concreta.
| + | |
− | *Es dar instrucciones para que se realice un determinado algoritmo.
| + | |
− | *Es interesante hablar de estos conceptos, si bien los trataremos mas adelante pero los necesitamos desde el principio.
| + | |
− | | + | |
− | {{MRM_Puntos clave| | + | |
− | ;Programar es algo tan cotidiano y normal que nos pasa desapercibido.
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <!--2------------------------------------------------------>
| + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{MRM_Reflexion|Title=Reflexiona|
| + | |
− | ;Vamos a identificar cuestiones diarias que sean posibles ejecuciones de programas
| + | |
− | }}
| + | |
− | | + | |
− | {{MRM_Definicion|Title=Qué es la programación|
| + | |
− | *La programación consiste en encontrar un algoritmo que resuelva un problema planteado
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <!--2------------------------------------------------------>
| + | |
− | <div class="slide">
| + | |
− | | + | |
− | *Simplemente el no saber que continuamente estamos realizando algoritmos es una falta de concieciencia de ello , ya que lo hacemos de forma automática continuamente
| + | |
− | {{MRM_Ejemplo|Title=Ejemplos de algoritmos cotidianos|
| + | |
− | *Lavar dientes
| + | |
− | *Cruzar la carretera}}
| + | |
− | </div>
| + | |
− | <!--3------------------------------------------------------>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{MRM_Pregunta|Title=Qué es un algoritmo|
| + | |
− | Dado un problema de naturaleza lógica
| + | |
− | '''''un algoritmo''''' es una secuencia de acciones
| + | |
− | concreta y bien definida
| + | |
− | que ejecutadas todas ellas y en el orden establecido
| + | |
− | van a dar solución al problema planteado
| + | |
− | *}}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{MRM_Pregunta|Title=Características de un algoritmo|
| + | |
− | ; Un algoritmo debe de
| + | |
− | Ser finito (debe de terminar en algún momento (no necesariamente su ejecución).
| + | |
− | Debe de ser concreto.
| + | |
− | Siempre dará ante las mismas entradas, la misma salida.
| + | |
− | Concreto y bien definido (parecerá un término impreciso, pero es muy importante).
| + | |
− | *}}
| + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | | + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--1-->
| + | |
− | *Resolver problemas es algo habitual y contidiano
| + | |
− | *Lo hacemos sin ser conscientes de lo que estamos haciendo
| + | |
− | *A veces lo hacen sin saber como lo han hecho
| + | |
− | *Es una invitación a la reflexión, a la tranquilidad a la hora de hacer algo
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | <!--1-->
| + | |
− | | + | |
− | {{MRM_Puntos clave|
| + | |
− | *QUÉ QUIERO HACER
| + | |
− | *CÓMO LO VOY A HACER
| + | |
− | *PUES VENGA VAMOS A HACERLO
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | <!--1-->
| + | |
− | ;Pautas a la hora de hacer un programa
| + | |
− | *Vamos a ver sobre la marcha los conceptos, si bien en el siguiente tema los formalizaremos
| + | |
− | #primero saber '''''qué''''' quiero hacer
| + | |
− | #buscar información para ver '''''cómo''''' lo puedo hacer
| + | |
− | #realizarlo y analizo los resultados viendo posibles mejoras que puedo aplicar
| + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--1-->
| + | |
− | | + | |
− | =Conceptos básicos en la programación=
| + | |
− | <br>
| + | |
− | {{MRM_Objetivos|
| + | |
− | *A continuación y aprovechando como ejemplo de lenguaje de programación '''''Scratch''''' vamos a analizar brevemente los elementos que intervienen en un programa de alto nivel.
| + | |
− | {{MRM_Reflexion|
| + | |
− | ;Los programas los ejecuta el ordenador elemento binario que solo sabe de 1's y 0's
| + | |
− | ;Los programas los escribimos las personas en un lenguaje compresible para nosotros
| + | |
− | *Evidentemente de alguna forma hay que pasar de uno a otro de forma automática}}
| + | |
− | }}
| + | |
− | | + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | <!--1-->
| + | |
− | ==Algunas conceptos importantes que ya veremos==
| + | |
− | ;Programa
| + | |
− | Un programa va a ser un conjunto de instrucciones que se ejecutan para resolver un problema planteado
| + | |
− | [[Imagen:programa1.png]]
| + | |
− | </div
| + | |
− | <div class="slide">
| + | |
− | | + | |
− | | + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | ===Qué es el pensamiento computacional===
| + | |
− | [[Archivo:Pensamiento_computacional.jpeg]]
| + | |
− | {{MRM_Actividad|Title=Nos ponemos a prueba|
| + | |
− | {{MRM_Pregunta|Sois capaces de hacer un bocadillo....}}
| + | |
− | <br />
| + | |
− | ;Vamos a hacerlo ....
| + | |
− | computacionamente ?????
| + | |
− | }}
| + | |
− | | + | |
− | ==Programa: conjunto de instrucciones==
| + | |
− | <br />
| + | |
− | {{MRM_Definicion|Title=Programa como conjunto de instrucciones|
| + | |
− | ;Un programa es un conjunto de instrucciones que van a resolver un problema
| + | |
− | *Estas instrucciones las vamos a agrupar en tres tipos, según el orden de ejecución que van a seguir
| + | |
− | Instrucciones de estructuras secuenciales: una detras de otra
| + | |
− | Estructuras Selectivas: En función de una condición <span style="color:red"> realizaré o no</span> la instrucción
| + | |
− | Estructuras repetitivas: En función de una condición<span style="color:red"> repetiré</span> una o varias instrucciones o acciones
| + | |
− | }}
| + | |
− | <br />
| + | |
− | {{MRM_Pregunta|Title=Qué es una instrucción|
| + | |
− | ;Es una acción concreta a realizar
| + | |
− | A continuación vamos a ver ejemplos de instrucciones
| + | |
− | #.- Instrucción de selección: órdenes para establecer secciones condicionales
| + | |
− | #.- Instrucción de repetición: órdenes para establecer secciones repetitivas
| + | |
− | #.- Instrucciones secuencales:
| + | |
− | ##.- Declaración de variables
| + | |
− | ##.- Asignación
| + | |
− | ##.- Declaración de bloques o funciones
| + | |
− | ##.- Invocación de funciones, subprogramas, objetos, ....
| + | |
− | ##.- Instrucción de inicio
| + | |
− | ##.- Instrucción de fin
| + | |
− | }}
| + | |
− | | + | |
− | ===Instrucción de secuenciales===
| + | |
− | *Son ordenes o acciones que se ejecutan una detrás de otras
| + | |
− | *Es muy habitual que la orden sea llamar a un subprograma ya establecido(invocacion a subprogramas)
| + | |
− | *Dentro de estas instrucciones veremos el concepto de las variables
| + | |
− | *Es importante la instrucción de inicio y fin, de alguna forma el programa ha de empezar a ejecutarse
| + | |
− | *En scratch, esta instrucción viene con un determinado evento, en lenguajes estructurados venrá con una apertura de llave que representa el inicio
| + | |
− | *Esta es una diferencia de scratch, tengo que especificar cuándo se va a ejectuar cada bloque de instrucciones y lo haremos mediante eventos que ocurren
| + | |
− | [[Archivo:scratchInicio.png]]
| + | |
− | | + | |
− | ===Instrucción de selección===
| + | |
− | <br />
| + | |
− | {{MRM_Pregunta|Title=Instrucción de selección|
| + | |
− | *Permite determinar situaciones especiales en nuestro programa
| + | |
− | *Esta estructura tiene la siguiente forma
| + | |
− | <source lang=bash>
| + | |
− | | + | |
− | Si (condicion) entonces
| + | |
− | accion_1
| + | |
− | accion_2
| + | |
− | accion ....
| + | |
− | fin SI
| + | |
− | </source>
| + | |
− | *Donde '''''condicion''''' es una expresión booleana es decir algo que se evalúa, y me da como resultado '''''verdad o falso'''''.
| + | |
− | }}
| + | |
− | | + | |
− | | + | |
− | *Responde a una lógica continua en nuestra vida, continuamente estamos haciendo cosas si .....
| + | |
− | <source lang= bash>
| + | |
− | Si hace frío (condición)
| + | |
− | me pongo el abrigo (accion)
| + | |
− | fin si
| + | |
− | </source>
| + | |
− | <source lang= bash>
| + | |
− | Si comida fria (condición)
| + | |
− | la caliento (accion)
| + | |
− | fin si
| + | |
− | </source>
| + | |
− | <source lang= bash>
| + | |
− | Si tocando borde (condición)
| + | |
− | llevar la bola al principio (accion)
| + | |
− | fin si
| + | |
− | </source>
| + | |
− | [[Archivo:scratchCondicion1.png|200px]]
| + | |
− | [[Archivo:scratchCondicion2.png|400px]]
| + | |
− | | + | |
− | {{MRM_Actividad|Title =generar un número aleatorio |
| + | |
− | *Generamos una edad aleatoria entre 1 y 60
| + | |
− | *Decimos si es o no mayor de edad
| + | |
− | {{Plegable|hide
| + | |
− | |Posible solución
| + | |
− | |
| + | |
− | [[Archivo:scratchSeleccion1.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | {{MRM_Actividad|
| + | |
− | *Si toco al gato con el ratón,
| + | |
− | *que diga miau durante 2 segundos
| + | |
− | {{Plegable|hide
| + | |
− | |Posible solución
| + | |
− | |
| + | |
− | | + | |
− | [[Archivo:seleccionScratch3.png]]
| + | |
− | {{MRM_Pregunta|
| + | |
− | Por qué no funciona ???}}
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | ===Instrucción de repetición===
| + | |
− | <br />
| + | |
− | | + | |
− | | + | |
− | {{MRM_Pregunta|Title=Instrucción de repetición o bucle|
| + | |
− | *En este caso vamos a repetir una serie de veces un conjuto de acciones
| + | |
− | *Puede ser que quereamos repetir algo de forma infinita (mientras dure la ejecución del programa)
| + | |
− | {{Tip|Este tipo de bucles son bucles infinitos}}
| + | |
− | [[Archivo:bucleInfinito.png]]
| + | |
− | *Puede ser que sepa cuántas veces quiero repetir un bucle
| + | |
− | {{Tip|Este tipo de bucles son contadores}}
| + | |
− | [[Archivo:bucleContador.png]]
| + | |
− | *Puede ser que establezca una '''''condicion booleana''''' para establecer hasta cuando quiero repetir el bucle
| + | |
− | {{Tip|Este tipo de bucles son bucles con condición boleana}}
| + | |
− | [[Archivo:bucleCondicion.png]]
| + | |
− | | + | |
− | }}
| + | |
− | | + | |
− | {{MRM_Actividad|Title=Iteraciones|
| + | |
− | *Cuando apretamos la tecla '''''C''''' de crecer queremos que el sprit se haga más grande en 10 crecimientos, esperando un segundo entra cada incremente de tamaño.
| + | |
− | Igualmente si aprieto de '''''P''''' de pequeñó queremos que el sprit se haga más grande en 10 crecimientos, esperando un segundo entra cada incremente de tamaño.
| + | |
− | {{Plegable|hide
| + | |
− | |Posible solución
| + | |
− | |
| + | |
− | [[Archivo:scratchBucle.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | {{MRM_Actividad|Title=Iteraciones|
| + | |
− | *Cuando apretamos la '''''C''''' de crecer queremos que el sprit crezca hasta que toque el borde, luego que vuelva a su tamaño normal
| + | |
− | {{Plegable|hide
| + | |
− | |Posible solución
| + | |
− | |
| + | |
− | | + | |
− | [[Archivo:scratchBucle2.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | ===Variables===
| + | |
− | <br />
| + | |
− | {{MRM_Pregunta|Title=Instrucción de declarar variables|
| + | |
− | Una variable es una posición de memoria,
| + | |
− | En cuyo interior vamos a almacenar un valor de algún tipo
| + | |
− | y cuyo contenido puede ser modificado durante la ejecución del programa.
| + | |
− | *Es una parte muy importante en la programación.
| + | |
− | [[Archivo:declararVariable.png]]
| + | |
− | }}
| + | |
− | *Una vez creada la variable, la utilizaremos de dos maneras:
| + | |
− | ;Para asignarle un valor
| + | |
− | [[Archivo:asignacionVariable.png]]
| + | |
− | ;Para operar con ellas.
| + | |
− | Aquí aparece un nuevo término de programación que son ''''las expresiones''''
| + | |
− | {{MRM_Definicion|Title=expresión|
| + | |
− | Una expresión es un conjunto de valores y operadores
| + | |
− | que tras evaluarse obtenemos un resultado.
| + | |
− | {{MRM_Ejemplo|Title=expresión aritmética|
| + | |
− | ;Son los operadores conocidos de matemáticas, y dan como resultado un número
| + | |
− | <source lang=php>
| + | |
− | 8+5;
| + | |
− | 9*7;
| + | |
− | 9/7;
| + | |
− | 7-6M
| + | |
− | 9%4;
| + | |
− | </source>
| + | |
− | [[Archivo:operacionesAritmeticas.png]]
| + | |
− | }}
| + | |
− | {{MRM_Ejemplo|Title=expresión booleanas|
| + | |
− | ;Son los operadores lógicos , y dan como resultado un valor booleano, True o False
| + | |
− | <source lang=php>
| + | |
− | 8>5;
| + | |
− | 9<7;
| + | |
− | No Verdad;
| + | |
− | Expresión_1 AND Expresion_2
| + | |
− | </source>
| + | |
− | [[Archivo:operacionesLogicas.png]]
| + | |
− | }}
| + | |
− | {{MRM_Ejemplo|Title=expresión sobre cadenas|
| + | |
− | ;Son los operadores sobre cadena de caracteres
| + | |
− | <source lang=php>
| + | |
− | "Cadena una " unir "Cadena 2"
| + | |
− | contar Caracteres ("cadena")
| + | |
− | </source>
| + | |
− | [[Archivo:operacionesCaracteres.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | {{MRM_Puntos clave|Title=Muy importante|
| + | |
− | | + | |
− | UNA EXPRESIÓN, NO ES UNA INSTRUCCIÓN. ES PARTE DE ELLA.
| + | |
− | }}
| + | |
− | | + | |
− | | + | |
− | ===Instrucción de secuenciales de asignación===
| + | |
− | <br />
| + | |
− | | + | |
− | {{MRM_Pregunta|Title=Instrucción de asignación|
| + | |
− | 1.- Una asignación
| + | |
− | <source lang=php>
| + | |
− | color = "red"
| + | |
− | </source>
| + | |
− | [[Archivo:asignacionScratch.png]]
| + | |
− | }}
| + | |
− | | + | |
− | ;Ejemplos
| + | |
− | {{MRM_Actividad|Title=Contador|
| + | |
− | *Modifica el ejercicio de decir si una edad (número aleatorio entre 1 y 30) es mayor de edad o no, haciendo que nos muestre la edad
| + | |
− | {{Plegable|hide
| + | |
− | |Posible solución
| + | |
− | |
| + | |
− | | + | |
− | [[Archivo:scratchEdad2.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | {{MRM_Actividad|Title=Tabla de multiplicar|
| + | |
− | *Genera un número aleatorio, y muestra su tabla de multiplicar
| + | |
− | {{Plegable|hide
| + | |
− | |Posible solución
| + | |
− | |
| + | |
− | | + | |
− | [[Archivo:tablaMultiplicar.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | ===Instrucción de secuenciales de declaración de bloques===
| + | |
− | *Declarar un bloque es una acción muy frecuente en programación
| + | |
− | *Se trata de intentar hacer un pequeño subprograma para ser posteriormente utilizado
| + | |
− | *Es una forma de poder organizar mejor el código y escribir un programa principal utilizando bloques
| + | |
− | *Crear un bloque o función, es otra instrucción de declaración.
| + | |
− | *Crear bloques, es una forma de programar modular y estructurada, es decir modularizamos nuestro programa, y cada módulo o bloque usamos la programación estructruada (secuencias, selección, iteracción).
| + | |
− | *Cuando hablamos de bloques también nos referimos a módulos, subprogramas, y lo concretaremos en funcionesy clases(objetos) con sus métodos que estudiaremos más adelante.
| + | |
− | {{MRM_Actividad|
| + | |
− | <source lang=bash>
| + | |
− | declaracion_bloque(){
| + | |
− | accion_1
| + | |
− | accion_2
| + | |
− | ......
| + | |
− | }
| + | |
− | </source>
| + | |
− | [[Archivo:bloquesScratch.png]]
| + | |
− | }}
| + | |
− | *Para crear bloques debemos de seleccionar la acción
| + | |
− | {{MRM_Actividad|Title=Creando bloques|
| + | |
− | * Vamos a hacer un programa que se presente el sprite, nos diga algo y se despida,
| + | |
− | *Quieremos que el programa principal sea con bloques, de forma que el programa principal debe ser
| + | |
− | [[Archivo:bloques1.png]]
| + | |
− | }}
| + | |
− | | + | |
− | ===Crear clones===
| + | |
− | *Esta es una práctica que se hace en scratch.
| + | |
− | *En la programación estructurada también lo haremos cuando tengamos una clase, y creemos diferentes objetos de la misma clase.
| + | |
− | *Consiste en duplicar todo el elemento (tanto gráfico como funcional)
| + | |
− | *Es conveniente siempre, después de crear un clone, eliminarlo
| + | |
− | *Vamos a ver cómo se hace en este entorno de programación
| + | |
− | {{MRM_Actividad|Title=Crear un clone en scratch|
| + | |
− | *La ficha o instrucción, la tenemos en '''''control'''''
| + | |
− | [[Archivo:crear_clone.png]]
| + | |
− | }}
| + | |
− | | + | |
− | | + | |
− | {{MRM_Actividad|Title=Hacer una nevada mediante clones|
| + | |
− | *Elige un sprite de '''''Snowflake'''''
| + | |
− | [[Archivo:snowflake.png]]
| + | |
− | {{Plegable|hide
| + | |
− | |Posible solución
| + | |
− | |
| + | |
− | [[Archivo:scratch_clones1.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | ===Comunicación entre sprites===
| + | |
− | *Aunque sea un aspecto muy propio de los scratch, es necesario ver cómo los diferentes sprites u objetos se puedan comunicar.
| + | |
− | Por ejemplo cuando ocurra una determinada situación en un sprite y otros se reciban una comunicación de ello.
| + | |
− | *Es una forma de hacer que los diferentes elementos se puedan ver o comunicar unos con otros.
| + | |
− | | + | |
− | *Hasta ahora vemos cómo las diferentes fichas o instrucciones que tenemos son para cada uno de los sprite.
| + | |
− | [[Archivo:bloques_scratch.png|center|500px]]
| + | |
− | *Pero puede ser muy frecuente que desde un sprite queramos saber si a otro le ha ocurrido una determinada situación
| + | |
− | *Para ello crearemos un mensaje
| + | |
− | [[Archivo:crear_mensaje.png]]
| + | |
− | *Una vez creado, cuando queremos (el evento que controlemos) un objeto enviará un mensaje, como podemos ver en la imagen anterior.
| + | |
− | *En el otro scratch podemos establecer la condición, cuando recibamos el mensaje
| + | |
− | [[Archivo:recibir_mensaje.png]]
| + | |
− | {{MRM_Actividad|Title=Prueba con mensajes|
| + | |
− | *Podemos añadir un botón (sprite)en cualquier de nuestros ejemplos realizados, por ejemplo el muñeco que se presentaba.
| + | |
− | *Cuando apretemos con un click, que desaparezca el botón y empiece el programa.
| + | |
− | }}
| + | |
− | ===Ejercicios===
| + | |
− | <br />
| + | |
− | {{MRM_Actividad|Title=Propuesta juego de pajaritos|
| + | |
− | *Vamos a hacer un programa de cazar pajaritos
| + | |
− | *Tendremos dos tipos de pajaritos (bueno y malo), y un visor para cazarlos
| + | |
− | [[Archivo:pajaritos_sprite_1.png]]
| + | |
− | *Si tocamos los pajaritos malos vamos sumando puntos
| + | |
− | *Si tocamos los pajaritos buenos, vamos restando vidas (tendremos 3 vidas)
| + | |
− | *El programa consiste en que vayan apareciendo pajaritos buenos y malos de izquierda a derecha (clones de los pajaritos), y que vayamos contando y descontando un marcador, según vayamos tocando con el visor a los pajaritos
| + | |
− | *El juego termina si hemos acabado las vidas o hemos cazado 30 pajaritos malos
| + | |
− | }}
| + | |
− | | + | |
− | </div>
| + | |
− | <br />
| + | |
− | {{MRM_Actividad|Title=Ping pong|
| + | |
− | *Realizamos un juego para jugar a la pelota
| + | |
− | *Tendremos una barra vertical y una pelota
| + | |
− | [[Archivo:ping_sprite.png]]
| + | |
− | *El juego consiste en que vayamos rebotando la pelota según la damos y si toca el borde rebota
| + | |
− | *Si no la damos perdemos una vida (Para ello deberemos controlar de alguna forma si se nos pasa)
| + | |
− | *Controlamos cuando la toquemos con qué dirección rebota
| + | |
− | }} | + | |
− | | + | |
− | | + | |
− | | + | |
| </div> | | </div> |