Funciones Expo 2015 MMM

21
Funciones

description

FUNCIONES

Transcript of Funciones Expo 2015 MMM

Page 1: Funciones Expo 2015 MMM

Funciones

Page 2: Funciones Expo 2015 MMM

2

Funciones

• Definición:

• Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad del programa.

• Criterios para crearlas:

• Se usa la estrategia de “Dividir y Conquistar”, en otras palabras, es realizar la partición de la tarea en subtareas más fáciles de abordar.

• Todo problema se puede resolver con funciones o sin ellas, pero su uso adecuado hace que el programa sea más eficiente, fácil de leer y probar.

Page 3: Funciones Expo 2015 MMM

3

Funciones: ventajas

1.- Facilita el diseño descendente.

2.- Los procedimientos dentro de ellas se pueden ejecutar varias veces.

3.- Facilita la división de tareas.

4.- Se pueden probar individualmente

5.- Con funciones apropiadamente diseñadas, es posible ignorar como se realiza una tarea, sabiendo qué es lo que hacen.

Page 4: Funciones Expo 2015 MMM

4

Funciones: Especificación formal

• tipo : especifica el tipo de valor que devuelve la función. Si no se especifica tipo, el compilador asume que es entero (int).

• lista de parámetros : es la lista de nombres de variables separados por comas con sus tipos asociados que reciben los valores de los argumentos actuales de la llamada a la función.

SINTAXIS

tipo nombre_funcion(lista de parámetros){

cuerpo de la función

}

Page 5: Funciones Expo 2015 MMM

5

La sentencia return

• Fuerza la salida inmediata de la función en que se encuentra.

• Se puede utilizar para devolver un valor.

Page 6: Funciones Expo 2015 MMM

6

Funciones

• Las funciones terminan su ejecución ya sea a través de la ejecución de la última instrucción o utilizando la sentencia return.

• Un función puede retornar valor sólo cuando el tipo de retorno no es void.

• Las funciones que son de tipos distintos de void pueden ser utilizadas como operandos en otras expresiones del lenguaje.

Page 7: Funciones Expo 2015 MMM

7

Función main()

• Mediante la sentencia return, el programa puede devolver un código de terminación al proceso de llamada (Ej.: entero a Shell de comandos en Unix).

• El valor devuelto puede ser 0 que indica terminación normal o un valor que identifica un error detectado por el programa.

• El valor devuelto puede ser usado para ejecución condicional de comandos en shell en Unix.

Page 8: Funciones Expo 2015 MMM

8

Variables locales y globales

• Variables Locales:

• Se declaran dentro de la función y sólo están disponibles durante su ejecución.

• Se crean cuando se entra en ejecución una función y se destruyen cuando se termina.

• Variables globales:

• Se declaran fuera de las funciones. Pueden ser utilizadas por todas las funciones.

• Existen durante toda la vida del programa.

Page 9: Funciones Expo 2015 MMM

9

Argumentos de funciones• Son variables locales conocidas como parámetros

formales y se utilizan como un medio para entregarle información a la función.

• Los parámetros formales reciben sus valores iniciales desde los parámetros reales, es decir desde los valores que se les pasan a traveś de la llamada. Ejemplo:

main( ){ imprimeEntero(5);}void imprimeEntero(int x){ printf(“%d\n”, x);/* x vale 5 */}

Parámetro real (llamada)

Parámetro formal (declaración)

Page 10: Funciones Expo 2015 MMM

10

Transferencia de Información

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

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

Page 11: Funciones Expo 2015 MMM

11

Ejemplo

Construya un programa que calcule el cuadrado de los 10 primeros números enteros.

Page 12: Funciones Expo 2015 MMM

12

Solución#include <stdio.h>

int cuadrado(int x){

int r;

r=x*x;

return r;

}

main(){

int i,resultado;

for (i=0;i<10;i++){

resultado = cuadrado (i);

printf("Cuadrado de %d: %d\n",i,resultado);

}

return 0;

}

Page 13: Funciones Expo 2015 MMM

CADENA DE CARACTERES

Page 14: Funciones Expo 2015 MMM

CadenasUna cadena de caracteres es un arreglo unidimensional de caracteres que termina con el carácter \0.

El nombre de la variable de cadena se utiliza como un apuntador al inicio del arreglo de caracteres.

Las constantes de tipo cadena se encierran entre comillas dobles.

Ejemplos:

char a[10] = “hola”;

char m[25] = “”;

char *x = “San Luis Potosí”;

Page 15: Funciones Expo 2015 MMM

Declaración e inicialización#include <stdio.h>#include <conio.h>

main(){ // declara una cadena de longitud 20 como máximo. char a[20]; // declara una cadena de longitud 20 como máximo. // el contenido es la cadena “hola”, x[4] = ‘\0’. char x[10] = "hola"; // declara una cadena de 4 caracteres mas \0 char *m = "que tal"; // declara una cadena con longitud variable char s[] = {'B','i','e','n','v','e','n','i','d','o','\0'}; // declara una cadena con longitud variable char nom[] = "juan perez"; puts(x); puts(m); puts(s); puts(nom); printf("x es \"%s\", ",x); printf("m es \"%s\", ",m); printf("s es \"%s\", ",s); printf("nom es \"%s\" ",nom); getch();}

Page 16: Funciones Expo 2015 MMM

Lectura de cadenas#include <stdio.h>#include <conio.h>

main(){ //cadena de longitud variable char cad2[10]="hola"; char *cad0; char *cad1; cad0 = "Marruecos"; puts(cad0); cad0 = "San Luis Potosi"; puts(cad0); //lectura de cadena variable gets(cad1); puts(cad1); //lectura de cadena de longitud fija printf("%s\n",cad2); gets(cad2); puts(cad2); scanf("%s",cad2); puts(cad2); getch();}

Page 17: Funciones Expo 2015 MMM

Biblioteca stdlib.h

Función Significado

atoi(cad) Convierte cadena a entero

atof(cad) Convierte cadena a double

strtod(cad,&cad2) Convierte cadena a double

atol(cad) Convierte cadena a long

strtol(cad,&cad2,base) Convierte cadena a long

Page 18: Funciones Expo 2015 MMM

Funciones de cadenas

Función Descripción

strcpy(cad1,cad0) Copia la cadena cad0 en la cadena cad1

strncpy(cad1,cad0,n) Copia n caracteres de la cadena cad0 en la cadena cad1

strcat(cad1,cad0) Añade una copia de cad0 al final de la cadena cad1.

strncat(cad1,cad0,n) Añade n caracteres de cad0 al final de la cadena cad1

strstr(cad1,cad0) Localiza la primera ocurrencia de la cadena cad0 en la cadena cad1, regresa el apuntador a esa cadena.

strlen(cad0) Regresa la longitud de la cadena cad0

strcmp(cad0,cad1) Compara cad0 con cad1, regresa un entero mayor, igual o menor que cero según si la cadena cad0 es mayor, igual o menor que cad2.

strchr(cad,c) Localiza la primera ocurrencia del carácter c dentro de la cadena cad y regresa el apuntador a la cadena restante.

Biblioteca string.h

Page 19: Funciones Expo 2015 MMM

Quiz

¿Qué función realiza la conversión especificada?

1. atol ___ convierte carácter a mayúscula

2. atod ___ convierte cadena a entero

3. atoi ___ convierte carácter a minúscula

4. tolower ___ convierte cadena a entero largo

5. toupper ___ convierte cadena a double

Page 20: Funciones Expo 2015 MMM

Ejemplo: Cuenta las vocales de una cadena

int cuentaVocales(char s[]){ int i=0,cuenta=0; while(s[i]){ if(tolower(s[i])=='a'|| tolower(s[i])=='e'|| tolower(s[i])=='i'|| tolower(s[i])=='o'|| tolower(s[i])=='u' ) cuenta++; i++; } return cuenta;}

Page 21: Funciones Expo 2015 MMM

Otra solución para contar vocales

main(){ int cuentaVocales; char s[50]; printf("Escriba cadena:"); gets(s); cuentaVocales=cuenta(s,'a')+cuenta(s,'e')+ cuenta(s,'i')+cuenta(s,'o')+cuenta(s,'u'); printf("Total de vocales %d",cuentaVocales); getch();}