Ingeniería Civil en Computación
Solución Algorítmica de Problemas
Sitio del curso:
http://ing.utalca.cl/~rgarrido/sol_alg_2009-1/sol_alg_2009-1.html
Ruth Garrido Orrego [email protected]
Agenda:
Hoy
- Algoritmos - Programas
- Noción de algoritmo en la vida real - Algoritmos para el computador
- Algoritmos? - Syllabus
ICC Ingeniería Civil en Computación
Por qué algoritmos?Para qué los computadores: - origen
- propósito (censo, calculo de trayectorias) Computador Eniac máquinas para hacer cálculos 1943 – 1946
máquinas programables de propósito general - antes... se programaban conectando cables
- hoy ... se programan utilizando algún lenguaje de programación
- máquinas "programables": de propósito específico - cuáles?
Ejemplos, máquinas de propósito específico: - lavadora
- microondas
- procesador del auto
Por qué algoritmos
- necesitamos programar los computadores, decirles qué y cómo hacer...
Para qué los computadores:
- para que nos ayuden a solucionar diversos problemas. Simulaciones, cálculos...
Algoritmo en la vida real
- Hacer café. - Hacer huevos revueltos - Ir a la Universidad
Ejercicio
Escriba las instrucciones para dejar una hoja de papel con el algoritmo que está escribiendo, en la mesa del profesor
Ejercicio:
Pastel de frambuezas: Receta:
- mezclar mantequilla y azúcar.
- agregar 1 huevo, harina y polvos de hornear, para formar una masa
- enmantequillar una lata, cubrirla con la masa, y llevar al horno previamente encendido, para que se cocine.
- retirar cuando esté cocido - agregar crema y fruta
Está correcto?
Ingredientes ( 1 pastel, 8 personas):
125 grs. de mantequilla, 1 taza de harina, 1 cucharadita de polvos de hornear, 1 taza de azúcar, 1 huevo, 1 tarro de crema, 250 grs de fruta picada.
Método: (algoritmo)
- mezclar mantequilla y azúcar.
- agregar 1 huevo, harina y polvos de hornear, para formar una masa
- enmantequillar una lata, cubrirla con la masa, y llevar al horno previamente encendido, para que se cocine.
- retirar cuando esté cocido - agregar crema y fruta
Presentación
- desmoldar el pastel, trozarlo en 8 partes y presentarlo en una bandeja.
Otra versión.
125 grs. de mantequilla, 1 taza de harina, 1 cucharadita de polvos de hornear, 1 taza de azúcar, 1 huevo, 1 tarro de crema, 250 grs de fruta picada.
Método: (algoritmo)
- encender el horno - encender la radio
- apartar una cucharadita de mantequilla
- mezclar el resto de la mantequilla con el azúcar. - agregar 1 huevo, harina y polvos de hornear, para formar una masa
- enmantequillar una lata: esparcir la cucharadita de mantequilla sobre la superficie de la lata
- cubrir la lata con la masa,
- llevar la lata al horno para que se cocine. - retirar cuando esté cocido: el pastel avisa - agregar crema y fruta
Presentación
- desmoldar el pastel, trozarlo y presentarlo en una bandeja.
Definición:
“Un algoritmo es una secuencia de pasos orientados a la consecución de un objetivo (resolver un problema)”.
Propiedades:
- Precisión: Cada paso debe especificarse con absoluta precisión, sin ambigüedad
- Finitud: El algoritmo debe finalizar en un número finito de pasos que se ejecuten en un tiempo finito
- Realizable: Deben utilizarse sólo instrucciones que sean realizables, y que nos acerquen a la consecución del objetivo
- Determinismo: Cada vez que se ejecuta el algoritmo con los mismos datos se debe obtener el mismo resultado.
- Entradas y Salidas: Deben precisarse los datos de entrada (0 o más) y los de salida (1 o más)
Propuesto:
Escriba un algoritmo para calcular el área de un rectángulo Algoritmos del mundo del computador.
¿qué puede hacer el computador? DATOS - POROCESOS
¿qué datos?
¿qué procesos ... operaciones? ¿qué lenguaje?
Datos?
Los tipos de datos a que puede procesar una computadora pueden clasificarse en Simples y estructurados
Simples:
Ocupan solo una casilla de memoria, por lo tanto, una variable hace referencia a un único valor a la vez. Dentro de de este grupo se encuentran:
- Numéricos - Caracteres - Booleanos
Datos simples - numéricos: Enteros / Reales
Enteros son números que pueden estar precedidos del signo + o -. Y que no tienen parte decimal.
Ejemplo:
128 1528 -714 8530 -16236
Reales son números que pueden estar precedidos del signo + o – y que tienen parte decimal
Ejemplo:
Operadores? .. aritméticos:
+ Suma
- Resta
* Multiplicación
/ División
% Módulo (sólo sobre tipo int), también conocido como “mod”
Formato: operando operador-binario operando Precedencia:
* / % + -
Asociatividad por la izquierda
Expresiones
Ejemplos de expresiones aritméticas:
2 + 3 * 2 * tiene precedencia sobre + Resultado: 8
(2 + 3) * 2 los paréntesis alteran la precedencia Resultado: 10
2 - 1 + 3 asociatividad por la izquierda Resultado: 4
15 % 6 operador módulo o residuo Resultado: 3
3 * 4 % 5 igual precedencia, pero asociativa a
izquierda
Resultado: 2
3 * (4 % 5 ) los paréntesis alteran la precedencia Resultado: 12
Lenguaje ...? Seudocódigo y diagrama de flujo:
El seudocódigo es un lenguaje de especificación de algoritmos que utiliza palabras reservada y exige la indentación
- Debe comenzar siempre con la palabra inicio y terminar con la palabra fin. - Las palabras reservadas o palabra propias del seucódigo estarán subrayadas para diferenciarlas de las demás.
El diagrama de flujo es un lenguaje gráfico de especificación de algoritmos que utiliza ciertos símbolos y exige la conexión mediante flechas
unidireccionales para indicar el orden de ejecución de las instrucciones.
- Debe comenzar siempre con el símbolo para inicio y terminar con el símbolo de fin, los cuales deben estar presentes una única vez cada uno.
Algoritmo:
Seudocódigo Diagrama de flujo
Inicio … Fin Inicio Fin …
Entrada de datos:
- Para introducir un valor o serie de valores desde el dispositivo de entrada y almacenarlo en una o varias variables usaremos:
Seudocódigo:
Entrada: <lista de variables>
Diagrama de flujo:
Procesamiento de Datos
- Un ejemplo de procesamiento de datos simple consiste en asignar valores a una variable usaremos la siguiente expresión:
Seudocódigo:
<nombre_de_variable> ← <expresión>
Diagrama de flujo:
Una expresión puede ser una constante, variable o función ¿qué es una variable?
¿para qué sirve?
Salida de datos
- Para desplegar datos en un dispositivo de salida (impresora, pantalla) una o varias expresiones emplearemos
Seudocódigo:
Salida: (<lista_de_expresiones>)
Diagramade flujo
Syllabus
- estudie cuidadosamente el syllabus de este ramo.
Lecturas:
Metodología de programación. Osvaldo Cairó:
- cap. 1
Introducción a la programación con python, Andrés Marzal e Isabel
García
- cap 1.4,
- cap. 2 - 2.7.1,
- cap 3
Estadísticas solución algorítmica 2008-1: estudiantes: 91 Prueba Laboratorio dps. recuperativas dps. opcional Unidad 1 75 - 16 Unidad 2 41 – 50 68 - 23 Unidad 3 29 – 62 67 - 24 42 – 49 Unidad 4 28 – 63 38 - 51 35 – 61 38 - 53 Rangos de notas: rango estudiantes 1 - 1,9 14 2 - 2,9 7 3 - 3,9 32 4 - 4,9 15 5 - 5,9 20 6 - 6,9 4
Ejercicio
Construya un algoritmo que permita calcular el promedio con que aprueba un estudiante de sol. algorítmica suponiendo que lo hace en primera opción.
Ejercicio de Control
PP quiere viajar a Londres la próxima semana y para saber como está el tiempo allá estuvo mirando el programa del tiempo que transmiten en un canal de televisión inglés.
Cuando el anunciador del tiempo dio las temperaturas de la próxima semana PP se llevó una gran sorpresa pues no las entregó en grados Celsius, sino en grados Fahrenheit.
¿Puede proponer una solución algorítmica para que PP pueda determinar qué tan frío está Londres en este tiempo?
Ayuda:
Para calcular la temperatura en grados Celsius podemos utilizar la fórmula: T°C=(T°F-32)5/9
Ejercicio de Control
Fibonacci fue un matemático italiano que se planteó el siguiente problema: Dada una pareja de conejos jóvenes, y suponiendo que los conejos tardan un año en madurar y a partir del año siguiente cada pareja madura de conejos da a luz a una pareja de conejos jóvenes, ¿Cuántas parejas de conejos habrá una vez transcurridos n años?
La respuesta es:
Queremos tener un algoritmo que nos permita saber cuántas parejas de conejos tendremos, luego de un número determinado de años.
martes 24 de marzo Ejercicio
PP quiere invertir la plata que le regalaron para su cumpleaños plantando sandías en un terreno que tiene en Paine.
Sin embargo, no está seguro de si le alcanza la plata pues es la primera vez que realiza este tipo de negocio pero si sabe que cuesta $2.500 por metro cuadrado plantar sandías.
Además, ni siquiera está seguro de cuántos metros cuadrados tiene su terreno. Lo único que sabe es que el terreno es triangular, y conoce la longitud de los lados.
¿Cómo puede hacer Pepe para saber la cantidad de dinero que necesita? Ayuda:
Para calcular el área de un triángulo conociendo la longitud de sus lados podemos utilizar la fórmula:
Ejercicio:
PPito se ofreció a llevar a la clase una gran bandera de Japón. Sin embargo las que ha encontrado son muy pequeñas. La alternativa es dibujarla.
Navegando en internet encontró algunos datos para dibujar la bandera: - es blanca, y tiene un círculo rojo que representa al sol,
- sus proporciones son de 2:3,
- el disco que se sitúa exactamente en el centro de la bandera y tiene un diámetro igual a las tres quintas partes de la medida vertical.
Funcionalidad gráfica: create_line(x1, y1, x2, y2):
dibuja una línea de (x1, y1) a (x2, y2). create_circle(x, y, radio):
dibuja una circunferencia con centro en (x, y) y radio radio. create_rectangle(x1, y1, x2, y2):
dibuja un rectángulo con esquinas opuestas en (x1, y1) create_filled_circle(x, y, radio):
dibuja un círculo relleno (de color negro) con centro en (x, y) y radio radio.
create_filled_rectangle(x1, y1, x2, y2):
dibuja un rectángulo relleno (de color negro) con esquinas opuestas en (x1, y1) y (x2, y2).
Otras:
window_coordinates(x1, y1, x2, y2):
Cambia el sistema de coordenadas del lienzo. La esquina inferior izquierda pasa a tener coordenadas (x1, y1) y la esquina superior derecha pasa a tener coordenadas (x2, y2).
window_size(x, y):
Cambia el tamaño del lienzo, que pasa a tener una anchura de x píxels y una altura de y píxels.