Sei sulla pagina 1di 13

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERÍA Y ARQUITECTURA


ESCUELA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS

INTRODUCCIÓN A LA INFORMÁTICA

GUION DE CLASE No. 2


UNIDAD II

METODOLOGÍA PARA RESOLVER PROBLEMAS

Objetivos:
• Conocer los tipos de programación que existe.
• Conocer y aplicar la metodología para resolver problemas, diseñando un
algoritmo y más adelante creando un programa para ello.

Contenido:
Introducción Pág. 1
I. Conceptos Generales Pág. 1
II. Tipos de Programación Pág. 4
III. Proceso Solucionador de Problemas Pág. 6
IV. Algoritmos Pag. 8
V. Ejemplos Pág. 9

INTRODUCCIÓN
En esta Unidad estudiaremos la metodología para poder resolver un problema utilizando
desde luego una computadora como herramienta, es decir, mediante un programa que se
diseñará para tal fin.

En otras palabras, vamos dar los primeros pasos en el diseño de programas que solucionen
cualquier tipo de problema de manera ordenada para explicar y representar la solución
diseñada.

I. CONCEPTOS GENERALES
1. Programación: Es el proceso de diseñar, escribir, probar, depurar y mantener un programa
de computadora

2. Programa: Conjunto de órdenes, escritas en un lenguaje de programación para que la


computadora resuelva un problema.

3. Lenguaje de Programación: Conjunto de reglas y vocablos que nos ayudan a comunicarle


comandos ordenes o instrucciones al computador, para que realice una actividad o tarea
específica.

1
4. Problema: Es una situación real, que tiene ciertas condiciones y/o restricciones, que se
necesita transformar. De acuerdo a Edward Krick, un problema proviene del deseo de lograr
la transformación de un estado de cosas en otro. Ejemplos:
• Obtener hielo.
• Ir de una ciudad a otra.
• Ingresar a la Universidad de El Salvador
• Ordenar alfabéticamente una lista de nombres
• Calcular la distancia entre los puntos P1(X1,Y1) y P2 (X2., Y2)
• Inscribir asignaturas en la F.I.A.
• Calcular la cuenta que debe pagar un cliente en un restaurante.

5. Solución, es un medio de lograr la transformación deseada. Un problema que tenga una


única solución es bastante raro, la mayoría de los problemas tienen varias soluciones
posibles; por ejemplo, para obtener hielo, usted puede poner a congelar el agua, comprarlo
en una tienda o hasta puede pedir a su vecino que le regale un poco. Para ir de una ciudad
a otra, piense en todas las formas de viajar y en las posibles rutas con las que pueden
combinarse y obtener medios alternativos para realizar su traslado.

Además, un problema involucra algo más que hallar una solución; requiere la mejor forma
de lograr la transformación deseada; es decir, que entre todas las posibles soluciones se
debe elegir cual es la óptima; por ejemplo, el medio de transporte debe ser el mejor con
respecto al costo, rapidez, seguridad, comodidad y confiabilidad. Una norma de preferencia
para seleccionar de entre varias soluciones se conoce como criterio.

Finalmente, es difícil imaginar un problema que no tenga restricciones a las soluciones.


Una restricción es algo que debe cumplir una solución y se relacionan con las condiciones
iniciales o datos del problema. Ejemplos: el tiempo de traslado no debe ser mayor de 3
horas, el costo del viaje o traslado no debe ser mayor que $30.00, la edad de una persona
nunca puede ser negativa, para que una semilla se transforme en planta, se le deben
administrar agua, luz y nutrientes.

Todo problema tiene sus propias características o datos y toda solución genera cierta
información útil, por lo tanto ampliaremos un poco más el concepto que tenemos sobre
datos.

6. Clasificación de Datos
Los datos, como ya sabemos, son características o cualidades de una persona, un hecho, un
lugar o una cosa y pueden ser numéricos o alfanuméricos.

Datos Numéricos: Como su nombre lo indica, están formados por uno o varios dígitos y
representan cantidades que pueden ser operables. Dentro de los datos numéricos tenemos:

• Datos numéricos Enteros: números sin parte fraccionaria. Ejemplo


10 25 255 -1050

2
• Datos numéricos Reales: números con parte fraccionaria. Ejemplo:
0.25, -3.798654

Datos Alfanuméricos: Son los que están formados por letras, dígitos y símbolos; además, no
representan cantidades operables. Ejemplo:
“PEDRO MARTINEZ”, “INGENIERIA CIVIL”, "AM93021”, “2235-4852”, “$125.30”

Se conoce en términos informáticos que un carácter es un byte donde se puede almacenar


una letra, un dígito, un signo de puntuación o un símbolo para formar datos alfanuméricos.

Los datos además, se clasifican de acuerdo al número de veces que pueden cambiar de valor
en:

Datos Constantes: Se considera un dato constante, numérico o alfanumérico, aquel dato que
no cambia durante un período determinado de tiempo.
Ejemplos: Número de carné de un alumno, el DUI, dirección, número de materias inscritas en
un ciclo, el día de nacimiento, la altura de un edificio, el valor de π, el valor de е, etc.

Datos Variables: Un dato variable es aquel que cambia en un período determinado de tiempo.
Los datos variables pueden ser numéricos o alfanuméricos. Ejemplos: la temperatura
ambiente en un día, notas de un examen parcial, cantidad de estudiantes que asisten a una
clase, etc.

7. Variable.
En informática, se le llama variable a un lugar de almacenamiento, capaz de contener o
guardar un dato cuyo valor asociado se puede modificar durante la ejecución de un
programa. Según el valor que se le dé, las variables pueden ser numéricas o alfanuméricas.
Para distinguir o identificar una variable se le asocia un nombre, con el cual, podemos acceder
al valor asociado o guardado en ella.

• Numéricas son aquellas que solo pueden tener valores numéricos y son operables.
Ejemplos:

hola = 100 valor = 25000 edad = 12


NUM = 1.385 A = -289 k = -0.3168

• Alfanuméricas son aquellas que contiene letras y números, y se acostumbra a


escribirlos dentro de comillas. Ejemplos:

NOM = "PEDRO" C = “CP99011” tel = “2256 – 4725”


COLOR = "rojo" CARRERA = "ING. CIVIL"

Por convención la estructura que utilizaremos para los nombres de las variables en la
asignatura, deberá cumplir las siguientes reglas:
• El primer carácter deberá ser una letra

3
• Los siguientes caracteres pueden ser letras o números
• La longitud máxima debe ser de 10 caracteres
• El único carácter permitido, distinto de letras y dígitos es el guión de subrayado o
guión bajo: _

Ejemplos: libro, val1, Valor25, pago_total

II. TIPOS DE PROGRAMACIÓN


A medida que la tecnología de las computadoras fue evolucionando, también han ido
cambiando las formas o estilos de programar; se han propuesto varias técnicas de
programación cuyo objetivo principal es mejorar tanto el diseño de programas como su
mantenimiento.
Entre ellas se pueden mencionar las siguientes:
• Programación Estructurada
• Programación Declarativa
• Programación Orientada a Objetos
• Programación Orientada por Eventos

1. Programación Estructurada (PE):


La Programación Estructurada es una metodología que consiste en aplicar un conjunto de técnicas
que nos permiten programar de forma fácil, ordenada y eficaz. Utilizando la Programación
Estructurada se obtiene ventajas tales como:
 Permite diseñar fácilmente, programas efectivos y correctos.
 La depuración del programa es mucho más fácil.
 El programa generado puede ser utilizado por cualquier usuario.
 El diseño de programas se vuelve una tarea sistemática.
 El mantenimiento o modificación de los programas es más rápido y fácil.

Un programa diseñado con este estilo de programación, consta de instrucciones que describen la
solución del problema. Las técnicas fundamentales de Programación Estructurada son cuatro:
♦ Lógica Estructurada
♦ Documentación
♦ Análisis Estructurado
♦ Estructura de datos.

Cada una de esas técnicas las estudiaremos y aplicaremos en la solución de problemas en las
siguientes unidades del temario de esta asignatura.

