Sei sulla pagina 1di 56

Algoritmos

Fundamentos Bsicos

Computacin Aplicada

Qu es un Algoritmo?
Es una descripcin clara y detallada de todos los pasos o

acciones que debe realizar el computador, y el orden en el


que stas deben ejecutarse, para poder solucionar un
problema (debe contener todos los datos que sern usados).

Problema

Anlisis del problema

Pasos a seguir
para resolverlo

Diseo del Algoritmo

Solucin deseada

Algoritmo

Codificacin del
algoritmo

Prueba y puesta a
punto

Para la construccin de un
Algoritmo es necesario
analizar:
Qu es lo que se
desea?

Qu tenemos?

Qu se necesita?

Por dnde comenzar?


y Cmo hago para
llegar a lo que deseo?

Cmo lo implemento en el computador?

Anlisis del Problema


Leer bien el enunciado
Extraer los datos explcitos e implcitos

Determinar cules sern los pasos a seguir

Priorizar los pasos

Solucin deseada

Comprender el
problema
Listado
de
acciones
definidas de forma:
Lgica, Precisa,
Detallada
Clara y sin
ambigedades
Ordenar
coherentemente

Algoritmos
Los pasos del algoritmo se pueden pensar como unidades
de procesamiento, donde la materia prima son datos

Variables de
Entrada
(Datos)
F1
F2
:
Fn

El Algoritmo
Operaciones
que realiza el
computador

Variables de
Salida
(Respuestas)
X1
X2
:
Xn

Problema: Hacer una Tarta de


Cereza
Qu es lo que se
desea?

Qu tenemos?

Qu se
necesita?

Ingredientes para hacer Tarta de Queso y Cerezas


(8-10 personas):
300 gramos de queso para untar tipo Philadelphia
2 yogures (naturales o sabor limn)
400 gramos de azcar
3 huevos grandes (o 4 medianos)
75 gramos de harina de trigo.

Por dnde comenzar?


y Cmo hago para
llegar a lo que deseo?

Para la base:
16 galletas tipo campurrianas (200 gr.)
75 gramos de mantequilla

Cmo deberan ser las instrucciones


para que t puedas hacer la tarta?

Algorit
mo

Para la cubierta:
750 gr. de cerezas
250 ml de agua

Problema: Cmo se pone en


marcha un auto sincrnico?
Primera Opcin:
Poner el motor en marcha.
Meter primera.

Segunda Opcin:
Conectar la llave en el encendido o contacto.
Pisar el embrague con el pie izquierdo.
Poner punto neutro.
Girar la llave en el contacto y encender el auto.
Pisar el embrague con el pie izquierdo.
Meter primera, sin quitar el pie del embrague.
Quitar el freno de mano.
Levantar, poco a poco, el pie izquierdo del embrague
al mismo tiempo que se pisa el acelerador con el pie
derecho.

Algoritmos con Condiciones y


Decisiones
Condici
n

Caracterstica que se define para


algn dato o conjunto de datos.

Decision
es

Acciones que dependern de las


Condiciones establecidas.

Las Condiciones se establecen como comparaciones, las cuales se


realizan por medio de la evaluacin de ciertas relaciones de orden
como: mayor que (>), menor que(<), igual a (=), mayor o igual a (),
menor o igual a (), distinto de ().

Nota: se debe encontrar la manera de definir la caracterstica


que se desea comparar en trminos cuantificables .

Diagrama de Flujo
El diagrama de Flujo es una representacin grfica que, mediante el
uso de smbolos estndar conectados por lneas de flujo, muestran
la secuencia lgica de las acciones que debe realizar el computador.

Este diagrama nos permite ver de


forma ms clara el algoritmo que
se ha escrito, las estructuras
empleadas
y
cmo
estas
estructuras afectan la secuencia
del algoritmo

Datos
Los objetos con los cuales trabajaremos en un programa son conocidos
como DATOS.
Los Datos son elementos considerados como unidades de tratamiento
dentro de un sistema de proceso de datos. Contienen la informacin con la
que opera el computador.
Datos
No Numricos

Numricos

Enteros

105
383

Reales
0.105
38.3

Complejos

Lgicos

Caracte
r

10 +5i
38 3i

True,
False

**Hola**
Dato # 2

