-->

Menú principal

viernes, 26 de mayo de 2017

TIC 4º ESO - Tema 8.- Introducción a la programación

Tema 8.- Introducción a la programación

Índice

1.- Introducción
2.- Breve historia
3.- Lenguajes de programación
   3.1.- Tipos de lenguajes de programación
   3.2.- Lenguaje LOGO
   3.3.- Lenguaje BASIC
   3.4.- Lenguaje SCRATCH
4.- Conceptos básicos de programación
   4.1.- Definición de algoritmo
   4.2.- Lenguaje pseudocódigo
   4.3.- Análisis de problemas
   4.4. Diagramas de flujo
5.- Introducción al programa Scratch
   5.1.- Entorno de Scratch
   5.2.- Tipos de bloques
   5.3.- Primeros pasos con Scratch

1.- Introducción

Hoy día es de vital importancia conocer el funcionamiento de las nuevas tecnologías de la información y la comunicación. La mayoría de las profesiones y trabajos requieren el uso de ordenadores y conocer aplicaciones informáticas para realizar las tareas de una forma más eficaz y rápida.

Todas las aplicaciones informáticas están desarrolladas mediante el uso de lenguajes de programación, por programadores y analistas programadores. Por eso es importante conocer los aspectos básicos de las técnicas de programación.

Saber programar es una habilidad que es cada día más importante. La expertos en educación consideran que las habilidades de programación serán tan importantes como la habilidad de hablar otros idiomas. Por ello en muchos países se está fomentando que los alumnos/as aprendan a programar desde una edad temprana.
  En muchos países europeos como Gran Bretaña ya se ha implantado la enseñanza de la programación en las aulas, la cual aporta numerosos beneficios para el desarrollo intelectual de la persona. Ya lo decía el famoso Steve Jobs "Pienso que todo el mundo en este país debería aprender a programar, porque eso te enseña a pensar".

En este tema conoceremos los conceptos básicos que se utilizan en programación, un poco de historia de la programación, qué tipos de lenguajes de programación existen actualmente y desarrollaremos algunas aplicaciones prácticas en el entorno de programación de Scratch, un lenguajes basado en bloques que se interconectan y que está revolucionando la enseñanza de los lenguajes de programación a todos los niveles.

Antes de empezar nos planteamos una cuestión: ¿Cuales son las herramientas que mejor se adaptan al proceso de enseñanza-aprendizaje con alumnos de ESO? Los lenguajes de programación reales quizás no sean los más adecuados para enseñar las bases de la programación en las aulas. Por ello es necesario usar herramientas como Pseint, Scratch, Basic, Logo, etc.

2.- Breve historia

Desde los orígenes del primer lenguaje de programación (antes de 1940) hasta el día de hoy, los lenguajes de programación han ido evolucionando, influenciados en gran medida por los avances tecnológicos.

En la siguiente tabla se resumen algunos períodos y lenguajes importantes en dicha evolución:


Charles Babbage, conocido como el Padre de las computadoras, diseñó una máquina totalmente mecánica capaz de realizar cualquier tipo de cálculo matemático: la Máquina Analítica. Aunque la máquina analítica no fue construida hasta 150 años después por el Museo de Londres, Ada Lovelace fue la primer persona que se interesó por la inexistente máquina de Babbage y desarrolló un algoritmo capaz de ser utilizado en ella. De allí que Ada Lovelace sea considerada como la primera programadora de ordenadores de la historia.



- Años 50:

Considerados los lenguajes más viejos utilizados hoy en día. Son lenguajes de alto nivel que fueron creados por científicos, matemáticos y empresarios de la computación.
  • Fortran (Formula Translation): Utilizado para cálculos numéricos y usado en aplicaciones científicas y de ingeniería.
  • LISP (List Procesor): Usado en Inteligencia Artificial, su elementos principal es la Lista.
  • COBOL (Common Business-Oriented Language): Creado en 1960, está orientado principalmente a los negocios, o informática de gestión, recursos humanos, etc.
  • Lenguaje Ensamblador: lenguaje de bajo nivel que usa instrucciones básica para programar circuitos integrados, microcontroladores, etc.

- Años 60:

  • BASIC (Beginner’s All-purpose Symbolic Instruction Code): Lenguaje orientado a la enseñanza de los conceptos básicos de programación.
