Title: leccion: pensamiento computacional
Course: Ciencias de la computación 1º Bachillerato

Feedback shared by this category's questions, if right: Respuesta correcta
Feedback shared by this category's questions, if partly right: Respuesta parcialmente correcta.
Feedback shared by this category's questions, if wrong: Respuesta incorrecta.

Q: Diagramas de flujo

Los diagramas de flujo son una manera de representar gráficamente un algoritmo. Consisten en un conjunto de bloques unidos mediante flechas. La forma de los bloques informan sobre el tipo de tarea.

Los rectángulos redondeados sirven para indicar el comienzo y el fin del proceso:

[Image: inicio] | [Image: fin]

Los rectángulos son para indicar tareas:

[Image: tarea]

Los rombos son para indicar bifurcaciones:

[Image: bifurcación]

Los romboides se usan para entrada y salida de datos:

[Image: entrada] | [Image: salida]

Ejemplos

Un ejemplo de diagrama de flujo para el proceso de estudio de un examen de matemáticas podría ser:

[Image: estudio]
- inicio | inicio
- fin | fin
- ¿bombilla encendida | ¿bombilla encendida?
- pulsar interruptor | pulsar interruptor

Q: Ordena las pareas para freír un huevo

Inicio

[...]

[...]

[...]

[...]

[...]

Fin
A: echar aceite en la sarten; calentar la sarten; echar un huevo; esperar a que el huevo esté hecho; sacar el huevo frito

Q: Indica quién tiene más de las siguientes características, los humanos o los ordenadores
- Velocidad de trabajo | ordenadores
- capacidad de cálculo | ordenadores
- creatividad | humanos
- intuición | humanos
- inteligencia | humanos

Q: Estrategias de pensamiento computacional

- Descomposición
- Reconocimiento de patrones
- Abstracción
- Evaluación /depuración
- Ensayo/error
- Automatización
- Descripción del proceso
- División de un problema complejo en un conjunto de problemas más sencillos | descomposición
- Analizar los problemas individuales para ver si ya tenemos soluciones que puedan servir para resolverlos | reconocimiento de pratones
- Determinar cuáles son las partes importantes del problema y cuáles son nirrelevantes | abstracción
- Probar la solución para ver si el resultado es el adecuado e intentar mejorarla | evaluación/depuración
- Aprovechar la potencia de cálculo de los ordenadores para ir probando soluciones aunque no sean completas. Ir haciendo pequeños cambios para ver cómo se modifica el resultado | ensayo/error
- Si escribimos qué realiza el programa en cada caso, eso nos ayudará a entenderlo nosotros mismos cuando tengamos que volver a él o a otra persona que tenga que mejorarlo o quiera reutilizar la solución | descripción del proceso
- Determinar si los pasos que queremos realizar es capaz de hacerlo una máquina de manera automática | automatización

Q: Pensamiento computacional

Los ordenadores (también llamados computadores) son máquinas muy potentes y versátiles. Tiene unos componentes físicos que llamamos [...] y unos programas que llamamos [...].

La versatilidad significa que la mísma máquina puede hacer muchas cosas diferentes. Es algo que   depende del [...] del ordenador mientras que la potencia de cálculo depende del [...].

Los ordenadores nos son máquinas inteligentes, no tiene capacidad de razonar, no son creativos ni intuitivos. Todas estas características sí las tienen los humanos y las usan para resolver problemas. Sin embargo, la capacidad de cálculo de los ordenadores es muy superior a la de los humanos. Son capaces de hacer millones de operaciones por segundo. Pero hay que indicarles qué deben hacer en cada instante. Los programas informáticos son  conjuntos de instrucciones que se dan a un ordenador para realizar tareas.
A: hardware; software; software; hardware
Gap 1 offers: hardware; software; shareware; freeware
Gap 2 offers: hardware; software; shareware; freeware
Gap 3 offers: software; hardware
Gap 4 offers: hardware; software

Q: Algoritmos

Cuando los programadores pretenden hacer un programa para que un ordenador resuelva un problema, debe de tener en cuenta las limitaciones y la potencia de los computadores. La forma de resolverlo no va a ser igual a como lo haría una persona.

La estrategia va a consistir en dividir el problema en pasos lo más simples posible y establecer el orden en el que se realizarán esos pasos. A esto lo llamamos algoritmo: El conjunto de pasos ordenados que hay que realizar para resolver un problema.

