fbpx
Wikipedia

Resolución de problemas de programación

La 'resolución de un problema' mediante un ordenador 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.

Este proceso exige los siguientes pasos:

  • Análisis del problema.
  • Diseño o desarrollo de un algoritmo.
  • Transformación del algoritmo en un programa (codificación).
  • Ejecución y validación del programa.

Los dos primeros pasos son los más difíciles del proceso. Una vez analizado el problema y obtenido un algoritmo que lo resuelva, su transformación a un programa de ordenador es una tarea de mera traducción al lenguaje de programación deseado.

Análisis del problema informático

Cuando un usuario plantea a un programador un problema que resolver mediante su ordenador, por lo general ese usuario tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de informática. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa será un experto en contabilidad (dominio del problema), pero no tiene por qué ser experto en programación.

Del mismo modo, el informático que va a resolver un determinado problema puede ser un experto programador, pero en principio no tiene por qué conocer el dominio del problema; siguiendo el ejemplo anterior, el informático que hace un programa no tiene por qué ser un experto en contabilidad.

Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador e informático necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solución satisfactoria es necesario que:

  • El problema esté bien definido con el máximo detalle
  • Las especificaciones de las entradas y salidas del problema, deben ser descritas también en detalle:
    • ¿Qué datos son necesarios para resolver el problema?
    • ¿Qué información debe proporcionar la resolución del problema?

Diseño del algoritmo

Un algoritmo consiste en una especificación clara y concisa de los pasos necesarios para resolver un determinado problema, pero para poder diseñar algoritmos es necesario disponer de una notación, que llamaremos ‘notación algorítmica’, que permita:

  • Describir las operaciones puestas en juego (acciones, instrucciones, comandos)
  • Describir los objetos manipulados por el algoritmo (datos/informaciones)
  • Controlar la realización de las acciones descritas, indicando la forma en que estas se organizan en el tiempo

Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lógicas (secuencia, decisión e iteración) con las que es posible escribir cualquier programa. Lo que sigue a continuación es la descripción de las diferentes construcciones disponibles para el diseño de algoritmos.

Acciones elementales

Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que serán de dos tipos:

  • Aritmético – lógicas: Operaciones que, a partir de unos determinados datos, realizan un cálculo aritmético (suma, resta, multiplicación,...) o un cálculo lógico (mayor que, menor que, igual que,...).Las primeras devuelven un valor numérico (4, -5.67,...) y las segundas un valor lógico (verdadero o falso).
  • De entrada – salida: Acciones que permiten capturar datos para su posterior tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de salida).

Secuencia de acciones elementales

Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, éstas se describen una detrás de otra según el orden en que deban ejecutarse. Si se desea se puede emplear algún tipo de símbolo para separar dos acciones consecutivas. En el siguiente ejemplo se muestra la descripción de acciones separadas por punto y coma (símbolo que habitualmente se emplea como separador).

Acción 1; Acción 2; ... Acción n; 

Composición condicional

Cuando en un algoritmo se quiere indicar que cierta acción solo se debe ejecutar bajo cierta condición se indica del siguiente modo:

Si Condición Entonces Acción; FinSi 

Solo si la Condición (operación lógica) es verdadera se ejecutará la Acción. En este caso, la Acción puede referirse tanto a una acción elemental como a un conjunto de ellas.

Composición condicional doble (alternativa)

En ocasiones, se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condición. Esta especificación se realiza del siguiente modo:

Si Condición Entonces Acción A; SiNo Acción B; FinSi 

Composición condicional múltiple

También es posible que a la hora de especificar la ejecución de una acción haya que escoger ésta entre varias dependiendo del valor de una determinada variable (o indicador). Este caso se expresa del siguiente modo:

Según Indicador Hacer Caso Valor 1: Acción 1; Caso Valor 2: Acción 2; ... Caso Valor n: Acción n; [De Otro Modo: Acción X;] FinSegun 

