Taller 2 paola andrea betancur (adsi 600182)

Post on 26-Jul-2015

116 views 2 download

Transcript of Taller 2 paola andrea betancur (adsi 600182)

PAOLA ANDREA BETANCUR ZAMBRANO

TALLER # 2 – Conceptualización Lenguajes de Programación

ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION

FICHAS 600182

Instructor: Iván Daniel Vela M.

DESARROLLO DEL TALLER

1. Realizar un trabajo investigativos donde consulte y defina los siguientes conceptos:

Sinergia:

La 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.1

Sistema Abierto:

Los sistemas abiertos son aquellos sistemas informáticos que proporcionan alguna combinación de interoperabilidad, portabilidad y uso de estándares abiertos. (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.) cmommessenger y portales de ese prototipo.2

Sistema Cerrado:

Un sistema cerrado o sistema aislado es un sistema físico (o químico) que no interacciona con otros agentes físicos situados fuera de él y por tanto no está conectado "causalmente" ni correlacionalmente con nada externo a él.3

Entropía:

La entropía también se puede considerar como la cantidad de información promedio que contienen los símbolos usados. Los símbolos con menor probabilidad son los que aportan mayor información; por ejemplo, si se considera como sistema de símbolos a las palabras en un texto, palabras frecuentes como "que", "el", "a" aportan poca información, mientras que palabras menos frecuentes como "corren", "niño", "perro" aportan más información. Si de un texto dado borramos un "que", seguramente no afectará a la comprensión y se sobreentenderá, no siendo así si borramos la palabra "niño" del mismo texto original. Cuando 1http://www.alegsa.com.ar/Dic/sinergia.php2http://mgomeztdea.blogspot.com/2010/02/sistemas-de-informacion-abierto-y.html3http://mgomeztdea.blogspot.com/2010/02/sistemas-de-informacion-abierto-y.html

todos los símbolos son igualmente probables (distribución de probabilidad plana), todos aportan información relevante y la entropía es máxima.4

Neguentropia :

La neguentropía se puede definir como la tendencia natural de que un sistema se modifique según su estructura y se plasme en los niveles que poseen los subsistemas dentro del mismo. Por ejemplo: las plantas y su fruto, ya que dependen los dos para lograr el método de neguentropía.5

Lenguaje de Bajo Nivel:

también llamados lenguajes ensambladores, permiten al programadorescribir instrucciones de un programa usando abreviaturas del inglés, también llamadas palabras nemotécnicas, tales como: ADD, DIV, SUB, etc. Un programa escrito en un lenguaje ensamblador tiene el inconveniente de que no es comprensible para la computadora, ya que, no está compuesto por ceros y unos. Para traducir las instrucciones de un programa escrito en un lenguaje ensamblador a instrucciones de un lenguaje máquina hay que utilizar un programa llamado ensamblador

6

Lenguaje de Medio Nivel:

Se trata de un termino no aceptado por todos, pero q seguramente habrás oído. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel. 7

Lenguaje de Alto Nivel:

Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de EDD's.

- EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en todos los

lenguajes de programación. Son estructuras que pueden cambiar de tamaño durante la

4http://es.wikipedia.org/wiki/Entrop%C3%ADa_(informaci%C3%B3n)5http://teoriageneraldelsistemajsu.blogspot.com/2011/04/entropia-y-neguentropia.html6http://www.carlospes.com/minidiccionario/lenguaje_de_bajo_nivel.php7http://www.desarrolloweb.com/articulos/2358.php

ejecución del programa. Nos permiten crear estructuras de datos que se adapten a las

necesidades reales de un programa.8

Framework:

(Marco de trabajo) define, en términos generales, un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia, para enfrentar y resolver nuevos problemas de índole similar.

En el desarrollo de software, un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, 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.

Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio, y provee una estructura y una especial metodología de trabajo, la cual extiende o utiliza las aplicaciones del dominio.

Programación Estructurada:

La programación estructurada es una teoria de programación que consiste en construir programas de facilcomprensión.

La programación estructurada es especialmente útil, cuando se necesitan realizar correcciones

o modificaciones después de haber concluido un programa o aplicación. Al haberse utilizado la

programación estructurada, es mucho más sencillo entender la codificación del programa, que

se habra hecho en diferentes secciones.9

Programación Orientada a Objetos:

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir

nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos

rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco

con este tipo de programación.10

Función:

Una función es un grupo de instrucciones con un objetivo en particular y que seejecuta al ser llamada desde otra función o procedimiento. Una función puede llamarse múltiples veces e

8http://www.desarrolloweb.com/articulos/2358.php9http://www.lenguajes-de-programacion.com/programacion-estructurada.shtml10http://www.desarrolloweb.com/articulos/499.php

incluso llamarse a sí misma (función recurrente).

Las funciones pueden recibir datos desde afuera al ser llamadas a través de los parámetros y deben entregar un resultado.

Se diferencian de los procedimientos porque estos no devuelven un resultado.

En general las funciones deben tener un nombre único en el ámbito para poder ser llamadas, un tipo de dato de resultado, una lista de parámetros de entrada y su código.

Puntero o apuntador:

El valor de todas las variables que manejamos en nuestros programas se almacenan en memoria y tienen una dirección. Un puntero es una variable especial que apunta a la dirección de memoria de una variable.

El puntero tiene a su vez su propia dirección. Todas estas direcciones tienen un formato hexadecimal.

