¿Qué Es Un Lenguaje De Programación? Tema 6. Sentencias De Control

Transcription

Tema 3Módulo I: Conceptos Básicos¿Qué es unLenguaje deProgramación? Tema 1. ¿Qué es un ordenador? Tema 2. ¿Cómo se representan los datos en unordenador? Tema 3. ¿QuéQué es un lenguaje de programacióprogramación? Tema 4. ¿Cómo se hace un programa informático? Tema 5. Tipos de datos y operadores básicos Tema 6. Sentencias de ControlDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaConocimientos y HabilidadesDespués de este tema, el alumno debería ser capaz de:Tener una perspectiva de la evolución de los lenguajes deprogramaciónCuestiones a resolver ¿Qué es un programa informático? Evolución de los lenguajes de programaciónDistinguir entre lenguajes máquina, ensamblador y de alto nivel.Comprender el proceso de creación de un programaDistinguir las diferentes categorías de los lenguajes:procedurales, orientadoorientado-a-objetos, funcionales, declarativos yespecialesDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática Categorías de los lenguajes Metodologías de programaciónDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática¿Qué es un programa(informático)?Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática1

Algoritmo: conjunto de pasos pararesolver un problemaPrograma:Programa: Es una colección deinstrucciones que indican al ordenadorlo que debe hacer.Muhammad ibn Musa al-Khwarizmi800 - 847, BaghdadDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaEn los programas, los diferentes pasosde un algoritmo se expresan comoinstrucciones,instrucciones, sentencias oproposiciones.proposiciones. Ö un programa constade una secuencia de instrucciones.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaProgramación:Programación: conjunto deoperaciones que conducen a expresarun algoritmo en forma de programaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaInstrucciones BásicasLenguaje de Programación:Programación: "idioma"utilizado para describir programas osecuencias de instruccionesEntrada/Salida:Entrada/Salida: transferencia de información entre losperiféricos y la memoria centralAritméticoAritmético-lógicas:lógicas: ejecutan operaciones aritméticas y lógicasSelectivas:Selectivas: permiten la selección de tareas alternativas enfunción de determinados resultadosRepetitivas:Repetitivas: permiten la repetición de secuencias deinstruccionesDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática2

Cuestiones a resolverEvolución de los lenguajes deprogramación ¿Qué es un programa informático? Evolución de los lenguajes de programación Categorías de los lenguajes Metodologías de programaciónDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma 'hardware'Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPerforadora Eléctrica de TarjetasPerforadasDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaProgramas en Tarjetas PerforadasDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaProgramadores de Tarjetas PerforadasDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática3

Programas de Tarjetas PerforadasProgramas almacenados en memoriaModelo A1: Calculadora Electrónica Programada con Tarjetas de IBM(1954)Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma almacenado en memoriaRecuerda:El único lenguaje que entiende unordenador es el lenguaje ento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguaje Máquina Está escrito en lenguaje directamente inteligible por la máquina Utiliza el alfabeto binario (0 y 1), lo que permite programar consecuencias de unos y ceros (código máquina) El conjunto de instrucciones depende de la máquina Ventajas: posibilidad de transferir un programa a la memoria sinnecesidad de traducción posterior Ö mayor velocidad Inconvenientes: dificultad en la codificación y depuración de losprogramas; dependencia de la máquinaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemáticalenguaje máquinalenguaje máquinaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática4

Programa 111110000000011011101111Lenguajes Simbólicos: ensambladorPrograma en lenguaje 000000000000111101 Cada instrucción equivale a una instrucción enlenguaje de máquina Utiliza palabras mnemotécnicas en lugar decadenas o secuencias de bits. Ejemplo:– ADD B,1 instrucción sumar– MOV A,B instrucción asignar (mover)Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguajes Simbólicos: ensambladorensambladorlenguajeensamblador Necesita traducción Ventajas: mayo facilidad de codificación Inconvenientes: dependencia de la máquina,conocimiento del juego de instruccionesPrograma Fuente:ensambladorlenguaje máquinaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma almacenado en memoriaPrograma Objeto:código máquinaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma 212345678910111213141516Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaProgramaENSAMBLADORPrograma en lenguaje simbólicoEntrysubl2jsbmovabmain, m r2 #12,spC MAIN ARGS CHAR STRING p),-12(fp),6(r2)#2,printr0Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática5

