El documento presenta una lista de términos relacionados con lenguajes de programación que debe ser investigada y definida. También incluye un ensayo comparativo sobre las diferencias entre programación estructurada y orientada a objetos, así como una explicación de las diferencias entre los lenguajes C, C++ y C#. El objetivo es aprender conceptos básicos de lenguajes de programación a través de la investigación y redacción de un documento que incluya las definiciones, el ensayo y la comparación de lenguajes.
Análisis de la situación actual .La Matriz de Perfil Competitivo (MPC)
Taller 2 conceptualizacion
1. TALLER # 2 – Conceptualización Lenguajes de Programación
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION
FICHA: 581708-FECHA:30 DE ENERO DEL 2014
Aprendiz: Oscar Saúl Rico Flórez
Instructor: Iván Daniel Vela M.
1. Realizar un trabajo investigativos donde consulte y defina los siguientes conceptos:
Sinergia
Concepto de Función
Sistema Abierto
Puntero o apuntador
Sistema Cerrado
Vectores
Entropía
Matrices
Neguentropia
Cadenas de Caracteres
Lenguaje de Bajo Nivel
Definición de Herencia
Lenguaje de Medio Nivel
Definición de Polimorfismo
Lenguaje de Alto Nivel
Plantillas
Framework
Excepciones
Programación Estructurada
Que son expresiones booleanas
Programación Orientada a Objetos
Consular que son las tablas de verdad,
hacerla y explicarla
2. Según los temas consultados y el glosario aprendido durante el inicio del tema de
algoritmos y fundamentos de programación, realizar un ensayo comparativo sobre las
diferencias entre la programación estructurada y la programación orientada a objetos.
(El ensayo no debe ser mayor de tres paginas ni menos de 2)
3. Consultar y explicar las diferencias entre los siguientes lenguajes de programación: C,
C++ y C#.
La evidencia a entregar será un documento en Word con las consultas realizadas y el ensayo
propuesto, recuerde enviar su trabajo con la sintaxis para nombre anunciada por el instructor
(NombreAprendiz – Ficha – Nombre Trabajo) tanto en el asunto del mensaje electrónico como
en el nombre del archivo. El uso de esta sintaxis refleja comprensión de las instrucciones y será
calificable.
SOLUCION
1-A-Sinergia: Es la integración de elementos que da como resultado algo más grande que la
simple suma de éstos, es decir, cuando dos o más elementos se unen sinérgicamente crean un
resultado que aprovecha y maximiza las cualidades de cada uno de los elementos.
B- Sistema Abierto: es aquel que proporciona alguna combinación
de interoperabilidad, portabilidad y uso de [[Estándar abierto|. (También puede referirse a los
sistemas configurados para permitir el acceso sin restricciones por parte de personas y otros
sistemas, si bien este artículo sólo discute la primera acepción.) como messenger y portales de
su prototipo.
2. C- Sistema Cerrado: Cualquier programa informatico que los ususarios tienen limitadas las
posibilidades de modificarlo o reproducirlo, cuyo código fuente no esta disponible o el acesso
a este se encuentra restringido.
D- Entropía: Es el incremento del deterioro y desorden del software a medida que se hacen
modificaciones o se agrega código.
E- Neguentropia : También llamada entropía negativa o sintropía, de un sistema vivo, es
la entropía que el sistema exporta para mantener su entropía baja; se encuentra en la
intersección de la entropía y la vida. Para compensar el proceso de degradación sistémica a lo
largo del tiempo, algunos sistemas abiertos consiguen compensar su entropía natural con
aportaciones de subsistemas con los que se relacionan. Si en un sistema cerrado el proceso
entrópico no puede detenerse por sí solo, en un sistema abierto, la neguentropía sería una
resistencia sustentada en subsistemas vinculados que reequilibran el sistema entrópico.
F- Lenguaje de Bajo Nivel: Es aquel en el que sus instrucciones ejercen un control directo sobre
el hardware y están condicionados por la estructura física de la computadora que lo soporta.
G- Lenguaje de Medio Nivel: Lenguaje de medio nivel es un lenguaje de
programacióninformática como el lenguaje C, que se encuentran entre loslenguajes de alto
nivel y los lenguajes de bajo nivel.
H- Lenguaje de Alto Nivel: El lenguaje de alto nivel (high-level language) es aquel que se
aproxima más al lenguaje natural humano que al lenguaje binario de las computadoras, el que
se conoce como lenguaje de bajo nivel.
I- Framework: Es una estructura conceptual y tecnológica de soporte definido, normalmente
con artefactos o módulos de softwareconcretos, que puede servir de base para la organización
y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y
un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los
diferentes componentes de un proyecto.
J- Programación Estructurada:E s un paradigma de programación orientado a mejorar la
claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando
únicamentesubrutinas y tres estructuras: secuencia, selección (if y switch)
e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la
instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti",
que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de
programación.
K- Programación Orientada a Objetos: O POO (OOP según sus siglas en inglés) es
un paradigma de programación que usa los objetos en sus interacciones, para diseñar
aplicaciones y programas informáticos. Está basado en varias técnicas,
incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su
uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran
variedad de lenguajes de programación que soportan la orientación a objetos.
L- Concepto de Función: En computación, una subrutina o subprograma (también llamada
procedimiento, función o rutina), como idea general, se presenta como un subalgoritmo que forma parte
del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación,
como Visual Basic.NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven un
valor.
M- Puntero o apuntador: Un puntero o apuntador es una variable que da referencia a una
región de memoria; en otras palabras es una variable cuyo valor es una dirección de memoria.
Si se tiene una variable ' p ' de tipo puntero que contiene una dirección de memoria en la que
se encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '. El programador utilizará
3. punteros para guardar datos en memoria en muchas ocasiones, de la forma que se describe a
continuación.
N- Vectores: Los vectores son una forma de almacenar datos que permiten contener una serie
de valores del mismo tipo, cada uno de los valores contenidos tiene una posición asociada que
se usará para accederlos. Está posición o índice será siempre un número entero positivo.
O- Matrices: Conjunto de variables (también llamado bloque) del mismo tipo que el
considerado en matemática, y cuyo acceso se realiza por índices o líneas.
P- Cadenas de Caracteres: (también llamadas cadenas o strings) son un tipo particular de
vectores, son de hecho vectores de char, con la particularidad que tienen una marca de fin (el
caracter '0'), además el lenguaje nos permite escribirlas como texto dentro de comillas
dobles.
Q- Definición de Herencia: es uno de los conceptos básicos de la programación orientada a
objetos. Decir que una clase hereda de otra quiere decir que esa clase obtiene los mismos
métodos y propiedades de la otra clase. Permitiendo de esta forma añadir a las características
heredadas las suyas propias.
R- Definición de Polimorfismo: Comportamientos diferentes, asociados a objetos distintos,
pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando.
S- Plantillas: Nos permiten definir funciones genéricas, una plantilla describe las propiedades
genéricas de una función.
T- Excepciones: Una excepción es una indicación de que ocurrió un problema durante la
ejecución de un programa.
Las excepciones separan el código para el manejo de errores de la lógica de aplicación del
programa.
U- Expresiones booleanas: Es una expresión que se evalúa como un valor del tipo de datos
Boolean: True o False. Las expresiones Boolean pueden ser de varias formas. La más simple es
la comparación directa del valor de una variable Boolean con un literal Boolean.
V-Tablas de Verdad: Una fórmula puede tomar los valores verdadero y falso. La semánticaes el
conjunto de reglas que permiten dar significado a una fórmula. El valor de una fórmula vendrá
dado por los operadores según las tablas de verdad. A partir de ahora, al valor falso le
asignaremos el 0, y al verdadero el 1.
A continuación, veremos cómo utilizar tablas de verdad. Queremos saber si las fórmulas not (p
and q) y (not p) or (not q) son equivalentes. Para ello utilizaremos las tablas de verdad para
obtener el resultado de las fórmulas, y si ambas dan el mismo resultado para cualquier
combinación de valores (sus tablas de verdad son iguales), serán equivalentes:
p q not p not q p and q not (p and q) (not p) or (not q)
0 0 1
1
0
1
1
0 1 1
0
0
1
1
4. 1 0 0
1
0
1
1
1 1 0
0
1
0
0
2Programación estructurada
Postula el principio de división de un programa en unidades algorítmicas más pequeñas
llamadas funciones o procedimientos. Una vez definidos, el programador puede invocar a un
procedimiento desde otro. Típicamente un programa estructurado se realiza diseñando
primeramente un conjunto de estructuras de datos, y posteriormente un conjunto de
algoritmos (procedimientos) que actúan sobre esas estructuras de datos.
Programación Orientada a Objetos
Los programadores ahora diseñan aplicaciones a base de unir diferentes piezas de código ya
escrito y probado con anterioridad, cada una de estas piezas se llama "objeto". Los objetos
pueden tener propiedades, tales como forma, tamaño, color, y tipo de datos. Un ejemplo
podría ser un cuadro en la pantalla conteniendo una cuenta de dinero. Usted podría cambiar el
tamaño de este cuadro, cambiar el color, cambiar la forma en la que se muestra la figura de la
cuenta de dinero. Entonces usted podría realizar operaciones en esa cuenta, controlando los
eventos que se hicieran sobre ella, tales como una pulsación del ratón que podría disparar una
determinada operación, o mover la caja sobre la pantalla. Gracias al entorno del sistema
operativo subyacente tras ello, usted puede hacer todo esto colocando propiedades en lugar
de escribir todo un código. Y no sólo esto, usted puede crear una aplicación con una base de
datos subyacente tras ella, utilizando todas las plantillas pre programadas sobre la estructura
de la base de datos.
- Aunque la programación estructurada es una metodología que se ha usado durante mucho
tiempo y aún se usa en la actualidad, existe un límite en la complejidad de los programas que
se pueden realizar manteniendo los costes de mantenimiento y modificación de los programas
razonablemente bajos. Es otras palabras, modificar un programa complejo en Pascal o COBOL
puede ser una tarea altamente costosa en términos de tiempo. Para sobrepasar estos
problemas se creó la metodología de la programación orientada a objetos, que postula la
división de un programa en unidades auto contenidas llamadas objetos. A diferencia de los
procedimientos que contienen sólo algoritmos y los datos sobre los que actúan están aparte,
un objeto contiene un conjunto de algoritmos junto con los datos sobre los que actúan. De
esta manera cuando un programador invoca algoritmos en un objeto, no necesita saber qué
tipo de datos el objeto maneja de forma interna. Además los objetos pueden ser organizados
en jerarquías, de forma unos objetos pueden heredar datos y algoritmos de otros objetos. Con
esto lo que se consigue es que la organización de un programa orientado a objetos sea más
modular y rica que la organización de un programa estructurado, con lo que la arquitectura de
los programas complejos puede ser acomodada a cambios más fácilmente.
- Las ventajas de un lenguaje orientado a objetos, son:
Fomenta la reutilización y extensión del código.
5. Permite crear sistemas más complejos.
Relacionar el sistema al mundo real.
Facilita la creación de programas visuales.
Construcción de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software
Ventajas de la Programación estructurada
Con la programación estructurada elaborar programas de computador sigue siendo un albor
que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo
podemos obtener las siguientes ventajas:
1. Los programas son más fáciles de entender. Un programa estructurado puede ser leído en
secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica,
lo cual es típico de otros estilos de programación. La estructura del programa es más clara
puesto que las instrucciones están más relacionadas entre sí, por lo que es más fácil
comprender lo que hace cada función.
2. Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción
normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas se
facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y
corregir más fácilmente.
3. Programas más sencillos y más rápidos.
4. Aumento de la productividad del programador.
5. Se facilita la utilización de las otras técnicas para el mejoramiento de la productividad en
programación.
6. Los programas quedan mejor documentados internamente.
La programación estructurada pretende resolver un problema de principio a fin en una sola
estructura de código. La programación orientada a objetos, resuelve el problema identificando
los actores que tienen participación en el problema e identificando también sus acciones. Con
esta información se crean los objetos (que son una interpretación de algunos de estos
actores), estos objetos están compuestos por clases donde se detalla las acciones que realizan
y las propiedades de estos. Al tener creados los objetos solo es ponerlos a interactuar entre
ellos.
CONCLUCIONES
Los lenguajes de programación han evolucionado para poder representar mejor los problemas
del mundo real y hacer las cosas más fáciles para los diseñadores y desarrolladores de
software.
Dado que las arquitecturas empresariales implantadas para solucionar los problemas de la
ingeniería del software en la actualidad están pensadas para trabajar con lenguajes Orientados
a Objetos, es indispensable que todo desarrollador conozca y se familiarice con la POO.
Iniciar en la POO puede ser algo complicado al principio, lo ideal es tener las definiciones y
conceptos claros, y comenzar con un lenguaje netamente Orientado a Objetos
6. 3- La gestión de memoria es automática, lo cual quiere decir que el desarrollador
Sólo ha de preocuparse de crear un objeto cuando lo necesite pero no de
eliminarlo, ya que esta tarea queda a cargo del garbage collector (recolector de
basura). Este hecho cambia el sentido del destructor de una clase.
- No se utilizan punteros. En su lugar se utilizan referencias a objetos. No
obstante, se permite utilizar punteros en casos especiales, como por ejemplo
cuando es necesario acceder a código nativo (dll) al que hay que pasarle o que
devuelve punteros (al código C# de este tipo se le denomina código inseguro).
Existe una posibilidad de utilizar punteros en código seguro y es a través de
objetos de un tipo especial llamados Delegates Su comportamiento es similar a los punteros a
funciones, con la ventaja de ser más seguro y respetar los tipos de
datos.
- Se cambian ciertos aspectos referentes a los operadores:
o No se utilizan los operadores -> ni ::. El único operador de acceso a
métodos de objetos que se utiliza es el operador punto ‘.’ .
o Se incluyen dos operadores nuevos: is y typeof.
o Se cambia el funcionamiento de los operadores lógicos &, ^ y |.
o La sobrecarga de operadores es diferente.
- Hay ciertas palabras clave que se utilizan de modo distinto, como extern y
static.
- El método Main se declara de modo distinto.
- No se permiten las declaraciones adelantadas (forward).
- El manejo de errores se hace mediante excepciones.
- No se soportan las macros, aunque sí las directivas de preprocesador.
- No se utilizan ficheros de cabecera (.h) ni similares (IDL y librerías de tipos). El
código es compilado en unidades llamadas assemblies, en las cuales se almacena
la representación del código en un lenguaje intermedio llamado IL y los
metadatos, que sustituyen a los ficheros .h de C++ (o a las librerías de tipos y
entradas de registro). Los assemblies se pueden generar a partir de código escrito
en otros lenguajes, como C++ o Visual B asic, lo cual quiere decir que desde C#
se puede utilizar código IL generado a partir de otros lenguajes.
- Los assemblies se agrupan en namespaces (que siguen una estructura
jerárquica).
- No existe una librería de tiempo de ejecución (Runtime) C# como en C y C++.
En su lugar existe un Runtime .NET accesible a través de la clase System.
- El mecanismo de herencia sufre cambios:
o No se permite herencia múltiple en clases pero sí en interfaces.
o La sobrescritura de métodos se ha de hacer utilizando el operador
explícito override.
WEBGRAFIA
http://parkeadores.angelfire.com/abstraccion2.htm
http://es.wikipedia.org/wiki/Lenguaje_de_bajo_nivel