CellPrint[TextCell[Quiet[cdf =Manipulate[Dynamic@SuFunc[orden],Style[proposito,Bold,10],Spacer[{100,3}],
 (*Inicio contadores *)
 {{orden,1,"Orden de integración"},{1->"dy dx    (primero x, luego y)", 2->"dx dy     (primero y, luego x)"},ControlType->PopupMenu},
 {{ff,1/(1+x+y),"f(x, y) = "},ControlType->InputField},
(*Int respecto de x *)
Row[{Style["Integrando respecto de x",Bold,10,RGBColor[0.5,0.1,0]]}],
 {{opcionx,1,"Opción = "},{1-> "Trapecio", 2->"Simpson", 3->"Tres Octavos", 4->"Punto Medio"},ControlType->PopupMenu},
{{nnx,9,"n="},ControlType->InputField},

{{puntoA,0,"a = "},ControlType->InputField},
{{puntoB,1,"b = "},ControlType->InputField},
Row[{Style["Integrando respecto de y",Bold,10,RGBColor[0.5,0.1,0]]}],
 {{opciony,1,"Opción = "},{1-> "Trapecio", 2->"Simpson", 3->"Tres Octavos", 4->"Punto Medio"},ControlType->PopupMenu},
{{nny,9,"n="},ControlType->InputField},

{{puntoC,1,"c = "},ControlType->InputField},
{{puntoD,2,"d = "},ControlType->InputField},

Button["Calcular integral de forma numérica", SuFunc[orden]  ] ,
Button["Calcular integral usando Mathematica",MessageDialog@ resp[(∫_puntoA^puntoB)(∫_puntoC^puntoD)ff \[DifferentialD]y\[DifferentialD]x]] 

(* Fin contadores *)

,Alignment->Center,Deployed->True,AppearanceElements->"ResetButton",LocalizeVariables->True,ContinuousAction->False,FrameLabel->{{None,None},{Column[{,Row[{Style["Autores: Juan Félix Ávila Herrera y Enrique Vílchez Quesada",Bold,10,RGBColor[0,0,0.5]]}],Row[{Style["Escuela de Informática | Universidad Nacional de Costa Rica",Bold,10,RGBColor[0.5,0.1,0]]}]},Center],Style["Aproximación numérica de integrales definidas\n usando las fórmulas compuestas de Newton-Cotes.", Bold,14, RGBColor[0,0.33,0.33]]}},
Initialization:>(
ClearAll["Global`*"];
resp[x_] := If[val =x; val==Round[val], x,escriba@{x," ≈ ",ToString[Sign[x] AccountingForm[Abs@N@x]]}];
escriba[lista_]:=Style[Row@lista,Black];
Clear[a, b, f];
integre = ToString[TraditionalForm@Defer[(∫_a^b)(∫_c^d)f[x, y]\[DifferentialD]y\[DifferentialD]x]];
PuntoMedioCompuesto[ n_] := Module[{h},h =((b-a)/(n+2)); 
2h  (∑_(k=0)^(n/2))f[a+(2k+1)*h]  
];
TresOctavoCompuesto[ n_] := Module[{h, A, B},h =((b-a)/n); 
 A =Total@Table[f[a+k h]+f[a+(k+1) h], {k, 1, n-2, 3}];
 B =Total@Table[f[a+k h], {k, 3, n-3, 3}];
 ((3h)/8)(f[a]+3A+2B+f[b])
];
 
formulas:={
{(h/2)(f[a]+f[b]+2 (∑_(k=1)^(n-1))f[a+k*h]  ) , ((-(b-a)h^2f''[ξ])/12),"(Regla compuesta del trapecio)\n"},
{(h/3)(f[a]+f[b]+2 (∑_(k=1)^(n/2-1))f[a+2k*h] +4(∑_(k=1)^(n/2))f[a+ h(2k-1)] ), ((-(b-a)h^4 )/180)* Derivative[4][f][ξ],"(Regla compuesta de Simpson)\n"},
{TresOctavoCompuesto[ n], (((b-a)h^2f''[ξ])/2),"(Regla compuesta de tres octavos)\n"},
 {PuntoMedioCompuesto[n], (((b-a) h^2 )/6)* Derivative[2][f][ξ],"(Regla Compuesta del Punto Medio)\n"}
 
};

Clear[f];

(*($PreRead=(#/. s_String/;StringMatchQ[s,NumberString]&&Precision@ToExpression@s==MachinePrecision:>s<>"`12."&));*)
proposito ="Propósito: Usar fórmulas compuestas para aproximar " <>integre;(*TraditionalForm@Defer[(∫_a^b)f[x]\[DifferentialD]x] ;*)

SuFuncX[  ff_]:=Module[{ aux, resp, pt, coef, error, max, val, hache = ((puntoB-puntoA)/nnx)},
n=nnx;
Which[opcionx==2∨opcionx==4,  If[¬EvenQ[nnx], nnx++], opcionx==3, While[Mod[nnx, 3] ≠0, nnx++]   ];
Clear[f, g];
g[t_] = ff/.x->t;
aux =N@formulas[[opcionx]][[1]]/.{a-> puntoA,b-> puntoB, h->hache, f->g   };  

N[aux ]
];


SuFuncY[  ff_]:=Module[{ aux, resp, pt, coef, error, max, val, hache = ((puntoD-puntoC)/nny)},
n=nny;
Which[opcionx==2∨opcionx==4,  If[¬EvenQ[nny], nny++], opcionx==3, While[Mod[nny, 3] ≠0, nny++]   ];
Clear[f, g];
g[t_] = ff/.y->t;
aux =N@formulas[[opcionx]][[1]]/.{a-> puntoC,b-> puntoD, h->hache, f->g   }; 

N[aux]
 
];

SuFunc[orden_] := Module[{resultado}, If[orden ==1,   
resultado=SuFuncY[SuFuncX[  ff]], resultado= SuFuncY[ SuFuncX[  ff]]];
resultado
];
)]],"Text"]]

CloudDeploy[cdf,Permissions->"Public"]