Professional Documents
Culture Documents
1. Introducción
Los matemáticos hindúes, árabes y europeos fueron los primeros que desarrollaron técnicas de
cálculo escrito. El matemático árabe Al'Khwarizmi , alrededor del año 830 DC, escribe un libro
de Aritmética, traducido al latín como Algoritmi de numero Indorum, donde introduce el sistema
numérico indio (sólo conocido por los árabes unos 50 años antes) y los métodos para calcular
con él. De esta versión latina proviene la palabra Algoritmo.
Por algoritmo se entiende "una lista de instrucciones donde se especifica una sucesión de
operaciones necesarias para resolver cualquier problema de un tipo dado". Los algoritmos son
modos de resolución de problemas, cabe aclarar que no sólo son aplicables a la actividad
intelectual, sino también a todo tipo de problemas relacionados con actividades cotidianas. El
algoritmo es de carácter general y puede aplicarse a cualquier operación matemática o a
cualquier problema. La formulación de algoritmos fue uno de los más grandes adelantos dentro
de la ciencia matemática ya que a partir de ello se pudieron resolver infinidad de problemas.
Landa, matemático ruso, quien ha investigado mucho al respecto nos dice que "la ciencia
matemática, en el proceso de su desarrollo, ha tratado de encontrar los algoritmos óptimos más
generales para resolver los problemas que permitan la solución uniforme de clases más
amplias de problemas de una manera, es decir, empleando siempre el mismo sistema de
operación. Los algoritmos, para llegar a ser tales deben reunir ciertas características. Una de
ellas es que los pasos que deben seguirse deben estar estrictamente descritos, cada acción
debe ser precisa, y debe ser general, es decir, que pueda ser aplicable a todos los elementos
de una misma clase. Por ejemplo en el caso del algoritmo de una multiplicación, no sólo se
realizará el procedimiento de resolución parte para la multiplicación de 4 x 4, sino que el mismo
algoritmo podrá aplicarse a cualquier multiplicación. La última de estas características será la
resolución, en otras palabras, esto quiere decir que el algoritmo deberá llegar a un resultado
específico.
Es de gran importancia aclarar que los algoritmos en si mismos no resuelven problemas, se
resuelven gracias al producto de ejercer las operaciones dictadas por el algoritmo, se puede
decir que es por el planteamiento mismo. La realización de algoritmos es natural e innata en el
hombre y en la mayoría de los casos es de tipo inconsciente, en otras palabras, las personas
suelen resolver problemas sin tener que recurrir a la aplicación de cierto algoritmo. No obstante
al encontrarse con problemas de un grado de dificultad mayor es necesario detenerse a
analizar y pensar en la solución de éste .
En el presente trabajo se enfocan diversos puntos que son de gran importancia como lo son
Algoritmo del cual hemos comentado anteriormente . Flujograma el cual no es más que la
representación gráfica de un algoritmo y el cual es necesario para la realización de un buen
programa , haciendo que el hombre organice sus ideas y conozca a fondo el problema a
solucionar con todas las posibles variantes o alternativas utilizando esta técnica. También se
hablará de ciertos puntos referentes a Estructura de Datos, Variables , Constantes y se
reflejaran ejemplos para su mejor compresión.
2. Algoritmo: Definición
Es un Método para resolver un problema mediante una serie de pasos precisos , definidos y
finitos. Un algoritmo es una serie de operaciones detalladas ,en otras palabras un algoritmo es
un conjunto de reglas para resolver una cierta clase de problemas y se puede formular de
muchas formas con el cuidado de que no exista ambigüedad.
Características
3. Constantes: Definición
Una constante es un dato cuyo valor no puede cambiar durante la ejecución del programa.
Recibe un valor en el momento de la compilación y este permanece inalterado durante todo el
programa. Las constantes se declaran en una sección que comienza con la palabra reservada
const . Después de declarar una constante se puede usar en el cuerpo principal del programa.
Tienen varios usos: ser miembro en una expresión, en una comparación, asignar su valor a una
variable, etc.
En el siguiente ejemplo se contemplan varios casos:
const
Min = 0;
Max = 100;
Sep = 10;
var
i : integer;
begin
i := Min;
writeln(i);
i := i + Sep
end
end.
En este ejemplo se declaran tres constantes (Min, Max y Sep). En la primera línea del cuerpo
del programa se asigna una constante a una variable. En la siguiente, se usa una constante en
una comparación. Y en la cuarta, la constante Sep interviene en una expresión que se asigna a
una variable. El resultado de ejecutar este programa sería una impresión en pantalla de los
números: 0, 10, 20, 30, 40, 50, 60, 70, 80 y 90.
Se puede hacer una división de las constantes en tres clases:
Son valores de cualquier tipo que se utilizan directamente, no se declaran ya que no tienen
nombre. En el siguiente ejemplo tienes un par de constantes literales (el 3, el 4, y el 3.1416):
• Constantes declaradas
También llamadas constantes con nombre, son las que se declaran en la sección
Const asignándoles un valor directamente.
Por ejemplo:
const
• Constantes expresión
También se declaran en la sección Const pero a estas no se les asigna un valor
directamente, sino que se les asigna una expresión. Esta expresión se evalúa en
tiempo de compilación y el resultado se le asigna a la constante.
Ejemplo:
const
Min = 0;
Max = 100;
Intervalo = 10;
N = (Max - Min) div Intervalo;
Centro = (Max - Min) div 2;
4. Variables: Definición
Una variable es un nombre asociado a un elemento de datos que está situado en posiciones
contiguas de la memoria principal, y su valor puede cambiar durante la ejecución de un
programa. Toda variable pertenece a un tipo de dato concreto. En la declaración de una
variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras, reales,
booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la vida de una
variable:
Declaración de variables
Esta es la primera fase en la vida de cualquier variable. La forma de declarar variables es muy
sencilla. Esta sección debe comenzar con la palabra reservada var, seguida de una lista de
parejas lista_de_variables=tipo_al_que_pertenecen. Cada par debe ir seguido por un punto y
coma.
La lista_de_variables es uno o más nombres de variables separados por comas:
var listaVar1:tipo1;...;listaVarn:tipon;
Una variable no representa más que una porción de memoria en donde guardamos un dato que
dependerá del tipo al que pertenezca la variable. A diferencia de una constante, el valor de una
variable puede cambiar durante la ejecución de un programa. Otra diferencia, es que a una
variable no basta con declararla, sino que también es necesario iniciarla. Esto se refiere a darle
un valor inicial, y es importante ya que si no lo hacemos, igual nos encontramos con errores
cuando ejecutemos el programa.
...
var
Contador : Integer;
...
En este ejemplo se declaran seis variables. Las cuatro primeras son de tipo entero. La quinta
es de tipo real, o sea, un número con parte decimal. Y la sexta es un carácter, que no es lo
mismo que una cadena de un carácter (String[1]).
Iniciación de variables
Esto no es más que darle un valor inicial a una variable. Así como lo primero que se hace con
una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se hace para evitar posibles
errores en tiempo de ejecución, pues una variable tiene un valor indeterminado después de
declararla. Principalmente, existen dos maneras de otorgar valores iniciales a variables:
begin
...
i:=1;
readln(n);
while i < n do begin
i := i + 1
end;
...
end.
Utilización de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la parte que
presenta un mayor abanico de posibilidades. A continuación se presentan unas cuantas:
• Incrementar su valor:
i := i + 1
• Controlar un bucle:
Tipos de datos.
El tipo de un dato es el conjunto de valores que puede tomar durante el programa. Si se le
intenta dar un valor fuera del conjunto se producirá un error. El tipo de dato le indica al
compilador del lenguaje de programación dos cosas: el número de bytes requeridos para
guardar el dato, y la manera en que se manipulara y operara el dato.
La asignación de tipos a los datos tiene dos objetivos principales:
Cada lenguaje de programación tiene sus propios tipos de datos, algunos de estos son
comunes a todos, entre los tipos de datos comunes están :
o Entero,
o Real,
o Carácter,
o Lógico,
o Fecha / hora y Cadena.
El tipo integer (entero)
El tipo de datos entero es un tipo simple, y dentro de estos, es ordinal. Al declarar una variable
de tipo entero, se está creando una variable numérica que puede tomar valores positivos o
negativos, y sin parte decimal. Este tipo de variables, puede utilizarse en asignaciones,
comparaciones, expresiones aritméticas, etc. Algunos de los papeles más comunes que
desarrollan son:
• Controlar un bucle .
• Usarlas como contador, incrementando su valor cuando sucede algo .
• Realizar operaciones enteras, es decir, sin parte decimal
• Y muchas más...
type
tContador = integer;
var
i : tContador;
n : integer;
begin
i := i + 1
end
end.
type
tLogico = boolean;
var
begin
else
end.
El tipo real
El tipo de datos real es el que se corresponde con los números reales. Este es un tipo
importante para los cálculos. Por ejemplo en los estadísticos, ya que se caracterizan por tratar
fundamentalmente con valores decimales. A continuación se muestra un ejemplo en el que se
utiliza el tipo real. En el se puede ver las dos formas de declarar una variable real, y también el
uso de una constante real.
const
pi = 3.1416;
type
tArea = real;
var
A : tArea; (* area *)
R : real; (* radio *)
begin
R := 4.50;
A := pi * R * R; (* calculamos el area *)
type
var
begin
nombre := 'Beni';
letra_NIF := 'L';
end.
o Estructuras Repetitivas
Las estructuras repetitivas o iterativas son aquellas en las que las acciones se ejecutan un
número determinado de veces y dependen de un valor predefinido o el cumplimiento de una
determinada acción.
Características
Mientras (while)
Repetir (repeat)
La estructura repetitiva while, es aquélla en que el cuerpo del bucle se repite mientras se
cumple una determinada condición, su representación gráfica es:
Acción S1 <Acciones>
Acción S2 :
: End_while
acción Sn
Fin_mientras
Diagrama N-S
1er. Ejemplo:
Contar los números enteros positivos introducidos por teclado. Se consideran dos variables
enteras NUMERO y CONTADOR (contará el número de enteros positivos). Se supone que se
leen números positivos y se detiene el bucle cuando se lee un número negativo o cero.
Pseudocódigo
Inicio
contador 0
Leer (numero)
contador contador+1
Leer (numero)
Fin_Mientras
Fin
//WHILE_
#include <iostream.h>
#include <conio.h>
main(){
int i=0, n;
while( i<n ){
i = i + 1;
cout << i << " * " << i+1 << " * " << i+2 << " = " << termino << endl;
<acciones> <acciones>
: :
Until <condición>
2do. Ejemplo
Construir un programa que sume todos los números que introduce el usuario hasta que
introduzca el número cero.
/* declaraciones */
float numero, suma_acumulada;
/*instrucciones*/
comienzo
/* inicialización */
suma_acumulada := 0;
leer (numero);
mientras numero > 0 repetir
comienzo
suma_acumulada := suma_acumulada + numero;
leer (numero);
fin mientras;
<acciones> <acciones>
Fin_desde
Donde:
v: Variable índice
1er.Ejemplo
Cuenta del 1 al 50 varias veces, con variantes de la instrucción FOR.
//FOR_
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
main(){
int i=1;
clrscr();
i = 0;
for( ; i<50; ) {
i++;
for(i=1 ; i<=50; ) {
i++;
for( ; ; ) {
i ++;
if (i > 50)
break;
else
getch();}
2do. Ejemplo
Expansión binomial:
n n-i i
(a+b)_ = S ( n! / (i!×(n-i)!))×a × b
i=0
//FOR_5.CPP
#include <iostream.h>
#include <conio.h>
int i;
float f=1;
f = f * i;
return f;
main(){
int n, i, a, b, coeficiente;
clrscr();
cin >> n;
cout <<"\n";
getch();
return 0;
o Estructura Secuencial
• Es aquélla en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se
suceden de tal modo que la salida de una es la entrada de la siguiente y así
sucesivamente hasta el fin del proceso.
Características
Estructura Secuencial
....
acciones
fin
1er. Ejemplo :
Pseudocódigo
Inicio
{cálculo salario neto}
leer nombre, horas, precio_hora
salario_bruto horas * precio
impuestos 0.20 * salario_bruto
salario_neto salario_bruto_impuestos
escribir nombre, salario_bruto, salario_neto_bruto, salario_neto
Fin
INICIO
CARACTER Asignatura1[10], Asignatura2[10],
Estudiante1[15], Estudiante2[15], Estudiante3[15];
REAL Est1Asig1, Est1Asig2,
Est2Asig1, Est2Asig2,
Est3Asig1, Est3Asig2,
PromedioAsignatura1, PromedioAsignatura2,
PromedioEstudiante1,PromedioEstudiante2, PromedioEstudiante3;
Leer(Asignatura1)
Leer(Asignatura2)
Leer(Estudiante1)
Leer(Estudiante2)
Leer(Estudiante3)
Leer(Est1Asig1)
Leer(Est1Asig2)
Leer(Est2Asig1)
Leer(Est2Asig2)
Leer(Est3Asig1)
FIN.
3er. Ejemplo
INICIO
TotalVotosEleccion,
PorcentajeCandidato1,PorcentajeCandidato2, PorcentajeCandidato3,
PorcentajeVotosEnBlanco,
PorcentajeCiudadanosResponsables,
PorcentajeCiudadanosInconcientes;
Leer(Candidato1)
Leer(Candidato2)
Leer(Candidato3)
Leer(VotosCandidato1)
Leer(VotosCandidato2)
Leer(VotosCandidato3)
Leer(VotosEnBlanco)
VotosCandidato3 + VotosEnBlanco
PorcentajeCandidato1 = ( VotosCandidato1 / TotalVotosEleccion ) * 100
PorcentajeCiudadanosResponsables=(TotalVotosEleccion/TotalCensoElectoral)*100
FIN.
5. Flujograma: Definición
Símbolo función
Ejemplo de un Algoritmo sencillo con su respectivo Flujograma
Considere un Algoritmo para leer dos números A y B luego sumarlos y por último imprimir o
mostrar el resultado de la suma.
Algoritmo : Representación Grafica :
Inicio
Leer A
Leer B
C=A+B
Mostrar C
Fin