Tema 2 METODOLOGIA DE LA PROGRAMACION

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 60

SIS100

COMPUTACION
Programación Estructurada
Ing. Gerzon Barrientos Copa
TEMA 2
METODOLOGIA DE LA PROGRAMACION
Problemas y Soluciones
Especificación del Problema
Se parte del principio de que un programador no puede resolver un programa que no entiende, por esta
razón se debe partir de la primera etapa de solución de problemas y así tratar de entender el problema
y los requerimientos del cliente y posteriormente expresar toda la información que el cliente suministre.

Para introducir todos los elementos de la especificación, lo primero que se debe hacer es tratar de
entender y especificar el problema que se plantea, identificando al menos 3 aspectos:

• Los requerimientos del usuario (Requerimiento funcional).


• El mundo en el que desea resolverse el problema (Contexto).
• Las restricciones y condiciones que plantea el cliente (Requerimiento no funcional).

El primer aspecto a considerar es el requerimiento funcional en el caso de la programación, el cual hace


referencia a un servicio que el programa debe proveer al usuario.

El segundo aspecto que conforma un problema es el mundo o contexto en el que ocurre el problema.

El tercer aspecto 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.
Especificación del Problema
Ejemplo 2.1
Una empresa de aviación quiere construir un programa que le permita buscar una ruta para ir de una
ciudad a otra, usando únicamente los vuelos de los que dispone la empresa. Se quiere utilizar este
programa desde todas las agencias de viaje del país.

Identificar los aspectos que hacen parte de un problema.


Proceso de Solución del Problema
Proceso de Solución del Problema
El proceso debe ser entendido como un orden en el cual se debe desarrollar una serie de actividades
que van a permitir construir un programa.

El proceso planteado tiene tres etapas principales, todas ellas apoyadas por herramientas y lenguajes
especiales:

• Análisis del problema: el objetivo de esta etapa es entender y especificar el problema que se
quiere resolver. Al terminar, deben estar especificados los requerimientos funcionales, debe
estar establecida la información del mundo del problema y deben estar definidos los
requerimientos no funcionales.

• Diseño de la solución: el objetivo es detallar, usando algún lenguaje (planos, dibujos,


ecuaciones, diagramas, texto, etc.), las características que tendrá la solución antes de ser
construida. Los diseños nos van a permitir mostrar la solución antes de comenzar el proceso
de fabricación propiamente dicho. Es importante destacar que dicha especificación es parte
integral de la solución.

• Construcción de la solución: tiene como objetivo implementar el programa a partir del


diseño y probar su correcto funcionamiento.
Proceso de Solución del Problema
La primera etapa para resolver un problema es analizarlo. Para facilitar este estudio, se debe
descomponer el problema en sus tres partes ya mencionadas.

Una vez que el problema se ha entendido y se ha expresado en un lenguaje que se pueda entender
sin ambigüedad, pasamos a la etapa de diseño. Aquí se debe imaginar la solución y definir las partes
que la van a componer. Es muy común comenzar esta etapa definiendo una estrategia.

Cuando el diseño está terminado, se debe pasar a construir la solución. En esta etapa de
construcción de la solución es conveniente contar con un ambiente de desarrollo que ayuda, entre
otras cosas, a editar los programas y a encontrar los errores de sintaxis que puedan existir

Cada una de las etapas de desarrollo está apoyada por herramientas y lenguajes, que van a permitir
al programador expresar el producto de su trabajo.
Elementos Solución a un problema
Elementos Solución a un problema
La solución a un problema tiene varios componentes.

El primero es el diseño del programa (los planos de la solución) que debe definir la estructura del
programa y facilitar su posterior mantenimiento.

El segundo elemento es el código fuente del programa, escrito en algún lenguaje de programación
como C++, Java, C, C#, etc. El código fuente de un programa se crea y edita usando el ambiente
de desarrollo mencionado anteriormente.

Existen muchos tipos de lenguajes de programación, entre los cuales los más utilizados en la
actualidad son los llamados lenguajes de programación estructurados y los orientados a objetos.
Elementos Solución a un problema
El tercer elemento de la solución son los archivos de construcción del programa. En ellos se explica
la manera de utilizar el código fuente para crear el código ejecutable. Este último es el que se
instala y ejecuta en la computadora del usuario.

