0% encontró este documento útil (0 votos)
30 vistas19 páginas

Estructura de Datos: Resolución de Problemas Con La Computadora

Cargado por

jorge
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas19 páginas

Estructura de Datos: Resolución de Problemas Con La Computadora

Cargado por

jorge
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Licenciatura en Ingeniería en Sistemas Computacionales

Estructura de Datos
Resolución de Problemas con la
Computadora
Guía de estudio
Bloque II

Licenciatura en Ingeniería en Sistemas Computacionales

P á g i n a 1 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Organizador gráfico

P á g i n a 1 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Índice

Organizador gráfico ............................................................................................................................................................................. 1

Índice ......................................................................................................................................................................................................... 2

Resolución de Problemas con la Computadora ....................................................................................................................... 3

La resolución de problemas ........................................................................................................................................................ 3

Análisis de problemas ................................................................................................................................................................... 4

Diseño de algoritmo ....................................................................................................................................................................... 6

Uso de la computadora ................................................................................................................................................................. 9

Representación gráfica del algoritmo .................................................................................................................................. 11

Pseudocódigo ................................................................................................................................................................................ 14

Fuentes de consulta......................................................................................................................................................................... 18

P á g i n a 2 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Resolución de Problemas con la Computadora

La resolución de problemas

Un problema, según el diccionario de la Real Academia Española es:

“Conjunto de hechos o circunstancias que dificultan la consecución de algún fin.”

“Planteamiento de una situación cuya respuesta desconocida debe obtenerse a través

de métodos científicos.”

Un programador es alguien que resuelve problemas. Para llegar a ser un programador

eficaz es necesario primero aprender a resolver problemas de un modo riguroso y

sistemático, lo que se denomina metodología de la programación o resolución de

problemas.

En informática existen diversas metodologías para la resolución de problemas aplicando

la programación, una de ellas es seguir los siguientes pasos:

1. Identificar el problema.- En esta fase se comprende el problema y se destacan los

datos que ayudan a entender el problema.

2. Sugerir (o plantear) alternativas de solución.- Apela al ingenio del desarrollador en

la propuesta de las posibles soluciones al problema.

3. Diseñar el algoritmo.- El resultado de esta etapa es crear una serie de pasos que

servirán para resolver el problema planteado.

P á g i n a 3 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

4. Desarrollar la solución y comprobar los resultados.-En esta fase se comprueban

los resultados.

Estos pasos se resumen en el siguiente mapa:

Es de vital importancia seguir cada una de las fases para asegurar un resultado óptimo

de la resolución del problema.

Análisis de problemas

El primer paso, análisis del problema, requiere un estudio a fondo del problema y de todo

lo que hace falta para poder abordarlo.Esta fase de la resolución del problema tiene como

objetivo conseguir que el programador alcance a comprender el problema en toda su

extensión.

El propósito del análisis de un problema es ayudar al programador (Analista) para llegar

a una cierta comprensión de la naturaleza del problema. Una buena definición del

P á g i n a 4 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

problema, junto con una descripción detallada de las especificaciones de entrada/salida,

son los requisitos más importantes para llegar a una solución eficaz.

Para realizar el análisis del problema se realizan varios pasos:

Definición del problema: Se tiene que entender y comprender la naturaleza del

problema, se deben dominar los conceptos con los que se trabaja y conocer qué

operaciones hay que realizar para solucionar el problema y obtener la información de

salida.

Especificación de los datos de entrada: Hay que determinar que datos de entrada se

necesitan para resolver el problema.

Especificación de los datos de salida: También hay que determinar los datos de salida

que van a ofrecer la solución del problema.

La correcta definición del problema debe ir acompañada de la identificación y descripción

de los datos de entrada y de salida del problema. Como se muestra en la siguiente

imagen, es importante conocer el identificador, descripción, procedencia, valor y

restricciones de los datos de entrada, así como el identificador, descripción y destino de

los datos de salida.

P á g i n a 5 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Es importante entender el problema que tiene el cliente, y expresar toda la información

que él suministre, de manera tal que cualquier otra persona del equipo de desarrollo

pueda entender sin dificultad lo que espera el cliente de la solución. Esto se denomina un

requerimiento funcional.

Otro aspecto que conforma un problema es el mundo o contexto en el que ocurre el

problema.

Algo más que hay que considerar al definir un problema son los requerimientos no

funcionales, que corresponden a las restricciones o condiciones que impone el cliente al

programa que se le va a construir

Diseño de algoritmo

A partir de los requerimientos, resultados del análisis, empieza la etapa de diseño donde

se comienza a construir un algoritmo que resuelva el problema.

El algoritmo es la representación de los pasos necesarios para resolver un problema.

Estos pasos serán después trasladados a instrucciones que el ordenador podrá ejecutar.

El algoritmo determinará el método de resolución del problema, y si dicho método se ha

desarrollado adecuadamente su traducción a un lenguaje de programación u otro es una

cuestión menor.

Para la descripción de un algoritmo pueden utilizarse representaciones gráficas

(diagramas) o textuales (pseudocódigo, lenguaje natural).

