Está en la página 1de 57

ALGORITMOS

PARTEI
Ing.SandraRodrguezAvila 2016I

Paraquaprenderunlenguajede
Programacin?
El objetivo de aprender un lenguaje de
programacin, es poder utilizar la computadora
como una herramienta para resolver problemas,
de diversos tipos.
Para esto, de manera general y muy simple, la
resolucin de un problema se puede dividir en 3
etapas:
Anlisis del Problema.
Diseo de un algoritmo.
Elaboracin de un programa para computadora y
probar los resultados o hacer una prueba de
escritorio en papel.

Queesunproblema?
Es un planteamiento que demanda una
respuesta o solucin para conseguir un fin.

Haydiversasestrategiaspararesolver
problemas.UnadeellassonlosALGORITMOS.

Enelcurso,resolveremosproblemas
deestaforma:

Pruebade
escritorio

AnlisisdelProblema

Exige la lectura previa del problema, las veces que sean


necesarias, a fin de tener una idea general de lo que se
solicita.
El problema debe ser definido y comprendido
claramente. Se debe definir cuales son las entradas
que se requieren y las salidas que se desean obtener.
Luegodelanlisissepuedepasaralasiguienteetapa:
DiseodeunAlgoritmo.

DiseodeunAlgoritmo
Un algoritmo es un mtodo o conjunto de reglas (sin
ambigedades) que se aplican paso a paso en forma
ordenada para solucionar un problema.
Caractersticas de un Algoritmo:
Debe ser preciso: es decir debe indicar el orden exacto de
realizacin de cada etapa, evitando acciones innecesarias.
Debe estar definido: significa que si se ejecuta un algoritmo 2
o ms veces, con los mismos valores iniciales, se debe obtener
el mismo resultado todas las veces.
Debe ser finito: esto significa que si se sigue un algoritmo, se
debe terminar en algn momento, es decir, debe tener un
nmero finito de pasos.

TiposdeAlgoritmos
Algoritmosdelavidadiaria
Sonlosqueaplicamosdaadapararesolver
problemasorealizartareasespecficas
Algoritmosaritmticos
Sonaquellosqueseempleanpararesolver
problemas aritmticoscomosumas,restas,
multiplicaciones,etc.
Algoritmoscomputacionales
Sonaquelloqueseempleanparaeldesarrollode
programasencomputadora

Ejemplosdeproblemasyalgoritmos
delavidadiaria
PROBLEMA: Que hago para tomar una taza de T?
ALGORTIMO para tomar una taza de T.
PROBLEMA: Qu debo hacer para ver una Pelcula ABC?
ALGORTIMO para ver una Pelcula ABC.
PROBLEMA: Qu debo hacer para venir a la UNC desde mi
casa?
ALGORTIMO para venir a la UNC desde mi casa.
PROBLEMA: Qu debo hacer para comprar un peridico?
ALGORTIMO para comprar un peridico.

Ejemplosdeproblemasyalgoritmos
delavidadiaria
PROBLEMA: Que hago para cambiar la rueda pinchada de un
automvil teniendo una gata mecnica en buen estado, una
rueda de reemplazo y una llave inglesa?
ALGORTIMO para cambiar la rueda pinchada de un automvil
teniendo una gata mecnica en buen estado, una rueda de
reemplazo y una llave inglesa.
PROBLEMA: Qu debo hacer para conseguir un ejemplar del
libro Programacin en Java en la biblioteca?
ALGORTIMO para conseguir un ejemplar del libro Programacin
en Java en la biblioteca.

Algoritmoparatomarunatazadet
1.Inicio
2.Dirigirsealacocina.
3.Cogerlataza.
4.Echarenlatazaunpocodeaguahervida.
5.Escogerlainfusin(TE)quesedeseatomar
6.Introducirlainfusinenlataza.
7.Agregarelazcar(lacantidadquesedesee)
8.BeberelTE.
9.Fin