El programa que permite traducir el código fuente en código ejecutable se denomina compilador,
por lo tanto antes de poder construir los programas ya sea en los lenguajes de programación C, C+
+ o java, se tiene que conseguir el respectivo compilador del lenguaje.

El último elemento que forma parte de la solución son las pruebas. Allí se tiene un programa que es
capaz de probar que el programa que fue entregado al cliente funciona correctamente. Este
programa funciona sobre un conjunto predefinido de datos, y es capaz de validar que para esos
datos predefinidos y los que simulan datos reales, el programa funcione correctamente.
Elementos Solución a un problema
Construcción de un programa
Análisis de un problema
Análisis de un problema
• Analizar un problema es tratar de entenderlo. Esta etapa busca garantizar que no tratemos de
resolver un problema diferente al que tiene el cliente.

• Descomponer el problema en sus tres aspectos fundamentales, facilita la tarea de entenderlo. En


cada etapa debemos concentrarnos en solo una de ellas, lo que simplifica el trabajo.

• La descomposición se puede generalizar para estudiar todo tipo de problemas, no solo se usa en
soluciones cuya solución sea un programa de computadora.

• Además de entender el problema se debe expresar en una forma de representación siguiendo


algunas convenciones.

• Al terminar la etapa de análisis se debe generar un conjunto de documentos que contendrá la


comprensión del problema. Con dichos documentos se puede validar el trabajo, presentándolo al
cliente y mostrándoselo a el.
Fases resolución de un problema
con computadora
Análisis del Problema
Esta fase es la primera fase de la resolución de un problema y requiere una clara definición, donde se
contemple y determine exactamente lo que debe hacer el programa y el resultado o solución deseada.

Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entrada
y salida.

Para poder identificar y definir bien un problema es conveniente responder a las siguientes preguntas:

• ¿Qué entradas se requieren? (Tipo de datos con los cuales se trabaja y cantidad).
• ¿Cuál es la salida deseada? (Tipo de datos de los resultados y cantidad).
• ¿Qué método produce la salida deseada?
• Requisitos o requerimientos adicionales y restricciones a la solución.
Análisis del Problema
Se desea obtener una tabla con las depreciaciones acumuladas y los valores reales de cada año, de
un automóvil comprado por 20.000 dólares en el año 2005, durante los seis años siguientes
suponiendo un valor de recuperación o rescate de 2.000 dólares.

Realizar el análisis del problema, conociendo la fórmula de la depreciación anual constante D para
cada año de vida útil.
Análisis del Problema
Análisis del Problema
Diseño del Algoritmo
En la etapa de diseño se determina cómo hace el programa la tarea solicitada.

Los métodos más eficaces para el proceso de diseño se basan en el conocido divide y vencerás; es
decir, la resolución de un problema complejo se realiza dividiendo el problema en subproblemas y a
continuación dividiendo estos subproblemas en otros de nivel más bajo, hasta que pueda ser
implementada una solución en la computadora.

Este método se conoce técnicamente como diseño descendente (top-down) o modular. El proceso
de romper el problema en cada etapa y expresar cada paso en forma más detallada se denomina
refinamiento sucesivo. Cada subprograma es resuelto mediante un módulo (subprograma) que tiene
un solo punto de entrada y un solo punto de salida.

Cualquier programa bien diseñado consta de un programa principal (el módulo de nivel más alto) que
llama a subprogramas (módulos de nivel más bajo) que a su vez pueden llamar a otros
subprogramas.

Los programas estructurados de esta forma se dice que tienen un diseño modular y el método de
romper el programa en módulos más pequeños se llama programación modular.
Diseño del Algoritmo
Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente
(incluso por diferentes programadores) y a continuación combinarlos entre sí.

El proceso implica la ejecución de los siguientes pasos hasta que el programa se termina:

1. Programar un módulo.
2. Comprobar el módulo.
3. Si es necesario, depurar el módulo.
4. Combinar el módulo con los módulos anteriores.

