4 - Paradigma imperativo

[editar]
Curso gratis creado por Rafael Menéndez-Barzanallana Asensio. Extraido de: http://www.um.es/docencia/barzana
30 de Noviembre de 1999
Este paradigma se caracteriza por un modelo abstracto de ordenador que consiste en un gran almacenamiento de memoria.
El ordenador almacena una representación codificada de un cálculo y ejecuta una secuencia de comandos que modifican el contenido de ese almacenamiento. Este paradigma viene bien representado por la arquitectura Von Neuman (1903-1957), ya que utiliza este modelo de máquina para conceptualizar las soluciones: "Existe un programa en memoria que se va ejecutando secuencialmente, y que toma unos datos de la memoria, efectúa unos cálculos y actualiza la memoria".
La programación en el paradigma imperativo consiste en determinar qué datos son requeridos para el cálculo, asociar a esos datos unas direcciones de memoria, y efectuar paso a paso una secuencia de transformaciones en los datos almacenados, de forma que el estado final represente el resultado correcto.
En su forma pura este paradigma sólo soporta sentencias simples que modifican la memoria y efectúan bifurcaciones condicionales e incondicionales. Incluso cuando se añade una forma simple de abstracción procedimental, el modelo permanece básicamente sin cambiar. Los parámetros de los procedimientos son "alias" de las zonas de memoria, por lo que pueden alterar su valor, y no retorna ningún tipo de cálculo. La memoria también se puede actualizar directamente mediante referencias globales.
El paradigma imperativo debe su nombre al papel dominante que desempeñan las sentencias imperativas. Su esencia es el cálculo iterativo, paso a paso, de valores de nivel inferior y su asignación a posiciones de memoria.
Si se analizan las características fundamentales de este tipo de paradigma se detectan las siguientes:
  • Concepto de celda de memoria ("variable") para almacenar valores. El componente principal de la arquitectura es la memoria, compuesto por un gran número de celdas donde se almacenan los datos. Las celdas tienen nombre (concepto de variable) que las referencian, y sobre los que se producen efectos de lado y definiciones de alias.
  • Operaciones de asignación. Estrechamente ligado a la arquitectura de la memoria, se encuentra la idea de que cada valor calculado debe ser "almacenado", es decir asignado a una celda. Esta es la razón de la importancia de la sentencia de asignación en el paradigma imperativo. Las nociones de celda de memoria y asignación en bajo nivel, se tienden a todos los lenguajes de programación y fuerzan en los programadores un estilo de pensamiento basado en la arquitectura Von Neumann.
  • Repetición. Un programa imperativo, normalmente realiza su tarea ejecutando repetidamente una secuencia de pasos elementales, ya que en este modelo computacional la única forma de ejecutar algo complejo es repitiendo una secuencia de instrucciones.

A este tipo de paradigma de programación se le suele llamar algorítmico, dado que el significado de algoritmo es análogo al de receta, método, técnica, procedimiento o rutina, y se define como "un conjunto finito de reglas diseñadas para crear una secuencia de operaciones para resolver un tipo específico de problemas". De esta forma para N. Wirth, un programa viene definido por la ecuación

Algoritmos + Estructura de Datos = Programas





No obstante, entendemos que aunque el concepto de algoritmo encaja en otros tipos de paradigmas, es privativo del tipo de programación procedimental en el que su característica fundamental es la secuencia computacional.
Atendiendo a los lenguajes imperativos, cabe clasificarlos en "orientados a expresiones" y "orientados a sentencias", según jueguen las expresiones o sentencias un papel más predominante en el lenguaje, respectivamente. Ambos son términos relativos y no se pueden aplicar de forma absoluta. Se puede decir que C, FORTRAN; Algol, Pascal, son lenguajes orientados a expresiones, mientras que COBOL y PL/1 están orientados a sentencias.
Las expresiones se han encontrado útiles principalmente porque son simples y jerárquicas y pueden combinarse uniformemente para construir expresiones más complejas. Sí pues, las expresiones no sufren influencias de la arquitectura de Von Neumann.
Como ejemplos de programación imperativa, se muestran en lenguaje Pascal la generación de números primos mediante la criba de Eratóstenes, y en lenguaje C la ordenación de datos mediante el método de la burbuja.

|| Números Primos
(* Genera números primos en el rango 2..n, utilizando la criba de Eratóstenes *)
Program primos(input, output);
Const n=50;
Var i: 2..n;
j: 2..25;
iprimo: boolean;
Begin
for i:=2 to n do
Begin (* ¿ Es primo i ? *)
j:=2; iprimo:=true;
While iprimo and (j<=i div 2) do
if ( (i mod j) <>0)
then j:=j+1 else iprimo:=false;
(* Si es primo imprime su valor *)
if iprimo then write (i:3)
End
End.
||


En este programa se destacan las tres características principales del paradigma imperativo:

  • Celdas de memoria: declaraciones de var (i,j, primo)
  • Operaciones de asignación de tipo destructivo: j:=2, iprimo:=true, ..
  • Sentencias repetitivas: for y while

|| Ordenar
/* Ordena un conjunto de datos leídos desde el dispositivo de entrada, utilizando el método de la burbuja */
#include
void ordenar (int *, int);
void escribir (int *, int);
main( )
{
int n=0, dato;
int a[50];
scanf("%d", &dato);
while(dato != EOF);
a[n++] = dato;
scanf("%d",&dato); }
ordenar(a,n-1);
escribir(a,n-1);
}
/* función ordenar */
void ordenar (int a[ ], int n)
{
int i,j, tem;
for (i=0; i<n; y++)
for (j=i+1; j<=n; j++)
if (a[i]>a[j])
{tem = a[i];
a[i]=a[j];
a[j]=tem;}
}
void escribir (int a[ ], int n)
{
int i;
for (y=0; i<n; y++)
{
if (!(i % 10)) printf ("\n");
printf("% 5d", a[i]);
}
}
||





La función ordenar compara parejas de datos contiguos e intercambia su contenido si el primero es mayor que el segundo. Y en cada iteración de la variable j, coloca en la cabeza de la lista que está ordenando el dato menor (la burbuja más ligera)
En este ejemplo, al igual que en anterior predominan los tres componentes descritos del paradigma imperativo.
[editar]

24 opiniones

LAPOBREZA

POBRE YPOBRE
Paradigmas.

Muy bueno el material que en cierta parte es completo. Por lo menos consegui los otros paradigmas que buscaba.
El tema es muy bueno hay que aportar señores.

Muy pronto creare uno similar con las metodoligas existentes:
- metrica 3
- notacion uml
- ingenieria web
- ingenieria software
- cocomo estimación tiempo y costo
+ herramientas case
+etc.
Metodologia usada en ingenierìa del software'(20).

Quisiera saber como se maneja la ingenieria del software ya que para mi es muy importante en lo personal. Gracias.
Metodologias.

Este articulo esta muy bueno pero opino que deberian tratar de abordar la mayor parte de las metodologias existentes.
1 2 3 4 5 | siguiente >

Cursos gratis relacionados con 'Metodologías usadas en ingeniería del software'

Un sistema informático utiliza ordenadores para almacenar datos, procesarlos y ponerlos a disposición de quien... Más »

Autor y licencia de 'Metodologías usadas en ingeniería del software'


Curso gratis de Rafael Menéndez-Barzanallana Asensio. Extraido de: http://www.um.es/docencia/barzana CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.