Manual laboratorio de programación#1

30
Facultad de Ciencia, Tecnología y Ambiente Departamento de Desarrollo Tecnológico Laboratorio de programación I Manual de laboratorio de programación I Nombre del profesor/a: Elsner González Nombre del estudiante/Autor: Jhoziel Abraham Dávila Pineda Número de grupo: 0114. Carrera: Ingeniería en sistemas de información.

Transcript of Manual laboratorio de programación#1

Page 1: Manual laboratorio de programación#1

Facultad de Ciencia, Tecnología y Ambiente

Departamento de Desarrollo Tecnológico

Laboratorio de programación I

Manual de laboratorio de programación I

Nombre del profesor/a: Elsner González

Nombre del estudiante/Autor:

Jhoziel Abraham Dávila Pineda

Número de grupo: 0114.

Carrera: Ingeniería en sistemas de información.

Managua, Agosto 2016.

Page 2: Manual laboratorio de programación#1

ContenidoContenido1. Qué es C++____________________________________________________________1

2. IDE utilizado durante el curso: CODEBLOCKS 16.01____________________________1

3. ¿Cuál es la diferencia entre C y C++?________________________________________1

4. Conceptos básicos.______________________________________________________2

5. Elementos del lenguaje__________________________________________________2

5.1. Identificadores___________________________________________________________2

5.2. Palabras reservadas_______________________________________________________2

5.3. Comentarios_____________________________________________________________3

5.4. Tipos de datos____________________________________________________________35.4.1 Enteros______________________________________________________________________35.4.2 Flotantes_____________________________________________________________________45.4.3 Caracteres____________________________________________________________________4

5.5. Operadores______________________________________________________________4

6. Declaración de variables_________________________________________________5

7. Sintaxis_______________________________________________________________5

8. Bibliotecas o librerías____________________________________________________5

8.1. Sintaxis para declarar Librerías en C++________________________________________6

9. Sentencias de control____________________________________________________6

9.1. Sentencias condicionales___________________________________________________79.1.1. Sentencia if_________________________________________________________________79.1.2. Sentencia else_______________________________________________________________79.1.3. Sentencia switch_____________________________________________________________8

9.2. Sentencias de control: Iteración_____________________________________________89.2.1. Bucles for:__________________________________________________________________89.2.2. Bucles while:________________________________________________________________99.2.3. Bucles do-while:_____________________________________________________________9

9.3. Sentencias de salto_______________________________________________________109.3.1. Sentencia break____________________________________________________________109.3.2. Sentencia return____________________________________________________________10

10. Arreglos____________________________________________________________10

Page 3: Manual laboratorio de programación#1

10.1. Arreglos bidimensionales________________________________________________11

11. Estructuras_________________________________________________________11

12. Funciones de librería para E/S en el Lenguaje C____________________________12

13. Ficheros____________________________________________________________13

13.1. FILE_________________________________________________________________13

13.2. FOPEN_______________________________________________________________13

13.3. FCLOSE_______________________________________________________________13

13.4. FGETC________________________________________________________________14

13.5. FPUTC_______________________________________________________________14

13.6. FGETS________________________________________________________________14

13.7. FPUTS________________________________________________________________14

13.8. FREAD_______________________________________________________________14

13.9. FWRITE______________________________________________________________15

13.10. FPRINTF______________________________________________________________15

13.11. FSCANF______________________________________________________________15

13.12. FFLUSH_______________________________________________________________15

14. Programación Modular_______________________________________________16

15. Función____________________________________________________________17

15.1. Cómo se ejecutan de Funciones___________________________________________17

15.2. Ámbito de las variables_________________________________________________17

15.3. Forma de transferir argumentos__________________________________________18

15.4. Ejemplo______________________________________________________________18

Page 4: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

1. Qué es C++C++ es un lenguaje de programación orientado a objetos que toma la base del lenguaje C y le agrega la capacidad de abstraer tipos como en Smalltalk.

La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitieran la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.

