Programe C 2.- TRABAJO EN COMPUTADORA Diagrama del Tema Objetivo Características Lenguaje C Trabajo en Computadora Ciclo de Desarrollo en Computadora Ventajas Archivo Fuente Codificación Elementos del Lenguaje C Compilación Archivo Objeto Ejecución Archivo Ejecutable En este Tema se estudian los componentes específicos del lenguaje C; los que corresponden al trabajo en computadora. Esta parte de la programación es muy interesante al igual que laboriosa, por ello, lee y realiza los ejercicios indicados, pues al final, el resultado será muy gratificante. Primero se tratará el ciclo de desarrollo completo para que tenga una visión general y luego nos ocuparemos en detalle de la codificación en Lenguaje C, siendo esta la parte de mayor importancia. 46 Programe C CICLO DE DESARROLLO EN COMPUTADORA APERTURA ¿Conoces la clave morse?, ¿Sabes el lenguaje de señas que utilizan los sordomudos?, ¿Que necesitas para poder comunicarte con alguno de estos lenguajes? De igual manera, en lenguaje C necesitamos saber que significa y que acción realiza cada uno de sus Elementos para poder programar lo que deseemos. DESARROLLO Iniciemos por conocer el Lenguaje de Programación C. LENGUAJE C Lenguaje de programación creado por Dennis Ritchie en los Laboratorios de la Bell Telephone, en el año de 1972. Se diseño con el objetivo realizar el sistema operativo Unix. El Lenguaje C fue llamado así, porque su antecesor se llamaba Lenguaje B. El Lenguaje B fue desarrollado por Ken Thompsom, también en los Laboratorios Bell, por eso se cree que se le nombre así. Propósito del Lenguaje C El lenguaje C es un Lenguaje muy Poderoso, considerado de nivel medio por la interfaz flexible y sencilla que brinda al usuario y la solidez ofrecida para hacer uso del Hardware. Su uso se difundió rápidamente entre los programadores de todo el mundo. Sin embargo diferentes organizaciones comenzaron a utilizar sus propias versiones del Lenguaje C, sucedió que las pequeñas diferencias entre las implementaciones comenzaron a dar problemas. Para resolver estos problemas la ANSI (American National Standards Institute) formó un comité en 1983 para establecer una definición estándar del C que llegó a ser conocida como el C estándar ANSI. Hoy en día casi todos los compiladores de C se adhieren a este estándar. Compilador Es un programa de computadora que se encarga de traducir el código de un Lenguaje de Programación (programa fuente) a otro que pueda ser entendido por la computadora (Programa objeto). Actualmente un compilador incluye los componentes necesarios para realizar todas las fases del ciclo de desarrollo de un Programa. 46 Programe C Componentes del Compilador de Lenguaje C 1. Editor.- Es el componente desde el cual se pueden escribir los comandos del Lenguaje C. 2. Compilador.- Encargado de traducir el programa fuente a objeto y mostrar los errores del código fuente. 3. Linker.- Se encarga de enlazar el código fuente con unos componentes del lenguaje C (llamados librerías), para crear el archivo ejecutable, que puede ser entendido por los humanos. VENTAJAS DEL LENGUAJE C Es un lenguaje poderoso y flexible. Lo que se puede lograr en este lenguaje esta limitado únicamente por la imaginación del programador. Se usa para proyectos tan diversos como sistemas operativos, procesadores de palabras, gráficos, hojas de cálculo, compiladores para otros lenguajes y hasta programación de juegos y robots. Es un lenguaje Común. Preferido por los programadores profesionales, por lo tanto se tienen una amplia variedad de compiladores y accesorios útiles. Es un Lenguaje Transportable. Transportable significa que un programa en C escrito para una computadora (un PC de IBM, por ejemplo) puede ser compilado y ejecutado en otro sistema y ejecutado en otro sistema (una Mac) con pocas o ninguna modificación. Es un Lenguaje de pocas palabras. Contiene solamente unos términos llamados palabras clave que son la base sobre la que esta construida la funcionalidad del Lenguaje. Pudiera pensarse que un Lenguaje con más palabras clave (palabras reservadas), pudiera ser más poderoso esto no es cierto. Conforme se programa en C se puede observar como se puede realizar cualquier tarea. Es modular. El código de C puede (y debe) ser escrito en rutinas llamadas Funciones. Estas funciones pueden ser reutilizadas en otras aplicaciones o programas. Base para otros Lenguajes. Como C++, Java y Visual Fox, Lenguajes orientados a objetos, Tienen estructuras similares por lo que se facilitaría su comprensión. Con todo esto, podemos decir que al aprender el Lenguaje C, no solo se está aprendiendo un Lenguaje de programación poderoso y generalizado, sino que se esta preparando para la Programación Orientada a Objetos. CICLO DE DESARROLLO DE UN PROGRAMA EN C Recuerde que se le llama CICLO DE DESARROLLO DE UN PROGRAMA, a todo el proceso por el que atraviesa un programa incluyendo a los componentes generales y específicos. Ya hemos visto los componentes generales, ahora veremos los componentes específicos del Lenguaje C. En caso de errores se deben de repetir los componentes hasta que el programa este completamente funcional, por ello se le conoce como ciclo. Se culmina con la documentación. El siguiente diagrama represente este proceso. Codificar Código Fuente .C ó .CPP Compilar Código Objeto .OBJ Ejecutar Programa Ejecutable .EXE 47 Programe C Lo primero que se hace es codificar, es decir, escribir los símbolos y palabras reconocidas por el Lenguaje C. CODIFICACIÓN: Consiste en Escribir el Código Fuente especifico de un lenguaje de Programación, usando un Editor de texto o el editor propio del lenguaje. Código Fuente: Es una serie de enunciados o comandos reconocidos por un Lenguaje de Programación, usados para darle instrucciones a la computadora para que ejecute las tareas deseadas. Considere el ejemplo del código Morse o el lenguaje de señas. Es necesario conocer los símbolos utilizados en cada uno de ellos para entenderlos. Más adelante tratare los comandos del Lenguaje C Archivo Fuente: Es el Archivo donde se guarda el código fuente, es necesario para crear las siguientes etapas del programa. Su extensión es .C ó .CPP COMO CREAR EL ARCHIVO FUENTE 1. Asegúrese de que tiene el compilador de C, instalado en su computadora. Generalmente se encuentra en un directorio de la unidad Raiz C:/>. Según la versión, el nombre del directorio puede ser: TC (si se trata de turbo C), BC o Borland (si se trata de Borland C). En ambos compiladores trabajará de forma similar. 2. Acceda al editor con el archivo TC.EXE o BC.EXE (según la versión utilizada), se encuentra dentro del directorio mencionado anteriormente, generalmente dentro de otro directorio llamado BIN. La ruta completa para acceder al editor puede ser: C:\TC\BIN. 3. Cree un programa nuevo, desde el menú File en la opción New. 4. Escriba el código Fuente utilizando las palabras reservadas del Lenguaje C. es importante destacar que todo el código fuente debe de ser escrito en minúsculas. 5. Guarde con frecuencia presionando la Tecla F2; para evitar pérdidas de información. Igualmente puede Guardar desde el menú File en la opción Save. La primera vez que guarde, se mostrará el cuadro de diálogo “Save File As”, en el cuál deberá de especificar la ruta y el nombre que desea para el archivo. 48 Programe C RECOMENDACIONES para guardar el Archivo Fuente. 1. El nombre del archivo fuente debe dar una idea de su contenido, para una mejor y fácil identificación. Es decir debe de ser significativo. 2. El nombre del archivo, solo Acepta nombres de 8 letras máximo. Abrevie el nombre. 3. No acepta caracteres especiales como espacios, acentos, @, #,?, etc. 4. Evite que el archivo se guarde como un código con formato Especial como .DOC, el programa fuente debe de ser grabado como un texto estándar sin formato. 5. La extensión del programa fuente es .C ó .CPP, según el editor que utilice. Se pone en forma automática si lo guarda desde el editor de C. Lo que sigue ahora es Compilar el archivo Fuente para generar el Archivo Objeto. COMPILACIÓN: Se refiere Al proceso que realiza el compilador del Lenguaje, de tomar el archivo fuente como entrada y producir un archivo Objeto. Archivo objeto: Contiene las mismas instrucciones que al archivo fuente pero en instrucciones binarias o Lenguaje Máquina para que pueda ser entendido por la computadora. El nombre del archivo Objeto es el mismo que el archivo Fuente, pero con la extensión .OBJ El archivo .OBJ se genera cuando se compila el programa y esto sucede hasta que el programa fuente este libre de errores. Si el programa fuente tiene errores se deben de corregir y compilar cada vez que se realice alguna corrección, hasta que esté completamente correcto. COMO COMPILAR EN C 1. Compile, Una vez terminado el código fuente del programa compile con las teclas Alt + F9 o desde el menú Compile en la Opción Compile. 2. Corrija los errores, mostrados en la parte de abajo de la ventana. Los errores generalmente se especifican en inglés. IMPORTANTE. 1. Anote en una libreta, la descripción de todos los errores que le muestre el compilador de C. 2. Traduzca la descripción de error al español y anote la solución realizada; para aprender y saber como actuar en situaciones similares. Crear archivo ejecutable Después de que se haya compilado el programa se puede crear el ejecutable. Se obtiene como resultado de enlazar el código objeto con las funciones predefinidas en la Biblioteca de Funciones del Lenguaje C. Biblioteca de Funciones: Es un conjunto de funciones que contienen código C ya compilado, que se proporcionan con el paquete del compilador, ya listas para usarse. 49 Programe C Archivo Ejecutable: Es el archivo ya listo para usarse como cualquier otra aplicación, sin necesidad de tener el compilador de C. Este archivo no es modificable. El archivo ejecutable toma el mismo nombre del código fuente y objeto, pero con la extensión .EXE. EJECUCIÓN DE PROGRAMAS: Se refiere al uso del archivo ejecutable final, en el que se introducen los datos requeridos para obtener el resultado esperado. COMO EJECUTAR EN C 1. Ejecute el programa con las Teclas Crtl + F9 para ver el resultado final del programa ó desde el menú Run del Editor. 2. Cree el Ejecutable. Si todo ha salido utilice la tecla F9 para crear el ejecutable. RECOMENDACIONES para Ejecutar. 1. En caso de que el programa requiera modificaciones, hágalas y vuelva a compilar. 2. Ctrl + F9 Permite ejecutar el programa Desde el editor, ya que se realiza al mismo tiempo el enlace y la ejecución del programa. 3. Debe de saber que posiblemente el archivo ejecutable se guarde en el directorio del Lenguaje; C:\TC\BIN, por ello deberá de buscarlo y copiarlo a la dirección que desee. Salir del Editor Si ha terminado de trabajar con el editor puede cerrarlo con las teclas Alt + x o desde el menú File y luego la opción Quit. Abrir un Archivo existente Posteriormente puede volver a ver el archivo guardado. Ingrese al editor del Lenguaje C y abra el archivo utilizando la Tecla F3 o desde el Menú File y luego la opción Open. Se mostrará la ventana llamada Open a File, desde la cual debe de buscar el archivo en el lugar donde lo guardó. En el recuadro Name escriba el nombre de la unidad en la que tiene guardado el archivo seguido de dos puntos, por ejemplo: C: si se encuentra en el disco duro, ó cualquier letra que le corresponda a su dispositivo de almacenamiento. Eso lo puede ver en el explorador de Windows. Para finalizar el ciclo de desarrollo de un programa es necesario considerar la Documentación. DOCUMENTACIÓN: Comprende la escritura de todo aquello que se pueda mencionar del programa y sea de utilidad para su posterior modificación y mantenimiento. 50 Programe C Según la persona que lo usa, se divide en: Documentación técnica.- Comprende todos aquellos documentos en utilidad al personal informático. Documentación de usuario.- Comprende todos aquellos documentos destinados al usuario en el cual se describan las características de manejo y funcionamiento de los programas, como los donde se expresen las cuestiones técnicas de análisis, diseño, codificación, del programa, es de manuales de usuario. CÓDIGO Para practicar, realice todo el proceso con el siguiente código. Por ahora, no es necesario que entienda el código, basta que lo escriba con cuidado en el editor de C, para evitar errores. Recuerde y ponga en práctica todo lo visto hasta ahora. /*Primer programa*/ #include <stdio.h> #include <conio.h> void main() { clrscr(); printf(“Estoy aprendiendo C“); getch(); } El Diagrama de Flujo de datos sería: Inicio “Estoy aprendiendo C” Fin El resultado Será: Estoy aprendiendo C CIERRE LO QUE DEBES DE SABER I.- Escribe en la línea lo que corresponda, puede orientarse de la lista de respuestas. 1. Nombre del programador que desarrolló el Lenguaje C: _______________________________ 2. Programa de computadora que se encarga de traducir el código de un Lenguaje a otro que pueda ser entendido por la computadora: ____________________________ 3. Son las tres Fases en computadora del ciclo de desarrollo de un programa en C: ______________________, ________________________, _________________________ 4. Es el archivo ya listo para usarse como cualquier otra aplicación, sin necesidad de tener el compilador del Lenguaje tiene la extensión .EXE: _______________________ 5. Algunas ventajas del lenguaje C, son: _____________________, _______________________. 6. Es el proceso de tomar el archivo fuente como entrada y producir un archivo Objeto: ____________________________ LISTA DE RESPUESTAS CODIFICAR, INTERPRETE, ARCHIVO OBJETO, COMPILAR, ARCHIVO FUENTE, EJECUTAR, LENGUAJE C, DENNIS RITCHIE, KEN THOMPSON, COMPILADOR, ARCHIVO EJECUTABLE, PODEROSO, FLEXIBLE, COMPILACIÓN, CICLO DE DESARROLLO DE UN PROGRAMA 51 Programe C II.- Instrucciones: Subraya la respuesta correcta. 1. Es una técnica de diseño de algoritmos que consiste en escribirlos utilizando el español con verbos y acciones definidas, por ejemplo: utilizar la palabra leer para la lectura de datos, la palabra hacer para la asignación, etc. a) Diagrama de Flujo b) Codificación c) Algoritmo d) Pseudocódigo e) Compilación 2. Técnica que consiste en leer un programa escrito en un lenguaje fuente para traducirlo a un programa equivalente en otro lenguaje, el lenguaje objeto. a) Diagrama de Flujo b) Codificación c) Algoritmo d) Pseudocódigo e) Compilación 3. Es una serie de operaciones detalladas y no ambiguas que se ejecutan paso a paso y que conducen a la resolución de un problema a) Diagrama de Flujo b) Codificación c) Algoritmo d) Pseudocódigo e) Compilación 4. Es el proceso de escribir las sentencias reales a un lenguaje de programación. a) Diagrama de Flujo b) Codificación c) Algoritmo d) Pseudocódigo e) Compilación 5. Se refiere a un tipo de programación que produce código con un flujo limpio, un diseño claro y un cierto grado de modularidad o de estructura jerárquica. a) Diagrama de Flujo b) Codificación c) Algoritmo d) Pseudocódigo e) Compilación III.- Escribe en la columna CON TECLAS y en la columna CON MENUS, las teclas y los menús utilizados para realizar la acción solicitada en la primera columna. Considere que se encuentra en el editor del Lenguaje C. ACCIÓN A REALIZAR CON TECLAS CON MENÚS Guardar un archivo fuente Compilar el programa Fuente. Ejecutar el programa Objeto Crear el Archivo Ejecutable Salir del Editor de C CREACIÓN DE UN PROGRAMA EN LENGUAJE C APERTURA ¿Ya deseas programar? Pues en este apartado conocerás el proceso de creación de un programa en Lenguaje C y cuando empieces programar asegúrate de cumplir con todas las indicaciones. Programar es una tarea interesante porque te permite crear tus propios programas que solucionen problemas y de esta manera facilitar el uso de las computadoras a otros usuarios. Algo muy importante que debes de considerar es que la programación es una actividad laboriosa que requiere tiempo, si en algún momento te sientes desesperado no te rindas, te recomiendo que descanses momentáneamente y posteriormente continúes. 52 Programe C DESARROLLO ELEMENTOS GENERALES DEL UN PROGRAMA EN C Para definir las partes que componen un programa en C, se presenta un ejemplo. Se agrega un número secuencial al principio de cada línea para que se puedan identificar y referenciar fácilmente, sin embargo no debes escribir ni los números ni los dos puntos que están al principio de la línea. PROGRAMA PARA SUMAR 2 NÚMEROS ENTEROS 1: # include <stdio.h> 2: # include <conio.h> 3: int num1,num2, suma; 4: void main() 5: { 6: clrscr(); 7: /*Imprime un mensaje para solicitar el primer número */ 8: printf(“Teclea un numero entero entre 1 y 100: ”); 9: scanf(“%d”,&num1); /*almacena el primer número en la variable num1*/ 10: /* Imprime otro mensaje para solicitar el segundo número */ 11: printf(“Teclea otro numero entero entre 1 y 100: “); 12: scanf(“%d”,&num2); /*almacena el segundo número en la variable num2*/ 13: Suma=num1+num2; 14: printf(“%i + %i = %i”,num1,num2,suma); 15: getch(); 16: } Aunque cada uno de los programas son distintos, todos tiene elementos comunes del Lenguaje C, entre los que se encuentran los siguientes: Archivos de Inclusión Se encuentran en las líneas: 1, 2 Comentarios Se encuentran en las líneas: 8, 10, 11, 13 La función main( ) Se encuentra en la línea: 5 Llaves Se encuentran en las líneas: 6, 17 Declaración de variables Se encuentra en las líneas: 3, Enunciados del programa Se encuentran en las líneas: 7, 9, 10, 12, 13, 14, 15, 16 Archivo de Inclusión o de Cabecera Es un archivo que contiene información necesaria para el compilador, ya que en él se encuentran definidas las funciones estándar del Lenguaje C usadas comúnmente, como printf, getch, clrscr, etc. La extensión de estos archivos es .h Los archivos de inclusión también son llamados Librerías. Para añadir un Archivo de Inclusión al momento de compilar el programa, se utiliza la directiva #include EJEMPLO 1: # include <stdio.h> 2: # include <conio.h> Las librerías se incluye para recordar la importancia de su uso; pues si no se agregan no serán reconocidas las funciones estándar de C y por lo tanto los programas que hagas no funcionarán. 53 Programe C Todos los programas en C deben de tener uno o varios de los principales archivos de cabecera: Archivo de Descripción Inclusión stdio.h Stándard Input/Ouptut – Entrada/Salida Estándar stdlib.h Standard Library – Librería Estándar string.h Cadena – Se refiere a las funciones de cadenas math.h Matemáticas – Se refiere a las funciones Matemáticas conio.h Console Input/Ouput – Consola de Entrada/Salida graphics.h Gráficas – Se refiere a las funciones de gráficos Comentarios Son Instrucciones que el compilador ignora, por lo tanto no tienen ningún efecto sobre la manera en que funciona el programa. Su única función es servir como recordatorio para el programador. Para poner un comentario, se comienzan con una diagonal y un asterisco (/*) y luego se termina en forma contraria; un asterisco y una diagonal (*/). Los comentarios le sirven al programador para hacer más comprensible las líneas de código escritas. En BorlandC se utiliza doble diagonal (//). Un comentario puede ocupar parte de una línea, una línea completa, o varias líneas. EJEMPLOS: /* Comentario de una línea */ int a,b,c; /* comentario como parte de una línea */ /* Comentario de varias líneas */ Función main() Es la función principal y el único componente de carácter obligatorio en cualquier programa de C. Solo puede incluirse una vez en cada programa. En su forma más simple consiste en el nombre main, seguido de un par de paréntesis vacíos y un par de llaves. Dentro de las llaves se encuentran los enunciados que forman el cuerpo del programa. En algunas versiones de C, debe de especificar la palabra void, antes de la función main, para indicar que la función NO debe devolver un valor. Quedando de la siguiente manera: void main() { /* aquí se pone todo el cuerpo del programa */ } Llaves Se usan llaves para agrupar las líneas de programa que forman cada función, incluyendo la función main. 54 Programe C Bloque de datos Es un grupo de enunciados encerrados dentro de llaves, que deben de ejecutarse en conjunto. También se le llama Bloque de Código El Lenguaje C tiene muchos usos para los bloques, como ejemplo están los ciclos y las estructuras. Declaración Es una sentencia que introduce un nombre a una variable o función y lo asocia a un tipo de dato(a esto se le llama existencia semántica); para que a partir de ahí el compilador le dé un significado a ese nombre en el programa. Un programa utiliza variables para guardar varios tipos de datos, que pueden cambiar durante la ejecución del programa. En C las variables deben de ser declaradas antes de ser utilizadas. Una declaración de variable le informa al compilador, el nombre de la variable y el tipo de datos que va a almacenar. EJEMPLO: Si declara una variable num de tipo entero: int num; El compilador “sabe” que num es una variable de tal tipo. IMPORTANTE Las declaraciones deben realizarse antes utilizar las variables, de lo contrario el compilador genera un mensaje de error. Una declaración de variable tiene la siguiente forma: Tipo de dato identificador; Donde: El tipo de dato es la palabra reservada de C correspondiente al tipo requerido. Identificador es el nombre de la variable y debe de ajustarse a las reglas acerca de los identificadores de variable como se ha visto anteriormente. Ejemplos: float promedio; char resp; ACTIVIDAD INDIVIDUAL Para recordar las reglas de los identificadores, Escribe en la columna derecha una “i” si el nombre de la variable es incorrecto y “c” si es correcta. Se pueden declarar más de una variable del mismo tipo en una misma línea, separando los identificadores con comas. Ejemplos: float promedio, prom_grupal; int cal1, cal2, cal3; Nombre C/I Ventas Totales _Ventas Totales Ventas_Totales Ventas-Totales 01Inicial Ingresos/Egresos 55 Programe C TIPO DE DATOS Es atributo de los datos que indica el conjunto de valores y las operaciones que se pueden realizar sobre estos valores. Los Tipos de datos pueden clasificarse en: Básicos o Elementales Estructurados Tipos de datos Básicos La principal característica de los datos básicos es que ocupan solo una casilla de memoria; por lo tanto una variable simple hace referencia a un único valor a la vez. Dentro de este grupo se encuentran los tipos: Enteros, flotantes, Caracteres, booleanos. Tipos de datos Estructurados Los datos estructurados se caracterizan por el hecho de que con un nombre (conocido como identificador de variable estructurada) se hace referencia a un grupo de espacios de memoria, es decir, un dato estructurado tiene varios elementos. Los datos estructurados a su vez pueden subdividirse en simples y complejos, de la siguiente manera: Simples Arreglos Registros Conjuntos Complejas Pilas Colas Listas Árboles Por el momento solamente nos dedicaremos a los datos básicos. Tipos de datos Básicos del Lenguaje C Los datos que se van a almacenar en las variables requieren de espacios de almacenamiento diferentes según el dato del que se trate. Los números pequeños (por ejemplo; 299, -17) requieren menos espacio de almacenamiento y las operaciones matemáticas pueden ser más rápidamente ejecutadas. Por lo contrario los números largos y valores con punto decimal (123456.5369801, por ejemplo) requieren más espacio de almacenamiento y más tiempo para las operaciones matemáticas. IMPORTANTE Usando los tipos de datos adecuados se aprovecha el espacio en memoria y se hace más rápida la velocidad de ejecución, es decir se asegura que el programa se ejecuta lo más eficientemente posible. La tabla siguiente, muestra los principales tipos de datos y la cantidad de memoria en bytes que se requiere para guardar una sola variable de cada tipo. Tipo de variable Carácter Entero Entero largo Punto flotante de precisión sencilla Punto flotante de doble precisión Palabra Guarda Bytes Rango clave en C char Letras, símbolos 1 -128 a 127 Int Números Enteros 2 -32768 a 32767 long int -2147483648 a Números Enteros más grandes 4 2147483647 Float Números con Punto decimal. 1.2E-38 a 3.4E381 4 Hasta 7 decimales Double Números con Punto decimal. 2.2E-308 a 1.8E3082 8 Hasta 19 decimales 56 Programe C EJEMPLOS: 1. Almacenar el resultado de una división, o el promedio de un alumno se requiere una variable con decimales. float Division, promedio; 2. Almacenar la edad o el número de hijos de una persona se requiere variables de tipo entero. int edad, num_hijos; 3. Almacenar una letra que sirva como respuesta (s/n), (y/n) se requiere una variable de tipo char. char resp, y; 4. Para almacenar el resultado de 9 elevado a la 7 se requiere una variable de tipo entero largo. Long int exp; ACTIVIDAD INDIVIDUAL 8 1. Escribe el código correcto en Lenguaje C, para declarar las variables y los tipos de datos correctos solicitados. Considerando las variables num, resp, x, precio, sum, m. a) Declara como tipo entero a num, x y m, utilizando una línea de código, para cada variable. b) Declara como tipo entero a num, x y m, utilizando una sola línea de código. c) Declara como float a precio y sum, utilizando una sola línea de código. d) Declara como char a resp. 2. Declara las variables para que sean correctas según la información que va a almacenar. Recuerda que debe Tener un nombre significativo y debe ser del tipo de dato correcto. a) Un número par del 1 al 100 b) Un día del mes (1-31) c) La inicial del nombre de un alumno d) El resultado de realizar la operación 3451 * 278 e) La altura de una persona Enunciados del programa Son los encargados de realizar el trabajo real de un programa en C, ya que; despliegan información en pantalla, leen datos de entrada, ejecutan operaciones, llaman funciones, leen archivos de disco y hacen todas las demás operaciones. IMPORTANTE El punto y coma es un terminador. En C cada enunciado terminal debe llevar el punto y coma (;). Un enunciado terminal es funcional por sí solo no requiere ni contiene a otros. No llevan punto y coma todos los enunciado que contienen a otros, como el caso de la función main( ), la definición de funciones, los ciclos, las estructuras y las instrucciones condicionales. En lugar de punto y coma utilizan llaves. 57 Programe C En los enunciados del programa se utilizan las palabras reservadas, las expresiones, las funciones de Biblioteca, y las funciones definidas por el usuario del Lenguaje C. Palabra reservada Es un identificador que tiene un significado gramatical especial para ese lenguaje y no deberán ser usadas para otro objetivo en un programa en C. Los siguientes son las palabras reservadas del Lenguaje C: Asm auto break case char const Continue default do double else enum Extern float for goto if int Long register return short signed Sizeof Static struct switch Typedef union unsigned void volatile while. ACTIVIDAD INDIVIDUAL 9 Identifica y subraya las palabras reservadas en el siguiente programa; /*programa para calcular la división de 2 números enteros, con función*/ # include <stdio.h> # include <conio.h> int a,b; float c; float divi(int x, int y); /*PROTOTIPO DE LA FUNCION, parametros*/ void main() { clrscr(); /* solicita el primer número */ printf(“Teclea un numero entero entre 1 y 100: “); scanf(“%d”,&a); /* solicita el segundo número */ printf(“Teclea otro numero entero entre 1 y 100: “); scanf(“%d”,&b); c=divi(a,b); /* LLAMADA DE LA FUNCIÓN, argumentos */ printf(“%d * %d = %f”,a,b,c); getch(); } /* DEFINICIÓN DE LA FUNCIÓN*/ float divi(int x, int y) { return( x * y ); } 58 Programe C FUNCIONES Lenguaje C tiene funciones propias, definidas en los archivos de inclusión, también llamadas funciones de Biblioteca, que pueden ser usadas con propósitos generales. Igualmente permite a los usuarios declarar sus propias funciones para realizar tareas específicas. La declaración de una función se conoce en lenguaje C como prototipo de función y proporciona al compilador el nombre y los parámetros de dicha función. Debe declararse antes de ser usada. Conozca los conceptos básicos de parámetro y argumento. Parámetro Es un espacio de memoria que se reserva, al momento de declarar una función, para los valores que necesitará. Cada parámetro debe estar de acuerdo con el tamaño y el tipo de dato del valor que se va a almacenar. Argumento Es el valor que requiere una función al momento de ser utilizada, se relacionan directamente con los parámetros definidos al declarar la función. Cada argumento debe de ponerse en el orden correspondiente al parámetro declarado en la función. Ambos conceptos se pueden apreciar en el programa de ejemplo anterior; en el prototipo de la función se declaran los parámetros y en la llamada de la función se ponen los argumentos correspondientes a los parámetros declarados. IMPORTANTE Se debe de tener cuidado de no confundir estos conceptos. Al momento de poner un argumento debe de tener especial cuidado de establecer una relación en orden ya que a cada parámetro le corresponde un argumento. Función clrscr() Una de las funciones más utilizadas en Lenguaje C, por su utilidad. Proviene de las palabras en inglés clear screen, cuyo significado es Limpiar Pantalla y precisamente esa es su función; limpiar todo lo que este en la pantalla y dejarla lista para desplegar información. La función clrscr no requiere argumentos, y generalmente se utiliza iniciando el programa, después de la llave que inicia la función main(), sin embargo puede usarse en cualquier lugar o momento en que se requiere limpiar la pantalla. void main() { clrscr(); SALIDA EN PANTALLA La función Printf La función printf es parte de la biblioteca estándar de C y es probablemente la versión más versátil de la que dispone un programa para desplegar información en pantalla. 46 Programe C Utilizando printf se puede desplegar de manera fácil texto, valores o una combinación de ambos. Para mostrar texto en pantalla, se pone el texto dentro del paréntesis entre comillas de esta manera: Printf (“Bienvenidos a mi Programa”); Además de imprimir texto en pantalla printf es utilizado para desplegar el valor de las variables del programa. Por ejemplo: Printf(“La suma es total es %d \n”,suma); En este ejemplo se pasan 2 argumentos a la función printf. El primer argumento se encuentra encerrado entre comillas y es llamado el formato de Impresión. El segundo argumento es el nombre de la variable que contiene el valor que se va a imprimir. FORMATO DE IMPRESIÓN Un formato de impresión específica la manera en que se mostrará la información. Los tres posibles componentes de un formato de impresión son los siguientes: El texto literal Una secuencia de escape Un especificador de conversión El Texto Literal Es desplegado exactamente igual a como se escribió. Sin incluir las secuencias de Escape ni los especificadores de conversión. El texto literal en el ejemplo es La suma total es que puede compartir las comillas con %d y \n pero no los incluye, ya que estos no se muestran tal cual, pues tienen otra función. Una Secuencia de Escape Proporciona control especial del formateo de la impresión. En el ejemplo la secuencia de escape es \n, el cual es llamado caracter de nueva línea y significa “moverse al inicio de la nueva línea”. Una secuencia de escape consiste en la diagonal inversa(\), seguida de un solo caracter. Se usa para controlar la posición de la salida de información moviendo el cursor de la pantalla y también sirve para imprimir determinados caracteres que de no hacerlo así podrían tener un significado especial para printf. Las secuencias de escape más utilizadas son: EJEMPLO: Para imprimir una diagonal inversa (\) se deben de poner 2 caracteres de diagonal inversa (\\) en el formato; la primera diagonal inversa le dice a printf que la segunda diagonal inversa debe de ser interpretada como un caracter literal y no como el comienzo de una secuencia de escape. Secuencia de Escape \a \b \n \t \\ \? \’ \” Significado. Campana (alerta) Retroceso Nueva Línea Tabulador Horizontal Diagonal Inversa Signo de Interrogación Comilla Simple(apostrofe) Comillas dobles 47 Programe C Especificador de conversión Consiste en el símbolo de % seguido de un carácter. Un especificador de conversión le indica a printf la manera en que debe de interpretar a la(s) variable(s) que ha(n) de ser impresas, según el tipo de datos del que se trate. El formato de impresión, debe de contener un especificador de conversión para cada variable a imprimir, con el fin de indicar el tipo de dato de la variable. Especificador Tipo de dato Los especificadores más requeridos son: %i Enteros %d Entero del sistema decimal %f Número con punto flotante %u Entero decimal sin signo %ld Entero largo (long) %c Un solo carácter %s Cadena de caracteres %o Número en sistema octal %x Número en sistema hexadecimal Programa de Ejemplo: Inicio #include <stdio.h> total0, n1 0, n20, #include <stdio.h> r0 long total=0; int n1=0, n2=0; n1=993 void main() n2,=541 { clrscr(); total n1*n2 num1=993; num2=541; “valor 1 valor 2 valor3” total= n1 * n2; printf("valor1\tvalor2\ttotal\n"); printf("%i \t %i \t %ld\a", n1,n2,total); n1 n2 total getch(); } Fin La salida del programa será: valor1 993 valor2 541 total 12925 En el programa se utilizan los tipos de datos int y long. long para la variable total pues al realizar una multiplicación con los números asignados a num1 y num2 seguramente se excederá el rango del tipo int. Como puede observar en el primer enunciado printf, se desea imprimir en pantalla únicamente el encabezado, desde luego es texto literal con las secuencias de escape: \t que indican que se deje un espaciado horizontal entre cada palabra y \n que indica que se pase a la siguiente línea. No importa que estén pegadas las palabras con las secuencias de escape. 48 Programe C En el segundo enunciado printf se imprimen los valores de dos variables de tipo int y una variable de tipo long, recuerde que a cada variable le corresponde un especificador de conversión según su tipo de dato, también se indican las secuencias de escape \t para quedar en forma de columna y queden debajo del encabezado. Además de imprimir variables printf, puede imprimir el resultado de una operación. Por ejemplo: printf("El pago de %i * %.2f es:%.2f",capital,interes,(capital*interes)/100); Suponiendo que el valor de capital es 100 y el valor de interés es 1.50, El resultado será: El pago de 100 * 1.50 es: 1.50 IMPORTANTE Observe que se imprimen las variables y también se imprime el resultado de la operación. Además en este ejemplo se utiliza el especificador de conversión para datos de punto flotante con una pequeña modificación: %.2f, esto le indica a printf que imprima solamente 2 decimales y no los 7 de precisión que tiene por defecto este tipo de datos. ACTIVIDAD INDIVIDUAL 10 1. Considerando la actividad individual 8, escribe el código que se te pide en cada caso: Realiza una instrucción para imprimir el resultado de “x*m” Imprime el resultado de “pdec + m” con 3 decimales. Realiza una sola instrucción para imprimir 3 números; uno en cada línea. La función puts La funcion puts() también puede ser usada para desplegar mensajes de texto en la pantalla, pero no puede desplegar variables numéricas. puts toma una sola cadena como su argumento y lo despliega, añadiendo automáticamente un salto de línea al final. Por ejemplo, el enunciado puts(“hola.”); /*Ejecuta la misma acción que el siguiente enunciado con printf */ printf(“hola.\n”); Se puede incluir secuencias de escape (incluyendo \n)en una cadena que se le pasa a puts(). Tienen el mismo efecto que cuando se usan con printf(). Cualquier programa que use puts() debe incluir al archivo de encabezado STDIO.H. Considerando el ejemplo anterior, se puede cambiar el primer enunciado printf por la función puts, ya que imprime solo texto. Las secuencias de escape son aceptadas también y se puede quitar la secuencia de escape \n del final, pues puts automáticamente hará una salto de línea. 49 Programe C Sin embargo no se puede cambiar el segundo enunciado printf, debido a que se requiere la impresión de los valores de las variables. Aquí está el Ejemplo: #include <stdio.h> #include <conio.h> long total; int num1, num2; void main() { clrscr(); num1=993; num2=541; total= num1 * num2; puts("valor1\tvalor2\ttotal"); printf("%i \t %i \t %ld\a",num1,num2,total); getch(); } ENTRADA DE DATOS La función scanf La manera más flexible para que el programa pueda leer datos numéricos del teclado es el uso de la función scanf( ). La función scanf lee datos del teclado de acuerdo con un formato especificado, y asigna los datos de entrada a una o más variables del programa. De manera similar a printf, la función scanf usa un formato para describir el formato de entrada según el tipo de datos de la variable, el formato utiliza los mismos especificadores de conversión que la función printf. Por ejemplo: scanf(“%d”,&num1); /* lee un entero decimal y lo asigna a la variable num1. */ scanf(“%f”,&interes); /*lee un valor de punto flotante y lo asigna a la variable interes*/ El símbolo del ampersand (&) es el operador de dirección del lenguaje C, esto se refiere al uso de una dirección de memoria y los apuntadores que la referencian. Pero no se preocupe, por el momento solo debe de recordar que scanf requiere el & antes del nombre de cualquier variable para que pueda asignar el valor a la variable. Un solo scanf puede aceptar la entrada de más de un valor si se incluyen varios especificadores de conversión en el formato y varias variables precedidas del &. Ejemplo: Scanf(“%i %f”,&num1,&interes); 50 Programe C Este enunciado acepta un valor entero y lo asigna a la variable num1, también acepta un valor de punto flotante y lo almacena en la variable interes. Cuando se leen diversas variables, durante la ejecución del programa, se debe utilizar una separación entre un valor y otro. La separación puede ser un espacio en blanco, un tabulador o una nueva línea (Enter). Por lo tanto, para este ejemplo se puede teclear: 26 14.71 /* los dos valores separados por un espacio */ 26 14.71 /* los dos valores separados por un tabulador */ 26 /* los dos valores separados por un enter */ 14.71 Con esto se concluye que mientras haya un espacio entre los valores, la función scanf puede asignar cada valor a su variable correspondiente. El código para este ejemplo: #include <stdio.h> #include <conio.h> float interes, pago; int capital; void main() { clrscr(); printf("Teclea los dos valores, separados por un espacio: \n"); scanf("%i %f",&capital,&interes); printf("Los valores tecleados son: %i y %.2f",capital,interes); getch(); } ACTIVIDAD INDIVIDUAL 11 1. Considerando el ejercicio individual 8, escribe el código que se te pide en cada caso: Utiliza una instrucción para pedir “pdec”. Utiliza una sola instrucción para solicitar num y x Utiliza una sola instrucción para pedir cad, sin, m. La función gets La función gets obtiene una cadena del teclado. Cuando esta función es llamada lee todos los caracteres tecleados hasta que encuentra el primer carácter de nueva línea (que se genera cuando se oprime Enter). La función deshecha la nueva línea cambiándola por un carácter nulo y le devuelve la cadena al programa que lo llamó. 51 Programe C Ejemplo de uso: #include <stdio.h> #include <conio.h> char cadena[81]; void main() { clrscr(); printf("Teclea tu nombre completo: nombres y apellidos \n"); gets(cadena); printf("El Nombre es: %s",cadena); getch(); } Para comprender mejor este ejemplo es necesario indicar que una cadena de texto es en realidad un arreglo de caracteres, por eso razón se declara la variable cadena como char (que solo acepta un caracter) y luego se indica el número de caracteres requeridos. (Para mayor información consulte el tema arreglos de caracteres). La longitud de línea máxima en la mayoría de las computadoras es de ochenta caracteres, en el ejemplo se declara un arreglo de 81 caracteres para que se pueda almacenar toda una línea de la pantalla más el carácter nulo que gets añade al final de la cadena para indicar que ésta ha terminado. Código de ejemplo: Quizás se pregunte si se podría hacer con la función scanf( ), de la sig. Manera: #include <stdio.h> #include <conio.h> char cadena[81]; void main() { clrscr(); printf("Teclea tu nombre completo \\nombres y apellidos\\: \n"); scanf(“%s”&cadena); /* esta es la línea que cambiaría */ printf("El Nombre es: %s",cadena); getch(); } La respuesta se la daré mostrando los resultados de cada programa. Con gets: Teclea tu nombre completo \nombres y apellidos\: Juan Moisés Yam Chán El Nombre es: Juan Moisés Yam Chán Con scanf: Teclea tu nombre completo \nombres y apellidos\: Juan Moisés Yam Chán El Nombre es: Juan 52 Programe C Así es; con la función scanf solamente se mostrará el primer nombre. Esto sucede porque scanf interpreta que se trata de 4 valores independientes por el espacio que existe entre cada uno y como solamente se tiene una variable, solo se imprime el primer nombre. A diferencia de la función gets que interpreta como termino de una cadena el caracter de nueva línea, por lo tanto acepta toda cadena hasta que se presiona la tecla Enter. La función getch( ) Otra función que le puede ser útil al momento de aceptar algún carácter del teclado es getch( ). La función getch( ) obtiene un carácter del teclado pero no lo muestra en pantalla, por ello generalmente se utiliza para esperar un carácter antes de continuar; Es muy común ponerla antes de la llave de cierre del main. Sin embargo tiene otros usos los cuales se tratarán más adelante. Puede consultar los programas proporcionados de ejemplo en este libro, para verificar el uso de getch. CIERRE LO QUE DEBES DE SABER I.- Escribe en el paréntesis el número que corresponda ( ) En estos archivos se encuentran definidas funciones estándar, como printf, getch, clrscr, etc. Su extensión es .h ( ) Despliegan información en pantalla, leen datos de entrada, ejecutan operaciones, leen archivos de disco y hacen todas las demás operaciones que un programa necesita. ( ) Se usa para declarar tipos de datos enteros ( ) Esta función se usa para desplegar algún texto ( ) Se usa para controlar la posición de la salida de información ( ) Le indica a printf la manera en que debe de interpretar a la variable que ha de ser impresas, según el tipo de datos del que se trate. ( ) Lee datos del teclado de acuerdo con un formato especificado, y asigna los datos de entrada a una o más variables del programa. ( ) Este tipo de dato representa un número real con punto decimal. ( ) Este tipo de dato, permite almacenar cadenas de texto. ( ) Este parámetro sirve para agregar un salto de línea 1. Enunciados del programa 2. float 3. Archivo de Inclusión o de Cabecera 4. Una secuencia de escape 5. Un especificador de conversión 6. Bloque de datos 7. Int 8. La función scanf 9. Printf 10. \n 10. La funcion puts 11.chr 12.\t II.- De los siguientes programas ya codificados en C, describe sobre la línea, de manera general, en que consiste y a un lado del código realiza el diagrama de flujo de datos que se utilizó para crearlo. a) Que hace Este programa: ________________________________________________________ _______________________________________________________________________________ ________________________________________________________________________ 53 Programe C #include <stdio.h> #include <conio.h> float pesos=0,dolar=0, preciod=0; void main() { clrscr(); printf(“Teclea una cantidad en dolares: ”); scanf(“%f”,&dolar); printf(“Escribe el precio del dolar: “); scanf(“%f”,&preciod); pesos=dolar*preciod; printf(“%f Pesos”,pesos); getch(); } b) Que hace el siguiente programa: __________________________________________________ _______________________________________________________________________________ ________________________________________________________________________ #include <stdio.h> #include <conio.h> float total,deposito; int meses; void main () { clrscr(); printf("Escribe el Deposito: "); scanf("%f",&deposito); rintf("Escribe los meses: "); scanf("%i",&meses); total=deposito*.15*12 printf ("invertir %.2f a % i meses = %.2f",deposito,meses,total); getch (); } III.- Instrucciones: Revisa el programa y encuentra 10 errores de sintaxis. Luego describe brevemente de que error se trata para; hacer referencia utiliza el número de cada línea. 1. #include<stdio.c> 2. #include<conio.h> 3. int num1,num2 4. void main(); 5. { 6. clscr(); 7. printf("Escribe un número: "); 8. scanf(“%i”,&num1); 9. prinf("Escribe otro número: "); 10. scanf("%i",num2); 11. printf("La suma es: %i,num1+num2); 12. printf("La Resta es: %i"num-num2); 13. printf("La Multiplicación: %i",num1num2); 14. gech(); 15. } 54 Programe C IV.- Instrucciones: Dado el siguiente programa, escribe el resultado que se obtiene al ejecutarlo. #include<stdio.h> #include<conio.h> main() { clrscr(); int a=6,b=4,dato; dato=(a/2+8); dato=dato*(b + 1); printf(“El valor de dato es: %d\n\n”,dato); dato= (b%2)*a + 10 – (dato / 5); printf(El valor de dato es: %d\n\n”,dato); printf(“”\n\n\nPresiona una tecla para continuar…”); getch(); return 0; } V.- Instrucciones: Realiza el código en Lenguaje C, de los siguientes problemas ya conocidos. 1. Calcular el área de un triángulo. Solicitar los valores necesarios. 2. Hallar el promedio de 3 calificaciones. Pedir las calificaciones. 3. Sumar 2 números. Leer los números. 4. Hallar el área de un círculo. Solicitar los valores necesarios. 5. Hallar el área de un cuadrado. Solicitar los valores necesarios. 6. Calcular cuanto va a ganar un empleado a la semana si le pagan X pesos por hora, si trabaja 40 horas a la semana. 7. Calcular cuanto pagará Claudia en un cyber si se cobra a $10 por hora. Solicitar cuanto tiempo utilizó la computadora en horas y minutos. Considerar el cobro proporcional por minutos. EJERCICIO INDIVIDUAL 2: Realiza el código en Lenguaje C, de los siguientes problemas ya tratados en el apartado anterior: 1. Tres Amigos hicieron una venta una de libros y se reparten las ganancias de acuerdo al siguiente porcentaje: el 25% para el Miguel, el 35% para Antonio y el 45% para Roberto. Si las ganancias fueron de X pesos, ¿Cuánto le corresponde a cada quien? 2. En un partido de basquetball cada jugador anotó al menos un punto, solicitar los puntos de cada jugador para conocer el marcador final. 3. Calcular cuanto va a pagar un alumno por sus útiles escolares, si necesita 6 libretas cuyo precio es el mismo para todas, 2 libros del mismo valor y un paquete de hojas. 4. En cuantas abonos se podrá pagar un celular que cuesta X pesos, si paga Y cantidad quincenalmente. 5. Solicitar 2 números e imprima la suma, la resta, la multiplicación y la división entre ambos. 6. Calcular cuanto dinero ahorraría Marina en su alcancía, durante una semana, si cada día ahorra una cantidad variable. Solicitar las cantidades diarias que ahorra. 7. Calcular e imprimir los tres números que siguen de esta sucesión 2, 5, 8, ___, ___, ___. 8. Federico y Luis juntaron su dinero para comprar una Moto que tanto querían; Federico aporto una cantidad X y Luis aporto una cantidad menor. Solicitar las dos cantidades y determinar cual fue el porcentaje que aporto cada quien, del total juntado. 9. Solicitar un número y calcular el cuadrado y el cubo del mismo. 10. Para tener un 10 en un examen debes de responder 60 aciertos, ¿Cuál será tu calificación? Si solo obtuviste 49 aciertos. 55 Programe C 11. Solicitar una Cantidad de tres dígitos y que muestre por separado cuantas centenas, decenas y unidades tiene, dicha cantidad. Ejemplo: para la cantidad 475; Deberá mostrar: Centenas, 7 Decenas, 5 Unidades 56