¿Qué es Programar? Es la acción de escribir instrucciones correctas para que sean interpretadas por una máquina ¿En que medida nos compete programar? Depende de nuestro interés. Sin embargo, es una de las habilidades exigidas con frecuencia en el mercado. Saber programar facilita la compresión de muchos sistemas. ¿Que es un Lenguaje de Programación? Es una técnica estándar de comunicación que permite expresar las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen un programa informático. Un lenguaje de programación permite a un programador especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y, qué acciones debe tomar bajo una variada gama de circunstancias. Niveles de los Lenguajes de Programación Lenguaje Natural Lenguaje de Programación Compilador / Intérprete Lenguaje de Máquina Factores Importantes en la Programación Sintaxis Semántica Sistema de tipos Errores / Excepciones Paradigmas de la Programación Un paradigma es un conjunto virtual de elementos de una misma clase gramatical, que pueden aparecer en un mismo contexto: Así, los sustantivos: caballo, rocín, corcel, jamelgo, etc. que pueden figurar en el contexto "El -- relincha", constituyen un paradigma Un paradigma es una forma de representar y manipular el conocimiento. En el campo de la programación los paradigmas representan un enfoque particular o filosofía para la construcción del software. o o No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un paradigma resulta más apropiado que otro. Paradigmas de la Programación Algunos ejemplos de paradigmas de programación: El paradigma imperativo es considerado el más común y está representado, por ejemplo, por el C o por BASIC. El paradigma funcional está representado por la familia de lenguajes LISP, en particular Scheme. El paradigma lógico, un ejemplo es PROLOG. El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk. Nota: Si bien puede seleccionarse la forma pura de estos paradigmas al momento de programar, en la práctica es habitual que se mezclen. Tal es el caso de lenguajes como C++, Delphi o Visual Basic, los cuales combinan el paradigma imperativo con el orientado a objetos. Paradigmas de la Programación El paradigma imperativo: o Describe la programación en términos del estado del programa y sentencias que cambian dicho estado. o Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea. o La implementación de hardware de la mayoría de computadores es imperativa; prácticamente todo el hardware de los computadores está diseñado para ejecutar código de máquina, que es nativo al computador, escrito en una forma imperativa. Paradigmas de la Programación El paradigma orientado a objetos: o La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que se comunican entre ellos para realizar tareas. o Esto difiere de los lenguajes procedurales tradicionales, en los que los datos y los procedimientos están separados y sin relación. Estos métodos están pensados para hacer los programas y módulos más fáciles de escribir, mantener y reutilizar. Etapas de la Compilación Programa ---> Análisis Léxico / Sintaxis Normalización ---> Análisis semántico Código correcto ---> Traducción a lenguaje de máquina Código de Máquina Lenguaje de Máquina Ejemplo Cód. de Oper. Dirección Significado 00010101 10000001 Cargar contenido de la dir 129 al registro 00010111 10000010 Sumar contenido de la dir 130 al registro 00010110 10000011 Almacenar contenido del registro en la dir 131 El computador entiende el lenguaje de máquina Lenguaje de Ensamblador Ejemplo Cód. de Oper. Dirección Ensamblador 00010101 10000001 LOAD A 00010111 10000010 ADD B 00010110 10000011 STORE C Un programa en ensamblador debe ser traducido a lenguaje de máquina El lenguaje ensamblador require que el programador tenga un conocimiento profundo de la arquitectura de la máquina Es dependiente de la máquina y un programa debe ser rescrito si se va a implantar en otra arquitectura Lenguaje de Alto Nivel Ejemplo Cód. de Oper. Dirección Ensamblador Lenguaje Alto Nivel 00010101 10000001 LOAD A 00010111 10000010 ADD B 00010110 10000011 STORE C C = A + B Un programa de alto nivel también debe ser traducido a lenguaje de máquina El lenguaje de alto nivel hace a los programas portátiles Facilita la expresión de la ideas. Evita en una mayor medida que se comentan errores Ofrece una visión más amplia del problema Elementos de un Lenguaje de Programación Un sublenguaje para definir los datos o Qué datos tenemos o Cómo les llamamos o Cómo son (números, caracteres, etc) o Qué se puede hacer con ellos Un sublenguaje para definir los algoritmos o Qué le hacemos a los datos o En qué orden o Cuantas veces Metodología de Desarrollo de Programas Actualmente se cuenta con distintas metodologías para el desarrollo de programas: en espiral, modular, etc Sin embargo, en este curso aprenderemos primero a comprender el problema. En otros cursos podremos profundizar en las metodologías Metodología de Desarrollo de Programas Diseño del Algoritmo: Descripción de una secuencia finita y ordenada de pasos (sin ambigüedades) que conducen a la solución de un problema Herramientas de Diseño: o Diagramas de flujos (programación estructurada) o Círculos y canales de mensaje (programación objetos) o Pseudo Código o Trazas personales o Fórmulas matemáticas o Y todo aquello que le ayude a representar el problema Metodología de Desarrollo de Programas Codificación o Traducción del algoritmo a un lenguaje de programación adecuado Corrida en Frío: Prueba manual de la correctitud del programa Depuración del Programa: Identificación y eliminación de errores o Errores de Sintaxis: Violan las reglas del lenguaje de programación. Un buen compilador localizará e identificará la mayoría de forma automática o Errores Lógicos: Equivocaciones que causan que el programa se ejecute de forma inesperada o incorrecta Metodología de Desarrollo de Programas Ejecución del Programa: Ejecución del código binario que ha resultado después del proceso de traducción a lenguaje de máquina. Esto se hace instrucción por instrucción. Puesta en Operación: o Instalación del hardware o Instalación y configuración del programa Mantenimiento del programa: Comienza tan pronto el programa es puesto en producción. Permite corregir defectos menores, agregar nuevas funcionalidades, etc. Análisis de Entrada Proceso Salida E-P-S Especificacines de Entrada: Información necesaria para la solución del problema o ¿Qué datos son de entrada? o ¿Cuantos datos se introducirán? o ¿Cuales datos de entrada son válidos? Proceso: Operaciones o cálculos necesarios para encontrar la solución del problema o ¿Qué tipo de ecuaciones? o ¿Cuantas ecuaciones? o ¿Cuáles transformaciones sobre los datos? Análisis de Entrada Proceso Salida E-P-S Especificaciones de Salida: Resultados finales de los cálculos o ¿Cuáles son los datos de salida? o ¿Cuantos datos de salida se producirán? o ¿Qué precisión tendrán los resultados? o ¿Se debe imprimir un ecabezado? Diseño de un Algoritmo Un algoritmo debe ser preciso e indicar el orden en que se debe realizar cada paso. Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento, es decir, debe poseer un número finito de pasos. Diseño de un Algoritmo: Ejemplo 1 Suponga que tiene un examen de esta materia. Según una decisión aleatoria cada estudiante va a ver un espectáculo o estudia para el examen. Realizar el análisis de EPS y diseñar un algoritmo para representar el problema. Entrada: Una moneda para tomar la decisión Proceso: Lanzar la moneda y luego tomar la decisión Salida: Resultado en el examen Diseño de un Algoritmo: Ejemplo 1 Algoritmo EstudiarONoEstudiar 0 Inicio 1 Lanzar una moneda 2 Si el resultado es cara, ir a 5 3 Si el resultado es sello, estudiar para el examen 4 Ir a 6 5 Ver un espectáculo 6 Presentar el examen al día siguiente 7 Fin Diseño de un Algoritmo: Ejemplo 2 Calcular el área de un paralelepípedo de dimensiones: LARGO, ANCHO y ALTO Entrada: Tres números reales (LARGO, ANCHO y ALTO) Proceso: Calcular el area Salida: Número real que representa el área Diseño de un Algoritmo: Ejemplo 2 0 Inicio 1 Escribir("Largo del paralelepípedo:") 2 Leer LARGO 3 Escribir("Ancho del paralelepípedo:") 4 Leer ANCHO 5 Escribir("Alto del paralelepípedo:") 6 Leer ALTO 7 AREA = 2 * ( LARGO*ALTO + LARGO*ANCHO + ANCHO*ALTO ) 8 Escribir (AREA) 9 Fin Ejercicios Diseñe un algoritmo para cambiar un caucho al carro Cree un algoritmo para hacer café