Paradigmas de Programación.


Un paradigma de programación es un modelo que engloba a ciertos lenguajes que comparten elementos estructurales o metodológicos similares.


Los principales paradigmas son:


Imperativo o Procedural: El mas antiguo de todos los paradigmas. Cada línea de programación es una orden. Este paradigma se caracteriza por una secuencia de acciones que se realizan en orden. Los lenguajes que usan este paradigma tienen herramientas para modificar el orden de ejecución de las acciones. Su característica principal es que depende poderosamente de la modificación de valores de variables: Durante la ejecución de estos programa, cada comando cambia el estado de dichas variables. Si Cond_1 -> Valor_2 -> Valor_3 ->... -> Fin. El programador se concreta en el procesamiento y el algoritmo requerido para llevar a cabo el computo deseado. Los lenguajes apoyan este paradigma proporcionando recursos para pasar argumentos a las funciones y devolver valores desde las mismas. Ejemplos de lenguajes son: C, Perl, Pascal, Basic, etc. Para ilustrar veremos un ejemplo de lenguaje imperativo o procedural en el caso de la función factorial.


function factorial(n){

var x = 1;

while (n > 0) {

x = x * n;

n = n − 1;

}

return x;

}


Funcional o Aplicativo: La programación se realiza a través de la definición de una serie de funciones. Esencialmente, un programa funcional es simplemente "una expresión" y la ejecución significaría la evaluación de dicha expresión. Ejemplo de este lenguaje: Lenguaje Scheme. Perl también soporta el paradigma Funcional. La misma función factorial del paradigma imperativo, podría expresarse de la siguiente forma en un lenguaje funcional:


factorial n = if n = 1 then 1 else n * factorial(n − 1);


Orientado a Objetos: Uno de los más usados en la actualidad. Consisten en una colección de "objetos" que intercambian mensajes entre sí. Cada "objeto" es una entidad que agrupa o "encapsula" una cierta información ( ó estado ) y un conjunto de mecanismos para manipularla (métodos). Un buen ejemplo para ejemplificar este concepto es un bombillo. Este "objeto" tiene dos "estados" ( Encendido y Apagado ), y posee un "método" que se usa para cambiar esos estados que sería el interruptor. Toda la entidad esta encapsulada y el usuario solo puede accesar al método y no a los estados directamente. Los métodos del objeto son los que se encarga de cambiar el estado. Quizá en futuras clases se aborden las características de este lenguaje con más profundidad. Ejemplos: Lenguaje C++, Perl, Java, etc.


Lógico Declarativo: En estos lenguajes, cada línea de programación es una declaración y no una orden. La programación se realiza a través de la definición de hechos y relaciones lógicas entre éstos. Una forma de razonar para resolver problemas en matemáticas se fundamenta en la lógica de primer orden. El conocimiento básico de las matemáticas se puede representar en la lógica en forma de axiomas, a los cuales se la agregan reglas formales para deducir cosas verdaderas ( teoremas ). Los lenguajes que utilizan esta lógica se llaman lenguajes declarativos, porque todo lo que tiene que hacer el programador para solucionar un problema es describirlo vía axiomas y reglas de deducción. En estos lenguajes, no se indica el orden en el que se computa una función. Ejemplo: Lenguaje Prolog. Perl en su futura versión 6 soportará este paradigma y de esta forma será el único lenguaje de programación en soportar los cuatro paradigmas principales de programación. Un ejemplo de programación lógica sería algo como:


7>3

4>3

5>4 => Saquen conclusiones.

El orden de las declaraciones no altera la deducción lógica.



Entornos IDE


Un Entorno de desarrollo integrado ( IDE por sus siglas en inglés ) se refiere al sistema usado para el desarrollo de los programas. Existen muchos programadores que prefieren realizar sus programas en un sencillo editor de texto. Para la mayoría de los mortales sin embargo, el uso de un entorno desarrollado especialmente para la programación tiene grandes ventajas. Entre ellas están el resaltado y la corrección de sintaxis ( algunos incluso en tiempo real y no en el compilado ), la facilidad de creación de proyectos formados con múltiples módulos, tabulación automática de los distintos bloques de un programa y configuración de los parámetros de compilación entre muchos otros. Existen una gran variedad de entornos IDE quedando a disposición del programador cual usar. Muchos de los paquetes propietarios de programación vienen con su propio IDE como Turbo C++, Turbo Pascal, Borland C, Visual Basic, etc. Pero existen otros totalmente gratuitos y poderosos, mas modernos y acoplados al estándar ANSI C de programación como es el caso de Dev-C++ el cual será el entorno de desarrollo usado por mi en el laboratorio. Entre las ventajas que existen entre este IDE y, por ejemplo, Turbo C++ es que Dev-C++ esta pensado para el desarrollo de grandes proyectos con ambiente gráfico y no sólo en modo texto. Cabe resaltar el hecho de que Dev-C++ esta amparado bajo la licencia GPL ( GNU Public License ).



Conceptos Básicos.


La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos son caracteres, números enteros y en coma flotante, de varios tamaños. Además se pueden crear tipos derivados mediante la utilización de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribió el propio sistema operativo en C.


C trabaja con tipos de datos que son directamente tratables por el hardware de la mayoría de computadoras actuales, como son los caracteres, números y direcciones. Estos tipos de datos pueden ser manipulados por las operaciones aritméticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los básicos, debiendo ser el programador el que los desarrolle. Esto permite que el código generado sea muy eficiente y de ahí el éxito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros mecanismos de almacenamiento de datos que no sea el estático y no proporciona mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y los compiladores de fácil implementación en distintos sistemas. Por contra, estas carencias se compensan mediante la inclusión de funciones de librería para realizar todas estas tareas, que normalmente dependen del sistema operativo.



Estructura de un Programa de Lenguaje C.


Todos los programas de C tienen la siguiente estructura: ( El bloque main() es obligatorio en todos los programas ). Noten que el tabulado aumenta cada vez que se entra en un nuevo :


#include <stdio.h>


// Los comentarios de una línea comienzan con '//'

/* Los mensajes multilíneas

van encerrados entre '/*' y '*/'.

Fin del comentario. */


/* "#include" se usa al principio del programa para "insertar" en el archivo las cabeceras de las funciones estándar a usar dentro del programa como también cualquier otro módulo que sea parte del proyecto principal.*/


// Declaración de los prototipos de las funciones.

int funcion(int x); //Recibe un entero y retorna un entero.


main () // función principal. Se sobreentiende que es “int main(void)”. De esta ultima forma, la // explicita, es como yo lo prefiero.

{

int x; // Declaración de variables.

char ch;

do {

comando1;

comando2;

}while(condicion);

LoQueSea;

LoQueSea;

LoQueSea;

return 0; // Devuelve el valor cero al sistema que lo llamó. Indica que no hubo error.

}


// Luego desarrollamos el cuerpo de las funciones.

/* Declaración del cuerpo de las funciones. Los prototipos deben concordar con la previa declaración o de lo contrario mandará un mensaje de error a nivel del compilador.*/


int funcion(int x) {

...

...

...

}

Las sentencias que siguen a main () son las primeras sentencias que se ejecutarán. La sección de un programa que comienza con main (), seguida de una llave de apertura '{' se denomina función principal. Un programa escrito en C es en realidad un conjunto de funciones ( pequeñas secciones de código ). La función denominada main () es de ejecución obligada y además es la primera función que se ejecuta cuando se hace correr el programa.


Todo lo que se encuentra colocado entre dos llaves que se corresponden entre sí, una de apertura y otra de cierre, constituye un bloque. Todas las sentencias ejecutables de C deben incluir un punto y coma (;) al final, de modo que C sepa donde termina cada sentencia.