Dnde se colocan los datos?


Constantes
Su valor no cambia a lo
largo del programa

Simple

Variables
Su valor cambia a lo largo del
programa

Subindizada

ndice solo
(vectores)

ndices dobles
(matrices)

Variable Simple
Es un espacio de almacenamiento simple,
que permite guardar un solo dato.

Su tamao depende del tipo de dato


que se va a almacenar.

Dato: 25

25

Almacenar el dato
en variable A

A=25

25

Variable Subindizada de un solo ndice


Arreglo: Es un espacio mltiple que permite almacenar varios
datos en un mismo identificador
ltimo

1
1

ltimo
Se enumera de arriba hacia abajo

V(1)= 25
V(3)=

-1

25

Se enumera de izquierda a derecha

V=(v1, v2,,vi,, vn)


v1 v2 vi vn
V(1)

V(i)

Variable Subindizada de dos ndices

Arreglo de dos ndices


A(1,1)

A=
A(2,2)

a11

a12

a21

a22

am1

am2

a1n
a2n

amn

filas
Las filas se enumeran
de arriba hacia abajo

columnas
Las columnas se enumeran de izquierda a derecha

Analoga:
Variables de dos ndices (Bidimensionales)

Variables de un ndice
(Unidimensionales)

Variables simples

Las variables almacenan datos que van cambiando durante el


transcurso del programa, y algunos lenguajes de programacin
requieren que estos datos que se almacenan en una misma
variable, sean todos del mismo tipo (real, entero, caracter).

Declaracin de Variables
Establecer qu tipo de dato tomar una variable se conoce como
Declaracin de variables. La declaracin debe indicarse al comienzo del
programa y tiene la forma general:

Var
Variable: tipo
Ejemplo:
Var.
x,y,z:real
n,m:integer
(entero)
Nombre:caracter

Operadores
Son comandos que nos van a permitir trabajar o manipular datos.
Los operadores de datos que podemos usar en el computador son:

Operadores
Numricos
+ -*/
** ^

Relacionales
>, <, , ,
=,

Lgicos
And, Or,
Negacin

No Numricos
Concatenacin: //

Operadores Numricos:
Funcionan o trabajan con dos datos numricos y su salida es un dato
numrico.

Operadores Relacionales:
Funcionan o trabajan con dos datos numricos o carcter, y su
salida es un dato lgico.

Operadores Lgicos
Funcionan o trabajan con dos datos lgicos, A y B, y su salida es un
dato lgico.
Operador AND
B

Cierto

Falso

Cierto

True

False

Falso

False

False

Operador OR
B

Cierto

Falso

Cierto

True

True

Falso

True

False

Operador Caracter
La concatenacin es una operacin para datos tipo carcter que
permite combinar cadenas de caracteres para formar una nueva
cadena que contiene a las anteriores.
Los datos tipo carcter deben escribirse encerrados en apstrofes

Ejemplo:
A=Computacin
B=Aplicada
C=A//B

C=ComputacinAplicada

D= bAplicada
E=A//D

E=Computacin Aplicada

Expresiones
Son una combinacin de datos (operandos) y operadores con unas
reglas especficas de construccin, que permiten la manipulacin de los
datos para obtener nuevos valores que se denominan resultados.
Las expresiones que podemos usar en el computador son:
Expresiones
Numricas

Lgicas

Expresiones Numricas: Son combinaciones de datos numricos y


operadores numricos.
Expresiones Lgicas: Son combinaciones de datos numricos o lgicos,
con operadores numricos y operadores lgicos.
La evaluacin de las expresiones se realiza siguiendo unas
Reglas de Precedencia, y cada operador tiene un peso que
indica el orden en que se deben evaluar.

Peso de los Operadores Numricos

Peso de los Operadores Lgicos

Peso

Operador

Descripcin

Peso

Operador

Descripcin

** ^

Potencia

Not

Negacin

(-)

Negacin

AND

Y lgico

*,/

Multiplicacin y
Divisin

2
1

OR

O lgico

+,-

Sumas y Restas

Reglas de Precedencia para las Expresiones


1. Las sub-expresiones entre parntesis deben evaluarse primero. Si las subexpresiones estn entre parntesis anidados deben evaluarse de adentro
hacia afuera: el parntesis ms interno primero, luego el que le sigue hacia
afuera y as sucesivamente hasta haber evaluado completamente la subexpresin encerrada en el parntesis.
2. Los operadores deben evaluarse segn su peso, los pesos ms altos primero.
3. Los operadores con igual peso, as como los parntesis, se evalan de
izquierda a derecha.

Estructuras de Secuencia
Las estructuras de secuencia representan instrucciones que sern
ejecutadas una sola vez. Son llamadas tambin estructuras
primitivas.
Datos
iniciales

Accin 1
Datos
Accin 2
Datos

Accin n

Datos
salida

Estructuras
de secuencia

Como estructuras secuenciales


tenemos las siguientes:
Comienzo y fin
Lectura de datos (entrada de datos)
Asignacin (procesamiento de datos)
Escritura de datos (salida de datos)

Comienzo y Fin
Son instrucciones que indican el punto a partir del cual comienza el
cuerpo del programa y el punto final del mismo.
Nombre del Algoritmo
Var
Variable:
tipo
Comienzo
Paso1
Paso2

Cuerpo del algoritmo

PasoN
Fin
Nota: Recuerde que previamente se habl de una seccin
llamada Declaracin de variables y constantes, ahora
mencionamos otra seccin: Cuerpo del algoritmo (o del
programa), el cual se refiere al conjunto de pasos o
instrucciones a seguir para resolver el problema.

Leer
Datos de Entrada
Num1
Num2
Num3
Num4
Num5

LEER DATOS

Es la instruccin para la entrada de datos a partir de un dispositivo


externo tal como el teclado del computador.
Esta instruccin se emplea para que el computador obtenga datos que el
usuario introducir al programa y los almacene en una variable
previamente definida, de manera que puedan ser utilizados
posteriormente en la ejecucin del programa.

Leer
La operacin leer tiene la forma general:
Leer: (lista de
variables)
Frecuentemente se emplean los comandos:
Read: (lista de variables)
nombre variable=input

En diagrama de flujo, la notacin es:

Nota: Los lenguajes de


programacin vienen en
ingls,
as
que
las
instrucciones
deben
escribirse en ese idioma.

Leer A,B,C

Escribir
Es la instruccin empleada para que el computador muestre datos o algn
comentario en un dispositivo de salida como el monitor o la impresora.
La operacin escribir tiene la forma general:
Escribir: (lista de
variables)
Frecuentemente se emplean los comandos:
Write: (lista de variables)
disp(comentario)

En diagrama de flujo, la notacin es:

Escribir (A,B,C)

Ejemplo: A=10
B=2
C=A-B^2
Escribir(El resultado es:,C)

Se ve en pantalla

El resultado es:
C=6

Asignacin
Es la instruccin empleada para que el computador coloque un dato en
una variable en un momento cualquiera del programa; es decir, es la
instruccin que indica el almacenamiento de un dato que se ha obtenido
de algn proceso del programa, como por ejemplo de una expresin.
La operacin de asignacin tiene la forma general:
Variable Expresin (o dato
cualquiera)

se emplea alguno de los siguientes smbolos para denotar la asignacin:

:=

En diagrama de flujo, la notacin es:

A = x^2

x^2
A

Nota: Esta operacin coloca un dato en una variable y borra el dato anterior de la
variable; en otras palabras, almacena los nuevos valores y se pierden los valores viejos
que tena guardado la variable.

Tipos Especiales de Asignacin


Contador

Acumulador

Variable en la cual se lleva a

Variable en la cual se lleva a

cabo un proceso de asignacin

cabo un proceso de asignacin

de incremento (o decremento)

de incremento (o decremento)

en una cantidad fija

en una cantidad que no es fija

Ambos deben inicializarse


Ejemplos:
J=0

Inicializacin

S=0

J=Jincremento

Estructura

S=Sincremento

Ejemplos:

Tipos Especiales de Asignacin

J=0
0, 1, 2, 3

J=J+1
Cantidad fija

V=[7, -4.5, 10]


S=0
0, 7, 2.5, 12.5
i variar desde 1
hasta 3

S=S+V(i)

Cantidad variable

Nota: Los contadores y acumuladores son usados en estructuras de repeticin o


ciclos, donde son llamados automticamente para contar, sumar o multiplicar
datos.

Estructuras de Decisin
Son acciones que afectan directamente el flujo del algoritmo (afectan el
orden secuencial en el cual se deben ejecutar los pasos).
Estas estructuras controlan la ejecucin o no ejecucin de una
o ms instrucciones dependiendo de una condicin impuesta.
Las estructuras de decisin permiten resolver problemas indicando al
computador que tome decisiones dependiendo del valor que arroje la
evaluacin de cierta(s) condicin(es) relacionales o lgica(s)
previamente establecidas.
Tipos de estructuras de decisin

Decisin
Simple

Decisin
Compuesta

Decisiones
Anidadas

Decisin Simple
Involucra una sola decisin que se toma mediante la evaluacin de una
expresin lgica (llamada condicin), y una sola respuesta posible que
depende de la condicin evaluada.

En el caso en que el resultado de la condicin (expresin

lgica) sea verdadero, entonces se ejecuta un grupo de


acciones (o tareas) previamente establecidas para la
condicin; luego se contina con la secuencia de pasos del
algoritmo o programa.

En el caso en que el resultado de la expresin sea falso,


no se ejecuta el grupo de acciones o tareas establecidas para
la condicin sino que se contina directamente con la
secuencia de pasos del algoritmo o programa.

En diagrama de flujo, un bloque de decisin simple se


expresa:
Condicin

Si

No

Accin 1
Accin 2
Accin m

La forma general es:


Si condicin entonces accin 1

if condicin then accin 1

fin

accin m

end

accin m

Decisin Compuesta
Involucra una sola decisin que se toma mediante la evaluacin de una
expresin lgica (llamada condicin), y dos respuestas posibles que
dependeran de la condicin evaluada.

En el caso en que el resultado de la condicin (expresin

lgica) sea verdadero, entonces se ejecuta un grupo de


acciones (o tareas) previamente establecidas para la
condicin verdadera; luego se contina con la secuencia de
pasos del algoritmo o programa.

En el caso en que el resultado de la expresin sea falso,

se ejecuta otro grupo de acciones o tareas que se han


establecido para la condicin falsa y luego se contina
directamente con la secuencia de pasos del algoritmo o
programa.

En diagrama de flujo, un bloque de decisin compuesta se expresa:

no

Tarea g1
Tarea g2

Expresin

si

Tarea f1
Tarea f2
Tarea fm

Tarea gk

La forma general es:


Si condicin entonces then accin f1
accin fm
sino accin g1
accin gk

if condicin then Tarea f1


Tarea fm
else tarea g1
tarea gk

Decisiones Anidadas

Accin g1
Accin g2

Expresin 3
No

No

Expresin 1

Si

Accin f1
Accin fm

Si

accin k1

Expresin 2

Si

No

accin kn

Expresin 4
No

accin h1
accin hr

Si
accin U

La forma general es:


Si condicin 1 entonces accin f1
accin fm
Si condicin 2 entonces accin h1
accin hm
sino si condicin 4 accin U
fin (de la condicin 4)
fin (de la condicin 2)

sino accin g1
accin g2
Si condicin 3 entonces accin k1

fin

fin

accin kn
(de la condicin 3)

(de la condicin 1)

Ejercicios Propuestos:
1. Escribir un algoritmo que dado dos nmeros determine si su producto
es positivo, nulo o negativo sin realizar el clculo del producto.
2. Escribir un algoritmo que dados cuatro nmeros diferentes los
ordene de mayor a menor.
3. Escribir un algoritmo que dados la edad, sexo y nmero de accidentes
de autos de un asegurado indique la rebaja que aplica una compaa de
seguros de autos. Si es mujer mayor de 30 aos y no ha tenido ningn
accidente el descuento es del 35%; si es hombre mayor de 40 aos y
no ha tenido ningn siniestro anterior el descuento es del 25%. Si no
ha tenido ningn accidente tiene un descuento del 10% sin importar
el sexo ni la edad.
4. Escribir un algoritmo que dados los valores de S1, S2, S3 genere tres
nuevos valores segn:
. Si el nmero es mayor que 0 entonces se debe guardar su raz
cuadrada .
. Si el nmero es menor que 0 entonces se debe guardar su cuadrado.
. Si el nmero es igual a 0 entonces se debe guardar su valor.

Estructuras de Repeticin
Las estructuras de repeticin permiten que el programa ejecute
ciertas tareas y que las repita durante un cierto tiempo. Tambin se
les conoce como ciclos.
Datos
iniciales

Accin 1

Estructuras
de
repeticin

Accin 2.1
Accin 2.2
Accin 2.3

Accin n

Datos
salida

Tipos de estructuras de repeticin

Repeticin
Condicionada

Repeticin
Indizada
FOR

WHILE

REPEAT

Estructura de Repeticin
FOR
Esta estructura repite una o ms tareas durante un cierto nmero
de veces predeterminado.
Se caracteriza por usar un ndice que se encarga de contar las
veces que se repiten las acciones en el ciclo (lleva la cuenta de las
veces que se entra al ciclo)

El ndice de la estructura FOR es una variable que funciona como


un contador automtico, es decir; se usa como un contador pero
no tiene la estructura normal del mismo.
El ndice de la estructura FOR se emplea frecuentemente como el
indicador de posicin dentro de un vector o una matriz (en el caso
de matrices se necesitan dos indicadores de posicin: fila y
columna)

En diagrama de flujo, un bloque For se expresa:

Haga desde i=1 hasta que i=n

Accin 1

Cicl
o

Accin m

Nota: El contador i va cambiando de valor de manera


automtica cada vez que se entra al ciclo.

La forma general de la estructura FOR es:


Desde ndice=1 hasta ndice=n
accin 1
accin 2
accin n
fin

Ejemplo 1:
V=[7, -4.5, 10, 2]
S=0
M=1
for i=1:4
S=S+V(i)
M=M*V(i)
end
Escribir(La suma es:,S)
Escribir(La multiplicacin es:,M)

for ndice=1 to ndice=n


accin 1
accin 2
accin n
end

Corrida en papel
V=[7, -4.5, 10, 2]
M=1
S=0
i=1
S=7
M=7

i=2
S=2.5
M=-31.5

La suma es:
S=14.5
La multiplicacin es:
M=-630

i=3

i=4

S=12.5

S=14.5
M=-630

M=-315

Ejercicios Propuestos:
1. Realizar un algoritmo para calcular la cantidad de molculas que hay en
una cierta cantidad de un compuesto.
Por ejemplo: Cuntas molculas hay en 315 gr de NaCl?

2. Si se desea realizar un algoritmo para hacer los mismos clculos y


determinar la cantidad de molculas que hay en una cierta cantidad de
un compuesto, pero para varios compuestos Cmo sera el algoritmo?
285
483
568
383
645

gr
gr
gr
gr
gr

NaCl
CaCl2
NaOH
Ca(OH)2
Na2CO3

Ejemplo 2:
Crear un algoritmo que dados una coleccin de datos determine cuntos
son positivos y los sume, cuntos son negativos y los sume, cuntos son
cero y muestre los resultados.
Datos: 2, 11, -8, 5, 25, -1, 7, 35, -3, -15,
35, 0
Ejemplo 3:
Crear un algoritmo para determinar cul es el nmero mayor de una
coleccin de datos numricos.
Ejemplo 4:
Crear un algoritmo para determinar cuntas veces se repite el nmero
mayor en una coleccin de datos numricos.
Ejemplo 5:
Crear un algoritmo para determinar si un nmero dado N es primo.

Estructura de Repeticin
Condicionada
Son estructuras o ciclos que repiten una

o ms acciones durante un
nmero de veces no predeterminado, necesitan una condicin que les
permita repetir las tareas sealas.
Estas estructuras funcionan indicndole al computador que debe repetir
ciertas tareas dependiendo del resultado de la evaluacin de una o ms
condicin(es) lgica(s) previamente establecidas, por eso se les conoce
como ciclos de repeticin condicionada.

Estructura While (Repita Mientras)


Como su nombre lo indica, esta estructura repetir mientras la condicin
sea verdadera. La condicin se chequea (cada vez) antes de repetir las
acciones.
En el momento en que el resultado de la condicin sea falso se detiene el
ciclo y no se repite ms.
No podemos saber cuntas veces se repetir el ciclo ya que depende de
una condicin.

En diagrama de flujo, un bloque While se expresa:

Accin 1
Condicin

si

Accin m

no
La forma general de la estructura While es:
Mientras condicin repita
accin 1
accin 2
accin m
fin

While condicin
accin 1
accin 2
accin m
end

Nota:

La condicin funciona como un switch para entrar al ciclo, por lo


tanto es necesario que nos aseguremos que la primera vez la
condicin sea verdadera, para entrar al ciclo.
Dentro del ciclo se debe colocar una asignacin (o accin) para que el
valor de la condicin cambie en algn momento, as la condicin puede
hacerse falsa y podremos salir del ciclo. De lo contrario nos
quedaremos indefinidamente en el ciclo al no encontrar la salida.
Si deseamos saber cuntas veces se ha repetido el ciclo necesitamos
colocarle un contador; este nos ayudar a controlar, en algunos
casos, las veces que se repite el ciclo y lo podemos usar como ndice
para los vectores.

Estructura Repeat (Repita hasta)


Como su nombre lo indica, esta estructura repetir hasta que la
condicin sea verdadera. La condicin se chequea antes de repetir las
acciones. En el caso en que el resultado de la condicin sea falso se
repite el ciclo y cuando sea verdadera se detiene el ciclo.
No podemos saber cuntas veces se repetir el ciclo ya que depende
de una condicin.
En diagrama de flujo, un bloque Repeat se expresa:

Accin 1
Accin m

Condicin
si

no

Comparacin de los diagramas de flujo While y Repeat

Repeat

While

Accin 1

Accin 1

Accin m

Condicin
si

Condicin
no

no

si

Accin m

La forma general de la estructura REPEAT es:


Repita
accin 1
accin 2
accin m
hasta que condicin

Repeat
accin 1
accin 2
accin m
until condicin

Nota:
La condicin funciona como un switch para salir del ciclo, las acciones
se ejecutan por lo menos una vez, ya que la condicin se chequea al
final; si se desea entrar de nuevo en el ciclo es necesario que la
condicin sea falsa.
Dentro del ciclo se debe colocar una asignacin (o accin) para que el
valor de la condicin cambie en algn momento, as se har verdadera y
se podr salir del mismo.
Si deseamos saber cuntas veces se ha repetido el ciclo necesitamos
colocarle un contador.

Estructura de Repeticin
Anidadas

As como es posible tener una o ms estructuras de decisin dentro de


otras, tambin se pueden tener estructuras de repeticin dentro de
otras, es decir, anidadas.
Para construir estas estructuras anidadas se deben seguir ciertas
reglas:

Las estructuras internas deben estar completamente contenidas


en la estructura externa, es decir, que las estructuras internas
comiencen y terminen dentro de la externa.
No debe existir solapamiento.

Ejemplo 4:
En almacn se tienen 3760 tornillos, los cuales se usan para fabricar
sillas y mesas.
Se desea crear un algoritmo para determinar cuntas sillas y mesas
se pueden fabricar con la cantidad de tornillos que se tienen en
almacn, sabiendo que cada silla necesita 4 tornillos y cada mesa
necesita 7.

Ejemplo 5:
En el laboratorio de qumica se deben preparar soluciones de HCL a
diferentes concentraciones: 0.5N, 1N y 2.5N.
Para ello se cuenta con una solucin madre de 1000ml de
concentracin 5N.
Se desea crear un algoritmo que determine cuntas soluciones de
cada tipo se pueden hacer con la cantidad de solucin madre que se
tienen en el laboratorio.

Ejercicios:
1. Cmo sumar los datos de cada fila de una matriz, y almacenarlos en un
vector columna?
2. Cmo sumar los datos de cada columna de una matriz, y almacenarlos en un
vector fila?
3. Cmo determinar el mayor de los datos de una fila especfica de una matriz?
4. Cmo determinar el mayor de los datos de una columna especfica de una
matriz?
5. Cmo determinar en cul columna se encuentra el mayor de los datos de una
fila especfica de una matriz?
6. Cmo determinar en cul fila se encuentra el mayor de los datos de una
columna especfica de una matriz?
7. Sumar los datos en la diagonal de una matriz cuadrada.
8. Sumar los datos que se encuentran arriba de la diagonal de una matriz
cuadrada.
9. Sumar los datos que se encuentran debajo de la diagonal de una matriz
cuadrada.

Potrebbero piacerti anche