Você está na página 1de 91

Fundamentos de Programacin

Estructuras de Datos

Fases en la resolucin de problemas

Anlisis del problema

Diseo del algoritmo

Codificacin

Compilacin y ejecucin

Verificacin

Depuracin

Mantenimiento

Documentacin
2

Anlisis del Problema


El problema se analiza teniendo presente la especificacin de

los requisitos dados por el cliente de la empresa o por la


persona que encarga el programa.
Esta fase requiere una clara definicin, donde se contemple

exactamente lo que debe hacer el programa y el resultado o


solucin deseada.

Anlisis del problema

Figura 1. Anlisis del problema

Qu entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad).


Cul es la salida deseada? (tipo de datos de los resultados y cantidad).
Qu mtodo produce la salida deseada?
Requisitos o requerimientos adicionales y restricciones a la solucin.
4

Problema 1
Se desea obtener una tabla con las depreciaciones acumuladas
y los valores reales de cada ao, de un automvil comprado por
20.000 dlares en el ao 2005, durante los seis aos siguientes
suponiendo un valor de recuperacin o rescate de 2.000.
Realizar el anlisis del problema, conociendo la frmula de la
depreciacin anual constante D para cada ao de vida til.

Problema 1

Entrada

Costo original
Vida til
Valor de recuperacin

Proceso

Salida

= 3,000

Depreciacin anual por ao


Depreciacin acumulada por ao
Valor del auto en cada ao

Depreciacin acumulada
Clculo de la depreciacin acumulada cada ao
Clculo del valor del auto cada ao

Problema 1
Ao

Depreciacin
anual

Depreciacin
acumulada

Valor
anual

1 (2006)

3,000

3,000

17,000

2 (2007)

3,000

6,000

14,000

3 (2008)

3,000

9,000

11,000

4 (2009)

3,000

12,000

8,000

5 (2010)

3,000

15,000

5,000

6 (2011)

3,000

18,000

2,000

Tabla 1. Depreciacin del automvil

Diseo del algoritmo


Una vez analizado el problema, se disea una solucin

que conducir a un algoritmo que resuelva el


Problema.
En la etapa de anlisis del proceso de programacin

se determina qu hace el programa.


En la etapa de diseo se determina cmo hace el

programa la tarea solicitada.


8

Herramientas

Las dos herramientas ms utilizadas


comnmente para disear algoritmos son:

diagramas de flujo

pseudocdigos

Diagrama de flujo

Un diagrama de flujo (flowchart) es una


representacin grfica de un algoritmo.

Los smbolos utilizados han sido normalizados por el


Instituto Norteamericano de Normalizacin (ANSI).

10

Diagramas de flujo

Figura 2. Smbolos ms utilizados en los diagramas de flujo

11

Smbolos de diagrama de flujo

Tabla 2. Simbologa de diagramas de flujo


12

Smbolos de diagrama de flujo

Tabla 2. Simbologa de diagramas de flujo


13

Diagrama de flujo del problema 1

14

Figura 3. Diagrama de flujo del problema 1

Pseudocdigo

El pseudocdigo es una herramienta de programacin


en la que las instrucciones se escriben en palabras
similares al ingls o espaol, que facilitan tanto la escritura
como la lectura de programas.

En esencia, el pseudocdigo se puede definir como un


lenguaje de especificaciones de algoritmos.

15

Pseudocdigo del problema 1


Previsiones de depreciacin
Introducir
costo
vida til
valor final de rescate (recuperacin)
imprimir cabeceras
Establecer el valor inicial del ao
Calcular depreciacin
mientras valor ao =< vida til hacer
calcular depreciacion acumulada
calcular valor actual
imprimir una linea en la tabla
incrementar el valor del ao
fin de mientras
16

Ejercicio 1

Calcular la paga neta de un trabajador conociendo el nmero


de horas trabajadas, la tarifa horaria y la tasa de impuestos
del 25%.

Elaborar

Diagrama de flujo

Algoritmo

17

Diagrama de flujo

18

Ejercicio 2

Calcular la media de una serie de nmeros positivos,


suponiendo que los datos se leen desde un terminal. Un valor
de cero como entrada indicar que se ha alcanzado el
final de la serie de nmeros positivos.