P á g i n a 6 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

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

Los algoritmos también deben contemplar los datos de entrada, los procesos

algorítmicos del programa y los datos de salida.

Los algoritmos son independientes tanto del lenguaje de programación como del

ordenador que los ejecuta.

Las características de los algoritmos 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.

P á g i n a 7 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

 Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún

momento; o sea, debe tener un número finito de pasos.

En informática se pueden englobar dos tipos de algoritmo.

Cuantitativos: son aquellos cuya resolución depende de un cálculo matemático.

Ejemplo:Sumar cuántas vistas tuvo una publicación en Facebook, el número de

interacciones y el cruce resultante de ambos datos para tener una media.

Cualitativos: su resolución no involucra cálculos numéricos, sino secuencias lógicas.

Ejemplo: La inteligencia artificial ha permitido el desarrollo de programas para la

detección de fraudes bancarios.

Ejemplo del uso del diagrama de flujo para representar un algoritmo, en este caso, para

calcular la superficie y perímetro de un círculo:

P á g i n a 8 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Uso de la computadora

Tras el diseño del algoritmo, este debe traducirse a las instrucciones de un lenguaje de

programación para que pueda ser resuelto por el ordenador.

La resolución de un problema mediante la computadora consiste en el proceso que a

partir de la descripción de un problema, expresado habitualmente en lenguaje natural y

en términos propios del dominio del problema, permite desarrollar un programa que

resuelva dicho problema.

Para que un algoritmo pueda ser resuelto por una computadora el mismo debe ser escrito

(codificado) en el lenguaje de programación elegido, siguiendo las reglas de sintaxis del

mismo. Esta tarea se denomina programación y el algoritmo escrito se llama programa.

Esta fase se divide en tres sub-fases que se describen a continuación en la tabla:

Fase Descripción

Codificación o Es la conversión de los pasos del algoritmo a

implementación del las instrucciones equivalentes en un lenguaje de

algoritmo programación. El algoritmo escrito en un lenguaje de

programación se denomina programa, código fuente o,

simplemente, código.

P á g i n a 9 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Verificación del Comprobación de que la codificación del algoritmo se ha

programa realizado correctamente, empleando adecuadamente de

las reglas gramaticales y sintácticas del lenguaje utilizado

Validación del Comprobación de que los resultados proporcionados por el

programa programa se corresponden con los establecidos en el

análisis del problema

El último elemento que forma parte de la solución son las pruebas.

Una vez que se tiene un programa escrito en un lenguaje de programación se debe

verificar que su ejecución produce el resultado deseado, utilizando datos representativos

del problema real. Sería deseable poder afirmar que el programa cumple con los objetivos

para los cuales fue creado, más allá de los datos particulares de una ejecución. Sin

embargo, en los casos reales es muy difícil realizar una verificación exhaustiva de todas

las posibles condiciones de ejecución de un sistema de software. La facilidad de

verificación y la depuración de errores de funcionamiento del programa conducen a una

mejor calidad del sistema.

La fase de compilación permitirá detectar errores en tiempo de compilación, ejecución y

lógicos. En esta fase también es necesario realizar pruebas con una gran cantidad de

datos para encontrar posibles errores y corregirlos.

Por últimos se debe tener una documentación de todos los pasos hasta llegar a la

solución del problema, es muy importante ya que muchas veces suceden modificaciones

con el pasar del tiempo y estas se hace en algunos casos por otros programadores

P á g i n a 10 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

diferentes a los que lo crearon, y cuando un programa es pobre en documentación este

proceso de modificación es totalmente complejo.

Algunos IDEs que se pueden utilizar en la codificación son:

 Eclipse: www.eclipse.org

 Microsoft Visual Studio: www.visualstudio.com

 Android Studio: www.developer.android.com

 Netbeans: www.netbeans.org

Representación gráfica del algoritmo

Un algoritmo nos permite describir paso a paso el proceso necesario para resolver un

problema. La representación de un algoritmo se hace bien mediante texto

(pseudocódigo), mediante fórmulas, o bien de forma gráfica utilizando símbolos

geométricos en lo que se denominan diagramas de flujo.

En la siguiente tabla se muestran los símbolos que generalmente se utilizan para

describir un algoritmo mediante un diagrama de flujo, cada uno representa una parte

importante del proceso que se debe seguir para la resolución de un problema:

P á g i n a 11 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Para la elaboración de un diagrama de flujo se siguen ciertas reglas:

 Se escribe de arriba hacia abajo y de izquierda a derecha

 Siempre se usan flechas verticales u horizontales, jamás curvas

 Evitar cruce de flujos

 En cada paso expresar una acción concreta

La secuencia de flujo normal en una solución de problema es:

1. Tiene un inicio

2. Una lectura o entrada de datos

3. El proceso de datos

4. Una salida de información

5. Un final

P á g i n a 12 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Como todo, existen ciertas ventajas y desventajas en el uso de los diagramas de flujo, se

muestran a continuación:

Ventajas Desventajas

 Rápida comprensión de las  Diagramas complejos y detallados suelen

relaciones ser laboriosos en su planteamiento y

 Análisis efectivo de las diseño

