1 UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICOFacultad de ingeniería Coordinación de materias propedéuticas Coordinación de ingeniería mecánica Programación básica María de los Ángeles Contreras Flores Mayo 2016 “Características y Estructura de un programa en lenguaje C++ ”
2 Contenido Guión explicativo Introducción ObjetivoLenguajes de Programación Lenguaje C. Historia y características Entornos de trabajo Etapas para la creación de un programa en C++ Estructura general de un programa en C++ Bibliografía Referencias mesográficas
3 Guión explicativo Este material ha sido elaborado para los alumnos del curso de Programación Básica de la FIUAEMex, asignatura que forma parte del área de Ciencias Básicas y que es cursada en el primer semestre de la Licenciatura de Ingeniería Mecánica. El contenido que aquí se presenta, ha sido realizado en función de las características de la propia unidad de aprendizaje, la unidad temática III y el contenido de la misma. Para la mayoría de los alumnos del curso, este es el primer acercamiento con la asignatura, motivo por el cual, no se requieren conocimientos previos relacionados con la programación de computadoras. Nota: Se recomienda el uso de Power Point 2016, para la correcta visualización de este material. Contenido
4 Introducción Este curso tiene como intención brindar a los estudiantes, las bases suficientes para comenzar a programar, por ello es importante elegir un entorno de trabajo adecuado, con el equipo y software propios para el desarrollo de los programas. De acuerdo a lo señalado en el objetivo, el alumno debe aprender a programar, y es muy importante que lo haga de manera estándar, es decir, sin restricciones del entorno que se esté utilizando. En este caso, considerando que se trabaja con alumnos de primer semestre, se estará utilizando la plataforma de Windows porque es el software con el que se encuentran familiarizados, además, tiene la ventaja de soportar una gran variedad de software de aplicación y entornos de trabajo. Contenido
5 Introducción El lenguaje de programación que se estará utilizando es C++. La estructura general que lo caracteriza, además de ser sencilla, es prácticamente la misma para cualquier lenguaje de programación. De tal forma que, cuando se comprende, resulta sencillo entender otros lenguajes. Contenido
6 Manejar y aplicar los fundamentos de un lenguaje de programación estructurado (C++) para la implementación de pseudocódigo. Objetivo Contenido
7 Lenguajes de ProgramaciónPhyton Dev C++ Lenguajes de Programación Clasificación Fortran Java Assembly
8 Clasificación de los lenguajes de programaciónConcepto: Los lenguajes de programación son herramientas que permiten la creación de software y programas. Actualmente se clasifican en tres: Lenguajes máquina Lenguaje de bajo nivel (ensamblador) Lenguajes de alto nivel Contenido
9 Lenguajes de alto nivelEstán escritos en leguajes comprensibles sólo para la computadora Las instrucciones son cadenas binarias (llamadas instrucciones máquina o código máquina). Las instrucciones en lenguaje máquina dependen del hardware de la computadora. Lenguajes máquina El lenguaje de bajo nivel por excelencia es el ensamblador. Sus instrucciones son conocidas como nemónicos o Nemotécnicos. Dependen de la máquina empleada. Lenguajes de bajo nivel Son los más utilizados por los programadores Están diseñados para escribir y comprender los programas más fácilmente que los lenguajes máquina y ensambladores. Son independientes de la arquitectura de la computadora, razón por la cual son portables. Ejemplos: C, C++, COBOL, Java, etc. Lenguajes de alto nivel Contenido Figura 1. Lenguajes de programación
10 Traductores de lenguajeSon programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código máquina. Se dividen en: Compiladores Interpretes Contenido
11 Traducción y ejecución línea por líneaTraductores Programa fuente Intérprete Traducción y ejecución línea por línea Un intérprete es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. Un lenguaje que soporte un traductor de tipo intérprete se denomina lenguaje interpretado. BASIC es el modelo por excelencia de este tipo de lenguajes. Contenido Figura 2. Intérprete
12 Compiladores Programa fuente Compilador Programa objeto Un compilador es un programa que traduce un programa fuente escrito en lenguaje de alto nivel a lenguaje máquina. Un programa escrito en lenguaje de alto nivel se llama programa o código fuente. El programa traducido es un programa o código objeto. El compilador traduce sentencia a sentencia, el programa fuente. Algunos ejemplos típicos de lenguajes compiladores son: PASCAL, COBOL, C... Contenido Figura 3. Compilador
13 Fases de la compilaciónPrograma fuente Compilador (traductor) Programa objeto Montador La compilación es el proceso de la traducción de programas fuente a programas objeto. Sin embargo, el programa objeto no ha sido traducido a código máquina sino a ensamblador. Para obtener el programa máquina, debe utilizarse un programa llamado montador o enlazador (linker). El proceso de montaje genera un código en lenguaje máquina directamente ejecutable. Contenido Figura 4. Fases de la compilación
14 Historia y CaracterísticasLenguaje C C++ Historia y Características
15 Historia C es un lenguaje de programación creado en 1969 por Dennis Ritchie y Ken Thompson en los Laboratorios Bell, como evolución de una versión anterior, el lenguaje B, el cual estaba basado en BCPL (desarrollado por Martin Richard,1967). En 1969, B es publicado por primera vez, siendo un trabajo de Kenneth L. Thompson con contribuciones de Dennis M. Ritchie. C Fue desarrollado con la idea de recodificar el sistema operativo UNIX ya que se programaba directamente en ensamblador, teniendo la desventaja de estar vinculado a máquinas concretas (según el juego de instrucciones de cada máquina). Por tanto, era necesario un lenguaje que permitiese al programador dejar de lado el tipo de hardware y conseguir una mayor portabilidad del código, algo que se realizó en B. Contenido
16 Historia Posteriormente, también en los Laboratorios Bell, Dennis Ritchie trabajó en una nueva versión aportando tipos y estructuras de datos con el propósito de obtener una programación más clara con un lenguaje más eficiente. De esta forma nació el lenguaje de programación C. De1970 a 1972, Ritchie y Brian Kernighan, trabajaron en un lenguaje que permitía realizar una programación estructurada que incluía operadores y tipos de datos para programar, tanto en alto como en bajo nivel, de manera simultánea. Esto ha hecho que C sea uno de los lenguajes más populares por el código que produce, además de la facilidad para crear software de sistema y de aplicaciones. Contenido
17 Historia Debido a su popularidad se generaron varias versiones, razón por la cual tuvo que ser estandarizado, siendo el primero en adoptar estándares de ANSI, conocido comúnmente como ANSI C. Posteriormente, obtuvo la certificación de la estandarización en ISO/IEC 9899:1990. Es decir; si creamos un programa bajo este estándar, el código será portátil y podrá compilarse en diferentes computadoras. El lenguaje C ha tenido una gran evolución, lo que ha permitido generar otros lenguajes como el C++ , Objetive C, Dev C++, Borland C, entre otros. Además, ha sido la base para crear otros lenguajes, aunque no son compatibles con C, como el Java, JavaScript, C#, etc. Contenido
18 Figura 5. Evolución del lenguaje de Programación C.Durante1971 y 1972, B evolucionó primero en "Nuevo B" (New B, NB) y después en C. En 1973, C era tan potente que la mayor parte del núcleo de Unix estaba ya escrito en C. 1978 Kernighan y Ritchie publican la descripción del lenguaje C en el libro “The C Programming Language”. En los años 80, C se hizo muy popular y comenzó a desplazar a Basic. Los Compiladores tuvieron mucho auge. Se desarrolla C++. 1983, ANSI establece una especificación estándar de C que concluye en C++ continuo evolucionando. Contenido Figura 5. Evolución del lenguaje de Programación C.
19 Características Del lenguaje CConjunto reducido de palabras reservadas Paso de parámetros a funciones por valor Lenguaje flexible que permite la programación estructurada Bibliotecas que permiten utilizar funciones matemáticas y manejo de archivos Produce código objeto optimizado Características Del lenguaje C Uso diversos tipos de datos y operadores Acceso a memoria de bajo nivel mediante el uso de punteros. Permite realizar programas modulares Contenido Figura 6. Características del lenguaje de Programación C.
20 Entornos de trabajo Plataformas
21 Plataformas Actualmente, existe un gran número de plataformas y sistemas operativos, los cuáles compiten entre sí para abarcar la mayor cantidad de mercado. Los últimos años la tecnología Mac, a cobrado mucha fuerza, sin embargo, Windows continua siendo la plataforma mas extendida. Este curso será desarrollado usando el sistema operativo Windows y el compilador C++, específicamente con el entorno de desarrollo integrado (IDE) Dev C++. Contenido
22 Entornos de trabajo Tal vez esta plataforma (Windows) no es la más adecuada si la intención es ser un programador consumado y se quiere ejercer la profesión. Sin embargo, tienen grandes ventajas para los programadores novatos ya que soporta una gran cantidad de entornos de trabajo. Y … ¿Qué debemos entender por un entorno de trabajo? Contenido
23 Concepto Un entorno de trabajo está formado por el conjunto de instrumentos que facilitan o automatizan las actividades de desarrollo. El entorno de un programador tiene, como mínimo, tres elementos fundamentales para el desarrollo normal de un programa: Un editor con resalto de las palabras reservadas del lenguaje. Compilación y ejecución (automática) de los programas. Dispone de un depurador, herramienta fundamental para el programador. Contenido
24 Concepto La plataforma Windows tiene diferentes opciones de entornos, pero destacan dos: Borland C++ Builder, conocido por ser uno de los mejores en el mercado, sin embargo, para utilizarlo es necesario comprar la licencia y, Dev C++, tiene la ventaja de ser software libre y reúne las tres herramientas mencionadas anteriormente. Este es el software que será empleado en el curso. Observa el siguiente video en el que se muestra como instalarlo https://youtu.be/2z8elG6QU4Y Contenido
25 Etapas para la creación de un programa en C++
26 Figura 7. Metodología del proceso de programaciónRecuerda que las fases para crear un programa son siete, aunque algunos autores consideran seis, porque suponen obvia la primera etapa. 1. Definición del problema Entender que se quiere que haga la computadora. 2. Análisis Definir información de entrada, de salida, métodos y procesos. 3. Diseño Desarrollo de algoritmos utilizando diagramas de flujo o pseudocódigos. 4. Codificación Transcribir el algoritmo a un lenguaje de programación. 5. Pruebas y depuración Quitar errores y verificar que el programa funciona correctamente. 6. Documentación Elaborar manuales técnicos y del usuario. 3. Mantenimiento Cambios, ajustes o complementos que permiten al programa seguir funcionando. Contenido Figura 7. Metodología del proceso de programación
27 Compilación de un programa en CEste material se centra en la cuarta etapa (las anteriores ya han sido trabajadas en el curso), que consiste en la transcripción de los pseudocódigos elaborados en clase a un lenguaje de alto nivel, en este caso será C++. En términos generales, en los programas en C++ los sistemas ++ constan de tres partes: un ambiente de desarrollo de programación, el lenguaje y la biblioteca estándar de C++. La siguiente explicación define un ambiente de desarrollo típico para C++ (Figura 8) Los programas escritos en este lenguaje pasan por seis pasos para ejecutarse: edición, preproceso, compilación, enlace, carga y ejecución. Contenido
28 Figura 8. Ambiente de desarrollo de un programa en C++Consiste en capturar el programa mediante un editor. Puede usarse el editor del programa o uno de textos y guardarlo con la extensión .cpp, .cxx, .c (depende del compilador) El archivo del código fuente se almacena en un dispositivo secundario (HD) Edición Se ejecuta automáticamente antes que el compilador comience la traducción. Obedece a comandos llamados directivas del preprocesador e indica que se ejecutarán ciertas manipulaciones en el programa antes de la compilación. Preproceso Traduce el programa C++ (código fuente) a código en lenguaje máquina, también llamado código objeto. Compilación Relaciona el código objeto con las bibliotecas, crea un archivo ejecutable y lo almacena en disco. Si el programa se compila y se enlaza de manera correcta, se crea un archivo ejecutable. Enlace El cargador toma el archivo ejecutable del disco y lo carga a la memoria. Se cargan también los componentes adicionales de las bibliotecas. Carga El CPU ejecuta el programa, instrucción por instrucción. Ejecución Contenido Figura 8. Ambiente de desarrollo de un programa en C++
29 Estructura general de un programa en C++Pseudocódigo y código
30 En las siguientes diapositivas, se explican los elementos que forman parte de un programa escrito en C. Se parte de la estructura de un pseudocódigo y posteriormente, éste se transcribe a su correspondiente código. Todo es presentado de manera general. Por último, se describen cada uno de los apartados del programa y se muestran algunos ejemplos. Contenido
31 Estructura de un Pseudocódigo/* Comentarios de un párrafo completo. Aclaran que hace el programa, o un aparte de él*/ // Comentarios de una sola línea // Zona de ficheros de cabecera de las librerías // Zona de prototipos de funciones // Zona de variables globales y constantes Programa principal ( ) Inicio Declaración de constantes (locales) Declaración de variables (locales) Cuerpo del programa (estructuras de control) Fin Declaración de funciones Cuerpo de la función Contenido
32 Estructura de un programa en lenguaje C/* Programa que muestra la estructura de un programa en C */ // Declaración de archivos de cabecera (librerías) #include
33 Descripción de los elementos que integran el programaLa estructura de un programa en C resulta muy sencilla si se ha realizado un buen pseudocódigo, debido a que el lenguaje C está estructurado de forma similar. Esta es la razón por la que es muy importante dedicarle el tiempo adecuado a las etapas de análisis y diseño; si se logra un buen resultado, pasar a las siguientes fases resultará más sencillo A continuación se describen estos elementos y la forma en que deben ser considerados en el programa. Contenido
34 Uso de llaves Cada sentencia compuesta se encierra con un par de llaves, {.....}. Las llaves pueden contener combinaciones de sentencias elementales (denominadas sentencias de expresión). Cada sentencia de expresión debe acabar en punto y coma (;). Contenido
35 Comentarios Los comentarios resultan muy útiles para hacer anotaciones en cualquier parte del programa, ya que son ignorados por el compilador y sólo sirven de referencia al programador, algunas veces le ayudan recordar que hacen las rutinas o bien, para guiar a un futuro usuario. Los delimitadores /* y */ son utilizados para realizar comentarios que utilizan más de una línea. Es común que al inicio del programa se inserten comentarios de identificación (quién lo realizó, fecha de creación, etc.), y/o que describan que hace el programa. Por ejemplo: /* Universidad Autónoma del Estado de México Facultad de Ingeniería Programa para sumar dos matrices cuadradas Autor: Juan Pérez Fecha de elaboración: 13 de septiembre de */ Contenido
36 Comentarios Los delimitadores // se emplean para hacer comentarios cortos, estos no deben exceder más de una línea y, también pueden ser utilizados en cualquier parte del programa. A diferencia de los delimitadores para comentarios de párrafo (/*….*/ ) que se abren y cierran, éstos solamente se abren. Ejemplos: // Declaración de variables locales // Rutina para calcular el error relativo Contenido
37 Declaración de archivos de cabecera (librerías)Algunos autores también les llaman bibliotecas. Estás librerías son archivos estándar proporcionados por el fabricante del compilador y declaran funciones, variables y constantes que van a ser utilizadas en el programa. Para hacer uso de estos archivos de cabecera se debe seguir la siguiente sintaxis: #include
38 Declaración de archivos de cabecera (librerías)Algunas de las librerías más utilizadas en C se presentan a continuación: stdio.h: contiene declaraciones de rutinas de entrada/salida. math.h: incluye declaraciones de funciones matemáticas. conio.h: abarca declaraciones para el manejo de los puertos de entrada/salida y consola. string.h: se utiliza para declaraciones de manejo de cadenas. ctype.h: incluye declaraciones para clasificador de caracteres. Contenido
39 Prototipos de funcionesUn prototipo es la declaración de una función que únicamente tiene la cabecera, a diferencia de la declaración completa que debe terminar con punto y coma (;). El prototipo manda un mensaje al compilador indicando que se utilizará una función que va a regresar un dato y qué parámetros utilizará. Ejemplos: void suma( ) void suma_lados ( ) entero producto (n1, n2) Contenido
40 Declaración de variables globales y constantesLas variables y constantes son elementos cuyo propósito es identificar los datos que serán utilizados en las operaciones y cálculos que serán realizados por el programa. Además, permiten reservar el espacio en la memoria de la computadora para almacenar los valores. Las variables y/o constantes globales pueden ser utilizadas en todo el programa y en los módulos o funciones. Contenido
41 main( ) // Programa principalTodo programa escrito en C consta de una o más funciones, una de las cuales se llama main, el programa siempre comienza con la ejecución de esta función. Dentro del main() se indican todas las instrucciones que integran al programa y sirven para solicitar datos, almacenarlos en la memoria, realizar operaciones aritméticas, manejar estructuras de control, etc. Antes de la primera instrucción se debe colocar la llave {, ésta indica el inicio de las instrucciones y, al final la llave }, indica que no hay más instrucciones. Contenido
42 main( ) // Programa principalDespués de las llaves, se declaran las constantes y variables locales; es decir, aquellas que solo son ocupadas por las instrucciones que se encuentran dentro del programa principal o en un procedimiento. Contenido
43 Declaración de funcionesEn esta sección se colocará el conjunto de instrucciones que utiliza el programa y que no están definidas en las librerías ya que realizan tareas que le permitirán al programa principal cumplir con su cometido. Como primera línea debe contener la instrucción que se colocó en el prototipo de la función pero sin el punto y coma “;”, también utiliza las llaves { } para indicar que inician y finalizan las instrucciones de la función; además podemos declarar variables y constantes locales. En sí es otro pequeño programa (ver modularidad). Contenido
44 Declaración de funcionesCada función debe contener: Cabecera, que lleva: el nombre de la función, seguido de una lista opcional de argumentos encerrados con paréntesis. Lista de declaración de argumentos ( sólo si fueron incluidos en la cabecera). Sentencia compuesta, que contiene el resto de la función. Nota: Los argumentos o parámetros, son símbolos que representan información que se le pasa a la función desde otra parte del programa. Contenido
45 Ejemplo Contenido
46 Bibliografía Cairó Osvaldo. (2008). Fundamentos de programación. Piensa en C, Prentice-Hall, México. Corona Nakamura, M. Adriana et al. (2011). Diseño de algoritmos y su codificación en lenguaje C. McGraw-Hill, México. Gottfried Byron, (2006). Programación en C. Mc Graw Hill, México Joyanes Aguilar, Luis. (1998). Metodología de la Programación: Diagramas de Flujo, Algoritmos y Programación estructurada. McGraw-Hill. Contenido
47 Referencias mesográficastrabajo.html “Aprender c++: Elección del entorno de trabajo” https://sites.google.com/site/universidadvirtualbiomedica/unidad-i- introduccion-a-el-lenguaje-c/historia-c https://sites.google.com/site/programacionunouaem/unidad-de- competencia-1/traductores-de-lenguaje https://books.google.com.mx/books?id=CBhWani323wC&pg=PA15&lpg =PA15&dq=preproceso,+compilaci%C3%B3n,+enlazamiento&source=bl& ots=qMvvrv6_vu&sig=H0HnXiVpbhBN1gvSgsMsMHoD7ng&hl=es&sa=X&ve d=0ahUKEwjf2- Tc3ojPAhXI6CYKHRCYCcQQ6AEIJjAC#v=onepage&q=preproceso%2C%2 0compilaci%C3%B3n%2C%20enlazamiento&f=false Contenido