Está en la página 1de 21

Funciones

Funciones
Definicin:
Lasfuncionessonlosbloquesdeconstruccinbsicosde
C.Dentrodeellassedatodalaactividaddelprograma.

Criteriosparacrearlas:
SeusalaestrategiadeDividiryConquistar,enotras

palabras,esrealizarlaparticindelatareaensubtareas
msfcilesdeabordar.

Todoproblemasepuederesolverconfuncionesosinellas,
perosuusoadecuadohacequeelprogramaseams
eficiente,fcildeleeryprobar.

Funciones: ventajas
1. Facilitaeldiseodescendente.
2.Losprocedimientosdentrodeellassepuedenejecutar
variasveces.
3.Facilitaladivisindetareas.
4.Sepuedenprobarindividualmente
5.Confuncionesapropiadamentediseadas,esposible
ignorarcomoserealizaunatarea,sabiendoquesloque
hacen.

Funciones: Especificacin
formal
SINTAXIS
tipo nombre_funcion(lista de parmetros){
cuerpo de la funcin
}

tipo : especificaeltipodevalorquedevuelvela

funcin.Sinoseespecificatipo,elcompiladorasume
queesentero(int).

lista de parmetros : eslalistadenombresde

variablesseparadosporcomasconsustipos
asociadosquerecibenlosvaloresdelosargumentos
actualesdelallamadaalafuncin.
4

La sentencia return

Fuerzalasalidainmediatadelafuncinenquese
encuentra.

Sepuedeutilizarparadevolverunvalor.

Funciones

Lasfuncionesterminansuejecucinyaseaatravsdela
ejecucindelaltimainstruccinoutilizandolasentencia
return.

Unfuncinpuederetornarvalorslocuandoeltipode
retornonoesvoid.

Lasfuncionesquesondetiposdistintosdevoidpuedenser
utilizadascomooperandosenotrasexpresionesdel
lenguaje.

Funcin main()
Mediantelasentenciareturn,elprogramapuede

devolveruncdigodeterminacinalprocesode
llamada(Ej.:enteroaShelldecomandosenUnix).

Elvalordevueltopuedeser0queindicaterminacin
normalounvalorqueidentificaunerrordetectado
porelprograma.

Elvalordevueltopuedeserusadoparaejecucin
condicionaldecomandosenshellenUnix.

Variables locales y
globales
VariablesLocales:
Sedeclarandentrodelafuncinysloestndisponibles
durantesuejecucin.

Secreancuandoseentraenejecucinunafuncinyse
destruyencuandosetermina.

Variablesglobales:
Sedeclaranfueradelasfunciones.Puedenserutilizadas
portodaslasfunciones.

Existendurantetodalavidadelprograma.

Argumentos de funciones
Sonvariableslocalesconocidascomoparmetros

formalesyseutilizancomounmedioparaentregarle
informacinalafuncin.

Losparmetrosformalesrecibensusvaloresiniciales

desdelosparmetrosreales,esdecirdesdelosvalores
queselespasanatravedelallamada.Ejemplo:
Parmetro real (llamada)
main( ){
Parmetro formal (declaracin)
imprimeEntero(5);
}
void imprimeEntero(int x){
printf(%d\n, x);/* x vale 5 */
}
9

Transferencia de
Informacin
por valor: copiaelvalordeunargumentodelallamada
enelparmetroformaldelafuncin.Porlotanto,los
cambiosenlosparmetrosdelafuncinnoafectanalas
variablesqueseusanenlallamada.

por referencia: secopialadireccindelargumentoenel


parmetro.Loscambioshechosalosparmetrosafectana
lasvariablesusadasenlallamadaalafuncin.

10

Ejemplo

Construyaunprogramaquecalculeelcuadradode
los10primerosnmerosenteros.

11

Solucin
#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;
}
12

CADENA DE
CARACTERES

Cadenas
Una cadena de caracteres es un arreglo unidimensional de
caracteres que termina con el carcter \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;

Declaracin e inicializacin
#include <stdio.h>
#include <conio.h>
main(){
// declara una cadena de longitud 20 como mximo.
char a[20];
// declara una cadena de longitud 20 como mximo.
// 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();
}

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();
}

Biblioteca stdlib.h

Funcin

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

Funciones de cadenas
Biblioteca string.h
Funcin

Descripcin

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)

Aade una copia de cad0 al final de la cadena cad1.

strncat(cad1,cad0,n) Aade 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 segn si la cadena cad0 es mayor, igual o
menor que cad2.

strchr(cad,c)

Localiza la primera ocurrencia del carcter c dentro de la


cadena cad y regresa el apuntador a la cadena restante.

Quiz
Qu funcin realiza la conversin especificada?
1. atol

___ convierte carcter a mayscula

2. atod

___ convierte cadena a entero

3. atoi

___ convierte carcter a minscula

4. tolower

___ convierte cadena a entero largo

5. toupper

___ convierte cadena a

double

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;
}

Otra solucin 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();
}

También podría gustarte