Algoritmoparacambiarlaruedapinchadadeun
automvilteniendounagatamecnicaenbuenestado,
unaruedadereemplazoyunallaveinglesa
Los pasos del algoritmo son:
1. Inicio
2. Aflojar los tornillos de la rueda pinchada con la llave
inglesa.
3. Ubicar la gata mecnica en su sitio.
4. Levantar la gata hasta que la rueda pinchada pueda girar
libremente.
5. Quitar los tornillos y la rueda pinchada.
6. Poner rueda de repuesto y los tornillos.
7. Bajar la gata hasta que se pueda liberar.
8. Sacar la gata de su sitio.
9. Apretar los tornillos con la llave inglesa.
10. Fin.

Algoritmoparaobtenerunejemplardellibro
ProgramacinenJavaenlabiblioteca
Lospasosdelalgoritmoson:
1.Inicio.
2.Entregarcarnetdellector
3.LeerelpedidodelejemplardellibroProgramacin
enJava.
4.Aceptarelpedidodelejemplar
5.Entregarejemplarallector.
6.Fin.

Podramos modificar este algoritmo, bien sea


escribiendo ms lneas de detalle o uniendo
algunos pasos, y an as funcionara para resolver
nuestro problema. Esto quiere decir que
podemos tener algoritmos diferentes, con
diferente diseo, que resuelven el mismo
problema. Cul de ellos es ms eficiente,
hablando desde el punto de vista computacional?
Es un tema que trataremos mucho ms
adelante.por el momento nos debemos
concentrar en cual algoritmo es ms claro, cual es
ms fcil de entender.

Algoritmoconcondiciones
UnlectorhaceunpedidodeunejemplardellibroProgramacin
enJavaalbibliotecario.Elbibliotecarioexaminaensubancode
datossihayalmenosunejemplardelmismo,
sihayelejemplarentonceselbibliotecarioaceptaelpedidoy
entregaallectorellibro;encasocontrariorechazaelpedido.
Lospasosdelalgoritmoson:
1.Inicio.
2.Entregarcarnetdellector
2.Leerelpedidodelejemplar.
3.Examinarelpedidodelejemplar.
4.Sihayunejemplar
entonces
Aceptarpedido,
Entregaejemplarallector.
encasocontrario(sino)
Rechazarpedido.
5.Fin.

Algoritmoconcondiciones:Tomarunatazadet
1.Inicio
2.Dirigirsealacocina.
3.Cogerlataza.
4.Echarenlatazaunpocodeaguahervida.
5.Siesquenohayaguacaliente
entonces
Hervirunpoco
Servirenlatazaelaguarecinhervida
sino
Irapaso6
6.Escogerlainfusinquesedeseatomar.
7.Introducirlainfusinenlataza.
8.Agregarelazcar(lacantidadquesedesee)(supuesto:hay
azcar)
9.BeberelTe.
11.Fin

TALLER
Desarrollar 2 algoritmos, uno sencillo y otro ms
complejo, puede ser utilizando condicionales
para solucionar los siguientes problemas:
1. Disear un algoritmo para comprar una caja de
chocolates.
2. Disear un algoritmo para hacer una llamada
telefnica desde un telfono pblico.
3. Disear un algoritmo o receta para preparar una
hamburguesa.
4. Disear un algoritmo para rendir un examen.

FORMASDEDESCRIBIRUNALGORITMO
1.LENGUAJENATURAL
La primera y ms sencilla forma de describir un algoritmo.
Ventaja fundamental: facilidad de comprensin, cualquier
persona (hispanoparlante, por supuesto) que lea dicho
algoritmo podra entenderlo y aplicarlo.
Problemas que plantea describir un algoritmo de esta forma:
El lenguaje natural no es universal
El lenguaje natural es ambiguo y, por tanto, susceptible de
errores.
El lenguaje natural es muy amplio, lo que para una persona
puede ser una instruccin sencilla, puede no serlo para
otra y, desde luego, no lo ser para un computador.
Otras formas estn mejor delimitadas y no son ambiguas.

FORMASDEDESCRIBIRUNALGORITMO
2.PSEUDOCODIGO

Une en un solo tipo de representacin las


ventajas del lenguaje natural y de los
diagramas.
Ventajas:
Fcilmente comprensible para una persona que lo
ve por vez primera.
Est bien delimitado.
Elimina las ambigedades del lenguaje natural.
Se representa de una forma compacta.