El proceso que convierte los resultados del análisis del problema en un diseño modular con
refinamientos sucesivos que permitan una posterior traducción a un lenguaje se denomina diseño
del algoritmo.

El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar
posteriormente.
Algoritmo
Un algoritmo es una secuencia finita de instrucciones, reglas o pasos que describen de modo
preciso las operaciones que una computadora debe realizar para ejecutar una tarea determinada en
un tiempo finito.

En la práctica, un algoritmo es un método para resolver problemas mediante los pasos o etapas
siguientes:

1. Diseño del algoritmo que describe la secuencia ordenada de pasos —sin ambigüedades—
conducentes a la solución de un problema dado (Análisis del problema y desarrollo del
algoritmo).
2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase
de codificación).
3. Ejecución y validación del programa por la computadora.

Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo indicando


cómo hace el algoritmo la tarea solicitada, y eso se traduce en la construcción de un algoritmo.

El resultado final del diseño es una solución que debe ser fácil de traducir a estructuras de datos y
estructuras de control de un lenguaje de programación específico.
Algoritmo
Las cuatro herramientas más comúnmente utilizadas para diseñar algoritmos son:

• Descripción narrada. Lenguaje textual que narra actividades o acciones.


• Pseudocódigo. Lenguaje de especificación de algoritmos, mediante palabras similares al
inglés o español.
• Diagrama Nassi-Schneiderman. Representación gráfica de un algoritmo.
• Diagrama de flujo. Representación gráfica de un algoritmo.

Un algoritmo es concebido como un método para resolver un problema que tiene en general una,
varias o ninguna entrada y al menos una salida.

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 bien 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 tener un número finito de pasos.

La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.


Algoritmo
Ejemplo 2.2
Se desea diseñar un algoritmo para conocer si un número es primo o no.

Un número es primo si sólo puede dividirse por sí mismo y por la unidad (es decir, no tiene más
divisores que él mismo y la unidad). Por ejemplo: 9, 8, 6, 4, 12, 16, 20, etc., no son primos, ya que
son divisibles por números distintos a ellos mismos y a la unidad. Así, 9 es divisible por 3, 8 lo
es por 2, etc.

Entrada: dato n entero positivo


Proceso: 1. Inicio.
2. Poner x igual a 2
(x = 2, x variable que representa a los divisores del número que se busca n).
3. Dividir n por x (n/x).
4. Si el resultado de n/x es entero, entonces n no es un primo y bifurcar al punto 7;
en caso contrario, continuar el proceso.
5. Suma 1 a x (x ← x + 1).
6. Si x es igual a n, entonces n es un número primo;
en caso contrario, bifurcar al punto 3.
7. Fin.
Salida: es o no primo.
Descripción Narrada
Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo
textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.

Ejemplo 2.3
Describir mediante la narrativa o lenguaje natural los pasos necesarios para asistir a clases.
Descripción Narrada
Ejemplo 2.4
Describir mediante la narrativa o lenguaje natural los pasos necesarios para tomar una ducha.
Diagrama Nassi-Schneiderman
Los diagramas Nassi-Schneiderman conocidos como N-S, denominados así por sus inventores, son
una herramienta de programación que favorece la programación estructurada y reúne características
gráficas propias de diagramas de flujo y lingüísticas propias de los pseudocódigos.

Constan de una serie de cajas contiguas que se leerán siempre de arriba-abajo y se documentarán
de la forma adecuada.

En los diagramas N-S las tres estructuras básicas de la programación estructurada, secuenciales,
selectivas y repetitivas, encuentran su representación propia.
Diagrama Nassi-Schneiderman
Pseudocódigo
El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de
un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas
propias de lenguajes de programación, tales como asignaciones, ciclos y condicionales, aunque no
está regido por ningún estándar.

Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio
durante el desarrollo de un algoritmo, como los Diagramas de flujo, aunque presentan una ventaja
importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio
para representar instrucciones complejas.

El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo
tanto puede omitir detalles irrelevantes que son necesarios en una implementación.