Ejemplos de Lenguajes estructurados: Pascal, Basic, FORTRAN, C.

2. Programación Declarativa:
Es uno de los pioneros en los estilos de programación. Desarrolla programas especificando o
“declarando” un conjunto de condiciones, proposiciones, restricciones, ecuaciones o transformaciones
que describen el problema y detallan su solución; sin especificar exactamente cómo encontrarla.

4
En Programación Declarativa, las sentencias que se utilizan describen el problema que se quiere
solucionar, pero no las necesarias para resolverlo. Dicho de otra manera, más que el Cómo
desarrollar un proceso, nos interesa el Qué deseamos obtener a través del programa.

Ejemplos de Lenguajes declarativos: Prolog, Lisp, Haskell.

3. Programación Orientada a Objetos (POO):


La programación orientada a objetos, ha tomado las mejores ideas de la programación estructurada y
los ha combinado con varios conceptos nuevos y potentes que incitan a contemplar las tareas de
programación desde un nuevo punto de vista. La Programación Orientada a Objetos, permite
descomponer más fácilmente un problema en subgrupos de partes relacionadas del problema.

Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de
programación de los años anteriores, principalmente debido a las aplicaciones gráficas, por lo que la
Programación Estructurada no es suficiente, lo que ha llevado al desarrollo de nuevas técnicas, tales
como Programación Orientada a Objetos (POO) y el desarrollo de entornos de programación que
faciliten la programación de grandes aplicaciones. Este estilo de programación, utilizado desde 1980,
usa objetos y sus interacciones para diseñar programas informáticos.

Objeto: Una estructura de datos y conjunto de procedimientos que operan sobre dicha estructura.
Una definición más completa de objeto es: una entidad de programa que consiste en datos y todos
aquellos procedimientos que pueden manipular aquellos datos; el acceso a los datos de un objeto es
solamente a través de estos procedimientos, únicamente estos procedimientos pueden manipular,
referenciar y/o modificar estos datos.

Para poder describir todos los objetos de un programa, conviene agrupar éstos en clases.

Clase: Podemos considerar una clase como una colección de objetos que poseen características y
operaciones comunes. Una clase contiene toda la información necesaria para crear nuevos
objetos.

Este tipo de programación está basado en varias técnicas, entre ellas:


• Herencia
• Abstracción
• Polimorfismo
• Encapsulamiento

Ejemplos de Lenguajes orientados a Objeto: C++, Java,

4. Programación Orientada por Eventos:


La Programación dirigida u Orientada por Eventos es un estilo 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.

El creador de un programa dirigido por eventos debe definir los eventos que manejarán su programa y
las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como el
Administrador de evento. Los eventos soportados estarán determinados por el lenguaje de

5
programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo
programador.

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 click 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 Lexico y Visual Basic, en los que a cada
elemento del programa (objetos, controles, etc.) se le asignan una serie de eventos que generará
dicho elemento, como la pulsación de un botón del ratón sobre él o el redibujado del control.

III. PROCESO SOLUCIONADOR DE PROBLEMAS:


Para resolver los problemas de forma ordenada y fácil, utilizaremos esta metodología que puede ser
aplicada con pocas variantes a todos los tipos de programación.

Durante el presente ciclo nos dedicaremos a estudiar Programación Estructurada (PE) para
solucionar cualquier tipo de problemas; a continuación presentamos los pasos necesarios para
resolver problemas.
• Formulación del problema
• Análisis del problema
• Diseño de la solución
• Codificación de la solución
• Depuración de la solución
• Documentación y mantenimiento.

El proceso abarca las actividades y eventos que transcurren entre el reconocimiento de un problema y
la especificación de una solución del mismo que sea funcional, económica y satisfactoria. Este es el
proceso general mediante el cual el ingeniero aplica sus conocimientos, aptitudes y puntos de vista en
la creación de dispositivos, estructuras y procesos. Por tanto, es la actividad primordial de la práctica
de la ingeniería.

1- Formulación del Problema:


¿Se intentaría resolver un problema sin saber en qué consiste? Seguramente que no; sin embargo,
esto es exactamente lo que uno está inclinado a hacer y que difícilmente puede conducir a una
resolución efectiva.

