43
FUNCIONES EN C

FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

Embed Size (px)

Citation preview

Page 1: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES EN C

Page 2: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

MENU DEL DIA• Repaso clase anterior.• Funciones y variables.• ¿Cómo trabajo con funciones?• Funciones de biblioteca.• Funciones de Carácter.• Funciones Matemáticas.• Paso de parámetros a una función.• Paso de parámetros por valor.• Paso de parámetros por referencia.• Principales diferencias entre el paso de

parámetros por valor y por referencia.• Funciones de entrada y salida.• Funciones de la librería stdlib.• Funciones con cadenas de caracteres.• Funciones recursivas

Page 3: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

REPASO CLASE ANTERIOR

#include <archivo_cabecera>

declaracion_variables_globales;

int main() { declaracion_variables_locales; instruccion_1; instruccion_2; . . . instruccion_N; return 0;}

#include <archivo_cabecera>

protipo_funciones;declaracion_variables_globales;

int main() { declaracion_variables_locales; funcion_1(); funcion_2(); . . . funcion_N(); return 0;}

funcion_1() { codigo_funcion_1;}. . .funcion_N() { codigo_funcion_N;}

Page 4: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

REPASO CLASE ANTERIOR

. . .Caja

negra

in_1

in_N

out_1

In_2

Función:• Nombre. (Con el cual es invocada).• Entradas . (Parámetros de la función). • Salida. (Valor de retorno si tiene).

capitan_planeta(agua, tierra, aire, fuego, corazon);

Por sus poderes reunidos yo soy,…EL CAPITAN PLANETA

Page 5: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

REPASO CLASE ANTERIOR

. . .Caja

negra

in_1

in_N

out_1In_2

tipo_retorno nombre_funcion(tipo_1,. . ., tipo_N);

tipo_retorno nombre_funcion(tipo_1 param_1,. . ., tipo_N param_N) { intruccion_1; . . . instrucción_N; return expresion; }

Declaración de la función (Prototipo).

Definición de la función

Page 6: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

REPASO CLASE ANTERIOR

Invocación de la función

Definición de la función

Declaración de la función

Page 7: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

REPASO CLASE ANTERIOR

#include <archivo_cabecera>

protipo_funciones;declaracion_variables_globales;

int main() { declaracion_variables_locales; funcion_1(); funcion_2(); . . . funcion_N(); return 0;}

funcion_1() { codigo_funcion_1;}. . .funcion_N() { codigo_funcion_N;}

#include <archivo_cabecera>

float suma(float,float);

int main() { . . . float a= suma(2.3,4.1); . . . return 0;}

float suma(float num1, float num2) { float res; res = num1 + num2; return res;}

Page 8: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES Y VARIABLES• Ámbito:

• Global.• Local (Bloque).

• Ocultamiento de variables.

Caja negra

#include <stdio.h>#include <stdlib.h>

int a, b = 1, c = 2;

int main() { int d = 3, e = 3; { int f = 8; int g = 9; }

return 0;}

Ámbito global

Ámbito local

Bloq

ue 1

Bloq

ue 2

#include <stdio.h>#include <stdlib.h>

int a=1;

int main() { int a = 3; { int a = 5;

} return 0;}

Bloq

ue 1

Bloq

ue 2

Variable global a = 1.

Ocultamiento de la variable a, global

por la variable local al bloque del main.

a = 3.

Ocultamiento de la variable a, local a la función main por la

variable local al bloque definido al interior del

main. a = 5.

Page 9: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES Y VARIABLES#include <stdio.h>#include <stdlib.h>

int funcion(int);int a, b = 1, c = 2;

int main() { int d = 3, e = 3, x = 2; int a = funcion(3); c = funcion(b); printf("x = %d\n"); b = funcion(x); printf("x = %d\n"); return 0;}

int funcion(int x){ int b = 1; c = x + 1;}

Bloq

ue 1

Bloq

ue 2

Ámbito global

Ámbito local

Variables globales y las funciones: •Como una variable global es visible en todo el código puede ser accedidas y cambiadas desde cualquier parte incluyendo las funciones.

