Está en la página 1de 11

1.1.

Problema y Solución
Un problema es una abstracción de la realidad para la cual nos interesa conocer
una solución.

Una solución es un procedimiento o método para establecer el mecanismo de


transformación del mundo que nos lleve a satisfacer ciertos requerimientos.
1.2. Fases en la resolución de problemas
La computadora es el principal instrumento para la resolución de problemas, en
el proceso siempre nos lleva a la codificación y ejecución de un programa. Este
proceso debe plantear programas creativos que el usuario se las ingenie para poder
dar solución a cualquier problema que surja.

Según (Joyanes Aguilar & Zahonero Martínez, 2001) “las fases para
la resolución de un problema son:

• Análisis del problema


• Diseño del algoritmo
• Herramientas de programación
• Codificación de un programa
• Compilación y ejecución de un programa
• Verificación y depuración de un programa
• Documentación y mantenimiento”

• 1.2.1. Análisis del problema


• Para analizar el problema se debe de tener en claro las especificaciones
de los requisitos si se quiere obtener una solución adecuada. Según
(Fernández Cárdenas) en “esta fase el objetivo es ayudar al programador a
que llegue a una cierta comprensión de la naturaleza del problema”.
• “Una adecuada definición del problema junto con las especificaciones de
entrada y salida nos ayudan a poder definir con precisión el problema, los
cuales son los requisitos fundamentales para una solución
eficaz” (Fernández Cárdenas).
• Para conseguir una idea del problema en general y lo que se requiere, se
realiza una primera lectura.
• Con una segunda lectura se pretende adquirir los resultados deseados y
los datos necesarios que resolverán el problema.

1.2.2. Diseño o desarrollo del algoritmo


El algoritmo está formado por pasos ordenados que dan las instrucciones que la
máquina debe de ejecutar, “la información que se proporciona al algoritmo,
constituye su entrada y la información producida por el algoritmo constituye su
salida”. (Fernández Cárdenas)

Para resolver problemas complejos, la manera más efectiva es cuando se lo


descompone en subproblemas, los cuales son más sencillos de solucionar
comparados con el original, este mecanismo se denomina divide y vencerás.

(Fernández Cárdenas) afirma: “La descomposición del problema original en


subproblemas más simples y a continuación dividir estos subproblemas en otros
más simples se denomina diseño descendente (top-down design)”.

Para la obtención de un algoritmo claro, completo, y eficaz es necesario varios


niveles de refinamiento, especialmente si es un problema complejo.

1.2.3. Herramientas de programación


En la programación las herramientas para diseñar algoritmos más utilizados son:

• El Pseudocódigo.
• Los Diagramas de flujo de datos (DFD).

“Los diagramas de flujos o flujogramas son representaciones gráficas de un


algoritmo o proceso.” (Joyanes Aguilar & Zahonero Martínez, 2001) Estos
diagramas utilizan señaléticas con significados definidos que representan las fases
del algoritmo, y representan el proceso de ejecución mediante flechas de dirección
que conectan los puntos de inicio y de fin del proceso.

Por su parte los pseudocódigos tratan de un falso lenguaje que solo puede ser
entendible para ser humano, pero no puede ser comprendido o interpretado por una
máquina (computador), está pensado como la representación de un algoritmo que
es diferente de otros lenguajes de programación.

1.2.4. Codificación de un programa


La codificación es la escritura del algoritmo en el lenguaje de programación
elegido . El código puede ser escrito fácilmente debido a que la estructura del
algoritmo es independiente del lenguaje.

“Para realizar la conversión del algoritmo en el programa se deben sustituir las


palabras reservadas en español por sus homónimos en inglés, y las
operaciones/instrucciones indicadas en lenguaje natural por el lenguaje de
programación correspondiente” (Joyanes Aguilar & Zahonero Martínez, 2001, pág.
51)

1.2.5. Compilación y ejecución de un programa


En esta etapa es necesario un programa editor, ya que el algoritmo se ha
convertido en un programa fuente, se lo introduce a la máquina y se los almacena
en la memoria. “Convirtiendo el programa en un archivo de programa.
Posteriormente el programa fuente debe ser traducido a lenguaje máquina, este
proceso se ejecuta con el compilador y el sistema operativo que se encarga de la
compilación”. (Joyanes Aguilar & Zahonero Martínez, 2001)

Luego de la compilación suelen presentarse errores (errores de compilación) en


el programa por lo que es necesario volver a revisar el código fuente, corregir los
errores presentados y compilar nuevamente hasta que esté libre de errores,
consiguiendo un programa objeto que todavía no es ejecutable directamente.

“A continuación, se debe instruir al sistema operativo para que realice la fase de


montaje o enlace (link), carga, con las bibliotecas del programa del compilador. El
proceso finalmente produce un programa ejecutable”.

Las órdenes para compilar y ejecutar, según los programas en C, C++,... o


cualquier otro lenguaje dependerá de su entorno de programación y del sistema
operativo en que se ejecute Windows, Linux, Unix, etc. (Joyanes Aguilar &
Zahonero Martínez, 2001, pág. 52)

1.2.6. Verificación y depuración de un programa


En esta fase se lleva a cabo la ejecución del problema, utilizando datos variados
de entrada, también conocidos como datos de prueba, que ayudarán a determinar
los errores (“bugs”) dentro programa. Para verificar se necesitará datos de prueba
de diferentes gamas como: valores corrientes de entrada, valores de entrada
exagerados que ayudarán a ver las limitaciones del código y otros valores que
comprueben aspectos específicos del programa.

Al momento de ejecutar el código, se presenta los siguientes errores:

1. Errores de compilación. “Se originan por un uso equivocado de las reglas


que existen en los diferentes lenguajes de programación, se los conoce
también como error de sintaxis. Si existe este error, la máquina no puede
interpretar la instrucción, provocando que no se genere el programa objeto y
el compilador imprimirá una lista detallada de los errores encontrados durante
la compilación”.

2. Errores de ejecución. “Se provocan por instrucciones que la computadora


puede comprender, pero no ejecutar. Ejemplos típicos son: división por cero
y raíces cuadradas de números negativos. Aquí el programa paraliza la
ejecución del programa e imprime un mensaje de error”.

3. Errores lógicos. “Resultan de la estructura lógica del programa, el error se


llega a encontrar en el diseño del algoritmo. Debido a que el programa puede
funcionar correctamente y no produce errores de compilación ni de ejecución
se vuelve en uno de los errores más difíciles de detectar y sólo puede
advertirse el error por la obtención de resultados incorrectos. Aquí se deberá
volver a la fase de diseño del algoritmo, modificar el algoritmo, cambiar el
programa fuente y compilar y ejecutar una vez más” (Joyanes Aguilar &
Zahonero Martínez, 2001)

Al momento de encontrar ciertos errores dentro del código, se procede a la


depuración donde se eliminan y/o corrigen los errores presentados.

1.2.7. Documentación y mantenimiento


La documentación del problema es importante porque influye en el resultado
final, ya que consta de los pasos descritos que conllevan a la resolución de dicho
problema.

Los programas con escasa documentación son difíciles de leer, depurar,


modificar e imposibles de mantener

En un programa la documentación puede ser interna la cual se coloca “en líneas


de comentarios y externa donde se incluye análisis, pseudocódigos, diagramas de
flujo o manuales de usuario cuyas instrucciones ayudan a ejecutar e interpretar el
programa” (Joyanes Aguilar & Zahonero Martínez, 2001).

“La documentación es vital cuando se desea corregir posibles errores futuros o


bien cambiar el programa” (Joyanes Aguilar & Zahonero Martínez, 2001, pág. 53)

1.2.8. Ejemplo
Para comprender el proceso para la resolución de problemas mediante la
máquina, se procederá a resolver el siguiente ejemplo:

Calcular e imprimir la superficie y la longitud la circunferencia, utilizando


como dato de entrada el radio de un círculo

ANÁLISIS.

El único dato de entrada es el radio del círculo, sin embargo, este dato puede
ser cualquier valor dentro del conjunto de los numero reales positivos.

Las salidas del problema serán dos variables: superficie y longitud de la


circunferencia. El tipo de dato de estas variables también son los reales positivos.

Entradas: radio (variable RADIO).

Salidas: superficie (variable Área), y circunferencia del círculo (variable


Circunferencia).

Todas las variables de tipo real positivo.


DISEÑO.

La descomposición del problema se divide en lo que se quiere encontrar (Área-


Circunferencia) y el dato proporcionado (radio). A continuación, se muestra la
fragmentación del problema en subproblemas más simples.

Los pasos para solucionar el problema serían los siguientes

1. Inicio
2. Ingresar el valor del radio
3. Calcular la superficie
4. Calcular la Longitud
5. Imprimir el valor del Radio
6. Imprimir el valor de la Superficie
7. Imprimir el valor de la Longitud
8. Fin
Presentación del tema: "Metodología de la Programación"—
Transcripción de la presentación:

1 Metodología de la Programación
Elementos BásicosOtoño 2014

2 DefinicionesSistema: Conjunto de Unidades que colaboran entre si para realizar una


función general y donde cada unidad efectúa un trabajo específico.Computadora: Sistema
de Procesamiento de Información que recibe datos como entrada, los modifica (procesa) y
produce resultados como salida.MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

3 Arquitectura básicaEl diseño básico operacional de un sistema de cómputo se conoce


como arquitectura A. John Von Neumann (NVA), un pionero del diseño de la
computadora.Un sistema típico de NVA tiene tres componentes: memoria, una unidad
central de procesamiento (CPU) y dispositivos de entrada/salida (I/O).MC Beatriz Beltrán
MartínezFCC - BUAP Otoño 2014

4 Arquitectura básica Dispositivos de E/S Registros ALU


MemoriaProgramaBuses del SistemaDispositivos de E/SÁrea de DatosÁrea de
CódigoRegistrosALUUnidad de ControlMC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

5 DatosEl ser humano realiza los razonamientos a partir de información adquirida que
está almacenada en su cerebro.La computadora tiene que almacenar en su interior toda
la información necesaria para realizar el proceso automático que le pedimos que
ejecute.La parte de la computadora que realiza esta función es la Memoria principal,
interna o central. Es la denominada memoria R.A.M. (memoria de acceso directo).MC
Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

6 Tipos de datosLos tipos de datos se agrupan en tipos simples o bien en tipos


estructurados, nosotros vamos a empezar viendo los tipos simples de datos.Los valores
que se pueden almacenar en memoria vamos a dividirlos en los siguientes
tipos:Numéricos (enteros y reales).Lógicos.Carácter.Cadenas.MC Beatriz Beltrán
MartínezFCC - BUAP Otoño 2014

7 Constantes y variables
En una computadora se pueden distinguir ciertos valores que no cambian durante la
ejecución de un proceso, a estos valores se les denominan constantes.De la misma forma
existen valores que van cambiando durante el proceso y a estos se les denominan
variables.Las variables se identifican por un nombre que se le asigna y el tipo que indica
los valores que puede contener para un uso correcto de la variable.MC Beatriz Beltrán
MartínezFCC - BUAP Otoño 2014
8 Constantes y variables
Área de almacenamiento, de tamaño fijo y que sirve para guardar un tipo de dato
específico.Las variables tiene dos elementos: El Nombre de la variable y el Contenido de la
variable.El nombre de la variable sirve para distinguirla de otras variables y el contenido
se refiere al dato que es guardado en ese lugar.La variable puede almacenar un sólo tipo
de dato como puede ser datos enteros, reales, booleanos, caracteres, etc.MC Beatriz
Beltrán MartínezFCC - BUAP Otoño 2014

9 Operadores y expresiones
Son los elementos que permiten indicar la realización de una operación entre
determinados valores. La sintaxis de estas expresiones con operadores será siempre de la
siguiente forma: Expresión1 operador Expresión2Cada expresión puede ser un solo valor,
constante o variable, o una expresión como conjunto de valores relacionados mediante
operadores, por lo que es necesario que existan unas reglas que indiquen en que orden
deben efectuarse las operaciones.MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

10 Prioridad Operadores aritméticos:


Esta relación de operadores aritméticos es la más usual, pero siempre es conveniente
consultar el manual del lenguaje de programación que se utilice en cada
momento.OperadorSignificado^Exponenciación*Multiplicación/DivisiónDivDivisión
enteraModResto+Suma-RestaMC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

