Conceptos de Programación Facultad de Ciencias de la Computación Juan Carlos Conde R. Introduction to Programming
Contenido 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación 1 / 38
Contenido 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación 2 / 38
¾Cuál es el propósito es una computadora? ¾Qué signica la palabra programación? ¾Qué es un programa de computadora? ¾De qué manera una computadora entiende un programa? ¾Cómo se escribe un programa? 3 / 38
La computadora "Es un objeto que calcula especícamente. Dispositivo electrónico programable que puede almacenar, recuperar y procesar datos." 4 / 38
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
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
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
Programación parte IV 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. 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
Computadora + Programación En base a lo anterior podemos distinguir dos cosas: Programa de computadora. Secuencia de instrucciones que realizará una computadora. Programación por computadora. Proceso de planicar una secuencia de pasos para que los desarrolle una computadora. 9 / 38
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
Contenido 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación 11 / 38
Procedimiento 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
Procedimiento 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
Procedimiento 14 / 38
Algoritmos 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
Ejemplo: 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 diferencia entre el número de horas trabajadas y 40 por 1 1 veces la tasa 2 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
Lenguaje 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
Lenguaje de Programación 18 / 38
Lenguaje de Programación ¾Por qué implementaciones distintas? Un lenguaje de programación permite al programador cierta exibilidad en cómo se traduce un algoritmo. Dada esta exibilidad, las personas adoptan sus propios estilos al escribir programas, del mismo modo que lo hacen al escribir historias cortas o ensayos. En todo el libro se ofrecen consejos prácticos acerca del buen estilo de programación. 19 / 38
Lenguaje de Programación 20 / 38
¾Existen Atajos en la Programación? 21 / 38
Contenido 1 Conceptos de Programación 2 Programación por Computadora 3 Lenguajes de Programación 22 / 38
Bases 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
Proceso Creativo 24 / 38
Conceptos Ensamblador. Programa que traduce lenguaje ensamblador en código de máquina. Compilador. Programa que traduce lenguaje de alto nivel en código de máquina. Programa fuente. Programa escrito en lenguaje de programación de alto nivel. Programa objeto. Versión del lenguaje de máquina de un programa fuente. 25 / 38
Compilación en Diferentes S.O. 26 / 38
Compilación y Ejecusión 27 / 38
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: API IDE SDK Framework Engine 28 / 38
Información básica 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
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
Estructuras de Control 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
Estructuras de Control Una secuencia es una serie de sentencias que se ejecutan una después de otra. 32 / 38
Estructuras de Control 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
Estructuras de Control La selección, la estructura de control condicional, ejecuta sentencias diferentes dependiendo de determinadas condiciones. 34 / 38
Estructuras de Control La estructura de control repetitiva, el ciclo, repite sentencias mientras se satisfacen ciertas condiciones. 35 / 38
Estructuras de Control 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, sin especicar todos los pasos que tuvo que efectuar para llegar a la ocina. Los 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
Estructuras de Control El subprograma permite estructurar un programa al descomponerlo en unidades más pequeñas. 37 / 38
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