Que no te asuste la palabra algoritmo muchas cosas que realizas lo haces mediante algoritmos.

Indica en cuáles de las siguientes actividades realizas algoritmos
- Dividir
- Subir escaleras
- Dormir
- Amar
A: Dividir; Subir escaleras

Q: Muchos problemas se pueden resolver de varias formas, lo que permite que podamos usar un algoritmo o no. ¿Qué será más eficaz?
- Es más eficaz no usar algoritmos
- Es más eficaz usar algoritmos (Efectivamente, trabajar de manera ordenada es una metodología eficaz)
A: Es más eficaz usar algoritmos

Q: Pensamiento computacional

Se llama pensamiento computacional a un conjunto de estrategias que sirven para resolver los problemas de programación de software de manera sistemática.

 ¿Se puede utilizar el pensamiento computacional para problemas que no tengan que ver con la programación de software?
- Sí en todo tipo de problemas (Efectivamente, incluso en problemas relacionados con la creatividad)
- Sí, pero solo en problemas que no tengan que ver con la creatividad u otras características del pensamiento humano de las que no son capaces las máquinas (Incluso en esos casos se puede usar)
- No
A: Sí en todo tipo de problemas

Q: La capacidad de cálculo de un ordenador depende de
- La CPU
- La placa base
- El tipo y tamaño de la memoria RAM
- El reloj
- El tipo y capacidad de disco duro
- Memoria caché
A: La CPU

Q: La velocidad de cálculo de un ordenador depende de
- La CPU (La CPU tiene una velocidad máxima de trabajo. El ordenador no puede calcular por encima de esa velocidad, pero no es el que determina la velocidad. Hay otro elemento que la limita.)
- La placa base
- El tamaño de la memoria RAM (La cantidad de memoria RAM no acelera el ordenador, aunque un tamaño insuficiente puede ralentizarlo mucho.)
- El reloj (El reloj es el que marca la velocidad de trabajo. sta nunca podrá ser mayor que la velocidad máxima de la CPU, pero sí menor)
- El tipo y capacidad de disco duro
- Memoria caché (La memoria cache guarda datos que se usan repetidamente durante los cálculo. Disponer de ella, aumenta la velocidad)
A: La CPU; El reloj; Memoria caché

Q: Repertorio de instrucciones

Los procesadores de las distintas CPU tiene un conjunto de cosas que "saben" hacer. A eso se le llama "repertorio de instrucciones".

Este conjunto de instrucciones es sorprendentemente pequeño y cada una de ellas es algo en esencia muy simple que el ordenador puede hacer, por ejemplo sumar dos datos, comparar los bits de dos datos, mover un dato de un registro a otro y cosas por el estilo.

En esta página puedes ver el repertorio de instrucciones de procesadores de la familia x86. ¿Cuantos tipos de operaciones aritméticas pueden hacer los procesadores de esa familia? [...].

¿Esos procesadores tiene instrucciones para calcular multiplicaciones? [...]

¿Esos procesadores tiene instrucciones para calcular divisiones? [...]

¿Esos procesadores tiene instrucciones para calcular raíces cuadradas? [...]

¿Esos procesadores tiene instrucciones para calcular potencias? [...]

Cada instrucción es identificada por el ordenador por un número binario llamado código máquina.

Distintas CPU pueden tener arquitecturas diferentes y sin embargo tener un repertorio de instrucciones similar o idéntico.
A: 12; Sí; Sí; No; No

Q: Código fuente

Se denomina código fuente de un programa al programa escrito en un lenguaje de programación. El código fuente de un programa puede ser comprensible por un programador pero el código [...] de un programa compilado es incomprensible. Los lenguajes interpretados siempre necesitan del código fuente, mientras que los lenguajes compilados no ya que el programa que se ejecuta no es el código fuente del mismo. Aún así, siempre se guardan copias del código fuente porque permiten modificar el programa.

Aún así, esto no suele ser suficiente. Interpretar el código fuente de un programa puede ser una tarea complicada incluso por el propio programador poco tiempo después de haberlo escrito. Por tanto, para evitar ese problema existe un conjunto de buenas prácticas en lo que se refiere a la redacción de los programas:

