Está en la página 1de 14

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE

FACULTAD DE INGENIERÍA ALGORITMIA Y


GRUPO __
DEPARTAMENTO DE OPERACIONES Y SISTEMAS PROGRAMACIÓN
CODIGO: NOMBRE:

Ejemplos de Análisis Modular en Algoritmos Secuenciales y con FECHA: 18-


18-Enero-
Enero-2016
2016.
Decisiones

En los ejemplos resueltos aquí, se elabora el análisis modular del algoritmo que resuelve los requerimientos
planteados, usando los formatos mostrados. Se debe hacer uso de cinco (5) verbos: Leer, Imprimir, Recibir,
Regresar y Realizar. El último verbo, debe ir acompañado del nombre de la acción a realizar.

A. Proceso principal.

Proceso: principal
Entradas Salidas
Tipo Identificación Tipo Identificación

Proceso:

B. Subproceso 1: calcularResultado1

Subproceso: calcularResultado1
Entradas Salidas
Tipo Identificación Tipo Identificación

Proceso:
C. Subproceso 2: calcularResultado2

Subproceso: calcularResultado2
Entradas Salidas
Tipo Identificación Tipo Identificación

Proceso:

1. Un Fondo Mutuo de Inversión va a emitir 3000 acciones para el mercado de los productos lácteos. Los aportes
al Fondo provienen de 3 empresas del sector lácteo, cuyos valores de inversión son conocidos. Realice el
análisis para un algoritmo que permita calcular y mostrar el valor de la acción, imprimir el nombre de cada
empresa aportante y el número de acciones que le corresponde.

A. Proceso principal.

Proceso: principal
Entradas Salidas
Tipo Identificación Tipo Identificación
Cadena Nombre de la empresa 1. Real Valor de la acción.
Real Valor aportado por la empresa 1. Cadena Nombre de la empresa 1.
Cadena Nombre de la empresa 2. Real Número acciones empresa 1.
Real Valor aportado por la empresa 2. Cadena Nombre de la empresa 2.
Cadena Nombre de la empresa 3. Real Número acciones empresa 2.
Real Valor aportado por la empresa 3. Cadena Nombre de la empresa 3.
Real Número acciones empresa 3.
Proceso:
Leer Nombre de la empresa 1 y Valor aportado por la empresa 1 (mayor que cero).
Leer Nombre de la empresa 2 y Valor aportado por la empresa 2 (mayor que cero).
Leer Nombre de la empresa 3 y Valor aportado por la empresa 3 (mayor que cero).
Realizar el cálculo del Valor de la acción, mediante el subproceso calcularValorAccion, pasándole Valor aportado
por la empresa 1, Valor aportado por la empresa 2 y Valor aportado por la empresa 3.
Realizar el cálculo del Número acciones empresa 1, mediante el subproceso calcularNumeroAcciones, pasándole
Valor aportado por la empresa 1 y Valor de la acción.
Realizar el cálculo del Número acciones empresa 2, mediante el subproceso calcularNumeroAcciones, pasándole
Valor aportado por la empresa 2 y Valor de la acción.
Realizar el cálculo del Número acciones empresa 3, mediante el subproceso calcularNumeroAcciones, pasándole
Valor aportado por la empresa 3 y Valor de la acción.
Imprimir Valor de la acción.
Imprimir Nombre de la empresa 1 y Número acciones empresa 1.
Imprimir Nombre de la empresa 2 y Número acciones empresa 2.
Imprimir Nombre de la empresa 3 y Número acciones empresa 3.

Terminar.
B. Subproceso 1: calcularValorAccion

Subproceso: calcularValorAccion
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Valor aportado por la empresa 1. Real Valor de la acción.
Real Valor aportado por la empresa 2.
Real Valor aportado por la empresa 3.
Proceso:
Recibir Valor aportado por la empresa 1, Valor aportado por la empresa 2 y Valor aportado por la
empresa 3.
Realizar el cálculo del Total invertido, aplicando la fórmula ( Valor aportado por la empresa 1 + Valor
aportado por la empresa 2 + Valor aportado por la empresa 3 ).
Realizar el cálculo del Valor de la acción, aplicando la fórmula ( Total invertido / 3000 ).
Regresar Valor de la acción.
Terminar.