2. IDE utilizado durante el curso: CODEBLOCKS 16.01

CodeBlocks es un IDE (Integrated Development Environment, Entorno integrado de desarrollo), que permite principalmente el desarrollo en C y C++, Construido alrededor de un plugin marco, Code:: Blocks puede extenderse con plugins. Cualquier tipo de funcionalidad se pueden agregar mediante la instalación de / codificación de un plugin. Por ejemplo, la compilación y depuración de la funcionalidad ya está prevista por los plugins.

Es multiplataforma y libre. Cuenta con el compilador GNU GCC. Además, soporta los compiladores: Borland C++, Compiler, Digital Mars Compiler, GCC, Microsoft visual estudio toolkit, y es posible expandir Code::Blocks por medio de un sin número de plugins.

3. ¿Cuál es la diferencia entre C y C++? C++ es una extensión de C inventado por Bjarne Stroustrup a principio de la década de

1980 en los laboratorios Bell.

Página 1

Page 5: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

Es un lenguaje de programación híbrido. Permite usar tanto la técnica de programación estructurada y como la técnica de programación orientada a objetos.

4. Conceptos básicos.Algunos programas simples están contenido en un solo módulo fuente, por ejemplo: 

nombre.cc

La extensión de los módulos fuente de C++ puede ser cpp (por lo de "C plus plus") o cc.

Para compilarlos hay que ejecutar la línea de comandos: 

CC -g -o nombre nombre.cc

La opción -g genera información adicional por si se quiere utilizar el depurador, el cual se invoca de la forma siguiente: 

gdb nombre cuando se quiere ejecutar nombre bajo el control del depurador.

C++ es compatible hacia abajo con C, lo cual proporciona una vía muy eficaz para aprender C++. Esto es debido a que, como la mayoría de los programas en C son también programas de C++, podemos aprender este último introduciendo en programas en C los elementos nuevos de C++.

5. Elementos del lenguaje

5.1. Identificadores

Son nombres elegidos por el programador para representar entidades (variables, tipos, constantes, etc.) en el programa. El usuario puede elegir cualquier identificador excepto un pequeño grupo que se reserva para usos específicos.

5.2. Palabras reservadas

Tienen un significado predeterminado para el compilador y sólo pueden ser usadas con dicho sentido. En C++ se escriben siempre con minúsculas.

5.3. Comentarios

Un comentario es una secuencia de caracteres que es ignorada por el compilador. Se usan para documentar el programa, de manera que aunque no contribuyan a

Página 2

Page 6: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

resolver el problema, sí ayudan a mejorar la comprensión del programa. Se pueden insertar en el programa de dos maneras: escribiendo un texto entre los símbolos /* y */ (este texto se puede extender a lo largo de varias líneas), o usando el símbolo // (se interpretará como comentario todo lo que siga hasta llegar al final de la línea).

5.4. Tipos de datos

45

5.45.4.1 Enteros

Los enteros son el tipo de dato más primitivo en C. Se usan para representar números enteros. Pero siempre se pueden encontrar otras aplicaciones para los números enteros. En general se pueden usar para representar cualquier variable discreta.

5.4.2 Flotantes

Se denomina flotante a los tipos de datos que representan a los números reales, ya que utilizan un sistema de representación basado en la técnica de coma flotante, que permite operar con números reales de diversas magnitudes.

El tipo de dato flotante en lenguaje C sólo tiene dos tamaños: el float y el double, que son 4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar números decimales, como para representar números enteros con un orden de magnitud muy grande.

Página 3

Page 7: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

5.4.3 Caracteres

Los caracteres se representan utilizando el tipo char, que tiene sólo 1 byte de tamaño. Este tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del sistema. El tipo char es también un tipo entero, ya que puede tomar valores de 0 a 255. Por lo tanto también puede ser signed o unsigned .

5.5. Operadores

6. Declaración de variablesPrimero se especifica el tipo y a continuación una lista de variables y finalmente un punto y coma.