FORMASDEDESCRIBIRUNALGORITMO
3.DIAGRAMADEFLUJO
Representaciones grficas de algoritmos; usan
smbolos conectados con flechas para indicar la
secuencia de instrucciones y estn regidos por
ISO (Organiz. de estndares internacionales)
Ventajas
Lossmbolossonuniversales.
Sonmenospropensosalaambigedad.
Porestarbasadosenunnmeropequeodebloquesy
reglasparasuempleopermitendelimitarmejorlos
algoritmos.
Seaproximanmsalaformaenquetrabajaelordenador

FORMASDEDESCRIBIRUNALGORITMO
3.DIAGRAMADEFLUJO
Desventajas
El hecho de emplear smbolos supone que una
persona que desconozca los smbolos puede tener
dificultades para comprender el algoritmo o no
entenderlo en absoluto.
Aunque los smbolos son universales el texto que se
coloca en su interior sigue siendo lenguaje natural.
La representacin grfica puede resultar bastante
tediosa y en el caso de algoritmos complejos
extremadamente confusa.
Un ordenador no es capaz de utilizar una
representacin visual como descripcin de un
algoritmo

FORMASDEDESCRIBIRUNALGORITMO
4.DIAGRAMANASSISCHNEIDERMANONS

Otra forma de representar los algoritmos


grficamente.
Diagrama algo similar a los diagramas de flujo
en el que se omiten las flechas y las figuras
que se usan son rectngulos contiguos para
rdenes secuenciales.
Leerb,h

Demanerageneral,enunalgoritmosedebendefinir
claramentelassiguientespartes:

Declaracin(Inicializacin)devariables.
Entradadedatos.
Procesosaseguir.
Salidaderesultados.

Otroaspectoaconsiderareselmtodoelegidopara
representarlosalgoritmos:
DiagramasdeFlujo(convencional)
Pseudocdigo
DiagramasdeFlujoEstructurado(NassiSchneiderman oNS).

Elempleodeindentacin (justificacinosangrado)enla
escrituradelosalgoritmos(Pseudocdigo)facilitasu
lecturaycomprensin.

INDENTACION

Inicio
Enterob,h,a,p
Leerb,h
a=b*h
p=2(b+h)
Escribir"rea:",a
Escribir"permetro:",p

Fin

ElaboracindeunProgramapara
Computadora:
EstafasesedenominaProgramacinyconstadelassiguientes
partes:
Codificacin: proceso de convertir un algoritmo a un
programa, escrito en un lenguaje de programacin.
Requiere el uso de un programa editor que permita crear
los programas a las que se denomina Programas Fuente.
CompilacinyEjecucin:Yaescritoelprogramafuente,se
debetraduciralenguajemquina,paraobtenerel
correspondienteprogramaobjeto,queeselqueejecutala
computadora.Sidurantelatraduccinsedetectanerrores
desintaxis,elcompiladorinformaalusuarioculessony
cualessuposibleubicacin.
Depuracin:Eselprocesodelocalizarycorregirerrores.
Existen3posiblestiposdeerrorescuandoseejecutaun
programa:

ErroresdeSintaxis,ErroresdeEjecucinyErroresLgicos:

Verificacin:Constatarsiefectivamentehaceloquese
desea,ysinolohace,entoncesdeterminarlascausaspor
lasquefalta.
Optimizacin:Cuandoseconsiguehacefuncionar
correctamenteunprograma,elpasosiguientees
perfeccionarloparaquefuncionemejor.Laoptimizacines
unaetapaderefinamiento,quepuedeincluir:eliminar
instruccionesinnecesarias,hacermejorespresentaciones
dereportes,etc.
Documentacin:paradescribirloquehaceunprograma,
comofueconstruido,paraqusirvendeterminadas
variablesobloquesdeinstruccionesycomotienequeser
utilizado
Mantenimiento:Sedenominaasalprocesode
actualizacincontinuadeunprograma,conlarealizacin
decambiosqueseanconsideradosnecesarios.

ESTRUCTURASBASICASDECONTROL
Durante el desarrollo del curso, emplearemos
para describir algoritmos: Pseudocdigo,
Diagrama de Flujo y Diagramas NS.
Estas 3 formas permiten implementar las 3
estructuras Bsicas de Control:
A. Estructura Secuencial
B. Estructura Condicional o de Decisin o Selectiva
C. Estructura Repetitiva o Iterativa

Algoritmoparacambiarunalmpara(foco)
quemada

Algoritmoparalavarselasmanos
(secuentacongrifoocaodeaguafraycaliente,
jabn,papelycorrientedeairecaliente)

Algoritmoparaendulzarunatazadecafconleche
utilizandosobrecitosdeazcar

A.ESTRUCTURASECUENCIAL
La estructura secuencial es aquella en la que
una accin sigue a otra en secuencia. Las
operaciones se suceden de tal modo que la
salida de una es la entrada de la siguiente y as
sucesivamente hasta el fin del proceso

A.EstructuraSecuencialEJEMPLO1:Disearun
algoritmoparacalcularelreayelpermetrodeun
rectngulo
PASO 1: Definicin del problema
Calcular rea y permetro de un rectngulo
PASO 2: Anlisis del problema
Para desarrollar este problema es necesario conocer
las frmulas para obtener tanto el rea como el
permetro de un rectngulo.
Sea b = base, h = altura, a=rea y p=permetro, las
frmulas a utilizar son:
a = b * h y p = 2 * (b + h)
Datos de entrada: b y h (base y altura)
Datos de salida: a y p
Procesos: a = b * h y p = 2 * (b + h)

b,h

ENTRADA

a=b*h
p=2*(b+h)

PROCESO

a,p

SALIDA

PASO3:Diseodelasolucinodel
Algoritmo PSEUDOCODIGO

Inicio

//Declaracindevariables
Entero b,h,a,p
//Entradadedatos
Leer b,h
//Procesodeclculo
a=b*h
p=2*(b+h)
//Salidaderesultados
Escribir Area:",a
Escribir Permetro:",p

Fin

PASO3:Diseodelasolucinodel
Algoritmo DIAGRAMADEFLUJO

INICIO

Enterob,h,a,p

Leerb,h

a=b*h
*h
p=2*(b+h)
Escribir
Area:,a
Perimetro:,p

FIN

PASO3:Diseodelasolucinodel
Algoritmo DIAGRAMANS
IInicio
Enterob,h,a,p
Leerb,h
a=b*h
p=2*(b+h)
EscribirArea=,a
EscribirPermetro=,p
Fin

CONCEPTOSBSICOSENELDISEO
DEALGORITMOS
Estructurasecuencial:
Formado por instrucciones que se ejecutan una
despus de otra. Se tienen tres tipos de instrucciones
secuenciales:
1. La declaracin de variables,
2. Asignacin,
3. Instruccin Leer e instruccin Escribir.
Variable
Objetocuyovalorpuedesermodificadoalolargodela
ejecucindeunprograma.
Seleasignaunnombre:contador,rea,suma.

VARIABLES

DIRECCCIONES

001

MEMORIA

VALORESDE
v
VARIABLES
b
h

002

3
SKSKSD

003

15

16

004

NOMBREDEVARIABLES
(IDENTIFICADORES)

Declaracindevariables
Consisteenescribireltipodedatosylalista
deidentificadoresquesetendrndedicho
tipo,separandocadaidentificadorpormedio
decomasy:paraseparareltipodedatosde
lalistadeidentificadores.
Ejemplo:
Enteroedad
Realestatura,peso,sueldo
Cadenanombre,direccin

