P. Universidad Cat - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

P. Universidad Cat

Description:

... encontrar la mejor ruta para viajar desde mi casa hasta el campus San Joaqu n ... placa de bronce con tres agujas de diamantes; en una de ellas, Dios puso durante ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 19
Provided by: yadrane
Category:
Tags: casa | cat | de | dios | universidad

less

Transcript and Presenter's Notes

Title: P. Universidad Cat


1
P. Universidad Católica de Chile
Escuela de IngenieríaCiencia de la
Computación Introducción a la Programación
  • Prof. Yadran Eterovic
  • yadran_at_ing.puc.cl
  • Edif. San Agustín, p.4, of.15
  • 686 4440 686 4445

2
Resolución de Problemas
  • Los métodos para resolver problemas son
    estudiados en muchas disciplinas, en las ciencias
    y la ingeniería
  • La programación es una disciplina de resolución
    de problemas mediante el computador
  • Un objetivo de este curso es ayudarlos a mejorar
    sus habilidades para resolver problemas
  • Ejemplos de problemas resolubles
    computacionalmente, desarrollando programas
  • Problema fácil Necesito convertir distancias en
    millas a kilómetros
  • Problema no tan fácil Quiero encontrar la mejor
    ruta para viajar desde mi casa hasta el campus
    San Joaquín
  • Para resolverlos, en ambos casos hay que aplicar
    el método de desarrollo de programas

3
Método de Desarrollo de Programas
  • El método consta de 5 pasos
  • Especificar los requisitos del problema
  • Analizar el problema
  • Diseñar el algoritmo que resuelve el problema
  • Implementar el algoritmo escribir el programa
  • Probar y verificar el programa

4
Aplicación del Método1. Especificar los
requisitos del problema
  • Problema fácil
  • En una oficina internacional de turismo a la que
    recién entré a trabajar los mapas y otros
    documentos tienen algunas distancias en
    kilómetros y otras en millas
  • Para atender mejor a los turistas provenientes
    del mundo del sistema métrico, me pidieron hacer
    un programa computacional que haga la conversión
  • Problema no tan fácil
  • Todos los días viajo en auto desde mi casa al
    campus San Joaquín, ida y vuelta, invirtiendo una
    buena cantidad de tiempo
  • Para reducir el tiempo invertido, necesito
    determinar la mejor ruta en cada sentido

5
Aplicación del Método2. Analizar el problema
  • Hay que determinar qué es lo que se nos pide
    hacer
  • Problema fácil
  • Convertir de kilómetros a millas o vice versa?
  • Queremos atender mejor a los turistas
    provenientes del mundo del sistema métrico
  • El dato o input del problema es distancia en
    millas
  • El resultado o output del problema es distancia
    equivalente en kilómetros
  • Tenemos que saber la relación entre millas y
    kilómetros
  • 1 milla 1.609 kilómetros
  • Problema no tan fácil
  • pendiente

6
Aplicación del Método3. Diseñar el algoritmo
que resuelve el problema
  • Un algoritmo es un secuencia de instrucciones
    precisas que llevan a una solución
  • La mayoría de los algoritmos computacionales
    consisten al menos en las siguientes tres
    instrucciones
  • Obtener los datos
  • Ejecutar los cálculos que permiten obtener los
    resultados a partir de los datos
  • Mostrar los resultados
  • Esta secuencia de tres instrucciones es un patrón
    que aplicaremos múltiples veces en este curso
  • Apliquemos este patrón a nuestro problema fácil

7
Aplicación del Método3. Diseñar el algoritmo
que (cont.)
  • Las instrucciones (1) y (3) son básicas no
    requieren mayor refinación
  • Obtener la distancia en millas
  • Mostrar la distancia en kilómetros
  • La instrucción (2) también es bastante simple,
    pero podemos detallarla más
  • La distancia en kilómetros es 1.609 veces la
    distancia en millas
  • Con esto, el algoritmo refinado queda así
  • Obtener la distancia en millas
  • Convertir la distancia a kilómetros
  • La distancia en kilómetros es 1.609 veces la
    distancia en millas
  • Mostrar la distancia en kilómetros

8
Aplicación del Método4. Implementar el algoritmo
  • Implementar un algoritmo o solución significa
    escribirlo como un programa en C
  • Tenemos que saber que
  • Un computador almacena toda la información
    necesaria para la ejecución de un programa en la
    memoria
  • Un computador puede ejecutar programas escritos
    en un lenguaje de programación sólo si tiene un
    compilador para ese lenguaje
  • Primero, hay que decirle al compilador de C
    cuáles son los requerimientos de datos del
    algoritmo
  • Qué nombres de celdas de memoria vamos a usar
  • Qué tipo de datos será almacenado en cada celda
  • Luego, hay que convertir cada instrucción del
    algoritmo en su versión más refinada a una o
    más sentencias de C

