Modularización (Funciones y Procedimientos)

Modularización   (Funciones  y  Procedimientos)   •  En  general  un  problema  complejo  puede  ser  resuelto  de  manera  más  fácil   y  eficiente  

179 downloads 161 Views 4MB Size

Recommend Stories


5. Subprogramas(subalgoritmos ):procedimientos y funciones
5. Subprogramas(subalgoritmos ):procedimientos y funciones En este capitulo se describen las funciones y procedimientos, con los conceptos de variable

Funciones, procedimientos, secuencias y cursores en Oracle
Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos Escuela Técnica Superior de Ingeniería Informáti

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL
GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL Conceptos, historia y contexto http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html L

REGLAMENTO ORGANICO FUNCIONAL Y MANUAL DE FUNCIONES Y PROCEDIMIENTOS DE LA ORQUESTA SINFONICA NACIONAL DEL ECUADOR
REGLAMENTO ORGANICO FUNCIONAL Y MANUAL DE FUNCIONES Y PROCEDIMIENTOS DE LA ORQUESTA SINFONICA NACIONAL DEL ECUADOR. REGLAMENTO ORGANICO FUNCIONAL DE

Story Transcript

Modularización   (Funciones  y  Procedimientos)   •  En  general  un  problema  complejo  puede  ser  resuelto  de  manera  más  fácil   y  eficiente  si  se  divide  en  problemas  más  pequeños  y  concentrándonos  en   cada  etapa  en  la  solución  de  ese  "subproblema".     •  Esto  implica  que  el  gran  problema  original  será  resuelto  por  medio  de   varios  módulos,  cada  uno  de  los  cuales  se  encarga  de  resolver  un   subproblema  determinado.  Esos  módulos,  se  conocen  con  el  nombre  de   subalgoritmos.     •  Los  subalgoritmos  se  escriben  sólo  una  vez,  luego  es  posible  hacer   referencia  a  ellos  ("llamarlos")  desde  diferentes  puntos  de  un  pseudo   código.  La  ventaja  obvia  es  que  nos  permite  reuGlización  y  evita  la   duplicación  de  códigos.     •  Los  subalgoritmos  son  independientes  entre  si,  en  el  senGdo  de  que  se   puede  escribir  y  verificar  cada  módulo  en  forma  separada  sin  preocuparse   por  los  demás  módulos.  Por  ello,  es  menos  complicado  localizar  un  error  y   también  se  puede  modificar  el  código  sin  tener  que  tocar  o  rehacer  varias   partes  del  mismo.     •  Los  subalgoritmos  pueden  ser  dos  Gpos:  Funciones  y  Procedimientos   (también  llamadas  subruGnas  o  subprogramas).    

Modularización   (Funciones  y  Procedimientos)   •  Notemos  que  al  uGlizar  procedimientos  y  funciones  se   establece  un  límite  para  el  alcance  de  las  variables,  unas   tendrán  efecto  y  valor  sólo  en  el  subalgoritmo  y  otras  en  el   algoritmo  principal,  también  es  posible  especificar  que  una   variable  tenga  efecto  en  el  algoritmo  principal  y  todos  los   subalgoritmos.     •  Los  subalgoritmos  pueden  recibir  valores  del  algoritmo   principal  (parámetros),  trabajar  con  ellos  y  devolver  un   resultado  al  algoritmo  principal:  No  existen  limitaciones  en   cuanto  a  las  acciones  que  pueda  ejecutar  un  subalgoritmo.     •  Un  subprograma  puede,  a  su  vez,  invocar  o  llamar  a  otros  o   a  sus  propios  subprogramas,  inclusive  puede  llamarse  a  sí   mismo    (esto  se  conoce  como  recursividad).  

Modularización   (Funciones  y  Procedimientos)   •  Cada  módulo  debe  tener  un  nombre  que  lo  idenGfique.     •  Puede  tener  una  serie  de  parámetros  asociados.     •  El  nombre  del  módulo  es  uGlizado  para  la  invocación   del  mismo.     •  Cuando  se  invoca  a  un  subprograma  se  transfiere  el   control  al  mismo  y  una  vez  finalizada  la  úlGma   instrucción  del  módulo  el  control  retornará  a  la   siguiente  instrucción  del  programa  o  subprograma  que   lo  llamó.  