Diagrama de flujo

Algoritmo

19

Diagrama y algoritmo

20

Codificacin

Codificacin (implementacin). La solucin se escribe


en la sintaxis del lenguaje de alto nivel (por ejemplo, C++)
y se obtiene un programa fuente que se compila a
continuacin.

La codificacin es la escritura en un lenguaje de


programacin

de

la

representacin

desarrollada en las etapas precedentes.

21

del

algoritmo

Codificacin

Dado que el diseo de un algoritmo es independiente del


lenguaje

de

programacin

utilizado

para

su

implementacin, el cdigo puede ser escrito con igual


facilidad en un lenguaje o en otro.

22

Codificacin
{Este programa obtiene una tabla de depreciaciones acumuladas y valores reales de cada ao de un determinado producto}
algoritmo primero
Real: Costo, Depreciacion,
Valor_Recuperacion
Valor_Actual,
Acumulado
Valor_Anual;
entero: Ao, Vida_Util;
inicio
escribir('introduzca costo, valor recuperacin y vida til')
leer(Costo, Valor_Recuperacion, Vida_Util)
escribir('Introduzca ao actual')
leer(Ao)
Valor_Actual Costo;
Depreciacion (Costo-Valor_Recuperacion)/Vida_Util
Acumulado 0
escribir('Ao Depreciacin Dep. Acumulada')
mientras (Ao < Vida_Util)
Acumulado Acumulado + Depreciacion
Valor_Actual Valor_Actual Depreciacion
escribir('Ao, Depreciacion, Acumulado')
Ao Ao + 1;
fin mientras
fin

23

Compilacin y ejecucin de un programa

El programa fuente debe ser traducido a lenguaje


mquina, este proceso se realiza con el compilador y el
sistema operativo que se encarga prcticamente de la
compilacin.

24

Compilacin y ejecucin de un programa

Figura 4. Fases de compilacin/ejecucin de un programa:


a) Edicin
b) Compilacin
c) Montaje o enlace

25

Verificacin y depuracin de un programa

La verificacin o compilacin de un programa es el


proceso de ejecucin del programa con una amplia
variedad de datos de entrada, llamados datos de test o
prueba, que determinarn si el programa tiene o no
errores (bugs).

26

Verificacin y depuracin de un programa

Para realizar la verificacin se debe desarrollar una


amplia gama de datos de test: valores normales de
entrada, valores extremos de entrada que
comprueben los lmites del programa y valores de
entrada que comprueben aspectos especiales del
programa.

27

Verificacin y depuracin de un programa

La depuracin es el proceso de encontrar los errores


del programa y corregir o eliminar dichos errores.

Cuando se ejecuta un programa, se pueden producir


tres tipos de errores:

Errores de compilacin

Errores de ejecucin

Errores lgicos

28

Documentacin y mantenimiento

Mantenimiento. El programa se actualiza y modifica, cada vez


que sea necesario, de modo que se cumplan todas las
necesidades de cambio de sus usuarios.

Documentacin. Escritura de las diferentes fases del ciclo de


vida del software, esencialmente el anlisis, diseo y
codificacin, unidos a manuales de usuario y de referencia, as
como normas para el mantenimiento.

29

Escritura de algoritmos

El sistema para describir (escribir) un algoritmo consiste en realizar una


descripcin paso a paso con un lenguaje natural del citado algoritmo.

Recordemos que un algoritmo es un mtodo o conjunto de reglas para


solucionar un problema.

En clculos elementales estas reglas tienen las siguientes propiedades:

Deben ir seguidas de alguna secuencia definida de pasos hasta que se obtenga un


resultado coherente.

30

Slo puede ejecutarse una operacin a la vez

Escritura de algoritmos

El flujo de control usual de un algoritmo es secuencial;


consideremos el algoritmo que responde a la pregunta:

Qu hacer para ver la pelcula de Pixeles?

La respuesta es muy sencilla y puede ser descrita en forma de


algoritmo general de modo similar a:
ir al cine
comprar una entrada (ticket)
ver la pelcula
regresar a casa
31

Escritura de algoritmos

