Download Transparencias de clase
Document related concepts
Transcript
Fundamentos de Informática Grado en Información y Documentación Tema 4 Introducción a la programación 1 Contenidos Introducción: Programas e instrucciones. Representación de instrucciones. Tipos de instrucciones. Tipos de estructuras en programas. Partes de una instrucción. Tipos de lenguajes. Código máquina. Lenguaje ensamblador. Lenguajes de alto nivel Lenguajes de bajo nivel vs lenguajes de alto nivel. Lenguajes de programación: Evolución. Traducción. Ejemplos de lenguajes de alto nivel. Entorno de programación. Metodología de la programación. Software libre y software propietario. 2 Introducción: Programas e instrucciones. Para trabajar con un sistema informático nos hace falta un ordenador (Hardware) y una serie de programas (Software). Un programa se puede ver como la solución a un problema establecida en términos de una secuencia de pasos computacionales (instrucciones o sentencias). La programación de ordenadores es el proceso de planificación de secuencias de las instrucciones para realizar una acción o tarea. Instrucción1 3 Instrucción2 Instrucción3 Representación de instrucciones. Un programa se compone de instrucciones. Las instrucciones se representan mediante 0’s y 1s. Código binario o Código máquina. Cada codificación depende del procesador. Las instrucciones deben ser sencillas. Por ejemplo, suma A,B y no Dibuja una casa. 4 Tipos de instrucciones Instrucciones de transferencia: Mover los datos de un sitio a otro. Instrucciones de tratamiento de datos: Operaciones Aritmético-Lógicas Instrucciones de control: Permiten saltar el orden secuencial de un programa. Debido a esto, encontramos tres tipos de estructuras en los programas: 5 Estructura secuencial: Una sentencia sigue a otra. Estructura condicional: Dependiendo de cuna condición se ejecuta un conjunto de sentencias u otro. Estructura repetitiva: Dependiendo de una condición se ejecuta de forma repetitiva un conjunto de sentencias. Tipos de estructuras en programas. 6 Partes de una instrucción Código de operación: Codifican una instrucción determinada. Argumentos: Datos de la instrucción: Pueden ser: 7 Direcciones de memoria con datos. Datos a usar directamente. Direcciones de memoria con la siguiente instrucción. Código máquina Código máquina, código binario, lenguaje máquina o lenguaje de bajo nivel. 8 Las instrucciones propias de cada máquina están codificadas con ceros y unos. Dependiente del procesador. Incomprensibles y engorrosos de usar. Realización de tareas complejas supone un gran esfuerzo. Es dificil escribir en binario, se usan nemotécnicos (SUM, MUL,....). Lenguaje ensamblador 9 Nemotécnico del código máquina. Sigue ligado al ordenador, pero menos engorroso, pues se utilizan palabras en lugar de sólo ceros y unos Se traduce a lenguaje máquina, con un programa Ensamblador. Permiten variables, macros y comentarios. Lenguajes de alto nivel Cercanos al lenguaje natural y matemático. Por tanto son mas fáciles de entender, leer y escribir. Más compatibles (casi independientes del procesador). Se permiten operaciones más complejas. Ej.: raíz cuadrada. Son menos eficientes. Se pueden usar sin conocer los entresijos de los ordenadores. Necesidad de un Traductor que pase de lenguaje de alto nivel a código máquina. 10 Lenguajes de alto nivel vs. bajo nivel Si(nota>=5)entonces nota=aprobado Sino nota=suspenso Escribe(nota) 11 Mueve M[22], R1 Mueve 5,R2 Compara R1,R2 SaltaMenor M[10] Mueve M[30],x41 Mueve M[31],x70 Mueve M[32],x72 Mueve M[33],x6F, etc. Lenguajes de programación. Evolución. Programas en Circuitos (No hay lenguaje como tal) Con Von Newmann nacen lenguajes específicos para cada computadora, en formato binario; son instrucciones simples (0001101011101011010). Código máquina. Lenguaje Ensamblador. Lenguajes de alto nivel. Lenguajes de cuarta generación: Herramientas que permiten construir aplicaciones sencillas combinando piezas prefabricadas. 12 Traducción Necesidad de un Traductor que pase de lenguaje de alto nivel a código máquina: Compilador: Se hace la conversión una vez de forma completa. Una vez obtenido el programa ejecutable, se ejecutará todas las veces que queramos, sin nuevas traducciones. Intérprete: Se hace la conversión cada vez que se llama, sentencia a sentencia. Interpreta una instrucción y la ejecuta directamente. La traducción se repite en cada ejecución del programa. Los programas son más portables pero más difíciles de optimizar y más lentos. Cuando la traducción se hace en una máquina distinta a la de ejecución del programa, se utiliza un traductor cruzado. En una computadora se puede interpretar otra distinta, con programas llamados emuladores. 13 Ejemplos de lenguajes de alto nivel Java (Interpretado), C(Compilado), C++(Compilado), C# (Interpretado), Objetive C (Compilado), Pascal(Compilado), Python (Interpretado), PHP (Interpretado), Perl (Interpretado) , JavaScript (Interpretado), Basic(Interpretado), Cobol(compilado), Fortran(Compilado) 14 Entorno de programación Editor de texto Compilador/traductor Depurador: Para corregir errores. Sistemas de ayuda Herramientas varias (generación de documentación, generación de interfaces de usuario, etc.) 15 Metodología de la programación Estudio de procedimientos y/o métodos para resolver problemas con computadoras, independientemente de un lenguaje de programación concreto y del ordenador que se va a implementar. Es fundamental que los programas cumplan: 16 Legibles: Comprensibles para cualquier programador. Modificables: Su estructura debe permitir modificaciones. Depurables: Debe ser fácil la localización y corrección de errores. Software libre y software propietario El software libre es el software que respeta la libertad de los usuarios y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado, redistribuido libremente e incluso vendido. Por lo tanto, debe venir acompañado del código fuente. El software libre suele ser gratis o a precio de costo. Sin embargo no es obligatorio que sea así, por lo tanto software libre no es "software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente. Dentro de software libre hay, a su vez, matices que es necesario tener en cuenta: El software de dominio publico no está protegido, por tanto, podrían generarse versiones no libres del mismo. El software libre protegido con copyleft impide a los redistribuidores incluir algún tipo de restricción, es decir, después de los cambios seguirá siendo libre. El software propietario (también llamado no libre o privativo) se refiere a cualquier programa donde los usuarios tienen limitadas las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones), o que su código fuente no está disponible o el acceso a éste se encuentra restringido. 17