En esta construcción Indicador debe tener un determinado valor que en caso de coincidir con alguno de los n valores provocará la ejecución de la acción asociada a dicho valor. Si el valor del Indicador no coincidiera con ninguno de los especificados se ejecutará la Acción X. No tiene por qué haber una Acción X para cuando el Indicador' no coincida con ninguno de los n valores; en ese caso, si el Indicador' no coincide con ningún valor no se ejecutaría ninguna acción.

Al igual que en los casos anteriores, todas las acciones que aparecen en esta estructura (Acción 1, Acción 2,..., Acción n y Acción X) pueden referirse a una única acción o a un conjunto de ellas.

Composición iterativa o bucle

Cuando una acción o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle. En este tipo de estructuras se necesita una condición que determine cuando terminan las iteraciones. Dependiendo de si esa condición se evalúa al principio o al final de la estructura y de si la condición para que las iteraciones continúen debe ser verdadera o falsa, se pueden definir cuatro construcciones iterativas distintas:

La condición de terminación ha de ser FALSA La condición de terminación ha de ser VERDADERA
Condición al principio de la estructura (Estructura 1)

Mientras Condición Hacer

Acción;

FinMientras

(Estructura 2)

Hasta Condición Hacer

Acción;

FinHasta

Condición al final de la estructura (Estructura 3)

Hacer

Acción;

Mientras Condición;

(Estructura 4)

Hacer

Acción;

Hasta Condición;


Sobre las cuatro construcciones que se acaban de presentar cabe hacer las siguientes observaciones:

  • Si en las estructuras 1 y 2, cuando se evalúa la ‘Condición’, ésta toma por primera vez un valor tal que no permita ejecutar la ‘Acción’ (FALSO en la 1 y VERDADERO en la 2), ésta no se ejecutará ninguna vez. Es decir, puede ocurrir que la ‘Acción’, en las estructuras 1 y 2, no se ejecute nunca.
  • En las estructuras 3 y 4, al estar la ‘Condición’ de terminación al final, la ‘Acción’ se ejecutará antes de que la condición se evalúe por primera vez, por lo que aunque la ‘Condición’ tome un valor tal que no se permita realizar más iteraciones, la ‘Acción’ se ejecutará al menos una vez.
  • Si las ‘Condiciones’ de las estructuras 1 y 2 son complementarias, es decir, que siempre que una es verdadera la otra es falsa y viceversa (ejemplo: [a > b] y [a ≤ b] son condiciones complementarias), entonces ambas estructuras son equivalentes ya que en ambas la ‘Acción’ se ejecutará el mismo número de veces.
  • De forma análoga, si las ‘Condiciones’ de las estructuras 3 y 4 son complementarias también ambas estructuras serán equivalentes.

Existe una construcción especial para indicar una repetición de acciones que se suele emplear cuando se quiere que dicha repetición se realice un número determinado de veces:

Para i = 1 Hasta n Hacer Acción; FinPara 

En este caso la ‘Acción’ se repetirá n veces e ‘i’ será una variable que tomará todos los valores entre 1 y n (ambos inclusive) en cada una de las sucesivas repeticiones. Esta construcción, aunque de apariencia diferente a las anteriores, se podría expresar como un caso particular de la estructura 1 del siguiente modo:

i = 1; Mientras i <= n Hacer Acción; i = i + 1; FinMientras 

En este caso la condición de finalización del bucle es que la variable ‘i’ sea mayor que ‘n’ y siempre, al finalizar la ejecución de la ‘Acción’, ‘i’ se incrementa en una unidad antes de volver a evaluar la ‘Condición’ para el nuevo valor de ‘i’.

Véase también

  •   Datos: Q6106477