Los objetivos principales de la formulación de un problema son:


• Definir en términos generales en que consiste,
• Determinar si merece nuestra atención y
• Obtener una buena perspectiva del problema cuando sea más oportuno y fácil hacerlo.

Es obvio que éstas son cosas que deben conocerse al principio, antes de empezar a resolver el
problema.

6
Rara vez se le presenta el verdadero problema al ingeniero; más bien, él mismo debe determinar en
qué consiste. Esto suele ser difícil porque su naturaleza a menudo es encubierta por mucha
información sin importancia, soluciones que se emplean corrientemente, opiniones que originan
confusión y por las formas tradicionales y desventajosas de considerar un problema.

En esta fase del proceso, se debe identificar la transformación que se desea expresando en términos
generales el problema particular, ignorando los detalles por el momento y concentrándose en la
identificación de los estados A y B, llamado también estado inicial y estado final.

Para representar la Formulación del Problema en forma esquemática, se hace uso del método de la
“Caja Negra”, así:

¿Cómo estamos? ¿Cómo queremos estar?


Estado A Estado B
Entrada de datos Salida de datos

Estado Inicial Estado Final

2- Análisis del problema:


En la formulación del problema es suficiente identificar el estado A, y el estado B, que en informática
se conocen como Entrada de Datos y Salida de Datos, respectivamente; sin embargo, para resolver el
problema es necesario saber más acerca de la entrada y la salida. Por lo tanto, durante esta etapa de
la metodología, se detallan o especifican los estados A y B determinando las características
cualitativas y cuantitativas de ambos estados. Básicamente, el análisis del problema consiste en:

a. Definir las variables de salida:


¿Qué se nos pide?, ¿Qué resultados queremos?, ¿Cuáles incógnitas debemos obtener?
Debe tenerse en cuenta que todo lo que se nos pide siempre son datos variables

b. Definir las variables de entrada:


¿Qué datos tenemos?, ¿Son estos suficientes? ¿Son datos variables o constantes?
En este punto debe de diferenciarse los datos variables de los datos constantes

c. Que restricciones existen:


¿Existen limitantes para las variables de entrada?

d. Criterios:
¿Qué criterios se utilizarán para seleccionar el mejor diseño?
Realmente, los criterios cambian muy poco de problema a problema; generalmente van asociados
a costos, tiempo o recursos necesarios. Para efectos de la asignatura, no sé utilizarán.

e. Detallar los procesos necesarios para transformar el estado A en B:


¿Qué fórmulas, ecuaciones, modelos, etc. Necesitamos para obtener resultados a partir de los
datos de entrada?

f. Definir las variables de proceso:


Si éstas son necesarias. Las variables de proceso son aquellas que se generan o producen
durante el proceso, para obtener el estado B, pero no son de entrada ni de salida. Cabe recalcar
que no todos los problemas tienen variables de proceso.

7
3. Diseño de la solución:
En esta etapa ya tenemos una idea clara de cómo solucionar el problema, en el caso particular de la
materia, la solución así diseñada se conoce como: ALGORITMO, y consiste en ordenar todo lo que
tenemos en el Análisis: conocer los datos de entrada, procesar o realizar los cálculos necesarios en el
orden debido y por último especificar los datos de salida o información. Esta etapa requiere de mucho
ingenio y creatividad.

4. Codificación de la solución:
Consiste en traducir o escribir el algoritmo, en un lenguaje de programación de alto nivel.

5. Depuración de la solución
Una vez introducido el programa en el computador, debe probarse exhaustivamente, ejecutando el
programa hasta que se obtengan los resultados deseados y que este libre de errores.

Cuando se ejecuta un programa, se pueden producir 3 tipos de errores:


a. Error de compilación, se producen por el uso incorrecto de las reglas del lenguaje de
programación, estos errores se conocen con el nombre de “errores de Sintáxis”.
b. Errores de ejecución, se producen por instrucciones que el computador puede traducir pero no
ejecutar. Ejemplo: división entre cero, raíz cuadrada de un número negativo, imprimir una variable que
no se le ha asignado ningún valor, asignar un valor numérico a una variable de tipo alfanumérico.
c. Errores lógicos, Estos errores se producen cuando, el programa se compila y ejecuta, pero los
resultados obtenidos o datos de salida, son incorrectos o no se obtiene ningún resultado.
Ejemplo: Cálculo incorrecto del salario neto.

