Para entender mejor este concepto primero tenemos que tener claro que es un algoritmo y este lo podemos definir como:
Un conjunto de instrucciones que especifica la secuencia de
operaciones a realizar, en orden, para resolver un problema específico; en otras
palabras, un algoritmo es una fórmula para la resolución de un problema.
Pseint es principalmente un intérprete de pseudocódigo, un pseudocódigo es un lenguaje de especificación (descripción) de
algoritmos. Este programa fue creado como proyecto final para la materia
Programación 1 de la carrera Ingeniería en Informática de la Facultad de
Ingeniería y Ciencias Hídricas de la Universidad Nacional del Litoral, del en
aquel momento estudiante Pablo Novara.
El programa utiliza pseudocódigo, una descripción de un algoritmo
computacional, cuya principal misión es que el programador pueda centrarse en
los aspectos lógicos de la programación, dejando el apartado técnico para
cuando se vea la sintaxis de un lenguaje de programación real.
Todo algoritmo en pseudocódigo de Pseint tiene la siguiente estructura general:
Proceso SinTitulo
accion 1;
accion 1;
.
.
.
accion n;
FinProceso
Comienza con la palabra clave Proceso seguida del nombre del programa, luego
le sigue una secuencia de instrucciones y finaliza con la palabra FinProceso. Una
secuencia de instrucciones es una lista de una o más instrucciones, cada una
terminada en punto y coma.
Las acciones incluyen operaciones de entrada y salida, asignaciones de variables,
condicionales si-entonces o de selección múltiple y/o lazos mientras, repetir o
para.
Tipo de datos que utiliza Pseint.
• Tipos Simples: Numérico, Lógico, Carácter.
• Estructuras de Datos: Arreglos.
Los identificadores, o nombres de variables, deben constar sólo de letras,
números y/o guión_bajo (_), comenzando siempre con una letra.
Tipos de Datos Simples
Existen tres tipos de datos básicos:
• Numérico: números, tanto enteros como decimales. Para separar decimales
se utiliza el punto. Ejemplos: 12 23 0 -2.3 3.14
• Lógico: solo puede tomar dos valores: VERDADERO o FALSO.
• Carácter: caracteres o cadenas de caracteres encerrados entre comillas
(pueden ser dobles o simples). Ejemplos 'hola' "hola mundo" '123' 'FALSO'
'etc'
Los tipos de datos simples se determinan automáticamente cuando se crean las
variables.
Las dos acciones que pueden crear una variable son la lectura(LEER) y
la asignación(<-). Por ejemplo, la asignación "A<-0;" está indicando implícitamente
que la variable A será una variable numérica.
Una vez determinado el tipo de dato,
deberá permanecer constante durante toda la ejecución del proceso; en caso
contrario el proceso será interrumpido.
Estructuras de Datos: Arreglos
Los arreglos son estructuras de datos homogéneas (todos sus datos son del
mismo tipo) que permiten almacenar un determinado número de datos bajo un
mismo identificador, para luego referirse a los mismo utilizando uno o más
sub-índices.
Los arreglos pueden pensarse como vectores, matrices, etc.
Para poder utilizar un arreglo, primero es obligatorio su dimensionamiento; es
decir, definir lo declarando los rangos de sus sub-índices, lo cual determina cuantos
elementos se almacenarán y como se accederá a los mismos.
Diagrama de flujo en Pseint.
Un algoritmo como ya se menciono codifica, siguiendo un lenguaje de programación es conocido como programa. Antes de aprender un lenguaje de programación es necesario aprender la metodología de programación, es decir la estrategia necesaria para resolver problemas mediante programas.
Como punto de partida se aborda la manera como es representado un algoritmo. Básicamente se puede analizar de dos formas, la representación usando pseudocódigo y la representación usando diagramas de flujo.
Un diagrama de flujo es un diagrama que utiliza símbolos (cajas) estándar y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican las secuencia que debe ejecutar el algoritmo.
Por otro lado, el pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el paso de codificación final (traducción al lenguaje de programacion) relativamente fácil, por lo que este es considerado un primer borrador de la solución del programa.
Estructura SI-entonces en Pseint.
La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino depende del valor de una condición lógica.
Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que correspondan: las instrucciones que le siguen al Entonces si la condición es verdadera, o las instrucciones que le siguen al Sino si la condición es falsa. La condición debe ser una expresión lógica, que al ser evaluada retorna Verdadero o Falso.
La cláusula Entonces debe aparecer siempre, pero la cláusula Sino puede no estar. En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa con la instrucción siguiente.
Estructura en Pseint de la condición SI-Entonces.
A continuación les dejo un enlace para profundizar mas en Pseint.
Un algoritmo es una secuencia de pasos lógicos necesarios para llevar a cabo una tarea especifica, como la solución de un problema. Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo el algoritmo será siempre el mismo.
Por ejemplo en una analogía con la vida diaria, una receta de un plato de cocina se puede expresar en español, ingles o francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración del plato se realizaran sin importar el cocinero.
Los pasos a seguir en la solución de una ecuación de segundo grado.
Los pasos matemáticos para la solución de un número factorial.
Las instrucciones para la liquidación de una nomina.
Las acciones que se deben seguir para la obtención de una estadística.
Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa.
Características de los algoritmos
Las características fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe de tener un número finito de pasos.
La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.
En el algoritmo citado anteriormente se tendrá:
Entrada ingredientes y utensilios empleados
Proceso elaboración de la receta de cocina
Salida terminación del plato (por ejemplo, cordero)
Un algoritmo exige que se tengan varias propiedades importantes:
Los pasos de un algoritmo deben ser simples y exentos de ambigüedades (diferentes significados), deben seguir un orden cuidadosamente prescrito, deben ser efectivos y deben de resolver el problema en un número finito de pasos.
El siguiente ejemplo muestra un algoritmo para cambiar un foco quemado.
Cambiar un foco quemado podría resumirse en dos pasos: Quitar el foco quemado Colocar un foco nuevo
Pero, si tuviera que entrenar un robot domestico para que efectúe esta tarea, tendrá que ser mas especifico y claro en los pasos a seguir, dar mas detalles (suponga que el foco se encuentra en el techo de una habitación): Situar escalera bajo el foco quemado. Elegir un foco de reemplazo (de la misma potencia que el anterior). Subir por la escalera hasta alcanzar el foco. Girar el foco contra las manecillas del reloj hasta que esté suelto. Ubicar el foco nuevo en el mismo lugar que el anterior. Enroscar en el sentido de las manecillas del reloj hasta que quede apretado. Bajar de la escalera.
Existen dos tipos y son llamados así por su naturaleza:
Son aquellos en los que se describen los pasos utilizando palabras. Lo ejecutan las personas
Ejemplo:
1. Se dispone de un grifo de agua – jabón – papel y corriente de aire caliente. INICIO
Abrir el grifo de agua.
Mojarse las manos.
Aplicarse jabón.
Enjuagarse las manos.
Cerrar el grifo de agua.
Secarse las manos con papel.
Exponer las manos a corriente de aire caliente.
FIN
2. Desarrolle un algoritmo que describa la manera en que su papá se levanta todas las mañanas para ir al trabajo en auto privado.
INICIO
Levantarse de la cama.
Quitarse el pijama.
Ducharse.
Vestirse.
Desayunar.
Arrancar el auto para ir al trabajo.
FIN
3. Algoritmo para leer las páginas de un libro:
Inicio.
1.Abrir el libro en la 1ª página.
2. Leer la página.
3. ¿Es la última que deseo leer?
Sí: Ve al paso 5.
No: Ve al paso 4
4. Pasar a la siguiente página.
5. Ve al paso 3.
Cerrar el libro.
Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Lo ejecuta el computador.
Ejemplo:
Problema
Calcular el área de un rectángulo.
Observación: Antes de resolver el problema se debe tener en cuenta: los datos que se requieren para resolver el problema (datos de entrada), cuales es el resultado que esperamos obtener (resultado deseado) y mediante cual método podremos lograr con esos datos de entrada producir esta salida.
Datos de entrada
• base
• altura
Proceso Algorítmico
(Algoritmo Cuantitativo)
1. Conocer la base y la altura del rectángulo.
2. Calcular el área utilizando la fórmula area = base * altura
3. Imprimir el resultado
Datos de salida
• área
Datos de entrada
• 8
• 4
Proceso Algorítmico
(Algoritmo Cuantitativo)
1. Conocer la base=8 y la altura=4 del rectángulo.
2. Calcular el área utilizando la fórmula area = 8 * 4
Para poder comprender el tema es necesario definir cada uno
de los conceptos que se están utilizando en el título que es la solución de
problemas.
·Solución: Proviene del latín Solutio que se
refiere a la acción o efecto para resolver dificultades, dudas o problemas.
·Problema: Es un asunto del que se espera una
solución, es algo con lo que no estamos conformes y deseamos cambiar.
·Solución de problemas: Es cuando generamos un
cambio a seguir para poder resolver o hacer cambios en situaciones alrededor de
un problema.
Entonces podemos decir que la resolución de problemas es el
proceso a través del cual podemos reconocer las señales que identifican la presencia de una dificultad, anomalía o
entorpecimiento del desarrollo normal de una tarea, recolectar la información
necesaria para resolver los problemas detectados y escoger e implicar las
mejores alternativas de solución, ya sea de manera individual o grupal.
Cada situación es una oportunidad
para que las personas sean capaces de transformar y mejorar continuamente el
entorno en forma activa y además aprender de ello.
Aplicada en el mundo laboral, la
resolución de problemas permite mantener el correcto desarrollo de las
actividades, tareas o procesos, y estar preparado para enfrentar de manera
eficiente los entorpecimientos cotidianos que se presentan en la ejecución de
una labor.
COMPETENCIAS DEL ÁREA:
1. Recolectar, organizar y
analizar la información que resuelve el problema.
Planteamiento de resolución de problemas según Polya.
George Polya (1887-1985) publicó
la primera edición de su libro How To Solve It? (1945), donde trató de explicar
axiomas que pudieran abonar en los razonamientos implicados en la resolución de
problemas.
Método de Pólya para resolver
problemas matemáticos
Para resolver un problema se
necesita:
Paso 1: Entender el problema
¿Cuál es la incógnita?, ¿Cuáles
son los datos?
¿Cuál es la condición? ¿Es la
condición suficiente para determinar la incógnita? ¿Es insuficiente?
¿Redundante? ¿Contradictoria?
Paso 2: Configurar un plan
¿Te has encontrado con un
problema semejante? ¿O has visto el mismo problema planteado en forma
ligeramente diferente?
¿Conoces algún problema
relacionado con éste? ¿Conoces algún teorema que te pueda ser útil? Mira
atentamente la incógnita y trata de recordar un problema que sea familiar y que
tenga la misma incógnita o una incógnita similar.
He aquí un problema relacionado
al tuyo y que ya has resuelto ya. ¿Puedes utilizarlo? ¿Puedes utilizar su
resultado? ¿Puedes emplear su método? ¿Te hace falta introducir algún elemento
auxiliar a fin de poder utilizarlo?
¿Puedes enunciar al problema de
otra forma? ¿Puedes plantearlo en forma diferente nuevamente? Recurre a las definiciones.
Si no puedes resolver el problema
propuesto, trata de resolver primero algún problema similar. ¿Puedes imaginarte
un problema análogo un tanto más accesible? ¿Un problema más general? ¿Un
problema más particular? ¿Un problema análogo? ¿Puede resolver una parte del
problema? Considera sólo una parte de la condición; descarta la otra parte; ¿en
qué medida la incógnita queda ahora determinada? ¿En qué forma puede variar?
¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en algunos otros
datos apropiados para determinar la incógnita? ¿Puedes cambiar la incógnita?
¿Puedes cambiar la incógnita o los datos, o ambos si es necesario, de tal forma
que estén más cercanos entre sí?
¿Has empleado todos los datos?
¿Has empleado toda la condición? ¿Has considerado todas las nociones esenciales
concernientes al problema?
Paso 3: Ejecutar el plan
Al ejecutar tu plan de la
solución, comprueba cada uno de los pasos
¿Puedes ver claramente que el
paso es correcto? ¿Puedes demostrarlo?
Paso 4: Examinar la solución
obtenida
¿Puedes verificar el resultado?
¿Puedes el razonamiento?
¿Puedes obtener el resultado en
forma diferente? ¿Puedes verlo de golpe? ¿Puedes emplear el resultado o el
método en algún otro problema?
Método de Pólya para resolver
problemas de programación
Para resolver un problema se
necesita:
Paso 1: Entender el problema
¿Cuáles son los argumentos? ¿Cuál
es el resultado? ¿Cuál es nombre de la función? ¿Cuál es su tipo?
¿Cuál es la especificación del
problema? ¿Puede satisfacerse la especificación? ¿Es insuficiente? ¿Redundante?
¿Contradictoria? ¿Qué restricciones se suponen sobre los argumentos y el
resultado?
¿Puedes descomponer el problema
en partes? Puede ser útil dibujar diagramas con ejemplos de argumentos y
resultados.
Paso 2: Diseñar el programa
¿Te has encontrado con un
problema semejante? ¿O has visto el mismo problema planteado en forma
ligeramente diferente?
¿Conoces algún problema
relacionado con éste? ¿Conoces alguna función que te pueda ser útil? Mira
atentamente el tipo y trata de recordar un problema que sea familiar y que
tenga el mismo tipo o un tipo similar.
¿Conoces algún problema familiar
con una especificación similar?
He aquí un problema relacionado
al tuyo y que ya has resuelto. ¿Puedes utilizarlo? ¿Puedes utilizar su resultado?
¿Puedes emplear su método? ¿Te hace falta introducir alguna función auxiliar a
fin de poder utilizarlo?
Si no puedes resolver el problema
propuesto, trata de resolver primero algún problema similar. ¿Puedes imaginarte
un problema análogo un tanto más accesible? ¿Un problema más general? ¿Un
problema más particular? ¿Un problema análogo?
¿Puede resolver una parte del
problema? ¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en
algunos otros datos apropiados para determinar la incógnita? ¿Puedes cambiar la
incógnita? ¿Puedes cambiar la incógnita o los datos, o ambos si es necesario,
de tal forma que estén más cercanos entre sí?
¿Has empleado todos los datos?
¿Has empleado todas las restricciones sobre los datos? ¿Has considerado todas
los requisitos de la especificación?
Paso 3: Escribir el programa
Al escribir el programa,
comprueba cada uno de los pasos y funciones auxiliares.
¿Puedes ver claramente que cada
paso o función auxiliar es correcta?
Puedes escribir el programa en etapas.
Piensas en los diferentes casos en los que se divide el problema; en
particular, piensas en los diferentes casos para los datos. Puedes pensar en el
cálculo de los casos independientemente y unirlos para obtener el resultado
final
Puedes pensar en la solución del
problema descomponiéndolo en problemas con datos más simples y uniendo las
soluciones parciales para obtener la solución del problema; esto es, por
recursión.
En su diseño se puede usar
problemas más generales o más particulares. Escribe las soluciones de estos
problemas; ellas pueden servir como guía para la solución del problema
original, o se pueden usar en su solución.
¿Puedes apoyarte en otros
problemas que has resuelto? ¿Pueden usarse? ¿Pueden modificarse? ¿Pueden guiar
la solución del problema original?
Paso 4: Examinar la solución
obtenida
¿Puedes comprobar el
funcionamiento del programa sobre una colección de argumentos?
¿Puedes comprobar propiedades del
programa?
¿Puedes escribir el programa en
una forma diferente?
¿Puedes emplear el programa o el
método en algún otro programa?
A continuación les dejo un vídeo, para comprender mejor la resolución de problemas por el método de Poyla.
Un algoritmo es una secuencia de
pasos lógicos necesarios para llevar a cabo una tarea específica, como la
solución de un problema. Los algoritmos son independientes tanto del lenguaje
de programación en que se expresan como de la computadora que los ejecuta. En
cada problema el algoritmo se puede expresar en un lenguaje diferente de programación
y ejecutarse en una computadora distinta; sin embargo el algoritmo será siempre
el mismo.
El concepto de algoritmo, aunque
similar y obviamente relacionado, no debe confundirse con el concepto de
programa. Mientras el primero es la especificación de un conjunto de
pasos (operaciones, instrucciones, órdenes,...) orientados a la resolución de
un problema (método), el segundo es un conjunto de operaciones especificadas en
un determinado lenguaje de programación, susceptible de ser ejecutado (o compilado
o interpretado).
Al momento de resolver un
algoritmo se debe tener en cuenta la información existente, los procesos que se
deben realizar y los resultados esperados
Características de los algoritmos
Las características fundamentales
que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e
indicar el orden de realización de cada paso.
Un algoritmo debe estar definido.
Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada
vez.
Un algoritmo debe ser finito. Si
se sigue un algoritmo, se debe terminar en algún momento; o sea debe de tener
un número finito de pasos.
La definición de un algoritmo debe describir tres partes:
Entrada, Proceso y Salida.
En el algoritmo citado anteriormente se tendrá:
Entrada ingredientes y utensilios empleados
Proceso elaboración de la receta de cocina
Salida terminación del plato (por ejemplo, cordero)
Un algoritmo exige que se tengan varias propiedades
importantes:
Los pasos de un algoritmo deben ser simples y exentos de
ambigüedades (diferentes significados), deben seguir un orden cuidadosamente
prescrito, deben ser efectivos y deben de resolver el problema en un número
finito de pasos.
El diagrama de flujo o diagrama de actividades,
también conocido como flujograma es la representación gráfica del algoritmo o
proceso.
Se utiliza en disciplinas como programación, economía,
procesos industriales y psicología cognitiva.
Resulta útil para investigar oportunidades para la mejora
mediante la comprensión detallada de la forma en que funciona en realidad un
proceso.
Los diagramas de flujo se pueden aplicar a todos los
aspectos de cualquier proceso, desde el flujo de materiales hasta los pasos
para realizar una venta o darle mantenimiento a un producto.
¿Cuál es la utilidad de un diagrama de flujo?
Se
puede conocer el proceso de un solo vistazo.
Al
ser muy visual, permite que las personas involucradas, lleguen a acuerdos
sobre los métodos a utilizar y resolución de problemas, de una manera más
fácil.
Se
puede usar para identificar problemas, asignar recursos, coordinar
actuaciones y delimitar tiempos.
Deja
bien definidas las funciones y responsabilidades de cada una de las
personas que intervienen en un proceso.
Permite
establecer indicadores operativos.
Tipos de diagrama de flujo
Matricial
Los agentes que intervienen en el proceso aparecen en la
cabecera del dibujo y las actividades desempeñadas se encuentran subordinadas a
ellos. Se pueden construir de arriba abajo o de izquierda a derecha. Se
recomiendan los primeros.
Lineal
Las actividades del proceso aparecen secuenciadas una debajo
de la otra. Es más fácil de construir y es recomendable si los agentes de
proceso son mayores a seis, pero aporta menos información.
Símbolos que se utilizan más frecuentemente y su significado:
¿Cómo se elabora un diagrama de flujo?
Si es un proceso existente:
Identificar
el principio y el fin del proceso.
Observar
el proceso completo desde el principio hasta el fin.
Definir
los pasos en el proceso (actividades, decisiones, entradas, salidas).
Elaborar
un proyecto de diagrama de flujo para representar el proceso.
Revisar
el proyecto de diagrama de flujo con las personas que participan en el
proceso.
Mejorar
el diagrama de flujo a partir de esta revisión.
Verificar
el diagrama de flujo con respecto el proceso real.
Fechar
el diagrama de flujo para referencia y uso futuros.
Para diseñar un nuevo proceso
Identificar
el principio y el fin del proceso.
Visualizar
los pasos que se deben dar en el proceso (actividades, decisiones,
entradas, salidas).
Definir
los pasos en el proceso (actividades, decisiones, entradas, salidas).
Elaborar
un proyecto de diagrama de flujo para representar el proceso.
Revisar
el proyecto de diagrama de flujo con las personas que se espera
participarán en el proceso.
Mejorar
el diagrama de flujo a partir de esta revisión.
Fechar
el diagrama de flujo para referencia y uso futuros
Les dejo un PDF y un video que les puede servir en la definición algoritmos y diagramas de flujo.