You are on page 1of 84

Algortmica y Programacin

Prof. Ing. Luis A. Rivas A.


Algoritmo
Es un conjunto de pasos lgicos
ordenados, que se llevan a cabo
de una manera secuencial y finita
con el fin de solucionar un
problema determinado en un
momento especifico.
CARACTERSTICAS DE LOS ALGORITMOS
El estadounidense Donald Knuth, autor del libro El
arte de programar computadoras, seal cinco
propiedades que deber tener todo algoritmo:

Finito: un algoritmo debe tener un nmero


finito de pasos, tras los cuales debe terminar.

Preciso: cada paso debe estar definido con


precisin, rigurosidad y sin ambigedades.
CARACTERSTICAS DE LOS ALGORITMOS
Entradas: todo algoritmo debe tener cero o ms
entradas, que son los datos que se le proporcionan
como informacin variable y especfica de la
instancia del problema que resuelve.

Salida: un algoritmo tiene una o ms salidas, que


son el resultado del problema que intenta resolver,
y que dependen de las entradas provistas.

Eficacia: los pasos deben ser suficientes para lograr


el cometido del algoritmo, es decir, el algoritmo
debe ser eficaz.
Tcnicas de diseo de algoritmos

Es la forma como abordamos el


problema para darle solucin.

1.Tcnica Top Down


2.Tcnica Divide y vencers
Tcnicas de representacin de algoritmos

Son tcnicas que nos permiten


organizar los pasos del algoritmo
de forma grfica o textual.

1.Diagrama de flujo
2.Seudocdigo
Fases de Diseo para la solucin de
problemas por medio de algoritmos

1.Definicin del problema


2.Anlisis del problema
3.Disear el Algoritmo
4.Codificacin del algoritmo
5.Pruebas y depuracin
6.Documentacin
7.Mantenimiento
DEFINICIN DEL PROBLEMA

Esta fase est dada por el enunciado del


problema, el cual requiere una definicin
clara y precisa. Es importante que se conozca
lo que se desea que realice la computadora;
mientras esto no se conozca del todo no
tiene mucho caso continuar con la siguiente
etapa.
Anlisis del Problema
Una vez que se ha comprendido lo que se desea de la
computadora, es necesario definir:

Los datos de entrada.


Cul es la informacin que se desea producir
(salida)
Los mtodos y frmulas que se necesitan para
procesar los datos.

Una recomendacin muy prctica es el de colocarse


en el lugar de la computadora y analizar qu es lo
que se necesita que se ordene y en qu secuencia
para producir los resultados esperados.
Diseo del Algoritmo
Dibujar grficamente la lgica de la alternativa
seleccionada o plasmar la solucin a travs de un
pseudolenguaje.
Las caractersticas de un buen algoritmo son:
Debe tener un punto particular de inicio.
Debe ser definido, no debe permitir dobles
interpretaciones.
Debe ser general, es decir, soportar la mayora de las
variantes que se puedan presentar en la definicin del
problema.
Debe ser finito en tamao y tiempo de ejecucin.
Diseo del Algoritmo
Prueba de escritorio o Depuracin
Codificar el algoritmo

Es la operacin de escribir la solucin


del problema de acuerdo a la lgica
del diagrama de flujo o de
seudocdigo en una serie de
instrucciones detalladas en un
lenguaje reconocible por la
computadora.
Prueba y depuracin

Los errores humanos dentro de la


programacin de computadores son muchos
y aumentan con la complejidad del problema
el proceso identificar y eliminar los errores
para dar paso a una solucin sin errores se le
denomina depuracin.
Documentacin

Es la gua o comunicacin escrita en sus


variadas formas ya sean enunciados o
procedimientos dibujos o diagramas a
menudo un programa escrito por una
persona es usado posteriormente por otra
persona por ello la documentacin sirve para
ayudar a comprender o usar un programa o
para facilitar futuras modificaciones.
Mantenimiento

El mantenimiento se lleva a cabo despus de