C. Subproceso 2: calcularNumeroAcciones

Subproceso: calcularNumeroAcciones
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Valor aportado por la empresa. Real Número de acciones para la empresa.
Real Valor de la acción.
Proceso:
Recibir Valor aportado por la empresa y Valor de la acción.
Realizar el cálculo del Número de acciones para la empresa, aplicando la fórmula ( Valor aportado por
la empresa / Valor de la acción ).
Regresar Número de acciones para la empresa.
Terminar.

2. Para efectos del aumento salarial anual, una empresa ejecuta los incrementos conociendo el nombre del
colaborador, el tipo de empleado y el salario mensual nominal actual. Se sabe que a los empleados tipo 1 se les
aumenta un 6%; y a los tipo 2 el 9%. Además, a todos se les debe aplicar un descuento del 8% por concepto de
prestaciones legales. Se requiere generar un reporte de nómina con el nombre del empleado, el tipo de
empleado y la cantidad final a recibir.

A. Proceso principal.

Proceso: principal
Entradas Salidas
Tipo Identificación Tipo Identificación
Cadena Nombre del empleado. Cadena Nombre del empleado.
Entero Tipo de empleado [1 o 2]. Entero Tipo de empleado [1 o 2].
Real Salario mensual nominal actual. Real Salario final.
Proceso:
Leer Nombre del empleado, Tipo de empleado [1 o 2] y Salario mensual nominal actual (mayor que
cero).
Realizar el cálculo del Salario final, mediante el subproceso calcularSalarioFinal, pasándole Tipo de
empleado y Salario mensual nominal actual.
Imprimir Nombre del empleado, Tipo de empleado [1 o 2] y Salario final.
Terminar.

B. Subproceso 1: calcularSalarioFinal

Subproceso: calcularSalarioFinal
Entradas Salidas
Tipo Identificación Tipo Identificación
Entero Tipo de empleado. Real Salario final.
Real Salario mensual nominal actual.
Proceso:
Recibir Tipo de empleado y Salario mensual nominal actual.
Si Tipo de empleado es 1
Realizar el cálculo del Salario aumentado, aplicando la fórmula ( Salario mensual nominal
actual * 1.06 ).
Sino
Realizar el cálculo del Salario aumentado, aplicando la fórmula ( Salario mensual nominal
actual * 1.09 ).
Realizar el cálculo del Salario final, aplicando la fórmula ( Salario aumentado * 0.92 ).
Regresar Salario final.
Terminar.

3. En una competencia de tiro con arco, se debe lanzar una flecha a un tablero que contiene tres círculos
concéntricos, como los que se muestran en la figura de abajo. Se conoce el radio del círculo interno (fondo
oscuro), el diámetro del círculo intermedio (fondos oscuro y punteado) y el área del círculo externo (fondos
oscuro, punteado y claro). El impacto de la flecha lanzada por el competidor, en cada una de estas zonas
(oscura, punteada y clara), proporciona un puntaje, así: caer en la zona oscura entrega 10 puntos, caer en la
zona punteada 5 puntos, y caer en la zona clara 1 punto. Además, en caso de que la flecha del competidor
impacte fuera de las tres zonas, los organizadores lo descalifican automáticamente.
Conociendo la distancia, en metros, del punto de impacto de la flecha hasta el centro común de los círculos, se
desea determinar el puntaje que obtuvo el competidor en un solo tiro, mostrar su nombre, e indicar si fue
descalificado o no. Elabore el análisis modular de una propuesta de solución.
A. Proceso: principal

Proceso: principal
Entradas Salidas
Tipo Identificación Tipo Identificación
Cadena Nombre del competidor. Cadena Nombre del competidor.
Real Radio del círculo interno. Entero Puntaje del competidor.
Real Diámetro del círculo intermedio. Cadena Mensaje de descalificación.
Real Área del círculo externo.
Real Distancia punto de impacto.
Proceso:
Leer Nombre del competidor, Radio del círculo interno (en metros y mayor que cero), Diámetro del círculo
intermedio (en metros y mayor que cero), Área del círculo externo (en metros2 y mayor que cero) y Distancia
punto de impacto (en metros y mayor que cero).

