Funciones. Ejercicios Resueltos Ejercicios Propuestos

Documentos relacionados
Funciones Definición de función

Sentencias de salto: break, continue, goto Sentencia de Salto: break

Una función es un miniprograma dentro de un programa. Las funciones contienen varias

Programación I Teoría II.

Cadena de caracteres. 1. Fundamentos de cadenas y caracteres

EJEMPLOS DE PROGRAMACIÓN DE FUNCIONES EN C: Página 1 de 5

Lenguaje C, tercer bloque: Funciones

Tema 11: Manejo de cadenas en C

Tema 14: Diseño Estructurado (Modularidad)

Introducción a la Programación en C Funciones

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Tipos de Datos Estructurados

LENGUAJE. Tema 4 Vectores, Matrices y Cadenas de caracteres.

Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase

Elementos de un programa en C

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Sintaxis de los aspectos generales de un lenguaje de programación

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

U.A.B.C. Facultad de Ingeniería Programación Estructurada UNIDAD III

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Estructuración del programa en partes más pequeñas y sencillas

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Programación 1 Grado de Ingeniería Robótica

Tema 13: Apuntadores en C

Principal material bibliográfico utilizado

Cadenas de caracteres. 1. Definición 2. Funciones para manejo de cadenas

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Objetivos. El alumno conocerá y aplicará el concepto de apuntador para la realización de programas de manejo eficiente de memoria.

Funciones en lenguaje C

Clases y Objetos en C++

DESCOMPOSICIÓN FUNCIONAL (I Parte)

El operador contenido ( ) permite acceder al contenido de

Informática I (2014-2) Taller Lenguaje C Prof. Sebastián Isaza Departamento de Ingeniería Electrónica Facultad de Ingeniería Universidad de Antioquia

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior STRINGS

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

Operaciones de E/S en ANSI C

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

PROGRAMACIÓN EN LENGUAJE C VARIABLES Y CONSTANTES

TEMA 7. ARRAYS (LISTAS Y TABLAS).

REPRESENTACIÓN DE DATOS

Conceptos Básicos. Programación

Introducción al lenguaje C

Paso de Parámetros a una Función

Fundamentos de Informática 4. Primeros Programas, Primeros Diseños

17. Manejo de cadenas <string.h>

Introducción al lenguaje C

PUNTEROS (APUNTADORES)

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv

CAPITULO 6: FUNCIONES

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Introducción a Funciones

Estructuras de datos: vectores en C. Clase 7 y 8 Introducción a la Computación Patricia Borensztejn

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Algoritmos y Programación I

Programación. Test Autoevaluación Tema 3

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

En un arreglo x de n elementos los elementos del arreglo son: El número de índices determina la dimensionalidad del arreglo.

Fundamentos de programación

1. Repaso del Lenguaje C M.C. Luis A. Zarza López

Índice. Estructuras de datos en Memoria Principal. Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa

Introducción al lenguaje C

Tema 18: Memoria dinámica y su uso en C

PUNTEROS EN C (APUNTADORES)

Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas

PROGRAMACION MODULAR FUNCIONES

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

TEMA 5: Subprogramas, programación modular

Apuntadores en C y C++

Introducción al lenguaje C

Prof. Judith Barrios Albornoz

Capitulo 2. Programación Modular

Informática PRÀCTICA 2 Curs

UNIDAD 3 Modularidad

Lenguaje de Programación: C++ Funciones

Declaración. Introducción. Definición o implementación. Llamada. Un programa en C consta de una o más funciones.

Programación I Teoría III.

PROBLEMA 1. Rellena el hueco 1 (línea 23). Realiza la reserva de memoria para almacenar los n puntos.

Punteros y aritmética de punteros. se almacena el operando

Formato para prácticas de laboratorio

Variables locales y globales. Funciones sin parámetros. Paso de parámetros

Ejercicios Tema 6. Funciones

Funciones en Lenguaje C

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

Arrays, Matrices y Cadenas

Tema 8 Vectores y Matrices

CAPITULO 2: VARIABLES Y CONSTANTES

Guía básica de programación en C++ estructurado. Manejo básico de la parte estructurada de C++

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo

Dpto. de Lenguajes y Ciencias de la Computación Universidad de Málaga. TEMA 8: Funciones. Fundamentos de Informática (Ingeniería Técnica Industrial)

Subrutinas o Funciones

Tema 3. Estructuras de control

Transcripción:

Funciones Contenido INTRODUCCIÓN... 2 Declaración de una función... 3 Definición de una función... 4 FUNCION MAIN... 5 Llamada a una función... 6 Variables Locales... 6 Variables Globales... 7 Paso por valor y Referencia... 8 Funciones para el manejo de cadenas. 11 Ejercicios Resueltos... 133 Ejercicios Propuestos... 177 1

INTRODUCCIÓN Una función es un fragmento de código que realiza una tarea bien definida. Por ejemplo, la función printf imprime por la salida estándar los parámetros que le pasamos. Al igual que esta función, existen otras funciones que realizan diversas tareas ya definidas en el estándar ANSY C y que pueden ser utilizadas por el programador. Este tipo de funciones predefinidas son denominadas funciones de biblioteca. Sin embargo, cada programador define sus propias funciones de acuerdos a sus necesidades. Las funciones que define el programador son conocidas como funciones de usuario. La utilización de funciones nos permite dividir un programa extenso en pequeños segmentos que realizan tareas concretas. Probablemente, dentro de un mismo programa se realicen las mismas tareas varias veces, lo que se facilita mediante la utilización de funciones. Sin embargo, es probable que ciertas funciones no sean reutilizables, pero al usarlas se mejora la legibilidad del programa. Con el propósito de permitir un manejo eficiente de los datos, las funciones en C no se pueden anidar. En otras palabras, una función no se puede declarar dentro de otra función, por lo que todas las funciones son globales o externas, lo que hace que puedan llamarse desde cualquier parte de un programa. Las funciones son los bloque constructores en C, y el lugar donde se centra toda la actividad del programa siendo una de las características principales de C. El bloque es el cuerpo de la función y el nombre del bloque es el nombre de la función, cuando se declara una función además del cuerpo y el nombre de la misma también hay que especificar los parámetros o argumento y el tipo de resultado que retornara. Un argumento es el valor que se le pasa a una función cuando estas es llamada, dicho valor será almacenado en el parámetro correspondiente de la función. Ej: Donde: Tipo_Retorno Nombre_funcion(Lista_de_parametros) //Cuerpo_de_la_Funcion //Valor retornado tipo_de_retorno: es el tipo del valor devuelto por la función, o, en caso de que la función no devuelva valor alguno, la palabra reservada void. Nombre_función: es el nombre o identificador asignado a la función. Lista_de_parámetros: es la lista de declaración de los parámetros que son pasados a la función. Éstos se separan por comas. Debemos tener en cuenta que pueden existir funciones que no utilicen parámetros. Cuerpo_de_la_función: está compuesto por un conjunto de sentencias que llevan 2

a cabo la tarea específica para la cual ha sido creada la función. Valor Retornado: mediante la palabra reservada return, se devuelve el valor de la función, en este caso representado por expresión. Declaración de una función La declaración de una función o también conocida como prototipo de la función indica además del nombre de la función, cuantos parámetros tiene y de qué tipo son, así como el valor especificado. En general el prototipo de la función o declaración de la función permite conocer las características de la misma antes que defina la tarea que realizara. Ej: float convertir(int g); La sentencia anterior indica que cuando sea invocada la función convertir hay que pasarle un argumento entero y que dicha función retornara una valor real. Una función también puede ser declarada implícitamente o explícitamente. La declaración implícita es cuando la función es llamada y no existe una declaración previa (Prototipo de la función). La función main que hemos utilizado hasta ahora siempre se hace implícitamente y no retorna ningún valor ya que en el programa no se hace ninguna llamada a ella misma. La declaración explicita específica el número y el tipo de parámetros de la función así como el valor retornado. Ej: float sumar(int x, int y); La lista de parámetros normalmente consiste en una lista de identificadores con sus tipos separados por comas, en el caso del ejemplo anterior se pueden omitir los identificadores y quedaría de la siguiente forma: float sumar(int, int); // Se le pasan 2 parámetros enteros y retorna un numero real. También hay que tener en cuenta que el nombre de los parámetros utilizados en la declaración de la función y los utilizados en la definición de la función no necesariamente tienen que ser los mismos. Ej: float sumar(int x, int y); float sumar(int A, int B) //Declaración de la función //Definición de la función //Cuerpo de la función 3

La lista de parámetros puede también estar vacía. Ej: float sumar(); Así cuando declaremos una función sin parámetros utilizaremos la palabra reservado void. Ej: float sumar(void); Definición de una función La definición de una función consta de una cabecera de función y del cuerpo de la función encerrado entre llaves. Tipo Nombre_funcion(parametro1, parametro2, parámetro n) //Declaración de las variables locales //Sentencias [return()]; Las variables declaradas en el cuerpo de la función son locales y por definición solamente son accesibles dentro del mismo. El Tipo especifica el tipo de datos retornados por la función, este puede ser cualquier tipo de valor menos una matriz o una función, si no se especifica se supone que en int. Para indicar que no devuelve nada se utiliza la palabra reservada void. Ej: void sumar(int x,int y); 4

FUNCION MAIN La filosofía en la que se base el diseño de C es el empleo de funciones. Por esta razón, un programa en C contiene al menos una función, la función main. Esta función es particular dado que la ejecución del programa se inicia con las instrucciones contenidas en su interior. Una vez iniciada la ejecución del programa, desde la función main se puede llamar a otras funciones y, posiblemente, desde estas funciones a otras. Otra particularidad de la función main es que se llama directamente desde el sistema operativo y no desde ninguna otra función. De esta manera, un programa en C sólo puede contener una función main. Su definición es: void main(void) //Cuerpo de la función EJ: El siguiente programa calcula el cubo de los números del 1 al 5 utilizando una función definida por el usuario. #include <stdio.h> int cubo(int base); main() int numero; for(numero=1; numero<=5; numero++) printf("el cubo del número %d es %d\n", numero, cubo(numero)); return 0; int cubo(int base) int potencia; potencia = base * base * base; return potencia; La salida es: El cubo del número 1 es 1 El cubo del número 2 es 8 El cubo del número 3 es 27 El cubo del número 4 es 64 El cubo del número 5 es 125 5

Llamada a una función Llamar a una función es sinónimo de ejecutarla, la llamada debe realizarse desde otra función o desde ella misma. Esta llamada debe estar formada por el nombre de la función seguido de una lista de argumentos o parámetros encerrados en paréntesis y separados por comas. Ej: Se tiene la función int sumar(int x,int y); //Llamada a la función sumar X = sumar(a,b); Los parámetros a y b son lógicamente variables enteras definidas anteriormente a la llamada de la función las cuales almacenaran el dato que se desea pasar a la función, y como se menciono anteriormente los nombres de los parámetros no necesariamente tienen que ser las misma. Variables Locales Las variables locales se crean en el momento en que se activa la función, y desaparecen en el momento en que la función termina. Veamos un ejemplo. #include <stdio.h> #include <ctype.h> int suma_d (int x) int d, suma; //Variables locales suma=0; d = x % 10; while (x >0) suma = suma + d; x = x/10; d = x%10; return (suma); void main () int a; printf ("Escribe el numero:\n"); scanf ("%d",&a); printf ("La suma de digitos es %d\n",suma_d(a)); 6

Variables Globales A diferencia de las variables locales cuyo ámbito estaba confinado a la función donde estaban declaradas, el ámbito de las variables globales se extiende desde el punto en el que se definen hasta el final del programa. En otras palabras, si definimos una variable al principio del programa, cualquier función que forme parte de éste podrá utilizarla simplemente haciendo uso de su nombre. La utilización de variables globales proporciona un mecanismo de intercambio de información entre funciones sin necesidad de utilizar argumentos. Por otra parte, las variables globales mantienen el valor que se les ha asignado dentro de su ámbito, incluso después de finalizar las funciones que modifican dicho valor. Debemos tener en cuenta que el uso de variables globales para el intercambio de informaciones entre funciones puede resultar útil en algunas situaciones (como cuando se desea transferir más de un valor desde una función), pero su utilización podría llevarnos a programas de difícil interpretación y complejos de depurar. Ej: Utilización de variables globales como mecanismo de intercambio de información entre funciones. #include<stdio.h> void unafuncion(); void otrafuncion(); int variable; void main() variable = 9; printf("el valor de variable es: %d\n", variable); unafuncion(); otrafuncion(); printf("ahora el valor de variable es: %d\n", variable); return 0; void unafuncion() printf("en la función unafuncion, variable es: %d\n", variable); void otrafuncion() variable++; printf("en la función otrafuncion, variable es: %d\n",variable); La salida es: El valor de variable es: 9 En la función unafuncion, variable es: 9 En la función otrafuncion, variable es: 10 Ahora el valor de variable es: 10 7

Paso por valor y Referencia En C todos los argumentos que se pasan a una función se pasan por valor. En otras palabras, se pasa una copia del valor del argumento y no el argumento en sí (por ello, este procedimiento se conoce en algunas ocasiones como paso por copia). Al pasar una copia del argumento original a la función, cualquier modificación que se realice sobre esta copia no tendrá efecto sobre el argumento original utilizado en la llamada de la función. Se puede considerar un argumento pasado por valor como una variable local de la función a la que se ha pasado, de tal modo que los cambios que se realicen sobre ésta tendrán efecto sólo dentro de la función. Veamos un ejemplo del paso por valor de argumentos a una función: #include <stdio.h> void modificar(int variable); void main() int i = 1; printf("\ni=%d antes de llamar a la función modificar", i); modificar(i); printf("\ni=%d después de llamar a la función modificar", i); void modificar(int variable) printf("\nvariable = %d dentro de modificar", variable); variable = 9; printf("\nvariable = %d dentro de modificar", variable); Dado que lo que se pasa a la función modificar es una copia de la variable i, el valor de ésta en la función main no se ve alterado cuando dentro de la función modificar se cambia el valor de variable. De ahí, la salida del ejemplo anterior es la siguiente: i=1 antes de llamar a la función modificar variable = 1 dentro de modificar variable = 9 dentro de modificar i=1 después de llamar a la función modificar Como ya hemos visto, cuando se pasa un argumento por valor, realmente se pasa una copia de éste, y si esta copia se modifica el argumento original no se ve alterado. Sin embargo, en muchas ocasiones lo que queremos es que una función cambie los valores de los argumentos que le pasamos. Para lograrlo se utiliza lo que se conoce como paso de argumentos por referencia. En estos casos, no se pasa una copia del argumento, sino el argumento mismo. Cuando realizamos un paso de argumentos por referencia en C, realmente lo que estamos pasando son direcciones de memoria. En otras palabras, lo que le pasamos a la función son las direcciones de memoria de los argumentos. Como hemos visto en la unidad anterior, esta operación se logra mediante la utilización de punteros. De este modo, cuando llamamos a una función, lo que realmente le pasamos son punteros a los argumentos que deseamos modificar. Veamos el ejemplo anterior utilizando el paso de argumentos por referencia: #include <stdio.h> void modificar(int *variable); void main() int i = 1; printf("\ni=%d antes de llamar a la función modificar", i); 8

modificar(&i); printf("\ni=%d después de llamar a la función modificar", i); return 0; void modificar(int *variable) printf("\nvariable = %d dentro de modificar", *variable); *variable = 9; printf("\nvariable = %d dentro de modificar", *variable); La salida de este ejemplo sería: i=1 antes de llamar a la función modificar variable = 1 dentro de modificar variable = 9 dentro de modificar i=9 después de llamar a la función modificar Como se puede observar, el valor de i ha cambiado puesto que la función modificar ha utilizado la dirección de memoria de esta variable en la sentencia de asignación *variable = 9. Analicemos detenidamente este ejemplo. Lo primero que tenemos que tener en cuenta es que la premisa de que en C todos los argumentos se pasan por valor sigue siendo cierta. Lo que sucede es que en este caso estamos pasando el valor de la dirección de memoria de la variable i y no el valor de su contenido (1). Para pasar la dirección de memoria de una variable se utiliza el operador &. Al finalizar la función, el valor de dicha dirección permanece igual y lo que se ha modificado es el contenido de esa dirección de memoria. Dentro de la función se utilizan los punteros para trabajar con las direcciones de memoria (*variable). Dado que el paso de argumentos por referencia es común en C, conviene que en este punto ampliemos el concepto de puntero. Consideremos las siguientes declaraciones: int dato; int *puntero; La primera de las declaraciones reserva memoria para almacenar una variable de tipo entero (int) mientras que la segunda declaración reserva memoria para almacenar una dirección. A pesar de que apunta a una variable de tipo entero, lo que se va a almacenar es una dirección. Como en el fondo un puntero puede apuntar a cualquier cosa, C permite la declaración de punteros tipo void. Supongamos que el compilador reserva la dirección en hexadecimal bffff120 para la variable dato y la dirección en hexadecimal 0012fed4 para puntero. En la Figura 3.1 se muestra gráficamente la representación de la declaración de las variables Anteriores Fig. 3.1. Declaración de variables. Si a continuación asignamos un valor a la variable dato, éste se almacenaría en la dirección de memoria bffff120. En el caso de puntero, si le asignamos un contenido (la dirección de la variable dato), la dirección en memoria de la variable dato se almacenaría en la dirección 0012fed4. Supongamos que realizamos las siguientes asignaciones: 9

dato = 99; puntero = &dato; El resultado en la memoria se muestra en la Figura 3.2. Debemos recordar que mediante el operador & obtenemos la dirección de una variable. Fig. 3.2. Asignación de valores. Una vez realizada la asignación anterior, disponemos de dos maneras de acceder al contenido de la variable dato. La primera forma de acceder es mediante el nombre de la variable y la segunda mediante el puntero que apunta a dicha variable. Para acceder a la variable dato mediante puntero, se utiliza el operador *. Una utilidad del paso de argumentos por referencia se relaciona con la devolución de valores desde una función. Como ya sabemos, en C una función sólo puede devolver un único valor. Sin embargo, a menudo se hace necesario que una función devuelva más de un valor, y es aquí donde podemos utilizar el paso de argumentos por referencia. Además, la utilización del paso de argumentos por referencia nos permite ahorrar tiempo y espacio. En el caso que deseáramos pasar algo a una función cuyo tamaño sea grande, por ejemplo una estructura, sería conveniente pasarla por referencia, ya que si lo hacemos por valor, se tiene que realizar una copia de la misma y colocarla en la pila, lo que implica consumo de tiempo y espacio. 10

Funciones para el manejo de cadenas Todas las funciones para el manejo de cadena su prototipo se encuentra en:#include<string.h> Funcion stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup _strerror strerror stricmp strlen strlwr strncat strncmp strncmpi strncpy strnicmp strnset strpbrk strrchr strrev strset strspn strstr _strtime strtod strtol strtoul strupr Descripcion Copia una cadena de caracteres en otra.se detiene cuando encuentra el terminador nulo. Añade una cadena de caracteres a otra. Busca, en una cadena, un caracter dado. Compara dos cadenas. Macro que compara dos cadenas sin distinguir entre mayúsculas y minúsculas Copia una cadena. Busca segmentos que no contienen un subconjunto de un conjunto especificado de caracteres. Copia una cadena a una nueva localidad. Genera un mensaje de error definido por el programador. Retorna el apuntador al mensaje asociado con el valor del error. Compara dos cadenas sin diferenciar entre mayúsculas y minúsculas Determina la longitud de una cadena. Convierte las mayúsculas de una cadena en minúsculas. Añade el contenido de una cadena al final de otra. Compara parte de una cadena con parte de otra. Compara parte de una cadena con parte de otra, sin distinguir entre mayúsculas y minúsculas. Copia un un número de bytes dados, desde una cadena hacia otra. Compara parte de una cadena con parte de otra, sin distinguir entre mayúsculas y minúsculas. Hace que un grupo de elementos de una cadena tengan un valor dado. Busca la primera aparición, en una cadena, de cualquier caracter de un conjunto dado. Busca la última aparición de un caracter en una cadena. Invierte el orden de los caracteres de una cadena. Hace que los elementos de una cadena tengan un valor dado. Busca en una cadena el primer segmento que es un subconjunto de un conjunto de caracteres dado Busca en una cadena la aparición de una subcadena dada. Convierte la hora actual a una cadena. Convierte una cadena a un valor double ó long double. Convierte una cadena a un valor long. Convierte una cadena a un valor unsigned long. Convierte las minúsculas de una cadena a mayúsculas. 11

EJEMPLOS DE LAS PRINCIPALES FUNCIONES PARA EL MANEJO DE CADENAS Strlen() n = strlen (cadena); strcad(): Recuende que cadena1 es la cadena destino y cadena2 es la cadena origen strcat (cadena1, cadena2) ; strcmp() Strcmp (cadena1, cadena2) ; strcmpi() strcpy (cadena1, cadena2); strlwr() strlwr (cadena); strrev() strrev (cadena); / * Programa de ejemplo para utilizar las funciones de cadena * / # Include <stdio.h> # Include <string.h> void main () char s1 [20], s2 [20], s3 [20]; int X, L1, L2, L3; printf ("Introduzca las cadenas"); scanf ("% s% s", s1, s2); x = strcmp (s1, s2); if (x! = 0) printf ("\ nstrings no son iguales \ n"); strcat (s1, s2); printf ("\ nstrings son iguales"); strcpy (s3, s1); l1 = strlen (s1); l2 = strlen (s2); l3 = strlen (s3); printf ("\ ns1% s = \ longitud t =% d caracteres \ n", s1, L1); printf ("\ ns2% s = \ longitud t =% d caracteres \ n", s2, l2); printf ("\ ns3% s = \ longitud t =% d caracteres \ n", s3, l3); 12

Ejercicios Resueltos Realizar una función llamada par, que toma un número entero como parámetro, y devuelve 1 si es par o devuelve 0 si es impar. NOTA: Para saber si un número entero es par, al dividirlo entre 2 su resto debe ser 0. #include<stdio.h> int par(int); // o int par(int numero); int main() int numero, resultado; printf( Introduzca un número:\n ); scanf( %i,&numero); resultado=par(numero); if (resultado==1) printf( Es par.\n ); else printf( Es impar.\n ); return(0); /* Función par: Devuelve un valor indicando si un número entero es par o no. */ int par(int numero) if((numero%2)==0) return(1); else return(0); 13

Realizar una función llamada media2, que toma dos números reales como parámetros, y devuelve un número real que es la media de los dos números pasados como parámetros. NOTA: Para calcular la media de dos números, se suman, y ese resultado se divide entre 2. #include<stdio.h> float media2(float,float); //o float media2(float n1, float n2); int main() float n1, n2, resultado; printf( Introduzca un número real:\n ); scanf( %f,&n1); printf( Introduzca otro número real:\n ); scanf( %f,&n2); resultado=media2(n1,n2); printf( La media es: %f.\n,resultado); return(0); // Función media2: Devuelve la media de 2 números. float media2(float n1, float n2) float resultado; resultado=(n1+n2)/2; return(resultado); 14

Realizar una función llamada media3, que toma tres números reales como parámetros, y no devuelve nada. Esa función debe calcular la media de los tres números pasados como parámetros y mostrar con un mensaje cuál es la media calculada. NOTA: Para calcular la media de tres números, se suman, y ese resultado se ivide entre 3. #include<stdio.h> void media3(float,float,float); //o void media3(float n1,float n2,float n3); int main() float n1, n2, n3; printf( Introduzca un número real:\n ); scanf( %f,&n1); printf( Introduzca otro número real:\n ); scanf( %f,&n2); printf( Introduzca otro número real:\n ); scanf( %f,&n3); media3(n1,n2,n3); return(0); // Función media3: Informa de la media de void media3(float n1, float n2, float n3) 3 números. float resultado; resultado=(n1+n2+n3)/3; printf( La media es:%f\n,resultado); 15

Realizar una función llamada negativo, que toma un número entero como parámetro, y devuelve 1 si es negativo o 0 si no lo es. #include<stdio.h> int negativo(int numero); int main() int n,resultado; printf( Introduzca un número:\n ); scanf( %i,&n); resultado=negativo(n); if (resultado==1) printf( Es un número negativo.\n) ; else printf( No es negativo.\n ); return(0); /* Función negativo: Devuelve 1 si es negativo el número entero pasado como parámetro, o 0 si no lo es. */ int negativo(int numero) int res; if (numero<0) res=1; else res=0; return(res); 16

Ejercicios Propuestos 1. 1-Realice un programa en C que contenga una función llamada invertir que reciba un parámetro de tipo char y que retorne la cadena invertida. 2. Diseñe un Programa en C que contenga una función llamada primo que reciba como parámetro un numero entero positivo. Retorne 1 si en numero es primo de los contrario retorne 0. Ojo, los números primos sólo son divisibles por el mismo y por la unidad (1). 3. Diseñe un programa en C que contenga un función llamada factorial que reciba como parámetro un numero entero positivo y muestre su facturial. 4. Diseñe un programa en C que contenga 4 funciones (sumar, restar, dividir, multiplica), las cuales recibirán 2 parámetros de tipo entero y retorne el resultado de la operación. Haga uso del switch. 5. Diseñe un programa con una función llamada potencia, que dada una cifra entera positiva, sea elevada a una potencia introducida por el usuario, la función recibirá 2 parámetros enteros y retornara el resultado de la operación. (Ejemplo: 5^2=25). 6. Escribir una función reemplaza, la cual toma una cadena como parámetro, le reemplaza todos los espacios en blanco de la cadena por un guión bajo, y devuelve el número de espacios reemplazados. 17