Conceptos Básicos Algoritmos y Lenguaje de Programación
Conceptos Básicos Algoritmos y Lenguaje de Programación
de problemas.
Dónde:
ENTRADA
Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados
esperados.
PROCESO
SALIDA
A) Según el sistema de signos con el que describen los pasos a seguir, se reconocen:
Algoritmos cualitativos: cuando se hace a través de palabras, es decir, las instrucciones son
verbales. Sucede, por ejemplo, con recetas de cocina.
Algoritmos de encaminamiento: deciden de qué modo se deberá transmitir algo que llega, y
cómo seguirá un conjunto de pasos encadenados. Se dividen fundamentalmente entre
adaptativos y estáticos, los primeros con cierta capacidad de aprendizaje y ajuste a la
circunstancia, mientras que los segundos funcionan mecánicamente, siempre del mismo modo.
C) También los algoritmos han sido clasificados según la estrategia que se utiliza para llegar al resultado.
Veamos algunos ejemplos:
Algoritmos probabilísticos: no se puede estar seguro de la exactitud de la respuesta que darán.
Se agrupan en distintos subtipos, pero con esa premisa: o bien presentan soluciones aproximadas
del problema, o bien presentan soluciones que pueden ser correctas pero también erróneas.
Algoritmo heurístico: abandona alguno de los objetivos como recurso para terminar llegando a
la solución. En general, son utilizados cuando no existe una solución mediante las vías
tradicionales.
Algoritmo de escalada: se comienza con una solución insatisfactoria (que no cumple la entrada
y la salida), y se la va modificando aproximándose a lo que se busca. En algún momento,
estaremos cerca de (o llegaremos a) la solución correcta.
Algoritmo voraz: Con la idea de llegar a una solución óptima definitiva, elige analizar cada paso
como único y elegir la solución óptima para ese paso.
Algoritmo determinista: es completamente lineal (cada paso tiene un paso sucesor y un paso
predecesor) y por lo tanto predictivo, si se conocen sus entradas y su forma de proceder. El
algoritmo de Euclides, que permite averiguar el máximo común divisor entre dos números,
responde a este tipo. Se distinguen de los no deterministas, donde el algoritmo tiene un
comportamiento en forma de árbol.
Características de un algoritmo:
Un algoritmo, además de ser una secuencia de acciones lógicas que hay que realizar para completar
un proceso también requiere cumplir con las 5 condiciones siguientes:
2.- Definitividad. Cada paso del algoritmo debe definirse de modo preciso; las acciones a realizar deben
de estar especificadas rigurosamente y sin ambigüedad para cada caso.
3.- Entrada. Un algoritmo tiene cero o más entradas. Esto es las cantidades de datos de inicio se generan
en el mismo algoritmo o se conocen previamente.
4.- Salida. Un algoritmo tiene una o más salidas. Es decir, hay datos o cantidades al término del
algoritmo que tiene una relación especifica con los datos o cantidades de entrada.
5.- Efectividad. El algoritmo debe de ser efectivo. Esto significa que todas las operaciones deben ser
suficientemente sencillas para poder en principio ser realizadas de modo exacto y en un tiempo finito
por un procesador.
Diagrama de Flujo:
Es una representación gráfica de un proceso. Cada paso del proceso es representado por un símbolo
diferente que contiene una breve descripción de la etapa de proceso. Los símbolos gráficos del flujo del
proceso están unidos entre sí con flechas que indican la dirección de flujo del proceso.
Pseudocódigo:
Es comúnmente utilizado por los programadores para omitir secciones de código o para dar una
explicación del paradigma que tomó el mismo programador para hacer su códigos, esto quiere decir
que el pseudocódigo no es programable sino facilita la programación.
Programa:
Un programa es un conjunto de instrucciones u órdenes basadas en un lenguaje de
programación que una computadora interpreta para resolver un problema o una función especifica.
Lenguaje de Programación:
Es una herramienta que nos permite comunicarnos e instruir a la computadora para que realice una
tarea específica. Cada lenguaje de programación posee una sintaxis y un léxico particular, es decir,
forma de escribirse que es diferente en cada uno por la forma que fue creado y por la forma que
trabaja su compilador para revisar, acomodar y reservar el mismo programa en memoria.
Un lenguaje de programación es un sistema notacional para describir computaciones de una
forma legible tanto para la maquina como para el ser humano. Es utilizado para controlar el
comportamiento físico y lógico de una máquina.
Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se realiza con
este tipo de lenguajes no se pueden migrar o utilizar en otras máquinas.
Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las características
del mismo.
El lenguaje maquina: este lenguaje ordena a la máquina las operaciones fundamentales para su
funcionamiento. Consiste en la combinación de 0's y 1's para formar las ordenes entendibles por
el hardware de la máquina.
Este lenguaje es mucho más rápido que los lenguajes de alto nivel.
La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente
enormes donde encontrar un fallo es casi imposible.
El lenguaje ensamblador es un derivado del lenguaje máquina y está formado por abreviaturas
de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los
programas traductores para poder pasar los programas escritos en lenguaje ensamblador a
lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes
eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este
lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo
la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener.
Lenguajes de alto nivel
Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina.
Están dirigidos a solucionar problemas mediante el uso de EDD's.
Nota: EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en
todos los lenguajes de programación. Son estructuras que pueden cambiar de tamaño
durante la ejecución del programa. Nos permiten crear estructuras de datos que se adapten
a las necesidades reales de un programa.
Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la
maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que entiendan el
código fuente como las características de la máquina.
Se trata de un término no aceptado por todos, pero q seguramente habrás oído. Estos lenguajes se
encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya
que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas
características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.
Existen muchos lenguajes de programación de entre los que se destacan los siguientes:
1. C ▶
2. C++ ▶
3. Basic
4. Ada ▶
5. Java ▶
6. Pascal ▶
7. Python □
8. Fortran
9. Smalltalk
Lenguaje C++
Es un lenguaje de programación orientado a objetos que toma la base del lenguaje C y le agrega la
capacidad de abstraer tipos como en Smalltalk.
C++ es un lenguaje de programación diseñado a mediados de los años 80, más exactamente en el año
de 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de
programación C con mecanismos que permitieran la manipulación de objetos. El C++ es un lenguaje
híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos
paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a
objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
Estructura de un programa C++ // Comentarios de 1 sola línea
// Zona de ficheros de cabecera de las librerías
Comentarios
Directivas del preprocesador #include <....... . h> // h de Head
Declaración de variables globales y funciones #include <....... . h>
int main( ) // Función principal main
{
Declaraciones locales de la función principal
// Zona de prototipos de funciones
Instrucciones de la función principal
} int Potencia (int x,y)
Otras funciones:
funcion1(.....) // Zona de variables globales
{ int valor;
Declaraciones locales de la función 1
Instrucciones de la función 1 float media_total;
}
funcion2(.....)
{
void main (void) // Prog. ppal. típico de Turbo C
Declaraciones locales de la función 2 {
Instrucciones de la función 2 // llave de inicio del programa
} // codigo del programa
..... .......
.......
.......
// fin del programa
}