Introducción a la Programación 11‐O Humberto Cervantes Maceda Información del profesor Humberto Cervantes Maceda T‐138 www.humbertocervantes.net/cursos Acerca de ustedes Nombre Carrera ¿ Qué experiencia tienes respecto a programación ? ¿ Qué te interesa en relación a la programación ? Su carrera Usted está aqui Licenciatura en computación Ciencias de la computación Ingeniería de Software ¿ Qué son ? ¿ Qué diferencias hay entre ellas ? Programar ¿ Qué es programar ? Programar ¿ Qué es programar ? El proceso de diseñar, escribir, probar, depurar y mantener el código fuente de los programas de cómputo. Dicho código fuente está escrito en algún lenguaje de programación. El propósito de programar es crear un programa que exhiba algún comportamiento deseado. El proceso de escribir código fuente requiere conocimiento en distintos temas incluyendo el dominio aplicativo, algoritmos especializados y lógica. (Wikipedia) Recordando: Computadora Arquitectura de Von Newmann Representa un modelo para diseñar computadoras digitales (1945) que es la base de las computadoras que se usan hoy en día 5 Partes principales ALU Unidad de control Memoria Dispositivos de entrada y salida Bus de datos Arquitectura de Von Newmann Dispositivos de Entrada y Salida Permiten realizar comunicación hacia el exterior Recordando: Computadora Ratón Procesamiento Pantalla Teclado Información Datos CD Unidad Central Impresora Escáner Red Bocinas Arquitectura de Von Newmann ALU Arithmetic Logic Unit Realiza operaciones aritméticas (suma, resta, multiplicación) y operaciones lógicas (si, y, o, no) Arquitectura de Von Newmann Unidad de Control Obtiene instrucciones en la memoria principal, las interpreta y las ejecuta Arquitectura de Von Newmann Memoria Almacenamiento de datos Unidad Central Memoria Microprocesador Disco duro Dentro de la unidad central se encuentran Microprocesador Almacenamiento volátil (Memoria) Almacenamiento no‐volátil (Discos duros) Arquitectura de Von Newmann Bus de datos Permite que se comuniquen los datos entre las distintas partes Programa Conjunto de instrucciones almacenadas en la memoria que van a dirigir al procesador para realizar una tarea especifica En la memoria, un programa se ve como un conjunto de unos y ceros 100100011101101010010011001 Los unos y ceros son el lenguaje de la máquina El único que entiende el procesador Ejem. 0110 1001 1010 1011 = SUMA M, N, P Algoritmo De manera informal, un algoritmo es cualquier procedimiento computacional bien definido que toma uno o más valores como entrada y produce uno o más valores como salida. Un algoritmo es entonces una secuencia de pasos que transforman entradas en salidas Ejemplo: Ordenamiento de números Un algoritmo es correcto si para cada entrada dada, se detiene y produce la salida correcta. El algoritmo resuelve entonces el problema computacional. Aplicación de algoritmos Rutear datos en la red Decodificar genomas Realizar transacciones seguras Corregir rumbo de un avión Controlar procesos industriales Programa y algoritmo ¿ Cuál es la diferencia ? Programa y algoritmo Un programa es la implementación de un algoritmo, es decir su representación en algún lenguaje de programación Una estructura de datos es una manera de almacenar y organizar datos con el fin de facilitar su acceso y modificación. No existe una sola estructura de datos que funcione bien para todos los propósitos, por ello, es importante conocer las fortalezas y limitaciones de las mismas. Representación de un algoritmo Existen distintas representaciones para un algoritmo Pseudocódigo Diagramas de flujos de datos Estructuras de datos Una estructura de datos es una manera de almacenar y organizar datos con el fin de facilitar su acceso y modificación. No existe una sola estructura de datos que funcione bien para todos los propósitos, por ello, es importante conocer las fortalezas y limitaciones de las mismas. Software y tipos de Software Software Colección de programas y datos que proporcionan instrucciones a una computadora sobre qué hacer y cómo hacerlo Distintos tipos de Software Aplicaciones Sistemas operativos Drivers Herramientas de programación Drivers Software en todos lados… ¿ Por qué programamos ? ¿ Por qué programamos ? En general, se realizan programas para resolver problemas o necesidades de forma automática mediante el uso de computadoras problema 1011100011 0110010001 1011100011 1111011111 0110010001 1001000111 1111011111 1011100011 0011101110 1001000111 0110010001 1110110111 1011100011 0011101110 1111011111 1110000111 0110010001 1110110111 1001000111 1111011111 1110000111 0011101110 1001000111 1110110111 0011101110 1110000111 1110110111 1110000111 Hay un problema… Las computadoras y los humanos no hablamos el mismo idioma... 10100011101010010010 10011001001000010011 01110001101010011011 ? Lenguajes de programación Para poder programar las computadoras, se inventaron lenguajes de “alto nivel”, es decir, entendibles por los humanos Primeros lenguajes Fortran (1954) Cobol (1959) B (1969) Lenguajes comunes hoy en día Pascal (1970) C (1971) C++ (1983) Java (1995) C# (2000) Ejemplo de programa Programa que escribe “hola mundo!” en la pantalla en lenguaje C #include <stdio.h> void main() { printf(“Hola, mundo !\n”); } Un programa se escribe en un editor, y se guarda en un archivo Compilador Los lenguajes de alto nivel no son entendibles por la computadora, es necesario traducirlos antes de que puedan ser ejecutados La traducción la realiza un programa llamado compilador #include <stdio.h> main() { printf(“Hola!\n” ); } Compilador 1011100011 0110010001 1111011111 1001000111 0011101110 1110110111 1110000111 Una vez compilado, el programa ya puede ser ejecutado por la computadora Depurador El depurador es un programa que permite ejecutar paso a paso el programa que estamos realizando con el fin de poder encontrar problemas Entornos de desarrollo integrado Es un programa que incluye varios otros programas para realizar desarrollo de software Editor de código fuente Compilador / interprete Depurador Builder Etc… El proceso de dessarrollo El proceso representa una serie de etapas que se siguen para desarrollar una aplicación de software Entre las etapas principales se encuentran Entender qué se quiere hacer Proponer y diseñar una solución Construcción de la solución Probar la solución Entregar la solución al cliente Realizar mantenimiento Una analogía Un programa pequeño, así cómo una casa pequeña pueden ser diseñados y construidos por una sola persona De forma un poco 'artesanal' Una analogía Un proyecto complejo requiere sin embargo de un proceso de desarrollo que permita coordinar un numero grande de programadores Torre Mayor Información del curso www.humbertocervantes.net