introduccion a la programacion

Upload: juan-pablo-villamil-bonilla

Post on 11-Jul-2015

366 views

Category:

Documents


5 download

TRANSCRIPT

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIAESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA PROGRAMA DE INGENIERIA DE SISTEMAS

301304 INTRODUCCIN A LA PROGRAMACIN MIRIAN BENAVIDES RUANO (Director Nacional)

SERGIO BERMUDEZ ROJAS Acreditador

PASTO Enero de 2011

1

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

ASPECTOS DE PROPIEDAD INTELECTUAL Y VERSIONAMIENTO

El presente mdulo fue diseado en el ao 2004 por el Ing. IVAN ARTURO LOPEZ, docente de la UNAD, y ubicado en el CEAD de Popayn, el Ing. Lpez es Ingeniero de Sistemas, y especialista en Pedagoga para el Desarrollo del Aprendizaje Autnomo y Estudiante master educacin y tics UOC (Universidad Oberta de Catalua). El presente mdulo ha tenido tres actualizaciones, una desarrollada por el Ing. Ivn Lpez en los aos 2005, la segunda hecha en el ao 2008 por la Ing. IRINA NARVAEZ ESPINOSA, quien ha sido tutora de la UNAD en los CEAD de Acacias y Jos Acevedo y Gmez, desde el ao 2001, es Ingeniera de Sistemas, especialista en Pedagoga para el Desarrollo del Aprendizaje Autnomo y aspirante al ttulo de magster en Informtica Educativa. En el ao 2009 el Ing. SERGIO BERMUDEZ ROJAS, tutor del CEAD Barranquilla, apoy el proceso de revisin de estilo del mdulo y dio aportes disciplinares, didcticos y pedaggicos en el proceso de acreditacin de material didctico desarrollado en el mes de JULIO de 2009. La actualizacin ms reciente ha sido desarrollada en ENERO DE 2011 por la Ing. MIRIAN BENAVIDES RUANO, Docente Auxiliar en el CEAD Pasto, Ingeniera de Sistemas, Especialista en Docencia Universitaria y Especialista en Informtica y Telemtica, quien se desempea como Directora del curso a nivel nacional desde AGOSTO de 2010.

2

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

INTRODUCCIN

El curso de introduccin a la programacin es un curso que cobra vital importancia y al cual se le puede sacar el mximo provecho, puesto que los participantes tienen conocimientos previos fuertes, que vienen del curso inmediatamente anterior (algoritmos), y enlaza la ltima unidad donde se inicia el trabajo con un lenguaje de programacin especfico. En este mdulo se incluir un pequeo apartado al retomar conceptos bsicos del lenguaje de programacin, de su compilador, su editor y algunas lecturas que permiten conceptualizar la forma de depurar programas; se reforzar los conceptos sobre funciones, complementndolas con trabajo de recursividad, y a pesar de que en algoritmos se trabaja la parte de funciones es bueno prestarle mucho inters, ya que C++ es un lenguaje que se trabaja todo bajo funciones, luego se contina con un trabajo importante referido a punteros, la razn es que cuando s e habla de funciones, estructuras, archivos, s e j u s t i f i c a l a i m p o r t a n c i a d e l u s o d e punteros. En la segunda unidad se aborda el tema de las estructuras estticas y se dedica todo un captulo a este tema, aunque no es suficiente para abordar todos los apartados, es aqu donde se ve la necesidad de que el estudiante se apropie de los temas e investigue ms por su cuenta, aproveche los recursos de biblioteca y las consultas de Internet para ampliar aun ms los conceptos. Se trabaja tambin el tema de vectores (unidimensionales y bidimensionales), y las cadenas de caracteres. Por ltimo es importante, conocer los mtodos de ordenamiento y de bsqueda, tambin se requiere que los datos no se queden nicamente en la memoria del computador, sino que sean escritos en un dispositivo de almacenamiento para que puedan recuperarse en cualquier momento. Este tema es un poco complejo se pide a los participantes que no solo se queden con los ejercicios propuestos, sino que traten de profundizar ms; esta tarea puede ser apasionante, pues es la base para abordar los temas que se acercan cuando inicien el trabajo con bases de datos. Para terminar, solo resta decir que este modulo est construido, con base en una recopilacin de ejercicios prcticos que llevarn al estudiante a un aprendizaje significativo, complementado con teora, una amplia referencia bibliogrfica y direcciones web, que posibilitarn una mayor autonoma y confianza por parte del estudiante.

3

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

NDICE DE CONTENIDO ITEM INTRODUCCION 1.0 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4 UNIDAD UNO: INTRODUCCION A LA PROGRAMACION EN C O C++ CAPITULO 1: GENERALIDADES Leccin 1: Revisin de conceptos generales de programacin Leccin 2: Editor de Lenguaje C++ Leccin 3: Estructura general de un programa en lenguaje C++ Leccin 4: Definicin de compilador Leccin 5: Depuracin de Programas CAPITULO 2: FUNCIONES Leccin 6: Definicin de una funcin Leccin 7: Declaracin de una funcin Leccin 8: Llamados de funcin Leccin 9: Prototipos Leccin 10: Recursividad CAPITULO 3: APUNTADORES Leccin 11: Declaracin de apuntador Leccin 12: Definicin de un apuntador Leccin 13: Apuntadores y Funciones Leccin 14: Apuntadores y Arreglos Leccin 15: Ejercicios ACTIVIDADES DE AUTOEVALUACIN DE LA UNIDAD 1 TEMA PAG 3 9 11 12 14 15 16 19 21 21 22 23 24 24 27 27 28 31 32 33 35

4

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

2.0 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.4 3.0 3.1 3.1.1 3.1.2

UNIDAD DOS: ARREGLOS CAPITULO 4: ARREGLOS Y CADENAS Leccin 16: Definicin y Declaracin Leccin 17: Arreglos Unidimensionales Leccin 18: Arreglos Bidimensionales Leccin 19: Cadenas de Caracteres Leccin 20: Ejercicios CAPITULO 5: ORDENACION Leccin 21: Definicin Leccin 22: Burbuja Leccin 23: Insercin Leccin 24: Shell Leccin 25: Quicksort CAPITULO 6: BUSQUEDA Leccin 26: Definicin Leccin 27: Lineal Leccin 28: Binaria Leccin 29: De Hash Leccin 30: Ejercicios ACTIVIDADES DE AUTOEVALUACIN DE LA UNIDAD 2 UNIDAD TRES: ESTRUCTURAS Y ARCHIVOS CAPITULO 7: ESTRUCTURAS Leccin 31: Declaracin de una Estructura Leccin 32: Asignacin de Estructuras

36 38 38 40 42 43 44 46 46 48 51 54 57 65 65 65 67 68 69 72 74 75 75 76

5

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

3.1.3 3.1.4 3.1.5 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4

Leccin 33: Estructuras Anidadas Leccin 34: Estructuras Annimas Leccin 35: Ejercicios CAPITULO 8: ARCHIVOS Leccin 36: Definicin de Archivos Leccin 37: Caractersticas de los Archivos Leccin 38: Clasificacin de los Archivos Leccin 39: Tipos de Archivos Leccin 40: Ejercicios CAPITULO 9: ACCESO A LOS ARCHIVOS Leccin 41: Tipos de Acceso Leccin 42: Operaciones que se Realizan a los Archivos Leccin 43: Organizacin de los Archivos Leccin 44: Archivos Tipo Texto Leccin 45: Archivos de acceso directo ACTIVIDADES DE AUTOEVALUACIN DE LA UNIDAD 3 BIBLIOGRAFIA ANEXOS Tipos de Datos ANEXOS ndice de funciones ANEXOS Errores Comunes de Programacin

77 78 81 83 83 83 83 85 86 88 88 92 93 96 104 112 113 114 118 125

6

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

