B. Universidad Autónoma de Puebla Algoritmos y Programación Primavera de 2006 Lectura 2: Algoritmos y Programación Javier M. Hernández FCFM 1 Por qué preocuparse de las Computadoras? • Reglas son el corazón de Ciencia, Sociedad: » Ciencia: “tratar de discernir las reglas de la naturaleza” • Una computadora es: » Una máquina rapida!, sin cansancio!, que sigue reglas » Un aparato que imita CUALQUIER sistema basado en reglas! 2 Qué aprenderán ? • Como resolver cualquier problema finito gobernado por reglas mediante: – escribir conjuntos ordenados de reglas (funciones) que se – aplican a conjuntos ordenados de datos (estructuras), y – Re-usar soluciones previas (bibliotecas)—menos tedioso! • Ideas centrales encontradas en TODOS los lenguajes de programacion • Introducción a los lenguajes: Fortran, C y C++, Mathematica?! 3 Qué es programar? • Una computadora necesita que le digan qué hacer. • Programa = Una secuencia de instrucciones diciendole a la computadora que realize un trabajo particular o resolver un problema dado. • Programación = Diseñar y escribir un programa para computadora. 4 Comprendiendo la máquina Lenguaje Alto Nivel Computadora a Nivel Máquina 5 Usando computadoras en aplicaciones • Procesamiento de información • Obteniendo información hacia/desde la computadora “Input/Output (I/O)” • Trabajando con la información dentro de la computadora (representación binaria) 6 Programación: Sentido Común Artístico 1) Analizar: Encontrar el Problema central – – – (no cómo solucionarlo). Decidir las entradas y salidas específicas, y Definir como obtener las salidas de las entradas Dividirlo en sub-problemas, 2) Implementar: Escribir un conjunto de reglas (una función) para cada sub-división, 3) Debug: hacia arriba: Probar cada función separadamente; despues unirlas todas ellas, probarlas, hasta que todo funcione. 7 Cuál es el problema central? Ejemplo casero: – Escribir un programa que calcule el área de una casa dadas las dimensiones de cada cuarto. – Entrada : » El número de cuartos (un entero) » Las dimensiones de cada cuarto (números reales) – Salida: » El área que ocupa la casa (número real) 8 Análisis: Encontrar … • Asegurese de realmente entender el problema! – Refinar, simplificar, clarificar, pensar. Repetir – Decomponer en sub-problemas – Ideas iniciales NUNCA son las mejores. • Ejemplo casero: – subproblema 1: computar el área de cada cuarto – subproblema 2: sumar las áreas de los cuartos 9 Resolviendo problemas • Acercarse a los problemas como un proceso organizado • Resolver problemas complejos dividiéndolos en problemas más pequeños • Diseñar, implementar y verificar soluciones de los problemas complejos 10 Análisis: Encontrar… • Herramientas que le ayudan a describir el problema – Lenguaje natural; “haga esto, entonces esto, a menos que pase,…” – Diagrama de flujo – Pseudocódigo • Ejemplo : Convertir grados F a grados C. 11 Herramientas de Análisis: Lenguaje Natural. • Lenguaje Natural: -pidale al usuario grados en F, -lea los valores del usuario, -guarde los valores en una locación llamado degF, -compute grados C usando la fórmula, -guarde los resultados en degC, -imprima el contenido de degC. 12 Herr. de Analisis: Flowchart Un diagrama lógico, seguido como un ratón corriendo un laberinto. (Mejor para problemas condicionales complejos) 13 Herramientas de Análisis: Pseudo-código imprimir “escriba grados en Farenheit” leer degF degC = (degF - 32) * 5 / 9 imprimir degC Escriba reglas en su propio lenguaje tipo computadora 14 Implementación Traducir su conjunto de reglas en la sintáxis del lenguaje C++ y Fortran; (trate aún cuando el resultado no sea tan correcto). Aprenderemos cómo por exploración: Variables, Tipos, Declaraciones, Expresiones, Asignamientos, Condicionales y construcciones de control de flujo, funciones, y más. 15 Compilación & Unión • C y Fortran son lenguajes compilados; significa que los humanos los leen. • ‘Compilador’: un programa convertidor; leible-humano ejecutable-máquina • Compilar:Archivo de texto archivo objecto • Linking:Archivo objecto archivo .ejecutable 16 Debugging • Tres clases de Errores en la Programación: – Sintáxis (fáciles de remediar: compilador) – Ejecución (delicados) – Diseño (más díficiles: deben PENSAR) • Slang de Computadora: – ‘bug’==error – ‘debug’== encontrar y arreglar errores 17 ‘Debug’: Encontrar & Fijar … Escribir Compilar Correr, repetir • Compiló? – NO compilador dice por qué. Modificar, tratar de nuevo • SI. Funciona correctamente? – NO analizar, modificar, tratar de nuevo. • SI. Pero SIEMPRE trabaja correctamente? (puede probar que su análisis es robusto?) 18 Conclusiones • Comenzemos! Tan rápido como podamos, – Re-leer apuntes y pensar detenidamente – Ir a la sala de computo, navegar internet: » Visitar algun buscador, buscar programación » Visitar la biblioteca por referencias • Venir a la Siguiente Sesión … 19 Como alcanzar la meta • Codificación de los datos • Instrucciones a nivel procesador – bloques de construcción • Accesando los datos guardados • Programando las secuencias de instrucciones + datos • Dispositivos de I/O 20