Variables globales y las funciones: •Cuando una variable local es declarada dentro de una función, y esta tiene el mismo el mismo nombre que una variable global previamente declarada, la variable local oculta a la global.•Los argumentos de una función son variables locales de la función.•Una función no puede ver variables locales que se encuentren fuera de su ámbito.

Variables globales .vs. Variables locales•La ventaja de usar variables globales radica en que facilita en intercambio de información entre funciones en un programa sin hacer uso de argumentos.•El uso de variables globales frente a las locales tiene 2 desventajas:

La función es mucho menos portable para otros programas. Concepto de dominio local: Si una variable local definida dentro de una función tiene el mismo

nombre que una variable global, solo la variable local es cambiada mientras se esta en la función.

Variables globales .vs. Variables locales•La ventaja de usar variables globales radica en que facilita en intercambio de información entre funciones en un programa sin hacer uso de argumentos.•El uso de variables globales frente a las locales tiene 2 desventajas:

La función es mucho menos portable para otros programas. Concepto de dominio local: Si una variable local definida dentro de una función tiene el mismo

nombre que una variable global, solo la variable local es cambiada mientras se esta en la función.

Page 10: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES Y VARIABLES

Almacenamiento de variables

Permanente (static): Sus valores se mantienen cuando termina la función. Una variable declarada como static dentro de una función, mantiene un valor a través de ejecuciones posteriores de la misma función. Una variable de este tipo se crea en tiempo de compilación.

Temporal (auto): Sus valores se pierden cuando termina la función. Una variable de este tipo se crea en tiempo de ejecución.

#include <stdio.h>#include <stdlib.h>

void ejemplo_estatica(int);

int main() { ejemplo_estatica(1); ejemplo_estatica(2); ejemplo_estatica(3); return 0;}

void ejemplo_estatica(int llamada){ static int cuenta; if(llamada == 1) cuenta = 1; printf("El valor de la cuenta en la llamada # %d es: %d\n", llamada, cuenta); cuenta++;}

La salida cuando una variable declarada dentro de una función

sea estática o no depende del compilador

Page 11: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?

xxxxxx y ...

Realizar una función que calcule el valor la potencia de un numero entero.

Page 12: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?

Page 13: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?

Comprender el problemaEsta etapa consiste en aterrizar el problema (entenderlo), antes de empezar puede ser útil formular preguntas como:•¿Qué es lo que se busca?•¿Cuáles son las entradas y salidas?•¿Cómo se aborda el problema?

xxxxxx y ...

Page 14: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?

Definir entradas y salidasUna vez aterrizado el problema el siguiente paso consiste en definir las entradas y salidas que tendrá la función. Muchas veces el enunciado del problema nos da esta información.

x

y

Entradas

r Salida

rx

y potencia

xxxxxx y ...

Page 15: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?

Definir el funcionamiento de la funciónEsta parte es sumamente importante por que aquí es donde se definen el conjunto de instrucciones de la función encargados de procesar los función con los argumentos que se le pasan a esta.

rx

ypotencia

Instrucciones de asignación.Instrucciones de E/S.Instrucciones condicionales.Instrucciones repetitivas.

Page 16: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?

Codificar la funciónConsiste en codificar la función en lenguaje C, básicamente esto es, codificar su prototipo y definición.

r

x

ypotencia

int potencia(int,int);

int potencia(int x,int y) { int r = 1,i; for(i=1;i<=y;i++) { r *= x; } return r;}

Prototipo

Definición

Page 17: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?

Codificar la función

Page 18: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?Test la funciónConsiste en probar el correcto funcionamiento de la función anteriormente creada. Para ello esta se invoca en el main pasándole diferentes valores y comprobando que el valor retornado sea el correcto.

Page 19: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO TRABAJO CON FUNCIONES?Adaptación al programa principalUna vez que se comprueba el correcto funcionamiento de la función el siguiente paso consiste en emplearla en el programa principal siguiendo las especificaciones asignadas.

Page 20: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE BIBLIOTECA• C ofrece una biblioteca estándar de funciones que proporcionan soporte para operaciones

utilizadas con mas frecuencia. Estas funciones permiten realizar una operación con solo una llamada a una función (sin tener que escribir su código fuente).

• Las funciones se dividen en diferentes grupos lo cuales se asocian a cada uno de los archivos cabecera mostrados a continuación:

<assert.h> <ctype.h> <errno.h> <float.h>

<limits.h> <math.h> <setjmp.h> <signal.h>

<stdarg.h> <stdef.h> <stdio.h> <string.h>

<time.h> <stdlib.h>

• Para usar una función determinada se debe incluir el archivo cabecera asociado al grupo a la cual esta pertenece, para ello se usa la directiva del preprocesador #include:

math.h

stdio.h

Page 21: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE BIBLIOTECAArchivo de encabezado

de la biblioteca estándar Detalles

<assert.h> Contiene macros e información que agrega diagnósticos para depuración de programas

<ctype.h> Contiene prototipos de función que comprueban ciertas propiedades de los caracteres y prototipos de función para convertir letras minúsculas a mayúsculas y viceversa.

<float.h> Contiene los limites de tamaño de los números de punto flotante del sistema.

<limits.h> Contiene los limites de tamaño de los números enteros del sistema.

<math.h> Contiene los prototipos de las funciones de la biblioteca matemática.

<stdio.h> Contiene los prototipos de las funciones de la biblioteca estándar de entrada/salida e información que utilizan.

<stdlib.h> Contiene prototipos de función para conversión de números a texto, texto a números, asignación de memoria, números aleatorios y varias otras funciones de utilería.

<string.h> Contiene prototipos de función para procesamiento de cadenas de caracteres.

<time.h> Contiene prototipos de función y tipos para manipular la hora y la fecha.

Page 22: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿COMO USAR UNA FUNCION?Anotaciones a tener en cuenta en el momento de usar funciones:•Consultar la documentación sobre la función (API):

Identificar entradas (que es lo que se le mete) y salidas (que es lo que devuelve).

Identificar que archivos cabecera se deben incluir para poder usarla.

Comprender que es lo que hace la función.

Identificar como usarla (su invocación).

•Ver ejemplos para aclarar como usar la función consultada.•Adaptarla al problema particular

Algunos APIs:http://www.cplusplus.com/reference/clibrary/http://www.acm.uiuc.edu/webmonkeys/book/c_guide/http://www.cppreference.com/wiki/c/starthttp://c.conclase.net/librerias/

Page 23: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE CARACTEREl archivo cabecera <ctype.h> define un grupo de funciones y macros para la manipulación de variables tipo carácter. La siguiente tabla resume las principales funciones:

Función Descripción

int isalpha(int c) Testea si el carácter es alfanumérico

int isdigit(int c) Testea si el carácter es un digito entre 0 y 9

int isupper(int c) Testea si el carácter introducido es una letra mayúscula (A - Z).

int islower(int c) Testea si el carácter introducido es una letra mayúscula (a - z).

int isalnum(int c) Evalúa si el carácter introducido es una letra o digito.

int iscntrl(int c) Testea si el carácter introducido es de control.

int isxdigit(int c) Testea si el carácter es un digito hexadecimal

int isprint(int c) Test de carácter imprimible incluyendo espacio.

int isgraph(int c) Test de carácter imprimible excepto espacio.

int isspace(int c) Test de carácter de espacio (espacio, avance de pagina, nueva línea, retorno de carro, tabulación, tabulación vertical)

int ispuntc(int c) Testea por carácter de puntuación.

int toupper(int c) Convierte a letras mayúsculas.

int tolower(int c) Convierte a letras minúsculas.

Page 24: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE CARACTER

Ejemplo:¿Hacer un programa que lea un carácter por teclado y compruebe si es letra?

#include <stdio.h>#include <ctype.h>

int main() { char inicial; printf("Cual es su primer caracter inicial? " ); scanf ("%c",&inicial); while (!isalpha(inicial)) { puts("Caracter no alfabetico \n"); printf("Cual es su siguiente inicial? "); scanf ("%c",&inicial); } puts("Terminado!\n"); return 0;}

Page 25: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE CARACTEREjemplo:Hacer un programa que compruebe el sexo de un encuestado, el usuario debe digitar M para masculino y F para femenino.

#include <stdio.h>#include <ctype.h>

int main() { char resp; printf("Digite el sexo (F:Femenino o M: Masculino): " ) ; scanf ("%c",&resp); resp = toupper(resp); switch(resp) { case ‘F’: printf("Femenino\n"); break; case ‘M’: printf("Masculino\n"); break; default: printf("Opción invalida\n"); } return 0;}

Page 26: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES MATEMATICASEl archivo cabecera <math.h> contiene la mayoría de las funciones numéricas para la realización de diferentes operaciones matemáticas:

Funciones matemáticas

Función Descripción

ceil(x) Redondea al entero mas cercano.

fabs(x) Devuelve el valor absoluto de x.

floor(x) Redondea por defecto al entero mas próximo.

fmod(x,y) Calcula el residuo f en coma flotante para la división x/y.

pow(x,y) Calcula x elevado a la potencia y. Si x es menor o igual que 0, y debe ser entero. Si x es igual a cero, y no puede ser negativo.

sqrt(x) Devuelve la raíz cuadrada de x; x debe ser mayor o igual que cero.

Page 27: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES MATEMATICAS

Funciones trigonométricas

Función Descripción

acos(x) Calcula el coseno inverso del x. x debe estar entre -1 y 1.

asin(x) Calcula el seno inverso del x. x debe estar entre -1 y 1.

atan(x) Calcula el tangente inverso de x.

atan2(x,y) Calcula el tangente inverso de dividir x entre y (x/y).

sin(x) Calcula el seno del ángulo x. x se expresa en radianes.

cos(x) Calcula el coseno del ángulo x. x se expresa en radianes.

tan(x) Calcula el tangente del ángulo x. x se expresa en radianes.

Page 28: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES MATEMATICAS

Funciones logarítmicas y exponenciales.

Función Descripción

exp(x), expl(x) La función exp calcula el exponencial de x (con e = 2,718282), la variante expl calcula el exponencial utilizando un valor long double.

log(x), logl(x) La función calcula el logaritmo natural de x, logl calcula el logaritmo natural de x siendo este un dato tipo long double.

log10(x), log10l(x) Calcula el logaritmo en base 10 de x. logl, es la versión de la misma función para datos tipo long double. X debe tener valor positivo.

Page 29: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES MATEMATICASEjemplo:Hacer un programa que use varias funciones de la librería matemática.

#include <stdio.h>#include <math.h.h>

#define PI 3.14

int main() { double x = 2.0, y = 3.5, z; z = sqrt(pow(x,2)+3*x*pow(x+y,x-1)); printf("%lf",z); x = log(z); printf("%lf",x); y = tan(PI/2); printf("%lf",y); return 0;}

Page 30: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

PASO DE PARAMETROS A UNA FUNCIONEn C existen dos formas de pasar parámetros a una función, estas son:•Por valor.•Por referencia.

Paso de parámetros por valor•Cuando se pasa un argumento utilizando una llamada por valor, se hace una copia del argumento y se pasa a la función llamada. En este caso, los cambios en la copia no afectan el valor de la variable original.•Este es el método de invocación por defecto. •En todos los ejemplos anteriormente estudiados el paso de parámetros se ha realizado por valor.

Paso de parámetros por referencia•A diferencia del paso de parámetros por valor, cuando se pasa un parámetro por referencia, la función accede y manipula directamente el argumento pasado (y no a una copia de este) de tal modo que la variable original puede ser modificada.•Este método es muy empleado para pasar arreglos y datos grandes como argumentos por su mayor eficiencia.

saludo(8); ...void saludo(int x);

float x;int y;entrada(&x,&y);...void entrada(float *x,int *y);

Invocación de la función

Declaración de la función

Page 31: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

PASO DE PARAMETROS POR VALOR

#include <stdio.h>#include <math.h>

void incrementar_por_valor(int);

int main() { int y = 3, x = 4; incrementar_por_valor(y); incrementar_por_valor(x); return 0;}

void incrementar_por_valor(int x) { x++;}

¿Cuál serán los valores finales de las variables declaradas después de la ejecución del siguiente programa?

void incrementar_por_valor(int);Declaración de la función

void incrementar_por_valor(int x) { x++;}

Definición de la función

incrementar_por_valor(y);incrementar_por_valor(x);

Invocación de la función

Page 32: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

PASO DE PARAMETROS POR REFERENCIA

#include <stdio.h>#include <math.h>

void incrementar_por_referencia(int *);

int main() { int y = 3, x = 4; incrementar_por_referencia (&y); incrementar_por_referencia(&x); return 0;}

void incrementar_por_referencia(int *x) { *x=*x+1;}

¿Cuál serán los valores finales de las variables declaradas después de la ejecución del siguiente programa?

void incrementar_por_referencia(int *);Declaración de la función

void incrementar_por_referencia(int *x) { *x = *x + 1;}

Definición de la función

incrementar_por_referencia(&y);incrementar_por_referencia(&x);

Invocación de la función

En la declaración después del tipo de dato se utiliza el operador asterisco unitario (*) para indicar que el paso será por referencia.

Cuando se invoca la función la variable pasada como argumento se debe preceder del operador ampersand (&). La única excepción a esto esta cuando a la función se pasan arreglos y cadenas de caracteres.

Note el acceso a la variable pasada por referencia siempre se hace anteponiendo el operador asterisco unitario (*) a la variable pasada como parámetro, x para este caso.

Page 33: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

PRINCIPALES DIFERENCIAS ENTRE EL PASO DE PARAMETROS POR REFERENCIA Y POR VALOR

Declaración

void intercambiar1(int,int); void intercambiar2(int *,int *);

Definición

void intercambiar1(int x, int y){ int aux; aux = x; x = y; y = aux;}

void intercambiar2(int *x, int *y){ int aux; aux = *x; *x = *y; *y = aux;}

Invocación

int a = 3,b = 5;intercambiar1(a,b);

int a = 3,b = 5;intercambiar2(&a,&b);

Ver código: ejemplo_ref_val.c

Page 34: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE ENTRADA SALIDAEl archivo cabecera <stdio.h> contiene funciones de utilidad para la entrada y salida de datos.

Entrada (desde teclado) y salida (hacia pantalla) formateada

Función Descripción

scanf Lee una cadena formateada desde stdin (teclado).

printf Imprime una cadena formateada a stdout (pantalla).

#include <stdio.h>

int main() { double a = 3.258966; float b = -2.5344; int c, d, e; char cadena[]="Simon dice que estos son los numeros", caracter = 'z'; printf("Despliegue de algunos datos\n"); printf("a = %10.2lf, b = %10.2f\n",a,b); printf("Digite 3 numeros enteros\n"); scanf("%d%d%d",&c,&d,&e); printf("%s: c = %+4d, d = %+4d, e = %+4d\ny que este es el caracter: %c\n",cadena,c,d,e,caracter); return 0;}

Page 35: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE ENTRADA SALIDAEntrada y salida de caracteres (por teclado y pantalla)

Función Descripción

getchar Obtiene un carácter desde stdin (teclado).

putchar Escribe un carácter a stdout (pantalla).

gets Obtiene una cadena de caracteres desde stdin (teclado).

puts Escribe un carácter a stdout (pantalla).

#include <stdio.h>

int main() { char sexo, nom_apell[60]; printf("Digite nombres y apellidos completos: \n"); gets(nom_apell); printf("Digite sel sexo (F para femenino, M para masculino): "); sexo = getchar(); printf("Usted "); puts(nom_apell); printf(" tiene sexo "); putchar(sexo); printf("\n"); return 0;}

Page 36: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE LA LIBRERÍA STDLIBEl archivo cabecera <stdlib.h> contiene funciones para manejo dinámico de memoria, generación de números aleatorios, comunicación con el ambiente, aritmética entera, búsqueda, ordenamiento y conversión.

Entrada (desde teclado) y salida (hacia pantalla) formateada

Función Descripción

atof Convierte un string a double.

atoi Convierte un string a entero.

atol Convierte un string a long integer.

#include <stdio.h>#include <stdlib.h>#include <time.h>

int main () { char n1_c[5],n2_c[5]; int n1; double n2; printf("Digite los tres numeros (int,double): \n"); gets(n1_c); gets(n2_c); n1=atoi(n1_c); n2=atof(n2_c); printf("Los numeros metidos son: %d, %lf\n",n1,n2); return 0;}

Page 37: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES DE LA LIBRERÍA STDLIBEl archivo cabecera <stdlib.h> contiene funciones para manejo dinámico de memoria, generación de números aleatorios, comunicación con el ambiente, aritmética entera, búsqueda, ordenamiento y conversión.

Entrada (desde teclado) y salida (hacia pantalla) formateada

Función Descripción

rand Genera un numero aleatorio.

srand Inicializa un generador de números aleatorios.

#include <stdio.h>#include <stdlib.h>#include <time.h>

int main () { int N, M, cant, i, aleatorio; printf("Digite la cantidad de números que desea generar: "); scanf("%d",&cant); printf("Digite los limites (primero el superior, luego el inferior): "); scanf("%d%d",&N,&M); srand(time(NULL)); // Inicializacion del generador for(i = 0; i < cant; i ++) { aleatorio = rand()%(N-M+1)+M; //Genera un numero entre M y N printf("%d ", aleatorio); } printf("\n", aleatorio); system("PAUSE"); return 0;}

Page 38: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES CON CADENAS DE CARACTERESEl archivo cabecera <string.h> contiene la mayoría de las funciones empleadas para la manipulación de cadenas de caracteres

Funciones para copiar

Función Descripción

strcpy Copia un string.

strncpy Copia un numero determinado de caracteres de un string.

Funciones para concatenar

Función Descripción

strcat Concatena strings.

strncat Añade un numero determinado de caracteres a un string.

Declaración de variables

Page 39: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES CON CADENAS DE CARACTERES

Funciones para comparar

Función Descripción

strcmp Compara dos cadenas de caracteres.

strncmp Compara un determinado numero de caracteres entre dos cadenas de caracteres.

Funciones para buscar

Función Descripción

strpbrk Localiza un carácter en un string.

strtok Divide un string en tokens.

strcspn Revisa una primera cadena de caracteres hasta que encuentra la primera ocurrencia de uno de los caracteres obtenidos la otra cadena.

strchr Localiza la primera ocurrencia de un string en una cadena de caracteres

strrchr Localiza la ultima ocurrencia de un carácter en un string

strstr Localiza un substring.

Page 40: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES RECURSIVASUna función recursiva es una función que se llama a si misma directa o indirectamente.

Recursividad

Indirecta

Directa

Implica mas de una función

main() { uno();}

uno() { dos();}

dos() { uno();}

uno() dos()

main()

1

3

42

1

2

43

La función se llama a si misma desde el propio cuerpof() { if(condicion) return f(); else return v;}

Page 41: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

FUNCIONES RECURSIVASUn proceso recursivo debe tener una condición de terminación, ya que si esto no se da, puede continuar indefinidamente.

int factorial(int n) { if(n > 1) return n* factorial(n - 1); else return 1;}

x = factorial(4);

return 4*factorial(3);

return 3*factorial(2);

return 2*factorial(1);

return 1;1

2 = 2*1

6 = 3*2

24 = 4*6

x = 24;

Page 42: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter

¿QUE SE PUEDE HACER CON FUNCIONES?

Page 43: FUNCIONES EN C. MENU DEL DIA Repaso clase anterior. Funciones y variables. ¿Cómo trabajo con funciones? Funciones de biblioteca. Funciones de Carácter