LISTADO DE TABLAS

TEMA TABLA 1. Tipos de datos bsicos TABLA 2. Tipos de datos TABLA 3. Operadores

PAG 18 114 117

7

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

LISTADO DE GRFICOS Y FIGURAS

TEMA FIGURA 1. Partes del editor de Lenguaje C++ FIGURA 2. Ventana de compilacin FIGURA 3. Torres de Hanoi FIGURA 4. Vector FIGURA 5. Matriz FIGURA 6. Funciones para trabajo con archivos FIGURA 7. Ventana de ejecucin 1 FIGURA 8. Recomendacin FIGURA 9. Ventana de ejecucin 2 FIGURA 10. Ventana de ejecucin 3 FIGURA 11. Ventana de ejecucin 3 FIGURA 12. Ventana de ejecucin 5 FIGURA 13. Ventana de ejecucin 6

PAG 14 20 35 40 42 85 96 98 99 102 104 104 106

8

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

UNIDAD 1 Nombre de la Unidad Introduccin INTRODUCCION A LA PROGRAMACION EN C O C++El curso de introduccin a la programacin es un curso que cobra vital importancia y al cual se le puede sacar el mximo provecho, puesto que los participantes tienen conocimientos previos fuertes, que vienen del curso inmediatamente anterior (algoritmos), y enlaza la ltima unidad donde se inicia el trabajo con un lenguaje de programacin especifico. En este modulo se incluir un pequeo apartado al retomar conceptos bsicos del lenguaje de programacin, de su compiladores, de su editor y algunas lecturas que permiten conceptualizar la forma de depurar programas, se reforzar los conceptos sobre funciones, complementndolas con trabajo de recursividad, y a pesar de que en algoritmos se trabaja la parte de funciones es bueno prestarle mucho inters, ya que C++ es un lenguaje que se trabaja todo bajo funciones, luego continuamos con un trabajo importante referido a punteros, la razn es que cuando hablamos de funciones, estructuras, archivos, los punteros cobran vital importancia en el funcionamiento adecuado de estos tems. En una segunda unidad nos afrentamos a las estructuras estticas y le dedicamos todo un capitulo a este tema y consider que no es suficiente para abordar todos los apartados, es aqu donde se ve la necesidad de que el estudiante se apropie de los temas e investigue ms por su cuenta, aproveche los recurso de biblioteca y las consultas de Internet para ampliar aun ms los conceptos, se trabaja tambin y por tratarse de vectores, las cadenas de caracteres. Por ltimo es importante que los datos no se queden nicamente en la memoria del computador, sino que sean escritos en un dispositivo de almacenamiento para que puedan recuperarse en cualquier momento. Este tema es un poco complejo se pide a los participantes que no solo se queden con los ejercicios propuestos, sino que traten de mirar un poco ms este tema, es uno de los ms apasionantes, pues es la base abordar los temas que se acercan cuando inicien el trabajo con bases de datos. Para terminar, solo resta decir que este modulo est construido, con base en una recopilacin de ejercicios prcticos que llevar al estudiante a un aprendizaje significativo, complementado con teora y una amplia referencia bibliogrfica y direcciones web. Nuevamente reitererarles la invitacin a que consulten la diversidad de textos que existen con referencia a los temas que se trabajan en este modulo. La primera unidad de una u otra manera se trata de un pequeo repaso sobre la programacin de computadoras, haciendo especial nfasis en la programacin utilizando un lenguaje especifico, como lo es C++. Es importante que los estudiantes retomen el modulo de algoritmos, para recordar algunos de los conceptos olvidados, lo mismo que bibliografa

Justificacin

9

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION referente al tema. Esta primera unidad comprende una pequea induccin al editor del lenguaje que se utilizar a lo largo del modulo, se prestar primordial inters al tema de las funciones tratado al final del ltimo captulo de algoritmos, pero complementndolo con temas nuevos como son las funciones recursivas. Igualmente estn implcitas diferentes estrategias de pensamiento de orden superior que el estudiante ir afianzado gracias al apoyo permanente del tutor, quien es el mediador del proceso de aprendizaje. A lo largo de esta unidad se presentan una serie de ejercicios que le permiten al estudiante verificar la evolucin de su aprendizaje. Afianzar conocimientos referentes a la programacin de computadoras, con un lenguaje especifico Propsitos de la unidad Realizar recuento de las principales caractersticas de la programacin de computadoras Dominar de manera general el entorno de programacin con el compilador C++ Fortalecer los temas de funciones

Intencionalidades Formativas

Objetivos de la unidad Conocer la funcionalidad del editor del compilador utilizado aqu Motivar a descubrir que otras funciones tiene el editor del lenguaje Determinar las tcnicas de programacin, utilizando C++ como lenguaje de base

Competencias de la unidad El estudiante domina los conceptos previos necesarios para el desarrollo de programas en C++ El estudiante reconoce el funcionamiento general del editor de C++ El estudiante aplica las funciones como herramienta fundamental en la modularizacin de los programas

Metas de aprendizaje El estudiante es capaz de desarrollar programas mediante la utilizacin de funciones

Denominacin de captulos

Generalidades Funciones Apuntadores

10

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

CAPITULO 1: GENERALIDADES Introduccin Es fundamental inicial el curso de introduccin a la programacin, abordando temas que ubiquen al estudiante en el entorno de trabajo, por ello se incluyen temticas generales de gran importancia para comprender los conceptos bsicos de programacin estructurada. Es as como se han elegido cinco lecciones que parten de informacin general sobre los aspectos ms relevantes de la programacin, los requerimientos que se deben tener en cuenta antes de iniciar con la codificacin propiamente dicha de programas en el Lenguaje C o C++. Posteriormente se realiza una descripcin del entorno de trabajo del lenguaje, donde se explica de manera general la forma como se construye un programa, utilizando el entorno propio del lenguaje de programacin y las estructuras bsicas que constituyen un programa en C o C++. Se analiza la temtica de los compiladores y de manera especfica el compilador del lenguae C o C++, para apoyar al estudiante en la comprensin sobre la forma como un conjunto de instrucciones debidamente estructuradas pueden lograr la construccin de programas que sirvan de solucin a problemas especficos que puedan ser resueltos mediante un sistema informtico, partiendo de interpretaciones adecuadas, diseos slidos y revisiones constantes posibiliten depuraciones ptimas que solucionen problemas lgicos y de sintaxis. Finalmente, debido a que el tema de la programacin es bastante amplio, es indispensable que el estudiante utilice todos los recursos que se encuentrena su alcance para lograr una verdadera comprensin de los temas expuestos, puesto que el mdulo constituye un punto de partida para avanzar en su proceso de aprendizaje. Queda abiertan entonces la invitacin a consultar la bibliografa sugerida y aprovechar todas las herramientas que se encuentran en la web para avanzar en el proceso de construccin de conocimiento.

11

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Leccin 1: Revisin de conceptos generales de programacin Programacin: es un proceso mediante el cual se convierten especificaciones generales de la solucin de un problema, en instrucciones que el computador puede interpretar y que producen los resultados deseados (desarrollo de software). Programa: lista de instrucciones que el computador sigue para convertir datos en informacin. Estas dependen del lenguaje de programacin que se utilice. Un programa debe ser: Confiable y funcional Comprensible Documentado Fases para la creacin de un programa Definicin del problema: clara y precisa Anlisis del problema: requiere identificar o Datos de salida (informacin que debe producir el programa) o Datos de entrada (datos que debe suministrar el usuario para lograr los resultados esperados o Datos de proceso (frmulas necesarias para procesar los datos) Diseo de la solucin: lista ordenada y cronolgica de los pasos a seguir para lograr resultados (diagramas de flujo, pseudocdigo, etc.). Debe ser simple, clara, precisa, exacta, tener un orden lgico e indicar su inicio y final. Codificacin: escribir la solucin del problema en un lenguaje de programacin (traducir el diagrama de flujo o pseudocdigo en instrucciones que puedan ser interpretadas por el computador) Prueba y depuracin: ejecutar el software para identificar y eliminar los errores (de sintaxis o de tipo lgico) Documentacin: gua que facilita futuras modificaciones del software

Programacin estructurada: se caracteriza por organizar las instrucciones de manera secuencial, de tal manera que es posible leer la codificacin desde el inicio hasta el final en forma continua sin saltar de un lugar a otro, siguiendo el camino lgico establecido por el programador. En este paradigma de programacin se debe prestar especial atencin a la etapa de diseo de la solucin, una vez establecidos los pasos secuenciales, la codificacin es ms fcil. Caractersticas: la estructura del programa se realiza de la manera ms clara y precisa posible, para ello utiliza:12

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Secuencia: sucesin simple de operaciones Seleccin: bifurcacin condicional de una o ms operaciones Iteraccin: repeticin de tareas mientras se cumple una o ms condiciones

Ventajas: Tiene una estructura clara y por ende una buena presentacin. Es ms fcil de comprender Facilita la revisin de la codificacin Reduce el tiempo de prueba y depuracin Identacin: utilizacin de sangrias (espacios) para facilitar la lectura del programa puesto que muestra en forma grfica las relaciones entre las instrucciones. Para aprovechar la identacin en un programa en C++ se sugiere: Escribir en la misma columna los indicadores de inicio y fin de cada bloque de sentencias Utilizar diferentes sangrias para indicar anidamientos de instrucciones Escribir una instruccin por lnea Lenguaje de Programacin C Segn Cesar Becerra: C es un lenguaje de nivel medio: combina elementos de lenguajes de alto nivel con la funcionalidad del ensamblador. Su cdigo es transportable: funciona en equipos APPLEE como en IBM. Es estructurado: permite el uso de subrutinas (parte del cdigo que maneja sus propias variables y que pueden ser llamadas en diferentes partes del programa principal) Funcionalidad: en un comienzo se utiliz por su potencia y eficacia en programas de sistemas (sistemas operativos, interpretes, editores, ensambladores, compiladores, administradores de bases de datos); pero actualmente para todo tipo de desarrollos. C es compilador, los lenguajes al ser ejecutados pueden interpretarse (lnea a lnea), o compilarse (utiliza compilador para ejecutarse, todo el programa fuente se convierte en programa objeto, de manera que el compilador lo ejecuta directamente).

13

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Leccin 2: Editor de lenguaje C++1 2 3 4 5 6 7 8 9 10

11

12

15

13

14

FIGURA 1: Partes del Editor de lenguaje C++

1.- Procesos de archivo: crear, abrir, guardar . 2.- Procesos de edicin: copiar, cortar, pegar. 3.- Realizar bsquedas por diferentes criterios en un texto de programa 4.- Opciones para ejecutar los programas 5.- Opciones para compilar los programas (una a de las ms importantes) 6.- Parmetros para depurar programas 7.- Opciones necesarias para crear proyectos desde cero 8.- Permite configurar todo el entorno e inclusive opciones de trabajo en modo14

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

grfico 9.- Mode de trabajo con ventanas independientes 10.- Ayuda de comandos, funciones con ejemplos 11.- Barra de men 12.- Editor, espacio para escribir los programas 13.- Espacio donde aparecen ventanas de apoyo al programa 14.- Barra de ayudas y accesos rpidos 15.- Nombre del archivo que esta procesando

Leccin 3: Estructura general de un programa en Lenguaje C Un programa en c++ est constituido bsicamente por: Directivas del pre-procesador: [declaracin de variables globales] [prototipos de funciones] Funcin main [definiciones de funciones]

Directivas del Pre-procesador: en este se encuentra Los archivos de cabecera que permiten indicarle al compilador que se va a hacer uso de las funcionalidades que proporcionan ciertas bibliotecas (en este caso predefinidas). Por ejem plo para emplear la biblioteca de entrada/salida iostream s e d e b e incluir iostream.h. #include Declaracin de variables y constantes globales: las variables y constantes globales son aquellas cu yo valor afecta a todo el programa. Cabecera de funciones: se realiza una descripcin a manera de prototipo de las funciones que se crearan ms adelante. Funcin main(): todo programa escrito en c++ est constituido por funciones, y la funcin principal es main(). Definicin de funciones: es necesario crear las funciones que se definieron15

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

como prototipos para darle viabilidad al programa. Sentencias: cada una de las ordenes que se le da al compilador por medio del lenguaje para que efectu una accin.

Leccin 4: Definicin de Compilador Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto. En el caso de que el lenguaje fuente sea un lenguaje de programacin de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o cdigo de mquina), a dicho traductor se le denomina compilador. Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intrprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al cdigo equivalente y al mismo tiempo lo ejecuta. Histricamente, con la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intrpretes frente a los compiladores, pues el programa fuente sin traducir y el intrprete juntos daban una ocupacin de memoria menor que la resultante de los compiladores. Por ello los primeros ordenadores personales iban siempre acompaados de un intrprete de BASIC (Spectrum, Commodore VIC-20, PC XT de IBM, etc.). La mejor informacin sobre los errores por parte del compilador as como una mayor velocidad de ejecucin del cdigo resultante hizo que poco a poco se impusieran los compiladores. Hoy en da, y con el problema de la memoria prcticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intrpretes, aunque intrpretes como los incluidos en los navegadores de Internet para interpretar el cdigo JVM de Java son la gran excepcin. Ventajas de compilar frente a interpretar: Se compila una vez, se ejecuta n veces. En bucles, la compilacin genera cdigo equivalente al bucle, pero interpretndolo se traduce tantas veces una lnea como veces se repite el bucle. El compilador tiene una visin global del programa, por lo que la informacin de mensajes de error es mas detallada. Ventajas del intrprete frente al compilador:16

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Un intrprete necesita menos memoria que un compilador. En principio eran ms abundantes dado que los ordenadores tenan poca memoria. Permiten una mayor interactividad con el cdigo en tiempo de desarrollo.

Un compilador no es un programa que funciona de manera aislada, sino que necesita de otros programas para conseguir su objetivo: obtener un programa ejecutable a partir de un programa fuente en un lenguaje de alto nivel. Algunos de esos programas son el preprocesador, el linker, el depurador y el ensamblador. El preprocesador se ocupa (dependiendo del lenguaje) de incluir ficheros, expandir macros, eliminar comentarios, y otras tareas similares. El linker se encarga de construir el fichero ejecutable aadiendo al fichero objeto generado por el compilador las cabeceras necesarias y las funciones de librera utilizadas por el programa fuente. El depurador permite, si el compilador ha generado adecuadamente el programa objeto, seguir paso a paso la ejecucin de un programa. Finalmente, muchos compiladores, en vez de generar cdigo objeto, generan un programa en lenguaje ensamblador que debe despus convertirse en un ejecutable mediante un programa ensamblador.

El compilador C ++ DIRECTIVA INCLUDE (Archivos con extensin h): Los archivos con extensin h (Ejemplo: stdio.h, conio.h etc) se llaman archivos de cabecera, contienen informacin tcnica que requiere el compilador para la buena operacin de las funciones que usan los programas. Un programa necesita directivas para incluir archivos, algunas de ellas son: #include #include Los archivos con extensin h viene con el compilador. Pero tambin el programador pueden crear archivos propios, de este tipo. DIRECTIVA #define: (Definicin de Macros) La directiva #define se utiliza para definir un identificador y una cadena que ser sustituida cada vez que s e u t i l i c e el identificador se en el programa. Al identificador se le denomina nombre de la macro y al proceso de reemplazamiento sustitucin de macro.

17

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