Diferentes programadores suelen utilizar convenciones distintas, que pueden estar basadas en la
sintaxis de lenguajes de programación concretos, sin embargo, el pseudocódigo, en general, es
comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez
suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.
Pseudocódigo
El pseudocódigo es un lenguaje de especificación de algoritmos que utiliza palabras reservadas y
exige la indentación, o sea sangría en el margen izquierdo de algunas líneas.

El pseudocódigo se concibió para superar las dos principales desventajas del diagrama de flujo: lento
de crear y difícil de modificar sin un nuevo redibujo.

Es una herramienta muy buena para el seguimiento de la lógica de un algoritmo y para transformar
con facilidad los algoritmos a programas, escritos en un lenguaje de programación específico.

Las palabras reservadas o palabras clave (Keywords) son palabras que tienen un significado especial,
como: inicio y fin, que marcan el principio y fin del algoritmo, y las palabras que aparecen en negrita
en las estructuras especificadas a continuación.

En lugar de las palabras reservadas no deberán utilizarse otras similares, aunque no se distingue
entre mayúsculas y minúsculas.
Pseudocódigo
Pseudocodigo
Ejemplo 2.5

Escribir un algoritmo que lea un valor entero, lo doble, se multiplique por 25 y visualice el resultado.

DATOS DE ENTRADA: numero (el número que leemos por teclado)

PROCESO:
algoritmo ejemplo_2_5
variables
entero: numero, resultado
inicio
leer (numero)
numero ← numero * 2
resultado ← numero * 25
escribir (resultado)
fin

DATOS DE SALIDA: resultado (es el resultado de realizar las operaciones)


Código C++
Ejemplo 2.5
Pseudocodigo
Ejemplo 2.6

Escribir un algoritmo que lea cuatro variables y calcule e imprima su producto, su suma y su media
aritmética.

DATOS DE ENTRADA: a, b, c, d.

PROCESO:
algoritmo ejemplo_2_6
variables
entero: a, b, c, d, producto, suma
real: media
inicio
leer (a, b, c, d)
producto ← a * b * c * d
suma ← a + b + c + d
media ← suma / 4
escribir (producto, suma, media)
fin

DATOS DE SALIDA: producto, suma y media.


Código C++
Ejemplo 2.6
La librería iomanip es
utilizada para las
funciones de redondeo
de números reales
setprecision y fixed.
Pseudocodigo
Ejemplo 2.7

Escribir un algoritmo que lea el peso de una persona en libras y nos devuelva su peso en kilogramos y
gramos (Nota: una libra equivale a 0.453592 kilogramos).

DATOS DE ENTRADA: peso.

PROCESO:
algoritmo ejemplo_2_7
constantes
LIBRA = 0.453592
variables
real: peso, kg, gr
inicio
leer (peso)
kg ← peso * LIBRA
gr ← kg * 1000
escribir ('Peso en kilogramos: ',kg)
escribir ('Peso en gramos: ',gr)
fin

DATOS DE SALIDA: kg, gr.


Código C++
Ejemplo 2.7
Pseudocodigo
Ejemplo 2.8
( 𝐴 + 𝐵 )2
Escribir un algoritmo que determine el valor de la siguiente expresión:
3
DATOS DE ENTRADA: A, B.

PROCESO: PRUEBA DE ESCRITORIO


algoritmo ejemplo_2_8
variables
entero: A, B
real: RES
inicio
leer (A)
leer (B)
RES ← (A + B) ** 2 / 3
escribir (RES)
fin

DATOS DE SALIDA: RES.


Código C++
Ejemplo 2.8
La librería math.h es
utilizada para las
funciones matemáticas
como pow(potencia).
Pseudocodigo
Ejemplo 2.9

Deducir los resultados que se obtienen del siguiente algoritmo:

algoritmo ejemplo_2_9
variables PRUEBA DE ESCRITORIO
entero : X, Y, Z
inicio
X ← 15
Y ← 30
Z←Y-X
escribir (X,Y)
escribir (Z)
fin
Código C++
Ejemplo 2.9
Diagrama de flujo
Los diagramas de flujo se utilizan para la representación gráfica de las operaciones ejecutadas sobre
los datos a través de todas las partes de un sistema de procesamiento de información, denominados
diagrama de flujo del sistema y para la representación de la secuencia de pasos necesarios para
describir un procedimiento particular, denominados diagrama de flujo de detalle.