Declaracindeunavariable:
tipo nombre
Declaracindevariasvariablesconelmismotipodedato:
tipo nombre1,nombre2,nombre3,...,nombreN
Donde:
TipoEseltipodedatodelavariablequepuedeser:Entero(silavariable
almacenarunnmeroentero),Real(silavariablealmacenarun
nmeroconpartedecimal),Caracter (silavariablealmacenarun
caracter),Cadena(silavariablealmacenarunconjuntodecaracteres)o
Logico (silavariablealmacenarelvalorverdaderooelvalorfalso).
nombre1,nombre2,...,nombreN
Nombresdelasvariables.Elnombredeunavariabledebecomenzarcon
unaletra,unsmbolodesubrayadoounsmbolodedlar.Losdems
caracteresdelnombrepuedenserletras,nmeros,smbolosde
subrayadoosmbolosdedlar.Debeconsiderarsetambinqueunaletra
maysculaseconsideradiferentedeunaletraminscula.

Asignacin
Asignar un valor a una variable equivale a decir que se
guarda dicho valor en la posicin de memoria reservado
para la variable en mencin. Por lo tanto, para poder
realizar una asignacin es necesario primero haber
declarado una variable.
variable=expresin variableexpresin
Laexpresinpuedeestarformadaporunvalor,porun
conjuntodevaloresyoperadoresoporunafuncin.
Ejemplosdeasignacin:
edad=10//Alavariableedadseleasignaelvalorde10
estatura=1.80//Alavariableestaturaseleasignaelvalorde1.80
resultado=2*3//Alavariableresultadoseleasignaelvalor6

resultantedelaexpresin2*3

Instruccin Leer
Se utiliza para enviar informacin desde un
dispositivo de entrada de datos hacia la memoria.
En la memoria los datos son ubicados mediante
el nombre de variable utilizado como
complemento de la instruccin LEER.
Ejemplo:
Leer a, b
Donde "a" y "b" son las variables que recibirn los
valores y que deben haberse declarado
previamente.

Instruccin Escribir
Permite enviar datos desde la memoria hacia un
dispositivo de salida como la pantalla o la impresora.
La informacin que se enva puede ser constante o
tambin el contenido de variables.
Ejemplo:
Escribir a, b //Se imprimen los valores de las variables a y b
Cuando se escriben ms de una variable es necesario
separarlas con comas (,) y los mensajes se escriben
entre comillas dobles .
Escribir Area = , a
//Se imprime el texto Area = seguido del valor resultante de la
variable a

Contador
Es una variable que sirve para llevar la cuenta de las
veces que se repite una operacin
Generalmente se incrementa o decrementa de uno en
uno.
En el ejemplo, son contadores: c, i, apr, des , con
c=c+1
Acumulador
Es una variable en la cual se va almacenando la suma
de los valores sucesivos que va tomando otra variable.
sum=sum+1

A. Estructura SecuencialEJEMPLO 2: Disee un


algoritmo para convertir una longitud dada en metros
a sus equivalentes en centmetros, pies, pulgadas y
yardas.
Consideremosque:1metro=100centmetros,1
pulgada=2.54centmetros,1pie=12pulgadas,1
yarda=3pies.
PASO 1: Definicin del problema
Calcular una longitud dada en metros a sus
equivalentes en centmetros, pies, pulgadas y yardas

PASO 2: Anlisis del problema


Para desarrollar este problema es necesario conocer las
equivalencias de las unidades de medida de longitud
planteadas.
Sean: metro = medida en metros, acent = convertir a cent,
apulg = convertir a pulg, apies = convertir a pies y ayard =
convertir a yardas
Datos de entrada: metro
Datos de salida:
acent, apulg, apies, ayard
Procesos:
acent =metro*100
apulg =acent /2.54
apies =apulg /12
ayard =apies /3

PASO3:DiseodelasolucinodelAlgoritmo
PSEUDOCODIGO
Inicio
//Declaracindevariables
Realmetro,acent,apies,apulg,ayard
//Entradadedatos
Leermetro
//Procesodeclculo
acent =metro*100
apulg =acent /2.54
apies =apulg /12
ayard =apies /3
//Salidaderesultados
EscribirCentmetros:,acent,cm
EscribirPulgadas:,apulg,pulg
EscribirPies:,apies,pies
EscribirYardas:,ayard,yardas

Fin

PASO3:Diseodelasolucinodel
Algoritmo DIAGRAMADEFLUJO

INICIO

Entero

Leer

FIN

PASO3:Diseodelasolucinodel
Algoritmo DIAGRAMANS