Era el 1 de octubre de 1964 cuando el primer comando de BASIC se ejecutó con éxito. BASIC fue el primer lenguaje de programación diseñado para todo público, para acercar la programación a todos. De esta manera la programación para todos lleva medio siglo. Antes de este lenguaje la programación estaba relegada a los expertos del lenguaje máquina, y no era sencillo aprender a programar porque no exitían los recursos de hoy día.
Sus creadores, John G. Kemeny y Thomas E. Kurtz, diseñaron este lenguaje para hacer que la informática fuera más accesible a los alumnos de su universidad, la Universidad de Darmouth (Estados Unidos), donde en una de sus habitaciones se creo BASIC.

- 1970

  • Pascal (nombrado así en honor al matemático y físico Francés Blaise Pascal): Lenguaje de alto nivel usado para la enseñanza de la programación estructurada.

- 1972

  • C (Basado en un programa anterior llamado “B”): Es uno de los lenguajes más populares y del él derivan otros como C++, java, etc.

- 1983

  • C++ (Formalmente “C con clases”; ++ es el operador de incremento en “C”): Una extensión de C con mejoras y orientado a objetos.

- 1987


  • Perl (“Pearl” ya estaba ocupado): Aplicaciones de bases de datos, programación web, programación de gráficos, administración de sistemas, etc.

- 1991

  • Python ( en honor a la compañía de comedia británica Monty Python): Usado para desarrollo de aplicaciones web, seguridad informática, etc.

- 1995

  • Java (inspirado en la taza de café consumida mientras se desarrollaba el lenguaje): Actualmente uno de los lenguajes más usados para aplicaciones web.




3.- Lenguajes de programación

Lenguaje de programación es el idioma utilizado para controlar el comportamiento de una máquina, particularmente un ordenador. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.

Hay muchos lenguajes de programación, pero para programar no es necesario conocer todos los lenguajes. En la actualidad los lenguajes de programación estan escritos para ser entendidos por el ser humano, a este código se le llama código fuente, pero no es comprendido por la máquina ya que esta solo maneja el lenguaje binario.
La compilación es el proceso de traducir un programa en código fuente a programa en código objeto (que usa el lenguaje binario), el programa encargado de compilar se llama compilador. La mayoria de software de programación trae su propio compilador.

3.1.- Tipos de lenguajes de programación

Los lenguajes de programación se clasifican en varios tipos, los hay por nivel, y por la forma como se ejecutan.

Por nivel: Hay lenguajes de programación de alto nivel, de medio nivel y lenguajes de bajo nivel. Los lenguajes de alto nivel permiten que con pocas palabras se logre hacer lo mismo que se logra con un lenguaje de bajo nivel.


Lenguajes de bajos nivel: están enfocados a un microprocesador de un ordenador concreto. Ejemplos de lenguaje de bajo nivel: assembler
Lenguaje de medio nivel: Es un tipo de programación que se encuentra entre los lenguajes de bajo nivel y los de alto nivel. Un ejemplo es el lenguaje C, que permite acceder al hardware.

Lenguajes de alto nivel: están más próximos al lenguajes humano que al lenguaje de la máquina. Ejemplos de lenguajes de alto nivel: C++, Python, Java, Visual Basic, etc.

Por la forma como se ejecutan: Hay lenguajes compilados e interpretados.

Los lenguajes compilados necesitan de un programa especial que lea el código fuente y cree un archivo binario ejecutable para una plataforma específica. Ej: C++, Pascal.

Los lenguajes interpretados necesitan de un programa que traduzca en directo el código fuente escrito a instrucciones de la plataforma en la que se ejecutan. Ej: Python, Visual Basic, Script.

Los primeros son más rápidos, mientras que los segundos son más lentos, esto debido a que al compilar un programa las ordenes son más entendibles para la computadora, mientras que al interpretarlo la máquina primero debe leer el código y convertir al paso las instrucciones a instrucciones de máquina entendibles para ella.

4.- Conceptos básicos de programación

Se llama Programación a la implementación de un algoritmo en un determinado lenguaje de programación, para realizar un programa.

Programa (Software en inglés) es una secuencia de instrucciones que una computadora puede interpretar y ejecutar.

El proceso de creación de software es materia de la ingeniería del software, una de las ramas propias de la Ingeniería Informática. Según Niklaus Wirth un programa está formado por algoritmos y estructura de datos.