Los punteros son herramientas muy poderosas con muchas utilidades y enormes ventajas como veremos más adelante. A grandes rasgos, un puntero me permite desplazarme en la memoria, apuntar, re direccionar a ciertas variables, funciones, métodos, objetos, etc sin necesidad de mover grandes bloques de datos, lo cual nos ahorra muchísimo el consumo de memoria en los programas.

Vectores:

Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0.

Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos, etc.

Matrices:

Una matriz es un vector de vectores o un también llamado array bidimensional. La manera de declarar una matriz es C++ es similar a un vector

Cadenas de Caracteres:

En programación, una cadena de caracteres, palabra, ristra de caracteres o frase (string en inglés) es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto lenguaje formal o alfabeto análogas a una fórmula o a una oración. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otrossignos o símbolos).

Definición de Herencia:

La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene los atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados. Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que puede especializarse a voluntad (la compañía que vende estas clases tiende a proteger las datos miembro usando la encapsulación).11

Polimorfismo:

En programación orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.

Plantillas:

Las Plantillas nos permiten definir funciones genéricas.

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.

Expresiones booleanas:

Las expresiones booleanas se usan para determinar si un conjunto de una o más condiciones es verdadero o falso, y el resultado de su evaluación es un valor de verdad. Los operandos de una expresión booleana pueden ser cualquiera de los siguientes:

Expresiones relacionales: que comparan dos valores y determinan si existe o no una cierta relación entre ellos (ver más adelante), tal como mfn<10;

Funciones booleanas: tal como p(v24), que regresa un valor de verdad (estos se explican bajo "Funciones booleanas").

TABLAS DE VERDAD

Una tabla de verdad, o tabla de valores de verdad, es una tabla que muestra el valor de verdad de una proposición compuesta, para cada combinación de valores de verdad que se pueda asignar a sus componentes:

11 http://es.kioskea.net/contents/411-poo-herencia

EJEMPLO:

[(R->s)^s] ->s

1) Se colocan las proposiciones simples, es decir: R y S

R S

2) Se aplica la formula 2 elevado a la N o 2 elevado a la 2 por la cantidad de proposiciones, eso nos da como resultado 4 que son las cuatro posibilidades que tenemos, por eso las cuatro casillas debajo de R y S.

3) En la primera columna de la tabla se coloca:

R

V

V

F

F

4) En la segunda columna de la tabla se coloca:

SVFVF

5) Luego se crea una nueva columna para realizar la operación entre el paréntesis:

R S R -> sV VV FF VF F

En la tercera casilla de la tercera columna se pone (F) falso debido a que se inicio con una verdad y se paso a una falsedad

R S R -> sV VV F FF VF F

El resto de casillas se llenan con verdadero:

R S R -> sV V VV F FF V VF F V

6) Se agrega una nueva columna para realizar operaciones entre corchetes:

-Después solo si la conjunción es verdadera se agrega (V) si hay 2 (V)

R S R -> s (R>s)^sV V V VV F FF V V VF F V

-Los demás serán falsos:

R S R -> s (R>s)^sV V V VV F F FF V V VF F V F

7) Se agrega una última columna para realizar la operación:

- el condicional se realiza entre la segunda columna y la ultima de derecha a izquierda:

- el condicional es falso cuando de una verdad se pasa a una falsedad y como esto no se presenta se pone en cada casilla V

R S R -> s (R>s)^s [(R->s)^s] ->sV V V V VV F F F VF V V V VF F V F V

Al se todo verdadero esta proposición es falsa.2.

Consultar y explicar las diferencias entre los siguientes lenguajes de programación: C, C++ y C#.

RTA:

C# ha sido diseñado para ser fácilmente aceptado por los desarrolladores de C y C++.

No obstante presenta importantes diferencias:

- 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 garbagecollector (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 Basic, 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ícitooverride.

o El modificador new permite ocultar miembros heredados.

- Existen tres posibles grupos de tipos:

o Tipos valor: son tipos primitivos como char, int, struct... C# incluye dos tipos nuevos, boolean (True o False, se utiliza en las sentencias condicionales, en lugar de integer, como se hacía en C++) y decimal (para operaciones financieras). Las variables de tipo valor se guardan en la pila.

o Tipos referencia: incluye los tipos class, interface, delegate y array. Los objetos referenciados por variables de tipo referencia se guardan en el heap o montón. Existen dos tipos de referencia

predefinidos, object y string. object es el tipo base de la jerarquía de

clases .NET. Todo dato deriva del tipo object mediante herencia simple

(sólo se permite herencia múltiple de interfaces). Todo dato de cualquier

otro tipo puede convertirse a object (a esta conversión se la llama

boxing) permitiéndose también la operación inversa (unboxing). Esto

permite la existencia de lo que se denomina sistema de tipos unificado.

o Tipos puntero: sólo se permite su utilización en código inseguro.

- Las sentencias sufren ciertos cambios y aparecen otras nuevas:

o La sentencia switch admite string.

o La sentencia foreach se puede aplicar a tipos y colecciones.

o Las sentencias checked y unchecked permiten controlar desbordamientos.

- El mantenimiento de versiones es más sencillo que en C y C++. Entre otros aspectos, la compatibilidad a nivel binario deja de ser un problema.

- Se utilizan Atributos (Attributes) que son anotaciones que se adjuntan a una clase para almacenar cierta información (ficheros de ayuda, versión, etc...) y que pueden ser obtenidos mediante reflexión.12

12 http://www.ehu.es/mrodriguez/archivos/csharppdf/Lenguaje/Introduccion.pdf