La declaración de variables es uno de los tipos de sentencia de C++. La prueba más clara de esto es que la declaración terminará con un ";". Sintaxis:

Página 4

Page 8: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

También es posible inicializar las variables dentro de la misma declaración. Por ejemplo:

7. Tabla Ascii

ASCII es una sigla para "American Standard Code for Information Interchange"(Código Standard Norteamericano para Intercambio de Información). Este código fue propuesto por Robert W. Bemer, buscando crear códigos para caracteres alfa-numéricos (letras, símbolos, números y acentos). De esta forma sería posible que las computadoras de diferentes fabricantes lograran entender los mismos códigos.

El ASCII es un código numérico que representa los caracteres, usando una escala decimal del 0 al 127. Esos números decimales son convertidos por la computadora en números binarios para ser posteriormente procesados. Por lo tanto, cada una de las letras que escribas va a corresponder a uno de estos códigos.

Página 5

Page 9: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

8. SintaxisSintaxis es la forma correcta en que se deben escribir las instrucciones para el computador en un lenguaje de programación específico. C++ hereda la sintaxis de C estándar, es decir, la mayoría de programas escritos para el C estándar pueden ser compilados en C++.

El punto y coma: El punto y coma es uno de los símbolos más usados en C, C++; y se usa con el fin de indicar el final de una línea de instrucción. El punto y coma es de uso obligatorio.

9. Conversiones de tipo castingEl casting o simplemente cast nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles.

Este cast se realiza a través de un operador de conversión de tipos (type casting operator) y es un recurso a tener en cuenta ya que hay situaciones en que nos puede resultar de gran utilidad.

Hacer uso de un cast es tan sencillo como poner (tipo de dato) delante de la expresión o variable a convertir.

Página 6

Page 10: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

10. Bibliotecas o librerías

En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas otras más.

Al poder incluir estas librerías con definiciones de diferentes funcionalidades podremos ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que necesitemos leer por teclado, debamos entonces crear una función que lo haga (algo realmente complejo), al poder contar con las librerías en C++, podremos hacer uso de una gran variedad de funciones que nos facilitarán la vida y aumentarán la modularidad de nuestros códigos.

Las librerías no son únicamente archivos externos creados por otros, también es posible crear nuestras propias librerías y utilizarlas en nuestros programas. Las librerías pueden tener varias extensiones diferentes, las más comunes son: .lib, .bpl, .a, .dll, .h y algunas más ya no tan comunes.

10.1. Sintaxis para declarar Librerías en C++

La declaración de librerías, tanto en C como en C++, se debe hacer al principio de todo nuestro código, antes de la declaración de cualquier función o línea de código, debemos indicarle al compilador que librerías usar, para el saber qué términos estarán correctos en la escritura de nuestro código y cuáles no. La sintaxis es la siguiente: #include <nombre de la librería> o alternativamente #include "nombre de la librería". Cualquiera de las 2 formas es válida en C++ (no estoy seguro si en C sea válido), ten en cuenta que siempre el nombre de la librería debe ir entre " y " o entre < y >. En tu código puedes declarar todas las librerías que quieras, aunque en realidad no tienen sentido declarar una librería que no vas a usar en tu programa, sin embargo, no existe límite para esto.

11. Sentencias de controlEn C, cualquier expresión finalizada en un punto y coma; forma una sentencia.De todos los tipos, las estructuras (o sentencias) de control son las que controlan la ejecución de las instrucciones de un programa.

Página 7

Page 11: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

La programación estructurada se basa en la utilización de un reducido número de estructurasque permiten hacer que un programa sea suficientemente legible, reduciendo considerablementeel número de errores, y facilitando enormemente la detección y solución de estos.

En C diferenciamos tres tipos de sentencias de control:

Sentencias condicionales o selectivas. Sentencias de iteración o repetitivas (bucles). Sentencias de salto.

11.1. Sentencias condicionales

Hay tres sentencias condicionales en C: if, else y switch.

