La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a funciones En ciencias de la computación, el término dividir y conquistar hace referencia a uno de los más importantes paradigmas de diseño.

Presentaciones similares


Presentación del tema: "Introducción a funciones En ciencias de la computación, el término dividir y conquistar hace referencia a uno de los más importantes paradigmas de diseño."— Transcripción de la presentación:

1 Introducción a funciones En ciencias de la computación, el término dividir y conquistar hace referencia a uno de los más importantes paradigmas de diseño de algoritmos. El método está basado en la solución de un problema, dividiéndolo en dos o más subproblemas lo suficientemente sencillos. Al final, las soluciones de cada uno de los subproblemas se combinan para dar una solución al problema original.

2 Introducción a funciones La codificación de la solución de un problema se llama programa. La solución de un subproblema se llama subprograma. Desde este punto de vista, una función es un subprograma.

3 Introducción a funciones En matemática, una función es una regla para obtener un nuevo número, a partir de otro u otros números. En informática, el concepto de función es similar a lo estudiado en matemática. Se utilizan para dividir una tarea grande en tareas más pequeñas. Empleando funciones para resolver dichas tareas más pequeñas. Paradigma “Dividir y conquistar”.

4 Funciones en matemática Tiene asociado un nombre que la identifica, por ejemplo: cos(angulo), sqrt(x), pow(b, e), etc. Tiene una o más variables independientes, como vimos antes x, b, e, etc. Tiene una variable dependiente, por ejemplo y. Para utilizar una función, escribimos lo siguiente: y=nombre(variables). Donde nombre es el nombre de la función.

5 Funciones en informática Debe tener un nombre que la identifique. Cuando queremos utilizar una función, escribimos y = nombre (variables), esto se conoce como llamada o invocación de la función En el momento de llamar a una función, las variables independientes que se utilizan en ese momento, se le dicen argumentos. El valor que toma la variable dependiente, según el valor de sus argumentos, se conoce como el valor retornado o devuelto por la función.

6 Funciones en c Desde el punto de vista del lenguaje c: Es un conjunto de sentencias bajo un mismo nombre, que realiza una tarea específica. Puede retornar un valor o ninguno.El valor retornado por la función puede ser de cualquier tipo excepto un arreglo. Llegado el momento de invocar a la función, se ejecutan las sentencias que contiene la misma. Luego retorna al mismo punto desde donde fue invocada.

7 Funciones en c Las variables independientes que se utilizan en el momento de llamar o invocar a la función, se le dicen argumentos. Puede haber funciones que no utilicen argumentos.

8 Funciones en c La escritura del código de una función, comprende las siguientes etapas: Declaración o prototipo Implementación o definición Utilización (invocar o llamar).

9 Funciones en c Declaración o prototipo Consiste en indicar, antes de que comience el código del programa principal (o función main()) lo siguiente: Tipo de dato que retorna. Nombre de la función. Listado entre paréntesis, finalizado en punto y coma de las variables (llamadas parámetros que se corresponden con los argumentos) separadas por comas.

10 Declaración o prototipo tipo nombre (parámetros); Tipo, es el tipo de dato que retorna la función, puede ser de cualquier tipo menos arreglos. Si no retorna valor se llaman funciones void. Si no se especifica tipo, por defecto se asume como tipo int. Nombre, debe ser un identificador válido. Parámetros, listado de variables con su respectiva declaración. La función puede o no utilizar parámetros.

11 Declaración o prototipo tipo nombre (parámetros); Tipo, es el tipo de dato que retorna la función, puede ser de cualquier tipo menos arreglos. Si no retorna valor se llaman funciones void. Si no se especifica tipo, por defecto se asume como tipo int. Nombre, debe ser un identificador válido. Parámetros, listado de variables con su respectiva declaración. La función puede o no utilizar parámetros.

12 Declaración o prototipo tipo nombre (parámetros); Tipo, es el tipo de dato que retorna la función, puede ser de cualquier tipo menos arreglos. Si no retorna valor se llaman funciones void. Si no se especifica tipo, por defecto se asume como tipo int. Nombre, debe ser un identificador válido. Parámetros, listado de variables con su respectiva declaración. La función puede o no utilizar parámetros.

13 Funciones en c Declaración o prototipo: Consiste en indicar, antes de que comience el código del programa principal (o función main()) lo siguiente: Tipo de dato que retorna Nombre de la función Listado, entre paréntesis, de las variables llamadas parámetros, que se corresponden con los argumentos Implementación o definición Utilización (invocar o llamar).

14 Funciones en c Declaración o prototipo: Consiste en indicar, antes de que comience el código del programa principal (o función main()) lo siguiente: Tipo de dato que retorna Nombre de la función Listado, entre paréntesis, de las variables llamadas parámetros, que se corresponden con los argumentos Implementación o definición Utilización (invocar o llamar).

15 Ejemplo #include int suma(int x, int y); //Declaración int main(){ int a,b,s; printf(“ingrese valor para a:”); scanf(“%d”,&a); printf(“ingrese valor para b:”); scanf(“%d”,&b); s=suma(a,b);//Invocación a la función suma printf(“\nLa suma es %d”,s); return 0; } int suma(int x, int y){ //Definición int r; r=x+y; return (r);}

16 Los parámetros pueden ser: Un listado de variables simples, en este caso son parámetros por valor. Un listado de punteros, en este caso son parámetros por referencia. Un listado de variables simples y punteros, parámetros por valor y por referencia. Puede no contener parámetros.

17 Ejemplos de declaración void presentacion (); no retorna nada ni tampoco usa parámetros int ingresar (); retorna un entero, no usa parámetros void imprimir (int x); no retorna nada, si usa parámetros float prom (int a,float b); retorna real, si usa parámetros

18 Implementación tipo nombre (parámetros) /* aquí no lleva punto y coma al final */ { Conjunto de sentencias o bloque de código } El conjunto de sentencias se escriben entre las llaves, finalizando cada sentencia con un punto y coma. La función retorna cuando finaliza el bloque de código o cuando encuentra la sentencia “return”.

19 La invocación o llamada de la función Debe ser acorde con la declaración, de los parámetros y tipo de dato retornado. Los argumentos (listado de variables) que se utilicen, deben corresponderse con los parámetros en cantidad, posición y tipo de dato. El valor retornado debe ser asignado a una variable del mismo tipo o puede ser utilizado como argumento de otra función.

20 Ejemplo: ingresar dos números, luego realizar la suma de los mismos #include int suma(int x, int y); //Declaración de la función suma int main(){ int a,b,s; printf(“ingrese valor para a:”); scanf(“%d”,&a); printf(“ingrese valor para b:”); scanf(“%d”,&b); s=suma(a,b); //Invocación de la función suma printf(“\nLa suma es %d”,s); return 0; } int suma(int x, int y){ //Definición de la función suma int r; r=x+y; return (r);}

21 Argumentos y parámetros En el momento de invocar a la función, cada parámetro realiza una copia el valor que contiene el respectivo argumento. Las sentencias de la función, pueden utilizar los valores que poseen los parámetros. Ejemplo: s = suma (a,b); (en la invocación) int suma (int x, int y) (en la definición) El parámetro x copia el valor de a, e y copia el valor de b. Pero NUNCA sucede al revés.

22 Retorno de la función Cuando la función retorna un valor, se utiliza la sentencia: return (variable o expresión). La variable o el resultado de la expresión debe coincidir con tipo de dato utilizado en la declaración. El dato retornado debe ser utilizado o asignado al momento de retornar la función. La función puede finalizar sin retornar valor, en este caso se utiliza la sentencia return; (funciones void).

23 Continuando con el ejemplo anterior s = suma (a,b); (invocación) int suma (int x, int y) (definición) Los parámetros x e y copian los valores de a y b, pero NUNCA sucede al revés. Al retornar la función, la variable s copia el valor de la variable r que se encuentra en la sentencia return (r).

