Download POO I - Buap
Document related concepts
Transcript
Introducción Facultad de Ciencias de la Computación Juan Carlos Conde R. Object-Oriented Programming I Conceptos de Programación Contenido Programación por Computadora 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación Lenguajes de Programación 1 / 38 Conceptos de Programación Contenido Programación por Computadora 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación Lenguajes de Programación 2 / 38 Conceptos de Programación Programación por Computadora Lenguajes de Programación I ¾Cuál es el propósito es una computadora? I ¾Qué signica la palabra programación? I ¾Qué es un programa de computadora? I ¾De qué manera una computadora entiende un programa? I ¾Cómo se escribe un programa? 3 / 38 Conceptos de Programación La computadora Programación por Computadora Lenguajes de Programación "Es un objeto que calcula especícamente. Dispositivo electrónico programable que puede almacenar, recuperar y procesar datos." 4 / 38 Conceptos de Programación Programación Programación por Computadora Lenguajes de Programación parte I Mucho de lo que hace todos los días lo hace de manera automática. Por fortuna no es necesario que piense conscientemente que todo paso requerido en un proceso tan simple como dar vuelta a la página: 1. Levantar la mano. 2. Mover la mano a la derecha del libro. 3. Asir la esquina derecha de la página. 4. Mover la mano de derecha a izquierda hasta que la página esté colocada de modo que pueda leer lo que está sobre la otra página. 5. Soltar la página. 5 / 38 Conceptos de Programación Programación Programación por Computadora Lenguajes de Programación parte II Piense en cuántas neuronas debe encender y cuántos músculos deben responder, todo en cierto orden o secuencia, para mover su brazo y su mano. Sin embargo, lo hace de manera inconsciente. 6 / 38 Conceptos de Programación Programación Programación por Computadora Lenguajes de Programación parte III Mucho de lo que hace de manera inconsciente lo tuvo que aprender una vez. Observe cómo un bebé se concentra en poner un pie antes que el otro mientras aprende a caminar. Luego, observe a un grupo de niños de tres años que juegan a la roña. 7 / 38 Conceptos de Programación Programación Programación por Computadora Lenguajes de Programación parte IV I En una escala más amplia, las matemáticas nunca se podrían haber desarrollado sin secuencias lógicas de pasos para resolver problemas y demostrar teoremas. I La producción en masa nunca habría funcionado sin operaciones que tienen lugar en cierto orden. "La civilización se basa en el orden de las cosas y acciones... Se crea orden, de manera consciente e inconsciente, en un proceso al que se denomina programación" 8 / 38 Conceptos de Programación Programación por Computadora Computadora + Programación Lenguajes de Programación En base a lo anterior podemos distinguir dos cosas: I Programa de computadora. Secuencia de instrucciones que realizará una computadora. I Programación por computadora. Proceso de planicar una secuencia de pasos para que los desarrolle una computadora. 9 / 38 Conceptos de Programación Programación por Computadora Lenguajes de Programación Pero una computadora NO es inteligente; no es capaz de analizar un problema y proponer una solución. entonces ¾Cómo se escribe un programa? Un humano (el programador ) debe analizar el problema, desarrollar una secuencia de instrucciones para resolver el problema y luego comunicarlo a la computadora. 10 / 38 Conceptos de Programación Contenido Programación por Computadora 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación Lenguajes de Programación 11 / 38 Programación por Computadora Conceptos de Programación Procedimiento Lenguajes de Programación Para escribir una secuencia de instrucciones que efectuará una computadora, se debe ir por un proceso bifásico: Fase de resolución del problema 1. Análisis y especicación. Entender (denir) el problema y lo que debe hacer la solución. 2. Solución general (algoritmo ). Desarrollar una secuencia lógica de pasos que resuelve el problema. 3. Vericar. Seguir los pasos exactamente para ver si la solución resuelve en realidad el problema. 12 / 38 Conceptos de Programación Procedimiento Programación por Computadora Lenguajes de Programación Fase de implementación 1. Solución concreta (programa). Traducir el algoritmo en un lenguaje de programación. 2. Pruebas. Ver que la computadora siga las instrucciones. Después, comprobar de manera manual los resultados. Si encuentra errores, analice el programa y el algoritmo para determinar la fuente de errores, y luego hacer correcciones. Una vez que se ha escrito el programa, entra a la tercera fase: mantenimiento. 13 / 38 Conceptos de Programación Procedimiento Programación por Computadora Lenguajes de Programación 14 / 38 Conceptos de Programación Algoritmos Programación por Computadora Lenguajes de Programación El programador comienza el proceso de programación al analizar el problema y desarrollar una solución general llamada algoritmo. Algoritmo 1. Def. Procedimiento paso a paso para resolver un problema en una cantidad de tiempo nita. 2. Def. Secuencia nita de pasos debidamente ordenados para resolver un problema Por lo tanto, un programa es simplemente un algoritmo que ha sido escrito para una computadora, pero, ¾para cualquier computadora?. 15 / 38 Conceptos de Programación Ejemplo: Programación por Computadora Lenguajes de Programación Suponga que un programador necesita un algoritmo para determinar el salario semanal de un empleado. El algoritmo reeja lo que se haría a mano: 1. Buscar la tasa de pago del empleado. 2. Determinar la cantidad de horas trabajadas durante la semana. 3. Si el número de horas trabajadas es menor o igual que 40, multiplique el número de horas por la tasa de pago para calcular salarios regulares. 4. Si el número de horas trabajadas es mayor que 40, multiplique 40 por la tasa de pago para calcular salarios regulares y luego multiplique la 1 diferencia entre el número de horas trabajadas y 40 por 1 2 veces la tasa de pago para calcular salarios de horas extras. 5. Sumar los salarios regulares a los de horas extras (si existen) para determinar salarios totales para la semana. 16 / 38 Conceptos de Programación Lenguaje de Programación Programación por Computadora Lenguajes de Programación Cuando el programador está satisfecho con el algoritmo, lo traduce en un lenguaje de programación. Lenguaje de programación Conjunto de reglas, símbolos y palabras especiales usado para implementar un programa de computadora. En este curso se usará uno de los lenguajes de programación más poderosos: C++. 17 / 38 Conceptos de Programación Lenguaje de Programación Programación por Computadora Lenguajes de Programación 18 / 38 Conceptos de Programación Lenguaje de Programación Programación por Computadora Lenguajes de Programación ¾Por qué implementaciones distintas? I Un lenguaje de programación permite al programador cierta exibilidad en cómo se traduce un algoritmo. I Dada esta exibilidad, las personas adoptan sus propios estilos al escribir programas, del mismo modo que lo hacen al escribir historias cortas o ensayos. I En todo el libro se ofrecen consejos prácticos acerca del buen estilo de programación. 19 / 38 Conceptos de Programación Lenguaje de Programación Programación por Computadora Lenguajes de Programación 20 / 38 Conceptos de Programación Programación por Computadora ¾Existen Atajos en la Programación? Lenguajes de Programación 21 / 38 Conceptos de Programación Contenido Programación por Computadora 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación Lenguajes de Programación 22 / 38 Conceptos de Programación Bases Programación por Computadora Lenguajes de Programación Lenguaje de máquina Lenguaje conformado por instrucciones en código binario, usado directamente por la computadora. Lenguaje ensamblador Lenguaje de programación de bajo nivel en el que se emplea una ayuda nemotécnica para representar cada una de las instrucciones del lenguaje de máquina para una computadora particular. 23 / 38 Conceptos de Programación Proceso Creativo Programación por Computadora Lenguajes de Programación 24 / 38 Conceptos de Programación Programación por Computadora Conceptos I Ensamblador. Lenguajes de Programación Programa que traduce lenguaje ensamblador en código de máquina. I Compilador. Programa que traduce lenguaje de alto nivel en código de máquina. I Programa fuente. Programa escrito en lenguaje de programación de alto nivel. I Programa objeto. Versión del lenguaje de máquina de un programa fuente. 25 / 38 Conceptos de Programación Programación por Computadora Compilación en Diferentes S.O. Lenguajes de Programación 26 / 38 Conceptos de Programación Compilación y Ejecusión Programación por Computadora Lenguajes de Programación 27 / 38 Conceptos de Programación Programación por Computadora Lenguajes de Programación TAREA 1: Leer el documento Orígenes de C++ ubicado en el directorio Web del curso, en la carpeta de /Recursos, y realizar una lista de las ideas principales referentes a la creación de C++. TAREA 2: Investigar la denición de los siguientes conceptos: I API I IDE I SDK I Framework I Engine 28 / 38 Conceptos de Programación Información básica Programación por Computadora Lenguajes de Programación Compiladores e Interpretes Algunos lenguajes de programación LISP, Prolog y muchas versiones de BASIC, por ejemplo son traducidos por un intérprete en vez de un compilador. Un intérprete traduce y ejecuta cada instrucción del programa fuente, una a la vez. En contraste, un compilador traduce todo el programa fuente en lenguaje de máquina, después de lo cual tiene lugar la ejecución del programa objeto. 29 / 38 Conceptos de Programación Programación por Computadora Lenguajes de Programación Dato Curioso El lenguaje Java emplea tanto un compilador como un intérprete. Primero, se compila un programa Java, no en un lenguaje de máquina de una determinada computadora, sino en un código intermedio llamado bytecode. A continuación, un programa llamado Máquina Virtual de Java (MVJ; JVM, por sus siglas en inglés) toma al programa bytecode y lo interpreta (traduce una instrucción de bytecode en lenguaje de máquina y la ejecuta, traduce la siguiente y la ejecuta, y así sucesivamente). De esta manera, un programa de Java compilado en bytecode es transportable a muchas computadoras diferentes, siempre y cuando cada computadora tenga su propia MVJ que pueda traducir el bytecode en el lenguaje de máquina de la computadora. 30 / 38 Conceptos de Programación Estructuras de Control Programación por Computadora Lenguajes de Programación Los lenguajes de programación requieren el uso de determinadas estructuras de control para expresar los algoritmos como programas. Hay cuatro formas básicas de estructurar sentencias (instrucciones) en la mayoría de los lenguajes de programación: de modo secuencial, condicional, repetitivo y con subprogramas. Cada una de estas formas de estructurar sentencias controla el orden en el cual la computadora ejecuta las sentencias, razón por la que se llaman estructuras de control. 31 / 38 Conceptos de Programación Estructuras de Control Una secuencia Programación por Computadora Lenguajes de Programación es una serie de sentencias que se ejecutan una después de otra. 32 / 38 Conceptos de Programación Estructuras de Control Programación por Computadora Lenguajes de Programación Imagine que conduce un automóvil. Ir por un tramo recto de carretera es como seguir una secuencia de instrucciones. Cuando llega a una bifurcación, debe decidir por dónde ir y luego tomar una vía u otra. Esto es lo que hace la computadora cuando encuentra una estructura de control de selección (a veces llamada bifurcación o decisión) en un programa. Algunas veces se tiene que ir alrededor de una cuadra varias veces a n de hallar un lugar para estacionarse. La computadora hace lo mismo cuando encuentra un ciclo en un programa. 33 / 38 Conceptos de Programación Estructuras de Control La selección, Programación por Computadora Lenguajes de Programación la estructura de control condicional, ejecuta sentencias diferentes dependiendo de determinadas condiciones. 34 / 38 Conceptos de Programación Programación por Computadora Estructuras de Control La estructura de control repetitiva, Lenguajes de Programación el ciclo, repite sentencias mientras se satis- facen ciertas condiciones. 35 / 38 Conceptos de Programación Estructuras de Control Programación por Computadora Lenguajes de Programación Todos los días, por ejemplo, usted sigue un proceso para ir de casa al trabajo. Tiene sentido entonces que alguien le dé instrucciones para llegar a una reunión diciendo: dirígete a la ocina, luego recorre cuatro cuadras hacia el oeste, especicar todos los pasos que tuvo que efectuar para llegar a la ocina. Los sin subprogramas permiten escribir partes de los programas por separado y luego ensamblarlos en una forma nal. Pueden simplicar en gran medida la tarea de escribir programas grandes. 36 / 38 Conceptos de Programación Estructuras de Control El Programación por Computadora Lenguajes de Programación subprograma permite estructurar un programa al descomponerlo en unidades más pequeñas. 37 / 38 Conceptos de Programación Programación por Computadora Lenguajes de Programación La educación en computación no puede hacer a nadie un experto programador así como el estudio de pinceles y pigmentos no puede hacer a alguien un pintor experto. [Eric S. Raymond] Juan Carlos Conde R. juanc.conde@cs.buap.mx 38 / 38