6. Documentación y Mantenimiento
La documentación de un programa puede ser Interna y Externa. La documentación interna es la
contenida en las líneas de comentarios dentro del programa. La documentación externa incluye: el
planteamiento y el análisis del problema, diagramas de flujo y/o pseudo códigos, manuales de usuario,
etc. Si las características del problema cambian, el o los programas deben modificarse, así como su
documentación. Al proceso de mantener los programas y su documentación actualizados se le llama
Mantenimiento. Una buena documentación del programa ayuda al manejo del mismo y a su
mantenimiento cuando sea necesario.

IV. ALGORITMOS

1. Definición de Algoritmo:
Es una descripción ordenada y breve de los pasos a seguir para realizar una tarea o actividad y con
ello resolver un problema manualmente o por medio de una máquina.

2. Propiedades de un buen Algoritmo:


Las propiedades generales de un buen algoritmo son:

 Todo algoritmo debe ser especificado en forma precisa, mediante un número finito de pasos. Esta
propiedad trata de eliminar ambigüedades, de tal forma que cualquier persona pueda comprender y
ejecutar el algoritmo y obtener el mismo resultado.

 Todo algoritmo tiene un único inicio y un único final.

8
 El algoritmo se debe diseñar de forma general, o sea que debe resolver el problema, según los
datos que sean proporcionados.

 Debe ser eficaz, es decir que al finalizar la ejecución del algoritmo, la solución del problema debe
ser alcanzada; de esto se obtiene que todo buen algoritmo debe tener un paso para finalizar el
mismo.

 Las partes básicas de todo buen algoritmo son:


 Entrada de datos, donde se conocen los datos de entrada
 Procesamiento de datos (o proceso), donde se transforman los datos de entrada en
datos de salida, y
 Salida de datos, donde se muestran los datos de salida o información requerida

 La ejecución de todo algoritmo debe de ser factible de implementar, es decir se debe tener acceso
a todo lo que éste requiera (datos y tecnología).

3. Representación de un Algoritmo:
Un algoritmo lo podemos representar de varias formas:

 ALGORITMO NARRADO:
Usando nuestro idioma natural, con nuestras propias palabras, se detallan los pasos a realizar para
resolver un problema

 ALGORITMO ESQUEMATIZADO:
Usando una serie de símbolos para representar cada paso del algoritmo. A este esquema de solución
se le llama Diagrama de Flujo o FLUJOGRAMA.

 ALGORITMO PSEUDO-CODIFICADO:
Usamos una mezcla de lenguaje natural y un código de programación específico (o lenguaje de
programación). En el presente curso no usaremos pseudo código.

 ALGORITMO CODIFICADO:
En esta representación de algoritmo, usamos un código o lenguaje de programación, como BASIC,
PASCAL, C, etc. Un algoritmo codificado se conoce como PROGRAMA.

V. EJEMPLOS DE APLICACIÓN DEL PROCESO SOLUCIONADOR DE PROBLEMAS:

EJEMPLO 1.
Elabore un algoritmo que permita sumar dos números dados.
Para resolver el problema utilizamos la metodología paso por paso hasta la etapa tres:

I. Planteamiento del Problema

Entrada de datos Salida de datos

• Primer número • Suma de los dos números


• Segundo número

9
II. Análisis del Problema
a. Definición de Variables de Salida:
NOMBRE TIPO DESCRIPCIÓN
S Real Representa la suma de los dos
números.

b. Definición de Datos de Entrada:


NOMBRE TIPO DESCRIPCIÓN
N1 Real El primer número dado
N2 Real El segundo número dado
Todos los datos son variables, no existen constantes

c. Restricciones: no existen, los números pueden ser positivos, negativos o incluso cero.