11.1.1. Sentencia if

La sentencia if nos permite elegir si se ejecuta o no un bloque de instrucciones. La "expresión" del if es una expresión que debe ser evaluada: falsa si es cero y verdadera si vale distinto de cero.

11.1.2. Sentencia else

Una sentencia if cuando incluye un else, permite ejecutar un bloque de código si se cumple la condición y otro bloque diferente de código si la condición no se cumple.

Página 8

Page 12: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

11.1.3. Sentencia switch

Permite seleccionar entre multiples alternativas posibles. La expresión del switch es una variable int o char, que puede tomar los valores, entre otros, dados por "opción 1", "opcion 2", etc.

Página 9

Page 13: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

11.2. Sentencias de control: Iteración

Las instrucciones de iteración también llamados bucles, se ejecutan hasta que se cumpla alguna condición predeterminada en el bucle en el caso del “for” o también en los casos del “while” y “do-while”. Podemos destacar los antes mencionados bucles que son los bucles for,while y do while.

11.2.1. Bucles for:

Tienen una gran potencia y flexibilidad, y tienen un esquema muy sencillo y definido. Este esquema es así:

for(inicialización del bucle; condición; incremento).

Ahora vamos a proceder a definir cada una de las partes del esquema básico, inicialización (exp1): es una asignación que se utiliza para comenzar la variable del bucle, esto es de la variable de la que parte el bucle. Condición (exp2): es una expresión relacional que hace que el bucle concluya cuando no se cumpla. Por último el incremento (exp3): es la parte que determina como cambia la variable hasta que el bucle concluye. Es importante señalar que cada parte ha de ser separado por; .Para que deje de ejecutarse el bucle como antes hemos mencionado depende de la condición, que deberá de ser falsa para que el bucle se detenga.

Debemos tener en cuenta que a diferencia de otros bucles este no llegará a ejecutarse si la condición es falsa, ya que la condición se comprueba antes de entrar en el bucle.

11.2.2. Bucles while:

Tiene cierta semejanza con el bucle for, así es en el uso de una inicialización, una condición y un incremento. Otra de sus similitudes es el momento en el que analizan la condición que en ambos es antes de ejecutar el bucle. Sin embargo, en su esquema básico aunque parezcan diferentes, son el mismo:

Página 10

Page 14: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

11.2.3. Bucles do-while:

Este es el único bucle que al menos se va a ejecutar una vez puesto que este bucle examina la condición una vez se ha ejecutado el bucle, esto es, al final del mismo. El esquema básico de este bucle sería algo así:

11.3. Sentencias de salto

Hay cuatro sentencias de salto en C: break, return, go to y continue. Suelen estar condicionadas (que solo las ejecute el programa en un determinado caso).

11.3.1. Sentencia break

La instrucción de salto break se usa para interrumpir (romper) la ejecución normal de un bucle, es decir, la instrucción break finaliza la ejecución de un bucle y, por tanto, el control del programa se transfiere (salta) a la primera instrucción después del bucle.

11.3.2. Sentencia return

Página 11

Page 15: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

La instrucción de salto return es utilizada en lenguaje C para devolver el control de ejecución desde la función que contiene el return a la rutina que la invocó y para indicar el valor de retorno de una función.

12. Arreglos

Los arreglos o vectores forman parte de la amplia variedad de estructuras de datos que nos ofrece C++, siendo además una de las principales y más útiles estructuras que podremos tener como herramienta de programación. Los arreglos o vectores (como los quieras llamar), son utilizados para almacenar múltiples valores en una única variable. En un aspecto más profundo, los arreglos permiten almacenar muchos valores en posiciones de memoria continuas, lo cual permite acceder a un valor u otro de manera rápida y sencilla. Estos valores pueden ser números, letras o cualquier tipo de variable que deseemos incluso tipos de datos propios.