Realizar el cálculo del Radio del círculo intermedio, mediante el subproceso calcularRadioIntermedio, pasándole
Diámetro del círculo intermedio.
Realizar el cálculo del Radio del círculo externo, mediante el subproceso calcularRadioExterno, pasándole Área
del círculo externo.
Realizar el cálculo del Puntaje del competidor, mediante el subproceso calcularPuntajeCompetidor, pasándole
Radio del círculo interno, Radio del círculo intermedio, Radio del círculo externo y Distancia punto de impacto.

Si Puntaje del competidor es 0


Realizar la asignación de “COMPETIDOR DESCALIFICADO” en Mensaje de descalificación.
Sino
Realizar la asignación de “COMPETIDOR NO DESCALIFICADO” en Mensaje de descalificación.

Imprimir Nombre del competidor, Puntaje del competidor y Mensaje de descalificación.


Terminar.

B. Subproceso: calcularRadioIntermedio

Subproceso: calcularRadioIntermedio
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Diámetro del círculo intermedio. Real Radio del círculo intermedio.
Proceso:
Recibir Diámetro del círculo intermedio.
Realizar el cálculo del Radio del círculo intermedio, aplicando la fórmula (Diámetro del círculo intermedio / 2).
Regresar Radio del círculo intermedio.
Terminar.

C. Subproceso: calcularRadioExterno

Subproceso: calcularRadioExterno
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Área del círculo externo. Real Radio del círculo externo.
Proceso:
Recibir Área del círculo externo.
2 Á í
Realizar el cálculo del Radio del círculo externo, aplicando la fórmula ( ).
Regresar Radio del círculo externo.
Terminar.

D. Subproceso: calcularPuntajeCompetidor

Subproceso: calcularPuntajeCompetidor
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Radio del círculo interno. Entero Puntaje del competidor.
Real Radio del círculo intermedio.
Real Radio del círculo externo.
Real Distancia punto de impacto.
Proceso:
Recibir Radio del círculo interno, Radio del círculo intermedio, Radio del círculo externo y Distancia punto de
impacto.
Si Distancia punto de impacto es menor o igual que Radio del círculo interno
Realizar la asignación de 10 en Puntaje del competidor.
Sino Si Distancia punto de impacto es mayor que Radio del círculo interno y Distancia punto de impacto es
menor o igual que Radio del círculo intermedio
Realizar la asignación de 5 en Puntaje del competidor.
Sino Si Distancia punto de impacto es mayor que Radio del círculo intermedio y Distancia punto de impacto es
menor o igual que Radio del círculo externo
Realizar la asignación de 1 en Puntaje del competidor.
Sino
Realizar la asignación de 0 en Puntaje del competidor.
Regresar Puntaje del competidor.
Terminar.
E. Implementación – Visual C#

public void principal( ) {


// valores de entrada
double radioZonaNegra = double.Parse( textRadioZonaNegra.Text ) ;
double diametroZonaPunteada = double.Parse( textDiametroZonaPunteada.Text ) ;
double areaZonaBlanca = double.Parse( textAreaZonaBlanca.Text ) ;
double distanciaFlechaCompetidor = double.Parse( textDistanciaFlechaCompetidor.Text );
String mensajeDescalificacion = "";
// valores de salida
int puntajeCompetidor = 0;
// valorestemporales
double radioZonaPunteada = 0.0, radioZonaBlanca = 0.0;

radioZonaPunteada = calcularRadioZonaPunteada( diametroZonaPunteada ) ;


radioZonaBlanca = calcularRadioZonaBlanca( areaZonaBlanca ) ;

puntajeCompetidor = calcularPuntajeCompetidor(radioZonaNegra, radioZonaPunteada,


radioZonaBlanca, distanciaFlechaCompetidor);

if (puntajeCompetidor == 0) {
mensajeDescalificacion = "COMPETIDOR DESCALIFICADO";
}
else {
mensajeDescalificacion = "COMPETIDOR NO DESCALIFICADO";
}

// colocar valores de salida en GUI


textPuntajeCompetidor.Text = puntajeCompetidor.ToString();
textMensajeDescalificacion.Text = mensajeDescalificacion;

}
public double calcularRadioZonaPunteada( double diametroZonaPunteada ) {
double radioZonaPunteada = 0.0;

radioZonaPunteada = diametroZonaPunteada / 2 ;

return radioZonaPunteada ;
}

public double calcularRadioZonaBlanca( double areaZonaBlanca ) {


double radioZonaBlanca = 0.0;

radioZonaBlanca = Math.Sqrt( areaZonaBlanca / Math.PI ) ;

return radioZonaBlanca ;
}

public int calcularPuntajeCompetidor( double radioZonaNegra, double radioZonaPunteada,


double radioZonaBlanca, double distanciaFlechaCompetidor) {

int puntajeCompetidor = 0;

if( distanciaFlechaCompetidor <= radioZonaNegra ) {


puntajeCompetidor = 10;
}
else if( distanciaFlechaCompetidor > radioZonaNegra &&
distanciaFlechaCompetidor <= radioZonaPunteada ) {

puntajeCompetidor = 5;
}
else if( distanciaFlechaCompetidor > radioZonaPunteada &&
distanciaFlechaCompetidor <= radioZonaBlanca ) {

puntajeCompetidor = 1;
}
else {
puntajeCompetidor = 0;
}

return puntajeCompetidor ;
}
4. Una señora desea pintar el suelo circular de un kiosco, sin desperdiciar pintura. Se sabe por experiencia que se
necesita un tarro de pintura para cubrir 37 ft2 de área. Elabore el análisis de una propuesta de solución que,
conociendo el valor del diámetro del suelo circular del kiosco, en metros, determine cuántos tarros de pintura se
requieren.

A. Proceso: principal

Proceso: principal
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Diámetro del suelo circular, en metros. Real Cantidad de tarros de pintura.

Proceso:
Leer Diámetro del suelo circular, en metros (mayor que cero).
Realizar el cálculo del Área del suelo circular, en ft2, mediante el subproceso calcularAreaKiosco, pasándole
Diámetro del suelo circular, en metros.
Realizar el cálculo de la Cantidad de tarros de pintura, mediante el subproceso calcularCantidadPintura,
pasándole Área del suelo circular, en ft2.
Imprimir Cantidad de tarros de pintura.
Terminar.

B. Subproceso: calcularAreaKiosco

Subproceso: calcularAreaKiosco
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Diámetro del suelo circular, en metros. Real Área del suelo circular, en ft2.
Proceso:
Recibir Diámetro del suelo circular, en metros.
Realizar el cálculo del Diámetro del kiosco, en ft, aplicando la fórmula
( Diámetro del suelo circular, en metros / 0.3048 ).
Realizar el cálculo del Área del suelo circular, en ft2, aplicando la fórmula
( 3.141592 * ( Diámetro del kiosco, en ft / 2 )2 ).
Regresar Área del suelo circular, en ft2.
Terminar.

C. Sub-Proceso: calcularCantidadPintura

Subproceso: calcularCantidadPintura
Entradas Salidas
Tipo Identificación Tipo Identificación
2
Real Área del suelo circular, en ft . Real Cantidad de tarros de pintura.

Proceso:
Recibir Área del suelo circular, en ft2.
Realizar el cálculo de la Cantidad de tarros de pintura, aplicando la fórmula
( Área del suelo circular, en ft2 / 37 ft2 ).
Regresar Cantidad de tarros de pintura.
Terminar.

5. La nota definitiva de la asignatura Algoritmia y Programación se calcula como un promedio ponderado de


cuatro notas o cortes, con los siguientes pesos porcentuales: primer corte 25%, segundo corte 25%, tercer
corte 15% y cuarto corte 35%. Construir el análisis de un algoritmo que permita procesar a un estudiante
que ya conoce las notas de los tres primeros cortes, para calcular y mostrar la nota que debe obtener en el
cuarto corte, para obtener la nota definitiva que él desea. Además, se debe mostrar el nombre del estudiante.

A. Proceso: Principal

PROCESO: Principal
Entradas Salidas
Tipo Identificación Tipo Identificación
Cadena Nombre. Cadena Nombre.
Real Nota del corte 1. Real Nota del corte 4.
Real Nota del corte 2.
Real Nota del corte 3.
Real Definitiva deseada.
Proceso:
Leer Nombre.
Leer Nota del corte 1 (entre 0.0 y 5.0), Nota del corte 2 (entre 0.0 y 5.0), Nota del corte 3 (entre 0.0 y 5.0) y
Definitiva deseada (entre 0.0 y 5.0).
Realizar el cálculo de la Nota del corte 4, mediante el subproceso calcularNotaFaltante, pasándole Nota del
corte 1, Nota del corte 2, Nota del corte 3 y Definitiva deseada.
Imprimir Nombre y Nota del corte 4.
Terminar.
B. Subproceso: calcularNotaFaltante

Subproceso: calcularNotaFaltante
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Nota1. Real Nota faltante.
Real Nota2.
Real Nota3.
Real Definitiva deseada.
Proceso:
Recibir Nota1, Nota2, Nota3 y Definitiva deseada.
Realizar el cálculo de la Nota acumulada, aplicando la formula (0.25*Nota1 + 0.25*Nota2 + 0.15*Nota3).
Realizar el cálculo de la Nota faltante, aplicando la formula ( (Definitiva deseada – Nota acumulada) / 0.35 ).
Regresar Nota faltante.
Terminar.

6. Una empresa dedicada al transporte de Libros, Video Juegos o Computadores, desde los Estados Unidos, tiene
las tarifas indicadas en la tabla adjunta. Esta empresa requiere un aplicativo que para cada servicio de
transporte solicitado, le permita generar un reporte que incluya el nombre del cliente, el tipo de envío, el valor a
cobrar (en USD, según la tabla adjunta) y el valor neto cobrado, suponiendo que la legislación le permite un
incremento del 2% del valor a cobrar, si dicho valor fue superior a 7.5 USD.

TIPO DE ENVÍO TARIFAS (USD por fracción de kilo a transportar)


Libros
1.5 USD por cada ½ kg.
Video Juegos
3.5 USD como cargo base.
Computadores
0.5 USD por cada kilo o fracción de su peso que exceda los 2.8 kg.

Realizar el análisis del aplicativo solicitado.

A. Proceso: principal

Proceso: principal
Entradas Salidas
Tipo Identificación Tipo Identificación
Cadena Nombre. Cadena Nombre.
Real Peso. Cadena Tipo de envío.
Cadena Tipo de envío. Real Valor a cobrar (USD).
Real Valor neto cobrado (USD).
Proceso:
Leer Nombre, Peso (en kg y mayor que 0.0) y Tipo de envío (Libros, Video Juegos o Computadores).
Realizar el cálculo del Valor a cobrar (USD), mediante el subproceso calcularValorCobrar, pasándole Tipo de
envío y Peso.
Realizar el cálculo del Valor neto cobrado (USD), mediante el subproceso calcularValorNeto, pasándole Valor a
cobrar (USD).
Imprimir Nombre, Tipo de envío, Valor a cobrar (USD) y Valor neto cobrado (USD).
Terminar.
B. Subproceso: calcularValorCobrar

Subproceso: calcularValorCobrar
Entradas Salidas
Tipo Identificación Tipo Identificación
Cadena Tipo de envío. Real Valor a cobrar (USD).
Real Peso.
Proceso:
Recibir Tipo de envío y Peso.

Si Tipo de envío es Libros o Video Juegos


Realizar el cálculo del Valor a cobrar (USD), aplicando la formula (Peso * 3.0).
Sino
Si Peso es inferior o igual a 2.8 kg
Realizar la asignación de 3.5 en Valor a cobrar (USD).
Sino
Realizar el cálculo del Peso extra, aplicando la formula (Peso – 2.8).
Realizar el cálculo del Valor a cobrar (USD), aplicando la formula (3.5 + Peso extra * 0.5).

Regresar Valor a cobrar (USD).


Terminar.

C. Subproceso: calcularValorNeto

Subproceso: calcularValorNeto
Entradas Salidas
Tipo Identificación Tipo Identificación
Real Valor a cobrar (USD). Real Valor neto cobrado (USD).
Proceso:
Recibir Valor a cobrar (USD).

Si Valor a cobrar (USD) es superior a 7.5 USD


Realizar el cálculo del Valor neto cobrado (USD), aplicando la formula (Valor a cobrar (USD) * 1.02).
Sino
Realizar la asignación de Valor a cobrar (USD) en Valor neto cobrado (USD).

Regresar Valor neto cobrado (USD).


Terminar.

7. Un gimnasio cobra la matrícula según la edad del afiliado, así:


• 12-17 años: $ 40 000 Categoría 1.
• 18-25 años: $ 50 000 Categoría 2.
• 26-65 años: $ 70 000 Categoría 3.
• Edad fuera de estos rangos Categoría inválida.

Adicionalmente, se debe aplicar un recargo del 10 % al valor de la matrícula, para cubrir impuestos y aportar a
la liga local de gimnasios. Si la edad del afiliado está fuera de los rangos numéricos establecidos por el Gym, se
lo considera como “Categoría inválida” y, naturalmente, no se le cobra valor alguno. Elabore el análisis para un
algoritmo que permita determinar y mostrar: nombre del afiliado, el valor a pagar por la matrícula y la
categoría que le corresponde.

A. Proceso: principal

Proceso: principal
Entradas Salidas
Tipo Identificación Tipo Identificación
Cadena Nombre del afiliado. Cadena Nombre del afiliado.
Entero Edad. Real Valor pago matrícula.
Cadena Categoría.
Proceso:
Leer Nombre del afiliado y Edad (mayor que 0).
Realizar el cálculo de Valor pago matrícula, mediante el subproceso calcularPagoMatricula, pasándole Edad.
Realizar la determinación de la Categoría, mediante el subproceso determinarNombreCategoria, pasándole
Edad.
Imprimir Nombre del afiliado, Valor pago matrícula y Categoría.
Terminar.

B. Subproceso: calcularPagoMatricula

Subproceso: calcularPagoMatricula
Entradas Salidas
Tipo Identificación Tipo Identificación
Entero Edad. Real Valor pago matrícula.
Proceso:
Recibir Edad.
Si Edad ≥ 12 y Edad ≤ 17, años
Realizar la asignación de 40000 en Matrícula.
Sino Si Edad ≥ 18 y Edad ≤ 25, años
Realizar la asignación de 50000 en Matrícula.
Sino Si Edad ≥ 26 y Edad ≤ 65, años
Realizar la asignación de 70000 en Matrícula.
Sino
Realizar la asignación de 0.0 en Matrícula.
Realizar el cálculo del Valor del recargo, aplicando la fórmula (Matrícula * 10.0/100.0).
Realizar el cálculo de Valor pago matrícula, aplicando la fórmula (Matrícula + Valor del recargo).
Regresar Valor pago matrícula.
Terminar.

C. Subproceso: determinarNombreCategoría

Subproceso: determinarNombreCategoría
Entradas Salidas
Tipo Identificación Tipo Identificación
Entero Edad. Cadena Categoría.
Proceso:
Recibir Edad.
Si Edad ≥ 12 y Edad ≤ 17, años
Realizar la asignación de “CATEGORÍA 1” en Categoría.
Sino Si Edad ≥ 18 y Edad ≤ 25, años
Realizar la asignación de “CATEGORÍA 2” en Categoría.
Sino Si Edad ≥ 26 y Edad ≤ 65, años
Realizar la asignación de “CATEGORÍA 3” en Categoría.
Sino
Realizar la asignación de “CATEGORÍA INVÁLIDA” en Categoría.
Regresar Categoría.
Terminar.

También podría gustarte