terminado el programa cuando se detecta
que es necesario hacer algn cambio o
ajustes o complementacin al programa para
que siga trabajando de forma correcta para
poder realizarlo se requiere que el programa
este correctamente documentado.
Tipos de algoritmos

Algoritmos cualitativos
Son aquellos cuyos pasos se describen a
travs de palabras o frases.
Algoritmos cuantitativos
Son aquellos que incluyen adems
operaciones y clculos matemticos.
EXPRESIONES ALGORTMICAS
Las expresiones son combinaciones de constantes, variables,
smbolos de operacin, parntesis y nombres de funciones
especiales. Por ejemplo:
a + (b + 3) / c
Cada expresin toma un valor que se determina tomando
los valores de las variables y constantes implicadas y la
ejecucin de las operaciones indicadas.

Una expresin consta de operadores y operandos. Segn


sea el tipo de datos que manipulan, se clasifican las
expresiones en:
Aritmticas
Relacinales
Lgicas
Operadores y Operandos
Operadores
Son elementos que relacionan de forma
diferente, los valores de una o ms
variables y/o constantes. Es decir, los
operadores nos permiten manipular
valores.
Operadores Aritmticos
Los operadores aritmticos permiten la realizacin de
operaciones matemticas con los valores (variables y
constantes). Los operadores aritmticos pueden ser
utilizados con tipos de datos enteros o reales. Si
ambos son enteros, el resultado es entero; si alguno
de ellos es real, el resultado es real.
Operadores Aritmticos
Conversin de Expresiones matemticas normales a
expresiones matemticas para el computador.

X=4A + 5B
X=4*A+5*B
2
Y= x + 5X + 8
Y=X^2+5*X+8
Conversin de Expresiones matemticas normales a
expresiones matemticas para el computador.

Y = (4x2 4x + 4)2
Y =((4 * x ^ 2 4 * x + 4)^2) ^(1/2)
X = X 1/2
3
X = x1/3
n

X
= X1/n
Evaluacin de expresiones matemticas

X=4
Y= (5 *X + 6)
Y = (5 * 4 + 6)
Y = 20 + 6
Y = 26
Prioridad de los Operadores Aritmticos
Todas las expresiones entre parntesis se evalan primero. Las expresiones
con parntesis anidados se evalan de dentro a fuera, el parntesis ms
interno se evala primero. Dentro de una misma expresin los operadores
se evalan en el siguiente orden:
Resolver

X=2*3+6/3 Y = (4.5 + 5) / (2+6) * 4.0


X=6+6/3 Y = 9,5 / 8 * 4.0
X=6+2 Y = 1,18 * 4.0
X=8 Y = 4.75
Se utilizan para establecer una relacin entre dos valores.
Luego compara estos valores entre si y esta comparacin
produce un resultado de certeza o falsedad (verdadero o
falso). Los operadores relacionales comparan valores del
mismo tipo (numricos o cadenas). Estos tienen el mismo
nivel de prioridad en su evaluacin. Los operadores
relacinales tiene menor prioridad que los aritmticos.
A< D
A >= D
B >= C
(A + B) > C
(A * B) <> C
(A - B) = C
Otros Ejemplos

Si a = 10, b = 20, c = 30
a + b > c Falso
a - b < c Verdadero
a - b = c Falso
a * b < > c Verdadero
Estos operadores se utilizan para establecer
relaciones entre valores lgicos. Estos valores
pueden ser resultado de una expresin relacional.
Supongamos que planeamos ir el domingo a
la playa, pero se cumplir bajo 2 condiciones
Que haya sol y tengamos plata
Comprar Refrescos
Como est formada una expresin lgica?
Tipos de operadores lgicos
Tabla de la Verdad de los operadores lgicos
Operador Lgico de Negacin
Dada la siguiente expresin

Si se le aplica la negacin quedara como sigue:


Que es lo mismo que decir:
Tabla del Operador No
Resumen de los operadores lgicos
Ejemplo
Para los siguientes ejemplos T significa
verdadero y F falso.
Sea: a = 10 b = 12 c = 13 d =10
Algoritmos Secuenciales
La 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 fin del proceso.
Algoritmo Secuencial
En este ejemplo se convertir de
Inicio grados Celsius a grados Fahrenheit
solicitando al usuario los grados
Celsius
Accin 1 Inicio.
Real: C, F;
Accin 1 Escriba (Digite los grados
Celsius);
Lea C;
Accin 1 F = (9 / 5 * C) + 32;
Escriba (Los grados Celsius a
Fahrenheit son =, F);
Fin Final.
Algoritmo Secuencial
En este otro ejemplo encontraremos el rea de un triangulo
solicitando al usuario la base y la altura del mismo.

Inicio.
Real: b, h, Atri;
Escriba (Digite base);
Lea b;
Escriba (Digite altura);
Lea h;
Atri = (b * h) / 2;
Escriba (El rea del triangulo es=, Atri);
Final.
Algoritmo Secuencial
En este otro ejemplo encontraremos la solucin a una
ecuacin cuadrtica solicitando al usuario los trminos de
dicha ecuacin.
Inicio.
Real: a, b, c, ecua1, ecua2;
Escriba (Digite primer termino);
Lea a;
Escriba (Digite segundo termino);
Lea b;
Escriba (Digite tercer termino);
Lea b;
Ecua1 = ((-b+raz((b*b)-4*a*c))/2*a));
Ecua2 = ((-b-raz((b*b)-4*a*c))/2*a));
Escriba (La solucin de la ecuacin cuadrtica es=, ecua1,
y, ecua2);
Final.
Tengo un telfono y necesito llamar a alguien, pero
no s cmo hacerlo
Asignacin
La asignacin consiste, en el paso de valores o resultados a
una zona de la memoria. Dicha zona ser reconocida con el
nombre de la variable que recibe el valor. La asignacin se
puede clasificar de la siguiente forma:

Simples: Consiste en pasar un valor constante a una


variable (a 15)
Contador: Consiste en usarla como un verificador del
nmero de veces que se realiza un proceso (a a + 1)
Acumulador: Consiste en usarla como un sumador en un
proceso (a a + b)
De trabajo: Donde puede recibir el resultado de una
operacin matemtica que involucre muchas variables (a
c + b*2/4).
Escritura o salida de datos
Consiste en mandar por un dispositivo de salida (p.ej.
monitor o impresora) un resultado o mensaje. Esta
instruccin presenta en pantalla el mensaje escrito entre
comillas o el contenido de la variable. Este proceso se
representa, as como sigue:
Lectura o entrada de datos
La lectura o entrada de datos consiste en recibir
desde un dispositivo de entrada (p.ej. el teclado)
un valor o dato. Este dato va a ser almacenado en
la variable que aparece a continuacin de la
instruccin. Esta operacin se representa as:
Ejemplo 1: Escriba un algoritmo que pregunte por
dos nmeros y muestre como resultado la suma de
estos. Use Pseudocdigo y diagrama de flujos.
Ejemplo 2: Escriba un algoritmo que permita
conocer el rea de un tringulo a partir de la base y
la altura. Exprese el algoritmo usando
Pseudocdigo y diagrama de flujos.
Elementos a tomar en cuenta al disear un algoritmo
Construccin de algoritmos

VARIABLES
Es un espacio de memoria que
almacena el valor de un dato, el
cual puede ser cambiado o
modificado durante la ejecucin del
algoritmo o programa de
computador
Nomenclatura para nombrar variables
1. Debe iniciar con una letra. (A-Z, a-z)
2. No debe contener smbolos o caracteres
especiales ( a excepcin de barra de piso
_).
3. Puede incluir nmeros siempre y cuando
el nmero no sea el primero.
4. Cada variable debe usar un nombre que
identifique el valor del dato que va a
guardar.
Construccin de algoritmos