24 Funciones definidas por el usuario. Las funciones definidas por el usuario se deben: Declarar Implementar Invocar

25 Archivos cabecera Un archivo cabecera o headers (extensión.h), se incluyen con la directiva #include: de la siguiente manera: #include Las funciones definidas por el usuario (librería o biblioteca de funciones creadas por el usuario). Se las puede guardar dentro de un archivo cabecera y luego incluirla al programa. El lenguaje C tiene sus propias librerías estándar o funciones estándar.

26 Funciones estándar Son las funciones que ya están definidas en las bibliotecas estándar de C. En lenguaje C, se utilizan muchas bibliotecas estándar. Las más utilizadas son: ctype.h caracteres (isdigit(), tolower(), etc.). math.h matemáticas. (pow(), atan(), etc.) stdio.h entrada y salida estándar.(printf(),scanf(), etc) stdlib.h especiales. (system(), etc.) string.h cadenas de caracteres. (strlen(), etc.)

27 Funciones en PSeInt Las funciones o subprocesos en un algoritmo en Pseudocódigo. La sintaxis para ello es la siguiente: Tipo variable_de_retorno <- nombre_de_la_funcion ( Tipo argumento_1, Tipo argumento_2,... ) acción 1; acción 1;... acción n; FinSubproceso Comienza con la palabra clave SubProceso (o Función, son equivalentes) seguida del Tipo de la variable de retorno (real, entero, string, etc.), el nombre de la variable de retorno, el signo de asignación, el nombre del subproceso, y finalmente, la lista de argumentos entre paréntesis con su correspondiente Tipo antes del nombre. Existen variantes para esta estructura. Si la función no retorna ningún valor, pueden omitirse el identificador variable_de_retorno y el signo de asignación, es decir, colocar directamente el nombre y los argumentos a continuación de la palabra clave SubProceso. Si el subproceso no recibe ningún valor pueden colocarse los paréntesis vacíos u omitirse, finalizando la primer línea con el nombre del subproceso. Las reglas para los nombres de subprocesos, variables de retorno y argumentos son las mismas que para cualquier identificador en pseudocódigo. Además, opcionalmente pueden agregarse las palabras claves Por Valor o Por Referencia para indicar el tipo de pasaje en cada argumento. Si no se indica, los arreglos se pasan por referencia, las demás expresiones por valor. El pasaje por referencia implica que si la función modifica el argumento, se modificará en realidad la variable que se utilizó en la llamada, mientras que el pasaje por valor implica que la función opera con una copia de la variable (o el resultado de la expresión) que se utilizó en la llamada, por lo que las modificaciones que aplique la función no se verán reflejadas fuera de la misma. Para invocar a la función se debe utilizar su nombre y entre paréntesis los parámetros, que podrán ser expresiones sólo si el tipo de pasaje es por referencia. Una llamada puede ser en sí una instrucción, pero si la función retorna algún valor, también puede utilizarse como operando dentro de una expresión. El ejemplo Subprocesos, muestra un programa que declara dos funciones, una que retorna un valor y se que es luego utilizado dentro de una expresión para mostrar en pantalla, y otra que no recibe argumentos; el ejemplo Potencia, muestra una función recursiva; y el ejemplo Promedio muestra una función que recibe un arreglo como argumento

28 Ejemplos //Presentación #include void presenta(); int main(){ system(“clear”); printf(“Ejemplo de función void y sin parámetros”); presenta(); return 0;} void presenta(){ printf(“\n\n\n\n\t\t\t\t Escribir la salida aquí\n\n\n\n\n\”); return;}

29 Funciones En matemática, una función de valor real, f, de x, y, z,... es una regla para obtener un nuevo numero, que se escribe como f(x, y, z,...), a partir de los valores de una secuencia de variables independientes (x, y, z,...).

30 Funciones

31 Funciones en lenguaje C Una función es un conjunto de sentencias bajo un mismo nombre, que realiza una tarea específica. Se utilizan para dividir una tarea grande en partes más pequeñas. Empleando funciones para realizar dichas partes o tareas más pequeñas; paradigma “Dividir y conquistar”. Se identifican con el nombre asignado. La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.paradigma de programación Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que esta puede resolver.programación estructurada Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Esta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down).divide y vencerás Un 'módulo' es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida. Si bien un módulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica se los suele tomar como sinónimos de procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una función o un procedimiento, ya que el mismo puede contener muchos de ellos. No debe confundirse el término "módulo" (en el sentido de programación modular) con términos como "función" o "procedimiento", propios del lenguaje que lo soporte.procedimientosfunciones

32 Valores lógicos o booleanos en lenguaje C: Valor Falso o False: Es un valor entero igual a 0 (cero) Valor Verdadero o True: Es un valor entero distinto de cero por ejemplo 1, pero también es verdadero el valor -2, 5, etc. En las estructuras que contienen expresiones lógicas, por ejemplo if(exp), while(exp), el resultado de exp en lenguaje C puede ser Falso (cero), o Verdadero (distinto de cero). Si utilizamos directamente un valor entero 0 se evalúa como falso y si el valor fuese distinto de cero, como verdadero.

33 Ejemplo #include int main(){ int x; printf(“Ingrese un numero entero:”); scanf(“%d”,&x); if(x){ printf(“Verdadero, x es distinto de 0”);} else{ printf(“Falso, x es igual a 0”);} return 0; }

34 Ejemplo (continuación) #include int main(){ int x = 1; if(x){ printf(“Verdadero, x es distinto de 0”);} else{ printf(“Falso, x es igual a 0”);} return 0; }

35 Caracteres #include int main(){ char x; printf(“Ingrese un caracter:”); scanf(“%c”,&x); printf(“El caracter ingresado es %c”,x); return 0; }

36 Caracteres int main(){ char c1=’z’,c2=’5’,c3=’H’,c4=’.’; // Para utilizar un caracter dentro del programa se // encierran entre comillas simples printf(“Caracteres:”); printf(“%c %c %c %c”,c1,c2,c3,c4); return 0;} c1, c3 contienen caracteres alfabéticos c2 contiene un caracter que es un dígito c4 contiene un caracter signo de puntuación

37 ctype.h Algunas funciones para manejo de caracteres: isdigit(variable) //Retorna un valor igual a cero si el caracter que está en variable no es un dígito if(isdigit(variable)) //es lo mismo que escribir: if(isdigit(variable)!=0) //si retorna distinto de cero, es un dígito islower(variable) determina si el caracter está en minúscula (retorna distinto de cero) c15=tolower(c3); convierte el caracter en mayúscula a minúscula c3=tolower(c3); //convierte el mismo caracter

38 Variables Las variables empleadas en los programas, utilizan la memoria de la computadora para guardar valores (como ser: números, caracteres, etc.) asignados a dichas variables. Cada variable utilizada en un programa, posee un nombre. Además del nombre, cada variable tiene asignada una dirección de memoria (la dirección de memoria se la expresa como un número en formato hexadecimal). La cantidad de bits que ocupa cada variable, depende del tipo de dato utilizado en la declaración de la misma.

39 Ejemplo: memoria y variables int a,b;//declaración de variables NombreContenidoDirección... a00FF10 b00FF14 00FF18 00FF1C...

40 Ejemplo: memoria y variables int a,b;//declaración de variables a=15;b=110;//asignación directa de a y b NombreContenidoDirección... a1500FF10 b11000FF14 00FF18 00FF1C...

41 Puntero, declaración Es una variable que contiene (o almacena), la dirección de memoria de otra variable de cualquier tipo. Cuando un puntero contiene la dirección de memoria de otra variable, se dice que el puntero apunta a dicha variable. Para declarar una variable tipo puntero, se debe anteponer al nombre del puntero el caracter * (asterisco) y además se debe indicar el tipo de dato de la variable a la cual apunta.

42 Ejemplo: memoria, variables y punteros int a,b,*pa,*pb;//declaración de variables y punteros a=15;b=110;//asignación directa de a y b NombreContenidoDirección... a1500FF10 b11000FF14 pa00FF18 pb00FF1C...

43 Puntero, declaración y asignación tipo *p1, *p2, …, *pi,..., *pn; donde p1, p2, pi, pn son punteros que pueden apuntar a cualquier variable del tipo indicado. Para asociar un puntero a una variable, se debe asignar al puntero la dirección de memoria de la variable. Para esto se utiliza el operador dirección &. tipo v_1, v_2, …, v_j,..., v_m; siendo el puntero declarado del mismo tipo indicado. pi=&vj pi apunta a vj (o pi contiene la dirección de memoria de vj).

44 Ejemplo: memoria, variables y punteros int a,b,*pa,*pb;//declaración de variables y punteros a=15;b=110;//asignación directa de a y b pa=&a;//pa apunta a la variable a NombreContenidoDirección... a1500FF10 b11000FF14 pa00FF1000FF18 pb00FF1C...

45 Ejemplo: memoria, variables y punteros int a,b,*pa,*pb;//declaración de variables y punteros a=15;b=110;//asignación directa de a y b pa=&a;//pa apunta a la variable a pb=&b;//pb apunta a la variable b NombreContenidoDirección... a1500FF10 b11000FF14 pa00FF1000FF18 pb00FF1400FF1C...

46 Acceso indirecto a variables mediante punteros Para acceder (o asignar un valor) en forma indirecta a una variable, se emplea el nombre del puntero anteponiendo el operador indirección *. *pi=valor (o resultado de una expresión), si pi apunta a vj, entonces *pi accede en forma indirecta a vj. Es decir que se puede modificar el valor de una variable utilizando un puntero (teniendo previamente el puntero apuntando a dicha variable).

47 Ejemplo: memoria, variables y punteros int a,b,*pa,*pb;//declaración de variables y punteros a=15;b=110;//asignación directa de a y b pa=&a;//pa apunta a la variable a pb=&b;//pb apunta a la variable b *pa=32;//asignación indirecta de la variable a NombreContenidoDirección... a3200FF10 b11000FF14 pa00FF1000FF18 pb00FF1400FF1C...

48 Ejemplo: memoria, variables y punteros int a,b,*pa,*pb;//declaración de variables y punteros a=15;b=110;//asignación directa de a y b pa=&a;//pa apunta a la variable a pb=&b;//pb apunta a la variable b *pa=32;//asignación indirecta de la variable a *pb=*pa + *pb;//asignación indirecta de la variable b NombreContenidoDirección... a3200FF10 b14200FF14 pa00FF1000FF18 pb00FF1400FF1C...

49 Ejemplo: memoria, variables y punteros En el ejemplo teníamos: *pa=32; /*produce el mismo efecto que la asignación directa:*/ a=32; *pb=*pa + *pb; /* produce el mismo efecto que la asignación directa:*/ b=a+b;

50 Funciones que utilizan parámetros por valor Si los parámetros de una función son variables simples, entonces son parámetros por valor.

51 ejemplo1 Los parámetros por valor no modifican el valor de los argumentos #include void ejemplo1 (int x, int y); int main(){ int a,b; printf(“ingrese valor para a:”);scanf(“%d”,&a); printf(“ingrese valor para b:”);scanf(“%d”,&b); printf(“\nAntes de llamar a la función a=%d y b=%d\n”,a,b); ejemplo1(a,b); printf(“\nDespués de llamar a la función a=%d y b=%d\n”,a,b); return 0;} void ejemplo1(int x, int y){ printf(“\nValores recibidos en: x=%d e y=%d\n”,x,y); x=2*x;y=x+y; //modificamos los valores de x e y printf(“\nValores modificados en x=%d e y=%d\n”,x,y); return;} //los parámetros pueden tener el mismo nombre que los argumentos

52 ejemplo2 Los parámetros por valor no modifican el valor de los argumentos #include void ejemplo2 (int x, int y); int main(){ int a,b; printf(“ingrese valor para a:”);scanf(“%d”,&a); printf(“ingrese valor para b:”);scanf(“%d”,&b); printf(“\nAntes de llamar a la función a=%d y b=%d\n”,a,b); ejemplo2(a,b); printf(“\nDespués de llamar a la función a=%d y b=%d\n”,a,b); return 0;} void ejemplo2(int x, int y){ int aux; printf(“\nValores recibidos en: x=%d e y=%d\n”,x,y); aux=x; x=y; y=aux; //intercambiamos los valores entre x e y printf(“\nValores modificados en x=%d e y=%d\n”,x,y); return;} //Los parámetros pueden tener el mismo nombre que los argumentos

53 Parámetros por referencia Si los parámetros de una función son variables puntero, entonces son parámetros por referencia. Un puntero es una variable que contiene la dirección de memoria de otra variable. Por lo tanto puede modificar el valor de la variable a la cual apunta. Las funciones que utilizan parámetros por referencia, retornan a lo sumo un valor (o ninguno, void)

54 Parámetros por referencia ejemplo3 (&a,&b); // Llamada ejemplo3 (int *x, int *y) //Definición El operador dirección & obtiene la dirección de memoria de una variable y el operador indirección * (asterisco) accede al contenido de la variable a la cual apunta. En el momento de llamar a la función, el parámetro x copia la dirección de memoria de la variable a, y el parámetro y copia la dirección de memoria de la variable b Los parámetros x e y acceden en forma indirecta a las variables a y b, por lo tanto los punteros x e y pueden modificar el valor de las variables a y b “da la sensación de que la función pudiera retornar tantos valores como parámetros por referencia + 1”

55 Los parámetros por referencia si pueden modificar el valor de los argumentos #include void ejemplo4 (int *x, int *y); //void porque no hace falta retornar valor en este ejemplo int main(){ int a,b; printf(“ingrese valor para a:”);scanf(“%d”,&a); printf(“ingrese valor para b:”);scanf(“%d”,&b); printf(“\nAntes de llamar a la función a=%d y b=%d\n”,a,b); ejemplo4(&a,&b); //se debe utilizar & para enviar la dirección de memoria printf(“\nDespués de llamar a la función a=%d y b=%d\n”,a,b); return 0;} void ejemplo4(int *x, int *y){ printf(“\nValores recibidos en: x=%d e y=%d\n”,*x,*y); *x=(*x)*2;*y=(*x)+(*y); //modificamos los valores de x e y printf(“\nValores modificados en x=%d e y=%d\n”,*x,*y); return;} //Los parámetros pueden tener el mismo nombre que los argumentos

56 Los parámetros por referencia si pueden modificar el valor de los argumentos #include void ejemplo5 (int *x, int *y); //void porque no hace falta retornar valor en este ejemplo int main(){ int a,b; printf(“ingrese valor para a:”);scanf(“%d”,&a); printf(“ingrese valor para b:”);scanf(“%d”,&b); printf(“\nAntes de llamar a la función a=%d y b=%d\n”,a,b); ejemplo5(&a,&b); //se debe utilizar & para enviar la dirección de memoria printf(“\nDespués de llamar a la función a=%d y b=%d\n”,a,b); return 0;} void ejemplo5(int *x, int *y){ int aux; printf(“\nValores recibidos en: *x=%d e *y=%d\n”,*x,*y); aux=*x; *x=*y; *y=aux; //intercambiamos los valores entre a y b printf(“\nValores modificados en *x=%d e *y=%d\n”,*x,*y); return;} //Los parámetros si pueden tener el mismo nombre que los argumentos

57 Parámetros por valor y por referencia Si los parámetros de una función son variables simples y variables tipo puntero, entonces son parámetros por valor y parámetros por referencia. Las funciones que utilizan parámetros por valor y por referencia, retornan a lo sumo un valor (o ninguno, void)

58 Parámetros por valor y por referencia Ejemplo: char ejemplo6 (a,b,&c,&d); // Llamada char ejemplo6 (char r, int s, float *t, int *u) //Definición En este ejemplo, la función retorna un tipo de dato char, los parámetros r y s son por valor y los parámetros t y u son por referencia.

59 Tipo de dato retornado Vimos que las funciones que utilizan parámetros por valor, parámetros por referencia o parámetros por valor y referencia, retornan a lo sumo un valor (o ninguno cuando es void). El tipo de dato retornado puede ser de cualquier tipo, excepto arreglos. Las funciones que utilizan algún parámetro por referencia, también pueden retornar cualquier tipo de dato, excepto arreglos.

60 Control de datos de entrada //utilizando parámetros por valor #include int control_positivo (); int main(){ int x; x=control_positivo(); printf("Número entero controlado = %d\n",x); return 0;} int control_positivo(){ int x; do{ printf("Ingrese un entero positivo:"); scanf("%d",&x); }while(x<=0); return x;}

61 Control de datos de entrada //utilizando parámetros por referencia #include void control_positivo (int *x); //es void porque no es necesario retornar valor int main(){ int x; control_positivo(&x); printf("Número entero controlado = %d\n",x); return 0;} void control_positivo(int *x){ do{ printf("Ingrese un entero positivo:"); scanf("%d",&*x);//o scanf(“%d”,x); }while(*x<=0); return;}

62 Función mostrar entero #include void mostrar_ent (int x); int main(){ int x=15; mostrar_ent(x); return 0;} void mostrar_ent(int x){ printf("\n\n valor de x = %d\n\n",x); return;}

63 Verificar si un caracter es dígito, alfabético o de otro tipo #include int main(){ char caracter; printf("ingresar caracter: "); scanf("%c",&caracter); if(isdigit(caracter)!=0) printf("es un dígito"); else if(isalpha(caracter)!=0) printf("Es alfabético"); else printf("No es dígito ni alfabético"); return 0;}

64 Calcular cociente y resto //utilizando parámetros por valor y referencia int div_entera (int N, int D, int *c); int main(){ int N,D,c,r; printf("ingresar numerador:");scanf("%d",&N); printf("ingresar denominador:");scanf("%d",&D); r=div_entera(N,D,&c); printf("\n Cociente = %d y resto = %d\n",c,r); return 0;} int div_entera (int N, int D, int *c){ *c=0; while(N>=D){ N=N-D; *c=*c+1; } return N;} //La función retorna el resto y calcula el cociente

65 Ordenar tres caracteres #include //utilizando parámetros por valor y/o referencia void ingresar(char *a, char *b, char *c); int ordenar_car (char *a, char *b, char *c); void mostrar(char a, char b, char c); int main(){ char a,b,c; int r; ingresar(&a,&b,&c); r=ordenar_car(&a,&b,&c); if(r==0)printf("Son iguales"); elsemostrar(a,b,c); return 0;}

66 Ordenar tres caracteres, continuación void ingresar(char *a, char *b, char *c){ printf("Ingresar un caracter: "); scanf("%c",a); fgetc(stdin); printf("Ingresar otro caracter: "); scanf("%c",b); fgetc(stdin); printf("Ingresar otro caracter: "); scanf("%c",c); //o bien &*c return;} void mostrar(char a, char b, char c){ printf("Los caracteres ordenados son: %c, %c, %c \n",a,b,c); return;} //fgetc(stdin); limpia el buffer de teclado (enter)

67 Ordenar tres caracteres, continuación int ordenar_car (char *a, char *b, char *c){ char aux; if(*a==*b && *b==*c) return 0; else{ if(*a>=*b){aux=*a;*a=*b;*b=aux;} if(*a>=*c){aux=*a;*a=*c;*c=aux;} if(*b>=*c){aux=*b;*b=*c;*c=aux;} return 1;} }


Descargar ppt "Introducción a funciones En ciencias de la computación, el término dividir y conquistar hace referencia a uno de los más importantes paradigmas de diseño."

Presentaciones similares


Anuncios Google