El siguiente programa est usando directivas para incluir (macro) constantes. Ejemplos: #define mensaje El sistema no tiene Solucin Otro tipo de macro podra ser: #define CIERTO 1 #define FALSO 0 Una vez se define una macro se puede usar el nombre de ella como parte de la definicin de otra, ejemplo: #define UNO 1 #define DOS #define TRES

UNO + UNO UNO + DOS

Declaracin de Variables Antes del main() o despus de l se deben definir las variables, ejemplo: float a, b, x; Las variables que se declaran dentro del main() se dice que son variables locales, las que se declaran fuera se dicen globales, cuando se analice el concepto de funcin se ampliar la diferencia entre estos tipos de variables. La siguiente tabla muestra los distintos tipos de dato que se pueden usar en C para declarar variables.TIPOS DE DATOS BSICOS RECONOCIDOS POR TURBO C TAMAO en RANGO de Valores que Bytes de la Variable Puede Almacenar Cuando Usamos 1 0..255 ...Z, $ Para almacenar 2 -32767..32768 nmeros enteros Para almacenar nmeros Reales 8 1.7E-308..1.7E308 Variables que 4 3E-38..3E38 almacenan nmeros reales. Punteros near, es, _es, ss Para variables que 2 byte guardan direcciones de memoria 10 bytes 3.4E-4932 a 1.1 E 4932 Variables Reales

TIPO char int double float

pointer

long double

TABLA 1: Tipos de datos bsicos

18

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Leccin 5: Depuracin de Programas La depuracin p e rmit e determinar las causas de los errores y por tanto facilita la correccin de los mismos, en un programa determinado. El proceso de depuracin 1. Estudio de los sntomas del error 2. Determinacin de las causas 3. Correccin 4. Prueba.

Pueden existir varias causas de error que se pueden agrupar en dos grandes grupos: 1.- Errores de sintaxis 2.- Errores lgicos: Para el primer caso, al momento de compilar el programa, este detecta los errores y es posible corregirlos, (ver Figura 2) Mirar anexo referente a errores comunes de programacin y algunas buenas prcticas de programacin, propuesto por Miguel . Toledo Martnez1

19

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

FIGURA 2: Ventana de compilacin Los errores lgicos son ms difciles de corregir, pues el compilador no los detecta. Un ejemplo vlido se muestra al analizar un programa para el pago de la nmina de 500 empleados, se produce una equivocacin a la hora de hacer la frmula de los descuentos, en lugar de realizar la resta se hace una suma. Como se puede ver en este ejemplo es un error muy grave, pero de anlisis y no de sintaxis, por lo tanto el programa no lo detectar. Por lo tanto es indispensable realizar una buena interpretacin del problema para desarrollar el diseo y codificacin del programa.

20

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

CAPITULO 2: FUNCIONES

Introduccin La forma ms razonable de encarar el desarrollo de un programa complicado es aplicar lo que se ha dado en llamar "Programacin Top-Down". Esto implica que, luego de conocer cual es la meta a alcanzar, se subdivide esta en otras varias tareas concurrentes, por ejemplo: Leer un teclado, procesar datos, mostrar los resultados. Luego a estas se las vuelve a dividir en otras menores: Y as se contina hasta llegar a tener un gran conjunto de pequeas y simples tareas, del tipo de "leer una tecla" "imprimir un caracter". Luego slo resta abocarse a resolver cada una de ellas por separado. De esta forma el programador, slo se las tendr que ver con diminutas piezas de programa, de pocas lneas, cuya escritura y correccin posterior es una tarea simple. Tal es el criterio con que est estructurado el lenguaje C, donde una de sus herramientas fundamentales son las funciones. Todo compilador comercial trae una gran cantidad de Libreras de toda ndole, matemticas, de entrada salida, de manejo de textos, de manejo de grficos, etc, que solucionan la mayor parte de los problemas bsicos de programacin. Sin embargo ser inevitable que en algn momento tenga que crear mis propias funciones, las reglas para ello son las que desarrollaremos en este captulo. Comencemos con algunos conceptos bsicos: para hacer que las instrucciones contenidas en una funcin, se ejecuten en determinado momento, no es necesario ms que escribir su nombre como una lnea de sentencia en mi programa. Convencionalmente en C los nombres de las funciones se escriben en minscula y siguen las reglas dadas anteriormente para los de las variables, pero deben ser seguidos, para diferenciarlas de aquellas por un par de parntesis.