d. Proceso:
(Cálculos necesarios) relación entre N1, N2 y S o bien la forma de transformar N1 y N2 en S.

S = N1 + N2

e. Definición de Variables de Proceso: No se requieren, en este caso

III. Diseño de solución: Algoritmo Narrado:


1. Inicio
2. Leer o conocer el valor del primer número, N1.
3. Leer o conocer el valor del segundo número, N2.
4. Calcule la suma de los dos números: S = N1 + N2
5. Imprimir o presentar el resultado: “La suma de ", N1, " y “, N2, “es”, S
6. Fin.

EJEMPLO 2.
Calcular el salario de un trabajador a partir de las horas que ha trabajado, sabiendo que su pago por
hora es de $6.50 .

I. Planteamiento del Problema

Entrada de datos Salida de datos

• Nombre del empleado • Desplegar Nombre del


• Horas trabajadas empleado
• Pago por hora ($6.50) • Desplegar Horas trabajadas
• Salario

10
II. Análisis del problema
a. Definición de Variables de Salida
Nombre Tipo Descripción
Salario Real Representa el salario devengado por el empleado
Se desplegará el nombre y las horas trabajadas del empleado

b. Definición de Datos de Entrada


Variables
Nombre Tipo Descripción
Nom Alfanumérico Almacena el nombre del empleado
Horas Entero Representa el número de horas trabajadas
El pago por hora trabajada ($6.50) se considera constante.

c. Restricciones: Las horas trabajadas no pueden ser negativas,


Horas >=0

d. Proceso: El salario depende de las horas trabajadas


Salario = 6.50 * Horas

e. Definición de Variables de Proceso: No se requieren, en este caso

III. Diseño de solución: Algoritmo Narrado


1. Inicio
2. Leer el nombre del empleado, Nom
3. Leer las horas que ha trabajado, Horas
4. Calcular el salario con la siguiente fórmula:
Salario = 6.50 * Horas
5. Imprimir Nom, Horas, Salario
6. Fin.

Es importante aclarar que los datos constantes, forman parte de los datos de entrada en el
Planteamiento o Formulación del problema, pero no se definen como variables de entrada en el
análisis.

En el ejemplo anterior, sin conocer el pago por hora ($6.50) que gana el empleado no se le puede
calcular el salario, por lo tanto es un dato de entrada, pero como no cambia, es constante.

Por norma general, cuando conocemos el valor de un dato en el planteamiento del problema, éste se
considera un dato constante.

11
EJEMPLO 3.
Un almacén deportivo realiza una campaña promocional, que consiste en realizar un 20% de
descuento sobre las compras realizadas por sus clientes. Diseñe un algoritmo que imprima el monto
total de la compra y el total a pagar por el cliente.

I. Planteamiento del problema:

Entrada de Datos
Salida de Datos

• Porcentaje de • desplegar Monto total de la


descuento a realizar compra
(20%)
• Monto total de la • Total a pagar
compra

II. Análisis del problema


a. Definición de Variables de Salida
Nombre Tipo Descripción
pago_total Real Total a pagar el cliente, con el
descuento
Se desplegará el monto total de la compra

b. Definición de Datos de Entrada


Variables Entrada
Nombre Tipo Descripción
monto Real Representa el monto o valor de la
compra efectuada por el cliente
El porcentaje de descuento 20% (o.2), se considera dato constante

c. Restricciones: El valor de la compra debe ser positivo (mayor que cero)


monto > 0

d. Proceso:
pago_total = monto – desc
desc = 0.2 * monto

e. Definición de Variables de proceso


Nombre Tipo Descripción
desc Real Representa el valor a descontarle
a la cuenta del cliente.

12
III. Diseño de solución: Algoritmo Narrado:
1. Inicio
2. Leer el valor total de la compra del cliente, monto
3. Calcular el valor a descontar:
desc = 0.2 * monto
4. Calcular el total a pagar:
pago_total = monto - desc
5. Imprimir monto, pago_total
6. Fin

Material editado por: Ing. Carolina Ayala, Ing. Milagro Castillo


e Ing. Yesenia Vigil. Ciclo I - 2011

13

Potrebbero piacerti anche