Lenguajes de Alto Nivel Más sencillos de aprender y programar.Se aproximan al lenguaje natural.Son independientes de la máquina.Incluyen rutinas de uso frecuente como son las deentrada/salida, funciones matemáticas, de manera de quese puedan usar siempre sin necesidad de programarlascada vez. Ejemplos de lenguajes de programación de alto nivel: C/C , Fortran, Basic, Pascal, Ada, Prolog, Simula,Modula, Cobol, JAVA, etc.Lenguajes de Alto Nivel Inconvenientes– Incremento de tiempo de puesta a punto– No se aprovechan al máximo los recursos internos dela máquina– Aumento de la ocupación de la memoria– Mayor tiempo de ejecución de los programas Los programas escritos en lenguajes de alto nivelnecesitan ser "traducidos" a lenguaje de máquina.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaTraductores Traductor: programa que traduce el código fuente de unprograma a lenguaje de máquina Intérprete: traductor que toma un programa fuente lotraduce y ejecuta línea a línea. Ejemplo: Smaltalk, Prolog. Compilador: programa que traduce los programasfuentes escritos en lenguajes de alto nivel a lenguaje demáquina, produciendo un programa objeto.intérpretelenguaje de altonivelBASICJAVAlenguaje máquinaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaIntérpretesPastel deCarne"libro de recetas" Método de operación: cada sentencia encontrada en el textodel programa es traducida a código máquina y ejecutainmediatamente.x 5y 3y x 2*yx y 5311Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemáticacompilador3H LzKL&H Llenguaje de altonivelC, C JAVAlenguaje máquinaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática6

Construcción de un programaCompiladores Método de operación: el programa completo Ap (lenguajede alto nivel) se traduce a un lenguaje intermedio (similar alensamblador) As, y después se traduce a código máquina,Am#include stdio.h int main(){if (c 0) cnt ; .}load ax, bxStore ax, bx .0111000011010000Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaEjecución de un ProgramaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaCuestiones a resolver ¿Qué es un programa informático? Evolución de los lenguajes de programación Categorías de los lenguajes Metodologías de programaciónDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaCategorías de lenguajesDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguajes procedurales o imperativos Lenguajes máquina, FORTRAN, COBOL ALGOL,BASIC, C, PASCAL, ADA Los lenguajes imperativos usan secuencias,elección e iteración para escribir programas que ledicen a la máquina cómo realizar una tareaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática7

Lenguajes procedurales o imperativos(II) Las instrucciones se ejecutan normalmente enorden secuencial, en el mismo orden en que estánescritas, que sólo varía cuando se alcanza unainstrucción de control (un bucle, una instruccióncondicional o una transferencia).Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguaje C Se trata de un lenguaje no fuertemente tipado de medionivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de altonivel pero, a su vez, dispone de construcciones dellenguaje que permiten un control a muy bajo nivel. Unejemplo es la posibilidad de mezclar código enensamblador con código C o acceder directamente amemoria o dispositivos periféricos.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma en C123456789101112131415161718#include stdio.h /* Entrada / salida estándar */int main(void){puts("¡Hola, Mundo!");return 0;}Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguaje C C es un lenguaje de programación creado en 1969 por KenThompson y Dennis M. Ritchie en los Laboratorios Bellbasándose en los lenguajes BCPL y B. Al igual que sus dos predecesores, es un lenguajeorientado a la implementación de Sistemas Operativos (lossistemas operativos Linux y UNIX están escritosmayormente en C), pero se ha convertido en un lenguajede propósito general de los más usados.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguaje C Destaca su gran riqueza de operadores y expresiones. Existe un estándar ISO de 1986 denominado ANSI C. Enteoría, un lenguaje 100% ANSI C sería portable entreplataformas y/o arquitecturas pero en la práctica esto no essiempre cierto.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguajes Orientados a Objeto SIMULASmalltalkC Java Los lenguajes orientados a objeto obligan alprogramador a concentrar la información en tiposde datos abstractos. Esto se hace asociando código imperativo convariables (llamadas objetos)objetos y teniendo unajerarquía de tipos de variables (llamadas clases).clasesDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática8

Lenguaje C C (pronunciado /ce.mas.más/, o /si.plas.plás/) es unlenguaje de programación, diseñado a mediados de losochenta, por Bjarne Stroustrup, como extensión dellenguaje de programación C. Es un lenguaje híbrido, que se puede compilar y resultamás sencillo de aprender para los programadores que yaconocen C.Lenguaje C Las principales características del C son:– abstracción (encapsulación)– el soporte para programación orientada a objetos (polimorfismo)– el soporte de plantillas o programación genérica (Templates) C es un lenguaje que abarca tres paradigmas de laprogramación:– La programación estructurada,– la programación genérica y– la programación orientada a objetos.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma en lenguaje C 123456789101112131415161718/* Este programa lee dos enteros del teclado e imprime su producto.*/#include iostream.h int main (void){// Declaraciones localesint numero1;int numero2;int result;//Sentenciascin numero1;cin numero2;result numero1 * numero2;cout result;return 0;}// mainDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguajes Funcionales LISP Los lenguajes funcionales no tienen variables yusan recursión para realizar cálculos El elemento fundamental en Lisp es la lista, en elsentido más amplio del término, pues tanto losdatos como los programas son listas. De ahí viene su nombre, pues Lisp es un acrónimode "LIStProcessing".Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma en JAVA123456789101112131415161718import javax.swing.JFrame;import javax.swing.JLabel;public class HolaMundo extends JFrame {public static void main(String[] args) {System.out.println("Vamos a crear una ventana que salude al mundo.");new HolaMundo();}public HolaMundo() {super("Prueba de Java");// creo la etiquetaJLabel etiqueta new JLabel("¡Hola, Frame.EXIT ON rtamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguajes Declarativos PROLOG Un lenguaje de programación declarativa estábasado en un subconjunto de lógica matemática El ordenador es programado para inferir reglas ntrevalores en lugar de para calcular valores de salida apartir de datos de entrada. Los programas componen de cláusulas queconstituyen reglas del tipo "Si es verdad elantecendente, entonces es verdad el consecuente".Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática9

Programa 4123456789101112131415161718Programa en PROLOG%%%% declaraciones%%padrede('juan', 'maria'). % juan es padre de mariapadrede('pablo', 'juan'). % pablo es padre de juanpadrede('pablo', 'marcela'). padrede('carlos', 'debora').% A es hijo de B si B es padre de Ahijode(A,B) :- padrede(B,A).% A es abuelo de B si A es padre de C y C es padre Babuelode(A,B) :padrede(A,C),padrede(C, B).% A y B son hermanos si el padre de A es también el padre de B y si A y B no son lomismohermanode(A,B) :padrede(C,A) ,padrede(C,B),A \ B.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaOtros lenguajesDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaLenguajes Declarativos El HTML, acrónimo inglés deHypertext Markup Language(lenguaje de marcación dehipertexto), es un lenguaje demarcas diseñado para estructurartextos y presentarlos en forma dehipertexto, que es el formatoestándar de las páginas web. HTML PHP Javascript JSP (Java Server Pages) .Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaPrograma en PHP123456789101112131415161718 html head title Ejemplo /title /head body ?phpif (isset( POST['muestra'])) {echo 'Hola, '.htmlentities( POST['nombre']).', tu comida favorita es:'. htmlentities( POST['comida']);} else {? form method "POST" action "?" ¿Cuál es tu nombre? input type "text" name "nombre"/ ¿Cuál es tu comida favorita? select name "comida" option Spaghetti /option option Asado /option option Pizza /option /select input type "submit" name "muestra" value "Seguir" /form ?php}? /body /html Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática html head title Ejemplo /title /head body ¡Hola Mundo! /body /html Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaCuestiones a resolver ¿Qué es un programa informático? Evolución de los lenguajes de programación Categorías de los lenguajes Metodologías de programaciónDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática10

METODOLOGIAS DE DESARROLLO DE SOFTWARE4.0184.020METODOLOGIAS DE DESARROLLO DE SOFTWAREDESARROLLO CONVENCIONALGENERACIONES DE METODOLOGÍA/ Los resultados finales son impredeciblesDesarrollo Convencional (Sin Metodología) .Desarrollo Estructurado.Desarrollo Orientado a Objetos./ No hay forma de controlar lo que está sucediendoen el Proyecto/ Los cambios organizativos afectan negativamenteal proceso de desarrolloDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaMETODOLOGIAS DE DESARROLLO DE SOFTWARE4.030METODOLOGIAS DE DESARROLLO DE SOFTWARE4.050DESARROLLO ESTRUCTURADODESARROLLO ORIENTADO AL OBJETO; Programación estructurada; Diseño estructurado; Análisis estructurado; Especificaciones funcionales:: Gráficas: Particionadas: Mínimamente redundantesLa esencia del desarrollo orientado a objetos es laidentificación y organización de conceptos deldominio de la aplicación y no tanto de surepresentación final en un lenguaje deprogramación.Departamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaMETODOLOGIAS DE DESARROLLO DE SOFTWARE4.080METODOLOGIAS DE DESARROLLO DE SOFTWARE4.080CLASIFICACION DE LAS METODOLOGIASO EstructuradasCLASIFICACION DE LAS METODOLOGIASO EstructuradasD Orientadas a ProcesosD Orientadas a ProcesosD Orientadas a datosD Orientadas a datos Jerárquicas No JerárquicasD Mixtas Jerárquicas No JerárquicasD MixtasO Orientadas a ObjetosO Orientadas a ObjetosO Para Sistemas de Tiempo RealO Para Sistemas de Tiempo RealDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática11

METODOLOGIAS DE DESARROLLO DE SOFTWARE4.090METODOLOGIAS DE DESARROLLO DE SOFTWARE4.120METODOLOGIAS ESTRUCTURADASMETODOLOGIAS ORIENTADAS A PROCESOS Especificación estructurada:3Diagramas de Flujo de Datos3Diccionario de Datos3Especificaciones de procesosMETODOLOGIAS ESTRUCTURADASMETODOLOGIAS ORIENTADAS A DATOS JERARQUICOS La estructura de control del programa debe ser jerárquica y sedebe derivar de la estructura de datos del programa El proceso de diseño consiste en definir primero las estructurasde los datos de entrada y salida, mezclarlas todas en unaestructura jerárquica de programa y después ordenardetalladamente la lógica procedimental para que se ajuste aesta estructura El diseño lógico debe preceder y estar separado del diseño físicoDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaMETODOLOGIAS DE DESARROLLO DE SOFTWARE4.150METODOLOGIAS PARA SISTEMAS DE TIEMPO REALManejo de interrupcionesComunicación y sincronización entre tareasGestión de procesos concurrentesRespuesta oportuna ante eventos externosDatos continuos o discretosSe está produciendo una evolución de las metodologías orientadas aobjetos para desarrollos de sistemas de tiempo realDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaResumenDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería TelemáticaProximamente Proximamente ¿Qué es un programa informático? Evolución de los lenguajes de programación Categorías de los lenguajes Metodologías de programaciónDepartamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática¿Cómo se hace unProgramaInformático?Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática12

Lenguaje C Se trata de un lenguaje no fuertemente tipado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Un ejemplo es la posibilidad de mezclar código en