-->

Menú principal

lunes, 5 de diciembre de 2016

TIC 2º BCH Tema 3.- Introducción a la programación

TEMA 3.- INTRODUCCIÓN A LA PROGRAMACIÓN

ÍNDICE

1.- INTRODUCCIÓN A LA PROGRAMACIÓN
2.- LENGUAJES DE PROGRAMACIÓN

     2.1. Historia de los lenguajes de programación
     2.2. Tipos de lenguajes de programación
     2.3. Proceso de traducción a código máquina

3.- ELEMENTOS BÁSICOS DEL LENGUAJE

4.- FASES DE ELABORACIÓN DE UN PROGRAMA INFORMÁTICO

5.- ESTRUCTURA DE UN PROGRAMA INFORMÁTICO

     5.1.- Tipos de instrucciones
     5.2.- Elementos auxiliares

6.- PRÁCTICAS DE PROGRAMACIÓN


1.- INTRODUCCIÓN A LA PROGRAMACIÓN

Todos somos conscientes de la importancia de los avances tecnológicos. Cada día, a nuestro alrededor, interactuamos con máquinas que intentan hacernos la vida más fácil. Desde el cajero de un banco, pasando por la centralita electrónica de nuestro coche, o el ordenador que tenemos en el trabajo o en casa.

Este último puede ser una potente herramienta con la que desarrollar la tarea de comunicación con esta y otras máquinas. Para conseguirlo es indispensable dominar la teoría y práctica de los lenguajes de programación. A lo largo del tema, se muestra qué son, sus partes e iniciarnos a cómo usarlos para resolver problemas construyendo programas informáticos.



Los ordenadores utilizan el código máquina o lenguaje binario, por lo que necesitan un método por el cual puedan interpretar nuestra información. Esa función la realizan los lenguajes de programación, que cada vez van cobrando más importancia, debido al rápido desarrollo de la tecnología. Debido a esto, los lenguajes de programación van evolucionando, mejorando los entornos de desarrollo, añadiendo nuevas herramientas y métodos útiles para los programadores.



2.- LENGUAJES DE PROGRAMACIÓN


Un lenguaje de programación es un conjunto de símbolos y caracteres combinados entre sí, de acuerdo con una sintaxis ya definida y respetando unas reglas establecidas, para posibilitar la comunicación con la CPU del ordenador.

Este proceso implica tres niveles de abstracción:


El lenguaje natural es el que nosotros hablamos y entendemos, el lenguaje de programación es un lenguaje intermedio con una serie de reglas e instrucciones que nos va a servir para que la máquina nos entienda, y el lenguaje máquina es el que entienden los ordenadores que está compuesto de ceros y unos.

 2.1.- Historia de los lenguajes de programación

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:

  • Fortran (Formula Translation)
  • LISP (List Procesor)
  • COBOL (Common Business-Oriented Language)
  • Lenguaje Ensamblador 
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 Translating System), es un lenguaje orientado al cálculo numérico, diseñado en sus inicios para las computadoras IBM y usado en aplicaciones científicas y de ingeniería y es el más antiguo de los Lenguajes de alto nivel. El FORTRAN desde sus inicios dominó el área de la programación y se ha mantenido su desarrollo y aplicación por más de 50 años en distintos segmentos de la ciencia y técnica.
  •  LISP. Es un lenguaje de programación aplicativo o funcional, de propósito general, se basa en la aplicación de funciones a los datos y se apoya en la utilización de funciones matemáticas para el control de los mismos. El elemento fundamental en el LISP es la lista, más ampliamente el término. Cada función del LISP y cada programa que generemos con él vienen dado en forma de lista. El nombre proviene del término “List Processing ”. LISP es muy utilizado en la Inteligencia Artificial.
  • COBOL.(Acrónimo de COmmon Business -Oriented Language, Lenguaje Común Orientado a Negocios) fue creado en el año 1960 con el objetivo de crear un Lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada Informática de gestión

Principales usos: Aplicaciones para supercomputadoras, desarrollo de Inteligencia Artificial, software empresarial, cálculos científicos, etc.
Usados por: NASA, Banca, Universidades, Recursos humanos, etc.

