martes, 1 de noviembre de 2011

15. CLASIFICACION DE LOS LENGUAJES DE PROGRAMCION SEGÙN:

a) bajo, intermedio, y alto nivel.
b) Imperativos, declarativos, orientados a objetos naturales.

a)
Los lenguajes de programación se clasifican por su nivel de abstracción del procesador, en este caso la abstracción es un principio por el cual se aísla toda aquella información que no es resulta relevante a un determinado nivel de conocimiento.

·         Lenguaje de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina.

En general se utiliza este tipo de lenguaje para programar controladores (drivers).

Ventajas

Mayor adaptación al equipo.

Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.

Inconvenientes

Imposibilidad de escribir código independiente de la máquina.

Mayor dificultad en la programación y en la comprensión de los programas.

El programador debe conocer más de un centenar de instrucciones.

Es necesario conocer en detalle la arquitectura de la máquina.

Características

Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle.

Está orientado a la máquina.

·         Lenguaje de medio nivel es un lenguaje de programación informática como el lenguaje C, que se encuentran entre los lenguajes de alto nivel y los lenguajes de bajo nivel.

Suelen ser clasificados muchas veces de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten un manejo abstracto (independiente de la máquina, a diferencia del ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.

Una característica distintiva, por ejemplo, que convierte a C en un lenguaje de medio nivel y al Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si fueran números (en Pascal no), y por el contrario en Pascal es posible concatenar las cadenas de caracteres con el operador suma y copiarlas con la asignación (en C es el usuario el responsable de llamar a las funciones correspondientes).

Una de las características más peculiares del lenguaje de programación C; es el uso de "apuntadores", los cuales son muy útiles en la implementación de algoritmos como Listas ligadas, Tablas Hash y algoritmos de búsqueda y ordenamiento que para otros lenguajes de programación (como Java por ejemplo) les suele ser un poco más complicado implementar

·         Los lenguajes de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas.

En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedimentales.

Otra limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas.

Los lenguajes de muy alto nivel se crearon para que el usuario común pudiese solucionar tal problema de procesamiento de datos de una manera más fácil y rápida.

b)
LENGUAJES DE PROGRAMACIÓN DECLARATIVOS

Se les conoce como lenguajes declarativos en ciencias computacionales a aquellos lenguajes de programación en los cuales se le indica a la computadora qué es lo que se desea obtener o qué es lo que se esta buscando, por ejemplo: Obtener los nombres de todos los empleados que tengan más de 32 años. Eso se puede lograr con un lenguaje declarativo como SQL.

La programación declarativa es una forma de programación que implica la descripción de un problema dado en lugar de proveer una solución para dicho problema, dejando la interpretación de los pasos específicos para llegar a dicha solución a un intérprete no especificado. La programación declarativa adopta, por lo tanto, un enfoque diferente al de la programación imperativa tradicional.

En otras palabras, la programación declarativa provee el “qué”, pero deja el “cómo” liberado a la implementación particular del intérprete. Por lo tanto se puede ver que la programación declarativa tiene dos fases bien diferenciadas, la declaración y la interpretación.

Es importante señalar que a pesar de hacer referencia a intérprete, no hay que limitarse a “lenguajes interpretados” en el sentido habitual del término, sino que también se puede estar trabajando con “lenguajes compilados”.

Algunos lenguajes declarativos que se pueden mencionar son:

· PROLOG
· SQL
· HTML
· WSDL (Web Services Description Language)
· XML Stylesheet Language for Transformation

LENGUAJE DE PROGRAMACION ORIENTADO A OBJETOS

Está basado en la idea de encapsular estado y operaciones en objetos. En general, la programación se resuelve comunicando dichos objetos a través de mensajes (programación orientada a mensajes). Se puede incluir -aunque no formalmente- dentro de este paradigma, el paradigma basado en objetos, que además posee herencia y subtipos entre objetos. Ej.: Simula, Smalltalk, C++, Java, Visual Basic .NET, etc.
Su principal ventaja es la reutilización de códigos y su facilidad para pensar soluciones a determinados problemas.

LENGUAJE DE PROGRAMACION NATURALES

Son los nuevos lenguajes que pretenden aproximar el diseño y la construccion de programas al lenguaje de las personas.

LENGUAJE DE PROGRAMACION IMPERATIVOS

En ciencias de la computación se llama lenguajes imperativos a aquellos en los cuales se le ordena a la computadora cómo realizar una tarea siguiendo una serie de pasos o instrucciones, por ejemplo:
  Paso 1, solicitar número.
  Paso 2, multiplicar número por dos.
  Paso 3, imprimir resultado de la operación.
  Paso 4, etc,
Algunos ejemplos de lenguajes imperativos son: BASIC, C, C++, Java, Clipper, Dbase, C# y Perl.

14. CICLO DE VIDA DE UN SOFTWARE

El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados.

Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados.

El ciclo de vida básico de un software consta de los siguientes procedimientos:

·                     Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
·                     Diseño general: requisitos generales de la arquitectura de la aplicación.
·                     Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
·                     Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
·                     Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
·                     Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.
·                     Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.Implementación
·                     Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores.

13. QUE ES UN LENGUAJE DE PROGRAMACION

Un conjunto de sintaxis y reglas semánticas que definen  los programas del computador. Es una técnica estándar de comunicación para entregarle instrucciones al computador. Un lenguaje le da la capacidad al programador de especificarle al computador, qué tipo de datos actúan y que acciones tomar bajo una variada gama de circunstancias, utilizando un lenguaje relativamente próximo al lenguaje humano.
Un programa escrito en un lenguaje de programación necesita pasar por un proceso de compilación, interpretación o intermedio, es decir, ser traducido al lenguaje de máquina para que pueda ser ejecutado por el ordenador.

12. ESTRUCTURA DE CONTROL DE PROGRAMACION

A . secuenciales
 Diferencia de los sistemas combinacionales, en los sistemas secuenciales, los valores de las salidas, en un momento dado, no dependen exclusivamente de los valores de las entradas en dicho momento, sino también dependen del estado anterior o estado interno. El sistema secuencial más simple es el vistéale, de los cuales, el de tipo D (o cerrojo) es el más utilizado actualmente.
La mayoría de los sistemas secuenciales están gobernados por señales de reloj. A éstos se los denomina "síncronos" o "sincrónicos", a diferencia de los "asíncronos" o "asincrónicos" que son aquellos que no son controlados por señales de reloj.
A continuación se indican los principales sistemas secuenciales que pueden encontrarse en forma de circuito integrado o como estructuras en sistemas programados:

En todo sistema secuencial nos encontraremos con:
a) Un conjunto finito, n, de variables de entrada (X1, X2,..., Xn).
b) Un conjunto finito, m, de estados internos, de aquí que los estados secuenciales también sean denominados autómatas finitos. Estos estados proporcionarán m variables internas (Y1,Y2,..., Ym).
c) Un conjunto finito, p, de funciones de salida (Z1, Z2,..., Zp).
Dependiendo de como se obtengan las funciones de salida, Z, los sistemas secuenciales pueden tener dos estructuras como las que se observan el la siguiente figura, denominadas Máquina, a), y Máquina de Mealy, b).
B .CONDICIONALES
. Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen tres tipos básicos, las simples, las dobles y las múltiples. 
Simples:

Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma: 
Pseudocódigo:
Diagrama de flujo:


Dobles:

Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: 
Pseudocódigo:
Diagrama de flujo:

Donde:
Si:Indica el comando de comparación
Condición : Indica la condición a evaluar
Entonces : Precede a las acciones a realizar cuando se cumple la condición
Instrucción(es):Son las acciones a realizar cuando se cumple o no la condición
si no :Precede a las acciones a realizar cuando no se cumple la condición
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más acciones.

Múltiples:

Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente: 
Pseudocódigo:
Diagrama de flujo:



C.REPETITIVA
Hasta ahora hemos empleado estructuras SECUENCIALES y CONDICIONALES. Existe otro tipo de estructuras tan importantes como las anteriores que son las estructuras REPETITIVA




                                                                                                                                                

Estructura repetitiva while.


11. TIPOS DE ERRORES DE PROGRAMACION

A. SINTAXIS
B. MATEMATICO
C. LOGICA

a. Sintaxis

El primer paso en el estudio de un lenguaje es definir los símbolos básicos que lo constituyen (alfabeto) y cómo se combinan para formar sentencias. Está constituido por:

Símbolos de veracidad: V para verdadero y F para falso.
Símbolos de variables: p, q, r, s, ...
Símbolos de conectivas: 
Ø NO Negación
Ù Y Conjunción
Ú O Disyunción inclusiva
Å O..O Disyunción exclusiva
® SI..ENTONCES Condicional
« SI Y SOLO SI Bicondicional

Símbolos de puntuación: ( , ), para evitar ambigüedades.
B. La lógica matemática estudia los sistemas formales en relación con el modo en el que codifican nociones intuitivas de objetos matemáticos como conjuntos, números, demostraciones y computación.
La lógica matemática suele dividirse en cuatro subcampos: teoría de modelos, teoría de la demostración, teoría de conjuntos y teoría de la recursión. La investigación en lógica matemática ha jugado un papel fundamental en el estudio de los fundamentos de las matemáticas. Actualmente se usan indiferentemente como sinónimos las expresiones: lógica simbólica( o logística), lógica matemática, lógica teorética y lógica formal.1
La lógica matemática no es la «lógica de las matemáticas» sino la «matemática de la lógica». Incluye aquellas partes de la lógica que pueden ser modeladas y estudiadas matemáticamente.

c. La lógica proposicional, como lenguaje formalizado, puede considerarse como la unión de un una sintaxis y una semántica. 

La sintaxis estudia los signos mismos con independencia de su significado (en el caso, la construcción de la frase dentro de las reglas del idioma). 
Además de la sintaxis y la semántica, se deben añadir las reglas de inferencia (las reglas de transformación del cálculo) que son las que permiten realizar deducciones. 


FUNDAMENTOS DE LA PROGRAMACIÓN PARTE II

10. LENGUAJES DE PROGRAMACION MAS POPULARES A TRAVES DE LA HISTORIA. DESCRIPCION Y EJEMPLOS.

miércoles, 26 de octubre de 2011

9. PASOS PARA RESOLVER UN PROBLEMA USANDO ALGORITMOS

  •          Análisis preliminar o evaluación del problema: Estudiar el problema en general y ver que parte nos interesa.
  •           Definición o análisis del problema: Ver que es lo que entra y que es lo que sale, las posibles condiciones o restricciones, ...
  •           Diseño del algoritmo: Diseñar la solución.
  •         El programa: Codificación del algoritmo en un lenguaje de programación.
  •    Ejecución del programa y las pruebas: Ver si el programa hace lo que queríamos.