El algoritmo consta de cuatro acciones bsicas, cada una


de las cuales debe ser ejecutada antes de realizar la
siguiente.

En trminos de computadora, cada accin se codificar en


una o varias sentencias que ejecutan una tarea particular.

32

Escritura de algoritmos
1. inicio
2. ver la cartelera de cines
3. si no proyectan Pixeles" entonces
3.1. decidir otra actividad
3.2. bifurcar al paso 7
si_no
3.3. ir al cine
fin_si
4. si hay cola entonces
4.1. ponerse en ella
4.2. mientras haya personas delante
hacer
4.2.1. avanzar en la cola
fin_mientras
fin_si

33

5. si hay localidades entonces


5.1. comprar una entrada
5.2. pasar a la sala
5.3. localizar la(s) butaca(s)
5.4. mientras proyectan la pelcula
hacer
5.4.1. ver la pelcula
fin_mientras
5.5. abandonar el cine
si_no
5.6. refunfuar
fin_si
6. volver a casa
7. fin

Ejercicio 3

Elaborar el algoritmo para encontrar butaca en la sala del


cine donde proyectarn la pelcula.

34

Ejercicio 3
1. inicio //algoritmo para encontrar la butaca del espectador
2. caminar hasta llegar a la primera fila de butacas
3. repetir
compara nmero de fila con nmero impreso en boleto
si son iguales entonces pasar a la siguiente fila fin_si
hasta_que se localice la fila correcta
4. mientras nmero de butaca no coincida con nmero de boleto
hacer avanzar a travs de la fila a la siguiente butaca
fin_mientras
5. sentarse en la butaca
6. fin

35

Representacin grfica de los algoritmos

Para representar un algoritmo se debe utilizar algn


mtodo que permita independizar dicho algoritmo del
lenguaje de programacin elegido.

Para conseguir este objetivo se precisa que el algoritmo


sea representado grfica o numricamente.

36

Representacin grfica de los algoritmos

Como se mencion anteriormente, los mtodos


usuales para representar un algoritmo son:
1.

Diagrama de flujo,

2.

Lenguaje de especificacin de algoritmos: pseudocdigo

37

Pseudocdigo

El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmos. El


uso de tal lenguaje hace el paso de codificacin final relativamente fcil.

Se considera un primer borrador, dado que el pseudocdigo tiene que


traducirse posteriormente a un lenguaje de programacin.

El pseudocdigo no puede ser ejecutado por una computadora.

38

Pseudocdigo

La ventaja del pseudocdigo es que en su uso, en la planificacin de un


programa, el programador se puede concentrar en la lgica y en las
estructuras de control y no preocuparse de las reglas de un lenguaje
especfico.

Otra ventaja del pseudocdigo es que puede ser traducido fcilmente a


lenguajes estructurados como Pascal, C, C++, Java, C#, etc.

39

Ejemplo
Una representacin en pseudocdigo en ingls de un problema de clculo
del salario neto de un trabajador es la siguiente:
start
//clculo de impuesto y salarios
read nombre, horas, precio
salario horas * precio
tasas 0,25 * salario
salario_neto salario tasas
write nombre, salario, tasas, salario
end

40

Pseudocdigo

El pseudocdigo naci como un sustituto del lenguaje de


programacin y, por consiguiente, sus palabras reservadas se
conservaron o fueron muy similares a las del idioma ingls.

El uso del pseudocdigo se ha extendido en la comunidad


hispana con trminos en espaol como inicio, fin, parada,
leer, escribir, si-entonces-si_no, mientras, fin_mientras,
repetir, hasta_que, etc.

41

Ejemplo Espaol
Otro ejemplo aclaratorio en el uso del pseudocdigo podra ser un sencillo
algoritmo del arranque matinal de un automvil.
inicio
//arranque matinal de un automvil
introducir la llave de contacto
girar la llave de contacto
pisar el acelerador
or el ruido del motor
pisar de nuevo el acelerador
esperar unos instantes a que se caliente el motor
fin

42

Ejercicio 4

Elaborar un algoritmo con diagrama de flujo y pseudocdigo


que realice la suma de los nmeros pares comprendidos entre
2 y 100.

43