En múltiples ocasiones es necesario almacenar gran cantidad de información en una variable y a menudo sucede que no conocemos con exactitud la cantidad de datos que debemos almacenar, pero sabemos que sí sería más de uno, como por ejemplo almacenar las identificaciones de las personas ingresadas al sistema. Los arreglos o vectores son una estructura que nos permite solucionar este tipo de problemas.

12.1. Arreglos bidimensionales

Los arreglos bidimensionales son tablas de valores. Cada elemento de un arreglo bidimensional está simultáneamente en una fila y en una columna. En matemáticas, a los arreglos bidimensionales se les llama matrices, y son muy utilizados en problemas de Ingeniería. En un arreglo bidimensional, cada elemento tiene una posición que se identifica mediante dos índices: el de su fila y el de su columna.

Para referenciar un elemento de la matriz, debe darse un nombre de la matriz y el índice de la fila y de la columna que el elemento ocupa en dicha matriz. Es importante que los índices de las matrices tanto de las filas como de las columnas empezar en 0 y terminar en tamaño fila-1 y tamaño columna-1 respectivamente.

Página 12

Page 16: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

13. EstructurasAl contrario que los arreglos, las estructuras nos permiten agrupar varios datos, que mantengan algún tipo de relación, aunque sean de distinto tipo, permitiendo manipularlos todos juntos, usando un mismo identificador, o cada uno por separado.

Las estructuras son llamadas también muy a menudo registros, o en inglés records. Tienen muchos aspectos en común con los registros usados en bases de datos.

El identificador de la estructura es un nombre opcional para referirse a la estructura. Los objetos de estructura son objetos declarados del tipo de la estructura, y su inclusión también es opcional. Sin bien, aun siendo ambos opcionales, al menos uno de estos elementos debe existir. En el interior de una estructura, entre las llaves, se pueden definir todos los elementos que consideremos necesarios, del mismo modo que se declaran los objetos.

Las estructuras pueden referenciarse completas, usando su nombre, como hacemos con los objetos que ya conocemos, y también se puede acceder a los elementos definidos en el interior de la estructura, usando el operador de selección (.), un punto.

Una vez definida una estructura, es decir, si hemos especificado un nombre para ella, se puede usar igual que cualquier otro tipo de C++. Esto significa que se pueden declarar más objetos del tipo de estructura en cualquier parte del programa.

14. Funciones de librería para E/S en el Lenguaje C

Las funciones printf () y scanf () permiten aplicar formato a los datos de E/S, como por ejemplo, cantidad de decimales, justificación de texto, conversión a mayúsculas/minúsculas, numeración hexadecimal, etc. Ambas funciones toman al menos dos argumentos (pueden ser mas): 1. La cadena de formato 2. Los datos a enviar a la salida, en el caso de printf () o a recibir de la entrada, en el caso de scanf () La cadena de formato es un literal encerrado ente comillas dobles (“y “)

Página 13

Page 17: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

precedida de un símbolo '%'. La tabla siguiente muestra especificadores frecuentemente utilizados:

Especificador Significado

C Un carácter (char)

i, d Número entero (int o double)

x, X Número hexadecimal (0-9 A-F)

s Cadena de caracteres (char *)

f Número de punto flotante (float o double)

m.n M cifras enteras y n decimales

- Ajuste de texto a la izquierda

k Número de cifras de un número entero

15. Ficheros

15.1. FILE

C define la estructura de datos FILE en el fichero de cabecera stdio.h para el manejo de ficheros. Nosotros siempre usaremos punteros a estas estructuras.

La definición de ésta estructura depende del compilador, pero en general mantienen un campo con la posición actual de lectura/escritura, un buffer para mejorar las prestaciones de acceso al fichero y algunos campos para uso interno.

15.2. FOPEN

Esta función sirve para abrir y crear ficheros en disco. El valor de retorno es un puntero a una estructura FILE. Los parámetros de entrada son:

1. nombre: una cadena que contiene un nombre de fichero válido, esto depende del sistema operativo que estemos usando. El nombre puede incluir el camino completo.

Página 14

Page 18: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

