Download Taller fundamentos de programación (460614)
Document related concepts
Transcript
Taller fundamentos de programación M. Viviana Quevedo Jamaica Paula A. Barragán Hernández San Josemaria Escrivá de Balaguer Chía – Cundinamarca 2014 1003 Taller fundamentos de programación M. Viviana Quevedo Jamaica Paula A. Barragán Hernández Francisco Pinzón Lic. Tecnología e informática IED San Josemaria Escrivá de Balaguer Chía - Cundinamarca 2014 1003 Solución. 1. Definir los siguientes términos: Proceso: Un proceso es un conjunto de actividades mutuamente relacionadas o Que, al interactuar, transforman elementos de entrada y los convierten en resultados, Es la consecución de determinados actos, acciones, sucesos o hechos que deben necesariamente sucederse para completar un fin específico. Todos estos pasos o instancias que componen un proceso deben ser organizados, coordinados y realizados de manera sistemática, de a uno por vez (secuencia alternativa) o pueden incluso superponerse las instancias (secuencia simultánea). Proceso es un término que, si bien podemos definir como lo hemos hecho de manera precisa, refiere a diferentes fines según sobre qué estemos hablando Actividad: Es el conjunto de acciones que se llevan a cabo para cumplir las metas de un programa o subprograma de operación, que consiste en la ejecución de ciertos procesos o tareas (mediante la utilización de los recursos humanos, materiales, técnicos, y financieros asignados a la actividad con un costo determinado), y que queda a cargo de una entidad administrativa de nivel intermedio o bajo. Es una categoría programática cuya producción es intermedia, y por tanto, es condición de uno o varios productos terminales. La actividad es la acción presupuestaria de mínimo nivel e indivisible a los propósitos de la asignación formal de recursos. Conjunto de operaciones o tareas que son ejecutadas por una persona o unidad administrativa como parte de una función asignada. Programar: es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. 2. ¿Qué es programación de computadoras? La programación de computadoras es el arte de hacer que una computadora haga lo que nosotros queramos En el nivel más simple consiste en ingresar en la computadora una secuencia de órdenes para lograr un cierto objetivo. En el entorno de MS DOS los usuarios solían crear archivos de texto con comandos denominados "archivos por lotes" (.BAT). Estos simplemente ejecutaban la secuencia de órdenes en lotes, de allí su nombre. Bajo Windows es posible producir estos archivos, aunque en la práctica no es lo más común. Por ejemplo, podrías producir un documento (como este tutorial) compuesto por varios archivos separados. Tu procesador de texto puede crear backups de cada uno de estos archivos cuando guardas una nueve versión de los documentos. Al final del día, querés colocar la versión actual del documento, es decir los últimos archivos, en una carpeta de respaldo. Finalmente, para poner un poco de orden, borras las versiones previas. Un sencillo archivo BAT para hacer esto sería: COPY *.HTM BACKUP DEL *.BAK 3. ¿Qué es el lenguaje binario y assembler? La manera en que las computadoras "hablan entre sí" es conocida por muy pocas personas. Por eso es que ahora vamos a presentar un poquito acerca de lo que es el código ASCII, que es "el idioma de las computadoras”. ASCII son las siglas en inglés de "American Standard Code For Information Interchange", que en español sería algo como Código Americano Estandarizado para el Intercambio de Información. 4. ¿Cómo se clasifican los lenguajes de programación? Los lenguajes de programación se pueden clasificar de acuerdo con diversos criterios. El criterio más simple que se puede considerar hace referencia a la proximidad del lenguaje con la máquina o con el lenguaje natural. De acuerdo con este criterio, existen tres niveles: • Lenguajes de bajo nivel: Lenguajes máquina. • Lenguajes de nivel medio: Lenguajes ensambladores y macroensambladores. • Lenguajes de alto nivel: El resto de los lenguajes, a los que ya hemos hecho referencia. Dado que los lenguajes de programación, en cierto modo, han tenido un desarrollo paralelo a la evolución de los ordenadores, se pueden clasificar atendiendo a su desarrollo histórico. Esta clasificación distingue cinco generaciones de lenguajes: • Primera generación: Lenguajes máquina.• Segunda generación: Ayudas a la programación, como los ensambladores. • Tercera generación: Lenguajes de alto nivel imperativos, que siguen vigentes en la actualidad, como Pascal, Modula• 2, Fortran, Cobol, C y Ada. • Cuarta generación: Lenguajes o entornos de programación orientados básicamente a aplicaciones de gestión y bases de datos, como SQL, Natural, etc. 5. ¿Que son lenguajes de programación de alto, medio y bajo nivel? Con ejemplos Clasificaciones de los lenguajes de alto nivel La siguiente clasificación: Aplicaciones científicas: En las que predominan las operaciones numéricas o matriciales propias de algoritmos matemáticos. Lenguajes adecuados para estas aplicaciones son Fortran y Pascal. Aplicaciones de procesamiento de datos: Donde son frecuentes las operaciones de creación, mantenimiento y consulta sobre ficheros y bases de datos. Dentro de este campo estarían aplicaciones de gestión empresarial, como programas de nóminas, contabilidad, facturación, control de inventario, etc. Lenguajes aptos para este tipo de aplicaciones son Cobol y SQL. Aplicaciones de tratamiento de textos: Asociadas al manejo de textos en lenguaje natural. Lenguajes adecuados para ello son el Snobol y el C. Aplicaciones en inteligencia artificial: Realización de programas que emulan el comportamiento inteligente: algoritmos de juegos, programas de comprensión del lenguaje natural, visión artificial, robótica y sistemas expertos. Los lenguajes que se suelen utilizar en estos casos son el Lisp y el Prolog. Aplicaciones de programación de sistemas: Programación de módulos de sistemas operativos, compiladores, ensambladores, intérpretes y, en general, aquellos de interfaz entre el hardware y los usuarios. Tradicionalmente se utilizaba el lenguaje ensamblador, pero en la actualidad se muestran muy adecuados los lenguajes Ada, C y Modula• 2.Otra forma de clasificar los lenguajes de alto nivel tiene en cuenta el estilo de programación que fomentan, es decir, la filosofía de construcción de programas: Lenguajes imperativos o procedurales. Estos lenguajes se fundamentan en el uso de variables para almacenar valores y el uso de instrucciones que indican las operaciones a realizar sobre los datos. La mayoría de los lenguajes de alto nivel son de este tipo.Lenguajes declarativos. En este caso, el proceso por el cual se ejecuta el programa no aparece de forma explícita. Los programas se construyen mediantela definición de funciones (lenguajes funcionales como Lisp) o expresiones lógicas que indican las relaciones entre determinadas estructuras de datos (lenguajes de programación lógica como Prolog). Lenguajes orientados a objetos. El diseño de los programas se centra más enlos datos y su estructura. Los programas consisten en descripciones de unidades denominadas objetos que encapsulan los datos y las operaciones que actúan sobre ellos. Uno de los lenguajes más usados en esta filosofía es el C++. Lenguajes orientados al problema. Este tipo de lenguajes están diseñados para problemas específicos, principalmente de gestión. Los programas están formados por sentencias que indican qué se quiere hacer. Generalmente, suelen ser generadores de aplicaciones que permiten cierta automatización de la tarea de desarrollo de software de gestión. • Quinta generación: Lenguajes orientados a aplicaciones en Inteligencia Artificial, como Lisp y Prologo. Lenguaje de Programación de Medio NivelLa clasificación de lenguajes de programación, mediante un nivel de abstracción medio, es bastante discutible. Personalmente sostengo sólo por dos niveles de abstracción: bajo nivel y alto nivel. Sin perjuicio de ello, se plasmarán aquí, aquellos argumentos sostenidos, por quienes aceptan este tercer nivel de clasificación. Quienes sostienen la clasificación de lenguajes de programación medio, argumentan que éstos, son aquellos lenguajes que se encuentran, justamente, entre los de bajo nivel y los de alto nivel, ya que poseen características que permiten interactuar directamente con el sistema. Un ejemplo de ello, sería el lenguaje C, el cual puede trabajar (entre otras características) con direcciones de memoria. Sin embargo, dicho acceso, no es efectuado de forma directa (a través de lenguaje máquina o ensamblador), sino que requiere ser “traducido” previamente por su compilador. Por dicha razón, es que asumo a C como lenguaje de alto nivel y descarto la clasificación de lenguajes de medio nivel. Suele colocarse como ejemplo de lenguaje de programación de medio nivel, anterior a C, a BCPL [4], diseñado para escribir Sistemas Operativos y Compiladores. Lenguajes de Programación de Bajo Nivel Los lenguajes de bajo nivel, son aquellos que dependen intrínsecamente del ordenador. Aquellos programas informáticos, programados con lenguajes de bajo nivel, al ser exclusivamente dependientes del hardware, no pueden migrarse, ya que están justamente diseñados, para un hardware específico. Existen dos tipos de lenguajes de bajo nivel: el lenguaje máquina y el lenguaje ensamblador. El lenguaje de máquina (también denominado lenguaje de primera generación) es el sistema de códigos directamente interpretable por un circuito micro programable, como el microprocesador de una computadora o el micro controlador de un autómata. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones de lenguaje de máquina (más los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas. Función en 32bits en código de maquina x86, para calcular el enésimo número dela serie de Fibonacci. Un lenguaje ensamblador o assembler (assembly lenguaje): Es un lenguaje de programación de bajo nivel para los ordenadores, microprocesadores, micro controladores, y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto, específico a cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que, idealmente son portables. Este lenguaje, también es conocido como lenguaje de segunda generación. 6. ¿Cuáles son las ventajas y desventajas de los lenguajes de programación? Ventajas: - El lenguaje C ha sido pensado para ser altamente transportable. -Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas. - Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). -Un sistema de tipos que impide operaciones sin sentido. -Usa un lenguaje de pre-procesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente. - Acceso a memoria de bajo nivel mediante el uso de punteros. - Interrupciones al procesador con uniones. - Un conjunto reducido de palabras clave. - Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros. - Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo Desventajas: Al igual que otros lenguajes tiene sus inconvenientes como: - Recolección de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm. - Soporte para programación orientada a objetos, aunque la implementación original de C++ fue un preprocesador que traducía código fuente de C++ a C. - Encapsulación. -Funciones anidadas, aunque GCC tiene esta característica como extensión. - Polimorfismo en tiempo de código en forma de sobrecarga, sobrecarga de operadores y sólo dispone de un soporte rudimentario para la programación genérica. - Soporte nativo para programación multihilo y redes de computadores. - Carece de instrucciones de entrada/salida, de instrucciones para manejo de cadenas de caracteres, con lo que este trabajo queda para la librería de rutinas, con la consiguiente pérdida de transportabilidad. 7. ¿Que son las palabras reservadas en programación? En los lenguajes informáticos, una palabra reservada es una palabra que tiene un significado gramatical especial para ese lenguaje y no puede ser utilizada como un identificador de objetos en códigos del mismo, como ser variables.Por ejemplo, en SQL, un usuario no puede ser llamado "group", porque la palabra group es usada para indicar que un identificador se refiere a un grupo, no a un usuario. Al tratarse de una palabra clave su uso queda restringido. 8. ¿Qué es la sintaxis de un lenguaje de programación? La sintaxis de un lenguaje de programación es el conjunto de reglas que debemos seguir para que el compilador sea capaz de reconocer nuestro programa como un programa C valido. 9. ¿Qué son los lenguajes de la quinta generación? Es una clasificación para los lenguajes de programación que incluye aquellos que emplean la programación con restricciones para resolver problemas, en lugar de emplear algoritmos escritos por el programador. La mayoría de los lenguajes basados en restricciones, los lenguajes de programación lógica y los declarativos, son lenguajes de quinta generación. 10. Buscar 5 programas de creación de juegos - KPL - Facilita la programación de videojuegos, con impresionantes gráficas y sonidos. - Basic4GL - Programación en BASIC para Windows con soporte OpenGL (2D y 3D) - Panda3D - Engine 3D gratuito usado en la creación de ToonTown por Disney. (Python, C++) - Glest - Juego de estrategia (RTS) en 3D completamente personalizable y gratuito. - Kaneva - Sistema para la creación de juegos multijugador en línea (MMO games). En estado Beta. - Blink 3D - Creador de escenas 3D para uso en internet (juegos, educación, machinima). (Alpha).