Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la...
Transcript of Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la...
![Page 1: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/1.jpg)
Informática II
Ingeniería Electrónica2011
![Page 2: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/2.jpg)
Hola mundo diseccionado...
/*Mi primer programa en C*/
#include <stdio.h>
int main(void){
printf("Hola mundo!\n");return 0;
}
![Page 3: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/3.jpg)
Hola mundo diseccionado...
La 1º línea entre /* y */ es un comentario y será ignorado por el compilador
La línea #include <stdio.h> le indica al preprocesador de C que incluya en el código el archivo de cabecera stdio.h, donde donde están las declaraciones de las funciones de entrada/salida estándar de C
Las líneas que comienzan por # se llaman directivas del preprocesador y no terminan en ;
![Page 4: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/4.jpg)
Modelo de compilación en C
![Page 5: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/5.jpg)
Hola mundo diseccionado...
La línea int main(void) define la cabecera de la función main, el punto donde comienza la ejecución de un programa en C
Puede definirse sin parámetros formales o con dos
La invocación a la función printf("Hola mundo!\n") le indica al ordenador que muestre por pantalla el mensaje que aparece entre comillas dobles
![Page 6: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/6.jpg)
Hola mundo diseccionado
La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK”
C distingue mayúsculas y minúsculas, todas las palabras reservadas del lenguaje están en minúsculas
Cada sentencia termina en ;. Puedo tener múltiples sentencias en 1 sola línea o 1 única sentencia ocupar más de 1 línea
Los espacios en blancos son ignorados
![Page 7: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/7.jpg)
Hola mundo diseccionado
Las llaves { y } indican el comienzo y final del cuerpo de la función main. En general indican bloques de sentencias que deben tratarse como una unidad. Un error común al principio!: desbalance entre el número de llaves abiertas y cerradas, ídem con los () y []
![Page 8: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/8.jpg)
Hola mundo diseccionado...
Cuando se ejecuta aparece en pantalla:Hola mundo! El cursor se sitúa al comienzo de una nueva
línea. Esto lo produce el carácter que aparece luego de \, (carácter especial) que acción especial de impresión se realiza, en este caso un salto de línea
No va ; luego de }
![Page 9: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/9.jpg)
Hola mundo diseccionado...
Un programa en C contiene una o más funciones una de las cuales debe ser int main(void)
Los paréntesis indican función int indica que main retorna un valor
entero cuando es invocada
![Page 10: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/10.jpg)
#include<stdio.h>int main(){ int a, b, c = 0; printf(“Digite el primer numero: ”); scanf(“%d”,&a); printf(“Digite el segundo numero: ”); scanf(“%d”,&b); c = a + b; printf(“El resultado de la suma es: %d\n”,c); return 0; }
Librerías (uso de directivas del preprocesador)
Declaración de variables (las variables son locales en este caso).
Instrucciones (Expresiones aritméticas y lógicas, condicionales (SI), ciclos (HAGA, MIENTRAS)).
Programa principal
ANATOMIA DE UN PROGRAMA EN C
![Page 11: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/11.jpg)
![Page 12: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/12.jpg)
Estructura de un programa
Un programa en C consiste de: Varias funciones en uno o más archivos Una función main en uno de esos archivos Posiblemente algunos archivos de cabecera Librerías externas y sus archivos de
cabecera
![Page 13: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/13.jpg)
![Page 14: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/14.jpg)
Funciones y la estructura del programa
Las funciones dividen tareas grandes de computación en varias más pequeñas y, permiten la posibilidad de construir sobre lo que otros ya han hecho, en lugar de comenzar desde cero.
Las funciones apropiadas ocultan los detalles de operación de las partes del programa que no necesitan saber de ellos, aportando claridad a la totalidad y facilitando la penosa tarea de hacer cambios.
![Page 15: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/15.jpg)
Funciones y la estructura del programa
El lenguaje C se diseñó para hacer que las funciones fueran eficientes y fáciles de usar; los programas escritos en C se componen de muchas funciones pequeñas en lugar de sólo algunas grandes.
Un programa puede residir en 1 o más archivos fuente, los cuales pueden compilarse por separado y cargarse junto con funciones de biblioteca previamente compiladas.
![Page 16: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/16.jpg)
Conceptos básicos de funciones
En matemáticas el máximo común divisor (abreviado MCD) de 2 o más números enteros es el mayor número que los divide sin dejar resto.
Según Euclides: Al dividir a entre b (números enteros), se obtiene un cociente q y un residuo r. Es posible demostrar que el máximo común divisor de a y b es el mismo que el de b y r. También es importante tener en cuenta que el máximo común divisor de cualquier número a y 0 es precisamente a.
![Page 17: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/17.jpg)
Euclides
![Page 18: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/18.jpg)
Euclides
Según lo antes mencionado, para calcular el máximo común divisor de 2366 y 273 se puede proseguir de la siguiente manera:
![Page 19: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/19.jpg)
/*Programa que calcula el MCD de 2 nros. enteros positivos*/
#include <stdio.h>
unsigned int mcd(unsigned int , unsigned int ); //prototipo de función
int main(void)
{
unsigned int a,b;
printf("Ingrese un nro. entero positivo: ");
scanf("%u",&a);
printf("Ingrese otro entero positivo: ");
scanf("%u",&b);
printf("\nEl mcd entre los 2 nros. ingresados es: %u\n",mcd(a,b));
return 0;
}
Invocación de función
![Page 20: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/20.jpg)
unsigned int mcd (unsigned int m, unsigned int n)
{//definición de función
unsigned int r;
while((r=m%n)!=0)
{
m=n;
n=r;
}
return n;
}
![Page 21: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/21.jpg)
Conceptos básicos de funciones
Cada definición de función tiene la siguiente forma:
tiporegresado nombrefuncion(declaraciones de argumentos){
declaraciones y proposiciones} Pueden omitirse algunas partes, una función
mínima es nada(){}, no hace ni retorna nada Si el tipo de retorno se omite, regresa un int No existe anidamiento de funciones
![Page 22: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/22.jpg)
Conceptos básicos de funciones
Un programa es sólo un conjunto de definiciones de variables y funciones.
La comunicación entre funciones es por argumentos, valores regresados por las funciones y a través de variables externas (globales).
Las funciones pueden representarse en cualquier orden dentro del archivo fuente, y el programa puede dividirse en varios archivos fuente mientras las funciones no se dividan
![Page 23: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/23.jpg)
Conceptos básicos de funciones
La proposición return es el mecanismo para que la función que se invoca regrese un valor al invocador.
A return puede seguirle cualquier expresión: return expresion
La expresión se convierte al tipo de retorno de la función si es necesario
Con frecuencia se usa (expresión) pero es optativo
![Page 24: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/24.jpg)
Conceptos básicos de funciones
La función invocante tiene la libertad de ignorar el valor regresado (caso printf)
No hay necesidad de expresión después de return (caso funciones void), en ese caso no se retorna ningún valor al invocante
Puede haber varios return en una función También el control regresa al invocante, sin
valor, cuando la ejecución llega a la llave final (}) de cierre de la función (funciones void)
No pueden retornar arrays
![Page 25: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/25.jpg)
Conceptos básicos de funciones
Si la función toma argumentos declárelos sino use void dentro de los paréntesis
Una función se invoca al definir los valores actuales para los parámetros formales de la misma.
Los parámetros siempre se pasan por valor, excepto arrays
Los procedimientos son simplemente funciones de un tipo especial (void).
Una función no void puede usarse como operando en cualquier expresión aritmética valida de C.
![Page 26: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/26.jpg)
Conceptos básicos de funciones
C sólo permite invocar a funciones previamente definidas.
Es posible separar la declaración de una función de su definición: La definición abarca todo el código de la
función en cuestión. La declaración sólo incluye la cabecera o
prototipo de la misma.
![Page 27: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/27.jpg)
Prototipo de una función
La declaración int power (int m, int n);
Antes de main indica que power es una función que espera 2 argumentos int y retorna un int.
Esta declaración se llama prototipo de una función, debe coincidir con la definición y uso de power. Es un error que la definición y uso que se haga de una función no corresponda con su prototipo
![Page 28: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/28.jpg)
Prototipo de una función
Los nombres de los parámetros no necesitan coincidir, de hecho, son optativos en el prototipo:
int power (int, int); Sin embargo, unos nombres bien
seleccionados son una muy buena documentación, conviene emplearlos
La declaración de parámetros (tipo y número) y tipo de retorno en el prototipo permite el chequeo del compilador en la definición e invocación
![Page 29: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/29.jpg)
Prototipo de funciones
Los parámetros se listan de a pares: pares: (tipo1 nombre1, tipo2 nombre2, ...)
Cada nombre debe llevar su tipo, aunque se repitan
En caso de parámetros arrays , no se especifica la dimensión:
float media (int array[], int tamano)
![Page 30: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/30.jpg)
Prototipo de funciones
En el caso de que la matriz sea de dimensión superior a uno, deben indicarse en la definición las magnitudes de todas las dimensiones excepto la primera. Es decir: int f(float valores [][10][5])
![Page 31: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/31.jpg)
Prototipo de una función
Esenciales cuando las aplicaciones se dividen entre múltiples archivos fuente
Ejemplo: Se tiene una aplicación dividida en 10 archivos
fuente, en cada uno de ellos se invocan 4 funciones de cada uno de los otros
Necesitaría 36 prototipos de funciones en c/u! Solución: Usar archivos de cabecera y directivas
del preprocesador. En este caso se requiere añadir 9 directivas de inclusión
![Page 32: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/32.jpg)
Prototipos de funciones
![Page 33: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/33.jpg)
Invocación a una función
Se puede llamar a una función especificando su nombre seguido de una lista de argumentos encerrados entre paréntesis y separados por comas.
Si la llamada a la función no requiere ningún argumento, se debe escribir a continuación del nombre de la función un par de paréntesis vacíos.
Los parámetros que se usan en la llamada normal a una función, se llaman parámetros actuales y debe haber uno por cada parámetro formal.
![Page 34: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/34.jpg)
Invocación a una función
a=pow(2,3);//a=8 La anterior es una sentencia de
invocación a una función en sentencia de asignación para almacenar el valor retornado
El compilador puede hacer conversiones automáticas de tipos de los parámetros
![Page 35: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/35.jpg)
Funciones y procedimientos
![Page 36: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/36.jpg)
Variables externas y alcance
Las variables definidas dentro de main() o cualquier otra función, al igual que los argumentos de ellas, son privadas o locales a la misma.
Cada variable local de una función comienza a existir sólo cuando se llama a la función y desaparece cuando la misma termina (variables automáticas)
![Page 37: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/37.jpg)
Variables externas y alcance
Las variables locales no retienen sus valores entre 2 llamadas sucesivas y deben inicializarse explícitamente en cada entrada, de no hacerlo contendrán “basura” (las externas se inicializan a 0 por defecto)
Como alternativas a las variables automáticas es posible definir variables que son externas (como opuesto a internas) a todas las funciones, a las que todas las funciones del archivo pueden tener acceso por su nombre
![Page 38: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/38.jpg)
Variables externas y alcance
Pueden usarse en lugar de listas de argumentos para comunicar datos entre funciones.
Se mantienen permanentemente en existencia, a diferencia de las locales
Una variable externa debe definirse exactamente una sola vez fuera de cualquier función, esto fija un espacio de almacenamiento para ella.
![Page 39: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/39.jpg)
Variables externas y alcance
La variable externa debe también declararse en cada función que desee tener acceso a ella, esto establece el tipo de variable. La declaración debe ser una proposición extern explícita o puede estar implícita en el contexto.
Bajo ciertas circunstancias la declaración extern puede omitirse. Si la declaración ocurre dentro del archivo fuente antes de su uso por una función en particular, no es necesario esta declaración dentro de la función
![Page 40: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/40.jpg)
Variables externas y alcance
Cuando se trabaja con un único archivo fuente es práctica común poner las definiciones de todas las variables externas al principio del mismo y después omitir todas las declaraciones extern.
Si el programa está dividido en varios archivos fuentes y una variable se define en archivo1 y se usa en archivo2 y archivo3, se necesitan declaraciones extern en archivo2 y archivo3 para conectar las ocurrencias de las variables
![Page 41: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/41.jpg)
Variables externas y alcance
La práctica común es reunir declaraciones extern de variables en un archivo separado llamado históricamente header (cabecera), que se incluye por #include al principio de cada archivo fuente. El sufijo .h se usa por convención para nombre de header
![Page 42: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/42.jpg)
Variables externas y alcance
La palabra definición se refiere al lugar donde se crea la variable o se le asigna un lugar de almacenamiento
La palabra declaración se refiere al lugar donde se establece la naturaleza (en especial el tipo) de la variable pero no se le asigna espacio
![Page 43: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/43.jpg)
Variables externas y alcance
Los tamaños de un array deben especificarse en la definición pero es optativo hacerlo en una declaración extern
La inicialización de una variable externa sólo va con su definición
![Page 44: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/44.jpg)
Variables externas y alcance
Las variables externas existen siempre aún cuando no hacen falta. Usarlas en exceso es peligroso puesto que lleva a programas cuyas conexiones entre datos no son completamente obvias, las variables pueden cambiar de forma inesperada e inadvertida y el programa es difícil de modificar
Quedan ocultas por variables locales (o argumentos formales) con el mismo nombre
![Page 45: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/45.jpg)
Variables externas
![Page 46: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/46.jpg)
Variables externas
![Page 47: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/47.jpg)
Modificadores de acceso
Además de los modificadores de tipo existen modificadores de acceso. Los modificadores de acceso limitan el uso que puede realizarse de las variables declaradas.
Los modificadores de acceso anteceden a la declaración del tipo de dato de la variable
![Page 48: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/48.jpg)
Modificadores de acceso
register: indica al compilador que la variable en cuestión se empleará intensamente (por ejemplo en lazos de iteración) y se le solicita que se almacene en registros de la CPU en lugar de la memoria. Los compiladores tienen la libertad de ignorar esta sugerencia
Sólo puede aplicarse a variables locales (incluyendo argumentos formales)
Hoy día se usan raramente
![Page 49: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/49.jpg)
Modificadores de acceso
volatile: modificador de acceso que permite cambiar el valor de una variable por medios no especificados explícitamente por el programa (por un proceso externo al propio programa, por ej.variable actualizada por el reloj del sistema)
Indica al compilador que no trate de optimizar dicha variable suponiéndole un valor constante, etc. Ello fuerza a que cada vez que se usa la variable, se realice una comprobación de su valor.
![Page 50: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/50.jpg)
Resolver ejercicio
Escriba un programa que tenga una función main donde se invoque a otra función que calcule el cuadrado de un número entero positivo pasado como argumento.
La función debe calcular el cuadrado del número n pasado como argumento como la suma de los n primeros números impares
Ejemplo: 52: 1+3+5+7+9
![Page 51: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/51.jpg)
#include <stdio.h>
unsigned int cuadrado(unsigned int);
int main(){
unsigned int nro, cuad;
printf("Ingrese 1 entero positivo para calcular cuadrado: ");
scanf("%u", &nro);
cuad=cuadrado(nro);
printf("El cuadrado del numero %u es: %u\n",nro, cuad);
return 0;
}
![Page 52: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/52.jpg)
//Calcula el cuadrado del entero >0 n como la suma
//de los n primeros impares
unsigned int cuadrado(unsigned int n) {
unsigned int suma=0;
int i;
for(i=1;i<2*n;i+=2)//i+=2 es lo mismo que i=i+2
//para recorrer sólo los impares, ojo!!no poner i+2
suma+=i; //lo mismo que suma=suma+i;
return suma;
}
![Page 53: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/53.jpg)
Modificadores de acceso Los modificadores const y volatile pueden
usarse de forma conjunta en ciertos casos, por lo cual no son excluyentes el uno del otro. Ello es posible si se declara una variable que actualizará el reloj del sistema, (proceso externo al programa/rutina de servicio de interrupción), y que no queremos pueda modificarse en el interior del programa. Por ello, podremos declarar:
volatile const unsigned long int hora; Una interrupción es una acción en software
requerida por el hardware
![Page 54: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/54.jpg)
Volatile
// Esta suele ser parte de una declaración global volatile int flag = 0; // Esto es parte de un proceso ... while( !flag ) { // hacer algo mientras el flag sea falso } ...// Y esto es parte de una rutina de interrupción //y está en una función diferente del proceso. ... if( pasa_algo ) { flag = 1; } ...
![Page 55: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/55.jpg)
Volatile
Hay que declarar flag como volatile, por que si no, el compilador puede guardar el valor de flag en un registro de la CPU para acelerar la evaluación de la condición del while, perdiendo las modificaciones introducidas por la rutina de servicio de la interrupción (ISR), si es que ocurrió una mientras estaba en el while. Poniéndola como volatile, forzás al compilador a generar código para recargar siempre de memoria el valor de la variable antes de verificar si es verdadero o falso. Algo parecido sucede para la ISR.
![Page 56: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/56.jpg)
Variables static
La declaración static aplicada a una variable o función externa limita el alcance de ese objeto al resto del archivo fuente que se está compilando, no pueden accederse desde otros archivos fuentes
Se pueden utilizar estos nombres para definir variables en funciones de otros archivos fuentes sin ningún problema, evitando que entren en conflicto
![Page 57: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/57.jpg)
Variables static
![Page 58: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/58.jpg)
Variables static
La declaración static externa se usa con más frecuencia en variables, pero también se puede aplicar a funciones.
Normalmente los nombres de funciones son globales, visibles a cualquier parte del programa completo. Sin embargo, si una función se declara como static, su nombre es invisible fuera del archivo en el que está declarada.
![Page 59: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/59.jpg)
Variables static
La declaración static también puede aplicarse a variables internas.
Las variables internas static son locales a una función particular, tal como las variables automáticas pero a diferencia de ellas, mantienen su existencia en lugar de ir y venir cada vez que se activa la función. Esto significa que las variables internas static proporcionan almacenamiento privado y permanente dentro de una función
![Page 60: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/60.jpg)
Variables static
![Page 61: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/61.jpg)
Variables static
La salida al ejecutar es:
![Page 62: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/62.jpg)
Estructura de bloques
Las declaraciones de variables (incluyendo la inicialización) pueden seguir a la llave izquierda ({) que indica comienzo de bloque y no sólo después de aquélla que comienza el cuerpo de una función. Las variables declaradas de esta forma ocultan cualquier nombre idéntico de variables en bloques externos y, permanecen hasta que se encuentra la llave derecha (}) que corresponde con la inicial.
![Page 63: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/63.jpg)
Estructura de bloques
Ejemplo:if(n>o){
int i; //declara una nueva i ... for(i=0;i<n;i++) ...}//no tiene que ver con otras i fuera de este
//bloque
![Page 64: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/64.jpg)
Estructura de bloques
Una variable automática declarada e inicializada en un bloque se inicializa cada vez que se entra al mismo.
Una variable static se inicializa sólo la primera vez que se entra al bloque
Las variables automáticas incluyendo parámetros formales esconden a las variables y funciones externas del mismo nombre. Es mejor evitar nombres de variables que coinciden con nombres de un alcance exterior; la potencialidad de confusión y error es muy grande
![Page 65: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/65.jpg)
Resumen de reglas de inicialización
En ausencia de una inicialización explícita se garantiza que las variables externas y static se inicializan en cero; las variables automáticas y register tienen valores iniciales indefinidos (basura)
Las variables escalares se pueden inicializar cuando se definen. Ej: int x=1;
long dia=1000L*60L*60L*24L;//mseg/día
![Page 66: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/66.jpg)
Reglas de inicialización
Para variables externas y estáticas el inicializador debe ser una expresión constante, se realiza una única vez, conceptualmente antes que el programa comience su ejecución
Para variables automáticas o register se hace cada vez que se entra a la función o bloque. El inicializador no se limita a una constante, puede ser cualquier expresión que contenga valores previamente definidos, incluso llamado a funciones.
![Page 67: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/67.jpg)
Reglas de inicialización
Un array puede inicializarse al seguir su declaración con una lista de inicializadores encerrados entre {} y separados por comas.
int dia[]={31,28,31,30,31,30,31,31,30,31,30,
31}; Si se omite el tamaño, el compilador calcula
la longitud contando los inicializadores
![Page 68: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/68.jpg)
Reglas de inicialización
Si existen menos inicializadores para un arreglo que los del tamaño especificado, los otros serán 0 para variables externas o estáticas, pero basura para automáticas
En el caso de un arreglo de caracteres: char saludo[]=“Hola”;
En este caso la cadena tiene un tamaño igual a 5: 4 caracteres más el terminador ‘\0’
![Page 69: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/69.jpg)
Recursividad
Las funciones pueden emplearse recursivamente, es decir, una función puede llamarse a sí misma
No proporciona ahorro de almacenamiento puesto que en algún lugar se debe mantener la pila de valores procesados. Ni es mucho más rápida
Pero el código es generalmente más compacto y mucho más fácil de escribir y de entender que su equivalente no recursivo
![Page 70: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/70.jpg)
Recursividad
![Page 71: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/71.jpg)
![Page 72: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/72.jpg)
Ejemplo 1
El siguiente programa muestra como una función recibe un vector y la dimensión del vector en sus parámetros y retorna el promedio de sus componentes, también muestra como una función permite ingresar datos a un vector y como una función puede imprimir un vector.
![Page 73: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/73.jpg)
![Page 74: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/74.jpg)
Ejemplo 2
El siguiente programa muestra tres funciones, que pasan por referencia matrices. La función leematriz, permite almacenar m*n elementos en una matriz A cualquiera, la función sumaMatrices recibe dos matrices A y B y calcula en una matriz C la suma de A y B.
![Page 75: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/75.jpg)
![Page 76: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/76.jpg)
![Page 77: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/77.jpg)
![Page 78: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/78.jpg)
![Page 79: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/79.jpg)
Archivos de cabecera
Pueden contener: Definiciones de tipos Prototipos de funciones Directivas del preprocesador
Pueden usarse para “exportar” tipos y funciones de un archivo C
Otros archivos pueden “importarlos” a dichos archivos usando las directivas de #include
![Page 80: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/80.jpg)
El preprocesador de C
El preprocesador es un primer paso separado en la compilación
Lee y reacciona antes las directivas Comandos que comienzan con # Comentarios (los borra)
La salida del preprocesador es luego compilada
Las directivas no son realmente parte del lenguaje C pero expanden el ámbito del entorno de programación en C
![Page 81: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/81.jpg)
El preprocesador de C
Borra comentarios Inserta los archivos de inclusión Reemplaza macros en el código fuente Realiza compilación condicional
![Page 82: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/82.jpg)
Inclusión de archivos
![Page 83: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/83.jpg)
Inclusión de archivos
Cualquiera de las 2 hace que el preprocesador las reemplace por el contenido del archivo fichero
Si el nombre se encierra entre “ ” la búsqueda del archivo comienza normalmente donde se encuentra el código fuente, sino se encuentra allí
O se delimita por < > sigue una ruta predefinida por la implantación (librerías)
No repetir estas directivas
![Page 84: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/84.jpg)
Sustitución de macros
![Page 85: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/85.jpg)
Sustitución de macros
Para definir constantes simbólicas y macros No puede haber blancos entre el nombre de
la macro y el ( cuando hay lista de parámetros
Los parámetros se ponen entre paréntesis para protegerse contra la expansión que pueda conducir a un orden de evaluación no deseado
![Page 86: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/86.jpg)
Sustitución de macros
![Page 87: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/87.jpg)
Macros Las macros pueden realizar cómputos simples,
mucho más rápidos que las funciones ya que no requieren paso de parámetros via la pila
Pero no definen el tipo de argumento. Sin embargo son valiosas. Muchas funciones
de librerías están definidas como macros, ej.:getchar/putchar, para evitar el exceso de tiempo de ejecución de una llamada a función por cada carácter procesado
Por convención use nombres en mayúsculas para las macros
![Page 88: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/88.jpg)
Compilación condicional
Es posible controlar el preprocesamiento mismo con proposiciones condicionales que se evalúan durante esta etapa. Esto proporciona una forma de incluir código selectivamente, dependiendo del valor de condiciones evaluadas durante la compilación
![Page 89: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/89.jpg)
Compilación condicional
![Page 90: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/90.jpg)
Compilación condicional
![Page 91: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/91.jpg)
Compilación condicional
![Page 92: Informática II - UNRHola mundo diseccionado La sentencia return indica el valor que retorna la función main (por convención, 0 indica “todo OK” C distingue mayúsculas y minúsculas,](https://reader033.fdocuments.ec/reader033/viewer/2022041609/5e3637bfd12eab54bf1c1afb/html5/thumbnails/92.jpg)
Compilación condicional
Se hace para asegurarse de que el contenido de un archivo aux.h se incluya una sola vez, el contenido del archivo se delimita con una condicional como la del ejemplo anterior
La primera inclusión de aux.h define el nombre _AUX_H_ , las siguientes inclusiones encontrarán definido el nombre y pasarán hacia el #endif.
Un estilo semejante puede emplearse para evitar incluir archivos varias veces