2. modo: especifica en tipo de fichero que se abrirá o se creará y el tipo de datos que puede contener, de texto o binarios:

o r: sólo lectura. El fichero debe existir.o w: se abre para escritura, se crea un fichero nuevo o se sobrescribe si ya existe.o a: añadir, se abre para escritura, el cursor se sitúa al final del fichero. Si el fichero no

existe, se crea.o r+: lectura y escritura. El fichero debe existir.o w+: lectura y escritura, se crea un fichero nuevo o se sobrescribe si ya existe.o a+: añadir, lectura y escritura, el cursor se sitúa al final del fichero. Si el fichero no existe,

se crea.o t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t"o b: tipo binario.

15.3. FCLOSE

Es importante cerrar los ficheros abiertos antes de abandonar la aplicación. Esta función sirve para eso. Cerrar un fichero almacena los datos que aún están en el buffer de memoria, y actualiza algunos datos de la cabecera del fichero que mantiene el sistema operativo. Además permite que otros programas puedan abrir el fichero para su uso. Muy a menudo, los ficheros no pueden ser compartidos por varios programas.

Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido algún error, el valor de retorno es la constante EOF. El parámetro es un puntero a la estructura FILE del fichero que queremos cerrar.

15.4. FGETC

Esta función lee un carácter desde un fichero.

El valor de retorno es el carácter leído como un unsigned char convertido a int. Si no hay ningún carácter disponible, el valor de retorno es EOF. El parámetro es un puntero a una estructura FILE del fichero del que se hará la lectura.

15.5. FPUTC

Esta función escribe un carácter a un fichero.

El valor de retorno es el carácter escrito, si la operación fue completada con éxito, en caso contrario será EOF. Los parámetros de entrada son el carácter a escribir, convertido a int y un puntero a una estructura FILE del fichero en el que se hará la escritura.

Página 15

Page 19: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

15.6. FGETS

Esta función está diseñada para leer cadenas de caracteres. Leerá hasta n-1 caracteres o hasta que lea un retorno de línea. En este último caso, el carácter de retorno de línea también es leído.

El parámetro n nos permite limitar la lectura para evitar desbordar el espacio disponible en la cadena.

El valor de retorno es un puntero a la cadena leída, si se leyó con éxito, y es NULL si se detecta el final del fichero o si hay un error. Los parámetros son: la cadena a leer, el número de caracteres máximo a leer y un puntero a una estructura FILE del fichero del que se leerá.

15.7. FPUTS

La función fputs escribe una cadena en un fichero. No se añade el carácter de retorno de línea ni el carácter nulo final.

El valor de retorno es un número no negativo o EOF en caso de error. Los parámetros de entrada son la cadena a escribir y un puntero a la estructura FILE del fichero donde se realizará la escritura.

15.8. FREAD

Esta función está pensada para trabajar con registros de longitud constante. Es capaz de leer desde un fichero uno o varios registros de la misma longitud y a partir de una dirección de memoria determinada. El usuario es responsable de asegurarse de que hay espacio suficiente para contener la información leída.

El valor de retorno es el número de registros leídos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE del fichero del que se hará la lectura.

15.9. FWRITE

Esta función también está pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un fichero uno o varios registros de la misma longitud almacenados a partir de una dirección de memoria determinada.

El valor de retorno es el número de registros escritos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de cada

Página 16

Page 20: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

registro, el número de registros a leer y un puntero a la estructura FILE del fichero del que se hará la lectura.

15.10. FPRINTF

La función fprintf funciona igual que printf en cuanto a parámetros, pero la salida se dirige a un fichero en lugar de a la pantalla.

15.11. FSCANF

La función fscanf funciona igual que scanf en cuanto a parámetros, pero la entrada se toma de un fichero en lugar del teclado.

15.12. FFLUSH