- Siempre se deben dar nombres significativos a variables y constantes (es decir, los datos no se escriben directamente sino con nombres que nos indican cuál  es su significado.
- El código debe estar sangrado. Esto significa que cuando se escriben instrucciones que están dentro de otras, estas se escriben un poco a la derecha
- Se insertan lineas para diferenciar partes del programa.
- Se deben escribir comentarios. Todos los lenguajes de programación permiten escribir cosas que no interpretará ni el interprete de comandos ni el compilador. Son mensajes para el propio programador, para colaboradores o incluso para otros programadores desconocidos.
A: máquina

Q: Infórmate del significado de los conceptos  software libre y software privativo e indica qué debe de cumplir el software para ser denominado libre
- Se tiene que poder tener acceso al código fuente (Esta es la característica más importante del software libre. Este concepto pretende que los programadores puedan beneficiarse del trabajo de otros incluso sin conocerse, para lo cual, el código fuente debe poder ser estudiado)
- El código se debe poder modificar
- El programa se puede ejecutar (Es una característica de tanto el software libre como el privativo)
- El programa se puede distribuir
- Es gratuito (Aunque es muy frecuente que sea gratuito, no es una exigencia del software libre)
- Tiene un uso limitado a un periodo de tiempo
A: Se tiene que poder tener acceso al código fuente; El código se debe poder modificar; El programa se puede distribuir

Q: Lenguajes de programación

Cada instrucción del repertorio de instrucciones de un procesador está identificada por un número binario. Cada dato que usa un programa tiene una [...] que es su posición en la memoria. Algo semejante a esto:

0110101 0010111 10110100

Un programa será la secuencia de instrucciones con los datos que usa cada instrucción. Es decir, una serie de ristras semejantes a la anterior. A esto lo llamamos [...] del programa

Programar así escribiendo los códigos de las instrucciones  y las direcciones de los datos sería muy difícil, por eso nunca se programa directamente en código máquina sino mediante lenguajes de programación.

Un lenguaje de programación es un programa en sí que traduce instrucciones escritas de maneta que una persona las pueden entender en el código máquina que entiende la computadora.

Lenguajes de alto  y bajo nivel

Cuanto más próximo al pensamiento humano es el lenguaje de programación se dice que es de más alto nivel y cuanto más próximo al lenguaje de la máquina, el lenguaje es de más bajo nivel.

C, C++, java, python, bash etc. son lenguajes de alto nivel

Ensamblador es el lenguaje de más bajo nivel que hay. Una instrucción de ensamblador corresponde a una instrucción de código máquina pero identificada con una etiqueta que permite recordar qué hace. Por ejemplo en ligar de escribir 0100010 escribir sum (para sumar datos).

Un lenguaje de bajo nivel rentabiliza más los recursos del ordenador que uno de alto nivel

Lenguajes compilados y traducidos

Para que la máquina entienda el programa escrito en un lenguaje de programación hay que pasarlo a código máquina. Esto se puede hacer de dos maneras: bien traduciendo cada instrucción y ejecutándolas de una en una (lenguajes traducidos) o bien pasando todo el programa a código máquina y luego ejecutándolo (lenguajes compilados). Estas tareas las realiza otro programa: interprete de comandos para los lenguajes traducidos y compilador para los compilados.

Un lenguaje traducido funciona más lentamente que uno compilado porque la ejecución lleva con sigo la interpretación anterior de cada instrucción. Mientras que el lenguaje compilado sólo se traduce una vez, al compilarlo y se ejecuta el binario resultante.

python, bash son lenguajes traducidos

java, c, c++ son lenguajes compilados

Depuración

La depuración es el proceso de optimización de un programa: eliminar sus errores y optimizar los recursos.

Los lenguajes [...] son más fáciles de depurar porque al ejecutarse instrucción a instrucción podemos verificar cada paso que está realizando.

Los lenguajes de programación tienen unas reglas muy estrictas llamadas sintaxis. Los compiladores verifican la sintaxis del programa y muestran los errores que tiene (por ejemplo que falte un paréntesis o un punto y coma necesario). Que no tenga errores de sintaxis [...] que va a funcionar bien.
A: dirección; código máquina; traducidos; no significa
Partly right: gap 2 código (50%)
Gap 3 offers: traducidos; compilados
Gap 4 offers: no significa; significa