Ejercicio 4
Suma de los nmeros
pares comprendidos entre
2 y 100.

44

Pseudocdigo y Diagrama de Flujo


La escritura de algoritmos para realizar operaciones sencillas de
conteo es una de las primeras cosas que una computadora puede
aprender.
Supngase que se proporciona una secuencia de nmeros, tales como:
5302440023602
y se desea contar e imprimir el nmero de ceros de la secuencia

45

Pseudocdigo y Diagrama de Flujo


El algoritmo es muy sencillo, ya que slo basta leer los nmeros de izquierda a derecha,
mientras se cuentan los ceros. Utiliza como variable la palabra NUMERO para los
nmeros que se examinan y TOTAL para el nmero de ceros encontrados. Los pasos a
seguir son:
1. Establecer TOTAL a cero.
2. Quedan ms nmeros a examinar?
3. Si no quedan nmeros, imprimir el valor de TOTAL y fin.
4. Si existen mas nmeros, ejecutar los pasos 5 a 8.
5. Leer el siguiente numero y dar su valor a la variable NUMERO.
6. Si NUMERO = 0, incrementar TOTAL en 1.
7. Si NUMERO <> 0, no modificar TOTAL.
8. Retornar al paso 2

46

Pseudocdigo y Diagrama de Flujo

Diagrama de flujo y
codificacin en
pseudocdigo
correspondiente

47

Problema
Se desea realizar el algoritmo que resuelva el siguiente problema: Clculo de los
salarios mensuales de los empleados de una empresa, sabiendo que stos se calculan
en base a las horas semanales trabajadas y de acuerdo a un precio especificado por
horas. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarn
a razn de 1,5 veces la hora ordinaria.
Los clculos son:
1. Leer datos del archivo de la empresa, hasta que se encuentre la ficha final del archivo
(HORAS, PRECIO_HORA, NOMBRE).
2. Si HORAS <= 40, entonces SALARIO es el producto de horas por PRECIO_HORA.
3. Si HORAS > 40, entonces SALARIO es la suma de 40 veces PRECIO_HORA ms
4. 1.5 veces PRECIO_HORA por (HORAS-40).

48

Solucin

Diagrama de flujo
completo del
algoritmo y la
codificacin en
pseudocdigo

49

Solucin

Una variante
vlida del
diagrama de
flujo anterior

50

Ejercicios

Disear una solucin para resolver cada uno de los

siguientes problemas y tratar de refinar sus soluciones


mediante algoritmos y diagramas de flujo adecuados:

Realizar una llamada telefnica desde un telfono pblico.

Cocinar una pizza.

Arreglar una ponchadura de una bicicleta.

Frer un huevo.

51

Ejercicios

Escribir un algoritmo y un diagrama de flujo para:

Sumar dos nmeros enteros.

Restar dos nmeros enteros.

Multiplicar dos nmeros enteros.

Dividir un nmero entero por otro.

Disear un algoritmo para determinar los nmeros primos


iguales o menores que N (ledo del teclado). (Un nmero
primo slo puede ser divisible por l mismo y por la unidad.)

52

Instrucciones y tipos de instrucciones

El proceso de diseo del algoritmo o posteriormente de


codificacin del programa consiste en definir las acciones o
instrucciones que resolvern el problema.

Las acciones o instrucciones se deben escribir y posteriormente


almacenar en memoria en el mismo orden en que han de
ejecutarse, es decir, en secuencia.

53

Instrucciones y tipos de instrucciones

Un programa puede ser lineal o no lineal. Un programa es


lineal si las instrucciones se ejecutan secuencialmente, sin
bifurcaciones, decisin ni comparaciones.

54

Instrucciones y tipos de instrucciones

En el caso del algoritmo las instrucciones se suelen conocer como


acciones, y se tendra

Un programa es no lineal cuando se interrumpe la secuencia mediante


instrucciones de bifurcacin

55

Tipos de instrucciones

Las instrucciones disponibles en un lenguaje de programacin


dependen del tipo de lenguaje.

Por ello, se revisarn las instrucciones bsicas que se pueden


implementar de modo general en un algoritmo y que
esencialmente soportan todos los lenguajes.

Dicho