Esta función fuerza la salida de los datos acumulados en el buffer de salida del fichero. Para mejorar las prestaciones del manejo de ficheros se utilizan buffers, almacenes temporales de datos en memoria, las operaciones de salida se hacen a través del buffer, y sólo cuando el buffer se llena se realiza la escritura en el disco y se vacía el buffer. En ocasiones nos hace falta vaciar ese buffer de un modo manual, para eso sirve ésta función.

El valor de retorno es cero si la función se ejecutó con éxito, y EOF si hubo algún error. El parámetro de entrada es un puntero a la estructura FILE del fichero del que se quiere vaciar el buffer. Si es NULL se hará el vaciado de todos los ficheros abiertos.

16. Programación Modular

La programación modular es una técnica que consiste en dividir un programa en tareas y dar origen a la creación de pequeños programas llamados módulos, subprogramas o subrutinas con la finalidad de simplificar la elaboración y mantenimiento del mismo, donde cada módulo se codifica y se procesa de manera independiente, sin importar los detalles de otros módulos. Esto facilita la localización de un error cuando se produce. Este tipo de programación es uno de los métodos de diseño más flexibles y potentes para mejorar la productividad de un programa.

Página 17

Page 21: Manual laboratorio de programación#1

Programa Principal

Módulo 1 Módulo 2Módulo 3

SubMódulo 1 SubMódulo 2SubMódulo 5 SubMódulo

6

SubMódulo 3 SubMódulo 4

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

Al método que plantea la solución de un problema principal partiendo de las soluciones de sus subproblemas se le conoce como diseño descendente. Se denomina así ya que inicia en la parte superior con un problema general y el diseño específico de las soluciones de los subproblemas.

Función main()

El papel más importante del programa principal main() es coordinar a las otras funciones mediante llamadas invocaciones.

17. FunciónEs un subprograma que realiza una tarea específica que puede o no recibir valores (parámetros). En C podemos devolver cualquier tipo de datos escalares (puntero, tipo numérico y el tipo carácter o en su caso regresar un valor nulo que llamaremos nada o ninguno). Asimismo, no se pueden devolver arreglos ni estructuras.

El uso de funciones es una práctica común y recomendable ya que permite dividir el código, simplificando así el desarrollo y la depuración del mismo. Para utilizar funciones en un programa es necesario declararlas previamente.

Página 18

Page 22: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

La estructura general de una función en C es la siguiente:

17.1. Cómo se ejecutan de Funciones

El compilador siempre inicia con la primera instrucción que encuentra en el programa principal (main) y continúa ejecutándolo según la estructura de control (secuencial, selectiva o repetitiva) del programa; cuando encuentra la llamada a una función éste se traslada y ejecuta el cuerpo de la función desde la primera instrucción hasta encontrar el fin de la misma; cuando esto sucede el compilador regresa a la siguiente instrucción que llamó a la función y continúa de la misma manera.

17.2. Ámbito de las variables

Variable local. Variable declarada en una determina función, sólo se encuentra disponible durante el funcionamiento de la misma, es decir está en memoria cuando dicha función está activa.

Variable global. Variable declarada fuera de cualquier función y que puede ser utilizada por las funciones que se encuentran después de dicha declaración; por lo tanto si la declaramos junto a las librerías, la podrá utilizar todo el programa. Esta característica es propia del lenguaje C.

17.3. Forma de transferir argumentos

Pase por valor: copia el valor de un argumento de la llamada en el parámetro formal de la función. Por lo tanto, los cambios en los parámetros de la función no afectan a las variables que se usan en la llamada.

Pase por referencia: se copia la dirección del argumento en el parámetro. Los cambios hechos a los parámetros afectan a las variables usadas en la llamada a la función.

Página 19

Page 23: Manual laboratorio de programación#1

01001101 01100001 01101110 01110101 01100001 01101100 00100000 01100100 01100101 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01100001 01100011 01101001 01101111 01101110

17.4. Ejemplo

Vamos a suponer que queremos crear un programa para calcular el precio de un producto basándose en el precio base del mismo y el impuesto aplicable. A continuación mostramos el código fuente de dicho programa:

Página 20