11 Prioridad Operadores relacionales:


Estos operadores actúan sobre valores numéricos y sobre valores tipo cadenas. El
resultado es un valor lógico.SignificadoSímboloIgual que=Menor que<Mayor que>Menor o
igual que<=Mayor o igual que>=Diferente<>, MC Beatriz Beltrán MartínezFCC - BUAP
Otoño 2014

12 Prioridad Operadores Lógicos:


Estos operadores actúan sobre valores lógicos, es decir, entre el valor verdadero y el valor
falso.Anot AT F A BA and BA or BA xor BT FMC Beatriz Beltrán MartínezFCC - BUAP Otoño
2014

13 Prioridad Nivel de prioridad de los operadores.


Las dos reglas principales para evaluar expresiones son:Se empieza a evaluar por la
izquierda.Los paréntesis siempre tienen la mayor prioridad, teniendo en cuenta que
pueden estar anidados, en cuyo caso se evaluará primero el más interno.MC Beatriz
Beltrán MartínezFCC - BUAP Otoño 2014

14 Asignación de variables
Es una de las acciones básicas que se puede ejecutar en la computadora.Una variable está
relacionada con posiciones de memoria que van a contener valores que pueden cambiar
durante la ejecución del proceso.Por tanto es necesario tener una acción que permita dar
valores adecuados a cada variable para obtener al final del proceso los resultados
correctos.MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

15 Asignación de variables
Se debe tener en cuenta el tipo de variable para no cometer errores a la hora de la
asignación.La asignación de un valor a una variable supone una escritura en memoria y
por tanto una operación destructiva del valor que tuviera la variable anteriormente.El
símbolo utilizado para indicar esta acción de asignación será “”, de forma que la
operación se señalará de la siguiente manera:variable  valor o expresión.MC Beatriz
Beltrán MartínezFCC - BUAP Otoño 2014

16 ExpresionesUna expresión es una combinación de operandos (variables), constantes y


operadores.La expresión debe estar bien escrita, es decir, siguiendo las reglas de los
operadores.Las expresiones se pueden dividir en expresiones aritméticas o expresiones
lógicas.Ejemplos de expresiones aritméticas:25(50 * 2) + 10Salario * 0.15MC Beatriz
Beltrán MartínezFCC - BUAP Otoño 2014

17 Expresiones Ejemplos de proposiciones con expresiones aritméticas:


Base  (500 * 2) + 100Salario  DiasTrabajados * SalarioDiarioImpuesto  Salario *
0.15Ejemplos de proposiciones con expresiones lógicas:Mayor  a > bMenor  ( a < b ) and
( b < c )MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

18 Ejercicio Obtener los resultados de las siguientes expresiones:


c) (“abc” + “de”) > “abcde”d) 7>6 AND 5=5 OR 4<0e) 2^3+6/3-4^2f) (2^(3+6/3)-4)^2g) NOT
(5<6 OR 7=0) AND Falsoh) / * 7.25MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

19 Metodología de la Programación
Herramientas de RepresentaciónOtoño 2014

20 Resolución de problemas
Fases de Resolución del Problema:Análisis del problema. Consiste en la definición concisa
a fin de que sea analizado en todo detalle.Diseño o desarrollo del algoritmo. Es el
procedimiento, paso a paso, para la solucionar el problema dado.Resolución del algoritmo
por computadora. Es la codificación del algoritmo en un algún lenguaje de
programación.MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

21 Diseño de un algoritmo Las Fases para el Diseño del Algoritmo son:


Diseño Descendente (Algoritmo Narrado).Refinamiento por pasos (Algoritmo
detallado).Herramientas de Programación (Representación del Algoritmo en una
herramienta).Diseño de un AlgoritmoDiseño DescendenteRefinamiento por
pasosHerramientas de programación:Diagramas de FlujoPseudocódigoPruebas de
escritorioMC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014
22 Algoritmo NarradoEste 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.INICIOSituar 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.FINMC Beatriz
Beltrán MartínezFCC - BUAP Otoño 2014

23 Refinamiento por pasos


En esta fase consiste en descomponer en pasos más simples cada uno de los pasos del
algoritmo narrado, donde se deberá especificar las acciones en forma detalladas y sus
datos de forma precisa.Características del Refinamiento de pasosSe detallan acciones de
selección, de repetición.Otra característica es el uso de indentación (sangrado o
justificación del texto) para escribir los pasos del algoritmo.Además se pueden establecer
la identificación de las entradas, salidas, constantes y variables previamente definidas.MC
Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

24 Refinamiento por pasos


Algoritmo para determinar los números menores que 90 y múltiplos de 9.InicioInicializar
Num9Mientras Num<903.1 Escribir Num.3.2 Num Num+9FinMC Beatriz Beltrán
MartínezFCC - BUAP Otoño 2014

25 Herramientas de programación
Para representar un algoritmo se debe utilizar algún método que permita independizar
dicho algoritmo del lenguaje de programación elegido. Permitiendo su representación y
su transformación a un programa para su codificación:Su representación gráfica puede
ser utilizando: Diagramas de flujo.Lenguaje de especificación de algoritmos:
Pseudocódigo.MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

26 Diagramas de Flujo Un diagrama de flujo (flowchart):


Es una de las técnicas de representación de algoritmos más antiguas y la vez mas
utilizada, aunque su empleo ha disminuido.Es un diagrama que utiliza los símbolos (cajas)
estándar y que tiene escritos en cada caja los pasos del algoritmo las cuales están unidas
por flechas denominadas líneas de flujo.Debidamente realizado permite altos niveles de
estructuración, para mantener las nuevas corrientes de diseño y modularización.MC
Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

27 Diagramas de Flujo Reglas para la construcción de diagramas de flujo:


Todo diagrama de flujo debe tener un inicio y un fin.Las líneas utilizadas para indicar la
dirección del flujo del diagrama deben ser rectas, verticales y horizontales.Todas las líneas
utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas a alguno
de los símbolos.El diagrama de flujo debe ser construido de arriba hacia abajo y de
izquierda a derecha.Si el diagrama de flujo requiriera más de una hoja para su
construcción, debemos utilizar los conectores.MC Beatriz Beltrán MartínezFCC - BUAP
Otoño 2014

28 PseudocódigoEs una herramienta de programación en la que las instrucciones se


escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la
lectura de programas.Las palabras reservadas comúnmente utilizadas en pseudocódigo
son: Inicio, Fin, Leer, Escribir, Si, Entonces, Sino, FinSi, Según, FinSegun, Mientras, Hacer,
FinMientras, Repetir, HastaQue, Para, FinPara, Desde, entre otras.MC Beatriz Beltrán
MartínezFCC - BUAP Otoño 2014

29 Pseudocódigo Características del pseudocódigo:


Mantiene una indentación o sangría adecuada para facilitar la identificación de los
elementos que lo componen.Permite la declaración de los datos (constantes y/o variables)
manipulados por el algoritmo.Dispone de un conjunto pequeño de palabras reservadas
para expresar las acciones del algoritmo.Supera las dos principales desventajas del
diagrama de flujo: lento de crear y difícil de modificar.Permite el seguimiento de la lógica
de un algoritmo.MC Beatriz Beltrán MartínezFCC - BUAP Otoño 2014

AUTOEVALUACIÓN

1. Un problema es: Es una abstracción de la realidad para la cual nos interesa


conocer una solución.
2. Cuál es el propósito de analizar un problema: Ayudar al programador para llegar a
una cierta comprensión de la naturaleza del problema.
3. ¿Cuáles son las dos herramientas más utilizadas para el diseño de algoritmos?
Pseudocódigo y Diagramas de flujo
4. ¿Cuáles son los errores de compilación? Errores de sintaxis
5. Un típico error de ejecución es: División por cero
6. La documentación es vital para: Corregir posibles errores futuros o bien cambiar
el programa
7. La codificación de un programa: Es la escritura en un lenguaje de programación
8. Que se requiere para poder definir con precisión el problema: Especificaciones de
entrada y salida.
9. ¿Cuáles son los errores más difíciles de detectar? Errores lógicos
10. ¿Dónde se incluye la documentación externa? Análisis, diagramas de flujo y/o
pseudocódigos, manuales de usuario.

También podría gustarte