de

otro

modo, las

independientes del lenguaje.

56

instrucciones

bsicas

son

Tipos de instrucciones

La clasificacin ms usual, desde el punto de vista


anterior, es:
1.

instrucciones de inicio/fin,

2.

instrucciones de asignacin,

3.

instrucciones de lectura,

4.

instrucciones de escritura,

5.

instrucciones de bifurcacin

57

Tipos de instrucciones
Algunas de estas instrucciones se muestran en la Tabla 3.

Tabla 3. Instrucciones/acciones bsicas

58

Instrucciones de bifurcacin

El desarrollo lineal de un programa se interrumpe cuando se ejecuta


una bifurcacin. Las bifurcaciones pueden ser, segn el punto del
programa a donde se bifurca, hacia adelante o hacia atrs.

59

Instrucciones de bifurcacin

Las bifurcaciones en el flujo de un programa se realizarn


de modo condicional en funcin del resultado de la
evaluacin de la condicin.

60

Elementos bsicos de un programa

Los lenguajes de programacin tienen elementos bsicos que


se utilizan como bloques constructivos, as como reglas para
las que esos elementos se combinan.

Estas reglas se denominan sintaxis del lenguaje.

Solamente las instrucciones sintcticamente correctas pueden


ser interpretadas por la computadora y los programas que
contengan errores de sintaxis son rechazados por la mquina

61

Elementos bsicos de un programa

Palabras reservadas (inicio, fin, si-entonces..., etc.)

Identificadores (nombres de variables esencialmente

Procedimientos, funciones, nombre del programa, etc.)

Caracteres especiales (coma, apstrofo, etc.)

Constantes

Variables

Expresiones

Instrucciones

62

Datos, tipos de datos y operaciones


primitivas

Un dato es la expresin general que describe los objetos


con los cuales opera una computadora.

La mayora de las computadoras pueden trabajar con


varios tipos (modos) de datos.

Los algoritmos y los programas correspondientes operan


sobre esos tipos de datos.

63

Tipos de datos

Conjunto especfico de valores de los datos y un


conjunto de operaciones que actan sobre esos datos.

Existen dos tipos de datos:

Bsicos, incorporados o integrados (estndar) que se incluyen en


los lenguajes de programacin;

64

Definidos por el programador o por el usuario.

Tipos de datos bsicos

Numricos (entero, real)

Lgicos (boolean)

Carcter (caracter, cadena)

Constantes

65

Expresiones

Las expresiones son combinaciones de constantes,


variables, smbolos de operacin, parntesis y nombres de
funciones especiales.

Las mismas ideas son utilizadas en notacin matemtica


tradicional; por ejemplo:
3

66

Expresiones

Una expresin consta de operandos y operadores.

Segn sea el tipo de objetos que manipulan, las


expresiones se clasifican en:

Aritmticas

Relacionales

Lgicas

Carcter

67

Ejercicios

Disear los algoritmos (pseudocdigo y diagrama de


flujo) que resuelvan los siguientes problemas:

Cambiar una llanta ponchada de un automvil (se dispone de

herramientas y gato).

Quitar un foco quemado de un techo.

Encontrar la media de una lista indeterminada de nmeros


positivos terminada con un nmero negativo.

68

Calcular independiente la suma de los nmeros pares e


impares comprendidos entre 1 y 200.

Ejercicios

Evaluar la siguiente expresin para A = 2 y B = 5

3 *A - 4 * B /A ^ 2

Evaluar la expresin

69

4/2*3/6+6/2/1/5^2/4*2

Ejercicios

Escribir

las

siguientes

expresiones

algebraicas

expresiones algortmicas
a

c
e 4

70

d
2

como

Ejercicios

Escribir

las

siguientes

expresiones

expresiones algebraicas:

b^24*a*c

3 * X ^ 4 5 * X ^ 3 + X 12 17

(b + d) / (c + 4)

(x ^ 2 + y ^ 2) ^ (1 / 2)

71

algortmicas

como

Ejercicios

Pseudocdigo para calcular y visualizar la suma y el producto


de los nmeros pares comprendidos entre 20 y 400, ambos
inclusive.