9
Aplicación del Método4. el programa
include ltstdio.hgt int main(void) double
millas, kms printf("Ingrese distancia en
millasgt ") scanf("lf", millas) kms
1.609millas printf("Equivale a f
kilometros.\n", kms) return 0
10
Aplicación del Método5. Probar y verificar el
programa
  • Hay que revisar el (texto del) programa para
    asegurarse que sea un fiel reflejo del algoritmo
  • Hay que ejecutar el programa múltiples veces,
    para distintos datos cada vez, y revisar los
    resultados cuidadosamente, para asegurarse que
    tienen sentido e, idealmente, que están correctos

11
Otro problema fácil Calcular el área de la
superficie y el volumen de una esfera
  • Análisis
  • El input es el radio de la esfera
  • Se pide dos outputs
  • El área de la superficie de la esfera
  • El volumen de la esfera
  • El radio, el área y el volumen son números reales
  • Fórmulas relevantes
  • área 4p ? radio2
  • volumen (4/3)p ? radio3

12
Otro Calcular el área y el volumen de una
esfera
  • Diseño del algoritmo
  • Debemos poner mucha atención al orden de las
    instrucciones
  • Algoritmo inicial
  • 1. Obtener el radio
  • 2. Calcular el área
  • 3. Calcular el volumen
  • 4. Mostrar el área y el volumen
  • Refinamos las instrucciones que no son simples
    para el computador/lenguaje de programación
  • 2. Calcular el área asignar a área el valor
    43.14159radioradio
  • 3. Calcular el volumen asignar a volumen el
    valor (4/3)3.14159 radioradioradio

13
Otro Calcular el área y el volumen de una
esfera
Algoritmo refinado (y con un cierto sabor a
C) double radio, area, volumen / obtener el
radio de la esfera / / calcular el area de la
superficie / / asignar 43.14159radioradio a
area / / calcular el volumen / / asignar
(4/3)3.14159radioradioradio a volumen / /
mostrar el area y el volumen /
14
Otro Calcular el área y el volumen de una
esfera
Programa include ltstdio.hgt int
main(void) double radio, area,
volumen printf("Ingrese radio de la esferagt
") scanf("lf", radio) area
43.14159radioradio volumen
(4/3)3.14159radioradioradio printf("El area
es f\n", area) printf(El volumen es f\n,
volumen) return 0
15
El Problema de la Torre de Hanoi(originalmente
la torre de Brahma)
  • Inventado por el matemático francés E. Lucas en
    los 1880s
  • En el gran templo en Benares descansa una placa
    de bronce con tres agujas de diamantes en una de
    ellas, Dios puso durante la creación 64 discos de
    oro, el más grande descansando sobre la placa y
    los otros, cada uno más pequeño, uno encima del
    otro. Esta es la torre de Brahma. Continuamente
    los sacerdotes transfieren los discos de una
    aguja a otra de acuerdo con las reglas inmutables
    de Brahma no puede moverse más que un disco a la
    vez y ese disco debe ponerse en una aguja de modo
    que no quede encima de un disco más pequeño.
    Cuando los 64 discos hayan sido transferidos a
    una de las otras agujas la torre, el templo y los
    brahmanes se desmoronarán y con un estruendo el
    mundo desaparecerá.
  • El problema es determinar el orden en que los
    sacerdotes deben transferir los discos para hacer
    desaparecer el mundo

16
El Problema de la Torre de HanoiPasos para su
solución
  • Análisis
  • Llamemos A, B y C a las agujas queremos
    mover los 64 discos que están en A a B,
    ayudándonos con C
  • No hay input o tal vez el input es sólo el
    número 64, o tal vez los números 64 y 3, pero
    ambos números no cambian
  • El output es la secuencia de movimientos de
    discos, de a uno, de una aguja a otra, hasta que
    todos haya sido transferidos de la aguja A a la
    B (cuántos movimientos en total?)
  • Diseño
  • Para mover los 64 discos de A a B, es
    absolutamente necesario que en algún instante los
    63 discos más pequeños estén en C sólo en ese
    momento podemos mover el disco más grande de A
    a B y después hay que mover los 63 discos de
    C a B
  • Similarmente, para mover los 63 discos de A a
    C, es absolutamente necesario mover primero los
    62 discos más pequeños de A a B luego
    movemos el disco 63 de A a C y por último
    movemos los 62 discos de B a C

17
El Problema de la Torre de HanoiUna solución
recursiva
  • El diseño anterior representa una estrategia
    recursiva
  • Para solucionar el problema más grande (mover n
    discos), lo descomponemos en problemas más
    pequeños del mismo tipo
  • Primero movemos n1 discos, luego movemos 1
    disco, y finalmente movemos n1 discos nuevamente
  • Por supuesto, para mover n1 discos hacemos los
    mismo primero movemos n2, luego movemos 1, y
    luego movemos n2 de nuevo
  • Los interesante es que computacionalmente basta
    especifi-car el primer nivel de la recursión (si
    está bien especificado) en la forma de una
    función (matemática) con un nombre y que entre
    sus instrucciones incluye llamarse a sí misma
  • Mover(n, a, b, c) si n 1 mover de a a b de
    lo contrario Mover(n1, a, c, b) , mover de a a
    b, Mover(n1, c, b, a)

18
El Problema de la Torre de HanoiLa función
recursiva Mover
En C, escribimos la definición de una función
dándole un nombre (Mover), especificando cuáles
son sus argumentos (int n, char ini, char fin,
char tmp), y especificando cómo se ejecuta la
función void Mover(int n, char ini, char fin,
char tmp) if (n 1) printf(c -gt c\n,
ini, fin) else Mover(n1, ini, tmp, fin)
printf(c -gt c\n, ini, fin) Mover(n1,
tmp, fin, ini) Para ejecutar la función
anterior, simplemente la llamamos Mover(64,
A, B, C)
Write a Comment
User Comments (0)
About PowerShow.com