Anda di halaman 1dari 21

MAC

MATEMATICAS
APLICADAS
Y
COMPUTACIN
PROGRAMACIN I
UNIDAD iI - SOLUCIN DE PROBLEMAS
TEMA 2.1 - FASES EN LA SOLUCIN DE PROBLEMAS
SUBTEMA 2.1.2 DISEO
SUBTEMA 2.1.2.1 EL CONCEPTO DE ALGORITMO Y SUS
CARACTERISTICAS
Prof. Jaime Gabriel Hernndez Salcedo
DEFINICIN DE ALGORITMO
Un Algoritmo es un conjunto ordenado y finito de pasos o
instrucciones que conducen a la solucin de un problema.
La naturaleza de los problemas vara con el mbito o con el contexto donde
estn planteados; as, existen problemas matemticos, qumicos, filosficos, etc.
La naturaleza de los algoritmos tambin es variada y no todos ellos pueden ser
ejecutados por la computadora.
Algoritmos Computacionales: Son aquellos algoritmos que expresan
soluciones usando reglas cuantitativas cuyas instrucciones pueden ser
introducidas en la computadora.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para
resolver diversos problemas.
Algunos ejemplos se encuentran en los instructivos (manuales de usuario).
Tambin existen ejemplos de ndole matemtica: el algoritmo de Euclides para
calcular el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss
para resolver un Sistema lineal de ecuaciones.
Prof. Jaime Gabriel Hernndez Salcedo
CONCEPTO DE ALGORITMO EN CIENCIAS

En matematicas, ciencias de la computacin y disciplinas

relacionadas, un algoritmo (del latn, dixit algorithmus) es

una lista bien definida, ordenada y finita de operaciones que

permite hallar la solucin a un problema.

Dado un estado inicial y una entrada, a travs de pasos

sucesivos y bien definidos se llega a un estado final,

obteniendo una solucin.

Prof. Jaime Gabriel Hernndez Salcedo


MEDIOS DE EXPRESIN DE UN ALGORITMO
Los algoritmos pueden ser expresados de muchas maneras,
incluyendo:
Lenguaje natural,
Diagramas de Flujo,
Diagramas de Nassi-Schneiderman,
Pseudocdigo, y
Lenguajes de programacin entre otros.
Las descripciones en lenguaje natural tienden a ser ambiguas y
extensas.
El usar Diagramas de Flujo y Pseudocdigo evita muchas
ambigedades del lenguaje natural.
Dichas expresiones son formas ms estructuradas para representar
algoritmos.
No obstante, se mantienen independientes de un lenguaje de
programacin especfico.
Prof. Jaime Gabriel Hernndez Salcedo
CARACTERISTICAS DE UN ALGORITMO

Precisin: El algoritmo debe indicar el orden exacto de

ejecucin de cada tarea.

Definido: Si se sigue el algoritmo dos o ms veces con los

mismos datos de entrada, se deben obtener los mismos

datos de salida.

Finito: El algoritmo debe terminar en algn momento y debe

usar una cantidad de recursos finita.

Prof. Jaime Gabriel Hernndez Salcedo


NIVELES DE DESCRIPCIN DE UN ALGORITMO

En el mbito Cientfico e informtico, la descripcin de un


algoritmo usualmente se hace en tres niveles:

1. Descripcin de alto nivel: Se establece el problema, se


selecciona un modelo y se explica el algoritmo de manera
verbal.

2. Descripcin formal: Se usa pseudocdigo para describir la


secuencia de pasos que encuentran la solucin.

3. Implementacin: Se muestra el algoritmo expresado en un


lenguaje de programacin especfico o algn objeto capaz
de llevar a cabo instrucciones.
Prof. Jaime Gabriel Hernndez Salcedo
EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL

Algoritmo para cambiar un foco fundido.

1. Qutese el foco fundido.

2. Colquese un nuevo foco.

Esto parece resolver el problema,

Pero supngase que se est tratando de entrenar a un nuevo

robot domstico para que efecte esta tarea.

En su forma actual, este algoritmo no es adecuado para este

propsito, porque presupone muchas cosas.

Prof. Jaime Gabriel Hernndez Salcedo


EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL
Algoritmo para cambiar un foco fundido.
Primero, qu se necesita para quitar un foco antiguo? Supngase que se
encuentra instalado en el techo, lo que exige una escalera.
Una vez que sta se ha situado en posicin y uno se ha subido, cmo se
quita, especficamente, el foco? Esto se hace hacindola girar en sentido
opuesto a las manecillas de un reloj hasta que est suelta.
Por tanto, el simple paso Qutese el foco fundido se ha extendido a lo
siguiente:
10. Sitese la escalera debajo del foco fundido.
20. Sbase a la escalera hasta que pueda alcanzar el foco.
30. Gire el foco en sentido opuesto a las manecillas del reloj hasta que
est suelto.
En esta ocasin, en lugar de utilizar nmeros consecutivos (1,2,3,),
utilizamos mltiplos de diez (10, 20, 30, etc.), por si acaso requerimos
aumentar pasos intermedios que en una primera definicin del algoritmo, no
fueron considerados.
Prof. Jaime Gabriel Hernndez Salcedo
EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL
Algoritmo para cambiar un foco fundido.
Colocar un nuevo foco requiere la seleccin de uno de la misma potencia (lo
cual, por supuesto, debera hacerse antes de subir a la escalera), la ubicacin
del foco en el lugar dejado por la anterior, el giro en el sentido de las
manecillas del reloj hasta que est apretado y, finalmente, el descenso de la
escalera. Por todo ello, el paso Colquese un nuevo foco se ha extendido
de la siguiente manera:
1. Eljase un nuevo foco de la misma potencia que tena el anterior.
2. Ubquese el foco nuevo en el mismo lugar.
3. Enrsquese en el sentido de las manecillas del reloj hasta que quede
apretado.
4. Bjese de la escalera.
Ahora el algoritmo para reemplazar el foco fundido consta de siete pasos, los
cuales son los siguientes:
Prof. Jaime Gabriel Hernndez Salcedo
EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL
Algoritmo para cambiar un foco fundido.
10. Sitese la escalera debajo del foco fundido.

20. Eljase un foco nuevo de la misma potencia que el anterior.

30. Sbase por la escalera hasta que pueda alcanzar el foco.

40. Grese el foco en sentido opuesto a las manecillas del reloj hasta que
est suelto.

50. Ubquese el foco nuevo en el mismo lugar.

60. Enrsquese en el sentido de las manecillas del reloj hasta que quede
apretado.

70. Bjese de la escalera.


Pero an no se han elaborado las instrucciones con bastante precisin.
Varios de los pasos de este algoritmo implican operaciones ms detalladas que
deben indicarse especficamente.
Prof. Jaime Gabriel Hernndez Salcedo
EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL
Algoritmo para cambiar un foco fundido.
El proceso de eleccin del paso 20 es uno de los pasos que requieren mayor
detalle:
Supngase que se tiene una caja que contiene los focos nuevos, en cuyo
caso debe examinarse cada uno hasta que se encuentre el que tenga la
misma potencia del anterior.
Esto exige la realizacin de las siguientes operaciones:
1. Eljase un posible reemplazante.
2. Verificar la potencia del nuevo foco
3. Si la potencia es igual al anterior IR AL paso 6
4. Descrtese el foco
5. Elijase un nuevo foco IR AL paso 2
Con esto aparecen dos conceptos importantes:
i. El concepto de decisin (SI - IF) y
ii. El concepto de bifurcacin del flujo del algoritmo (IR A GO TO).
Prof. Jaime Gabriel Hernndez Salcedo
EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL
Algoritmo para cambiar un foco fundido.
La capacidad de decisin permite diferir la seleccin de alternativas de accin
hasta el tiempo de ejecucin.
En este caso no se determina la accin a seguir hasta que la potencia del foco
seleccionado haya sido comprobada.
Tambin es posible especificar que una operacin bsica debe ser repetida una
y otra vez; en este caso, la seleccin y la eliminacin se repiten hasta que se
encuentre un foco de la potencia requerida.
Un proceso similar se realiza en el paso 30 (al subir los peldaos de la escalera
hasta alcanzar el foco), en el paso 40 (al girar el foco en sentido opuesto a las
manecillas del reloj para quitarlo) y en el paso 60 (al enroscar el nuevo foco en
el lugar del anterior hasta que quede apretado).
Con estos agregados, el algoritmo para reemplazar el foco fundido queda de la
siguiente manera:
Prof. Jaime Gabriel Hernndez Salcedo
EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL
Algoritmo para cambiar un foco fundido.
10. Sitese la escalera debajo del foco fundido.
20. Eljase un posible reemplazante.
30. Si la potencia es igual al anterior IR AL paso 60.
40. Descrtese el foco elegido
50. Elijase un nuevo foco. IR AL paso 30
60. Sbase un peldao de la escalera
70. Si ya puede alcanzar el foco fundido IR AL paso 90
80. Suba otro peldao de la escalera. IR AL paso 70
90. Grese el foco en sentido contrario a las manecillas del reloj hasta que
este suelto, y retrelo
100. Ubquese el foco nuevo en el mismo lugar del que se acaba de retirar
110. Reptase el siguiente procedimiento hasta que el foco est apretado
120. Enrsquese en el sentido de las manecillas del reloj
130. Bjese de la escalera.
Prof. Jaime Gabriel Hernndez Salcedo
EJEMPLO DE ALGORITMO EN LENGUAJE NATURAL
Algoritmo para cambiar un foco fundido.
Como puede verse, el proceso de aumentar los detalles de un algoritmo
puede continuarse casi indefinidamente.
El algoritmo del ejemplo para cambiar el foco fundido aunque es simple,
sirve para ejemplificar la forma en que deben expresarse los algoritmos:
Las operaciones indicadas son simples y estn exentas de ambigedad,
Las decisiones que se piden son simples y se especifica claramente el
orden en que deben efectuarse los pasos.
Es importante sealar el mtodo por medio del cual este algoritmo fue
desarrollado:
Se comenz con un enunciado muy general de la solucin del problema
y se continu hasta encontrar el algoritmo final incrementando
sistemticamente los detalles.

Prof. Jaime Gabriel Hernndez Salcedo


OPERACIONES DE ASIGNACIN

Y SIMBOLOS EN ALGORITMOS

Prof. Jaime Gabriel Hernndez Salcedo


OPERACIONES DE ASIGNACIN Y SIMBOLOS EN ALGORITMOS
La operacin de asignacin es una manera muy natural de especificar que una
variable debe tener un valor dado; simplemente se le asigna ese valor a dicha
variable. La operacin de asignacin se denotar con el smbolo .
Por ejemplo, el enunciado A 3 significa a la variable A se le ha asignado el
valor 3
Una vez que el enunciado de asignacin ha sido ejecutado, la letra o palabra
contendr el nmero 3.
Ntese que como una palabra de la memoria slo puede contener un valor a la
vez, el nmero 3 reemplaza el valor que all hubiera sido previamente
almacenado.
Se dice que la operacin de asignacin es una operacin destructiva, porque
cualquiera que hubiera sido el valor que la variable tena antes del
procesamiento de la operacin de asignacin, se habr perdido; ha sido
reemplazado por el nuevo valor.
Prof. Jaime Gabriel Hernndez Salcedo
OPERACIONES DE ASIGNACIN Y SIMBOLOS EN ALGORITMOS

En esta forma, si se ejecuta la siguiente secuencia de operaciones:

A 16

A - 27

A 1

El valor de la variable A despus de las tres operaciones ser 1.

Los valores 16 y 27 han sido destruidos, pues se ha escrito encima

de ellos por las sucesivas operaciones de asignacin hechas sobre la

misma palabra.

Ntese que las operaciones se ejecutan en el orden establecido,

cuando se trata de una secuencia de asignaciones.

Prof. Jaime Gabriel Hernndez Salcedo


OPERADORES ARITMTICOS
Los operadores aritmticos binarios son (potencia), +, -, *, /, y el
operador modulo %.
Los operadores aritmticos binarios pueden ser agrupados en clases, tal
y como se muestra en la siguiente tabla:

Clase Operadores Significado


1 Elevacin a potencia (se pueden usar los smbolos ,^
indistintamente)

2 -,+ Operadores de signo (Como signo del nmero menos y


mas unitarios)

3 * , /, % Multiplicacin, Divisin y Mdulo

4 +, - Suma y resta (Como operaciones aritmticas)

Prof. Jaime Gabriel Hernndez Salcedo


PRECEDENCIA DE OPERADORES ARITMTICOS
Consideremos el siguiente enunciado de asignacin:
VAR 3 + 6 * 13
Que valor recibe la variable VAR?
Esto depende del orden en que se procesen los operadores
matemticos (+, *).
Si se procesa de izquierda a derecha, es decir, efectuando la suma
antes de la multiplicacin, se obtiene el resultado 117.
Supngase en cambio que se realiza la multiplicacin antes que la
suma, en este caso el resultado es 81.
Por lo cual es necesario definir cual es la precedencia de los operadores
aritmticos.
Los operadores de la misma clase tienen la misma precedencia.

Prof. Jaime Gabriel Hernndez Salcedo


PRECEDENCIA DE OPERADORES ARITMTICOS

La Precedencia de Operadores Aritmticos determina el orden en que

habrn de realizarse las operaciones en una expresin determinada.

Para obtener la prioridad se deben conocer las siguientes reglas:

Las operaciones que estn encerradas entre parntesis se evalan

primero.

Si existen diferentes parntesis anidados (interiores unos a otros), las

expresiones ms internas se evalan primero.

En caso de coincidir varios operadores de igual prioridad en una

expresin o subexpresin encerrada entre parntesis, el orden de

prioridad en este caso es de izquierda a derecha.

Prof. Jaime Gabriel Hernndez Salcedo


PRECEDENCIA DE OPERADORES ARITMTICOS

Las operaciones aritmticas dentro de una expresin tienen el siguiente orden

de prioridad:

Operador Prioridad

^ Alta

*, /, %

+, -

Relacionales Baja

Prof. Jaime Gabriel Hernndez Salcedo