resolución, problemas, programación, resolución, problema, mediante, ordenador, consiste, proceso, partir, descripción, problema, expresado, habitualmente, lenguaje, natural, términos, propios, dominio, problema, permite, desarrollar, programa, resuelva, dicho. La resolucion de un problema mediante un ordenador consiste en el proceso que a partir de la descripcion de un problema expresado habitualmente en lenguaje natural y en terminos propios del dominio del problema permite desarrollar un programa que resuelva dicho problema Este proceso exige los siguientes pasos Definicion del problema Analisis del problema Diseno o desarrollo de un algoritmo Transformacion del algoritmo en un programa codificacion Ejecucion y validacion del programa Los dos primeros pasos son los mas dificiles del proceso Una vez analizado el problema y obtenido un algoritmo que lo resuelva su transformacion a un programa de ordenador es una tarea de mera traduccion al lenguaje de programacion deseado Indice 1 Analisis del problema informatico 2 Diseno del algoritmo 2 1 Acciones elementales 2 2 Secuencia de acciones elementales 2 3 Composicion condicional 2 4 Composicion condicional doble alternativa 2 5 Composicion condicional multiple 2 6 Composicion iterativa o bucle 3 Vease tambienAnalisis del problema informatico EditarCuando un usuario plantea a un programador un problema que resolver mediante su ordenador por lo general ese usuario tendra conocimientos mas o menos amplios sobre el dominio del problema pero no es habitual que tenga conocimientos de informatica Por ejemplo un contable que necesita un programa para llevar la contabilidad de una empresa sera un experto en contabilidad dominio del problema pero no tiene por que ser experto en programacion Del mismo modo el informatico que va a resolver un determinado problema puede ser un experto programador pero en principio no tiene por que conocer el dominio del problema siguiendo el ejemplo anterior el informatico que hace un programa no tiene por que ser un experto en contabilidad Por ello al abordar un problema que se quiere resolver mediante un ordenador el programador e informatico necesita de la experiencia del experto del dominio para entender el problema Al final si se quiere llegar a una solucion satisfactoria es necesario que El problema este bien definido con el maximo detalle Las especificaciones de las entradas y salidas del problema deben ser descritas tambien en detalle Que datos son necesarios para resolver el problema Que informacion debe proporcionar la resolucion del problema Diseno del algoritmo EditarUn algoritmo consiste en una especificacion clara y concisa de los pasos necesarios para resolver un determinado problema pero para poder disenar algoritmos es necesario disponer de una notacion que llamaremos notacion algoritmica que permita Describir las operaciones puestas en juego acciones instrucciones comandos Describir los objetos manipulados por el algoritmo datos informaciones Controlar la realizacion de las acciones descritas indicando la forma en que estas se organizan en el tiempoPara poder describir cualquier tipo de accion de las que intervienen en un algoritmo diversos autores proponen el uso de un conjunto de construcciones logicas secuencia decision e iteracion con las que es posible escribir cualquier programa Lo que sigue a continuacion es la descripcion de las diferentes construcciones disponibles para el diseno de algoritmos Acciones elementales Editar Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que seran de dos tipos Aritmetico logicas Operaciones que a partir de unos determinados datos realizan un calculo aritmetico suma resta multiplicacion o un calculo logico mayor que menor que igual que Las primeras devuelven un valor numerico 4 5 67 y las segundas un valor logico verdadero o falso De entrada salida Acciones que permiten capturar datos para su posterior tratamiento las de entrada y guardar los resultados de dicho tratamiento las de salida Secuencia de acciones elementales Editar Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente estas se describen una detras de otra segun el orden en que deban ejecutarse Si se desea se puede emplear algun tipo de simbolo para separar dos acciones consecutivas En el siguiente ejemplo se muestra la descripcion de acciones separadas por punto y coma simbolo que habitualmente se emplea como separador Accion 1 Accion 2 Accion n Composicion condicional Editar Cuando en un algoritmo se quiere indicar que cierta accion solo se debe ejecutar bajo cierta condicion se indica del siguiente modo Si Condicion Entonces Accion FinSi Solo si la Condicion operacion logica es verdadera se ejecutara la Accion En este caso la Accion puede referirse tanto a una accion elemental como a un conjunto de ellas Composicion condicional doble alternativa Editar En ocasiones se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condicion Esta especificacion se realiza del siguiente modo Si Condicion Entonces Accion A SiNo Accion B FinSi Composicion condicional multiple Editar Tambien es posible que a la hora de especificar la ejecucion de una accion haya que escoger esta entre varias dependiendo del valor de una determinada variable o indicador Este caso se expresa del siguiente modo Segun Indicador Hacer Caso Valor 1 Accion 1 Caso Valor 2 Accion 2 Caso Valor n Accion n De Otro Modo Accion X FinSegun En esta construccion Indicador debe tener un determinado valor que en caso de coincidir con alguno de los n valores provocara la ejecucion de la accion asociada a dicho valor Si el valor del Indicador no coincidiera con ninguno de los especificados se ejecutara la Accion X No tiene por que haber una Accion X para cuando el Indicador no coincida con ninguno de losnvalores en ese caso si elIndicador no coincide con ningun valor no se ejecutaria ninguna accion Al igual que en los casos anteriores todas las acciones que aparecen en esta estructura Accion 1 Accion 2 Accion n y Accion X pueden referirse a una unica accion o a un conjunto de ellas Composicion iterativa o bucle Editar Cuando una accion o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle En este tipo de estructuras se necesita una condicion que determine cuando terminan las iteraciones Dependiendo de si esa condicion se evalua al principio o al final de la estructura y de si la condicion para que las iteraciones continuen debe ser verdadera o falsa se pueden definir cuatro construcciones iterativas distintas La condicion de terminacion ha de ser FALSA La condicion de terminacion ha de ser VERDADERACondicion al principio de la estructura Estructura 1 Mientras Condicion Hacer Accion dd FinMientras Estructura 2 Hasta Condicion Hacer Accion dd FinHastaCondicion al final de la estructura Estructura 3 Hacer Accion dd Mientras Condicion Estructura 4 Hacer Accion dd Hasta Condicion Sobre las cuatro construcciones que se acaban de presentar cabe hacer las siguientes observaciones Si en las estructuras 1 y 2 cuando se evalua la Condicion esta toma por primera vez un valor tal que no permita ejecutar la Accion FALSO en la 1 y VERDADERO en la 2 esta no se ejecutara ninguna vez Es decir puede ocurrir que la Accion en las estructuras 1 y 2 no se ejecute nunca En las estructuras 3 y 4 al estar la Condicion de terminacion al final la Accion se ejecutara antes de que la condicion se evalue por primera vez por lo que aunque la Condicion tome un valor tal que no se permita realizar mas iteraciones la Accion se ejecutara al menos una vez Si las Condiciones de las estructuras 1 y 2 son complementarias es decir que siempre que una es verdadera la otra es falsa y viceversa ejemplo a gt b y a b son condiciones complementarias entonces ambas estructuras son equivalentes ya que en ambas la Accion se ejecutara el mismo numero de veces De forma analoga si las Condiciones de las estructuras 3 y 4 son complementarias tambien ambas estructuras seran equivalentes Existe una construccion especial para indicar una repeticion de acciones que se suele emplear cuando se quiere que dicha repeticion se realice un numero determinado de veces Para i 1 Hasta n Hacer Accion FinPara En este caso la Accion se repetira n veces e i sera una variable que tomara todos los valores entre 1 y n ambos inclusive en cada una de las sucesivas repeticiones Esta construccion aunque de apariencia diferente a las anteriores se podria expresar como un caso particular de la estructura 1 del siguiente modo i 1 Mientras i lt n Hacer Accion i i 1 FinMientras En este caso la condicion de finalizacion del bucle es que la variable i sea mayor que n y siempre al finalizar la ejecucion de la Accion i se incrementa en una unidad antes de volver a evaluar la Condicion para el nuevo valor de i Vease tambien EditarPseudocodigo Diagrama de flujo Estructuras de control Bucle programacion Bucle for Bucle while Bucle repetir Bucle infinito Programacion estructurada Lenguaje de programacion Resolucion de problemas Datos Q6106477 Obtenido de https es wikipedia org w index php title Resolucion de problemas de programacion amp oldid 142564368, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos