Вы находитесь на странице: 1из 19

A L G O RI T MO S CO MP UT A CI O NA L E S

1.9 Prueba de un algoritmo (Ejemplos)

Ejemplo No. 1

Diseñe un algoritmo que dadas 4 calificaciones (Cal1, Cal2, Cal3, Cal4), calcule la calificación promedio y

escriba el resultado final junto con un mensaje explicativo.

Análisis del problema

Entrada: Leer las calificaciones individuales

Proceso: Calcular la calificación promedio

Salida: Escribir resultado con mensaje explicativo

Diagrama de flujo

Pseudocódigo

Inicio

{Calculo del promedio de calificaciones}

Leer Cal1, Cal2, Cal3, Cal4

Prom ß (Cal1+Cal2+Cal3+Cal4)/4

Escribir ("Resultado final es", Prom)

Fin
Ejemplo No. 2

En cierto curso de computación, la calificación final del estudiante se determina a partir de su rendimiento en

tres aspectos del trabajo anual. Existe una calificación de la mitad del curso, que cuenta un 30% del total; el

trabajo de laboratorio que lleva una calificación, cuenta un 20% del total; y el examen final, cuenta el 50%

restante.

Diseñe un algoritmo que, dadas las calificaciones individuales, calcule la calificación final, escriba la salida

final proporcionando el nombre del estudiante, sus calificaciones individuales y la calificación final. La

variable se llama Final.

Análisis del problema

Calcular la calificación final a partir de las calificaciones parciales

Entrada: Lectura del nombre del estudiante, calificación del laboratorio, calificación de mitad del curso,

calificación del examen final.

Salida: Nombre del estudiante, las tres calificaciones obtenidas y el promedio final, con comentarios

correspondientes.

Solución del problema

Lectura del nombre del alumno y de sus calificaciones en cada una de las partes

Calculo e impresión de la calificación final junto con el nombre del alumno

Variables:

Nombre (para nombre del alumno)

Cal_Lab (para la calificación del laboratorio)

Cal_mitcurso (para la calificación de mitad del curso)

Cal_ExaFin (para la calificación del examen final)

Final (para la calificación final)

1. - Obtener los datos de entrada

Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin)

2. - Calcular la calificación final

Final ß 0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin

3. - Imprimir los resultados

4. - Termino

Algoritmo

Inicio
Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin)

Final ß 0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin

Escribir ("Nombre del alumno", Nombre)

Escribir ("Calificación de laboratorio", Cal_Lab)

Escribir ("Calificación de mitad del curso", Cal_mitcurso)

Escribir ("Calificación del examen final", Cal_ExaFin)

Escribir ("Calificación final", Final)

Fin

Del ejemplo anterior suponga que se dan los siguientes valores:

Alberto Rodríguez, 72, 68, 65

Solución

0.20*72 = 14.4

0.30*68 = 20.4

0.50*65 = 32.5

suma = 67.3

Resultado

Nombre del alumno Alberto Rodríguez

Calificación de laboratorio 72

Calificación de mitad del curso 68

Calificación del examen final 65

Calificación final 67.3

Andrés Miramontes, 75, 75, 75

Solución

0.20*75 = 15.0

0.30*75 = 22.5

0.50*75 = 37.5

suma = 75.0

Resultado

Nombre del alumno Andrés Miramontes

Calificación de laboratorio 75

Calificación de mitad del curso 75


Calificación del examen final 75

Calificación final 75.0

Ejemplo No. 3

Dados tres números, determine si la suma de cualquier pareja de ellos es igual al tercer número. Si se

cumple esta condición escribir "Iguales", y en caso contrario, escribir "Distintas". (Diagrama de flujo y

pseudocódigo)

Solución

Suponga que los números son:

396

la respuesta es "Iguales", ya que 3+6=9.

Pero si los números fueran:

234

El resultado será "Distintas".

Algoritmo de resolución:

1. - Leer los tres valores, A, B y C.

2. - Si A+B=C escribir "Iguales" y parar.

3. - Si A+C=B escribir "Iguales" y parar.

4. - Si B+C=A escribir "Iguales" y parar.

5. - Escribir "Distintas" y parar.

Diagrama de flujo:
Ejemplo No. 4

Escribir un algoritmo para calcular el área de un triángulo dada la base y la altura.

Solución:

Análisis

La fórmula geométrica del área o superficie de un triángulo es:

A = (1/2)B*H B = base H = altura

variables: Base, Altura

Suponga que B = 4.5 H = 7.2

A = (1/2) 4.5 * 7.2 = 16.2

Diagrama de flujo
Introducción a la Programación
con Matlab
Diagramas de flujo

Un diagrama de flujo es un esquema gráfico que se utiliza para describir un


algoritmo sin necesidad de escribir el código de programación. Su utilidad
fundamental es mostrar que el algoritmo que tenemos previsto
programar funciona. Una vez que el diagrama de flujo es coherente, podemos
pasar a codificarlo en Matlab o en cualquier otro lenguaje.

Básicamente se utilizan los siguientes símbolos:


Ejemplo 1: Queremos construir un algoritmo para resolver ecuaciones de
segundo grado. Como sabemos, dado una ecuación del tipo a x2 + b x + c = 0,
las dos raíces vienen expresadas por la fórmula:

Para que haya raíces reales la cantidad b2 - 4ac, llamada "discriminante",


debe ser positiva. Podemos diseñar un programa que tenga el siguiente
diagrama de flujo:
Se trataría de introducir los tres parámetros a, b , c - que en Matlab se puede
hacer mediante el comando "input"- , a continuación asignamos a una
variable "discr" la cantidad b^2 - 4*a*c _ en Matlab con el operador de
asignación "=" _ ; ahora se pone la condición discr > 0, en caso de ser cierta
se pasa a calcular las soluciones y a desplegarlas en pantalla -con "disp" para
el Matlab - , y en caso de ser falsa desplegar un mensaje de fracaso; y
finalizar el programa.

El código en Matlab sería:


Ejemplo 2: Queremos diseñar un algoritmo para extraer la mayor
componente de un vector de 10 componentes.

Analicemos la estrategia a seguir, consideremos el vector v siguiente:

Podemos tomar una variable (llamémosla "Mayor") que vaya almacenando


la componente mayor. Si comenzamos a analizar por la izquierda,
inicialmente la componente mayor será la primera (i=1).

A continuación comprobaremos con un bucle, desde la posición "i" (o sea


desde la primera) hasta la 10, si este Mayor es menor que alguno de los
siguientes. Esto nos sugiere un bucle iterativo (j = i:10), en cuyo interior se
realice una comparación del tipo (Mayor < v(j)).

En caso de que esta condición sea falsa (como sucede para la componente
j=4) entonces hacemos Mayor = v(j), o sea, en este caso Mayor = v(4), y
también i=j, así almacenamos en "Mayor" el valor mayor en este momento (el
6), y almacenamos en "i" la posición en que éste se encuentra (la cuarta).
El diagrama de flujo de este algoritmo sería:

El programa Matlab, podría ser algo así:


Como ejemplo final consideremos el diagrama de flujo para el "algoritmo de
bisección" (ver tema 1 de teoría).
El algoritmo de bisección puede cargarlo aquí: biseccion.m .

Ejercicios resueltos con pseudocódigo y diagramas de


flujo. Bucles for-next y while-do. (CU00161A)
Escrito por Mario R. Rancel
Resumen: Entrega nº 60 del curso Bases de la programación Nivel I.

Codificación aprenderaprogramar.com: CU00161A

EJERCICIO

Una ONG tiene puntos de reparto de vacunas que se pretende funcionen de la siguiente manera. Cada día,
empezar con 1000 vacunas disponibles y a través de un programa que controla las entregas avisar si el
inventario baja de 200 unidades. Desarrollar pseudocódigo y diagrama de flujo.

SOLUCIÓN

Pseudocódigo:

1. Inicio [Control de Vacunas aprenderaprogramar.com]


2. Existencias = 1000
3. Mientras Existencias >= 200 Hacer
Mostrar “Introduzca el número de unidades entregadas”
Pedir Entregadas
Existencias = Existencias – Entregadas
Repetir
4. Mostrar “El inventario ha bajado de 200 unidades. Debe comunicarlo”
5. Fin

Comentarios: La variable Existencias funciona como un acumulador que parte de un valor inicial y cuyo valor
tras un movimiento depende de su contenido precedente.

Diagrama de flujo:
EJERCICIO

Un vivero forestal actualiza cada seis meses los precios de la planta que vende en función de los valores
oficiales de inflación mensual. Desean desarrollar un programa que proporcione el precio actualizado a partir
del precio anterior y los valores de inflación.

SOLUCIÓN

Consideramos que una vez transcurre el mes el nuevo precio es:

El siguiente mes el precio a aplicar ya no es el inicial, sino el precio afectado por la inflación.

Pseudocódigo:
1. Inicio [Actualización Precios de Plantas aprenderaprogramar.com]
2. Mostrar “Introduzca el precio actual”
3. Pedir Actual
4. Nuevo = Actual
5. Desde i = 1 hasta 6 Hacer
Mostrar “Introduzca la inflación del mes”, i
Pedir inf(i)
Nuevo = Nuevo * (1 + inf(i) / 100)
Siguiente
6. Mostrar “El precio nuevo del producto debe ser”, Nuevo
7. Fin

Diagrama de flujo:
EJERCICIO

Desarrollar el pseudocódigo y diagrama de flujo para un algoritmo que calcule la superficie de un terreno que
le corresponde a un heredero después de n generaciones, partiendo de una superficie inicial en la generación
cero. Se supone que hay división a partes iguales entre herederos.

SOLUCIÓN

Organización previa de variables:


Variable Descripción - Uso

n Almacena el número de generaciones

Hgen(1), Hgen(2), ..., Array de las variables que almacenan el número de


Hgen(n) herederos

Supin Superficie inicial (generación 0)

Toca Superficie que toca al heredero actualmente considerado

Pseudocódigo y diagrama de flujo:

1. Inicio [Superficie herederos aprenderaprogramar.com]


2. Mostrar “¿Cuál es el número de generaciones?” : Pedir n
3. Mostrar “¿Cuál es la superficie inicial?” : Pedir Supin
4. Toca = Supin
5. Desde i = 1 hasta n Hacer
Mostrar “¿Cuál es el número de herederos de la generación”, i, “?”
Pedir Hgen(i)
Toca = Toca / Hgen(i)
Siguiente
6. Mostrar “Al heredero actual le corresponde una superficie de”, Toca
7. Fin
Comentarios: Nótese cómo es habitual darle valores a los contadores o acumuladores antes de entrar en los
bucles. El diagrama de flujo es abreviado.

Otra cuestión interesante es cómo el número de iteraciones del bucle es variable en función del valor de n,
que es un dato externo al programa. Podríamos decir que n es una variable controladora del bucle (y del
programa).