LENGUAJE DE PROGRAMACION: Conjunto de reglas, símbolos y palabras especiales utilizadas para construir un programa.

LENGUAJE DE MAQUINA: Lenguaje usado directamente por la computadora y compuesto de instrucciones codificadas en sistema binario.

COMPILADOR: Programa que traduce un programa escrito en lenguaje de alto nivel a lenguaje de máquina.

Programación orientada a Objetos:

4.1.- Definición de algoritmo

Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema.

 4.2.- Lenguaje pseudocódigo

 Cuando se trabaja e programación, antes de escribir nuestro programa, primero escribimos el pseudocódigo.

El pseudocódigo es una forma de escribir los pasos que va a realizar un programa de la forma más cercana al lenguaje de programación que vamos a utilizar posteriormente. Es como un falso lenguaje, pero en nuestro idioma, en el lenguaje humano y en español o en el idioma del programador.

Este pseudocódigo sirve para pasarlo posteriormente a cualquier lenguaje de programación, utilizando la sintásis correcta del lenguaje elegido.

Por ejemplo, PSeInt es una herramienta para asistir a un estudiante en sus primeros pasos en programación mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo).
Aquí teneís un ejemplo de pseudocódigo para dibujar un cuadrado:

1 --> Inicio
2 --> Inicializar variables: lado=0, nlados=0
3 --> Pedir por pantalla la introducción de dos valores distintos
4 --> Leer los dos valores y asignarlos a las variables lado y nlados
5 --> Bajar el puntero del lápiz
6 --> Hacer avanzar el puntero la distancia indicada por la variable lado
7 --> Girar 90º la dirección de avance
8 --> Avanzar la distancia del lado
9 --> Girar 90º
10 --> Avanzar la distancia del lado
11 --> Girar 90º
12 --> Avanzar la distancia del lador hasta cerrar el cuadrado
13 --> Subir el puntero del lápiz
14 --> Finalizar

 Después este pseudocódigo lo convertimos al lenguaje de programación que deseemos, como puede ser LOGO, BASIC, etc.

4.3.- Análisis de problemas

El análisis de un problema es la parte mas importante para la resolución del mismo, es donde el programador debe imaginarse como plasmar el problema en el ordenador de forma que refleje el proceso real que se realiza, para ello debe secuenciar cada uno de los pasos que se realizan de forma manual y convertirlos en un proceso automatizado.

Esto se hace en coordinación con los usuarios que tienen que informar al analista-programador del proceso que se sigue, de los datos que necesitan procesar y de los resultados que quieren obtener, ya sea mediante informes, procesos de cálculo, análisis de resultados, gráficos, etc. Esto también se conoce como abstracción del problema, la cual es una característica fundamental a la hora de programar.

Se debe analizar el problema a fin de conseguir el tipo de información que queremos manejar, la cual será tratada por el programa para luego dar una solución o resultado que nos ayudará en la toma de desiciones. El programador debe identificar los elementos o datos del problema que nos ayudaran en la solución del mismo y luego realizar una serie de pasos a seguir ordenados relacionados entre si, dicho procedimiento es el algoritmo.


Todo problema debe tener datos de entrada, los cuales serán pedidos a los usuarios que van a usar el programa, luego de esta captura de datos el programa procesara dicha entrada y debe dar una salida que será de utilidad para el usuario; esta salida debe ser veraz, eficiente y confiable, esto se logra con pruebas exhaustivas y con ayuda de la experiencia.


La mayoría de los problemas se suelen dividir en sup-problemas, cada uno de ellos mas simples que el original para lograr una estructuración del programa y un desarrollo mejor, esto se logra con el uso de funciones o procedimientos, el cual hablaremos mas adelante en este curso, esto nos ayuda a dividir el problema y atacarlos de diferentes ángulos.

En programación no hay un sólo camino, ni una formula para resolver los problemas cada problema es un mundo distinto y depende del programador encontrar el camino mas eficiente y fácil para llegar a la solución, esto se logra con constancia y experiencia en la programación, desde luego conocer el lenguaje a mayor profundidad ofrece una ventaja mayor debido a que se pueden usar las herramientas que éste nos ofrece.


En resumen, los pasos principales a seguir para analizar un problema son:


1.- Entrevistas con los usuarios para obtener información
2.- Recolectar los datos de partida que intervienen en el proceso a seguir.
3.- Dividir el problemas en partes más pequeñas e independientes.
4.- Establecer prioridades o secuencias de desarrollo que optimizen los tiempos necesarios para resolver el problema en conjunto, dando prioridad a las partes que son más complejas o que se necesitan para continuar con otros procesos.
5.- Recabar información sobre los datos de salida que debe ofrecer el programa
6.- Esablecer un sistema de comprobación y corrección de errores.


Ejercicios

Uno de los primeros ejercicios mas básicos y que muestra la esencia de la programación es el resultado de operaciones con 2 números la cual presentamos a continuación:

Realizar un programa que permita realizar la suma, la división, el producto, el exponente y la resta de 2 números dados por el usuario.

En primer lugar observamos la entrada de datos y la salida

Entrada: La captura o lectura de los 2 números. Esta es la entrada del programa.

Proceso: Se deben sumar, restar, multiplica, dividir y exponenciar los 2 números.

Salida: Se debe mostrar al usuario el resultado de cada una de las operaciones  de los números que se introdujeron

La solución algorítmicamente sería la siguiente (obviaremos algunos aspectos de):

Inicio del programa.

Declaración de las variables.
Numero1, Numero2, Resultado

Leer Numero 1
Leer Numero 2
Resultado1= Numero1+Numero2
Resultado2= Numero1 * Numero2
Resultado3= Numero1 / Numero2
Resultado4= Numero1 ^ Numero2
Resultado5= Numero1 - Numero2
Imprimir Resultado

Fin del programa.


El resultado de este psuedocódigo pasado a lenguaje BASIC sería el siguiente:

REM Start of BASIC! Program
input "Introduce primer numero", numero1
input "Introduce segundo numero", numero2
print "La suma es:"; numero1+numero2
print "El producto es:"; numero1*numero2
print "La división es:"; numero1/numero2
print "El exponente es:"; numero1^numero2
print "La resta es:"; numero1-numero2

4.4. Diagramas de flujo

Un diagrama de flujo es una representación esquemática de los distintos pasos de un programa. Constituyen pues, otra forma de representar algoritmos distinta al pseudocódigo, pero que nos sirve de forma complementaria en el proceso de creación de la estructura del programa antes de ponernos delante del ordenador.

El diagrama de flujo goza de ventajas como el ser altamente intuitivo, fácil de leer, claro y preciso. Su interés para nosotros, sin desdeñar su utilidad profesional, radica en su valor didáctico. Lo consideraremos una herramienta muy potente de cara a comenzar a programar ya que su contenido gráfico lo hace menos árido que el pseudocódigo.

Las limitaciones principales de los diagramas de flujo derivan precisamente de su carácter de dibujo. No resultan tan fáciles de crear o de mantener como el texto del pseudocódigo (que podemos trabajar en un procesador de textos cualquiera) y pueden requerir utilizar papeles tipo plano (más grande de lo normal) cuando los programas son de cierta longitud.

Para la creación de diagramas de flujo utilizaremos unos símbolos y normas de construcción determinados. En nuestro caso, un modelo simplificado de los estándares internacionales, con el objeto de poder interpretar y ser interpretados por otros programadores. Estos símbolos son:
    


Decisión múltiple. El dato o condición planteada presenta distintas alternativas (casos), siguiendo el programa distinta vía en función del caso.



Módulo independiente. Recibe distintos nombres como subprograma, subrutina, proceso, procedimiento, etc. Al llegar a esta llamada el programa pasa a ejecutar todas las instrucciones contenidas en la subrutina para una vez terminadas continuar el flujo.


Existen otros símbolos, en especial los relacionados con estructuras de repetición, que veremos cuando estudiemos éstas.


Un ejemplo de diagrama de flujo para calcular la superficie de un rectángulo:
Agunos programas sencillos para realizar diagramas de flujo son:

SmartDraw: Es un programa que dispone de plantillas de inicio rápido, y tiene un asistente que realiza las conexiones de forma automática.

RFFlow es un programa que te servirá para construir tus diagramas de flujo de una forma muy sencilla. En el encontrarás todos los símbolos necesarios para los diagramas y te permite escribir las secuencias de instrucciones dentro de ellos. Si quieres aprender que son y como se hacen los diagramas de flujo te recomendamos este enlace: Diagramas de Flujo





Draw de LibreOffice: Para aquellos que no están familiarizados con LibreOffice, se trata de una aplicación ofimática para personas que no quieren pagar por Microsoft Office, pero quieren una suite que funciona de manera similar. Draw le ayuda a hacer sus propios planes, esquemas y otras representaciones de datos visuales. Le permite introducir símbolos y flechas para conectar mejor las ideas y una vez haya terminado, puede exportar el dibujo y guardarlo como un PDF, archivo de imagen o en una diversidad de formatos. http://www.libreoffice.org/discover/draw/ 



Draw.io es una aplicación web que se puede utilizar a través de un navegador. Esto significa que no hay necesidad de descargar o instalar nada. Una vez abierta, usted simplemente tiene que decidir dónde quiere guardar su diagrama una vez creado. Es muy fácil de usar y le da una buena variedad de figuras y opciones para utilizar. Usted puede cambiar sus formas, añadir color, cambiar su tamaño y hacer muchas otras modificaciones para personalizar sus diagramas. Por supuesto, también se puede añadir texto. Cuando haya terminado, simplemente haga clic en "Archivo > Descargar" para descargarlo a su ordenador. Usted puede descargar su diagrama en diversos formatos de archivo. https://www.draw.io/ 


Dia: Esta es otra opción simple aunque muy amigable cuando se trata de creación de diagramas con herramientas libres. Ofrece una gran variedad de plantillas para ser utilizadas, y va más allá de la simple correspondiencia de ideas. Es una herramienta descargable de uso gratuito y fácil de instalar y comprender. http://dia-installer.de/ 


Ejercicio: Realizar un diagrama de flujo con Draw de LibreOffice, para un programa que realice varias operaciones con dos numéros. (Ejemplo anterior).


5.- Introducción al programa Scratch

MIT Scratch deja a un lado el puro lenguaje de programación para trabajar a partir de bloques de colores, con los que se podrán crear las estructuras básicas, como bucles y secuencias, pudiendo editar posteriormente los parámetros de cada una de esas funciones. De ese modo, la creación de un programa precisa tan solo del arrastre de los elementos multimedia a la ventana de trabajo, añadiendo los diferentes comandos desde la opción de programas.

Este software permite familiarizarse con la programación desde muy pequeños, pudiendo crear historias animadas, juegos sencillos y aplicaciones interactivas. Un gran paso adelante en el inicio de una larga carrera como programador. Una herramienta que puede transformar el modo en que estos pequeños alumnos se enfrenten a la programación en edades posteriores.

Con MIT Scratch nunca es demasiado tarde para entrar en contacto con la programación. Este potente editor multimedia ha sido desarrollado para que esta materia pueda ser introducida desde edades muy tempranas en la escuela, pero sin asustar a los alumnos con complicados lenguajes, sino haciéndolo de un modo interactivo y muy visual.

Para iniciarnos en la programación con Scratch vamos a consultar esta web:

http://recursostic.educacion.es/observatorio/web/fr/software/programacion/619-iniciandose-en-la-programacion-con-scratch

5.1.- Entorno de Scratch

Scratch se utiliza desde un "entorno de desarrollo" que muestra de un sólo golpe de vista todos los elementos necesarios: escenario, objetos y elementos del lenguaje.

Para ejecutar el programa Scratch vamos al menú: Aplicaciones-->Programación-->Scartch


Como se muestra en la siguiente figura, el entorno de trabajo cuenta con tres subdivisiones principales, a la derecha está el área de trabajo donde se colocan los objetos o sprites que aparecen en las animaciones creadas, en el área central se encuentran todas las características asociadas al objeto como el área de programas, disfraces y sonidos. En el lado izquierdo, aparecen todos los bloques de acciones que se pueden asignar a un objeto por ejemplo: movimiento, apariencia, sonido, lápiz, control, sensores, operadores y variables. En la parte superior aparece la barra de menús donde se realizan las acciones propias del archivo como Nuevo, Abrir, Guardar,  Editar, Compartir y Ayuda.

5.1.1.- El Escenario


El escenario es el espacio donde podrás coloca los objetos, para que realicen sus acciones, en la parte superior derecha encontramos dos objetos que son muy importantes para la visualización de la animación:
  • Bandera verde: Al hacer clic izquierdo con el ratón  las acciones asociados a cada uno de los objetos, empezarán a realizarse.
  • Botón rojo: Detiene todas las acciones de los objetos en el escenario.