Documente Academic
Documente Profesional
Documente Cultură
Esta metodología está basada en: “el estudio de los conceptos inherentes al problema
planteado”, a partir de lo cual se desea llegar a una solución algorítmica.
En esta primera etapa, el estudiante debe realizar una lectura cuidadosa del
problema, si es posible repetir las veces que considere necesarias hasta tener plena
conciencia de haber entendido lo que se busca con la solución del problema.
Esta etapa está compuesta por tres pasos: b1) Identificación de los resultados a
obtener, b2) Identificación de los posibles datos de entrada y b3) Estudio de la teoría y
análisis de los conceptos.
Una vez comprendido las características del problema se debe proceder a efectuar el
proceso conocido como “Simulación de prueba de escritorio”, en donde, a partir de los
datos de entrada se deben ir agregando variables y valores, en función de la
comprensión de la teoría relacionada con el problema (b3), es recomendable efectuar
al menos dos o tres casos, fundamentalmente para los casos críticos.
En ésta última etapa se debe plasmar la lógica del algoritmo, extrayendo del esquema
“simulación de prueba de escritorio”, generado en el paso (c), aplicando reglas
sencillas como las siguientes:
- Si una variable toma valor inicial una sola vez, siempre debe ser anotada en la
cabecera del algoritmo.
- Si una variable toma valor inicial varias veces, esto implica que siempre estará dentro
de un ciclo.
- Si existen pasos similares basado en la misma operación aritmética o lógica y con las
mismas variables, de seguro que el algoritmo requiere de un ciclo repetitivo.
- En caso de existir ciclos repetitivos, en principio trabaje con ciclos tipo while (con su
condición de repetición al principio).
- Para construir la condición de repetición del ciclo repetitivo while, considere loS
siguiente:
Busque alguna variable que cambie uniformemente y relaciónelo con otra
variable que no haya cambiado o que cambie por intervalos; en caso de no encontrar
alguna relación (que casi siempre existe) aplique el "truco del flag", que consiste en
emplear una variable booleana con valor inicial TRUE antes del ciclo y debe ser
utilizado en la condición de repetición del ciclo, dentro la lógica del ciclo debe ser
cambiado a FALSE en el momento adecuado.
APLICACIÓN
PROBLEMA:
Determinar si un número natural es primo o no.
a) Comprensión integral del problema (realizar lectura consiente y concentrada)
SOLUCIÓN:
b) DEFINICIÓN DEL PROBLEMA
c) GENERACIÓN DE LA LOGICA:
Como se puede ver en la teoría, esta nos indica claramente los pasos que debemos
utilizar para construir la solución algorítmica del problema, es decir:
- Luego de la lectura cuidadosa del concepto de número primo, se puede notar que
claramente nos está pidiendo contar los divisores exactos de un número (N), para lo cual
debemos crear una variable (a la que llamaremos D), que vaya tomando los valores
enteros de uno hasta el número (N).
- Finalmente nos dice que debemos averiguar cuantos son los divisores exactos
(quedo en la variable C), en caso de que estos sean dos (C=2), entonces sabremos que el
número N es Primo, de lo contrario sabremos que el número no es Primo,
Construcción de la simulación de prueba de escritorio:
Para N=5
N D C Descripción
p1 5 Variable de entrada
p2 1 0 Inicialización de variables (Se sabe que los divisores D están en el intervalo
1-N, en este caso : 1-5)
p3 Primera verificación, D divide en forma exacta a N (5%1==0), como es SI,
incrementamos el valor de C en 1 (C++) , luego por si o por no
1 incrementamos el valor de D en 1 (D++)
p4 2 Segunda verificación, D divide en forma exacta a N (5%2==0), como es
NO, no incrementamos el valor de C, luego por si o por no incrementamos
el valor de D en 1 (D++)
p5 3 Tercera verificación, D divide en forma exacta a N (5%3==0), como es NO,
no incrementamos el valor de C, luego por si o por no incrementamos el
valor de D en 1 (D++)
p6 4 Cuarta verificación, D divide en forma exacta a N (5%4==0), como es NO,
no incrementamos el valor de C, luego por si o por no incrementamos el
valor de D en 1 (D++)
p7 5 Quinta verificación, D divide en forma exacta a N (5%5==0), como es SI,
incrementamos el valor de C en 1 (C++) , luego por si o por no
incrementamos el valor de D en 1 (D++)
p8 6 2 Como se especificó en el paso uno (p1), los divisores validos son de 1 a 5,
como la variable D ya llegó a 6, nos detenemos en las pruebas de división.
p9 Finalmente averiguamos en cuanto quedo el último valor de la variable C,
en este caso quedo con 2, lo cual nos indica que el número N(5) "SI ES
PRIMO"
Construcción de la simulación de prueba de escritorio:
Para N=4
N D C Descripción
p1 4 Variable de entrada
p2 1 0 Inicialización de variables (Se sabe que los divisores D están en el intervalo
1-N, en este caso : 1-4)
p3 Primera verificación, D divide en forma exacta a N (4%1==0), como es SI,
incrementamos el valor de C en 1 (C++) , luego por si o por no
1 incrementamos el valor de D en 1 (D++)
p4 2 2 Segunda verificación, D divide en forma exacta a N (4%2==0), como es SI,
incrementamos el valor de C en 1 (C++) , luego por si o por no
incrementamos el valor de D en 1 (D++)
p5 3 Tercera verificación, D divide en forma exacta a N (4%3==0), como es NO,
no incrementamos el valor de C, luego por si o por no incrementamos el
valor de D en 1 (D++)
p6 4 3 Cuarta verificación, D divide en forma exacta a N (4%4==0), como es SI,
incrementamos el valor de C en 1 (C++) , luego por si o por no
incrementamos el valor de D en 1 (D++)
p7 5 Como se especificó en el paso uno (p1), los divisores validos son de 1 a 4,
como la variable D ya llegó a 5, nos detenemos en las pruebas de división.
p8 Finalmente averiguamos en cuanto quedo el último valor de la variable C,
en este caso quedo con 3, lo cual nos indica que el número N(4) "NO ES
PRIMO"
- Vemos que hay una variable de entrada N, (p1) y la lectura se la realiza una sola vez, en
consecuencia el paso debe ser ubicado antes de cualquier ciclo.
- Vemos que hay dos variables C y D (p2) con valores iniciales únicos y por una sola vez, en
consecuencia los debemos ubicar antes del ciclo.
- También vemos que hay más de un paso ( p4,p5,p6,p7) de verificación de división exacta
muy similares, lo cual nos indica que existe un ciclo repetitivo, en consecuencia debemos
construir una condición de repetición; vemos que hay una variable D que cambia
uniformemente y constantemente y está limitado al valor de N, entonces la relación de
repetición será: D<=N (Mientras D <= N).
- Finalmente vemos que hay un paso (p8) que averigua el último valor de una variable, en
este caso cual es el último valor de la variable C, eso nos indica que debemos hacer una
pregunta, si C=2, en caso de ser cierto mostraremos por pantalla "SI ES PRIMO", de lo
contrario "NO ES PRIMO".
LOGICA EXPRESADA EN PSEUDOCODIGO
Proceso NumeroPrimo
Leer N;
C<-0;
D<-1;
Mientras D<=N Hacer
Si N mod D = 0 Entonces
C<-C + 1;
FinSi
D<-D + 1;
FinMientras
Si C = 2 Entonces
Escribir "si es primo";
Sino
Escribir "no es primo";
FinSi
FinProceso
Inicio del
LOGICA EXPRESADA EN DIAGRAMA DE FLUJO
algoritmo
Pregunta
Asignación
(secuencial)
Asignación
(secuencial)
Regresa al ciclo
Pregunta
Salida por
Salida por pantalla
pantalla (secuencial)
(secuencial)