Vous êtes sur la page 1sur 7

EXTRACCION DE ALGORITMOS

UNA METODOLOGIA PARA OBTENER LOGICA DE LA PROGRAMACIÓN


Autor: Jorge Tancara Aguilar
2017(@)

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.

Está compuesta por cuatro etapas:


a) Comprensión del problema planteado
b) Definición del problema
c) Generación de la lógica
d) Extracción y representación del algoritmo.

a) COMPRENSION DEL PROBLEMA PLANTEADO

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.

b) DEFINICION 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.

b1) IDENTIFICACION DE LOS RESULTADOS A OBTENER

En ésta parte de la metodología se debe detallar en lo posible toda la variedad


de tipos de resultados que debe producir el algoritmo.

b2) IDENTIFICACION DE POSIBLES DATOS DE ENTRADA

En algunas ocasiones los problemas vienen planteados de manera explícita


donde se indican claramente los datos (variables) que serán de entrada al
algoritmo, sin embargo en la mayoría de los casos y fundamentalmente en la
práctica profesional, el diseñador debe tener la capacidad de definir cuales
deben ser los datos de entrada.

b3) ESTUDIO DE LA TEORÍA Y ANÁLISIS DE CONCEPTOS

Es fundamental entender la teoría y los conceptos relacionados con el


problema, ya que en ella se encuentra de manera implícita "la lógica de la
solución al problema" (casi siempre).
c) GENERACIÓN DE LA LOGICA

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.

d) EXTRACCION Y REPRESENTACION DEL ALGORITMO

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

b1) IDENTIFICACION DE LOS RESULTADOS A OBTENER


Como salida del problema buscamos uno de dos posibles mensajes: "SI ES
PRIMO" o "NO ES PRIMO".

b2) IDENTIFICACION DE POSIBLES DATOS DE ENTRADA


En el planteo del problema vemos que nos dan como referencia explícita un
número natural, el cual representará nuestra primera variable, a esta la llamaremos N.

b3) ESTUDIO DE LA TEORIA Y ANÁLISIS DE CONCEPTOS


Para el presente problema debemos buscar algún concepto de número primo.
Asumiremos que conseguimos el siguiente concepto relacionado con el problema:
"Número primo es: Aquel número entero y positivo que
únicamente es divisible de forma exacta por dos números
diferentes".

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).

- De esos números(D) nos interesa averiguar cuales lo divide en forma exacta al


número (N), luego contarlos en otra variable a la que llamaremos C.

- 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"

d) EXTRACCION Y REPRESENTACION DEL ALGORITMO


Aplicamos las reglas de extracción del algoritmo ( tomamos el caso para N=4 sólo para la
referencia):

- 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

Variables y sus valores


iniciales (secuencial)
Lectura o
entrada de datos
(secuencial)

Hacer mientras, do while


(ciclo)

Pregunta

Asignación
(secuencial)

Asignación
(secuencial)

Regresa al ciclo
Pregunta

Salida por
Salida por pantalla
pantalla (secuencial)
(secuencial)

Fin del algoritmo

Vous aimerez peut-être aussi