- Años 60:

  • BASIC (Beginner’s All-purpose Symbolic Instruction Code)
 El BASIC original, el Dartmouth BASIC, fue diseñado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New HampshireEstados Unidos, como un medio para facilitar programar computadores a estudiantes (y profesores) que no fueran de ciencias.

El BASIC es un lenguaje de programación que se creo con fines pedagógicos, era el lenguaje que utilizan las microcomputadoras de los años 80. Actualmente sigue siendo muy conocido y tienen muchísimos dialectos muy diferentes al original.

Con el BASIC se quiso hacer un lenguaje de programación mucho más sencillo que los que existían por aquel entonces. Porque los lenguajes que existían requerían tener conocimiento específicos en lenguajes más complejos que eran hechos a medida, principalmente para científicos y matemáticos.

Los principios que originaron la creación del BASIC eran: que fuese fácil de usar por todos, que se le pudiese incorporar características avanzadas y siguiese siendo de fácil uso para los principiantes, ser interactivo, que los mensajes de error fuesen claros, que no fuese necesario tener conocimiento del hardware.

Para crear el BASIC, sus autores se basaron en otros dos lenguajes de programación como el FORTRAN II y el Algol 60, haciendo que este lenguaje fuese adecuado para el uso del computador a tiempo compartido y para la aritmética de matrices. 

El BASIC es un lenguaje de programación muy amplio, con una sintaxis fácil, estructura sencilla y un buen conjunto de operadores. No es un lenguaje específico, es polivalente, potente, se aprende rápidamente, en poco tiempo cualquier usuario es capaz de utilizar casi la totalidad de su código.

BASIC sigue siendo popular a día de hoy en un puñado de dialectos altamente modificados, y en nuevos lenguajes, influenciados por BASIC tales como Microsoft Visual Basic o Gambas en GNU/Linux. En el año 2006, el 59% de los desarrolladores para la plataforma .NET usaban Visual Basic .NET como su único lenguaje.

- 1970

  • Pascal (nombrado así en honor al matemático y físico Francés Blaise Pascal)
Lenguaje de alto nivel. Utilizado para la enseñanza de la programación estructurada y la estructuración de datos. Las versiones comerciales de Pascal fueron ampliamente utilizadas en los años 80’s.
Creador: NiKlaus Wirth
Principales usos: Enseñanza de la programación. Objet Pascal, un derivado, se utiliza comúnmente para el desarrollo de aplicaciones Windows.
Usado por:Apple Lisa (1983) y Skype.

- 1972

  • C (Basado en un programa anterior llamado “B”)
Lenguaje de propósito general, de bajo nivel. Creado por Unix Systems. Es el lenguaje más popular (precedido por Java). De él se derivan muchos lenguajes como C#, Java, Javascript, Perl, PHP y Phyton.
Creador: Dennis Ritchie (Laboratorios Bell)
Principales usos: Programación multiplataforma, programación de sistemas, programación en Unix y desarrollo de videojuegos.
Usado por: Unix (reescrito en C en 1973), primeros servidores y clientes de la WWW.

- 1983

  • C++ (Formalmente “C con clases”; ++ es el operador de incremento en “C”)
Lenguaje de nivel intermedio, orientado a objetos. Una extensión de C con mejoras como clases, funciones virtuales y plantillas.
Creador: Bjarne Stroustrup (Laboratorios Bell)
Principales usos: Desarrollo de aplicaciones comerciales, software embebido, aplicaciones cliente-servidor en videojuegos.
Usado por: Adobe, Google Chrome, Mozilla Firefox, Microsoft Internet Explorer.

1987

  • Perl (“Pearl” ya estaba ocupado)
Lenguaje de propósito general, de alto nivel. Creado para el procesamiento de reportes en sistemas Unix. Hoy en día es conocido por su alto poder y versatilidad.
Creador: Larry Wall (Unisys)
Principales usos: Imágenes generadas por computadora, aplicaciones de base de datos, administración de sistemas, programación web y programación de gráficos.

1991

  • Python ( en honor a la compañía de comedia británica Monty Python)
Lenguaje de propósito general, de alto nivel. Creado para apoyar una gran variedad de estilos de programación de manera divertida. Muchos tutoriales, ejemplos de código e instrucciones a menudo contienen referencias a Monty Python.
Creador: Guido Van Rossum (CWI)
Principales usos: Aplicaciones Web, desarrollo de software, seguridad informática.
Usado por: Google, Yahoo, Spotify

1995

  • Java (inspirado en la taza de café consumida mientras se desarrollaba el lenguaje)
Lenguaje de propósito general, de alto nivel. Hecho para un proyecto de televisión interactiva. Funcionalidad de programación multiplataforma. Es actualmente el segundo lenguaje de programación más popular en el mundo.
Creador: James Gosling (Sun Microsystems)
Principales usos: Programación Web, desarrollo de aplicaciones Web, desarrollo de software, desarrollo de interfaz gráfica de usuario.
Usado por: Android OS/Apps


Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra.
Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.

El lenguaje Java se creó con cinco objetivos principales:
1. Debería usar el paradigma de la programación orientada a objetos.
2. Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
3. Debería incluir por defecto soporte para trabajo en red.
4. Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
5. Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.

El diseño de Java, su robustez, el respaldo de la industria y su fácil portabilidad han hecho de Java uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintos ámbitos de la industria de la informática.

Los entornos de funcionamiento de este lenguaje son:

  • En dispositivos móviles y sistemas embebidos
  • En el navegador web
  • En sistemas de servidor
  • En aplicaciones de escritorio

1995

  • PHP (Formalmente: “Personal Home Page”, ahora es por “Hypertext Preprocessor”)
Lenguaje de código abierto, de propósito general. Se utiliza para construir páginas web dinámicas. Más ampliamente usado en software de código abierto para empresas.
Creador: Rasmus Lerdorf
Principales usos: Construcción y mantenimiento de páginas web dinámicas, desarrollo del lado del servidor.
Usado por: Facebook, Wikipedia, Digg, WordPress, Joomla.

2.2. Tipos de lenguajes de programación

La clasificación de los lenguajes de programación no es única y en este sentido existen varias:
  • Lenguajes de alto y bajo nivel
  • Lenguajes interpretados y compilados
  • Lenguajes orientados o no orientados a objetos
  • Lenguajes de propósito científico, comercial, educativo, etc.
Las combinaciones entre ellas dan lugar también a clasificaciones según su función, estructura, conversión, etc. En este curso se tomará como referencia la primera de las especificadas, es decir, diferenciando entre lenguajes de alto nivel (más cercanos al lenguaje natural humano y por tanto a la forma de pensar del programador), y lenguajes de bajo nivel (entendibles por la máquina según su diseño físico).

Ejemplos de lenguajes de alto nivel son:
Java: de alto nivel, de propósito general, orientado a objetos, compilado e independiente de la plataforma o hardware de la máquina.
PHP: de alto nivel, de uso general, para plataformas web, orientado a objetos, interpretado del lado del servidor.
Ejemplos de lenguajes de bajo nivel son:
Ensamblador: de bajo nivel que implementa una representación simbólica de los códigos de máquina binarios.
Lenguaje máquina: de bajo nivel, interpretado directamente por el microprocesador.

En la tabla siguiente, se muestra una lista de algunos lenguajes según el campo o área de aplicación en que se emplean:


2.3. Proceso de traducción

Anteriormente, ya hemos comentado que la CPU sólo entiende el lenguaje máquina. Este, para
cada máquina concreta, está compuesto por instrucciones en formato binario (0 ó 1).

El programador, para hacer esta tarea más sencilla y productiva, emplea lenguajes de programación específicos para construir un programa informático. Dicho programa se denomina código o programa fuente, no entendible por la máquina, así es necesario un proceso de traducción para convertir dicho programa a otro lenguaje que sí pueda ser entendido por la CPU en la que vamos a trabajar.

Esta traducción o conversión se puede hacer de dos formas distintas que se denominan interpretación o compilación. Por tanto, existen dos programas o aplicaciones encargadas de realizar cada tipo de traducción, estos son, los intérpretes y los compiladores.

1. Intérpretes:
     Un intérprete es a su vez un programa que convierte o traduce un programa, escrito en un lenguaje de programación de alto nivel, instrucción a instrucción o sentencia a sentencia de una forma secuencial, es decir, cada instrucción es traducida una vez traducida la instrucción anterior, así traducción y ejecución se realizan conjuntamente.
     La principal ventaja de esta forma de trabajar es que la ejecución es inmediata, así pueden corregirse posibles errores que vayan surgiendo durante el proceso y continuar a partir de ese punto.

Ejemplos de lenguajes interpretados son: JavaScript, Perl, PHP, Pyton, Lisp, Scheme, Basic, HTML.

2. Compiladores:
Un compilador es un programa, que a partir del todo código fuente genera lo que se llama el código objeto en lenguaje máquina. Así, este proceso lo realiza en dos fases independientes, la primera traduciendo completamente el programa fuente a código máquina y la segunda ejecutando dicho
código máquina u objeto.

Ejemplos de lenguajes compilados son: C, C++, C#, COBOL, Delphi, Fortran, Pascal.

El proceso de compilación requiere más tiempo que en un intérprete, sin embargo, una vez traducido, la ejecución es más rápida al trabajar directamente con el código máquina.



3. Elementos básicos del lenguaje

Aunque cada lenguaje posee sus propias características, hay algunas que son comunes o de las que la mayoría disponen. En esta sección resumimos las principales, mostrando los elementos básicos necesarios para construir un programa informático. En los temas sucesivos se expondrán con más detalle.

3.1. Tipos de datos
Según su uso y función los datos con los que puede trabajar un lenguaje de programación son principalmente:
Entero: para representar números enteros.
Real: para representar números con punto decimal.
Cadena: para datos de tipo texto o carácter.

3.2. Palabras reservadas
Se trata de un conjunto de palabras que el lenguaje de programación considera propias de su sintaxis, y son empleadas para construir instrucciones. Este tipo de palabras no pueden ser usadas, por ejemplo, para crear o nombrar variables.

3.3. Operadores
Los operadores son usados para crear instrucciones realizando cálculos matemáticos, comparaciones u operaciones lógicas. Así encontramos tres tipos:

Operadores aritméticos


Operadores relacionales


Operadores lógicos
3.4. Constantes y variables
Ambos deben ser definidos por un identificador para hacer referencia a ellos durante el programa.
Las constantes son datos que no cambian durante la ejecución del programa.
Las variables por el contrario son datos que pueden cambiar durante el proceso de ejecución.

3.5. Estructuras de control de flujo
Según su función encontramos las siguientes:
FOR...NEXT: Repite un bloque de instrucciones un número de veces fijado.

IF...THEN...ELSE: A raíz de realizar una comparación lógica, ejecutan una o varias instrucciones.
SELECT....CASE: Permiten ejecutar un bloque de código diferente según el valor que toma una variable.
WHILE...WENT: Se repite un bloque de código mientras se cumpla una condición
DO....WHILE: Es similar a While-Went. Se ejecuta un bloque de instrucciones hasta que se cumpla una condición. La diferencia es que aquí el código se ejecuta mientras no se cumple la condición y cuando se cumple se sale del bucle.

6. Funciones
Son una especie de variables, definidas por el usuario o pertenecientes al lenguaje, que al llamarlas ejecutan un bloque de código (subprograma) con el objetivo de simplificar el código del programa en caso de invocarlas en varias ocasiones.

7. Comentarios
Trozos de código que no se ejecutan, así su función es la de comentar o aclarar partes del programa para facilitar su seguimiento.

4. Fases de elaboración de un programa informático

Una aplicación informática (o conjunto de programas) se desarrolla, como hemos comentado, con el objetivo de solucionar un determinado problema. Para ello se deberá tener en cuenta el llamado ciclo de vida, compuesto por las etapas que se deben seguir secuencial y ordenadamente. Dichas etapas son:

1. Análisis
Fase de especificación de cuáles son las necesidades que debe satisfacer nuestra aplicación y el planteamiento para cubrirlas.

2. Diseño
Una vez identificadas las necesidades, en la fase de diseño se deben detallar todos y cada uno de los elementos que usaremos: recursos físicos (característica del ordenador, periféricos, etc) y lógicos (sistema operativo, compilador, herramientas de utilidad, etc).

3. Codificación
Como se ha visto en una sección anterior, la tarea aquí es la de traducir a un lenguaje de programación la solución obtenida en la fase de diseño.

4. Explotación
Para explotar nuestra aplicación o programa se deberá implantar en el sistema informático que estemos usando, esto es, instalándola para posteriormente ejecutarla y comprobar los resultados que nos ofrece.

5. Mantenimiento
Esta última etapa está fundamentalmente relacionada con la idea de mejorar el programa desarrollado, corrigiendo errores y proporcionando ideas que lo hagan más eficiente. Así, en ocasiones puede dar lugar al reinicio del ciclo de vida.

5.- ESTRUCTURA DE UN PROGRAMA INFORMÁTICO

Un programa informáticos consta de una serie de bloques o secciones diferenciadas, cada una de las cuales cumple su función, entre ellas se pueden destacar:

  1. Cabecera del programa
  2. Declaración de constantes
  3. Declaración de tipos
  4. Declaración de variables
  5. Declaración de subprogramas o funciones
  6. Cuerpo del programa

5.1.- Cabecera de un programa

La cabecera es una sección obligatoria, debe figurar en todos los programas. Debe comenzar con la palabra reservada program seguida del nombre del programa y un ";". Con esto ya se cumplirían los requisitos mínimos que debe tener una cabecera, pero se puede y es muy recomendable incluír también un comentario. Este comentario lo utilizamos para documentar el programa, que es algo que la gente suele dejar en segundo plano, pero es de lo más importante en programación. En el comentario se debe incluír el mayor número de componentes de los que se citan a continuación:

  • Autor del programa
  • Versión actual
  • Fecha de inicio del programa
  • Fecha de la última modificación
  • Qué se pretende que haga el programa
  • Nombre del fichero fuente en el que se guarda
  • Otras cosas que te ayuden a documentar tu programa 

program MiPrimerPrograma;

(*************************************************)
(*        Autor: Nombre del autor del            *) 
(*      Version: 1.0                             *) 
(* Fecha inicio: 25/11/2016                      *) 
(* Fecha modif.: 29/11/2017                      *) 
(*     Objetivo: Crear una agenda de contactos   *) 
(*      Fichero: nombre-fichero.pas fichero.bas  *) 
(*************************************************)  


5.2.- Declaración de constantes

Esta sección no es obligatoria, y sólo tendrás que declararla si quieres definir alguna constante en tu programa.
A continuación se muestra la manera en que se escribe la sección de constantes. Es tan fácil como empezar con la palabra reservada const, seguida de una lista de parejas nombre_de_la_constante=valor_de_la_constante:


const identificador1=valor1;...;identificadorn=valorn;
Una constante es un objeto al que se le asigna un valor al declararlo y lo mantiene durante toda la ejecución del programa. Si quieres profundizar en este tema puedes ir al capítulo sobre constantes y variables. Mira el siguiente ejemplo y verás que declarar constantes es una de las cosas más fáciles que hay en Pascal.






const Pi=3,1416

En este ejemplo se declara la constante Pi.

5.3.- Declaración de tipos

Esta sección no es obligatoria, y sólo tendrás que declararla si quieres definir tus propios tipos de datos en el programa. Para programas sencillos no te hará falta declarar tipos, te bastará con los que te proporciona Pascal o cualquier otro lenguaje de alto nivel(Integer, Real, Boolean, String, ...). Aunque a veces es interesante declarar tipos para hacer el código más legible. Por ejemplo:
            type identificador1=valor1;...;identificadorn=valorn


5.4.- Declaración de variables

Esta sección, aunque no es obligatoria casi siempre se declara. Pues un programa por muy pequeño que sea, casi siempre va a hacer uso de variables. Por ejemplo, si utilizas algún bucle en tu programa, tienes que tener por lo menos una variable para la progresión de éste.
Nota: Cuando hablamos de un bucle nos estamos refiriendo a las estructuras de control repetitivas. En ellas puedes profundizar en Control del flujo.
La forma de declarar variables es muy sencilla. Esta sección debe comenzar con la palabra reservada var, seguida de una lista de parejas lista_de_variables=tipo_al_que_pertenecen. Cada par debe ir seguido por un punto y coma. La lista_de_variables es uno o más nombres de variables separados por comas:


var listaVar1:tipo1;...;listaVarn:tipon;