Professional Documents
Culture Documents
Algoritmos
A. Snchez Vaca, L. Franco Sosa
En trminos generales, una computadora es capaz de realizar una serie de operaciones
elementales, como sumar, restar, comparar datos, mover datos de memoria a disco, mover datos
de unas posiciones de memoria a otras, etc. Los problemas que se presentan en la vida real, son
normalmente ms complejos que estas acciones elementales que realiza un computador.
Para encontrar la solucin a un problema real, necesitamos encontrar un mtodo de solucin de
problemas, el ms comn es el que normalmente llamamos algoritmo, el cual se traduce en
acciones elementales que la computadora sea capaz de entender.
El concepto de algoritmo es fundamental para la actividad de resolver programas de
computadoras, por lo que necesitamos adquirir un conocimiento firme sobre lo que es y lo que no
es, esto con el fin de llevar a cabo en forma eficiente la actividad de resolver problemas, ya que
ste es propsito de escribir los algoritmos.
Por lo tanto, se puede definir al algoritmo como un conjunto ordenado de pasos a seguir para
resolver un problema concreto, sin ambigedad alguna en un tiempo finito.
De manera similar, un programa, es el conjunto de instrucciones que escribe un programador.
Estas instrucciones son escritas en un determinado lenguaje.
Cabe mencionar que existen algoritmos numricos y no numricos. Los no numricos, son aquellos
que requieren de una serie de pasos ejecutados o para ejecutar con un orden lgico, para resolver
un problema que no involucra procesos matemticos. Mientras que, los numricos, son similares a
los anteriores, excepto que el problema es numrico, se puede plantear un problema en el cual
tengamos que calcular uno o varios valores a travs de expresiones matemticas.
Todo algoritmo debe tener al menos las siguientes caractersticas:
Precisin: El algoritmo debe ser concreto, utilizando slo el nmero preciso de pasos
para llegar a una solucin clara y sin ambigedad;
Repetitividad: El algoritmo debe repetirse todas las veces que sea necesario, (si es el
caso), dando siempre idnticos resultados para las mismas condiciones;
Finitud: Siguiendo los pasos del algoritmo, debemos llegar a la solucin en un tiempo
finito y razonable;
Validez: Que el algoritmo construido haga lo que se pretende que haga y devuelva los
resultados esperados;
Eficiencia: Se trata de ver si el algoritmo es capaz de dar la solucin en un tiempo
razonable;
Recursos que se necesitan para implantar el algoritmo: Es decir, ver la cantidad de
memoria principal y masiva que se requiere. Cuantos menos recursos necesite, ser mejor.
Las diferentes acciones de un algoritmo se expresan en los programas como instrucciones,
sentencias o proposiciones. Las instrucciones bsicas y comunes a casi todos los lenguajes de
programacin se pueden condensar en cuatro grupos.
FACULTAD DE INGENIERA-UNAM
Los algoritmos son independientes tanto del lenguaje de programacin en que son escritos, as
como, de la computadora que los ejecuta. Esto quiere decir, que el algoritmo se puede escribir en
cualquier lenguaje de programacin y ejecutarse en una computadora distinta; sin embargo, el
algoritmo ser siempre el mismo.
Ejemplo: Algoritmo para encontrar la solucin de una ecuacin de segundo orden, utilizando la
formula cuadrtica:
2
ax +bx+c = 0
2
FACULTAD DE INGENIERA-UNAM
Para llevar a cabo las codificacin, se sigue cada uno de los pasos del algoritmo. Primero se
declaran tres variables reales para almacenar los valores de a, b y c. Asimismo se declaran las
variables necesarias para poder desarrollar el clculo de acuerdo con el algoritmo. Una vez
declaradas las variables, se ingresa el valor de las mismas y se procede con los clculos que le
siguen, hasta encontrar la solucin.
La codificacin de este algoritmo en lenguaje C es el siguiente:
/* Determinar las raices de la ecuacin cuadrtica */
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main (void)
{
/* Declaracin de variables */
float a, b, c;
float xr, xi,x1, x2, disc;
clrscr();
/* Ingreso de datos */
printf("Ingrese los valores de A, B y C ");
scanf("%f%f%f",&a,&b,&c);
if (a==0)
printf("\n\n Ecuacin no cuadrtica ");
disc=b*b-(4*a*c);
if (disc<0)
{
xr = -b/(2*a);
xi = sqrt((-1)*disc)/2*a;
printf("\n Raices complejas conjugadas, x1, x2 = %f + %f", xr, xi);
}
if (disc==0)
{2
xr = -b/(2*a);
printf("\n Raices son reales e iguales, x1=x2 %f", xr);
}
if (disc>0)
{
x1=(-b + sqrt(b*b-4*a*c))/(2*a);
x2=(-b - sqrt(b*b-4*a*c))/(2*a);
printf("\n Raices reales y distintas, x1 = %f, x2 =%f",x1, x2);
}
getch();
return 0;
}