Leccin 6: Definicin de una Funcin La definicin de una funcin puede ubicarse en cualquier lugar del programa, con slo dos restricciones: debe hallarse luego de dar su prototipo, y no puede estar dentro de la definicin de otra funcin (incluida main() ). Es decir que a diferencia de Pascal, en C las definiciones no pueden anidarse.

21

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

NOTA: no confundir definicin con llamada; una funcin puede llamar a tantas otras como desee. La definicin debe comenzar con un encabezamiento, que debe coincidir totalmente con el prototipo declarado para la misma, y a continuacin del mismo, encerradas por llaves se escribirn las sentencias que la componen; por ejemplo: #include float mi_funcion(int i, double j ); /* DECLARACION observe que termina en ";" */ main() { float k ; int p ; double z ; ........... /* LLAMADA a la funcin */ k = mi_funcion( p, z ); ........... /* fin de la funcin main() */

}

float mi_funcion(int i, double j ) /* DEFINICION observe que NO lleva ";" */ { float n ................... /* LLAMADA a otra funcin */ printf("%d", i ); ................... return ( 2 * n ); /* RETORNO devolviendo un valor float */ } Pasemos ahora a describir ms puntualmente las distintas modalidades que adoptan las funciones.

Leccin 7: Declaracin de una Funcin Antes de escribir una funcin es necesario informarle al Compilador los tamaos de los valores que se le enviarn en el stack y el tamao de los valores que ella retornar al programa invocante. Estas informaciones estn contenidas en la DECLARACION del PROTOTIPO DE LA FUNCION. Formalmente dicha declaracin queda dada por: tipo del valor de retorno nombre_de_la_funcin(lista de tipos de parmetros)22

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDCTICO DEL CURSO: 301304 INTRODUCCION A LA PROGRAMACION

Algunos ejemplos : float mi_funcion(int i, double j ) ; double otra_funcion(void) ; otra_mas(long p) ; void la_ultima(long double z, char y, int x, unsigned long w) ; El primer trmino del prototipo da, como hemos visto el tipo del dato retornado por la funcin; en caso de obviarse el mismo se toma, por omisin, el tipo int. Sin embargo, aunque la funcin devuelva este tipo de dato, para evitar malas interpretaciones es conveniente explicitarlo. Ya que el "default" del tipo de retorno es el int, debemos indicar cuando la funcin NO retorna nada, esto se realiza por medio de la palabra VOID (sin valor). De la misma manera se acta, cuando no se le enviarn argumentos. Ms adelante se profundizar sobre el tema de los argumentos y sus caractersticas. La declaracin debe anteceder en el programa a la definicin de la funcin. Es normal, por razones de legibilidad de la documentacin, encontrar todas las declaraciones de las funciones usadas en el programa, en el HEADER del mismo, junto con los include de los archivos *.h que tienen los prototipos de las funciones de Librera. Si una ms de nuestras funciones es usada habitualmente, podemos disponer su prototipo en un archivo de texto, e incluirlo las veces que necesitemos, segn se vio en captulos previos.

Leccin 8: Llamados de Funcin Una vez que en su programa se ha definido una funcin, esta puede ser llamada las veces que sean necesarias. Para llamar a una funcin basta con hacer referencia a su nombre y si la misma requiere de parmetros estos debern indicarse dentro de parntesis. Para llamar a una funcin que no requiera de parmetros se deber indicar el nombre de la misma seguida de parntesis vacios. Por ejemplo, para llamar a la funcin cuadrado() vista anteriormente, podemos emplear: cout