CONSTANTES
Es un espacio de memoria que
almacena un dato y valor
permanece constante, es decir, no
cambia.
Estructuras de Control algortmicas
Son todas aquellas que permiten mantener
la ejecucin, flujo o control de un programa.
Estructuras condicionales
Las estructuras condicionales comparan una variable
contra otro(s)valor (es), para que, en base al resultado
de esta comparacin, se siga un curso de accin
dentro del programa. Cabe mencionar que la
comparacin se puede hacer contra otra variable o
contra una constante, segn se necesite. Existen tres
tipos bsicos, las simples, las dobles y las mltiples.
Simples:
Las estructuras condicionales simples se les
conoce como Tomas de decisin. Estas
tomas de decisin tienen la siguiente forma:
Dobles :
Las estructuras condicionales dobles
permiten elegir entre dos opciones o
alternativas posibles en funcin del
cumplimiento o no de una determinada
condicin. Se representa de la siguiente
forma:
Donde: Si: Indica el comando de
comparacin
Condicin : Indica la condicin a evaluar
Entonces : Precede a las acciones a realizar
cuando se cumple la condicin
Instruccin(es):Son las acciones a realizar
cuando se cumple o no la condicin
si no: Precede a las acciones a realizar cuando
no se cumple la condicin
Dependiendo de si la comparacin es cierta o
falsa, se pueden realizar una o ms acciones.
Mltiples :

Las estructuras de comparacin


mltiples, son tomas de decisin
especializadas que permiten comparar
una variable contra distintos posibles
resultados, ejecutando para cada caso
una serie de instrucciones especficas. La
forma comn es la siguiente:
Mltiples (En caso de):
Las estructuras de comparacin mltiples, es una
toma de decisin especializada que permiten
evaluar una variable con distintos posibles
resultados, ejecutando para cada caso una serie de
instrucciones especficas. La forma es la siguiente:
Estructuras cclicas
Se llaman problemas repetitivos o cclicos a
aquellos en cuya solucin es necesario utilizar
un mismo conjunto de acciones que se
puedan ejecutar una cantidad especfica de
veces. Esta cantidad puede ser fija
(previamente determinada por el
programador) o puede ser variable (estar en
funcin de algn dato dentro del programa).
Los ciclos se clasifican en:
Ciclos con un Nmero Determinado de Iteraciones

(Para): Son aquellos en que el nmero de


iteraciones se conoce antes de ejecutarse el ciclo. La
forma de esta estructura es la siguiente:

Dado un valor inicial exp1 asignado a la variable esta se ir


aumentando o disminuyendo de acuerdo a la exp3 hasta
llegar a la exp2; si se omite el paso, significa que la variable
aumentar de uno en uno.
Ciclos con un Nmero Indeterminado de Iteraciones

Son aquellos en que el nmero de


iteraciones no se conoce con
exactitud, ya que esta dado en
funcin de un dato dentro del
programa.
Mientras Que: Esta es una estructura que repetir un proceso
durante N veces, donde N puede ser fijo o variable. Para
esto, la instruccin se vale de una condicin que es la que
debe cumplirse para que se siga ejecutando. Cuando la
condicin ya no se cumple, entonces ya no se ejecuta el
proceso. La forma de esta estructura es la siguiente:
Repita-Hasta: Esta es una estructura similar en algunas
caractersticas, a la anterior. Repite un proceso una cantidad
de veces, pero a diferencia del Mientras Que, el Repita-Hasta
lo hace hasta que la condicin se cumple y no mientras,
como en el Mientras Que. Por otra parte, esta estructura
permite realizar el proceso cuando menos una vez, ya que la
condicin se evala al final del proceso, mientras que en el
Mientras Que puede ser que nunca llegue a entrar si la
condicin no se cumple desde un principio. La forma de esta
estructura es la siguiente:
Ejemplo 1: Realizar un algoritmo que muestre los
nmeros de uno en uno hasta diez usando una
estructura Para. Exprese el algoritmo usando
Pseudocdigo y diagrama de flujos.
Ejemplo 2: Usando una estructura Mientras, realizar
un algoritmo que escriba los nmeros de uno en uno
hasta 20.
Ejemplo 3: Realizar un algoritmo que pregunte al usuario un nmero
comprendido en el rango de 1 a 5. El algoritmo deber validar el nmero,
de manera que no contine la ejecucin del programa mientras no se
escriba un numero correcto.
MUCHAS GRACIAS