You are on page 1of 3

FACULTAD DE INGENIERA-UNAM

Boletn de Computacin, Programacin e Informtica


AO 1 Nm. 2 30 de abril de 2003

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.

Instrucciones de entrada y salida: Instrucciones de transferencia de informacin y datos


entre dispositivos perifricos y la memoria central;

FACULTAD DE INGENIERA-UNAM

Boletn de Computacin, Programacin e Informtica


AO 1 Nm. 2 30 de abril de 2003

Instrucciones aritmticas y lgicas: Se pueden realizar directamente en un lenguaje de


programacin sin necesidad de indicar cmo hay que llevarlas acabo. (+, -, *, /) y (AND,
OR, NOT, NAND, etc.);
Instrucciones selectivas: Se realiza una accin u otra dependiendo del resultado de la
evaluacin de una expresin lgica;
Instrucciones repetitivas: Se repite un conjunto de acciones cero o ms veces.

La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema propuesto.


Por lo tanto, la solucin de un problema puede darse de la siguiente manera:

Diseo del algoritmo: Analizar el problema y desarrollar el algoritmo;


Codificacin: Expresar el algoritmo como un programa en un lenguaje de programacin
adecuado;
Ejecucin y validacin: Cerciorarse de que el programa es vlido para la computadora.

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

x1, x2 = (-b sqrt(b -4ac))/(2a)


Lo primero que tenemos que conocer para encontrar las races de la ecuacin, son los valores de
los coeficientes de cada uno de los trminos (a, b y c). Posteriormente se debe comparar el valor
de a con cero, ya que de ser cero, la ecuacin no tiene solucin por este mtodo.
Si a es diferente de cero, la ecuacin puede tener tres alternativas de solucin, dependiendo del
valor del discriminante. Este valor puede ser menor que cero, igual a cero o mayor que cero; si es
menor que cero, las races son complejas conjugadas, si es cero, las races son reales e iguales, y
si es mayor que cero, las races son reales y distintas.
El algoritmo quedara de la siguiente manera:
1.
2.
3.
4.
5.
6.
7.
8.

Leer los valores de a, b y c de la ecuacin


Si a=0, la ecuacin no tiene solucin por este mtodo, fin.
2
Calcular la parte de la ecuacin Z= b -4ac
Si Z < 0, las races son complejas conjugadas:
xr= -b/2a, xi = sqrt(z)/2a
Si Z =0, las races son reales e iguales:
x1, x2 = -b/2a
Si Z >0, las races son reales y distintas:
2
x1, x2 = (-b sqrt(b -4ac))/(2a)
Imprimimos resultados: x1, x2
Fin

FACULTAD DE INGENIERA-UNAM

Boletn de Computacin, Programacin e Informtica


AO 1 Nm. 2 30 de abril de 2003

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;
}

You might also like