martes, 23 de noviembre de 2010

Calculo Lambda

Materia: Lenguajes de Programacion.


Introduccion.

El cálculo lambda es un sistema formal diseñado para investigar la definición de función, la noción de aplicación de funciones y la recursión. Fue introducido por Alonzo Church y Stephen Kleene en la década de 1930; Church usó el cálculo lambda en 1936 para resolver el Entscheidungsproblem. Puede ser usado para definir de manera limpia y precisa qué es una "función computable". El interrogante de si dos expresiones del cálculo lambda son equivalentes no puede ser resuelto por un algoritmo general. Esta fue la primera pregunta, incluso antes que el problema de la parada, para el cual la indecidibilidad fue probada. El cálculo lambda tiene una gran influencia sobre los lenguajes funcionales, como Lisp, ML y Haskell.

Se puede considerar al cálculo lambda como el más pequeño lenguaje universal de programación. Consiste en una regla de transformación simple (sustitución de variables) y un esquema simple para definir funciones.

El cálculo lambda es universal porque cualquier función computable puede ser expresada y evaluada a través de él. Por lo tanto, es equivalente a las máquinas de Turing. Sin embargo, el cálculo lambda no hace énfasis en el uso de reglas de transformación y no considera las máquinas reales que pueden implementarlo. Se trata de una propuesta más cercana al software que al hardware.

Explicacion breve:

El cálculo lambda es un formalismo para representar funciones, cuyo poder expresivo es equivalente a la máquina de Turing universal.

El cálculo lambda trabaja con objetos llamados lambda-términos, que son cadenas de símbolos de una de las formas siguientes:

• v

• λv.E1

• (E1 E2)

donde v es un nombre de variable tomado de un conjunto infinito predefinido de nombres de variables, y E1 y E2 son lambda-términos. Los términos de la forma λv.E1 son llamadas abstracciones. La variable ν se llama el parámetro formal de la abstracción, y E1 es el cuerpo de la abstracción.

El término λv.E1 representa la función que, si es aplicada a un argumento, liga el parámetro formal v al argumento y entonces computa el valor resultante de E1--- esto es, retorna E1, con cada ocurrencia de ν sustituido por el argumento.

Los términos de la forma (E1 E2) son llamados aplicaciones. Las aplicaciones modelan la invocación o ejecución de una función: La función representada por E1 es invocada, con E2 como su argumento, y se computa el resultado. Si E1 (a veces llamado el aplicando) es una abstracción, el término puede ser reducido: E2, el argumento, se puede sustituir en el cuerpo de E1 en lugar del parámetro formal de E1, y el resultado es un nuevo término lambda que es equivalente al antiguo. Si un término lambda no contiene ningún subtérmino de la forma (λv.E1 E2) entonces no puede ser reducido, y se dice que está en forma normal.
Historia

Originalmente, Church había tratado de construir un sistema formal completo para modelizar la matemática; pero cuando este se volvió susceptible a la paradoja de Russell, separó del sistema al cálculo lambda y lo usó para estudiar la computabilidad, culminando en la respuesta negativa al problema de la parada.

Sintáxis

En el cálculo lambda, una expresión o término se define recursivamente a través de las siguientes reglas de formación:

1. Toda variable es un término: x, y, z, u, v, w, x1, x2, y9,...

2. Si t es un término y x es una variable, entonces (λx.t) es un término (llamado una abstracción lambda).

3. Si t y s son términos, entonces (ts) es un término (llamado una aplicación lambda).

4. Nada más es un término.

Según estas reglas de formación, las siguientes cadenas de caracteres son términos:

x

(xy)

(((xz)y)x)

(λx.x)

((λx.x)y)

(λz.(λx.y))

((x(λz.z))z)

Por convención se suelen omitir los paréntesis externos, ya que no cumplen ninguna función de desambiguación. Por ejemplo se escribe (λz.z)z en vez de ((λz.z)z), y se escribe x(y(zx)) en vez de (x(y(zx))). Además se suele adoptar la convención de que la aplicación de funciones es asociativa hacia la izquierda. Esto quiere decir, por ejemplo, que xyzz debe entenderse como (((xy)z)z), y que (λz.z)yzx debe entenderse como ((((λz.z)y)z)x).