Ámbito  de  las  variables   En  programación  existen  dos  5pos  de  variables,  las  llamadas  locales  y  las  variables  globales.        

•  •  •  •  • 

•  • 

Variables  Locales:  Son  aquellas  que  se  encuentran  dentro  de  un  subprograma   (procedimiento  o  función)  y  es  disGnta  de  las  variables  que  están  en  el  algoritmo  principal.  El   valor  se  confina  al  subprograma  en  el  que  está  declarada.     Si  en  el  algoritmo  principal  tratamos  de  uGlizar  estas  variables  o  imprimirlas,  no   obtendremos  nada,  ya  que  para  el  algoritmo  estas  variables  son  locales  y  desde  su  punto  de   vista  NO  EXISTEN.   Variables  Globales:  Son  las  que  se  definen  o  están  declaradas  en  el  algoritmo  principal  y   Gene  efecto  tanto  en  el  algoritmo  principal  como  en  cualquiera  de  sus  subprogramas.     numero  y  resultado  son  variables  globales,  es  decir  que  están  disponibles  en  el  algoritmo   principal  y  también  en  la  función  RAIZCUA.   Comparación:  Una  variable  local  (de  un  subprograma)  no  Gene  ningún  significado  en  el   algoritmo  principal  y  otros  subprogramas.  Si  un  subprograma  asigna  un  valor  a  una  de  sus   variables  locales,  este  valor  no  es  accesible  a  otros  subprogramas,  es  decir,  no  pueden   uGlizar  este  valor.  Las  variables  globales  Genen  la  ventaja  de  comparGr  información  de   diferentes  subprogramas.   En  resumen:  las  variables  locales  son  las  que  se  definen  en  subprogramas  y  solo  Genen  valor   dentro  de  él.  Las  variables  globales  son  definidas  en  el  algoritmo  principal  y  Genen  valor  y  se   pueden  uGlizar  en  cualquier  parte  de  algoritmo  o  en  cualquier  subprograma.   Conceptualmente,  puede  decirse  que  desarrollar  módulos  con  independencia  funcional,   variables  locales  y  mínima  comunicación  externa  mediante  parámetros  es  una  buena   prácGca  de  programación,  que  favorece  la  reuGlización  y  el  mantenimiento  del  soYware.  

Funciones     •  Una  función  es  una  expresión  que  toma  uno  o  más  valores   llamados  argumentos  y  produce  un  valor  que  se  llama  resultado.   Este  resultado  es  además,  único.     •  Ejemplos  de  funciones  matemáGcas  son  los  logaritmos,  funciones   trigonométricas  (seno,  coseno,  etc).       •  Una  función  puede  devolver  un  resultado  que  puede  ser  una   cadena,  un  número  o  un  valor  de  Gpo  lógico  (verdadero  o  falso)   •  Esto  hace  que  en  los  lenguajes  de  programación,  debamos   especificar  de  qué  Gpo  es  una  función.  Una  función  será  de  Gpo   numérica  cuando  devuelva  un  número  y  será  de  Gpo  alfanumérica   o  string  cuando  devuelva  una  cadena   •  La  llamada  a  una  función  será  siempre:                variable  ß  nombre_funcion  (parámetros)  

Ejemplo:   La  llamada  a  una  función  MES  que  devuelva  el   nombre  del  mes,  pasándole  el  valor  numérico   correspondiente    será:        nombre_mes  ß  MES(2)                                  (esto  devolvería  "Febrero")   •  La  función  es  de  Gpo  string  porque  devuelve   una  cadena  como  resultado  en  la  variable   nombre_mes  

Implementación     SubProceso  Tipo  variable_retorno  ß  nombre_funcion  (parámetros)  

                    FinSubProceso       Parámetros:  

=po_var1  var1,    =po_var2  var2,  …,    =po_varN  varN  

 

Ejemplo   Algoritmo  principal

