Anda di halaman 1dari 23

INSTITUTO TECNOLOGICO SUPERIOR PUREPECHA

INGENIERIA EN SISTEMAS COMPUTACIONALES

MATERIA:
PROGRAMACION LOGICA Y FUNCIONAL

INVESTIGACION

PROFESOR:
ING. DANIEL PEA LOPEZ

ALUMNO:
LUIS ANTONIO JAIMES CUEVAS

SEMESTRE:
OCTAVO

CHERAN, MICH. MARZO 2016


1

INTRODUCCION

Es importante que conozcamos los orgenes del PSP y cmo, en conjunto con
TSP y CMMI, forman una disciplina organizacional que te permitir realizar
software en un menor tiempo, optimizar costos y sobre todo con calidad.
El CMMI es un producto desarrollado por el Software Engineering Institute (SEI) y
se basa en la mejora continua de los procesos.
Pretende incrementar la capacidad administrativa de las organizaciones para
controlar los costos, tiempos y productividad en general.
Por otra parte, el objetivo de TSP es adiestrar a los ingenieros de software en el
desarrollo de equipos y llegar en menos tiempo a niveles altos de desempeo por
medio de la prctica del proceso personal del software de cada uno de sus
integrantes el cual nace como un acercamiento estructurado y disciplinado para el
desarrollo de software proporcionando al ingeniero de software un conjunto de
formularios, guas y estndares que les ayudan a estimar y planificar su trabajo.
Trabajando todo en conjunto y, de manera efectiva, es muy factible poder cumplir
con todos los niveles de CMMI.
Es importante entender que PSP es una disciplina personal, sin embargo en
conjunto con TSP y CMMI se pueden lograr varios beneficios para la organizacin.

1.3 DEFINICION DE FUNCIONES

EL concepto de funcin tiene su origen en el trmino latino functo. La palabra


puede ser utilizada en diversos mbitos y con distintos significados.
Por otra parte, una funcin matemtica es la correspondencia o relacin f de los
elementos de un conjunto A con los elementos de un conjunto B. Una funcin
cumple con la condicin de existencia (todos los elementos de A estn
relacionados con los elementos de B) y con la condicin de unicidad (cada
elemento de A est relacionado con un nico elemento de B).
En la informtica, ms precisamente en los lenguajes de programacin, una
funcin es un tipo de subalgoritmo que describe una secuencia de rdenes. Estas
rdenes cumplen con una tarea especfica de una aplicacin ms grande.
Las funciones se crearon para evitar tener que repetir constantemente fragmentos
de cdigo. Una funcin podra considerarse como una variable que encierra
cdigo dentro de s. Por lo tanto cuando accedemos a dicha variable (la funcin)
en realidad lo que estamos es diciendo al programa que ejecute un determinado
cdigo predefinido anteriormente.
Todos los lenguajes de programacin tienen algunos elementos de formacin
primitivos para la descripcin de los datos y de los procesos o transformaciones
aplicadas a estos datos (tal como la suma de dos nmeros o la seleccin de un
elemento que forma parte de una coleccin). Estos elementos primitivos son
definidos por reglas sintcticas y semnticas que describen su estructura y
significado respectivamente.

FORTRAN
Las funciones en Fortran son bastante similares a las funciones matemticas:
ambas toman un conjunto de variables de entrada (parmetros) y regresan un
valor de algn tipo. Al inicio de la seccin se comento de los subprogramas
definidas por el usuario, pero Fortran 77 tiene tambin funciones incorporadas.
Un ejemplo simple muestra cmo usar una funcin:
x = cos(pi/3.0)
En este caso la funcin coseno cos de 60, asignar a la variable x el valor de 0.5
(si pi ha sido definido correctamente; Fortran 77 no tiene constantes
3

incorporadas). Hay varias funciones incorporadas en Fortran 77. Algunas de las


ms comunes son:
abs
min
max
sqrt
sin
cos
tan
atan
exp
log

valor absoluto
valor mnimo
valor mximo
raz cuadrada
seno
coseno
tangente
arco tangente
exponencial (natural)
logaritmo (natural)

En general, una funcin siempre tiene un tipo. Varias de las funciones


incorporadas mencionadas anteriormente son sin embargo genricas. Por lo tanto
en el ejemplo anterior pi y x podran ser del tipo real o del tipo double precisin. El
compilador revisar los tipos y usar la versin correcta de la funcin cos (real o
double precisin). Desafortunadamente, Fortran no es un lenguaje polimrfico, por
lo que en general, el programador debe hacer coincidir los tipos de las variables y
las funciones.
Se revisa a continuacin como implementar las funciones escritas por el usuario.
Supongamos el siguiente problema: un meteorlogo ha estudiado los niveles de
precipitacin en el rea de una baha y ha obtenido un modelo (funcin) ll (m,t)
donde ll es la cantidad de lluvia, m es el mes, y t es un parmetro escalar que
depende de la localidad. Dada la frmula para ll y el valor de t, calcular la
precipitacin anual.
La forma obvia de resolver el problema es escribir un ciclo que corra sobre todos
los meses y sume los valores de ll. Como el clculo del valor de ll es un
subproblema independiente, es conveniente implementarlo como una funcin. El
siguiente programa principal puede ser usado:
program lluvia
real r, t, suma
integer m
read (*,*) t
suma = 0.0
do m = 1, 12
suma = suma + ll(m, t)
end do
write (*,*) 'La precipitacin Anual es ', suma, 'pulgadas'
stop
end
__________________________________________________________________
C

Una funcin es un fragmento de cdigo que realiza una tarea bien definida. Por
ejemplo, la funcin printf imprime por la salida estndar los argumentos que le
pasamos. Al igual que esta funcin, existen otras funciones que realizan diversas
tareas ya definidas en el estndar ANSI C y que pueden ser utilizadas por el
programador. Este tipo de funciones predefinidas son denominadas funciones de
biblioteca. Sin embargo, cada programador puede definir sus propias funciones de
acuerdo a sus necesidades. Las funciones que define el programador son
conocidas como funciones de usuario.
La utilizacin de funciones nos permite dividir un programa extenso en pequeos
segmentos que realizan tareas concretas. Probablemente, dentro de un mismo
programa se realicen las mismas tareas varias veces, lo que se facilita mediante
la utilizacin de funciones. . Sin embargo, es probable que ciertas funciones no
sean reutilizables, pero al usarlas se mejora la legibilidad del programa.
Con el propsito de permitir un manejo eficiente de los datos, las funciones en C
no se pueden anidar. En otras palabras, una funcin no se puede declarar dentro
de otra funcin , por lo que todas las funciones son globales o externas, lo que
hace que puedan llamarse desde cualquier parte de un programa.
Cuando se accede a una funcin desde un determinado punto del programa, se le
puede pasar informacin mediante unos identificadores especiales conocidos
como argumentos (tambin denominados parmetros). Una vez que la funcin
procesa esta informacin, devuelve un valor mediante la instruccin return.
La estructura general de una funcin en C es la siguiente:
tipo_de_retorno nombre_de_la_funcin (lista_de_parmetros)
{
cuerpo_de_la_funcin
return expresin
}
Donde:
tipo_de_retorno: es el tipo del valor devuelto por la funcin, o, en caso de que la
funcin no devuelva valor alguno, la palabra reservada void.
nombre_de_la_funcin: es el nombre o identificador asignado a la funcin.
lista_de_parmetros: es la lista de declaracin de los parmetros que son
pasados a la funcin. stos se separan por comas. Debemos tener en cuenta que
pueden existir funciones que no utilicen parmetros.
cuerpo_de_la_funcin: est compuesto por un conjunto de sentencias que llevan
a cabo la tarea especfica para la cual ha sido creada la funcin.
5

return expresin: mediante la palabra reservada return, se devuelve el valor de la


funcin, en este caso representado por expresin
__________________________________________________________________
C++
Una funcin es un conjunto de lneas de cdigo que realizan una tarea especfica
y puede retornar un valor. Las funciones pueden tomar parmetros que modifiquen
su funcionamiento. Las funciones son utilizadas para descomponer grandes
problemas en tareas simples y para implementar operaciones que son
comnmente utilizadas durante un programa y de esta manera reducir la cantidad
de cdigo. Cuando una funcin es invocada se le pasa el control a la misma, una
vez que esta finaliz con su tarea el control es devuelto al punto desde el cual la
funcin fue llamada.
<tipo> [clase::] <nombre> ( [Parmetros] )
{
cuerpo;
}
Ejemplo de una funcin
Para comenzar, vamos a considerar el caso en el cual se desea crear la funcin
cuadrado(), que deber devolver el cuadrado de un nmero real (de punto
flotante), es decir, cuadrado() aceptar nmeros de punto flotante y regresar una
respuesta como nmero flotante.
Nota: aunque para la funcin que veremos el tipo de retorno coincide con el tipo
de parmetro pasado, algunas veces las cosas pueden cambiar, es decir, no es
obligatorio que una funcin reciba un parmetro de un tipo y que tenga que
regresar una respuesta de dicho tipo.
// regresar el cuadrado de un nmero
double Cuadrado(double n)
{
return n*n;
}
__________________________________________________________________
JAVA
6

En Java una funcin es un modulo de un programa separado del cuerpo principal,


que realiza una tarea especfica y que puede regresar un valor a la parte principal
del programa u otra funcin o procedimiento que la invoque.
La forma general de una funcin es:
tipodatoregresa Nom_fun(parametros)
{ cuerpo de instrucciones;
intruccion return;
}
El tipo especifica el tipo de valor que la funcin regresara utilizando la instruccin
return.
Si no se especifica un tipo se asume de default que el tipo regresado es int.
La lista de parmetros formales es una lista de variables separadas por comas (,)
que almacenaran los valores que reciba la funcin, estas variables actan como
locales dentro del cuerpo de la funcin.
Aunque no se ocupen parmetros los parntesis son requeridos.
La declaracin de parmetros es la especificacin de cada tipo de parmetro
recibido.
INSTRUCCION RETURN
Dentro del cuerpo de la funcin deber haber una instruccin return cuando menos,
para regresar el valor, esta instruccin permite regresar datos.
Prog.java ejemplo:
import java.io.*; import javax.servlet.*;
import javax.servlet.http.*;
public class prog26 extends HttpServlet
{ public void doPost (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{ int x=10;
x = funcion1(x,20);
PrintWriter pagina;
response.setContentType("text/html");
pagina = response.getWriter();
pagina.println("<HTML>");
pagina.println("x="+x);
7

pagina.println("</HTML>");
pagina.close();
}; // termina dopost
public int funcion1(int a, int b){return a+b;};
public void destroy(){super.destroy();};
}// termina class

1.4 DISCIPLINA DE TIPOS

DISCIPLINA: Es la coordinacin de actitudes con las cuales se instruye para


desarrollar habilidades, o para seguir un determinado cdigo de conducta u
"orden".
En los lenguajes de programacin con disciplina de tipos, cada tipo representa una
coleccin de valores (datos) similares. Una funcin cuyo tipo sea A1 -> ... An ->
espera n parmetros con tipos A1, ... An y devuelve un resultado de tipo R. El
conocer los tipos de las funciones ayuda a documentar los programas y a evitar
errores en tiempo de ejecucin.
Disciplina esttica de tipos: Los programas bien tipados se pueden reconocer en
tiempo de compilacin, un programa bien tipado se puede utilizar sin efectuar
comprobaciones de tipo en tiempo de ejecucin. Estando garantizado que no se
producirn errores de tipo durante el cmputo.
La programacin funcional es un paradigma de programacin declarativa basado
en la utilizacin de funciones aritmticas que no maneja datos mutables o de
estado. Enfatiza la aplicacin de funciones, en contraste con el estilo de
programacin imperativa, que enfatiza los cambios de estado. La programacin
funcional tiene sus races en el clculo lambda, un sistema formal desarrollado en
los 1930s para investigar la definicin de funcin, la aplicacin de las funciones y
la recursin. Muchos lenguajes de programacin funcionales pueden ser vistos
como elaboraciones del clculo lambda.
Los lenguajes imperativos de cuarta generacin que les dicen, en donde el
programador debe decirle al sistema, mediante instrucciones muy precisas, qu
queremos que haga la mquina. As, tenemos que ver esta serie de instrucciones
como un algoritmo, una especie de receta de cocina que se debe ejecutar
rigurosamente para obtener los resultados deseados.
8

Para ello hay lenguajes como Pascal o C, el segundo quizs el ms popular en el


mundo, en donde la expresividad del lenguaje permite hacer muchsimas cosas.
Los lenguajes modernos deben contar con estructuras de datos dinmicas, que
permiten, en muchos casos, una manera mucho ms eficiente de hacer programas
y de hacer que estos convivan unos con otros dentro del mismo sistema operativo.
Por ello mismo, cuando llegan alumnos que me dicen que programan en Visual
Basic, o cualquier variedad de Basic les indico que eso no califica como lenguaje,
sino como un dialecto de la tierra primitiva. Y no exagero. Basic en cualquier
modalidad adolece de las estructuras dinmicas asociadas a los lenguajes
modernos. S, es cierto que Visual Basic ha incorporado algunas ideas de esta
naturaleza, pero el problema es que no son estndar, sino que dependen de cada
implementacin. Por ende, es probable que un programa escrito en Visual Basic
sea prcticamente imposible de portar a otro Basic en otra mquina, para hablar
de alguna de las deficiencias. Igualmente, la incorporacin de apuntadores (o
punteros, como suelen decirles en los libros espaoles), es bastante primitiva y de
difcil uso. An as, la popularidad del Basic es evidente porque permite generar
prototipos rpidamente, aunque no se utilicen las mejores capacidades expresivas
de otros lenguajes.
Otros lenguajes han sido desarrollados para hacer aplicaciones para la Internet,
para pginas web y ah hay cientos de lenguajes de todo gnero. Tenemos Java,
creado por Sun Microsystems, que permite programar prcticamente en cualquier
plataforma pues Mac, PC, Linux, o incluso sistemas en computadoras de alto
desempeo. Para ello Sun escribi para cada plataforma un intrprete de java,
que es una mquina virtual. El intrprete est escrito para una implementacin
nica en cada sistema operativo y por ende los programas en Java son portables
de una mquina a otra. Adems, la cantidad de bibliotecas de funciones para todo
gnero de aplicaciones es extraordinaria. Se cuentan por miles y hay para todas
las necesidades. Java tiene sintaxis mezclada de C y Pascal, por lo que la curva
de aprendizaje es menor. Adems, funciona en un sandbox, una especie de caja
cerrada en donde la aplicacin corre, impidiendo que se puedan crear virus
malignos. Es quizs una de las mejores herramientas para programar en la web.
Hay otros lenguajes, como PHP, que es un sistema para generar pginas
dinmicas, es decir, pginas que cambian de acuerdo a las necesidades y
peticiones de los usuarios. Por ejemplo, Amazon, la tienda virtual de libros, tiene
un gran sistema de bases de datos y cada usuario ve cosas diferentes de acuerdo
a las peticiones y bsquedas que hacen al sistema. PHP se encarga de presentar
los resultados personalizados para cada usuario. Y aunque este sistema es muy
robusto y adems, se lleva muy bien con MySQL, un manejador de bases de
datos escrito para la web, tiene el inconveniente de que es muy poco estricto con
los tipos de datos.
As, una variable entera puede recibir un dato de punto flotante o incluso como
cadena de caracteres. Eso va contra la disciplina en programacin pues da pie a
9

muchsimos errores porque las variables intercambian su propiedad inicial de ser


reales, enteras, de caracteres o de cadenas de caracteres. Es difcil debugear,
es decir, depurar los programas en PHP por este simple hecho de que las
variables cambian de tipo y van contra la disciplina en programacin. Y aunque es
un lenguaje con muchas aplicaciones interesantes, PHP no es un buen candidato
para ensear a nadie a programar.

1.5 TIPOS DE DATOS

En lenguajes de programacin un tipo de dato es un atributo de una parte de los


datos que indica al ordenador (y/o al programador) algo sobre la clase de datos
sobre los que se va a procesar.
En un sentido amplio, un tipo de datos define un conjunto de valores y las
operaciones sobre estos valores. Casi todos los lenguajes de programacin
explcitamente incluyen la notacin del tipo de datos, aunque lenguajes diferentes
pueden usar terminologa diferente. La mayor parte de los lenguajes de
programacin permiten al programador definir tipos de datos adicionales,
normalmente combinando mltiples elementos de otros tipos y definiendo las
operaciones del nuevo tipo de dato. Por ejemplo, un programador puede crear un
nuevo tipo de dato llamado "Persona" que especifica que el dato interpretado
como Persona incluir un nombre y una fecha de nacimiento.
Un tipo de dato entero en computacin es un tipo de dato que puede representar
un subconjunto finito de los nmeros enteros. El nmero mayor que puede
representar depende del tamao del espacio usado por el dato y la posibilidad (o
no) de representar nmeros negativos. Los tipos de dato entero disponibles y su
tamao dependen del lenguaje de programacin usado as como la arquitectura
en cuestin. Por ejemplo, si para almacenar un nmero entero disponemos de 4
bytes de memoria tememos que:4 Bytes = 4x8 = 32 bits Con 32 bits se pueden
representar 232=4294967296 valores: Slo positivos: del 0 al 4294967295
Positivos y negativos: del -2147483648 al 2147483647
Tipos de datos en coma flotante Se usan para representar nmeros con partes
fraccionarias. Hay dos tipos de coma flotante: float y double. El primero reserva
almacenamiento para un nmero de precisin simple de 4 bytes y el segundo lo
hace para un numero de precisin doble de 8 bytes.Tipo:float4 Bytes (32
bits)double8 Bytes (64 bits)
Tipo de dato carcter (Char)Es cualquier signo tipogrfico, puede ser una letra, un
nmero, un signo de puntuacin o un espacio. Este trmino se usa mucho en
10

computacin.Un valor de tipo carcter es cualquier carcter que se encuentre


dentro del conjunto ASCII ampliado, el cual est formado por los 128 caracteres
del ASCII ms los 128 caracteres especiales que presenta, en este caso, IBM.
Los valores ordinales del cdigo ASCII ampliado se encuentran en el rango de 0 a
255. Dichos valores pueden representarse escribiendo el carcter correspondiente
encerrado entre comillas simples (apstrofos).As, podemos escribir:'A' < 'aQue
significa: "El valor ordinal de A es menor que el de a" o "A est antes que a"Un
valor de tipo carcter (char en ingls) se guarda en un byte de memoria.La nica
operacin (adems de las relacionales) que podemos hacer con caracteres es la
concatenacin concatenando dos caracteres, por ejemplo 'a' y 'X' obtendramos la
cadena "aX".
Tipo de dato lgico El tipo de dato lgico o booleano es en computacin aquel que
puede representar valores de lgica binaria, esto es, valores que representen falso
o verdadero. Se utiliza normalmente en programacin, estadstica, electrnica,
matemticas (lgebra booleana), etc...Para generar un dato o valor lgico a partir
de otros tipos de datos, tpicamente, se emplean los operadores relacionales (u
operadores de relacin), por ejemplo: 0 es igual a falso y 1 es igual a
verdadero(3>2)= 1 = verdadero(7>9)= 0 = falso
Palabra reservada una palabra reservada es una palabra que tiene un significado
Gramatical especial para ese lenguaje y no puede ser utilizada como un
identificador en ese lenguaje.
Por ejemplo, en SQL, un usuario no puede ser llamado "group", porque la palabra
group es usada para indicar que un identificador se refiere a un grupo, no a un
usuario. Al tratarse de una palabra clave su uso queda restringido.Ocasionalmente
la especificacin de un lenguaje de programacin puede tener palabras
reservadas que estn previstas para un posible uso en futuras versiones. En Java
const y goto son palabras reservadas no tienen significado en Java, pero
tampoco pueden ser usadas como identificadores. Al reservar los trminos pueden
ser implementados en futuras versiones de Java, si se desea, sin que el cdigo
fuente ms antiguo escrito en Java deje de funcionar.

11

FORTRAN
Los tipos de datos permitidos son los siguientes:
Logical: Las variables lgicas solo pueden tener dos valores verdadero y falso.
Integer: Valores enteros guardados en 4 bytes. Se indican como nmeros sin
punto decimal: 1, 2, -3, 25, etc.
Real: Valores reales guardados en 4 bytes y con 8 cifras signicativas. Se indican
con punto decimal, y de ser necesario el exponente de la potencia de 10 despus
de una E: 1., -3.1416, 6.25E-10, etc.
Doubl: Valores reales de doble precisin guardados en 8 bytes y con 16 cifras
signicativas, tambin se denotan por real (8). Se indican con punto decimal y el
exponente de la potencia de 10 despus de una D: 1.D0, -3.1416D0, 6.25D-10,
etc. Son muy tiles en clculos numricos largos, donde los errores de redondeo
pueden hacer que las ultimas 4 o 5 cifras signicativas de un numero real sean
basura.
Cudruple: Valores reales de cudruple precisin guardados en 16 bytes y con
32cifras signicativas, tambin se denotan por real (16). Se indican con punto
decimal y el exponente de la potencia de 10 despus de una Q: 1.Q0, -3.1416Q0,
6.25Q-10, etc.
Complex: Dos valores reales formando un par y que en operaciones matemticas
Se tratan como la parte real e imaginaria de un numero complejo: (1.,-2.), (1.0E0,2.0E0). Tambin existen versiones de doble y cudruple precisin.
Character: Variables que corresponden a cadenas de caracteres. Al declarar una
variable de este tipo se debe especicar cuantos caracteres puede tener. Estas
variables deben estar contenidas en comillas: hola, abcdfe, Me llamo Luis,
128.3, etc.
__________________________________________________________________
C
Hay dos clases de tipos de datos: tipos fundamentales y tipos derivados.
nicamente vamos a ver los tipos de datos fundamentales.
Tipo entero: representa nmeros enteros con o sin signo, que estarn
compuestos por los dgitos del 0 al 9, pudiendo ser precedidos por los signos + o -.
Algunos ejemplo de datos enteros son: 0, 23, -176, -1, etc.
Tipo real: Se emplean para representar nmeros reales (con decimales).

12

Para definir datos reales se antepone la palabra reservada float al identificador de


la variable.
float identificador = valor;
Por ejemplo: float numero1, numero2;
float numero3 = 123.43;
float numero3;
Tipo carcter: Este tipo de datos se emplea para representar un carcter
perteneciente a un determinado cdigo utilizado por el ordenador (normalmente el
cdigo ASCII).
Para representar este tipo de dato se antepone la palabra reservada char al
identificador de la variable.
Char identificador = valor;
Una constante tipo char se representa como un solo carcter encerrado entre
comillas simples.
Tipo cadena de caracteres: una cadena de caracteres es un nmero de
caracteres consecutivos (incluso ninguno) encerrado entre unos delimitadores
determinados, que en el lenguaje C son las comillas dobles.
Para definir variables de tipo cadena, estas se definen como vectores de
caracteres, esto es, anteponiendo la palabra reservadachar al identificador de la
variable, y despus entre corchetes la longitud mxima de cadena.
Char identificador[cantidad] = mensaje ;
__________________________________________________________________
C++
Los tipos de datos que maneja C++ son:
Enteros
Dentro de los enteros estn los tipos: short, int, long, los cuales varan en rango de
acuerdo al compilador que se utilice, siendo long rango mayor y short el de menor.
Flotantes
Dentro de los flotantes C++ tiene los tipos: float, double y long double donde al
igual que los enteros vara el rango de cada uno de acuerdo al compilador que se
utilice. De igual forma el float es el de menor rango siendo long double el de rango
mayor
Caracteres
Se utiliza el tipo char. Para representar un caracter en C++ se utilizan apstrofes.
Ejemplos: a, b , 5
Para representar una cadena de caracteres se utilizan las comillas.
Ejemplo: soy una cadena
13

__________________________________________________________________
JAVA
Los tipos de datos primitivos que soporta Java son:

Tipo de

Representacin

dato

Tamao

Rango de Valores

Valor

(Bytes)

por

Clase
Asociada

defecto
byte

Numrico Entero

-128 a 127

Byte

-32768 a 32767

Short

-2147483648

Integer

Long

con signo
short

Numrico Entero
con signo

Int

Numrico Entero

a 2147483647

con signo
long

Numrico Entero

a 9223372036854775807

con signo
float

-9223372036854775808

3.4x10-38 a 3.4x1038

0.0

Float

1.8x10-308 a 1.8x10308

0.0

Double

Carcter Unicode

\u0000 a \uFFFF

\u0000

Character

Dato lgico

true false

false

Boolean

Void

Numrico
en Coma flotante
de precisin
simple Norma
IEEE 754

double

Numrico
en Coma flotante
de precisin
doble Norma
IEEE 754

char
boolean
void

DIFERENTES TIPOS DE PARADIGMAS DE PROGRAMACIN

Un paradigma de programacin es una propuesta tecnolgica que es adoptada


por una comunidad de programadores cuyo ncleo central es incuestionable en
cuanto a que unvocamente trata de resolver uno o varios problemas claramente
14

delimitados. La resolucin de estos problemas debe suponer consecuentemente


un avance significativo en al menos un parmetro que afecte a la ingeniera de
software.
Tiene una estrecha relacin con la formalizacin de determinados lenguajes en su
momento de definicin. Un paradigma de programacin est delimitado en el
tiempo en cuanto a aceptacin y uso ya que nuevos paradigmas aportan nuevas o
mejores soluciones que la sustituyen parcial o totalmente.

Por ejemplo:
Probablemente el paradigma de programacin que actualmente es el ms usado a
todos los niveles es la orientacin a objeto. El ncleo central de este paradigma es
la unin de datos y procesamiento en una entidad llamada "objeto", relacionable a
su vez con otras entidades "objeto".
Tradicionalmente datos y procesamiento se han separado en reas diferente del
diseo y la implementacin de software. Esto provoc que grandes desarrollos
tuvieran problemas de fiabilidad, mantenimiento, adaptacin a los cambios y
escalabilidad. Con la orientacin a objetos y caractersticas como el encapsulado,
polimorfismo o la herencia se permiti un avance significativo en el desarrollo de
software a cualquier escala de produccin.
La orientacin a objeto parece estar ligado en sus orgenes con lenguajes como
Lisp y Simula aunque el primero que acuo el ttulo de programacin orientada a
objetos fue Smaltalk

Tipos de paradigmas de programacin

Programacin Imperativa
La programacin imperativa, en contraposicin a la programacin declarativa es
un paradigma de programacin que describe la programacin en trminos del
estado del programa y sentencias que cambian dicho estado. Los programas
imperativos son un conjunto de instrucciones que le indican al computador cmo
realizar una tarea.
La implementacin de hardware de la mayora de computadores es imperativa;
prcticamente todo el hardware de los computadores est diseado para ejecutar
cdigo de mquina, que es nativo al computador, escrito en una forma imperativa.
Esto se debe a que el hardware de los computadores implementa el paradigma de
las Mquinas de Turing. Desde esta perspectiva de bajo nivel, el estilo del
programa est definido por los contenidos de la memoria, y las sentencias son
15

instrucciones en el lenguaje de mquina nativo del computador (por ejemplo el


lenguaje ensamblador).
Los lenguajes imperativos de alto nivel usan variables y sentencias ms
complejas, pero an siguen el mismo paradigma. Las recetas y las listas de
revisin de procesos, a pesar de no ser programas de computadora, son tambin
conceptos familiares similares en estilo a la programacin imperativa; cada paso
es una instruccin, y el mundo fsico guarda el estado (Zoom).
Los primeros lenguajes imperativos fueron los lenguajes de mquina de los
computadores originales. En estos lenguajes, las instrucciones fueron muy
simples, lo cual hizo la implementacin de hardware fcil, pero obstruyendo la
creacin de programas complejos. Fortran, cuyo desarrollo fue iniciado en 1954
por John Backus en IBM, fue el primer gran lenguaje de programacin en superar
los obstculos presentados por el cdigo de mquina en la creacin de programas
complejos.

Programacin lgica
La programacin lgica consiste en la aplicacin del corpus de conocimiento sobre
lgica para el diseo de lenguajes de programacin; no debe confundirse con la
disciplina de la lgica computacional.
La programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los subparadigmas de
programacin dentro de la programacin declarativa son: programacin funcional,
programacin basada en restricciones, programas DSL (de dominio especfico) e
hbridos. La programacin lgica gira en torno al concepto de predicado, o relacin
entre elementos. La programacin funcional se basa en el concepto de funcin
(que no es ms que una evolucin de los predicados), de corte ms matemtico.

Programacin funcional
En ciencias de la computacin, la programacin funcional es un paradigma de
programacin declarativa basado en la utilizacin de funciones aritmticas que no
maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en
contraste con el estilo de programacin imperativa, que enfatiza los cambios de
estado. La programacin funcional tiene sus races en el clculo lambda, un
sistema formal desarrollado en los 1930s para investigar la definicin de funcin,
la aplicacin de las funciones y la recursin. Muchos lenguajes de programacin
funcionales pueden ser vistos como elaboraciones del clculo lambda.
Los lenguajes de programacin funcional, especialmente los que son puramente
funcionales, han sido enfatizados en el ambiente acadmico principalmente y no
16

tanto en el desarrollo de software comercial. Sin embargo, lenguajes de


programacin importantes tales como Scheme, Erlang, Objective Caml y Haskel,
han sido utilizados en aplicaciones comerciales e industriales por muchas
organizaciones.
La programacin funcional tambin es utilizada en la industria a travs de
lenguajes de dominio especfico como R (estadstica), Mathematica (matemticas
simblicas), J y K (anlisis financiero), F# en Microsoft.NET y XSLT (XML).
Lenguajes de uso especfico usados comnmente como SQL y Lex/Yacc, utilizan
algunos elementos de programacin funcional, especialmente al procesar valores
mutables. Las hojas de clculo tambin pueden ser consideradas lenguajes de
programacin funcional.
La programacin funcional tambin puede ser desarrollada en lenguajes que no
estn diseados especficamente para la programacin funcional. En el caso de
Perl, por ejemplo, que es un lenguaje de programacin imperativo, existe un libro
que describe cmo aplicar conceptos de programacin funcional. JavaScript, uno
de los lenguajes ms ampliamente utilizados en la actualidad, tambin incorpora
capacidades de programacin funcional.

Programacin declarativa
La Programacin Declarativa, es un paradigma de programacin que est basado
en el desarrollo de programas especificando o "declarando" un conjunto de
condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o
transformaciones que describen el problema y detallan su solucin. La solucin es
obtenida mediante mecanismos internos de control, sin especificar exactamente
cmo encontrarla (tan slo se le indica a la computadora que es lo que se desea
obtener o que es lo que se est buscando). No existen asignaciones destructivas,
y las variables son utilizadas con Transparencia referencial

Programacin estructurada
La programacin estructurada es una forma de escribir programas de ordenador
(programacin de computadora) de manera clara. Para ello utiliza nicamente tres
estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la
instruccin o instrucciones de transferencia incondicional (GOTO, EXIT
FUNCTION, EXIT SUB o mltiples RETURN).

Programacin dirigida por eventos


17

La programacin dirigida por eventos es un paradigma de programacin en el que


tanto la estructura como la ejecucin de los programas van determinados por los
sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos
provoquen.
Para entender la programacin dirigida por eventos, podemos oponerla a lo que
no es: mientras en la programacin secuencial (o estructurada) es el programador
el que define cul va a ser el flujo del programa, en la programacin dirigida por
eventos ser el propio usuario o lo que sea que est accionando el programa
el que dirija el flujo del programa. Aunque en la programacin secuencial puede
haber intervencin de un agente externo al programa, estas intervenciones
ocurrirn cuando el programador lo haya determinado, y no en cualquier momento
como puede ser en el caso de la programacin dirigida por eventos.
El creador de un programa dirigido por eventos debe definir los eventos que
manejarn su programa y las acciones que se realizarn al producirse cada uno
de ellos, lo que se conoce como el administrador de evento. Los eventos
soportados estarn determinados por el lenguaje de programacin utilizado, por el
sistema operativo e incluso por eventos creados por el mismo programador.
En la programacin dirigida por eventos, al comenzar la ejecucin del programa se
llevarn a cabo las inicializaciones y dems cdigo inicial y a continuacin el
programa quedar bloqueado hasta que se produzca algn evento. Cuando
alguno de los eventos esperados por el programa tenga lugar, el programa pasar
a ejecutar el cdigo del correspondiente administrador de evento. Por ejemplo, si
el evento consiste en que el usuario ha hecho click en el botn de play de un
reproductor de pelculas, se ejecutar el cdigo del administrador de evento, que
ser el que haga que la pelcula se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programacin Lxico y Visual
Basic, en los que a cada elemento del programa (objetos, controles, etctera) se le
asignan una serie de eventos que generar dicho elemento, como la pulsacin de
un botn del ratn sobre l o el redibujado del control.
La programacin dirigida por eventos es la base de lo que llamamos interfaz de
usuario, aunque puede emplearse para desarrollar interfaces entre componentes
de Software como mdulos del ncleo tambin.
En los primeros tiempos de la computacin, los programas eran secuenciales,
tambin llamados Batch. Un programa secuencial arranca, lee parmetros de
entrada, procesa estos parmetros, y produce un resultado, todo de manera lineal
y sin intervencin del usuario mientras se ejecuta.
Con la aparicin y popularizacin de los pc, el software empez a ser demandado
para usos alejados de los clsicos acadmicos y empresariales para los cuales
era necesitado hasta entonces, y qued patente que el paradigma clsico de

18

programacin no poda responder a las nuevas necesidades de interaccin con el


usuario que surgieron a raz de este hecho...

Programacin modular
La programacin modular es un paradigma de programacin que consiste en
dividir un programa en mdulos o subprogramas con el fin de hacerlo ms legible
y manejable.
Se presenta histricamente como una evolucin de la programacin estructurada
para solucionar problemas de programacin ms grandes y complejos de lo que
sta puede resolver.
Al aplicar la programacin modular, un problema complejo debe ser dividido en
varios subproblemas ms simples, y estos a su vez en otros subproblemas ms
simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente
simples como para poder ser resueltos fcilmente con algn lenguaje de
programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers
anlisis descendente (Top-Down).
Un mdulo es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos
mdulos tiene una tarea bien definida y algunos necesitan de otros para poder
operar. En caso de que un mdulo necesite de otro, puede comunicarse con ste
mediante una interfaz de comunicacin que tambin debe estar bien definida.
Si bien un mdulo puede entenderse como una parte de un programa en
cualquiera de sus formas y variados contextos, en la prctica es comn
representarlos con procedimientos y funciones. Adicionalmente, tambin pueden
considerarse mdulos las libreras que pueden incluirse en un programa o, en
programacin orientada a objetos, la implementacin de un tipo de dato abstracto.

Programacin orientada a objetos


La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es
un paradigma de programacin que usa objetos y sus interacciones, para disear
aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo
herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a
principios de la dcada de los aos 1990. En la actualidad, existe variedad de
lenguajes de programacin que soportan la orientacin a objetos.

Programacin con restricciones


19

La Programacin con restricciones es un paradigma de la programacin en


informtica, donde las relaciones entre las variables son expresadas en trminos
de restricciones (ecuaciones). Actualmente es usada como una tecnologa de
software para la descripcin y resolucin de problemas combinatorios
particularmente difciles, especialmente en las reas de planificacin y
programacin de tareas (calendarizacin).
Este paradigma representa uno de los desarrollos ms fascinantes en los
lenguajes de programacin desde 1990 y no es sorprendente que recientemente
haya sido identificada por la ACM (Asociacin de Maquinaria Computacional)
como una direccin estratgica en la investigacin en computacin.
Se trata de un paradigma de programacin basado en la especificacin de un
conjunto de restricciones, las cuales deben ser satisfechas por cualquier solucin
del problema planteado, en lugar de especificar los pasos para obtener dicha
solucin.
La programacin con restricciones se relaciona mucho con la programacin lgica
y con la investigacin operativa. De hecho cualquier programa lgico puede ser
traducido en un programa con restricciones y viceversa. Muchas veces los
programas lgicos son traducidos a programas con restricciones debido a que la
solucin es ms eficiente que su contraparte.
La diferencia entre ambos radica principalmente en sus estilos y enfoques en el
modelado del mundo. Para ciertos problemas es ms natural (y por ende ms
simple) escribirlos como programas lgicos, mientras que en otros es ms natural
escribirlos como programas con restricciones.
El enfoque de la programacin con restricciones se basa principalmente en buscar
un estado en el cual una gran cantidad de restricciones sean satisfechas
simultneamente. Un problema se define tpicamente como un estado de la
realidad en el cual existe un nmero de variables con valor desconocido. Un
programa basado en restricciones busca dichos valores para todas las variables.
Algunos dominios de aplicacin de este paradigma son:

Dominios booleanos, donde solo existen restricciones del tipo


verdadero/falso.
Dominios en variables enteras y racionales.
Dominios lineales, donde slo se describen y analizan funciones lineales.
Dominios finitos, donde las restricciones son definidas en conjuntos finitos.
Dominios mixtos, los cuales involucran dos o ms de los anteriores.

Programacin orientada a componentes


20

La programacin orientada a componentes (que tambin es llamada basada en


componentes) es una rama de la ingeniera del software, con nfasis en la
descomposicin de sistemas ya conformados en componentes funcionales o
lgicos con interfaces bien definidas usadas para la comunicacin entre
componentes.
Se considera que el nivel de abstraccin de los componentes es ms alto que el
de los objetos y por lo tanto no comparten un estado y se comunican
intercambiando mensajes que contienen datos.

Programacin Orientada a Aspectos


La Programacin Orientada a Aspectos (POA) es un paradigma de programacin
relativamente reciente cuya intencin es permitir una adecuada modularizacin de
las aplicaciones y posibilitar una mejor separacin de incumbencias. Gracias a la
POA se pueden encapsular los diferentes conceptos que componen una aplicacin
en entidades bien definidas, eliminando las dependencias entre cada uno de los
mdulos. De esta forma se consigue razonar mejor sobre los conceptos, se
elimina la dispersin del cdigo y las implementaciones resultan ms
comprensibles, adaptables y reusables. Varias tecnologas con nombres diferentes
se encaminan a la consecucin de los mismos objetivos y as, el trmino POA es
usado para referirse a varias tecnologas relacionadas como los mtodos
adaptativos, los filtros de composicin, la programacin orientada a sujetos o la
separacin multidimensional de competencias.

21

CONCLUSIONES
22

La disciplina en el proceso de desarrollo de software, es sin lugar a dudas uno de


los elementos fundamentales, para tal propsito debemos comenzar a entenderla
y aplicarla desde etapas muy tempranas.
Para obtener productos de calidad el ingeniero debe asumir la responsabilidad
personal de la calidad de sus productos, los buenos productos no se obtienen al
azar, sino son consecuencia de un esfuerzo positivo para hacer un trabajo de
calidad.

23

Anda mungkin juga menyukai