Las primeras dos reglas generan funciones, mientras que la última describe la aplicación de una función a un argumento. Una abstracción lambda λx.t representa una función anónima que toma un único argumento, y se dice que el signo λ liga la variable x en el término t. En cambio, una aplicación lambda ts representa la aplicación de un argumento s a una función t. Por ejemplo, λx.x representa la función identidad x → x, y (λx.x)y representa la función identidad aplicada a y. Luego, λx.y representa la función constante x → y, que develve y sin importar qué argumento se le dé.

Las expresiones lambda no son muy interesantes por sí mismas. Lo que las hace interesantes son las muchas nociones de equivalencia y reducción que pueden ser definidas sobre ellas.

Variables libres y ligadas

Las apariciones (ocurrencias) de variables en una expresión son de tres tipos:

1. Ocurrencias de ligadura (binders)

2. Ocurrencias ligadas (bound occurrences)

3. Ocurrencias libres (free occurrences)

Las variables de ligadura son aquellas que están entre el λ y el punto. Por ejemplo, siendo E una expresión lambda:

(λ x y z. E) Los binders son x,y y z.

El binding de ocurrencias de una variable está definido recursivamente sobre la estructura de las expresiones lambda, de esta manera:

1. En expresiones de la forma V, donde V es una variable, V es una ocurrencia libre.

2. En expresiones de la forma λ V. E, las ocurrencias son libres en E salvo aquellas de V. En este caso las V en E se dicen ligadas por el λ antes V.

3. En expresiones de la forma (E E′), las ocurrencias libres son aquellas ocurrencias de E y E′.

Expresiones lambda tales como λ x. (x y) no definen funciones porque las ocurrencias de y están libres. Si la expresión no tiene variables libres, se dice que es cerrada.

Como se permite la repetición del identificador de variables, cada binding tiene una zona de alcance asociada (scope de ahora en adelante) Un ejemplo típico es: (λx.x(λx.x))x, donde el scope del binding más a la derecha afecta sólo a la x que tiene ahí, la situación del otro binding es análoga, pero no incluye el scope de la primera. Por último la x más a la derecha está libre. Por lo tanto, esa expresión puede reexpresarse así (λy.y(λz.z))x.

α-conversión

La regla de alfa-conversión fue pensada para expresar la idea siguiente: los nombres de las variables ligadas no son importantes. Por ejemplo λx.x y λy.y son la misma función. Sin embargo, esta regla no es tan simple como parece a primera vista. Hay algunas restricciones que hay que cumplir antes de cambiar el nombre de una variable por otra. Por ejemplo, si reemplazamos x por y en λx.λy.x, obtenemos λy.λy.y, que claramente, no es la misma función. Este fenómemo se conoce como captura de variables.

La regla de alfa-conversión establece que si V y W son variables, E es una expresión lambda, y

E[V := W]

representa la expresión E con todas las ocurrencias libres de V en E reemplazadas con W, entonces

λ V. E == λ W. E[V := W]

si W no está libre en E y W no está ligada a un λ donde se haya reemplazado a V. Esta regla nos dice, por ejemplo, que λ x. (λ x. x) x es equivalente a λ y. (λ x. x) y.

En un ejemplo de otro tipo, se ve que

for (int i = 0; i < max; i++) { proc (i); }

es equivalente a

for (int j = 0; j < max; j++) { proc (j); }

β-reducción

La regla de beta reducción expresa la idea de la aplicación funcional. Enuncia que

((λ V. E) E′) == E[V := E′]

si todas las ocurrencias de E′ están libres en E[V := E′].

Una expresión de la forma ((λ V. E) E′) es llamada un beta redex. Una lambda expresión que no admite ninguna beta reducción se dice que está en su forma normal. No toda expresión lambda tiene forma normal, pero si existe, es única. Más aún, existe un algoritmo para computar la formal normal: la reducción de orden normal. La ejecución de este algoritmo termina si y sólo si la expresión lambda tiene forma normal. El teorema de Church-Rosser nos dice que dos expresiones reducen a una misma si y sólo si son equivalentes (salvo por el nombre de sus variables ligadas)

η-conversión

Es la tercer regla, eta conversión, que podría ser añadida a las dos anteriores para formar una nueva relación de equivalencia. La eta conversión expresa la idea de extensionalidad, que en este contexto implica que dos funciones son la misma si y solo si dan el mismo resultado para cualquier argumento. La eta conversión convierte entre λ x. f x y f siempre que x no aparezca sola en f. Esto puede ser entendido como equivalente a la extensionalidad así:

Si f y g son extensionalmente equivalentes, es decir, si f a== g a para cualquier expresión lambda a entonces, en particular tomando a como una variable x que no aparece sola en f ni en g, tenemos que f x == g x y por tanto λ x. f x == λ x. g x, y así por eta conversión f == g. Entonces, si aceptamos la eta conversión como válida, resulta que la extensionalidad es válida.

Inversamente, si aceptamos la extensionalidad como válida entonces, dado que por beta reducción de todo y tenemos que (λ x. f x) y == f y, resulta que λ x. f x == f; es decir, descubrimos que la eta conversión es válida.

Bibliografias:

http://es.wikipedia.org/wiki/C%C3%A1lculo_lambda

http://enciclopedia.us.es/index.php/C%C3%A1lculo_lambda

Smalltalk

Materia: Lenguajes de Programacion.
Introduccion.



Smalltalk es un lenguaje de programacion que pernite realizar tareas de computacion mediante la interaccion con un entorno de objetos virtuales. Metaforicamente, se puede considerar que un smalltalk es un mundo virtual donde viven objetos que se comunican mediante el envio de mensajes.
Un sistema de Smalltalk esta compuesto por:

• Maquina virtual.

• Imagen virtual que contiene todos los objetos del sistema.

• Lenguaje de programacion ( tambien conocido como Smalltalk).

• Biblioteca de objetos reusables.

• Opcionalmente un entorno de desarrollo que funciona como un sistema en tiempo de ejecucion.

Historia del Smalltalk

Los origenes de Smalltalk se encuentran en las investigaciones realizadas por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox PARC), para la creacion de un sistema informatico orientado a la educacion. El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios proporcionando un entorno para la experimentacion, creacion e investigacion.

Smalltalk es considerado el primero de los lenguajes orientados a objetos (OOP), aunque en realidad el primero en implementar programacion orientada a objetos fue Simula. En Smalltalk todo es un objeto, incluidos los numeros reales o el propio entorno de Smalltalk.

Terminología

Un programa Smalltalk consiste únicamente de objetos, un concepto que se utiliza universalmente dentro de todo sistema Smalltalk. Prácticamente todo, desde un número natural como el 4 hasta un servidor web es considerado un objeto. Los objetos Smalltalk presentan características comunes

• Tienen una memoria propia.

• Poseen capacidad para comunicarse con otros objetos.

• Poseen la capacidad de heredar características de objetos ancestros.

• Tienen capacidad de procesamiento.

Los objetos se comunican entre sí mediante el envío de mensajes.. Asimismo, un objeto puede proveer muchas operaciones (actualmente esto está determinado por cada implementación)

Las definiciones de estas operaciones en los objetos son llamadas métodos. Un método especifica la reacción de un objeto cuando recibe un mensaje que es dirigido a ese método. La resolución (en el sentido de ligado) de un mensaje a un método es dinámica. La colección entera de métodos de un objeto es llamada protocolo de mensajes o interfaz de mensajes del objeto. Los mensajes pueden ser parametrizados, estos parámetros serán objetos, y el resultado o respuesta del mismo también será un objeto.

Las características comunes de objetos está capturado bajo la noción de clase, de tal forma que los objetos agrupados bajo una clase son llamados instancias de ella. Las instancias son creadas durante la ejecución de un programa con algún propósito y son barridos automáticamente en el momento que no son necesitados más por el recolector de basura. Exceptuando algunos objetos especiales como los muy simples, llamados literales (números, cadenas, etc), cada objeto tiene su propio estado local y representa una instancia diferente de su clase.
Como lenguaje tiene las siguientes caracteristicas:

• Orientacion a objetos pura.

• Tipado dinamico.

• Interraccion entre objetos mediante el envio de mensajes.

• Herencia simple y con raiz comun.

• Reflexion computacional completa.

• Recolleccion de basura.

• Compilacion en tiempo de ejecucion o interpretado (Dependieno de la distribucion o de el proveedor).

• Multiplies implementaciones.

La sintaxis de Smalltalk-80 tinde a ser minimilista. Esto significa que existe un grupo chico de palabras reservadas y declaraciones en comparacion con la mayoria de los lenguajes populares.Smalltalk posee un grupo de 5 palabras reservadas: self, nil, super, true y false.

Parte de la funcionalidad básica:
Todas las estructuras de datos Smalltalk se representó, como objetos, y un rico repertorio de estos se encuentra disponible en su biblioteca de clases.




Object es la raíz de la herencia de la jerarquía de Smalltalk, proporcionando una funcionalidad básica a todos los objetos. Class Collection es una de las muchas subclases de objetos de clase, sino que pueden ser más especializada en una amplia gama de estructuras de datos. Establece son sólo uno de ellos, con diccionarios como una subclase. Los diccionarios se utilizan para almacenar las asociaciones entre pares de objetos. El código siguiente muestra el uso de estas estructuras de datos en un ejemplo sencillo. En primer lugar se define el diccionario, la asociación de algunos viejos amigos con una selección de las virtudes. Los mensajes se envían a este objeto, lista y la búsqueda de claves.




Smalltalk se adhiere a una interpretación muy estricta de la orientación a objetos, e incluso las estructuras de control se implementan como patrones de mensaje. Selección de los caminos alternativos de ejecución es por tanto el apoyo a través de ifTrue: ifFalse,:, y ifFalse: ifTrue: mensajes. Loops se puede especificar con whileTrue: whileFalse,:, timesRepeat:, no: a: hacer:, recoger: oa través de la recursividad. Smalltalk utiliza la noción de bloques de aplazar la evaluación. Los bloques pueden tener argumentos, puede tener variables temporales, y se utilizan para encapsular código que pueden ser evaluados más adelante. Entre otras cosas que son comúnmente usados como argumentos para controlar las estructuras. Puesto que son los propios objetos, los bloques pueden ser obligados a identificadores. El mensaje de valor de las fuerzas de la ejecución de un bloque.



 
Bibliografias:

http://es.wikipedia.org/wiki/Smalltalk

http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/smalltalk1.html

Paradigmas de Programacion.

Materia: Lenguajes de Programacion.
Que significa paradigma?


Paradigma es un modelo o patrón en cualquier disciplina científica u otro contexto epistemológico. El concepto fue originalmente específico de la gramática; en 1900 el diccionario Merriam-Webster definía su uso solamente en tal contexto, o en retórica para referirse a una parábola o a una fábula. En lingüística, Ferdinand de Saussure ha usado paradigma para referirse a una clase de elementos con similitudes.

Introduccion.

Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo nucleo central es incuestionable en cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados. La resolución de estos problemas debe suponer consecuentemente un avance significativo en almenos un parámetro que afecte a la ingeniería de software. Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente.

A paradigma de programación es un estilo fundamental de programación de la computadora. (Compare con una metodología, que es un estilo de solucionar específico tecnología de dotación lógica problemas).
Ejemplo:

Probablemente el paradigma de programación que actualmente es el más usado a todos los niveles es la orientación a objeto. El núcleo central de este paradigma es la unión 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 diseño y la implementación de software. Esto provocó que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la orientación a objetos y características como el encapsulado, polimorfismo o la herencia se permitió un avance significativo en el desarrollo de software a cualquier escala de producción.

La orientación a objeto parece estar ligado en sus origenes con lenguajes como Lisp y Simula aunque el que acuño el título de programación orientada a objetos fué Smaltalk.

Tipos de paradigmas de programación más comunes

• Imperativo o por procedimientos: es considerado el más común y está representado, por ejemplo, por C o BASIC.

• Funcional: está representado por Scheme o Haskell. Este es un caso del paradigma declarativo.

• Lógico: está representado por Prolog. Este es otro caso del paradigma declarativo.

• Declarativo: por ejemplo la programación funcional, la programación lógica, o la combinación lógico-funcional.

• Orientado a objetos: está representado por Smalltalk, un lenguaje completamente orientado a objetos.

Si bien puede seleccionarse la forma pura de estos paradigmas al momento de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma.

Actualmente el paradigma de programación más usado es el de la programación orientada a objetos.

Breve Explicacion:

Un lenguaje de programación puede apoyar paradigmas múltiples. Por ejemplo programas escritos adentro C++ o PASCAL del objeto puede estar puramente procesal, o puramente orientado al objeto, o contenga los elementos de ambos paradigmas. Los diseñadores y los programadores del software deciden cómo utilizar esos elementos del paradigma.

En programación orientada al objeto, los programadores pueden pensar en un programa como colección de objetos que obran recíprocamente, mientras que adentro programación funcional un programa se puede pensar en como secuencia de las evaluaciones apátridas de la función. Cuando computadoras o sistemas de programación con muchos procesadores, programación proceso-orientada permite que los programadores piensen de usos como sistemas de procesos concurrentes que actúan sobre compartido lógicamente estructuras de datos.

Apenas como diversos grupos adentro tecnología de dotación lógica abogado diferente metodologías, diferente lenguajes de programación abogado diferente paradigmas de programación. Algunas idiomas se diseñan para apoyar un paradigma particular (Palique apoya la programación orientada al objeto, Haskell apoya la programación funcional), mientras que otros lenguajes de programación apoyan paradigmas múltiples (por ejemplo PASCAL del objeto, C++, C#, Básico visual, Lisp común, Esquema, Python, Rubí y Onza).

Muchos paradigmas de programación están como bien conocidos para qué técnicas ellos prohibido en cuanto a lo que él permite. Por ejemplo, la programación funcional pura rechaza el uso de efectos secundarios; programación estructurada rechaza el uso del goto declaración. En parte por esta razón, los nuevos paradigmas son mirados a menudo como doctrinaire o excesivamente rígido por ésos acostumbrados a estilos anteriores.[citación necesitada] Evitar ciertas técnicas puede hacerlo más fácil probar teoremas sobre un programa corrección-o entender simplemente su comportamiento.

Ejemplos

• Programación de Annotative (como adentro Lengua de la llamarada)

• programación Aspecto-orientada (como adentro AspectJ)

• Programación Atribuir-Orientada (como adentro Java 5 anotaciones, preprocesado por la clase de XDoclet; Cualidades de C#)

• Programación Autómata-Basada

• Programación Bayesian

• programación Clase-basada, comparado a programación Prototipo-basada (dentro del contexto de la programación orientada al objeto)

• programación Componente-orientada (como adentro OLE)

• Programación de Concatenative

• Programación de constreñimiento, comparado a programación de la lógica

• programación Contexto-orientada (como adentro ContextJ/contextos/ContextL)

• Programación orientada de la cibernética

• Programación del flujo de datos (como adentro hojas de balance)

• Programación declarativa

• Programación conducida acontecimiento

• programación Fluir-basada

• programación del Función-nivel

• Programación funcional

• programación Meta-dirigida como adentro Snobol, algo similar a Programación de la lógica

• Programación imprescindible, comparado a programación declarativa

• Programación intencional

• Programación que sabe leer y escribir

• Programación de la lógica (como adentro Prólogo) y Programación de la lógica de Abductive

• Mensaje que pasa la programación, comparado a la programación imprescindible

• Programación no determinista

• Programación orientada al objeto (como adentro Palique)

• Programación de la tubería (como en Línea de comando del UNIX)

• programación Política-basada

• Programación procesal, comparado a programación funcional

• programación Proceso-orientada un modelo de la programación paralela.

• Programación reactiva

• Programación recurrente, comparado a programación iterativa

• Programación reflexiva

• Programación escalar, comparado a Programación del arsenal

• Programación estructurada, comparado a programación no estructurada

• programación Tema-orientada

• Programación del árbol

• programación del Valor-nivel, comparado a programación del función-nivel

• Metaprogramming

Bibliografias:

http://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3n

http://www.worldlingo.com/ma/enwiki/es/Programming_paradigm

lunes, 22 de noviembre de 2010

R

Materia: Lenguajes de Programacion.

R es un lenguaje y entorno de programación para análisis estadístico y gráfico.
Se trata de un proyecto de software libre, resultado de la implementación GNU del premiado lenguaje S. R y S-Plus -versión comercial de S- son, probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística, siendo además muy populares en el campo de la investigación biomédica, la bioinformática y las matemáticas financieras. A esto contribuye la posibilidad de cargar diferentes bibliotecas o paquetes con finalidades específicas de cálculo o gráfico.
R se distribuye bajo la licencia GNU GPL y está disponible para los sistemas operativos Windows, Macintosh, Unix y GNU/Linux.

Historia
Fue desarrollado inicialmente por Robert Gentleman y Ross Ihaka del Departamento de Estadística de la Universidad de Auckland en 1993.[
] Su desarrollo actual es responsabilidad del R Development Core Team.

Caracteristicas
R proporciona un amplio abanico de herramientas estadísticas (modelos lineales y no lineales, tests estadísticos, análisis de series temporales, algoritmos de clasificación y agrupamiento, etc.) y gráficas.
Al igual que S, se trata de un lenguaje de programación, lo que permite que los usuarios lo extiendan definiendo sus propias funciones. De hecho, gran parte de las funciones de R están escritas en el mismo R, aunque para algoritmos computacionalmente exigentes es posible desarrollar bibliotecas en C, C++ o Fortran que se cargan dinámicamente. Los usuarios más avanzados pueden también manipular los objetos de R directamente desde código desarrollado en C. R también puede extenderse a través de paquetes desarrollados por su comunidad de usuarios.

R hereda de S su orientación a objetos. La tarea de extender R se ve facilitada por su permisiva política de lexical scoping. Además, R puede integrarse con distintas bases de datos y existen bibliotecas que facilitan su utilización desde lenguajes de programación interpretados como Perl y Python.
Otra de las características de R es su capacidad gráfica, que permite generar gráficos con alta calidad. R posee su propio formato para la documentación basado en LaTeX.
R también puede usarse como herramienta de cálculo numérico, campo en el que puede ser tan eficaz como otras herramientas específicas tales como GNU Octave y su versión comercial, MATLAB.[] Se ha desarrollado una interfaz, RWeka[] para interactuar con Weka que permite leer y escribir ficheros en el formato arff y enriquecer R con los algoritmos de minería de datos de dicha plataforma.

ejemplos:
Aqui hay un programa en r donde declaro unos numeros y de eso saco la media y la varianza.

Ademas de sacar una grafica que r te saca con una condicion. 

Programa en C "Matriz"

Aqui les dejo un programa que realiza una matriz:

Este es el codigo fuente:

#include



/*Obed David Guevara Ibarra 1447478 Hora:V5


Matriz N*M que suma la diagonal superior*/


main(){


int N, M;






do{


printf("Proporcina el numero de Filas: ");


scanf("%d", &N);


printf("Proporcina el numero de Columnas: ");


scanf("%d", &M);


}while(N!=M);






int A[N][M], i, j, s;


for(i=0;i<=N-1;i++){


for(j=0;j<=M-1;j++){


printf("A[%d][%d]= ", i+1, j+1);


scanf("%d", &A[i][j]);


}//Fin de for


}






s = 0;


for(i=0;i<=N-1;i++){


for(j=0;j<=M-1;j++){


if(i==j) s = s + A[i][j];


}


}


for(i=0;i<=N-1;i++){


for(j=0;j<=M-1;j++){


printf("%d ", A[i][j]);


}


printf("\n");


}


printf("La suma de la diagonal es: %d", s);


getch();


}

 Aqui les dejo el programa corriendo en Windows y Ubuntu
 
Windows:
 

Aqui esta el programa corriendo en Ubuntu:

Saludos.

Proma en C "Suma de Vectores"

Aqui les dejo el programa corriendo en Ubuntu y Windows:

Ubuntu
Codigo fuente:
Programa corriendo:


Windows:

Codigo fuente:

 Programa corriendo:


Saludos.

Programa en C

Aqui les dejo un progama en C que lee vectores:


Este programa corre en Ubuntu:

Aqui esta el codigo fuente del programa


 Pantala del programa corriendo


Estos son en Windows:

 Aqui les dejo el codigo fuente y el programa corriendo