13_Seminario_Examen_Final

Páginas: 5 (1143 palabras) Publicado: 10 de octubre de 2015
Programación Dinámica
Seminario: Examen Final

Company

LOGO

Agenda

1. Algoritmos recursivos
2. Pilas
3. Colas
4. Listas Enlazadas

Primer problema
 Para un número real x mayor que 1,
diseñe un algoritmo que empleando sólo
las operaciones aritméticas básicas (+, -, /,
*), permita calcular la raíz cuadrada de x
con una aproximación hasta las
milésimas.

Plan de acción
Generamos unaaproximación g para
el valor de la raíz cuadrada de x.

Calculamos x/g.

Si x/g está lo suficientemente cerca
de g, g es nuestra respuesta.
Si no lo es, necesitamos generar una
mejor aproximación.

Estructura Jerárquica
Módulo
Principal

Calcular raíz
cuadrada
Verificar si la
aproximación
es buena
Generar una
mejor
aproximación

Módulo Principal
Proceso principal
Definir resultado como Real;
Definirvalor_ingresado como Real;
Repetir
Leer valor_ingresado;
Hasta que valor_ingresado > 1;
resultado <- calcular_raiz_cuadrada(valor_ingresado, 1);
Escribir resultado;
FinProceso

Calcular raíz cuadrada
Funcion resultado <- calcular_raiz_cuadrada(un_numero,
aproximacion)
Definir resultado Como Real;
Si estamos_cerca(un_numero, aproximacion) Entonces
resultado <- aproximacion;

Sino
resultado <-calcular_raiz_cuadrada(un_numero,
generar_aproximacion(un_numero, aproximacion));
FinSi
FinFuncion

¿Es una buena
aproximación?
Funcion resultado <- estamos_cerca(un_numero, aproximacion)
Definir resultado Como Logico;
Definir diferencia como Real;
resultado <- Falso;
diferencia <- un_numero/aproximacion - aproximacion;
Si diferencia < 0 Entonces

diferencia <- -1 * diferencia;
FinSi
Si diferencia <=0.001 Entonces
resultado <- Verdadero;
FinSi
FinFuncion

Generar una nueva
aproximación
Funcion resultado <- generar_aproximacion(
un_numero, aproximacion)
Definir resultado como Real;
resultado <- (un_numero/aproximacion +
aproximacion) / 2;
FinFuncion

Probemos

Segundo problema (I)
 Se tiene (ya existen) los siguientes
archivos físicos:




ALUMNOS.DAT: cod_alum(entero de 4
dígitos), Nomb(cadena de 30 caracteres),
Edad(entero).
CURSOS.DAT: cod_curso (cadena de 5
caracteres), cod_alum, nota_final (real).

Segundo problema (II)
 Diseñe un algoritmo que permita:




Almacenar en los nodos de una Lista (Pila o
Cola): código del curso, número de alumnos
inscritos y el promedio de las notas finales de
los inscritos en dicho curso.
Eliminar de la Lista creada en a) aquellos
nodos cuyospromedios de notas finales es
menor a 6.

Plan de acción (a)
Necesitamos una lista para almacenar la
información de cursos.

Recorremos los registros del archivo.

En caso se trate de un curso no
registrado, agregamos el elemento a la
lista.
En caso se trate de un curso que ya está
en la lista, actualizamos la información
de inscritos y el promedio.

Definir Estructuras
Información
de alumnosNota del
alumno

Información
de cursos

Estructura alumno
Definir codigo_alumno como Entero;
Dimension nombre[30];
Definir nombre como Caracter;
Definir edad como Entero;
FinEstructura
Estructura nota_alumno
Dimension codigo_curso[5];
Definir codigo_curso como Caracter;
Definir codigo_alumno como Entero;
Definir nota como Real;
FinEstructura
Estructura curso
Dimension codigo_curso[5];
Definircodigo_curso como Caracter;
Definir alumnos_inscritos como Entero;
Definir *puntero_siguiente como curso;
FinEstructura

Estructura jerárquica
Módulo
Principal
Registrar
información
de curso

Apilar

Mostrar
listado de
cursos

Depurar
cursos

Módulo Principal
Proceso principal
Definir archivo_notas como Archivo;
Definir *puntero_lista como curso;
Definir una_nota como nota_alumno;
Definirnumero_notas como Entero;
Definir contador_notas como Entero;
puntero_lista <- NULO;
Abrir "cursos.dat" como archivo_notas para Lectura;
numero_notas <- LDA(archivo_notas)/tamaño_de(nota_alumno);
Para contador_notas <- 0 Hasta numero_notas - 1 Hacer

Leer archivo_notas, contador_notas, una_nota;
actualizar_curso(una_nota, puntero_lista);
FinPara
depurar_lista(puntero_lista);
mostrar_lista(puntero_lista);...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS