Está en la página 1de 19

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

FACULTAD DE INGENIERÍA DE SISTEMAS


COMPUTACIONALES
CENTRO REGIONAL DE COCLÉ

Docente

Ing. María Yahaira Tejedor M. de Fernández MSc.

Módulo I: Introducción
a la programación
Módulo I. Introducción a la Programación

Módulo I: Introducción a la programación


1.1 Definición
1.1.1. Algoritmo
1.1.2. Programas
1.1.3. Estilos de Escritura
1.2 Conceptos de Paradigmas de Programación
1.2.1. Programación Estructurada
1.2.2. Programación Orientado a Objeto
1.2.3. Programación Orientado a Eventos
1.3. Etapas para la Resolución de Problemas por computadora
1.3.1. Definición del problema
1.3.2. Análisis y Diseño del Problema
1.3.3. Programación
1.3.3.1. Algoritmo
1.3.3.2. Prueba de escritorio
1.3.3.3. Codificación
1.3.3.4. Compilación/Ejecución
1.3.3.4.1. Tipos de Errores
1.3.4. Documentación

Introducción
El capítulo introduce los fundamentos teóricos necesarios para comprender la forma en la que los desarrolladores
de software resuelven problemas cotidianos a través de algoritmos que luego son transformados en programas
de computadora empleando un lenguaje específico.

1.1 Definición
1.1.1. Algoritmo

La definición más elemental de un algoritmo nos dice que es un método para resolver un problema y consta
de: Entrada, Proceso y Salida. Un algoritmo básico de una receta de cocina tiene como entrada:
Ingredientes y utensilios empleados. Como proceso: Elaboración de la receta en la cocina. Como salida:
Terminación del plato (por ejemplo, arroz con pollo).

Este término tiene diversos significados, cada uno de los cuales intenta profundizar en el concepto y su función,
veamos algunos.
• Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base
a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar
la falta de esta a un problema en un tiempo determinado.
• Es una serie ordenada de instrucciones, pasos o procesos que llevan a la solución de un determinado
problema. Los hay tan sencillos y cotidianos como seguir la receta del médico, abrir una puerta, lavarse
las manos, etc; hasta los que conducen a la solución de problemas muy complejos.
• Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y
preciso.
• Conjunto de sentencias / instrucciones en lenguaje nativo (natural), los cuales expresan la lógica de un
programa.
• Descripción exacta y precisa de la secuencia de instrucciones en que se ha de realizar un conjunto de
actividades tendientes a resolver un determinado problema, mediante un número finito de pasos.
• Toda receta, proceso, rutina, método, procedimiento, técnica, fórmula que resuelven un determinado
problema.
• Un algoritmo es una técnica de solución de problemas, que consiste en una serie de instrucciones paso
a paso y que produce resultados específicos para un problema determinado [1]

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 1


Módulo I. Introducción a la Programación

FIG 1: COMPONENTES CLAVES DEL ALGORITMO

Para diseñar algoritmos hay que tener presente los requisitos/características siguientes siguientes:
 Indicar el orden lógico de realización de cada acción (especificidad)
 Estar definido sin ambigüedad.
 Ser finito.

Ejemplo 1: Pasos para cambiar una bombilla (foco) se pueden expresar en forma de
Algoritmo:
1. Ubicar una escalera o un banco debajo de la bombilla fundida
2. Tomar una bombilla nueva
3. Subir por la escalera o al banco
4. Girar la bombilla fundida hacia la izquierda hasta soltarla
5. Enroscar la bombilla nueva hacia la derecha en el plafón hasta apretarla
6. Bajar de la escalera o del banco
7. Fin
FIG. 2 IMAGEN DEL
Ejemplo 2: Elabore un algoritmo para ver la película “Cuarto de Guerra” ALGORITMO DEL
BOMBILLO
▪ Averiguar por medio de la cartelera (en web o en un periódico) dónde y en qué
horario se exhibe la película.
▪ Estar en la taquilla del cine donde se exhibe un poco antes del horario.
▪ Comprar una entrada y entrar a la sala correspondiente.
▪ Sentarse en la butaca
▪ Ver la película
▪ Salir del cine

Partes de un Algoritmo:
▪ Cabecera de programa: es una acción
que puede iniciar con la palabra
algoritmo/proceso seguido del nombre
asignado. Ejemplo: Algoritmo suma,
Proceso Mayores.
▪ Bloque o cuerpo del algoritmo: Consta
de dos secciones:
 La sección de declaración: es donde
se definen o declaran las variables y
constantes (nombre y tipo de dato que Fig 3. Partes de un algoritmo en PSeInt
almacena)
 La sección ejecutable: empieza generalmente con la palabra inicio. Aquí se escriben las acciones que
deberá realizar la computadora cuando el algoritmo se convierta a un programa en un lenguaje en particular
y éste sea ejecutado. Básicamente es el proceso que dará solución al problema, puede incluir mensajes
solicitando datos, lectura de valores, asignación de valores, cálculos, impresión de resultados
▪ Fin del algoritmo: todo algoritmo es finito, por ello debe terminar con la palabra fin.

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 2


Módulo I. Introducción a la Programación

Representación de los Algoritmos: la representación de un algoritmo se logra mediante la separación de éste,


del lenguaje de programación elegido. Con esto se logra que pueda ser representado en cualquier lenguaje. Para
ello debe ser representado gráfica y numéricamente, así cualquier lenguaje de programación será capaz de
interpretar su codificación.
Las formas más usuales de representar un algoritmo son:
▪ Pseudocódigo
▪ Diagrama de flujo

Pseudocódigo: es un lenguaje de especificación de algoritmos (no de programación) basado en un sistema


notacional, que permite esquematizar los pasos a seguir para lograr una solución al problema planteado y requiere
menos precisión que un lenguaje de programación formal como Java, Python, otros.

El seudocódigo tiene estructuras sintácticas y semánticas similares a los lenguajes procedurales, aunque menos
formales que las de éstos, por lo que no puede ser ejecutado directamente por un computador.

El pseudocódigo utiliza para representar las sucesivas acciones, palabras reservadas similares a sus homónimas
en los lenguajes de programación, tales como start / inicio, end, stop, if-then-else, while-do, repeat-until,
(inicio, fin, parar, si-entonces sino, mientras-hacer, repetir-hasta), etc.

El pseudocódigo exige la indentación (sangría en el margen izquierdo) de diferentes líneas.

Las ventajas del uso del pseudocódigo residen en:


 Su uso en la planificación de un programa; permitiendo que el programador se pueda concentrar en la lógica
y en las estructuras de control y no tenga que preocuparse, por ahora de detalles acerca de las reglas
sintácticas y semánticas de un lenguaje específico.
 Aunque el pseudocódigo es independiente del lenguaje de alto nivel que vaya a utilizarse, un algoritmo
expresado en pseudocódigo puede ser traducido más fácilmente a muchos de ellos.

Nota: para efectos prácticos se usará el lenguaje C incluido en DevC++ para escribir el pseudocódigo, por ser
muy sencillo de aprender a ejemplificar algoritmos. Deberá instalarlo, revisar los manuales y familiarizarse con
la herramienta antes de ir al laboratorio.

Ejemplo 3: Represente mediante pseudocódigo la solución algorítmica para calcular el área de un triángulo.

Algoritmo Área
Variables:
base, altura: entero
area: real
Inicio
Imprimir(“Introduce la medida de la base: ”)
Leer base
Imprimir(“Introduce la medida de la altura: ”)
Leer altura
area = (base * altura) / 2
Imprimir(“El valor del área es: ”)
Fig. 4 Representación de Pseudocódigo en C
Imprimir area
Fin

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 3


Módulo I. Introducción a la Programación

Diagrama de flujo: son herramientas gráficas utilizadas tanto


para representar algoritmos, como en la ayuda en el diseño de
programas. Están compuestos por una serie de símbolos,
unidos con flechas, donde cada símbolo representa una acción
distinta y las flechas el orden de realización de las acciones.

Cada símbolo, por tanto, tendrá al menos una flecha que


conduzca a él y una flecha que parta de él, exceptuando el
comienzo y final del algoritmo. Los símbolos utilizados
habitualmente en la confección de estos diagramas son:

A medida que se avance en la lógica de programación, se


incorporarán otros símbolos. Es importante resaltar que una
de las herramientas que se empleará al inicio para trabajar los
pseudocódigos es PSeInt, la cual consta con la facilidad de
generar de inmediato el diagrama de flujo.

Fig 5. Símbolos de Diagrama de Flujo

Ejemplo 4: Desarrolle el diagrama de flujo para el cálculo del área del triángulo.

Algoritmo Área
Variables:
base, altura: entero
area: real
Inicio
Imprimir(“Introduce la medida de la base: ”)
Leer base
Imprimir(“Introduce la medida de la altura: ”)
Leer altura
area = (base * altura) / 2
Imprimir(“El valor del área es: ”)
Imprimir area
Fin

Fig. 6 Ejemplo de Diagrama de Flujo en PSeInt

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 4


Módulo I. Introducción a la Programación

Fig. 7 Algoritmo y Diagrama de Flujo de la suma de dos números enteros.


Fuente:
http://virtual.umng.edu.co/distancia/ecosistema/ovas/ingenieria_informatica/logica_de_programacion/unidad_2/medios/documentacion/p4h
1.php

Actividad Individual:
• Elabora un algoritmo para realizar 2 actividades cotidianas (depositar en la cuenta de ahorro, botar la
basura, asistir a la universidad, maquillarte, desmaquillarte, hacer un postre, preparar el almuerzo, bañar
a tu mascota, etc).
• Revise en la red diferentes algoritmos representados a través de pseudocódigo y diagrama de flujo que
resuelvan situaciones como las que se enumeran a continuación.
 Calcular el área de figuras geométricas varias.
 Determinar el mayor de 2 valores de entrada.

1.1.2 ¿Qué es programa?

• Está definido como un conjunto de instrucciones, que ejecutarán una tarea determinada mediante
procedimientos lógicos. De esto se deduce que el programa realizará lo que el programador desea.
• Un programa de computadora es un conjunto de sentencias o instrucciones ordenadas en una secuencia
lógica, que se traducen en órdenes dadas a la máquina y que producirán la ejecución de una determinada
tarea.
• Un programa es una secuencia lógica de instrucciones escritas en un determinado lenguaje de
programación, que indica a la computadora las acciones que debe llevar a cabo. En esta definición
encontramos dos elementos: instrucción y secuencia lógica [1].
 Una instrucción que es una orden que se le da a la máquina para que ejecute una acción y
que se compone de operador (operación a realizar) y operando (valores en la operación). En la
fig.6 en la instrucción → area = (base * altura) / 2, base y altura son operandos. El signo =, *
y / son operadores

 Secuencia Lógica es el orden de ejecución de cada instrucción en el programa.

La programación de computadores compromete a los estudiantes en varios aspectos importantes de la solución


de problemas: decidir sobre la naturaleza del problema, seleccionar una representación que les ayude a
resolverlo, y monitorear sus propios pensamientos y estrategias de solución.

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 5


Módulo I. Introducción a la Programación

Diferencia entre Algoritmo y Programa: Una diferencia notoria entre un algoritmo y un programa es que el
algoritmo incorpora las características estructurales básicas de la computación, independientemente de los
detalles de su implementación; mientras que un programa tiene un conjunto específico de detalles para resolver
un problema, como por ejemplo: un lenguaje y su sintaxis, el entorno de desarrollo integrado, entre otros.

• ¿Qué es la programación de computadoras?


Disciplina mediante el cual los programadores/desarrolladores analizan problemas, diseñan soluciones, las
codifican empleando lenguajes de programación específicos, prueban los programas y proveen mantenimiento
de los mismos.

• ¿Lenguaje de Programación?
Conjunto de símbolos, vocablos, reglas sintácticas y estándares que emplean los desarrolladores para escribir
programas de computador (software), que puedan ser entendidos por él.

1.1.3. Estilos de Escritura

El sistema para describir (“escribir”) un algoritmo consiste en realizar una descripción paso a paso con un
lenguaje natural del citado algoritmo. Recordemos que un algoritmo es un método o conjunto de reglas para
solucionar un problema. Estas reglas tienen las siguientes propiedades:
• Deben ir seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado coherente.
• Sólo puede ejecutarse una operación a la vez.
• Debe mantener la indentación (sangría).
El flujo de control usual de un algoritmo es secuencial; consideremos el algoritmo que responde a la pregunta:

¿Qué hacer para ver la película de Cuarto de Guerra?

La respuesta es muy sencilla y puede ser descrita en forma de algoritmo general de la siguiente manera:

ir al cine El algoritmo consta de cuatro acciones


comprar una entrada (billete o ticket) básicas, cada una de las cuales debe ser
ver la película ejecutada antes de realizar la siguiente. En
regresar a casa términos de computadora, cada acción se
codificará en una o varias sentencias que
ejecutan una tarea particular.

En un algoritmo anterior existen diferentes aspectos a considerar.


1. Uso de ciertas palabras reservadas se han escrito deliberadamente en negrita (mientras, si_no; etc.). Estas
palabras describen las estructuras de control fundamentales y procesos de toma de decisión en el algoritmo.

Éstas incluyen los conceptos importantes de selección (expresadas por si-entonces-si_no, if-then-else) y de
repetición (expresadas con mientras-hacer o a veces repetir-hasta e iterar-fin_iterar, en inglés, whiledo y repeat-
until) que se encuentran en casi todos los algoritmos, especialmente en los de proceso de datos. La capacidad de
decisión permite seleccionar alternativas de acciones a seguir o bien la repetición una y otra vez de operaciones
básicas.

2. Otro aspecto a considerar es el método elegido para describir los algoritmos, empleando indentación
(sangrado o justificación) al escribir. La indentación facilita la comprensión del algoritmo al momento de
leer la secuencia de instrucciones o las acciones interiores a las estructuras fundamentales citadas: selectivas
y repetitivas. Por lo tanto la indentación o sangrado de los algoritmos será obligatoria para la escritura
de los algoritmos del curso.

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 6


Módulo I. Introducción a la Programación

Fig 8. Uso de Palabras Reservadas e Indentación

1.2 Conceptos de Paradigmas de Programación

Un paradigma de programación representa un conjunto de métodos sistemáticos aplicables en todos los niveles
del diseño de programas.

Es una manera técnica y filosófica de crear código, en la mayoría de casos son creadas por la comunidad de
Desarrolladores de Software, que al dar un resultado y llenar esa demanda que pide el mercado es adoptada como
un estándar de trabajo en la Programación.

Cada Paradigma puede tener diferentes conceptos y formas de abstracción de los elementos que componen un
proyecto. El Paradigma que se usa en la actualidad es el de la Programación Orientada a Objetos (POO) que
funciona mediante la integración de datos que se procesan en una entidad que se llama objeto. Bajo este
paradigma de trabajará en cursos posteriores, empleando Java como lenguaje de programación

1.2.1. Programación Estructurada o Procedimental:

Es decir, cada sentencia o instrucción señala al compilador para que realice alguna tarea: obtener una entrada,
producir una salida, por ejemplo: sumar tres números, dividir por cinco, etc.

En un programa desarrollado en un lenguaje procedimental, el programador crea una lista de instrucciones en un


lenguaje de programación, que luego la computadora compila para finalmente ejecutar las instrucciones. Cuando
los programas se vuelven más grandes, la lista de instrucciones aumenta considerablemente, de modo tal que el
programador tiene muchas dificultades para controlar ese gran número de instrucciones.

Para resolver este problema, los programas se descompusieron en unidades más pequeñas que adoptaron el
nombre de funciones (procedimientos, subprogramas o subrutinas). Cada una de estas funciones o
componentes agrupa la lista de sentencias o instrucciones a ejecutar. De este modo en un programa orientado a
procedimientos se divide en funciones, de modo que cada función tiene un propósito bien definido y resuelve
una tarea concreta, y se diseña una interfaz claramente definida (el prototipo o cabecera de la función) para su
comunicación con otras funciones.

Esta característica hace que a medida que los programas se hacen más grandes y complejos, el paradigma
estructurado comienza a dar señales de debilidad y resultando muy difícil terminar los programas de un modo
eficiente.

Existen varias razones de la debilidad de los programas estructurados para resolver problemas complejos. Tal
vez las dos razones más evidentes son éstas. Primero: las funciones tienen acceso ilimitado a los datos globales.
Segundo: las funciones inconexas y datos, fundamentos del paradigma procedimental proporcionan un modelo
pobre del mundo real.

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 7


Módulo I. Introducción a la Programación

• Manejo de datos en el paradigma procedimental:


Datos locales y datos globales: Datos locales que están ocultos en el interior de la función y son utilizados,
exclusivamente, por la función. Estos datos locales están estrechamente relacionados con sus funciones y están
protegidos de modificaciones por otras funciones.

Otro tipo de datos son los datos globales a los cuales se puede acceder desde cualquier función del programa. Es
decir, dos o más funciones pueden acceder a los mismos datos siempre que estos datos sean globales.

FIG 9. DATOS GLOBALES Y DATOS LOCALES

• Modelado del mundo real


Un segundo problema importante de la programación estructurada reside en el hecho de que la disposición
separada de datos y funciones no se corresponden con los modelos de las cosas del mundo real.

En el mundo físico tratamos con objetos (personas, autos o aviones) y no son como los datos ni como las
funciones. Los objetos complejos del mundo real tienen atributos y comportamiento. Los atributos son
características de los objetos son, por ejemplo: en las personas, su edad, su profesión, su domicilio, etc. El
comportamiento es una acción que ejecutan los objetos del mundo real como respuesta a un determinado
estímulo. El comportamiento, en esencia, es como una función: se llama a una función para hacer algo (visualizar
la nómina de los empleados de una empresa). Por estas razones, ni los datos ni las funciones, por sí mismas,
modelan los objetos del mundo real de un modo eficiente.

La programación estructurada mejora la claridad, fiabilidad y facilidad de mantenimiento de los


programas; sin embargo, para programas grandes o a gran escala, presentan retos de difícil solución.

1.2.2. Programación Orientado a Objeto (POO).

La programación orientada a objetos, es tal vez el paradigma de programación más utilizado en el mundo del
desarrollo de software y de la ingeniería de software del siglo XXI, trae un nuevo enfoque a los retos que se
plantean en la programación estructurada cuando los problemas a resolver son complejos.

La programación orientada a objetos (POO) expresa un programa como un conjunto de objetos que intercambian
información entre sí para realizar algo específico.

Este paradigma de programación se caracteriza por trabajar con:

✓ Objetos: El objeto es el centro de la programación orientada a objetos. Un objeto es algo que se


visualiza, se utiliza y juega un rol o papel. Si se programa con enfoque orientado a objetos, se intentan

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 8


Módulo I. Introducción a la Programación

descubrir e implementar los objetos que juegan un rol en el dominio del problema y en consecuencia en
el programa. Ejemplo de objetos que pueden usarse en un programa en POO: estudiante, universidad,
empleado, clientes, proveedores, entre otros.
✓ Clases: define qué datos se utilizan para representar un objeto y las operaciones que se pueden ejecutar
sobre esos datos. Cada clase tiene sus propias características y comportamiento; en general, una clase
define los datos que se utilizan y las operaciones que se pueden ejecutar sobre esos datos. Una clase
describe un objeto.
En POO los objetos son miembros de clases, y ésta es un tipo de dato que contiene datos y funciones.
Una clase contiene muchos objetos y es preciso definirla. Una clase es una descripción de un número de
objetos similares.
Por definición todos los objetos de una clase comparten los mismos atributos (datos) y las mismas
operaciones (métodos). Una clase encapsula las abstracciones de datos y operaciones necesarias para
describir una entidad u objeto del mundo real.
✓ Abstracción: significa centrarse en qué es y qué hace un objeto y no en cómo debe implementarse.
Durante el proceso de abstracción es cuando se decide qué características y comportamiento debe tener
el modelo.
✓ Encapsulación: El encapsulado o encapsulación de datos es el proceso de agrupar datos y operaciones
relacionadas bajo la misma unidad de programación. En el caso de los objetos que poseen las mismas
características y comportamiento se agrupan en clases, que no son más que unidades o módulos de
programación que encapsulan datos y operaciones.
✓ Ocultamiento: Capacidad de ocultar los detalles dentro de un objeto.
✓ Herencia: Mecanismo para compartir automáticamente métodos y atributos entre clases y subclases.
✓ Polimorfismo: Característica que permite implementar múltiples formas de un mismo método,
dependiendo cada una de ellas de la clase sobre la que se realice la implementación.

El diseño de un programa orientado a objetos contiene, al menos, los siguientes pasos:

1. Identificar los objetos del sistema.

2. Agrupar en clases a todos objetos que tengan características y comportamiento comunes.

3. Identificar los datos y operaciones de cada una de las clases.

4. Identificar las relaciones que pueden existir entre las clases.

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 9


Módulo I. Introducción a la Programación

FIG 10. ORGANIZACIÓNTÍPICA DE LOS DATOS EN EL POO

1.2.3. Programación Orientado a Eventos

La programación dirigida por eventos (creado en 2013), es un paradigma de programación en el que tanto la
estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema,
definidos por el usuario o que ellos mismos provoquen.
En la programación dirigida por eventos, al comenzar la ejecución del programa se llevarán a cabo las
inicializaciones y demás código inicial y a continuación el programa quedará bloqueado hasta que se produzca
algún evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa pasará a ejecutar
el código del correspondiente administrador de evento. Por ejemplo, si el evento consiste en que el usuario ha
hecho clic en el botón de play de un reproductor de películas, se ejecutará el código del administrador de evento,
que será el que haga que la película se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación en Visual Basic, en los que a cada elemento del
programa (objetos, controles, etcétera) se le asignan una serie de eventos que generará dicho elemento, como la
pulsación de un botón del ratón sobre el control.
La programación dirigida por eventos es la base de lo que llamamos interfaz de usuario, aunque puede emplearse
también para desarrollar interfaces entre componentes de Software.

1.3. Etapas para la Resolución de Problemas por computadora:


Los primeros programadores al enfrentarse a los problemas buscaron la forma de reducir el esfuerzo que
implicaba escribir programas. De allí que se crean los lenguajes de programación de alto nivel, cuya sintaxis
(escritura) es parecida al lenguaje humano; estos lenguajes se convirtieron en una herramienta para que el
programador escriba programas que luego son traducidos al código de máquina (lenguaje binario que entiende
el computador) de modo que la computadora ejecute las instrucciones y resuelva el problema.

Para resolver problemas por computadora se requiere de las fases enumeradas a continuación, veamos cada
una de ellas:

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 10


Módulo I. Introducción a la Programación

 Definición del problema o dominio del problema


 Análisis y Diseño del Problema
 Programación
❖ Algoritmo
❖ Codificación
❖ Prueba de Escritorio
❖ Compilación/Ejecución
❖ Tipos de Errores
 Documentación

1.3.1 Definición del problema: es importante identificar cuál es el problema a resolver, por tanto “problema”
serán aquellas cuestiones conceptuales o prácticas, cuya solución es expresable mediante un algoritmo.

Problemas que pueden resolverse a través de programas:


 Calcular el área de una figura geométrica.
 Desarrollar un sistema de matrícula en línea.
 Control de la contabilidad empresarial a través de Peachtree.

En esta etapa se necesita entender qué se necesita resolver, qué requiero para resolver la situación y qué
información demanda el usuario como respuesta al utilizar el programa. Esto permitirá la resolución de un
problema de manera más sencilla, pues se cuenta con una idea bastante precisa de cómo podemos llegar a esta
solución.

Algunas sugerencias para hacer una definición/comprensión exitosa del problema son:
✓ Leer el problema varias veces
✓ Establecer los datos del problema
✓ Aclarar lo que se va a resolver (¿Cuál es la pregunta?)
✓ Precisar el/los resultado(s) que se desea lograr
✓ Determinar la(s) incógnita(s) del problema
✓ Organizar la información
✓ Agrupar los datos en categorías
✓ Trazar una figura o diagrama.

1.3.2. Análisis y Diseño del Problema: El objetivo del análisis del problema, es ayudar al programador a llegar
a una cierta comprensión de la naturaleza del mismo.

El programador debe alcanzar claridad acerca de lo siguiente:


1. Los objetos, datos conocidos o datos de entrada: aquellos elementos de información total o parcial
que se encuentran en el enunciado del problema, y que son útiles en la búsqueda de los objetos desconocidos.
2. Los objetos, datos desconocidos o datos de salida: aquellos datos que el algoritmo debe entregar como
solución, al final de su ejecución.
3. Las condiciones: por una parte están las condiciones que deben cumplir los datos de entrada )positivos,
solo enteros, sólo letras, etc). Por otra parte están las propiedades que deberán cumplir los datos de salida, que
son normalmente relaciones con los datos de entrada. Estas relaciones establecen una dependencia de los datos
de entrada.

Por lo tanto el análisis necesita una serie de pasos (Ver Fig. 11):
 Definir el problema con total precisión.
 Especificar los datos de partida necesarios para la resolución del mismo (especificaciones de entrada):
¿Qué datos son necesarios para resolver el problema?
 Especificar la información que debe proporcionarse al resolverse (especificaciones de salida): ¿Qué
información debe proporcionar la resolución del problema?

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 11


Módulo I. Introducción a la Programación

Fig 11. Fase de Análisis del problema.

El siguiente esquema muestra las etapas dentro del análisis:


✓ Formular el problema: La solución de un problema debe iniciar por determinar y comprender
exactamente en qué consiste ese problema.

Fig 12. Etapas A Desarrollar En La Fase De Análisis Del Problema

Una vez se cumplan los pasos anteriores se puede hacer un diseño para dar respuesta al problema.

Ejemplo 5: Se desea que usted encuentre el área de un triángulo. ¿Cómo resolvería esta situación bajo el
enfoque de programación?
Fase 1: Descripción del problema:
▪ El algoritmo debe resolver el área de un
triángulo.
▪ Necesito conocer la fórmula específica.
▪ El usuario requiere del cálculo correcto
(impreso / pantalla).

Fase 2: ANÁLISIS DEL PROBLEMA


¿Qué queremos obtener?
El área de un triángulo.
Se aplica la fórmula A= (b*h)/2.
El resultado se dará por pantalla.
▪ ¿Qué datos necesitamos?
Los valores de la base y de la altura.
Fig. 13 Diagrama de Flujo para calcular el área de un triángulo
Los valores de entrada no pueden ser negativos
porque son ilógicos

Fase 3: DISEÑO DE LA SOLUCIÓN


Se plantea un algoritmo para llegar a la solución.
1. Pedir al usuario el valor de la base y el valor de la altura

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 12


Módulo I. Introducción a la Programación

2. Hacer primero la multiplicación de la base por la altura.


3. Dividir el resultado anterior entre 2
4. Presentaré en pantalla el resultado de la operación con un mensaje que diga: “El valor del área es:”.

¿Qué sucede si la base y la altura ingresadas son negativas?

Ejemplo 6: Construir un algoritmo que calcule el promedio de 5 notas y mostrarlo por pantalla al usuario.
¿Cómo resolvería esta situación bajo el enfoque de programación?
Fase 1: Descripción del problema:
▪ El algoritmo debe calcular el promedio de 5 notas de 0 a 100.
▪ Necesito conocer la fórmula para promedio.
▪ El usuario requiere la salida correcta por pantalla.

Fase 2: ANÁLISIS DEL PROBLEMA


¿Qué queremos obtener?
El promedio de 5 notas.
Se deben sumar las 5 notas.
El resultado anterior dividirlo entre 5
El resultado se dará por pantalla.
▪ ¿Qué datos necesitamos?
Los valores de las 5 notas que van de 0 a 100.
Los valores de entrada no pueden ser negativos porque son ilógicos
Fase 3: DISEÑO DE LA SOLUCIÓN
Se plantea un algoritmo para llegar a la solución con los siguientes pasos

Algoritmo Promedio:
1. Inicio.
2. Realizar la lectura de las notas.
3. Verificar que cada nota esté entre 0 y 100 Fig 14. Diagrama de Flujo para
Promedio de 5 notas
4. Si las notas están entre 0 y 100 entonces
a. Sumar las 5 calificaciones
b. Aplicar la fórmula de promedio
c. Imprimir el resultado por pantalla.
5. Si no (rango incorrecto)
a. Enviar mensaje de error
6. Fin del algoritmo

Observe la fig. 14 y 15 y verifique si está completo


o faltan validaciones para que sea una solución
correcta.
Anote cuáles serían a su criterio!!!

Fig 15. Código en C del algoritmo genérico para promedio de 5


calificaciones

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 13


Módulo I. Introducción a la Programación

1.3.3 Programación: es una fase de resolución práctica del problema con el computador. Esta fase se
descompone en las siguientes subfases: algoritmo, prueba de escritorio, codificación, compilación/ejecución,
documentación. Veamos brevemente cada una.

1.3.3.1 Algoritmo: especifica un conjunto de instrucciones capaz de obtener datos de salida correctos, a partir
de datos válidos de entrada. Recordar que según su definición, un algoritmo debe describir tres partes:
Entrada, Proceso y Salida.

Algoritmo Promedio:
1. Inicio.
2. Realizar la lectura de las notas.
3. Verificar que cada nota esté entre 0 y 100
4. Si las notas están entre 0 y 100 entonces
a. Sumar las 5 calificaciones
b. Aplicar la fórmula de promedio
c. Imprimir el resultado por pantalla.
5. Si no (rango incorrecto)
a. Enviar mensaje de error
6. Fin del algoritmo

1.3.3.2 Prueba de escritorio:


 Es la comprobación lógica de un algoritmo de resolución.
 Es una herramienta útil para entender qué hace un determinado algoritmo, o para verificar que un
algoritmo cumple con la especificación sin necesidad de ejecutarlo.
 Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo, por lo tanto se debe
llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo.
Para desarrollar la prueba de escritorio, se utilizará el siguiente procedimiento:
▪ Con datos de prueba, se seguirán cada uno de los pasos propuestos en el algoritmo de resolución.
▪ Si la prueba de escritorio genera resultados óptimos, quiere decir que el algoritmo posee una lógica
adecuada, en caso contrario el algoritmo tendrá que ser corregido.

Ejemplo 7: Desarrolle la prueba de escritorio para el cálculo del área del triángulo.
Prueba de Escritorio para Algoritmo Área de
Algoritmo Área Triángulo
Entrada Proceso Salida
Variables:
base altura area
base, altura: entero
area: real 10 5 (10*5)/2 25
-10 5 (-10*5)/2 -25
Inicio 10 -5 (10*-5)/2 -25
Imprimir(“Introduce la medida de la base: ”) -10 -5 (-10*-5)/2 25
Leer base
Imprimir(“Introduce la medida de la altura: ”)
Leer altura
Como puede observarse, el algoritmo genera
area = (base * altura) / 2 respuestas correctas si las entradas son válidas
Imprimir(“El valor del área es: ”) (positivas), pero si el usuario ingresa valores
Imprimir area no válidos o negativos, el algoritmo sigue
Fin
generando respuesta incorrecta (no hay área
negativa); inclusive cuando en la última línea
el resultado es correcto, se debió validar que ambas entradas eran incorrectas.
La prueba de escritorio indica que al algoritmo hay que realizarse correcciones.

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 14


Módulo I. Introducción a la Programación

1.3.3.3 Codificación: Cuando ya se ha diseñado completamente el algoritmo, se tiene escrito en algún esquema
de representación (pseudo-código o diagrama de flujo), el siguiente paso es codificarlo en el lenguaje de
programación definido para tal fin. En este momento es cuando el programador interactúa con el computador
mediante el lenguaje seleccionado (Visual Basic.Net, C#, C++, Java, PHP, Phyton, otros).

El código deberá estar escrito de acuerdo con


la sintaxis del lenguaje de programación ya
que solamente las instrucciones
sintácticamente correctas pueden ser
interpretadas por el computador.

Fig 15. Código en C del algoritmo genérico para promedio de 5


calificaciones

Ejemplo 8: A continuación se muestra la codificación del problema para calcular el área de un triángulo en
PSeInt y Lenguaje C.
Solución por Algoritmo
Algoritmo Área

Variables:
base, altura: entero
area: real

Inicio
Imprimir(“Introduce la medida de la base: ”)
Leer base
Imprimir(“Introduce la medida de la altura: ”)
Leer altura
area = (base * altura) / 2
Imprimir(“El valor del área es: ”)
Imprimir area
Fin
Solución en PSeInt Solución en Lenguaje C

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 15


Módulo I. Introducción a la Programación

1.3.3.4 Compilación/Ejecución: Un programa escrito en un lenguaje de alto nivel (C, Visual Basic.Net, C#,
C++, etc) se conoce como programa fuente y no puede ser ejecutado directamente por un ordenador, sino que
debe ser traducido primero a lenguaje máquina.

Compilación es el proceso de traducir el programa fuente a lenguaje de máquina, llamado código objeto (cuya
extensión suele ser .obj); si el código está libre de errores de compilación, el código objeto se une al
código compilado de las librerías y módulos invocados por el código fuente y se genera un archivo ejecutable
(extensión .exe en Windows)

Proceso de Ejecución: fase de la programación mediante la cual se generan los resultados. Esta primera
ejecución es incierta, ya que existe una alta posibilidad de que aparezcan errores, ya sea en la codificación o en
la lógica del algoritmo.

En la ejecución se carga el programa con extensión .exe en el propio entorno de ejecución, y luego el archivo
ejecutable se lanza en el Sistemas Operativo.

Se inicia entonces la ejecución de las instrucciones por la CPU, ya que el procesador accede al código máquina
del programa ya convertido y ejecuta las acciones. Es aquí cuando vemos los resultados.

Fig. 16 Compilación y ejecución de programa en C

1.3.3.4.1 Tipos de Errores:


Durante el desarrollo de un programa se pueden presentar errores que lo hagan descartable. Estos errores se
clasifican en:

Errores de compilación o de sintaxis: se producen en tiempo de compilación y se deben al mal uso de las reglas
del lenguaje de programación en cuanto a su sintaxis (violaciones a las reglas de sintaxis). Ejemplo: no terminar
una sentencia con punto y coma (;), escribir prit en lugar de printf y otros.
Si existe un error de sintaxis, la computadora no puede comprender la instrucción y no puede generarse el
programa objeto. El programa despliega una lista de errores encontrados.

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 16


Módulo I. Introducción a la Programación

Fig. 17 Ejemplo de error de compilación (falta un punto y coma en


la línea 11)

▪ Errores de ejecución: Es cuando le


indicamos a la computadora, realizar una
acción y ésta la comprende, pero no
puede ejecutarla.

Ejemplo 9: al ejecutar en C el programa


que calcula el área del triángulo,
omitiendo la declaración de la variable
área, se produce el siguiente error.

Fig. 18 Error de Ejecución al NO declarar la variable área y usarla


en la línea 13

▪ Errores lógicos: Se presentan cuando


el resultado de nuestro programa está
fuera del rango esperado, debido a que
el razonamiento lógico planteado en el
algoritmo no es el correcto.
Ejemplo 10: para el programa del área
si introducimos base 5 y altura -10, se
genera un resultado negativo.

Fig.19 Error de Ejecución (lógica incorrecta)

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 17


Módulo I. Introducción a la Programación

1.3.4. Documentación: La documentación de un programa tiene dos propósitos:


1. Explicar las funciones del software y describir el modo de utilizarlas, esta documentación se dirige
al usuario del programa (secretaria, contable, administrador, etc) y debe estar en un lenguaje entendible
para ellos. Ejemplos: manuales de usuario, ayuda en línea, mensajes emergentes, otros.
2. Describir el software en sí para poder mantener el sistema en una etapa posterior de su ciclo de vida,
así como para facilitar eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al
sistema.
Como vemos la descripción del software va dirigida a personal con conocimiento en programación y usa términos
técnicos y particulares de esta área.
Este tipo de documentación incluye todo lo concerniente al propio desarrollo del software y de la gestión del
proyecto.
Ejemplos: modelos (UML), diagramas, pruebas, manuales técnicos, etc.
Referencias

[1]Barraza, O., Krol, F., Velásquez, M. y Meléndez, L. Introducción a la Programación Orientada a Objetos
[2]Juan Carlos Lopez García. Algoritmos y Programación – Guía para Docentes.
[3]Samperio Monroy Theira Irasema. Antología “Programación Estructurada”. Diciembre2006
[4]Cairó Olvaldo, Metodología de la programación (algoritmos, diagramas de flujo y programas), Editorial
Alfaomega, Segunda edición.
[5]Joyanes Aguilar Luís, Fundamentos de programación (Algoritmos, estructuras de datos y objetos), Editorial
Mc GrawHill, Tercera Edición.
[6]Ferreyra Cortés Gonzalo, Informática para cursos de bachillerato, Editorial Alfaomega, Segunda Edición

Documento elaborado por: Ing. María Yahaira Tejedor M. Página 18

También podría gustarte