80 Fundamentos de programación
2.7.3. Diagramas de Nassi-Schneiderman (N-S)
El diagrama N-S de Nassi Schneiderman —también conocido como diagrama de Chapin— es como un diagrama de
flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se escriben en cajas
sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.
Un algoritmo se representa con un rectángulo en el que cada banda es una acción a realizar.
EJEMPLO
Escribir un algoritmo que lea el nombre de un empleado, las horas trabajadas, el precio por hora y calcule los im-
puestos a pagar (tasa = 25%) y el salario neto.
leer
nombre, horas, precio
calcular
salario ← horas * precio
calcular
impuestos ← 0.25 * salario
calcular
neto ← salario impuestos
escribir
nombre, salario, impuestos, neto
nombre del algoritmo
<accion 1>
<accion 2>
<accion 3>
...
fin
Figura 2.20. Representación gráfica N-S de un algoritmo.
Otro ejemplo es la representación de la estructura condicional (Figura 2.21).
a) b)
¿condición? ¿condición?
sí no
acción 1 acción 2
<acciones> <acciones>
Figura 2.21. Estructura condicional o selectiva: a) diagrama de flujo: b) diagrama N-S.
Metodología de la programación y desarrollo de software 81
EJEMPLO 2.12
Se desea calcular el salario neto semanal de un trabajador (en dólares o en euros) en función del número de horas
trabajadas y la tasa de impuestos:
• las primeras 35 horas se pagan a tarifa normal,
• las horas que pasen de 35 se pagan a 1,5 veces la tarifa normal,
• las tasas de impuestos son:
a) los primeros 1.000 dólares son libres de impuestos,
b) los siguientes 400 dólares tienen un 25 por 100 de impuestos,
c) los restantes, un 45 por 100 de impuestos,
• la tarifa horaria es 15 dólares.
También se desea escribir el nombre, salario bruto, tasas y salario neto (este ejemplo se deja como ejercicio para
el alumno).
RESUMEN
Un método general para la resolución de un problema con te diseños descendentes y refinamiento sucesivo, llegar a
computadora tiene las siguientes fases: módulos fácilmente codificables. Estos módulos se deben
codificar con las estructuras de control de programación
1. Análisis del programa. estructurada.
2. Diseño del algoritmo.
3. Codificación. 1. Secuenciales: las instrucciones se ejecutan sucesi-
4. Compilación y ejecución. vamente una después de otra.
5. Verificación. 2. Repetitivas: una serie de instrucciones se repiten una
6. Documentación y mantenimiento. y otra vez hasta que se cumple una cierta condición.
3. Selectivas: permite elegir entre dos alternativas (dos
El sistema más idóneo para resolver un problema es conjuntos de instrucciones) dependiendo de una con-
descomponerlo en módulos más sencillos y luego, median- dición determinada).
EJERCICIOS
2.1. Diseñar una solución para resolver cada uno de los 2.3. Escribir un algoritmo para determinar el máximo co-
siguientes problemas y tratar de refinar sus soluciones mún divisor de dos números enteros (MCD) por el
mediante algoritmos adecuados: algoritmo de Euclides:
a) Realizar una llamada telefónica desde un teléfono
• Dividir el mayor de los dos enteros positivos por el
público.
más pequeño.
b) Cocinar una tortilla.
• A continuación dividir el divisor por el resto.
c) Arreglar un pinchazo de una bicicleta.
• Continuar el proceso de dividir el último divisor por
d) Freír un huevo.
el último resto hasta que la división sea exacta.
• El último divisor es el mcd.
2.2. Escribir un algoritmo para:
a) Sumar dos números enteros. 2.4. Diseñar un algoritmo que lea y visualice una serie de
b) Restar dos números enteros. números distintos de cero. El algoritmo debe terminar
c) Multiplicar dos números enteros. con un valor cero que no se debe visualizar. Visualizar
d) Dividir un número entero por otro. el número de valores leídos.