diferentes secciones del  Acciones a seguir tras la salida de un

programa símbolo de decisión, pueden ser difíciles de

 Pueden usarse como modelos seguir si existen diferentes caminos

de trabajo en el diseño de  No existen normas fijas para la elaboración

nuevos programas o sistemas de los diagramas de flujo que permitan

 Comunicación con el usuario incluir todos los detalles que el usuario

 Documentación adecuada de desee introducir.

los programas

 Codificación eficaz de los

programas

 Depuración y pruebas

ordenadas de programas

P á g i n a 13 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Aquí se muestra un ejemplo de un diagrama de flujo que resuelve el problema “Realizar

la suma de dos números mientras esta de un resultado menor o igual a 10”:

💡
Existen varias
herramientas en línea
para el diseño de un
algoritmo en un
diagrama de flujo,
algunos son:

Lucidchart
https://www.lucidchart.
com/

DrawIo
https://app.diagrams.n
et/

Pseudocódigo

Un pseudocódigo es la representación textual de un algoritmo, que mediante lenguaje

natural, describe cada entrada, paso y salida para la resolución del problema. Dentro de

sus objetivos es que pueda ser entendido por los seres humanos mediante palabras que

usualmente se utilizan.

P á g i n a 14 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

La palabra Pseudo significa falso, por lo que traducción de “Pseudocódigo” es “código

falso” ya que no es realmente un código sino una imitación y una versión abreviada de

instrucciones reales para las computadoras y no puede ejecutarse en un ordenador. Es

una técnica para diseño de programas que permite definir las estructuras de datos, las

operaciones que se aplicarán a los datos y la lógica que tendrá el programa de

computadora para solucionar un determinado problema. Utiliza un pseudolenguaje muy

parecido a nuestro idioma, pero que respeta las directrices y los elementos de los

lenguajes de programación. Se concibió para superar las dos principales desventajas de

los flujogramas: lento de crear y difícil de modificar sin un nuevo redibujo.

Otra característica que tiene el pseudocódigo es su independencia al código en el que se

va a escribir el programa, proporcionando un método que facilita la posterior

programación y la resolución del algoritmo del programa.

A continuación se muestran algunas ventajas y desventajas del uso de pseudocódigo

para la representación de un algoritmo:

Ventajas Desventajas

 Escrito en lenguaje sencillo y no  Falta de normas en la escritura

estructurado  Puede extenderse mucho y volverse

 Transición sencilla a código difícil de leer

 Se puede detallar cada  En el caso de la especificación del flujo de

requerimiento de manera más ciclos podría volverse complejo

clara

P á g i n a 15 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

 Curva de aprendizaje baja

 Independencia del lenguaje de

programación

Un programa escrito en pseudocódigo debe permitir instrucciones primitivas, de proceso,

de control, de descripción y compuestas.

Ejemplo de pseudocódigo:

“Resolver la suma de 2 números hasta que la suma sea mayor a 10”

INICIO
💡
Escribir “Introduce primer número”
Un software que es de
utilidad para creación
de pseudocódigo y
Recibe primer número
algoritmos es PSeInt
que se puede
descargar en la
Escribir “Introduce segundo número”
siguiente página
http://pseint.sourceforg
e.net/
Recibe segundo número

Calcula la suma de los dos números

Condición Si Suma de los dos números <=10 Vuelve a iniciar

Sino

P á g i n a 16 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

FIN

Se pueden introducir comentarios luego de una instrucción, o en líneas separadas,

mediante el uso de la doble barra ( // ). Todo lo que precede a //, hasta el fin de la línea,

no será tomado en cuenta al interpretar el algoritmo.

P á g i n a 17 | 18
Licenciatura en Ingeniería en Sistemas Computacionales

Fuentes de consulta

Luis Joyanes Aguilar. (2005). Estructuras de datos en C. : MCGRAW-HILL.

Canek Pelaez. (2018). Estructuras de datos con Java moderno. Comportamiento + objetos =

programas. UNAM. Ciudad de México

Tenenbaum, Aaron & Langsam, Yedidyah & Augenstein, Moshe (1997) “Estructuras de Datos

en C”. Prentice-Hall, México.

Deitel & Deitel “Como programar en C/C++”. PrenticeHall, México

Wirth, Niklaus “Algoritmos y estructura de Datos”. Prentice-Hall, México.

Adam Drozdek (2000). Estructuras de datos y algoritmos en java. Thompson Learning,

México

Osvaldo Cairó /Silvia Guardati (2006), Estructuras de datos. McGrawHIll, México.

Antonakos, James L. and Mansfield, Kenneth C., Jr. Practical Data Structures Using

C/C++ (1999). Prentice-Hall.

Sedgewick, Robert Algorithms in C (1998). Addison Wesley.

Ricardo Ruiz Rodríguez (2013), Fundamentos de la programación orientada a objetos

Bruno López Takeyas (2019) Introducción a la Ingeniería en Sistemas Computacionales

y al Diseño Orientado a Objetos,Pearson

P á g i n a 18 | 18

También podría gustarte