Diferencia entre revisiones de «Usuario:ManuelRomero/Scratch/programación»

De WikiEducator
Saltar a: navegación, buscar
(Algunas conceptos importantes que ya veremos)
 
(19 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-->
+
==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>

Última revisión de 17:41 25 oct 2024

Volver </div>

Volver



¿Qué es programar?

  • Programar es resolver un problema de una manera concreta.
  • Es dar instrucciones para que se ejecute un determinado algoritmo.
  • Es importante entender estos conceptos, que aunque los trataremos más adelante, necesitamos desde el principio.



Icon key points.gif

Puntos clave

Programar es algo tan cotidiano que a menudo nos pasa desapercibido.




Icon reflection.gif
Reflexiona
Identifiquemos situaciones cotidianas que se asemejen a ejecuciones de programas.




Icon define.gif
¿Qué es la programación?
  • La programación consiste en encontrar un algoritmo que resuelva un problema planteado.


  • Muchas veces no somos conscientes de que constantemente estamos utilizando algoritmos en nuestro día a día, ya que los realizamos de forma automática.


Icon casestudy.gif
Ejemplos de algoritmos cotidianos
  • Lavar los dientes
  • Cruzar la calle




Icon qmark.gif
¿Qué es un algoritmo?

Dado un problema de naturaleza lógica,

un algoritmo es una secuencia de acciones 
concreta y bien definida que, ejecutada en el orden establecido,
dará solución al problema planteado.




Icon qmark.gif
Características de un algoritmo
Un algoritmo debe ser
  - Finito (debe terminar en algún momento, aunque no necesariamente su ejecución).
  - Concreto.
  - Determinístico (siempre generará la misma salida ante las mismas entradas).
  - Bien definido.



  • Resolver problemas es algo habitual y cotidiano.
  • Lo hacemos sin ser conscientes de ello.
  • A veces, logramos resolver algo sin entender cómo lo hemos hecho.
  • Esta es una invitación a reflexionar y a actuar con calma al enfrentarnos a un problema.



Icon key points.gif

Puntos clave

  • ¿QUÉ QUIERO HACER?
  • ¿CÓMO LO VOY A HACER?
  • ¡PUES VAMOS A HACERLO!


Pautas a la hora de hacer un programa
  • Vamos a ver los conceptos sobre la marcha, aunque en el siguiente tema los formalizaremos.
  1. Primero, definir qué queremos hacer.
  2. Buscar información para ver cómo podemos hacerlo.
  3. Realizarlo y analizar los resultados, viendo posibles mejoras a aplicar.


Conceptos básicos en la programación



Icon objectives.jpg
Objetivo
  • A continuación, y aprovechando como ejemplo el lenguaje de programación Scratch, vamos a analizar brevemente los elementos que intervienen en un programa de alto nivel.


Icon reflection.gif
Reflexión
Los programas los ejecuta el ordenador, un elemento binario que solo reconoce 1's y 0's.
Los programas los escribimos las personas en un lenguaje comprensible para nosotros.
  • Evidentemente, de alguna forma hay que traducirlo de forma automática de un lenguaje a otro.



Programa: conjunto de instrucciones




Icon define.gif
Programa como conjunto de instrucciones
Un programa es un conjunto de instrucciones que resolverá un problema.
  • Estas instrucciones se agrupan en tres tipos, según el orden de ejecución que siguen:
  - Instrucciones de estructuras secuenciales: se ejecutan una tras otra.
  - Estructuras selectivas: en función de una condición, se realiza o no una instrucción.
  - Estructuras repetitivas: en función de una condición, se repite una o varias instrucciones o acciones.





Icon qmark.gif
¿Qué es una instrucción?
Es una acción concreta a realizar.

A continuación, veremos ejemplos de instrucciones.




  • Instrucción de selección: órdenes para establecer secciones condicionales.
  • Instrucción de repetición: órdenes para establecer secciones repetitivas.
  • Instrucciones secuenciales.
  • Declaración de variables
  • Asignación
  • Declaración de bloques o funciones
  • Invocación de funciones, subprogramas, objetos, etc.
  • Instrucción de inicio
  • Instrucción de fin