Lectura 2: Algoritmos y Programación B. Universidad Autónoma de Puebla Javier M. Hernández

Anuncio
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
Descargar