Escribir el algoritmo en pseudocdigo que permita emitir la


factura correspondiente a una compra de un artculo
determinado, del que se adquieren una o varias unidades. El
IVA a aplicar es del 15 por ciento y si el precio bruto (precio
venta ms IVA) es mayor de 10,000 pesos, se debe realizar un
descuento del 5 por ciento.
72

Estructuras de control

Estructura secuencial

Estructuras selectivas

Alternativa simple

Alternativa doble

Alternativa mltiple

Estructuras repetitivas

73

Estructura secuencial

Una estructura secuencial es aquella en la que una accin


(instruccin) sigue a otra en secuencia.

Las tareas se suceden de tal modo que la salida de una es la


entrada de la siguiente y as sucesivamente hasta el final del
proceso.

La estructura secuencial tiene una entrada y una salida

74

Estructura secuencial

Inicio
<accin 1>
<accin 2>
fin

75

Estructura secuencial

76

Estructuras selectivas

En las estructuras selectivas se evala una condicin y en


funcin del resultado de la misma se rea liza una opcin u otra.

La representacin de una estructura selectiva se hace con


palabras en pseudocdigo (if, then, else o bien en espaol si,
entonces, si_no), con una figura geomtrica en forma de
rombo.

77

Estructuras selectivas

Las estructuras selectivas o alternativas pueden ser:

Simples

Dobles

Mltiples

78

Alternativa simple

La estructura alternativa simple si-entonces (en ingls ifthen) ejecuta una determinada accin cuando se cumple una
determinada condicin.

La seleccin si-entonces evala la condicin y

Si la condicin es verdadera, entonces ejecuta la accin S1 (o


acciones caso de ser S1 una accin compuesta y constar de
varias acciones)

79

Si la condicin es falsa, entonces no hacer nada

Alternativa simple

80

Alternativa doble

Si-entonces-sino/if-then-else

La alternativa simple es muy limitada y normalmente se


necesitar una estructura que permita elegir entre dos
opciones o alternativas posibles, en funcin del cumplimiento
o no de una determinada condicin.

En el caso anterior, si la condicin C es verdadera, se ejecuta la


accin S1 y si es falsa, se ejecuta la accin S2

81

Alternativa doble

82

Alternativa mltiple

Con frecuencia en la prctica es necesario que existan ms de dos


elecciones posibles (por ejemplo, en la resolucin de la ecuacin de
segundo grado existen tres posibles alternativas o caminos a seguir, segn
que el discriminante sea negativo, nulo o positivo).

La estructura de decisin mltiple evaluar una expresin que podr tomar


n valores distintos, 1, 2, 3, 4, ..., n.

Segn que elija uno de estos valores en la condicin, se realizar una de las
n acciones, o lo que es igual, el flujo del algoritmo seguir un determinado
camino entre los n posibles.

83

Alternativa mltiple
Sentencia switch (C, C++, Java, C#)
Switch (expresin)
{
case valor1:
sentencia1;
sentencia2;
sentencia3;
break;
case valor 2:
sentencia1;
sentencia2;
sentencia3;
break;
default:
break;
}
84

Alternativa mltiple

85

Alternativa mltiple

86

Estructuras repetitivas

Las estructuras que repiten una secuencia de


instrucciones un nmero determinado de veces se
denominan bucles y se denomina iteracin al hecho de
repetir la ejecucin de una secuencia de acciones.

87

Estructura mientras (while)

La estructura repetitiva mientras (en ingls while o dowhile: hacer mientras) es


aquella en que el cuerpo del bucle se repite mientras se cumple una determinada
condicin.

Cuando se ejecuta la instruccin mientras, la primera cosa que sucede es que se


evala la condicin (una expresin booleana).

Si se evala falsa, no se toma ninguna accin y el programa prosigue en la siguiente


instruccin del bucle.

Si la expresin booleana es verdadera, entonces se ejecuta el cuerpo del bucle,


despus de lo cual se evala de nuevo la expresin booleana.

Este proceso se repite una y otra vez mientras la expresin booleana (condicin)
sea verdadera.

88

Estructura mientras (while)

89

Estructura mientras (while)

90

Estructura mientras (while)

91

Você também pode gostar