SubProceso  String  nombreßMES  (entero  valor)                         Programa    LosMesesDelAño          Según  sea  valor                  1:      entero  numero_mes                                          nombreß"Enero"      string  nombre_mes                  2:   Inicio                                            nombre  ß  "Febrero"                  3:      leer  numero_mes                                          nombre  ß  "Marzo”      mientras  numero_mes  12                  4:          Escribir  "Debe  ingresar  un  número  entre  1  y  12"                                              nombre  ß  "Abril”                  //  Validación  del  número  entre  1  y  12                  5:                                            nombre  ß  "Mayo”          leer  numero_mes                  6:        fin  mientras                                  nombre  ß  "Junio"                    7:      nombre_mes  ß  MES(numero_mes)                                  nombre  ß"Julio"                  8:                                                      //  Llamada  a  la  función  MES        imprimir  "El  mes  correspondiente  es:  ",  nombre_mes                                  nombre  ß  "Agosto"                  9:   Fin                                  nombre  ß  "SeGembre"                      10:                                      nombre  ß  "Octubre"                    11:                                          nombre  ß  "Noviembre"                  12:                                      nombre  ß  "Diciembre"            FinSegún                        //  la  función  devuelve  el  resultado  “nombre”    al  algoritmo  principal     FinSubProceso      

                                       Funcion  MES  à  

 

Matlab   Algoritmo  principal  en  archivo   LosMesesDelAño.m  

func5on  LosMesesDelAño()   %    entero  numero_mes   %    string  nombre_mes      numero_mes=input(‘Ingrese  Numero  de  Mes’);        while(numero_mes  12)          disp(‘Debe  ingresar  un  número  entre  1  y  12’);                  //  Validación  del  número  entre  1  y  12          numero_mes=input(‘Ingrese  Numero  de  Mes’);      fin  mientras        nombre_mes  =  MES(numero_mes)                                                      //  Llamada  a  la  función  MES        disp(  [‘El  mes  correspondiente  es:  ‘,  nombre_mes)];              

                                       Funcion  MES  à            

     

funcGon  nombre=MES  (valor)                      switch  valor                  case  1                                          nombre=‘Enero’;                  case  2                                              nombre=  "Febrero“;                  case  3                                          nombre  =  "Marzo“;                  case  4                                  nombre  =  "Abril“;                  case  5                                  nombre  =  "Mayo“;                  case  6                                    nombre  =  "Junio“;                  case  7                                  nombre  ="Julio“;                  case  8                                  nombre="Agosto“;                  case  9                                  nombre="SeGembre“;                  case  10                                  nombre  =  "Octubre“;                  case  11                                          nombre=  "Noviembre“;                  case    12                                  nombre="Diciembre“;          end            

Ejemplo   *    Ejemplo1:  Escribir  una  función  que  devuelva  la  raíz  cuadrada  de  un  número   ingresado  por  teclado.  

Programa  CalcaRaiz   Inicio   SubProceso  real  raiz  ßRAIZCUA(  real  valor)        real  numero,  resultado                    raiz  ß      valor  ^  1/2                  leer  numero   FinSubProceso                  mientras  numero  <  =  0  Hacer                          Escribir  "Ingrese  un  número  posiGvo"                          leer  numero                  fin-­‐mientras                  resultadoßRAIZCUA(numero)                  imprimir  "La  raiz  cuadrada  es:",  resultado   Fin  

 

 

 

Matlab   Nota:  en  matlab  hay  una  función  “mean”  que  calcula  el  promedio…  

funcGon  calcularProm()                  numero1=input(‘ingrese  un  numero’);                  numero2=input(‘ingrese  otro  numero’);                  numero3=input(‘ingrese  otro  numero’);                            prom  =PROMEDIO(numero1,  numero2,  numero3);                  disp([  ‘El  promedio  es:  ‘,  num2str(prom)]);           función  promedio=PROMEDIO(valor1,  valor2,  valor3)                                promedio  =  (valor1  +  valor2  +  valor3)  /  3;  

