31
Funciones en lenguaje C Declaraci´on,definici´onyllamada Calculadora y esdigito10 Programaci´ on estructurada Funciones Oscar Alvarado Nava [email protected] Departamento de Electr´ onica Divisi´on de Ciencias B´ asicas e Ingenier´ ıa Universidad Aut´onoma Metropolitana, Unidad Azcapotzalco 13O, octubre de 2013 Oscar Alvarado Nava UAM Azcapotzalco Funciones 1/31

programación estructurada

Embed Size (px)

DESCRIPTION

Funciones

Citation preview

FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Programaci onestructuradaFuncionesOscarAlvaradoNavaoscar.alvarado.nava@gmail.comDepartamentodeElectr onicaDivisiondeCienciasBasicaseIngenieraUniversidadAutonomaMetropolitana,UnidadAzcapotzalco13O,octubrede2013OscarAlvaradoNava UAMAzcapotzalco Funciones 1/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Contenido1FuncionesenlenguajeCFuncionesenlenguajeCReglasdeambito2Declaracion,denicionyllamadaDeclaracionDenicionLlamada3Calculadorayesdigito10Calculadoraesdigito10OscarAlvaradoNava UAMAzcapotzalco Funciones 2/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10FuncionesenlenguajeCLenguajeestructuradoUnacaractersticaimportantedeloslenguajesestructuradoseslacompartimentaciondecodigoydatosEslahabilidaddellenguajedeseccionarelprogramaenbloquesomodulosdesentenciasCadabloquedesentenciasllevaacabounatareaespeccaLosbloquessonutilizadosyescondidosdelrestodelprogramacuandoesnecesarioOscarAlvaradoNava UAMAzcapotzalco Funciones 3/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10FuncionesenlenguajeCProgramaestructuradoOscarAlvaradoNava UAMAzcapotzalco Funciones 4/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10FuncionesenlenguajeCEllenguajeestructuradoCEllenguajeClogralacompartimentaciondecodigoydatospormediodedeusodefuncionesLasfuncionessoncompuestasporunconjuntodesentenciasyutilizanvariablesquenoafectanalasvariablesdeotrosbloquesdelprogramaLasvariablesquepertenecenaunafuncionsonllamadasvariableslocalesovariablesprivadasovariablestemporales,ovariablesautomaticasEstacaractersticapermitecompartiroreutilizarfacilmenteseccionesdecodigodeunprogramaOscarAlvaradoNava UAMAzcapotzalco Funciones 5/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10FuncionesenlenguajeCFuncionesenCLasfuncionessonbloquesendondesellevaacabotodalaactividaddelprogramaLasfuncionespermitenalprogramadordenirtareasespeccas,permitiendoqueelprogramaseamodularCrearunprogramaenmodulos(funciones)tienegrandesventajasEnfocarseeneldesarrollodetareasespeccasLavericaciondeunmodulonoafectaatodoelprogramaVariosprogramadorespudenparticipareneldesarrolloOscarAlvaradoNava UAMAzcapotzalco Funciones 6/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10ReglasdeambitoReglasdeambitoensentenciasLassentenciasdeunafuncionenC,solamentepuedeseraccedidasalllamaralafuncionEstaprohibidoaccederpormediodeunasaltoincondicionalcomogotoaunasentenciadeunafuncionLassentenciasqueconstituyenlafuncionestaranescodidasparaelrestodelprogramaOscarAlvaradoNava UAMAzcapotzalco Funciones 7/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10ReglasdeambitoReglasdeambitoenvariablesLassentenciasdelafuncionsolopodranafectarsusvariableslocalessinpoderafectarlasvariablesdeotrasfuncionesLasvariablesdelasfuncionessoncreadascuandosellamaalafuncionysondestruidascuandosesaledeellaLoqueimplicaqueelvalordelasvariableslocalespersistensolamentecuandolafuncionseestaejecutandoUnaexcepcionalareglaanterior,escuandoseleaplicaaunavariablelocalelmodicadordeaccesostaticLasfuncionestambienpodranmodicarlasvariablesglobalesdelcodigoOscarAlvaradoNava UAMAzcapotzalco Funciones 8/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10ReglasdeambitoReglasdeambitoentrefuncionesTodaslasfuncionesenCtienenelmismoniveldeambitoNoesposibledenirunafunciondentrodeotrafuncionUnafuncionpuedeserllamadadentrodeotrafuncionElqueunafuncionsellameasmisma,seutilizaparacrearlarecursiondeunafuncionOscarAlvaradoNava UAMAzcapotzalco Funciones 9/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Reglasdeambitofhola.c1 /* Programacion estructurada , 13O, Oscar Alvarado Nava*/2 #include 34 /* declaracion de la funcion */5 void funcion_hola ();67 /* definicion de la funcion */8 void funcion_hola ()9 {10 printf("hola desde la funcion\n");11 }1213 int main()14 {15 /* llamada de la funcion */16 funcion_hola ();1718 return 0;19 }OscarAlvaradoNava UAMAzcapotzalco Funciones 10/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Reglasdeambitofparametro.c1 #include 2 // Declaracion de las funciones3 void funcionInicio ();4 void funcionFin ();5 // Definicion de las funciones6 void funcionInicio ()7 {8 printf("Programacion estructurada\n");9 printf("Oscar Alvarado Nava\n");10 }11 void funcionFin(int var)12 {13 printf("Resultado %d\n",var);14 printf("Fin del programa\n");15 }16 int main()17 {18 int x=15, y=9, z=0;1920 // llamada a la funcion21 funcionInicio ();22 z = x + y;23 // llamada a la funcion24 funcionFin( z );2526 return 0;27 }OscarAlvaradoNava UAMAzcapotzalco Funciones 11/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10ReglasdeambitoFuncionesenCUnafuncionenCdebecumplirlosiguienteDebeserdeclaradaDebeserdenidaDebeserllamadaOscarAlvaradoNava UAMAzcapotzalco Funciones 12/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DeclaracionDeclaraci ondeunafuncionLadeclaraciondeunafuncion(oprotitipo)consisteenespecicarelnombre,listadeargumentosyelvalorderetornodelafunciontiponombrefuncion(lista de parametros);tipoeseltipodevalorquelafuncionregresapormediodelasentenciareturnlista de parametros es una lista de variables separadas porcomas,lascualesrecibiranunacopiadelvalordelavariablesutilizadascomoargumentosenlallamadaalafuncionOscarAlvaradoNava UAMAzcapotzalco Funciones 13/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DeclaracionUbicaci ondeladeclaraciontiponombrefuncion(lista de parametros);AlserunadeclaraciondebeterminarconpuntoycomaLadeclaraciondeunafunciondeberaestarantesdeladenicionydelallamadaComunmentelasdeclaracionesdelasfuncionesseagrupanenarchivosdecabecera(headers),archivosconextencion.hOscarAlvaradoNava UAMAzcapotzalco Funciones 14/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DeclaracionListadeparametrosenladeclaraci ontipo1nombrefuncion(tipo1, tipo2,..., tipo);Lalista de parametrosestaconformadaporladeclaraciondevariablesseparadasporcomasEnladeclaraciondeunafuncion,soloesnecesarioindicarlostiposdelalistadevariablesOscarAlvaradoNava UAMAzcapotzalco Funciones 15/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DeclaracionOmisionesnombrefuncion();LasomisioneseneltipoylistadeparametrosdependeradelcompiladorSinoseespecicauntipoderegreso,elcompiladorasumequeesdetipointUnafuncionpuedenotenerlistadeparametrosEnalgunoscompiladores estasomisionesdeberanserdeclaradascomoeltipodedatosgenericovoidvoidnombrefuncion(void);OscarAlvaradoNava UAMAzcapotzalco Funciones 16/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DeclaracionDeclaraci ondelafuncionsumafloatsuma(float, float);Lafuncionsumarrecibedosn umerosdetipofloatyregresaraunvalorfloatOscarAlvaradoNava UAMAzcapotzalco Funciones 17/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DenicionDenici ondeunafunci onLadeniciondeunafuncionconsisteenespecicarlassentenciasquecontendralafuncion.Elcuerpodeunafuncionesunbloquedesentenciastiponombrefuncion(tipo var1, tipo var2,.., tipo varN){sentencia1;sentencia2;...sentenciaN;}OscarAlvaradoNava UAMAzcapotzalco Funciones 18/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DenicionDenici ondeunafunci ontiponombrefuncion(tipo var1, tipo var2){sentencia1;sentencia2;...sentenciaN;}Ladeniciondeberaconcordarconladeclaracion:nombre,tipo,listadeparametrosSiexistelalista de parametros,enladenicionsedeberanespecicarlosidenticadoresdecadavariableOscarAlvaradoNava UAMAzcapotzalco Funciones 19/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DenicionDenici ondelafunci onsumafloatsuma(float x, float y){floattemp;temp = x + y;returntemp;}OscarAlvaradoNava UAMAzcapotzalco Funciones 20/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10DenicionDeclaraci onydenici ondelafunci onsuma/*Declaracion*/floatsuma(float, float);/*Definicion*/floatsuma(float x, float y){floattemp;temp = x + y;returntemp;}OscarAlvaradoNava UAMAzcapotzalco Funciones 21/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10LlamadaLlamadaaunafuncionLallamadaaunafuncionsepuederealizarencualquierpartedelcodigo,siempreycuandosetengaaccesoasudeclaracionydenicionParallamaralafuncion,bastaconcumplirconeln umerodeparametrosysustiposquelafuncionsolicitanombrefuncion(lista de parametros);Demaneraopcional,elvalorderetornopuedeseralmacenadoenunavariabledelmismotipoquelafuncionvar = nombrefuncion(lista de parametros);OscarAlvaradoNava UAMAzcapotzalco Funciones 22/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10LlamadaDeclaraci on,denici onyllamadadelafuncionsuma/*Declaracion*/floatsuma(float, float);/*Definicion*/floatsuma(float x, float y){floattemp;temp = x + y;return temp;}.../*Llamada*/resultado = suma(a ,b);...OscarAlvaradoNava UAMAzcapotzalco Funciones 23/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Calculadoracalculadora.c(1/4)1 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Realiza operaciones aritmeticas basicas a traves de funciones3 */4 #include 56 /* declaraciones de las funciones */7 float suma( float , float );8 float resta( float , float );9 float multiplica( float , float );10 float divide( float , float );11 float pide_dato ();12 int menu();1314 /* definiciones de las funciones */15 float suma( float x, float y )16 {17 float tmp;18 tmp = x + y;19 return tmp;20 }21 float resta( float x, float y )22 {23 float tmp;24 tmp = x - y;25 return tmp;26 }OscarAlvaradoNava UAMAzcapotzalco Funciones 24/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Calculadoracalculadora.c(2/4)27 float multiplica( float x, float y )28 {29 float tmp;30 tmp = x * y;31 return tmp;32 }33 float divide( float x, float y )34 {35 float tmp;36 if( y == 0.0 )37 {38 printf("error\n");39 return 0;40 }41 tmp = x / y;42 return tmp;43 }44 float pide_dato ()45 {46 float tmp;47 printf("dame un numero: ");48 scanf(" %f", &tmp );49 return tmp;50 }OscarAlvaradoNava UAMAzcapotzalco Funciones 25/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Calculadoracalculadora.c(3/4)51 int menu()52 {53 int op;54 do55 {56 printf("1. suma\n");57 printf("2. resta\n");58 printf("3. multiplica\n");59 printf("4. divide\n");60 printf("op: ");61 scanf(" %d", &op );62 }63 while( op < 1 || op > 4 );64 return op;65 }66 /* funcion principal */67 int main()68 {69 float x,y;70 int op;71 float r;7273 x = pide_dato ();74 y = pide_dato ();75 op = menu();OscarAlvaradoNava UAMAzcapotzalco Funciones 26/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10Calculadoracalculadora.c(4/4)76 switch( op )77 {78 case 1:79 r = suma( x, y);80 break;81 case 2:82 r = resta( x, y);83 break;84 case 3:85 r = multiplica( x, y);86 break;87 case 4:88 r = divide( x, y);89 break;90 default:91 printf("desconocido\n");92 }9394 printf("el resultado es %f \n", r );9596 return 0;97 }OscarAlvaradoNava UAMAzcapotzalco Funciones 27/31FuncionesenlenguajeC Declaracion,denicionyllamada Calculadorayesdigito10esdigito10esdigito10.c(1/2)1 /* Programacion Estructurada 13O, Oscar Alvarado Nava2 El programa prueba a traves de una funcion si un caracter dado3 es o no un digito decimal4 Regresa uno si es un digito decimal5 Regresa cero si NO es un digito decimal6 */7 #include 89 /* declaracion */10 int esdigito10( char );1112 /* definicion */13 int esdigito10( char caracter )14 {15 if( caracter >= 48 && caracter = 48 && caracter