En la actualidad se siguen usando los diagramas de flujo del sistema, pero ha decaído el uso de los
diagramas de flujo de detalle al aparecer otros métodos de diseño estructurado más eficaces para la
representación y actualización de los algoritmos.

Los diagramas de flujo de detalle en la asignatura es uno de los objetivos prioritarios y serán llamados
simplemente diagramas de flujo.

El diagrama de flujo utiliza unos símbolos normalizados, con los pasos del algoritmo escritos en el
símbolo adecuado y los símbolos unidos por flechas, denominadas líneas de flujo, que indican el
orden en que los pasos deben ser ejecutados.
Diagrama de flujo
Los símbolos principales utilizados por distintos autores son:
Diagrama de flujo
Los símbolos principales utilizados por distintos autores son:
Diagrama de flujo
Diagrama de flujo
Diagrama de flujo
Diagrama de flujo
Ejemplo 2.10

Construir un diagrama de flujo tal que dado el costo de un artículo vendido y la cantidad de dinero
entregada por el cliente, calcule e imprima el cambio que se debe entregar al mismo.

DATOS DE ENTRADA:
PREPRO (representa el precio del producto de tipo real)
PAGO (representa el pago que realiza el cliente de tipo real)

DATOS DE SALIDA:
DEVO (almacena el cambio que se debe entregar al cliente de tipo real)
Diagrama de flujo
Ejemplo 2.10

PRUEBA DE ESCRITORIO
Código C++
Ejemplo 2.10
Diagrama de flujo
Ejemplo 2.11

Construir un diagrama de flujo tal que dadas la base y la altura de un triángulo, calcule e imprima su
superficie.

DATOS DE ENTRADA:
BASE (representa la base del triángulo de tipo real)
ALTU (representa la altura del triángulo de tipo real)

DATOS DE SALIDA:
SUP (almacena la superficie calculada de tipo real)
Diagrama de flujo
Ejemplo 2.11

PRUEBA DE ESCRITORIO
Código C++
Ejemplo 2.11
Diagrama de flujo
Ejemplo 2.12

Escriba un diagrama de flujo tal que dado como datos el nombre de un dinosaurio, su peso y su
longitud, expresados estos dos últimos en toneladas y pies respectivamente; escriba el nombre del
dinosaurio, su peso expresado en kilogramos y su longitud expresada en metros.

DATOS DE ENTRADA:
NOM (representa el nombre del dinosaurio de tipo cadena)
PES (representa el peso del dinosaurio de tipo real)
LON (representa la longitud del dinosaurio de tipo real)

DATOS DE SALIDA:
NOM (representan el nombre ingresado)
PESKIL (representan el peso del dinosaurio en kilogramos)
LONMET (representan la longitud del dinosaurio en metros)

CONSIDERACIONES
1 tonelada equivale a 1000 kilogramos.
1 pie equivale a 0.3047 metros.
Diagrama de flujo
Ejemplo 2.12

PRUEBA DE ESCRITORIO
Código C++
Ejemplo 2.12
Diagrama de flujo
Ejemplo 2.13

Construya un diagrama de flujo que resuelva el problema que tienen en una ga­solinera. Los surtidores
de la misma registran lo que “surten” en galones, pero el precio de la gasolina está fijado en litros. El
diagrama de flujo debe calcular e im­primir lo que hay que cobrarle al cliente.

DATOS DE ENTRADA:
GAL (representa los galones de gasolina entregados al cliente de tipo real)

DATOS DE SALIDA:
TOTAL (representan el monto total que el cliente debe pagara de tipo real)

CONSIDERACIONES
1 galón equivale a 3.785 litros.
1 litro cuesta 8.20 Bs.
Diagrama de flujo
Ejemplo 2.13

PRUEBA DE ESCRITORIO
Código C++
Ejemplo 2.13

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy