Indice:
- Programación Funcional
- Funcional Recursional
- Programación Orientada a Objetos
- Programación Dirigida Por Eventos
Indice:
Programacion Funcional
En ciencias de la computación, la programación
funcional es un paradigma de programación declarativa basado en el uso de funciones
matemáticas, en contraste con la programación imperativa, que enfatiza los cambios de estado mediante la mutación
de variables. La programación funcional tiene sus raíces en el cálculo lambda, un sistema formal desarrollado en los años 1930 para
investigar la definición de función, la aplicación de las funciones y la
recursión. Muchos lenguajes de programación funcionales pueden ser vistos como
elaboraciones del cálculo lambda.
En la práctica, la diferencia entre una función matemática y la
noción de una "función" utilizada en la programación imperativa, es
que las funciones imperativas pueden tener efectos secundarios, como cambiar el
valor de cálculos realizados previamente. Por esta razón carecen de
transparencia referencial, es decir, la misma expresión sintáctica puede
resultar en valores diferentes en varios momentos de la ejecución del programa.
Con código funcional, en contraste, el valor generado por una función depende
exclusivamente de los argumentos alimentados a la función. Al eliminar los
efectos secundarios se puede entender y predecir el comportamiento de un
programa mucho más fácilmente. Ésta es una de las principales motivaciones para
utilizar la programación funcional.
Los lenguajes de programación funcional, especialmente los
puramente funcionales, han sido enfatizados en el ambiente académico y no tanto
en el desarrollo comercial o industrial. Sin embargo, lenguajes de programación
funcional como Scheme, Erlang, Rust, Objective Caml , Scala, F# y Haskell,
han sido utilizados en aplicaciones comerciales e industriales por muchas
organizaciones. La programación funcional también es utilizada en la industria
a través de lenguajes de dominio específico como R (estadística), Mathematica
(matemáticas simbólicas), J y K (análisis financiero).
Los lenguajes de uso específico usados comúnmente como SQL y
Lex/Yacc, utilizan algunos elementos de programación funcional, especialmente
al procesar valores mutables. Las hojas de cálculo también pueden ser
consideradas lenguajes de programación funcional.
La programación funcional también puede ser desarrollada en
lenguajes que no están diseñados específicamente para la programación
funcional. En el caso de Perl, por
ejemplo, que es un lenguaje de programación imperativo, existe un libro que
describe cómo aplicar conceptos de programación funcional. JavaScript, uno de los lenguajes más ampliamente utilizados en la
actualidad, también incorpora capacidades de programación funcional. Python también incorpora particularidades de
los lenguajes funcionales como listas de comprensión y funciones de tratamiento
de listas como matemática de conjuntos. Java en su versión 8, está incorporando
la programación funcional, así como el uso de las expresiones lambda.
Los programas escritos en un lenguaje funcional están
constituidos únicamente por definiciones de funciones, entendiendo éstas no
como subprogramas clásicos de un lenguaje imperativo, sino como funciones
puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del
significado de sus subexpresiones), y por tanto, la carencia total de efectos colaterales.
Otras características propias de estos lenguajes son la no
existencia de asignaciones de variables y la falta de construcciones
estructuradas como la secuencia o la iteración (lo que obliga en la práctica a
que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones
recursivas).
Existen dos grandes categorías de lenguajes funcionales: los
funcionales puros y los híbridos. La diferencia entre
ambos estriba en que los lenguajes funcionales híbridos son menos dogmáticos
que los puros, al admitir conceptos tomados de los lenguajes
imperativos, como las secuencias de instrucciones o
la asignación de variables. En contraste, los lenguajes funcionales puros tienen
una mayor potencia expresiva, conservando a la vez su transparencia
referencial, algo que no se cumple siempre con un lenguaje funcional híbrido.
En F#, los valores son
cantidades que tienen un tipo específico; los valores pueden ser números
enteros o de punto flotante, caracteres o texto, listas, secuencias, matrices,
tuplas, uniones discriminadas, registros, tipos de clase o valores de función. La inferencia de tipos de un valor
se realiza a partir de la definición. Para un tipo primitivo, como un número entero o de punto
flotante, el tipo se determina a partir del tipo de literal. Por consiguiente,
en el ejemplo anterior, la inferencia de tipos realizada por el compilador da
como resultado que el tipo de b es unsigned int, y que el tipo de a es int. El tipo de un valor de función viene
determinado a partir del valor devuelto en el cuerpo de la función. Para obtener más
información sobre los tipos de valor de las funciones, vea Funciones (F#). Para obtener más información sobre tipos de literales,
vea Literales
(F#).
En F#, los valores son cantidades que tienen un tipo específico; los valores pueden ser números enteros o de punto flotante, caracteres o texto, listas, secuencias, matrices, tuplas, uniones discriminadas, registros, tipos de clase o valores de función. La inferencia de tipos de un valor se realiza a partir de la definición. Para un tipo primitivo, como un número entero o de punto flotante, el tipo se determina a partir del tipo de literal. Por consiguiente, en el ejemplo anterior, la inferencia de tipos realizada por el compilador da como resultado que el tipo de b es unsigned int, y que el tipo de a es int. El tipo de un valor de función viene determinado a partir del valor devuelto en el cuerpo de la función. Para obtener más información sobre los tipos de valor de las funciones, vea Funciones (F#). Para obtener más información sobre tipos de literales, vea Literales (F#).
Funcional Recursional
Sistema de tipos:
En ciencias de la computación, un sistema de tipos define como un lenguaje de programación clasifica los valores y las expresiones en tipos, cómo se pueden manipular estos tipos y cómo interactúan. Un tipo de dato indica un conjunto de valores que tienen el mismo significado genérico o propósito (aunque algunos tipos, como los tipos de datos abstractos y tipos de datos función tal vez no representen valores en el programa que se está ejecutando). Los sistemas de tipificación varían significativamente entre lenguajes, siendo quizás las más importantes variaciones las que estén en sus propias implementaciones de la sintáctica en tiempo de compilación y la operativa en tiempo de ejecución.
Un compilador puede usar el tipo estático de un valor para optimizar el almacenamiento que necesita y la elección de los algoritmos para las operaciones sobre ese valor. Por ejemplo, en muchos compiladores de C el tipo de dato "flotante" se representa en 32 bits, de acuerdo con la especificación IEEE para los números de coma flotante de simple precisión. Entonces, C usa operaciones específicas de coma flotante sobre estos valores (suma de coma flotante, multiplicación, etc.).
El rango del tipo de dato limita y la forma de su evaluación afecta en el "tipado" del lenguaje. Además, un lenguaje de programación puede asociar una operación concreta con diferentes algoritmos para cada tipo de dato en el caso del polimorfismo. En matemáticas y lógica, la teoría de tipos es el estudio de los sistemas de tipificación, aunque los sistemas de tipos de datos concretos de los lenguajes de programación se originaron a partir de los problemas técnicos de las arquitecturas del ordenador, implementación del compilador y diseño del lenguaje.
Técnicas de programación recursiva:
La recursividad es una técnica de diseño de algoritmos que se base en solucionar versiones más pequeñas de un problema, para obtener la solución general del mismo.
• Permiten realizar un número (posiblemente infinito) de cálculos sin especificar el número de repeticiones de forma explícita.
• Algoritmos recursivos:
-- Recursión directa
-- Recursión indirecta
Pueden conseguirse versiones iterativas de soluciones recursivas, como por ejemplo: búsqueda binaria
Vamos a ver en el tema siguiente técnicas de diseño de programas que utilizan recursión:
-- Divide y vencerás,
-- Retroceso o backtracking
Modelos de evaluación:
Evaluación es el proceso sistemático de recolección y análisis de datos con la finalidad de determinar si es que, y hasta qué punto, unos objetivos han sido o están siendo logrados. La información resultante se pone al servicio de la toma de decisiones.
Clases de tipos:
El sistema de tipos de Haskell posee una característica que lo distingue de otros lenguajes de programación. El tipo de polimorfismo del que hemos tratado hasta ahora es denominado polimorfismo paramétrico. Existe otro tipo de polimorfismo llamado ad hoc o sobrecarga. Estos son algunos ejemplos de polimorfismo ad hoc. Ves una descripción informal de alto nivel de un algoritmo informático de programación, compacto e informal, que utiliza las convenciones estructurales de un lenguaje de programación verdadero , pero que está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con independencia de cualquier otro lenguaje de programación.
Aplicaciones en rutinas de pseudocódigos:
Los objetos en C++ son abstraídos mediante una clase. Según el paradigma de la programación orientada a objetos un objeto consta de:
Identidad, que lo diferencia de otros objetos (Nombre que llevara la clase a la que pertenece dicho objeto).
--Métodos o funciones miembro
--Atributos o variables miembro
Un ejemplo de clase que podemos tomar es la clase perro. Cada perro comparte unas características (atributos). Su número de patas, el color de su pelaje o su tamaño son algunos de sus atributos. Las funciones que lo hagan ladrar, cambiar su comportamiento... esas son las funciones de la clase.
Este es otro ejemplo de una clase:
class Punto{//por omisión los miembros son 'prívate' para que sólo se puedan modificar desde la propia clase.Prívate:// Variable miembro privadaint id;protected:// Variables miembro protegidasint x;int y;public:// ConstructorPunto();// Destructor~Punto();// Funciones miembro o métodosint ObtenerX();int ObtenerY();};
Programación Orientada a Objetos
La programación orientada a objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.
Muchos de los objetos pre-diseñados de los lenguaje de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas.
Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.
Tipos de lenguaje:
Java: Es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recopilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.
C++: Es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objeto. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Visual basic: Hace referencia al método utilizado para crear lo que ve el usuario, la interfaz gráfica de usuario o GUI. "Basic" hace referencia al lenguaje de programación BASIC, de Beginners All-Purpose Symbolic Instruction Code (Código de Instrucción Simbólico Todo Propósito para Principiantes), un lenguaje utilizado por más programadores que cualquier otro lenguaje en la historia de la informática. Puede crear programas útiles sólo con aprender algunas de sus características. Los vínculos siguientes le servirán para empezar a programar en Visual Basic; cada vínculo incluye ejemplos, así como acceso a información adicional.
Elementos de la POO:
-. Objetos: contienen toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos).
A su vez, dispone de mecanismos de interacción (los llamados métodos) que favorecen la comunicación entre objetos (de una misma clase o de distintas), y en consecuencia, el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separan (ni deben separarse) información (datos) y procesamiento (métodos).
-. Atributos: Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables.
Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto.
Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles.
-.Mensajes: Corresponde a la forma que tienen los objetos para comunicarse entre sí, de esta forma, el objeto que activa el mensaje se llama objeto emisor y el que lo recibe objeto receptor. Cabe señalar que un mensaje debe ser activado o generado desde un método hacia un objeto. En términos generales equivale a la llamada a un procedimiento o función.
Forma general de un mensaje:
receptor_mensaje.selector_mensaje [(parámetros)]p/e ventana_editor.maximizar; documento1.imprimir(2);
-. Clases: son declaraciones o abstracciones de objetos, lo que significa, que una clase es la definición de un objeto. Cuando se programa un objeto y se definen sus características y funcionalidades, realmente se programa una clase.
Para crear una clase se utiliza la palabra reservada class y a continuación el nombre de la clase. La definición de la clase se pone entre las llaves de apertura y cierre. El nombre de la clase empieza por letra mayúscula.
class Rectangulo{ //miembros dato //funciones miembro }
-.Instanciación: una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece. Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa.
Características del POO:
-. Abstracción: Mediante la abstracción la mente humana modeliza la realidad en forma de objetos. Para ello busca parecidos entre la realidad y la posible implementación de objetos del programa que simulen el funcionamiento de los objetos reales.
-. Encapsulamiento: Uno de los objetivos primordiales de la P.O.O., es la creación de objetos que funcionen como entidades complejas, es decir autosuficientes, una de las reglas del encapsulamiento es que el programador nunca necesita acceder directamente a los datos de un objeto, en vez de esto se deben definir métodos dentro del objeto que gobiernen toda la manipulación de datos. El encapsulamiento está referido, también, a los métodos de cada objeto en el sentido que su código interno debe ser transparente a la hora de activarse.
-.Polimorfismo: Se refiere a la capacidad que tiene el objeto para hacer lo adecuado después de haber recibido un mensaje, independientemente de quién lo haya enviado. Hay que tener en cuenta que el polimorfismo se mueve a través de la herencia, dicho de otra forma trata de hacer posible enviar mensajes genéricos a objetos y que éstos realicen lo estipulado de acuerdo a su codificación interna, es decir, la acción varía en relación al receptor del mensaje.
Ejemplo: Se desea enviar un mensaje a dos objetos distintos (Triángulo y Rectángulo) los cuales podrían ser descendientes de la clase polígono, sin embargo cuando el triángulo reciba la orden área, la ejecución de este método se obtendrá a partir de (b*h)/2 en cambio si se activa el mismo método para el rectángulo el valor se calculará a partir de ð *r2 , aún cuando ambos objetos recibieron la misma orden.
-. Herencia: En términos simples la herencia en la P.O.O. es la capacidad que tiene los objetos para heredar todas o algunas de sus características (datos) y comportamiento (procedimientos) a sus descendientes o herederos, permitiendo así la reutilización de código lo que en la práctica se traduce en una herramienta muy potente de programación.
Esta herencia puede ser a nivel de estado (características) o protocolo (métodos y procedimientos) o ambas. La herencia en la P.O.O tiene sus raíces en el concepto de registros anidados.
Ejemplo:Typeedades: 0..150;InfPersona = RECORDApellido: integer;Nombre: integer;Edad: edades;end;grados: 0..12;InfEstudiante= RECORDpersona: InfPersona;grado: Grados;Profesor: string (30);end;
El registro Inf Persona contiene campos que se utilizan para describir a cualquier persona. El segundo registro Inf Estudiante, incluye el campo Persona, que contiene los campos del registro Inf Persona. En la P.O.O., se utiliza el mismo concepto para construir incrementalmente objetos que son capaces de heredar algunas o todas las características de sus ascendientes (objetos padres).
Programación Dirigida por Eventos
La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución 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 programación dirigida por eventos, podemos oponerla a lo que no es: mientras en la programación secuencial (o estructurada) es el programador el que define cuál va a ser el flujo del programa, en la programación 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 programación secuencial puede haber intervención de un agente externo al programa, estas intervenciones ocurrirán cuando el programador lo haya determinado, y no en cualquier momento como puede ser en el caso de la programación dirigida por eventos.
El creador de un programa dirigido por eventos debe definir los eventos que manejarán su programa y las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como el administrador de evento. Los eventos soportados estarán determinados por el lenguaje de programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo programador. En la programación dirigida por eventos, al comenzar la ejecución del programa se llevarán a cabo las inicializaciones y demás código inicial y a continuación el programa quedará bloqueado hasta que se produzca algún evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa pasará a ejecutar el código del correspondiente administrador de evento. Por ejemplo, si el evento consiste en que el usuario ha hecho clic en el botón de Play de un reproductor de películas, se ejecutará el código del administrador de evento, que será el que haga que la película se muestre por pantalla. Un ejemplo claro lo tenemos en los sistemas de programación Léxico y Visual Basic, en los que a cada elemento del programa (objetos, controles, etcétera) se le asignan una serie de eventos que generará dicho elemento, como la pulsación de un botón del ratón sobre él o el redibujado del control. La programación dirigida por eventos es la base de lo que llamamos interfaz de usuario, aunque puede emplearse también para desarrollar interfaces entre componentes de Software o módulos del núcleo. En los primeros tiempos de la computación, los programas eran secuenciales, también llamados Batch.
Un programa secuencial arranca, lee parámetros de entrada, procesa estos parámetros, y produce un resultado, todo de manera lineal y sin intervención del usuario mientras se ejecuta. Con la aparición y popularización de los PC, el software empezó a ser demandado para usos alejados de los clásicos académicos y empresariales para los cuales era necesitado hasta entonces, y quedó patente que el paradigma clásico de programación no podía responder a las nuevas necesidades de interacción con el usuario que surgieron a raíz de este hecho.
Lenguajes:
Visual Basic: Los compiladores de Visual Basic generan código que requiere una o más librerías de enlace dinámico para que funcione, conocidas comúnmente como DLL (sigla en inglés de Dynamic-Link Library); en algunos casos reside en el archivo llamado MSVBVMxy.DLL (siglas de "MicroSoft Visual Basic Virtual Machine x.y", donde x.y es la versión) y en otros en VBRUNXXX.DLL ("Visual Basic Runtime X.XX"). Estas bibliotecas DLL proveen las funciones básicas implementadas en el lenguaje, conteniendo rutinas en código ejecutable que son cargadas bajo demanda en tiempo de ejecución. Además de las esenciales, existe un gran número de bibliotecas del tipo DLL con variedad de funciones, tales como las que facilitan el acceso a la mayoría de las funciones del sistema operativo o las que proveen medios para la integración con otras aplicaciones.
Dentro del mismo Entorno de desarrollo integrado (IDE) de Visual Basic se puede ejecutar el programa que esté desarrollándose, es decir en modo intérprete (en realidad pseudo-compila el programa muy rápidamente y luego lo ejecuta, simulando la función de un intérprete puro). Desde ese entorno también se puede generar el archivo en código ejecutable (exe); ese programa así generado en disco puede luego ser ejecutado sin requerir del ambiente de programación (incluso en modo stand alone), aunque sí será necesario que las librerías DLL requeridas por la aplicación desarrollada se encuentren también instaladas en el sistema para posibilitar su ejecución.
JavaScript: (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas aunque existe una forma de JavaScript del lado del servidor(Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo.
VisualC++: Visual C++ engloba el desarrollo de aplicaciones hechas en C, C++ y C++/CLI en el entorno Windows. Visual C++ incluye además las bibliotecas de Windows (WinApi), las bibliotecas MFC y el entorno de desarrollo para .NET Framework. Visual C++ cuenta con su propio compilador (de igual nombre) y otras herramientas como IntelliSense, TeamFoundation Server, Debug,. Además provee de bibliotecas propias de cada versión del sistema operativo y sockets. Como otros compiladores, se le pueden añadir nuevas bibliotecas como DirectX, wxWidgets o SDL. El lenguaje de programación utilizado por esta herramienta, de igual nombre, está basado en C++ y es compatible en la mayor parte de su código con este lenguaje, a la vez que su sintaxis es exactamente igual. En algunas ocasiones esta incompatibilidad impide que otros compiladores, sobre todo en otros sistemas operativos, funcionen bien con código desarrollado en este lenguaje.
Visual.Net: La sintaxis básica es prácticamente la misma entre VB y VB.NET, con la excepción de los añadidos para soportar nuevas características como el control estructurado de excepciones, la programación orientada a objetos, o los Genéricos. Las diferencias entre VB y VB.NET son profundas, sobre todo en cuanto a metodología de programación y bibliotecas, pero ambos lenguajes siguen manteniendo un gran parecido, cosa que facilita notablemente el paso de VB a VB.NET.
Visual C#: es un "lenguaje de programación" orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.
El nombre C Sharp fue inspirado por la notación musical, donde '#' (sostenido, en inglés sharp) indica que la nota (C es la nota do en inglés) es un semitono más alta, sugiriendo que C# es superior a C/C++. Además, el signo '#' se compone de cuatro signos '+' pegados. Aunque C# forma parte de la plataforma .NET, ésta es una API, mientras que C# es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma.
Visual J#: se puede utilizar para desarrollar aplicaciones, bibliotecas de clases y servicios web para .NET, y al igual que otros lenguajes .NET apunta el CLR .NET y utiliza la clase base bibliotecas. A su vez, J # incluye características de otros lenguajes de primera clase, tales como la integración de lenguajes cruz, seguridad, control de versiones y el despliegue, y la depuración y soporte de perfil. La documentación J # señala que incluso si usted no tiene Visual J # .NET instalado en su máquina todavía se puede depurar sus aplicaciones.
Asp.Net: Es usado por programadores y diseñadores para construir sitios web dinámicos, aplicaciones web y servicios webXML. Apareció en enero de 2002 con la versión 1.0 del .NET Framework, y es la tecnología sucesora de la tecnología Active Server Pages (ASP). ASP.NET está construido sobre el Common Language Runtime, permitiendo a los programadores escribir código ASP.NET usando cualquier lenguaje admitido por el .NET Framework.
Programación dirigida por eventos y control
La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen. Es decir, que el programa (ejecución) se va a controlar según el programador indique y no automáticamente como en la programación estructurada.En la programación dirigida por eventos, al comenzar la ejecución del programa se llevarán a cabo las inicializaciones y demás código inicial y a continuación el programa quedará bloqueado hasta que se produzca algún evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa pasará a ejecutar el código del correspondiente administrador de evento. Por ejemplo, si el evento consiste en que el usuario ha hecho click en el botón de play de un reproductor de películas, se ejecutará el código del administrador de evento, que será el que haga que la película se muestre por pantalla.En otros palabras el programa queda en espera hasta que el usuario realice una acción (evento) para que se active de nuevo el programa realizando la acción pre-programada por el programador.
Programa multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de (Sistema Operativo), normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.
basada en procesos: es la característica que le permite a la computadora ejecutar dos o más programas concurrentemente. En la multitarea basada en proceso, un programa es la unidad mas pequeña de código que puede ser despachada por el sistemaEste tipo de multitarea es de tipo cooperativo:En el caso de las multitareas de tipo cooperativo, los procesos que corren en el espacio de usuario van cediendo el procesador al sistema operativo en intervalos regulares, siendo un esquema complicado y un tanto arcaico porque si uno de los procesos quedaría congelado sin ceder el procesador al sistema, todo el sistema operativo quedaría congelado también. Encontraremos ejemplos de multitareas cooperativas en los sistemas Microsoft Windows desde su inicio hasta la versión 95.Por ejemplo permite navegar en Internet y desarrollar una aplicación java a la vez.la multitarea basada en procesos es la característica que tiene una computadora para poder ejecutar dos o mas programas al mismo tiempo,es una característica muy antigua dentro de los sistemas de computadoras ya que se usan desde los inicios de windows,los procesos son unidades de código pequeñas que aunque son pequeñas ocupan su propio espacio para ser ejecutadas y de no ser así pueden causar problemas en el equipo.
Programa concurrente: Un programa concurrente es un programa que tiene mas de una linea lógica de ejecución, es decir, es un programa que parece que varias partes del mismo se ejecutan simultáneamente. Un ejemplo de de esto es un programa que realice determinada función y, simultáneamente exponga datos en la pantalla. Un programa concurrente puede correr en varios procesadores simultáneamente no. Esta importancia de la concurrencia es especialmente destacable en sistemas operativos como Linux, que ademas de concurrentes, presentan unos mecanismos de concurrencia estables.
Evento secuencial: En los primeros tiempos de los ordenadores los programas eran de tipo secuencial (también llamados tipo batch) Un programa secuencial es un programa que se arranca, lee los datos que necesita, realiza los cálculos e imprime o guarda en el disco los resultados. De ordinario, mientras un programa secuencial está ejecutándose no necesita ninguna intervención del usuario. A este tipo de programas se les llama también programas basados u orientados a procedimientos o a algoritmos (procedural lenguajes) lo que debe hacer por medio de menús. Los eventos secuenciales son una forma de programación también conocida como programación dirigida por eventos, esto es un paradigma de programación el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen.
Elaborado por:
- Jorge Nares
- Juan Fuentes
- Andy Galindo
- Isabel Alvarez
- Johana Martinez

No hay comentarios.:
Publicar un comentario