1. Taller N°1
Edgar Fernando Chávez
José Alberto Céspedes Mape
José Martin Sánchez Cardoso
Juan Sebastián Botero
Agosto 2017.
Universidad del Tolima
Tecnología en Gestión de Bases de Datos.
Programación Orientada a Objetos
2. 1. Elabore un cuadro comparativo, en el que pueda establecer diferencias y
relaciones entre los niveles de programación.
LENGUAJES DE
BAJO NIVEL
LENGUAJES DE
ALTO NIVEL
LENGUAJES DE
MEDIO NIVEL
DIFERENCIAS Depende de la
arquitectura del hardware
y al funcionamiento físico
del ordenador.
Estos lenguajes
como están diseñados a
medida del hardware,
aprovechan al máximo
las características del
mismo.
Los lenguajes de bajo
nivel más conocido son:
Lenguaje maquina y
Lenguaje Ensamblador.
El lenguaje maquina
consiste en el conjunto
de instrucciones que un
determinado procesador
es capaz de entender y
ejecutar.
Cada procesador tiene su
propio lenguaje maquina,
depende a su vez del
modelo.
El lenguaje ensamblador
usa símbolos
mnemotecnicos y cifras
decimales.
Estos lenguajes
como están diseñados a
medida del hardware
aprovechan al máximo
las características del
mismo.
El lenguaje maquina
consiste en el conjunto
de instrucciones que un
determinado procesador
es capaz de entender y
ejecutar.
Están mas orientados al
problema que tienen
que resolver que a la
maquina.
Intentan reproducir
modelos de la realidad,
con ciertos grados de
abstracción.
Un programa escrito en
un lenguaje de alto
nivel, se puedes migrar
de una máquina a otra
sin ningún tipo de
problema.
Los programas escrito
en este lenguaje se
deben de traducirse al
lenguaje maquina del
ordenador que tiene
que ejecutarlo.
La traducción se realiza
de dos manera
diferentes, las cuales
son Interpretación y
Compilación.
Los lenguajes más
usados dentro de esta
categoría son:
FORTRAN, COBOL,
IMS, Pascal, Java, C y
C++.
La traducción se realiza
de dos maneras
diferentes, las cuales
son Interpretación y la
Compilación.
Pueden acceder a los
registros del sistema,
trabajar con direcciones
de memoria, y a la vez
realizar operaciones de
alto nivel.
Dentro de estos
lenguajes podría
situarse C.
Son precisos para
ciertas aplicaciones
como la creación
de sistemas operativos
SEMEJANZAS Siguen normas determinadas con el objetivo de que el computador entienda las
instrucciones y ejecutarlas.
Se debe tener un carácter lógico y secuencial para manipular cualquier lenguaje de
programación.
La capacidad de comunicarse directamente con el procesador de la computadora
en lenguaje ensamblador o incluso en código máquina puede resolver los
problemas que las capas de abstracción de un lenguaje de alto nivel pueden
dificultar.
3. 2. Investigue y elabore un mapa conceptual sobre la evolución de los
lenguajes de programación, de acuerdo a las generaciones de estos y su
importancia.
4. 3. Mediante un cuadro comparativo indique las diferencias y coincidencias
de los lenguajes de programación (Delphi, PLI, RPG, Visual .NET, Modula.),
distintos a los explicados en la unidad de aprendizaje.
Delphi PLI RPG Visual .NET Modula
DIFERENCIAS Se creó con
el propósito
de agilizar la
creación de
software
basándolo en
una
programación
visual.
Usado en el
desarrollo de
aplicaciones
visuales y
bases de
datos cliente-
servidor.
Creado
con el
objetivo de
resolver las
necesidades
aplicaciones
científicas y
comerciales.
Muchas de
sus
caracteristic
as fueron
usadas por
el lenguaje C
y algunas de
C++.
Orientado
originalment
e para
generar
informes
comerciales
o de
negocios.
Emplea
hojas de
codificación
diferentes
para la
descripción
de ficheros,
entrada de
datos, salida
de
resultados,
etc.
Se puede
considerar
una
evolución
de Visual
Basic.
Al igual
que con
todos los
lenguajes
de
programaci
ón basados
en .NET,
los
programas
escritos en
VB .NET
requieren
el
Framework
.NET o
Mono para
ejecutarse.
Introduce el
concepto de
módulo, y de
encapsulación
.
Incapacidad
de declarar
múltiples
instancias de
los módulos.
Ausencia de
todo tipo de
herencia.
Usado para
enseñar
lenguaje
estructurado.
COINCIDENCIA La mayoría de estos lenguajes son Orientados a Objeto o sentaron las bases
para la posterior realización de este tipo de lenguaje.
Son lenguajes de alto nivel, ya que no depende del hardware.
El PLI y el RPG fueron desarrollados por IBM.
A pesar de ser diferentes, estos lenguajes tienen un area en comun, el
campo comercial y/o de negocios.
5. 4. Por medio de un mapa conceptual explique que es un programa y un
lenguaje de programación.
5. Que diferencias o relaciones puede establecer entre los paradigmas de
programación mencionados en la unidad de aprendizaje Paradigmas de
Programación.
Diferencias
Paradigma imperativo o por procedimientos: Describe la programación
como una secuencia instrucciones o comandos que cambian el estado de un
programa. El código máquina en general está basado en el paradigma
imperativo.
6. Paradigma Funcional: es un paradigma de programación declarativa
basado en la utilización de funciones matemáticas.
El Paradigma Lógico: trata sobre La programación lógica que consiste en
la aplicación del corpus de conocimiento sobre lógica para el diseño de
lenguajes de programación. En cambio, el Paradigma Orientado a Objetos
habla sobra La Programación Orientada a Objetos; es un paradigma de
programación que usa objetos y sus interacciones para diseñar aplicaciones
y programas de computadora.
Relaciones
En cuanto a su relación se puede encontrar es que todas manejan datos, a pesar
de sus diferentes tipo de estructura. Además se puede encontrar de que todas se
basan en el manejo del mundo de lo abstracto (Software) y no en lo físico
(Hardware). Por último debemos de recordar de que existen lenguajes
multiparadigmas, esto ayuda mucho a suplir necesidades que un paradigma tiene
frente a otro.
6. Investigue y explique la diferencia entre los términos: lenguaje,
compilador, interpretador, programa fuente y programa objeto o ejecutable.
Lenguaje
Según la definición teórica, como lenguaje se entiende a un sistema de
comunicación que posee una determinada estructura, contenido y uso. La
programación es, en el vocabulario propio de la informática, el procedimiento de
escritura del código fuente de un software. De esta manera, puede decirse que la
programación le indica al programa informático qué acción tiene que llevar a cabo
y cuál es el modo de concretarla.
El término programación se define como un conjunto de instrucciones
consecutivas y ordenadas que llevan a ejecutar una tarea específica. Dichas
instrucciones se denominan “código fuente”, el cual es único para cada lenguaje y
está diseñado para cumplir una función o propósito específico. Usan diferentes
normas o bases para controlar el comportamiento de un dispositivo y también
pueden ser usados para crear programas informáticos. En la actualidad, hay más
de cien lenguajes de programación diferentes, estos se clasifican en dos tipos
principales:
Lenguajes de programación de bajo nivel. Son aquellos utilizados para
controlar el hardware (partes tangibles) del aparato y dependen directamente de la
máquina, es decir, que no pueden ser usados en aparatos diferentes para los que
fueron creados. Estos lenguajes son los que ordenan las operaciones esenciales
para el funcionamiento del dispositivo. También es conocido como código
7. máquina. Su funcionamiento es complejo, por lo que lo utilizan principalmente los
fabricantes de hardware. Con ellos se pueden programar tareas como
reproducción de audio o video, mostrar imágenes, realizar operaciones
matemáticas, movimiento del puntero, asignación, liberación de memoria, entre
otras.
Lenguajes de programación de alto nivel. Estos lenguajes son más parecidos al
humano. No dependen de la máquina y sirven principalmente para crear
programas informáticos que puedan solucionar distintos tipos de necesidades.
Ahora bien, algunos de los lenguajes de programación más utilizados son SQL,
PHP, C y Java.
• SQL: son las siglas de Structured Query Language (Lenguaje Estructurado de
Consulta). Su función principal es actuar sobre una base de datos y extraer su
contenido para almacenar, introducir, actualizar, eliminar y consultar información.
Suele ser usado en la construcción de páginas web y aplicaciones de escritorio.
• PHP: es un acrónimo recursivo que significa PHP Hypertext Pre-processor. Es
utilizado para el desarrollo de sitios online, ya que es posible combinarlo con
HTML. Es un lenguaje de lado del servidor, es decir, que primero se ejecuta en
éste y posteriormente regeresa al navegador del usuario como resultado una
página web.
• C: lenguaje orientado principalmente a los sistemas operativos. Se puede crear
un software para sistemas operativos como Windows o Linux, también es muy
usado en robótica para crear simuladores o para experimentos informáticos,
físicos, matemáticos, etc.
• Java: es uno de los lenguajes favoritos ya que permite construir programas que
gestionan la memoria del dispositivo donde reside la aplicación, como por ejemplo
herramientas, juegos y apps. Es utilizado en dispositivos móviles, aparatos de
televisión y computadores personales. Suele ser asociado a Java Script, que es
otro tipo de lenguaje para crear pequeños programas encargados de realizar
acciones dentro de páginas webs, como por ejemplo crear efectos especiales o
para definir la interactividad con los usuarios.
Compilador
Un compilador es un programa informático, que se encarga de traducir el código
fuente de una aplicación que este en desarrollo, es decir convierte un programa
hecho en lenguaje de programación de alto nivel a un lenguaje de máquina , el
cual es conocido como de bajo nivel, de tal forma que sea más entendible y
mucho más fácil de procesar en el equipo en el que se esta ejecutando.
8. Los compiladores son programas muy grandes que permiten la comprobación de
errores. Algunos compiladores pueden traducir lenguaje de alto nivel a un lenguaje
ensamblador intermedio, que luego se traduce a código de máquina por un
programa ensamblador. Otros compiladores generan código de máquina
directamente.
Todo lenguaje de alto nivel tiene un compilador incorporado. Básicamente, el
compilador es la parte central de dicho lenguaje, porque define y traduce las
instrucciones recibidas.
Las ventajas del utilizar un compilador son:
El programa ejecutable no incluye el código fuente, por lo tanto, el código
compilado es más seguro.
Un programa compilado se ejecutan más rápidamente que un programa que
está siendo interpretado al momento de ejecutarse.
Las desventajas de utilizar un compilador son:
El código objeto necesita crearse para obtener el archivo ejecutable final, si el
programa es muy largo, el proceso de compilación puede ser muy lento.
El código fuente debe estar libre de errores para que el archivo ejecutable se
genere.
Interprete
Es un programa informático capaz de analizar y ejecutar otros programas, escritos
en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en
que mientras estos traducen un programa desde su descripción en un lenguaje de
programación al código de máquina del sistema, los intérpretes sólo realizan la
traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y
normalmente no guardan el resultado de dicha traducción.
La desventaja principal de los interpretadores es que cuando se interpreta un
programa, típicamente corre más lentamente que si hubiera sido compilado. La
diferencia en velocidades puede ser minúscula o grande; a menudo un orden de
magnitud y a veces más. Generalmente toma más tiempo correr un programa bajo
un interpretador que correr el código compilado, pero puede tomar menos tiempo
para interpretarlo que el tiempo total requerido para compilarlo y ejecutarlo. Esto
es especialmente importante si se está haciendo y probando un código prototipo
cuando un ciclo de editar, interpretar y depurar del interpretador, a menudo puede
ser mucho más corto que el ciclo de editar, compilar, ejecutar y depurar del
compilador.
9. La interpretación de código es más lenta que la ejecución de código compilado
porque el interpretador debe analizar cada sentencia en el programa cada vez que
es ejecutada y entonces realizar la acción deseada, mientras que el código
compilado solo realiza la acción dentro de un determinado contexto fijo por la
compilación. Este análisis en tiempo de ejecución se conoce como "sobrecarga
interpretativa". En un interpretador, el acceso a las variables es también más lento
porque el mapeo de identificadores hacia las localizaciones de almacenamiento
debe hacerse repetidamente en tiempo de ejecución en vez de en el tiempo de
compilación. Hay varios compromisos entre la velocidad de desarrollo al usar un
interpretador y la velocidad de ejecución al usar un compilador.
Programa Fuente
Es el programa escrito en alguno de los lenguajes y que no ha sido traducido al
lenguaje de la maquina, es decir el programa que no está en código de máquina y
que por lo tanto no puede ser ejecutable.
Es aquel que nos permite escribir un algoritmo mediante un lenguaje formal. Por
eso al código desarrollado al programar se le llama código fuente.
Programa Objeto
Es aquel programa que se encuentra en lenguaje máquina y que ya es ejecutable
por esta.
Es el resultado de traducir un programa fuente para obtener un lenguaje
comprensible por la máquina.
7. Si tuviera que elaborar un programa para solucionar un problema
especifico, que criterios aplicaría para elegir el lenguaje de programación.
El lenguaje de programación debe tener integridad conceptual, claridad,
simplicidad, unidad, legibilidad, también debe suministrar estructuras de datos,
operaciones, y estructuras de control apropiadas al tipo de problemas al que se
aplicará, así como una sintaxis en la que se puedan expresar de forma natural las
soluciones a tales problemas.
Adicional a esto debe contar con:
Soporte para la abstracción
Facilidad para la verificación de programas
Entorno de programación
Portabilidad de los programas
Homogeneidad en el tratamiento externo e interno de los conceptos
Coste de uso
10. Coste de ejecución de programas
Coste de traducción
Coste de creación, prueba y uso de programas
Coste de mantenimiento de programas
Buena definición
Sintaxis y semántica sean precisas, in ambiguas, legibles, comprensibles y, a
ser posible, formales
8. Como ingeniero de sistemas debe asumir el reto de programar una
bascula para vehículos de carga. El problema consiste en que al entrar los
vehículos se sitúan sobre la bascula, momento en el que se toma el peso
con la carga. Después de descargar el vehículo, este lo deben ubicar
nuevamente sobre la báscula, para tomar el peso del vehículo sin carga. La
necesidad es que a través de un dispositivo electrónico se registre cada uno
de los pesos y se le envíen a un computador, de forma automática para
posteriormente realizar los cálculos del peso de la carga y liquidación del
valor de esta. Que lenguaje de programación elegiría y porque?
Se elegiría el lenguaje Java, por dos motivos principales:
1. Su conjunto de prestaciones bastante amplio: herencia, tipificación de datos
estricta, modularidad, control de excepciones, polimorfismo, concurrencia, carga
dinámica de librerías, garbagecollection y una amplia colección de librerías
estándar.
2. Con Java, puedo realizar aplicaciones móviles (Android), y trabajar con
servidores en la parte de back-end. De esta forma me será más fácil interactuar
con el usuario a través de cualquier dispositivo móvil.
9. En una empresa que tiene gran afluencia de personal interno (empleados)
y externo (visitantes), se requiere del desarrollo e implementación de un
software que facilite el control de acceso del personal de la empresa y los
ajenos a ella, mediante cámaras y censores biométricos dactilares. En el
caso del personal de la empresa el censor biométrico, registrara los datos de
entrada y salida, fecha y hora, los que son transferidos al programa de
nomina, para la liquidación de la nomina. En el caso del personal ajeno a la
empresa el sistema conservara las fotos, fecha y hora de entrada y salida.
Para el desarrollo de esta aplicación que software elegiría y porque?
El software que se eligiera es Netbeans, mis motivos son:
1. Es un producto libre y gratuito sin restricciones de uso.
2. Permite integrar varios lenguajes de programación en un solo trabajo.
3. Desde el año 2000 es el principal patrocinador de proyectos.
11. 10. Incluya las respuestas a las Actividades de Aprendizaje, que resolvió
para esta sesión.
10.1. Cuál es la diferencia entre compilador e intérprete?
Los compiladores difieren de los intérpretes en varios puntos:
El compilador traduce todo el programa fuente a código maquina, con el que se
obtiene el programa objeto.
En el compilador se puede ejecutar tantas veces como sea necesarios sin tener
que traducir cada vez.
Un intérprete traduce el programa cuando lo lee, convirtiendo el código del
programa directamente en acciones.
Un archivo compilado es aproximadamente 10 a 20 veces más rapido que un
archivo interpretado.
El intérprete traduce un programa línea a línea mientras que el compilador
traduce el programa entero y luego lo ejecuta.
10.2. ¿Por qué la capacidad de los computadores influye en la evolución de
los lenguajes de programación?
Porque a que los lenguajes de programación depende mucho del hardware para
su funcionamiento y viceversa, es por eso que al tener unos computadores o
equipos electrónicos más eficientes se podrá realizar tareas que el software
ordena en velocidades más altas. Cabe señalar que el desarrollo de los
computadores a influido mucho en el quehacer diario y gracias a esto han hecho
que muchos lenguajes de programación se evolucionen para que se acomoden a
nuestras necesidades actuales, con esto también ha llevado a inventar lenguajes
de programación más sencillos de entender con el fin de de ser más asequibles
para las personas y así realizar casi cualquier labor de la manera más fácil y
económica posible.
10.3. ¿Un programa escrito en lenguaje de alto nivel se ejecuta más rápido
que un programa escrito en lenguaje de bajo nivel?
Falso, un lenguaje de bajo nivel se ejecuta más rápido considerando que en el
lenguaje de alto nivel se tiene que hacer un proceso para traducirlo a lenguaje
maquina (el cual es un lenguaje de bajo nivel). Por otro lado en el lenguaje de bajo
nivel se trabaja directamente con la maquina, esto lo hace más rápido y preciso a
la hora de ejecutar, pero tiene la desventaja de ser muy poco entendible y
complicado a la hora de utilizarlo.
10.4. ¿En qué consiste la arquitectura de Von Neumann?
12. El modelo Von Neumann, fue una propuesta realizada por el matemático del
mismo nombre, en ella se define las bases de la computación y de los
ordenadores actuales. Propone que los programas y datos se representen en
código binario, que haya un centro de control que ejecute el programa
secuencialmente o con saltos según indiquen las instrucciones y que acceda y
trabaje con los datos almacenados en dispositivos de memoria.
Diagrama de la arquitectura Von Neumann.
10.5. ¿Qué constituye el entorno de programación?
Un entorno de programación es un programa o conjunto de programas que
engloban todas las tareas necesarias para el desarrollo de un programa o
aplicación. Estas tareas son básicamente las siguientes:
Edición del programa.
Compilación y enlazado.
Ejecución.
Depuración.
Hay quien además incluye la creación de documentación complementaria que
facilita el mantenimiento del programa dentro de estas funciones.
13. Este tipo de entornos incorporan numerosas herramientas, utilidades, aplicaciones
ya desarrolladas, ejemplos, tutoriales, etc. Todas ellas encaminadas a facilitar y
mejorar el desarrollo.
Editores
El primer elemento necesario para el desarrollo de un programa es un editor de
texto. Un editor es un programa que nos permite escribir (editar) las instrucciones
del programa y posteriormente guardar el programa en un fichero en un soporte de
almacenamiento. Cualquier editor de texto se puede utilizar para editar programas
con la única precaución de que a la hora de guardar, salvar o almacenar el
programa sólo se almacene el texto sin opciones de formato: negrita, estilos,
itálica, etc.
Lo normal es utilizar un editor especialmente preparado para la programación.
Estos tienen facilidades para la corrección de errores, destacan las palabras del
lenguaje en colores, y en general facilitan la labor del programador.
Procesadores del lenguaje: traductores, compiladores e intérpretes
Una vez editado nuestro programa es necesario que este sea procesado y
transformado en órdenes que puedan ser ejecutadas por el ordenador. Estas
órdenes por tanto deben estar en el único lenguaje que la máquina entiende: el
código máquina. Para ello son necesarios los procesadores de lenguaje cuyo
concepto es muy amplio. Dentro de los procesadores de lenguaje destacan los
traductores, los compiladores y los intérpretes.
Un compilador es un programa cuyo cometido es realizar la conversión de un
programa escrito en un lenguaje de programación a su correspondiente
equivalente en lenguaje máquina. El resultado que devuelve un compilador es un
programa que ya puede ser ejecutado por el ordenador destino sin la necesidad
de que el compilador esté presente. Por ejemplo, el lenguaje Pascal o el lenguaje
C son lenguajes de programación que necesitan ser compilados. Cuando la
conversión se realiza entre el lenguaje ensamblador y el código máquina, el
compilador recibe el nombre específico de Ensamblador .
Un intérprete es un programa que convierte línea por línea el programa escrito en
un lenguaje de programación y que a medida que realiza la conversión ejecuta las
instrucciones . Evidentemente el intérprete no devuelve nada ya que la ejecución
se realiza de forma simultánea. Por este motivo, el intérprete debe estar presente
durante la ejecución. Lenguajes de programación que tradicionalmente son
interpretados son el LISP y el BASIC.
14. Enlazadores
Por simplificación y para facilitar la comprensión de los conceptos anteriores se ha
señalado que los compiladores y los ensambladores (caso particular de
compilador) generan código máquina que puede ser ejecutado por el ordenador.
Sin embargo esto no es totalmente cierto ya que hay una etapa de enlazado que
debe ser realizada por otro programa denominado enlazador . Lo habitual es que
durante la escritura de un programa sea necesario utilizar otros subprogramas en
forma de bibliotecas de funciones o bien que el propio programa esté formado
realmente por varios programas almacenados en diferentes ficheos. Esta situación
hace que durante la compilación de cada módulo no se conozca con exactitud la
ubicación de las instrucciones del resto de programas o bibliotecas de funciones.
El papel del enlazador es unir en un único fichero ejecutable el resultado de todas
las compilaciones así como las bibliotecas estáticas de funciones. Es frecuente
que el enlazado sea un paso más de la compilación y que se ejecute
inmediatamente tras la compilación de todos los ficheros.
Es habitual denominar a cada uno de los ficheros que participan en el desarrollo
de un programa con nombres genéricos que identifican en qué fase se
encuentran. Por ejemplo, las instrucciones que escribe directamente el
programador y que forman el programa en el lenguaje de programación escogido
como ficheros fuente. El resultado de la compilación de estos programas se
denomina fichero objeto y por el último el resultado del enlazado fichero ejecutable
.Es este último el único que puede entender un ordenador sin la presencia del
compilador. En el caso de los lenguajes interpretados el fichero fuente es
directamente interpretado y ejecutado por el interprete.
Depuradores
Una vez editado y compilado el programa es necesario ejecutarlo, pero es habitual
que durante el desarrollo de una aplicación que generen ficheros ejecutables que
aunque sean correctos desde un punto de vista sintáctico no realicen lo que
realmente se espera de ellos por lo que se consideran que no funcionan
correctamente. Los depuradores son capaces de ejecutar el programa paso a
paso incluyendo además un conjunto de facilidades que permiten observar el valor
de las variables y estructuras de datos permitiendo así una mejor localización de
errores no evidentes.
10.6. ¿En que inciden las características de un buen lenguaje de
programación en el desarrollo de aplicaciones altamente efectivas y
eficientes?
Las características que inciden para que un lenguaje sea eficiente son:
La compatibilidad con los diferentes sistemas operativos.
15. Manejo y velocidad de procesamiento de la información.
Sencillo, con el fin de una administración y mantenimiento más fácil y entendible
para la persona que quiere manejar el programa.
Versatilidad con otros lenguajes.
Elementos especiales de un lenguaje, con el fin de resolver un problema
especifico sin tener gastar más tiempo o complicarse.
En conclusión se puede decir que cualquier lenguaje tiene pro y contras, ya que
algunos se enfocan más en ciertas áreas que en otras. Cabe resaltar que el
tiempo de ejecución y los recursos consumidos por un programa dependen más
que todo del algoritmo utilizado y no del lenguajes (Aunque hay lenguajes que
pueden ser más rápido, por su compilador). Por último influye también el
conocimiento del programador que desea realizar el programa, el desarrollo y la
comunidad que cierto lenguaje tiene puesto que la ayuda colectiva da un apoyo
fuerte para que un lenguaje prevalezca sobre otro.
10.7. ¿En cuál paradigma los lenguajes de programación están orientados al
“qué” y no al “cómo”?.
El Paradigma de Programación Lógica, ya que como su nombre lo indica, busca
soluciones basadas en la experiencia y conocimiento del programador, aplicando
inferencia con el fin de obtener soluciones gracias a la combinación de programas
muy aproximados a la realidad. Debido a esto difiere con otros paradigmas de
lenguajes de programación. Además reciben el nombre de lenguajes declarativos,
a causa de trabajar en este significa especificar que hacer y no como hacerlo.
10.8. ¿Por qué es importante la portabilidad de un lenguaje de
programación?
Es importante para que se pueda usar en varios Sistemas Operativos y no
dependa de uno determinado. Por ejemplo Visual Basic solo puede ser ejecutado
en un sistema Windows, mientras que java es muy portables, ya que un programa
java, puede ser ejecutado en cualquier sistema operativo que utilizas, y
dependiendo del manejo, puede ser implementado también como todos
conocemos en los celulares, pero también en electrodomésticos digitales, tales
como lavadoras, secadoras, microondas, etc., ya que este fue el objetivo inicial de
java.
10.9. ¿Evalúe los lenguajes Lisp y Prolog en indique que tipo de aplicaciones
se puede desarrollar con ellos?¿Cual es el más popular?
Lisp
16. Es un lenguaje de programación aplicativo o funcional, de propósito general, se
basa en la aplicación de funciones a los datos y se apoya en la utilización de
funciones matemáticas para el control de los mismos. El elemento fundamental en
el LISP es la lista, más ampliamente el término. Cada función del Lisp y cada
programa que generemos con él vienen dado en forma de lista.
Fue creado originalmente como una notación matemática práctica para los
programas de computadora, basada en el cálculo lambda de Alonzo Church. Se
convirtió rápidamente en el lenguaje de programación favorito en la investigación
de la inteligencia artificial (AI).
Prolog
Lenguaje de programación diseñado para representar y utilizar el conocimiento
que se tiene sobre un determinado dominio. Los programas en Prolog responden
preguntas sobre el tema del cual tienen conocimiento. Prolog es un lenguaje de
programación especialmente indicado para modelar problemas que impliquen
objetos y las relaciones entre ellos.
Prolog se puede utilizar para resolver, básicamente, cualquier tipo de problema.
Principalmente es útil en la gestión de Juegos, en Inteligencia Artificial y Sistemas
Expertos, como lenguaje especialmente pensado para construir bases de
conocimientos basados en la lógica que forman parte importante de cualquier
agente inteligente, en la construcción de Compiladores e Intérpretes, en el
Reconocimiento del Lenguaje Natural, etc.
En conclusión, Prolog y Lisp son dos de los lenguajes de programación más
populares de AI, tienen varias diferencias. Lisp es un lenguaje funcional, mientras
que Prolog es una programación lógica y lenguajes declarativos. Lisp es muy
flexible debido a su prototipado rápido y características macro, por lo que en
realidad permite ampliar el idioma para adaptarse al problema actual. En las áreas
de AI, gráficos e interfaces de usuario, Lisp se ha utilizado ampliamente debido a
esta capacidad de prototipado rápido. Sin embargo, debido a sus habilidades de
programación lógica incorporadas, Prolog es ideal para problemas de AI con
razonamiento simbólico, bases de datos y aplicaciones de análisis de idiomas. La
elección de uno sobre el otro depende completamente del tipo de problema de la
IA que necesita ser resuelto.
10.10. ¿Qué diferencia puede establecer entre HTML, XML y ASP ?
El XML (eXtensive Markup Language) es un lenguaje que fue concebido para
describir información. Su función principal es ayudarnos a organizar contenidos y
eso hace que los documentos XML sean portables hacia diferentes tipos de
aplicaciones.
17. El HTML (HyperText Markup Language) por otro lado ha sido concebido para
mostrar información, determinar como actúa y que hace. Su función radica en
ayudarnos a darle formato a los diversos contenidos de una página.
ASP (Active Server Pages) es un lenguajes enfocado a generar documentos en
HTML de manera automatica.
En conclusión, el XML sirve para describir información y el HTML sirve para darle
formato y presentarla a través de un navegador. O sea que el XML no es ni será
nunca un reemplazo del HTML sino un complemento que sirve para manejar la
información separada del formato. Mientras que el ASP se diferencia de los dos ya
que este si es un lenguaje, con el cual se produce paginas HTML que se envían al
cliente.
10.11. ¿Qué relación puede establecer entre los lenguajes ADA, C++, Java?
Elabore un mapa conceptual.
18. 10.12. ¿Entre los lenguajes Smalltalk, Haskell y Pitón que diferencias y
relaciones puede establecer?
SMALLTALK HASKELL PYTHON
DIFERENCIAS lenguaje orientado
a objetos (OOP).
Está compuesto
por una maquina
virtual
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.
Es un lenguaje
puramente
funcional.
Tiene las
siguientes
funciones:
evaluación
perezosa, tipos
polimórficos
estáticos, tipos
definidos por el
usuario, encaje
por patrones, y
definiciones de
listas.
Se utiliza como
referencia el
entorno de
programación
Hugs y se supone
que el lector tiene
unos mínimos
conocimientos del
modelo de
programación
imperativo o
tradicional.
es un lenguaje de
programación
interpretado y
multiparadigma.
usa tipado
dinámico y conteo
de referencias
para la
administración de
memoria.
Una característica
importante es la
resolución
dinámica de
nombres.
Python permite
dividir el
programa en
módulos
reutilizables
desde otros
programas
Python.
RELACIONES Python al ser multoparadigma tiene muchas funciones que
poseer smalltalk y Haskell.
El smalltalk y Python usa interpretador.
Python al ser tambien un lenguaje orientado a objetos, este
tiene un recolector de basura como Smalltalk.
10.13. ¿ Cual es papel que desempeña la sintaxis en los lenguajes de
programación?
La sintaxis de un lenguaje de programación es la estructura en que se organizan
los distintos elementos sintácticos, como espacios, identificadores, operadores,
etc. Es decir el orden que tienen unos con respecto a otros.
19. Una sintaxis se evalúa según varios criterios: que sea fácil de leer, de escribir, de
verificar (chequear en busca de errores), fácil de traducir y que carezca de
ambigüedad. Esta última significa que un mismo código puede tener 2 o más
interpretaciones o traducciones posibles, en cuyo caso no se puede decidir que
alternativa elegir.
10.14. De acuerdo a su análisis y a su criterio cual de los paradigmas
presenta las mejores condiciones o es el más apto para desarrollar
aplicaciones de software eficientes y efectivas?
Cada paradigma se aplica mejor en ciertos campos, pero En términos generales,
pienso que POO (Programacion Orientada a Objetos) ya que me parece que la
orientación a objetos es una manera natural de pensar las cosas. Se trata de
pensar en el mundo como una relación entre objetos y creo que el mundo real se
asemeja bastante. Por lo tanto, como consecuencia resulta muchas veces "fácil"
abstraer problemas reales y no se requiere de "programación dura" ni de un
entendimiento extenso de cómo funciona exactamente un computador. Como dije
antes resulta "más natural" este paradigma que otros.
10.15. Analice la solución propuesta al problema del enunciado que está a
continuación, comprendiendo los cinco (5) pasos, que debe utilizar para
solucionar problemas de programación (1 Análisis, 2 Elaboración del
algoritmo, 3 Definición de constantes y variables, 4 Escribir programa en
seudolenguaje, 5 Prueba de escritorio).
Enunciado del problema:
Cortolima para su plan de protección a la fauna silvestre, requiere de un software,
que facilite liquidar el pago en pesos colombianos de recompensas, por
recuperación de especies en cautiverio. La categoría para nivel de extinción es I
inminente, A alto, M moderado, B Bajo. El tipo de fauna 1 Aves, 2 Reptiles, 3
Mamíferos. Para ello define la siguiente tabla, de acuerdo a la cantidad de
ejemplares recuperados por categoría y tipo de especie: Para Categoría I se
incrementa el valor de pago en 4 veces, Categoría
A se incrementa en 3, Categoría B se incrementa en 2. Para Aves hasta 20, 2.5
US$ por cada una; más de 50 pero menos de 200, 3.5 US$ por cada una; de 200
en adelante 4 US$ por cada una; Para Reptiles hasta 200, 3.5 US$ por cada 2;
mas de 200 pero menos de 600, 4.2 US$ por cada 2; de 600 en adelante 6.2 US$
por cada 3. Para Mamíferos hasta 200, 4.2 US$ por cada uno; más de 200 3.2
US$ por cada uno.
20. Paso 1
Análisis del problema : Escribir un programa para liquidar el pago en pesos Colombianos por recompensas.
Que piden? Valor a pagar por recompensa.
Que me dan? Tipo de fauna, categoría, cantidad de ejemplares.
Como lo hago? Evaluando el tipo de fauna para determinar la tarifa a aplicar por la cantidad de ejemplares.
Luego dependiendo de la categoría se determina el incremento y se calcula el total a pagar por la
recompensa.
Asignación de valores constantes del problema
II= 4 IA = 3 IB = 2
TAV20 = 2.5 TAV50 = 3.5 TAV200 = 4TRP200 = 3.5 TRP600 = 4.2 TRPM600 = 6.2
TMF200 = 4.2 TMFM200 = 3.2
Expresado de otra forma seria:
Primero se determina de acuerdo al tipo de fauna la tarifa a aplicar
Cuando tipo de fauna 1 y cantidad menor o igual a 20 : vpr = ce * TAV20
Cuando tipo de fauna 1 y cantidad entre 50 y 200 : vpr = ce * TAV50
Cuando tipo de fauna 1 y cantidad más de 200 : vpr = ce * TAV200
Cuando tipo de fauna 2 y cantidad menor o igual a 200 : vpr = ce * TRP200
Cuando tipo de fauna 2 y cantidad entre 201 y 600 : vpr = ce * TRP600
Cuando tipo de fauna 2 y cantidad 600 o más : vpr = ce * TRPM600
Cuando tipo de fauna 3 y cantidad menor o igual a 200 : vpr = ce * TMF200
Cuando tipo de fauna 3 y cantidad más de 200 : vpr = ce * TMFM200
Luego se determina el incremento de acuerdo a la categoría
Cuando categoría es I : vpr = vpr * II
Cuando categoría es A : vpr = vpr * IA
Cuando categoría es B : vpr = vpr * IB
De forma parecida puede plantear la solución, analice, recuerde que también pudiera haber planteado
otra solución que no necesariamente sea igual a esta, lo importante es comprobar que si funciona.
Paso 2
Algoritmo RECOMP
Inicio
1 Conocer los datos de entrada
2 Evaluar el tipo de fauna para Calcular el valor a pagar por recompensa.
3. Evaluar la categoría para calcular el valor del incremento para la recompensa.4 Mostrar
valor del peaje a pagar.
Fin_Algoritmo
Paso 3
Definición y declaración de Constantes y variables:
Const:
IA = 3 IB = 2
TAV20 = 2.5 TAV50 = 3.5 TAV200 = 4 TRP200 = 3.5 TRP600 = 4.2 TRPM600 = 6.2
TMF200 = 4.2 TMFM200 = 3.2
Var
Entrada : tf,cat : Cadena
Cant:Entero
Proceso : vpr: Real
Salida : vpr : Real
Paso 4
Programa RECOMP
Const IA = 3 IB = 2
TAV20 = 2.5 TAV50 = 3.5 TAV200 = 4 TRP200 = 3.5 TRP600 = 4.2
TRPM600 = 6.2 TMF200 = 4.2 TMFM200 = 3.2
VAR
21. Cadena tf, cat
Entero cant
Real vpr
Inicio
vpr=0
Escriba “ Tipo de Fauna [1. Aves, 2. Reptiles, 3. Mamiferos] : “ Lea tf
Escriba “ Categoría nivel de extinsión [I. Inminente, A. Alto, M. Moderado, B. Bajo] : “ Lea cat
Escriba “ Cantidad de la especie : “ Lea cant
Si tf = „1‟ entonces
Si cant < = 20 entonces
vpr = ce * TAV20
sino
Si cant > = 50 y cant < = 200 entonces vpr =ce *
TAV50
sino
Si cant > 200 entonces vpr =
ce * TAV200
Finsi
Finsi
Finsi
Sino
Si tf = „2‟ entonces
Si cant < = 200 entonces vpr
= ce * TRP200
sino
Si cant > 200 y cant < = 600 entonces vpr=ce
* TRP600
sino
vpr = ce * TRPM600
Finsi
Finsi
Sino
Si tf = „3‟ entonces
Si cant < = 200 entonces vpr =
ce * TMF200
sino
vpr = ce * TMFM200
Finsi
Finsi
Finsi
Finsi
//Aquí se evalúa la categoría
Si cat = „I‟ o cat = „i‟ entoces vpr
= vpr * II
sino
Si cat = „A‟ o cat = „a‟ entoces vpr
= vpr * IA
sino
Si cat = „B‟ o cat = „b‟ entoces vpr
= vpr * IB
Finsi
Finsi
Finsi
Escriba „ Recompensa a pagar : „ ,vpr
Fin
Paso 5
Prueba de escritorio
tf cat cant I A B VPR
1 I 20 1 150
3 M 200 1 3360
2 A 10 1 70
22. 11. Escriba un programa en seudolenguaje para el siguiente problema,
aplicando los pasos descritos el documento “Herramientas de
Programación” colocado en Tu Aula “Unidad 1”. La DIAN para el cálculo del
impuesto a pagar por renta determino que la UVT (Unidad de valor tributario)
equivale a $ 31.859. Para calcular las Unidades de Valor tributario del
contribuyente, se debe tomar la renta liquida gravable del declarante y
dividirla en el UVT, el valor resultante o Unidades de Valor Tributario se
deben ubicar en la tabla siguiendo el procedimiento indicado, para
determinar el porcentaje a aplicar y calcular el valor del impuesto a cargo del
contribuyente. La tabla en Unidades de Valor Tributario es así:
De 0 a 1090, 0% o se paga $ 0;
más de 1090 y hasta 1700, renta liquida gravable expresada en UVT menos 1090
por el 19%;
más de 1700 y hasta 4100, renta liquida gravable expresada en UVT menos 1700
por el 28% mas 116 UVT;
más de 4100, renta liquida gravable expresada en UVT menos 4100 por el 33%
mas 788 UVT.
El valor resultante se multiplica por el UVT para indicar el impuesto a cargo
en pesos.
23. 12. Una compañía de seguros requiere de un programa (seudolenguaje) que
le permita establecer la prima anual que deben pagar los clientes de seguros
de vida de acuerdo al rango de edades. Para ello por cada cliente se requiere
la edad y el valor a asegurar. Los porcentajes según la edad son: 2% para
edades entre 5 y 20 años, 3.5% para edades entre 21 y 35 años, 4.8% para
edades entre 36 y 55 años, 6.5% para edades entre 56 o más años. El
programa debe generar una factura indicando el número de identificación,
nombre, edad, valor asegurado y prima anual a pagar.