Procedimientos   •  Hemos  visto  que  las  funciones  se  uGlizan  para  devolver  como  resultado  un   valor,  sin  embargo,  en  ocasiones  necesitaremos  devolver  más  de  un   resultado  o  también  ejecutar  las  mismas  líneas  de  código  varias  veces  en   un  algoritmo  (como  por  ejemplo  una  ordenación,  etc.)  En  estas   situaciones  la  función  no  es  apropiada  y  se  uGlizarán  los  procedimientos   (también  llamados  subruGnas).   •  Un  procedimiento  es  un  conjunto  de  sentencias  o  instrucciones  que   realizan  una  determinada  tarea  y  que  pueden  ser  ejecutados  desde  más   de  un  punto  del  programa  principal.     •  Un  procedimiento  Gene  una  llamada.  Cuando  el  procedimiento  se  ejecuta   totalmente,  vuelve  al  punto  desde  donde  fue  llamado  y  se  ejecuta  la   siguiente  instrucción.   •  Notemos  que  el  objeGvo  de  los  procedimientos  es  ayudar  en  la   modularidad  del  programa  y  evitar  la  repeGción  de  instrucciones  ya  que   estas  se  pueden  escribir  en  un  procedimiento  solo  una  vez  y  llamar  al   procedimiento  cuantas  veces  sea  necesario.   •  Desde  el  programa  principal  es  posible  pasar  valores  (numéricos,   alfanuméricos  o  combinación  de  ambos)  al  procedimiento.  Este  uGlizará   esos  valores  para  realizar  un  determinado  proceso.    Los  valores  que  se   pasan  a  un  procedimiento  (en  forma  de  variables)  se  llaman  parámetros   (de  igual  forma  que  en  las  funciones).  

Procedimientos  -­‐  Declaración   La  sintaxis  para  la  declaración  de  un  procedimiento  es   la  siguiente:   SubProceso  Nombre_procedimiento  (parámetros)                                                                                                       FinSubProceso      La  llamada  a  un  procedimiento  se  hace  simplemente   por  su  nombre:        Nombre_procedimiento(parámetros)    

Procedimientos   • 

Cuando  necesitemos  devolver  más  de  un  valor  en  un  procedimiento,  las  variables  en  que  se  devolverán  los   resultados  deben  figurar  también  en  la  lista  de  parámetros.   – 

  • 

Pasaje  de  Parámetros  por  Referencia!!!!  

Ejemplo:  Procedimiento  para  calcular  el  cociente  y  resto  de  la  división  entre  dos  números  

Programa  Cociente                      entero    numeroA,  numeroB,  P,  Q                    leer  numeroA,  numeroB                  DIVISION  (numeroA,  numeroB,  P,  Q)                    Escribir    P,  Q   Fin-­‐Programa       SubProceso    DIVISION  (  entero  dividendo,  entero  divisor,                                          entero  cociente  POR  REFERENCIA,  entero  resto  POR  REFERENCIA)                              cociente    =  dividendo  /  divisor                resto  =  dividendo  -­‐  cociente  *  divisor   fin-­‐procedimiento     •  En  este  ejemplo,  se  pasan  los  números  el  dividendo  y  divisor  (numeroA  y  numeroB  respecGvamente)  y  también  en   los  parámetros  de  llamada  al  procedimiento  deben  figurar  las  variables  en  las  que  se  devolverán  los  resultados  de   cociente  y  resto  (P  y  Q  respecGvamente).   •  Las  Variables  “dividendo”  y  “divisor”  se  pasan  POR  VALOR                          à    VARIABLES  SOLO  DE  ENTRADA   •  Las  Variables  “cociente”  Y  “resto”            se  pasan  POR  REFERENCIA      à    VARIABLES  DE  ENTRADA  Y  SALIDA      

Matlab   •  En    Matlab  no  hay  procedimientos,  son  todas  funciones.     •  En  Matlab,  una  función  puede  retornar  varios  resultados.     •  Ejemplo:  Procedimiento  para  calcular  el  cociente  y  resto  de  la  división   entre  dos  números   En  el  archivo  Cociente.m:   funcGon  Cociente()                      numeroA  =  input(‘ingrese  el  dividendo’);                    numeroB  =  input(‘ingrese  el  divisor’);                  [P,Q]=DIVISION  (numeroA,  numeroB);                    disp([  P,  Q]);       func:on  [cociente,resto]=DIVISION  (dividendo,  divisor)                              cociente    =  fix(dividendo  /  divisor);                resto  =  dividendo  -­‐  cociente  *  divisor;      %resto=rem(dividendo,  divisor)      

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.