You are on page 1of 33

Flujo secuencial

El flujo secuencial consiste en seguir una secuencia de pasos que siguen un orden predeterminado. Por ejemplo, un programa que a partir de un número N de días, calcula la cantidad de segundos que hay en esta cantidad de días. Este programa se puede ver como una secuencia de varios pasos:
• • • • • •

Inicio: Ingresa el número N de días Paso : ! " #$%N, para determinar la cantidad de horas Paso #: & " '(%!, para determinar la cantidad de minutos. Paso ): * " '(%&, para determinar la cantidad de segundos. Paso $: +etorne *. ,in.

Figura 14. Flujo secuencial

-a macro correspondiente a esta secuencia de c.lculos puede escri/irse como sigue:

Function CalculeSegundos(Dias) CantHoras = 24 * Dias CantMinutos = 60 * CantHoras CalculeSegundos = 60 * CantMinutos End Function

Flujo condicional (If - Else)

0n flujo condicional se presenta en un programa o procedimiento que de/e escoger una acc1n o proceso a ejecutar, dependiendo de condiciones que puedan cumplirse. El caso m.s sencillo ocurre cuando el programa verifica si una condici1n se cumple y en caso de ser verdadera ejecuta un proceso, en tanto que si es falsa ejecuta otro proceso. En 234 tenemos la instrucci1n
If !"en Else

Ejecuta condicionalmente un grupo de instrucciones, dependiendo del valor de una e5presi1n. *inta5is condición !"en instrucciones Else instrucciones-else
If

Puede utili6ar la siguiente sinta5is en formato de /loque: condición !"en instrucciones ElseIf condición !"en instrucciones-elseif ... Else instrucciones-else
If End If

Nota: En la ayuda del editor de 2isual 3asic, tenemos acceso a la referencia del lenguaje.

Ejemplo 2 En este ejemplo veremos c1mo usar la instrucci1n If
!"en Else

7/tener un programa que calcule apro5imaciones de converge a

, sa/iendo que la sucesi1n

, definida en forma recurrente mediante la relaci1n:

El programa de/er. estimar el error a/soluto de las apro5imaciones y ser. capa6 de escri/ir un mensaje de 85ito o de fracaso, dependiendo de si el error a/soluto es o no menor que una tolerancia dada.

Figura 15. Resultado de la aproximación de

.

Para los resultados que aparecen en la gr.fica anterior pueden programarse las siguiente macros para ser evaluadas en cada columna:

Function AproxDeRaiz(x) AproxDeRaiz = (1 / 2) * (x + 2 / x) End Function Function CalculoElError(Aproximacion, alorExacto) CalculoElError = A!"(Aproximacion # alorExacto) End Function Function $eri%ica&ol(Error, &ol) '% (Error ( &ol) &)en $eri%ica&ol = *E+'&,* El"e $eri%ica&ol = *FRACA-,* End '% End Function

Flujo repetitivo (For-Next.El diagrama siguiente ilustra la forma en que esta última funci1n de verificaci1n actúa con /ase en el valor de sus dos par. While-Wend) .metros de entrada: Figura 16. Diagrama de flujo condicional para verificar si se alcanzó la tolerancia.

se podría usa E$it Su) ). hasta que una condici1n deje de cumplirse. En 234 tenemos las siguientes instrucciones para reali6ar procesos iterativos: . *inta5is 9las instrucciones entre :. 0na instrucci1n muy parecida a ("ile pero m. hasta que ocurra una condici1n que permita terminar. ejecutando el proceso cada ve6 que el contador tome un valor distinto. si fuera necesario. &ientras una condici1n sea verdadera.El flujo repetitivo se presenta en un algoritmo cuando se requiere la ejecuci1n de un proceso o parte de un proceso sucesivamente. En una su/rutina. Este tipo de flujos repetitivos se presentan en tres formas que o/edecen a maneras diferentes de ra6onarlos pero que en el fondo hacen lo mismo: • • • 0tili6ar un contador que empiece en un número y termine en otro. *inta5is condición intrucciones ("ile (end Nota: No hay un E$it ("ile. ejecutar un proceso y regresar a la condici1n. ("ile (end Ejecuta una serie de instrucciones mientras una condici1n dada sea ?rue. For #e$t +epite un grupo de instrucciones un número especificado de veces.Ste% incremento< instrucciones For &E$it For' instrucciones #e$t contador #. <= son instrucciones adicionales> contador = inicio !o fin . Ejecutar un proceso.s eficiente de Do *inta5is condición instrucciones Do *"ile .

vamos a apro5imar la suma de una serie alternada con un error estimado menor que una cantidad tol dada. el error de la apro5imaci1n es .&E$it Do' +oo% Ejemplo 3 Para ilustrar estas formas de reali6ar un flujo repetitivo. al apro5imarla con la suma parcial . es decir es convergente. *i su . @onsideremos la serie alternada -a suma parcial A8sima viene dada por es decir Be acuerdo con la teoría de series alternadas. la serie suma es menor que .

. en la celda -. tol) '% (1 / (el/ + 1) 3 2 5 tol) &)en $eri%ica&ol = *Error e"timado 5 * + -tr(tol) 4tol e" un n6mero El"e 4no una -trin0 $eri%ica&ol = *.lculo de las sumas parciales y otra para hacer la verificaci1n del error estimado. error e"timado (* + -tr(tol) 4por e"to de!emo" u"ar 4-tr4 End '% End Function .+. Function "uma. calcular cada una de las sumas parciales hasta que el error de apro5imaci1n sea menor que ?7- Figura 17. En este caso. umas parciales ! estimación del error Implementamos dos macros.+ est.arcial = Acum End Function 4#################################################################### Function $eri%ica&ol(el/.7. una para el c. vamos a suponer que !.arcial()a"ta/) Dim Acum. "i0no A" 'nte0er Acum =1 "i0no = #1 For 2 = 1 &o )a"ta/ Acum = Acum + "i0no * 1 / 2 3 2 "i0no = #"i0no /ext 2 "uma.Primer problema Bada una tolerancia !.

) Segundo problema Bada una lista de tolerancias TOL 9donde es una cantidad positiva..2-3.) y 1erifica!ol(C. quedando: . son los siguientes: o Inicio: Ingresa la tolerancia con que se har. . por lo que se calcula: -os pasos a seguir para programar la suma a partir de la tolerancia dada. al apro5imar la serie correspondiente hasta el t8rmino NA8simo . en ?omamos como la parte entera superior de . apro5imar la suma de la serie con una cantidad de t8rminos lo suficientemente grande de tal manera que -a cantidad juega en este pro/lema el papel de una cota del error. Primera solución: .En la primera llamada de las macros se us1 su/a0arcial(C. la apro5imaci1n.>. Bado que hay que sumar hasta el t8rmino NA8simo tal que este caso es posi/le despejar el entero positivo . etc. como ...

Paso ): Para C " . o Figura 1". 7/serve que en cada sumando.lculos innecesarios. podemos iniciali6ar una varia/le en y en cada paso de la instrucci1n repetitiva se cam/ia al signo contrario..in. lo que indica es el cam/io de signo en los t8rminos sucesivos.arcial(&ol) Acum = 1 "i0no = #1 / = 'nt(1 / -8r(&ol)) For 2 = 1 &o / Acum = Acum + "i0no * 1 / 2 3 2 "i0no = #"i0no /ext 2 -uma. Diagrama de flujo correspondiente a la primera solución. que en la pr. se incluye el factor ..s que una potencia. Para evitarle al programa c.ctica. -a macro correspondiente a este programa puede escri/irse como sigue: Function -uma. m. o .arcial = Acum End Function .N: 4cum " 4cum D o Paso $: +etorne 4cum.o o o Paso : @alcular Paso #: 4cum " ( 9*e inicili6a el acumulador para la suma>.

la apro5imaci1n. Paso : Iniciar con . o . . Paso #: 4cum " A 9*e inicili6a el acumulador para la suma con el primer t8rmino>. . sino que se suman los t8rminos mientras no se haya alcan6ado la tolerancia. Fi0ura 219 Re"ultado" calculado" mediante la primera "oluci:n9 #. : o 4cum " 4cum D o Paso $: +etorne 4cum.-a siguiente figura muestra la evaluaci1n de esta macro para algunos valores de la tolerancia. El programa en seudoc1digo se puede escri/ir como sigue: o o o Inicio: Ingresa la tolerancia con que se har. Paso ): &ientras .in. Segunda solución: En esta soluci1n no es necesario calcular el valor de .

se lee un cero. en /lanco. Diagrama de flujo correspondiente a la segunda solución. El c1digo es Function -uma.arcial2(&ol) / = 1 Acum = #1 "i0no = 1 . *i una celda est.)ile (1 / (/ + 1) 3 2 5 &ol) /=/+1 Acum = Acum + "i0no * 1 / / 3 2 "i0no = #"i0no .Figura #$. 0na selección de las celdas de una fila o una columna se maneja en E5cel como una matri6 de orden orden matri6 o de 9un vector>.end -uma. . -a selección de un /loque de celdas se maneja como una .arcial2 = Acum End Function Manejo de rangos 0na rango en E5cel corresponde a una selecci1n de celdas.

s /ajas. cuenta las notas. Ejemplo ! El Promedio eliminando las dos notas m"s bajas.MEDI. %romedio simple. En este caso. Function .s /ajas y luego le resta a la suma estas dos notas para . todas con igual peso.(C526752) pues en este caso el rango es C526752. El programa 0ro/edio8 suma las notas de una fila 9rango>. suma y divide entre el número de notas. llamamos a la macro con: 04.Ejemplo Promedio simple. vamos a hacer una macro que reci/e un rango. en cada fila. locali6a la posici1n 9en el vector 4> de las dos notas m. Figura #1.romedio-imple(R A" Ran0e) A" Dou!le 4R e" la $aria!le 8ue reci!e el ran0o Dim n A" 'nte0er Dim "ump A" Dou!le "ump = 1 n = R9EntireColumn9Count ran0o For Eac) x 'n R "ump = "ump + x /ext x -ume = "ump / n End Function 4cantidad de nota" en el 4"uma de la" nota" 4promedio "imple En primera celda de la columna 0ro/edio. @onsideremos una ta/la con E notas. Para calcular el promedio simple. a un conjunto de notas les calculamos el promedio simple pero eliminando las dos notas m.

= .: i) B 4(.$n (o <En 4 no se "ace I/in.# de la . . En este caso. %romedio de notas& eliminando las dos m's (ajas.) !"en I/in2 = i End If #e$t i 0ro/edio8 = (su/a D 4(.ra nota /Ani/a en 4 For i = .: I/in. se puede Figura ##. !"en I/in2 = 2 End If <0.: I/in2 9s Integer Di/ su/a 9s Dou)le su/a = 0 n = 4 EntireColu/n Count <n=/ero de ele/entos de la selecci>n For i = .# de la segunda <co/%arar con todos e$ce%to I/ini. Function 0ro/edio8(4 9s 4ange) 9s Dou)le Di/ n: i: I/in. !o n su/a = su/a ? 4(. = i End If #e$t i I/in2 = .) D 4(.) !"en I/in. For i = . el rango 4 es una matri6 componentes.: I/in2)) E (n D 2) .SICI. = .: i) B 4(.: I/in.luego dividir entre ver como un vector de .: i) sea: un 1ector) #e$t i referencia a la celda <4 es una /atri@ .SICI. !o n If (4(. o sea. <0.: I/in2)) 9nd (i BC I/in. nota /Ani/a en 4 If I/in. !o n If 4(.

s compleja Subrutinas# Edición $ ejecución de una subrutina -a su/rutinas o procedimientos es otro de los tipos /. 0na descripci1n de la sinta5is de una su/rutina que no es completa.End Function Nota: ?am/i8n podríamos resolver este pro/lema usando Selection Sort pero la programaci1n es un poco m. pero sí suficiente para los alcances de este material es la siguiente#: Sinta%is: .sicos de programas en 2isual 3asic.

Es opcional. Indica el nom/re de la su/rutina. Es opcional e indica las varia/les que conforman los argumentos con que una su/rutina es llamada. El . Indica que la su/rutina puede ser llamada solamente por otras su/rutinas que se encuentren en el mismo m1dulo. Es opcional y conforma el conjunto de instrucciones que son ejecutadas a lo largo de la su/rutina.s: Public.m/ito de acci1n de esta declaraci1n no incluye a varia/les declaradas fuera de la su/rutina. Nombre&'e&Subrutina. Es opcional. Indica que las varia/les locales de la su/rutina se mantienen constantes de una llamada a otra. Ejemplo ( Elevar al cuadrado los valores de una selección 9ejecutar desde la ventana de ejecuci1n de macros>. 4dem. lista&argumentos.s su/rutinas sin importar donde se encuentre. Static. Es opcional. . Es requerido. Para separar una varia/le de otra se escri/e una coma. instrucciones. Private. Indica que la su/rutina puede ser llamada por todas las dem.Su) Nom/reAdeA*u/rutina9lista-argumentos> instrucciones End Su) o tam/i8n &0ri1ate 0u)lic' &Static' Su) Nom/reAdeA*u/rutina9lista-argumentos> instrucciones End Su) -ass partes entre corchetes indican que son opcionales.

-u! ele$AlCuadado() For Eac) cell 'n -election9Cell" 4para cada celda de la "elecci:n cell9 alue = cell9 alue 3 2 4recalcula el $alor de la celda /ext cell End -u! Nota: -a macro se aplica a los datos que est.Figura #).n actualmente seleccionados (HoFa. *levar al cuadrado los elementos de la selección Podemos implementar una su/rutina en una hoja. vamos al editor 23 99ltDF..> y hacemos do/leAclic so/re .) Para editar la su/rutina. que recorra una selección hecha con el mouse y que vaya elevando al cuadrado el valor de cada celda.

*dición de la su(rutina en +oja 1 Escri/imos el c1digo. *jecutar macro Nota: Esta su/rutina tam/i8n se puede editar en un m1dulo. Para ejecutarla se procede de la misma forma. Ejecución de una subrutina mediante un botón 7tra posi/ilidad /astante pr.ctica para ejecutar un programa o su/rutina como los presentados en la secci1n precedente es mediante un /ot1n de comando. guardamos y nos devolvemos a la hoja.Figura #4. compilamos 9en menú De%uraci>n>. Para ejecutar la macro seleccionamos la ta/la con el mouse y levantamos la ventana de ejecuci1n de macros 99ltDFG> y damos clic en =Ejecutar= Figura #5. Ejemplo ) Elevar al cuadrado los valores de una selección# .

Este menú se a/re con clic derec"o ? %ro%iedades. Figura . 0na ve6 que tenemos el /ot1n. -uego hacemos clic en el lugar de la hoja donde queremos el botón. podemos agregar algunas propiedades como etiqueta.nsertar un (otón #. Para esto seleccionamos un /ot1n del cuadro de controles 9si la /arra no est. en el menú de conte5to.. etc. puede ha/ilitarla con Her D -arra de "erra/ientas D Cuadro de Controles>. -uego insertamos un /ot1n. de contexto para un (otón . -uego cerramos el menú Figura -en. Primero digitamos la ta/la de valores. disponi/le.. color de fondo.

en modo diseFo>. nos aparece el c1digo 4 0ri1ate Su) Co//and-utton. Para editar el c1digo que de/er. ejecutar el /ot1n.> Implementar la su/rutina por separado y luego llamarla desde la su/rutina del /ot1n -u! ele$AlCuadado() For Eac) cell 'n -election9Cell" 4para cada celda de la "elecci:n cell9 alue = cell9 alue 3 2 4recalcula el $alor de la celda /ext cell End -u! 4####################################################################### . le damos un par de clics al /ot1n 9que todavía est.Figura /a(la ! (otón ).ri$ate -u! Command<utton1=Clic2() ele$AlCuadado 4"in par>nte"i" End -u! 4####################################################################### /. si es la primera ve6.IClicJ() End Su) 4quí tenemos dos opciones a.ri$ate -u! Command<utton1=Clic2() For Eac) cell 'n -election9Cell" 4para cada celda de la "elecci:n cell9 alue = cell9 alue 3 2 4recalcula el $alor de la celda .> Incluir en la su/rutina del /ot1n lo que vamos a querer que se ejecute cuando se haga clic so/re 8l . En este caso.

guardamos y nos devolvemos a la hoja. el programa opera so/re lo que tengamos seleccionado previamente Figura 0orrer una su(rutina desde un (otón con la ta(la seleccionada Nota: Puede ser importante conocer la primera o la última celda de una selecci1n. 7/serve que al dar un clic so/re el /ot1n. Para esto podemos usar la propiedad 9ddress Set 4 = Selection adr = 4(. 0na ve6 que escogemos alguna de las dos opciones anteriores. ./ext cell End -u! E. 4hora solo resta seleccionar la ta/la y hacer clic so/re el /ot1n. compilamos 9en menú De%urar>. nu/ = 4ig"t(adr: .) 9ddress eFe/%lo 393. '.: . Para ha/ilitar el /ot1n de/emos desha/iltar el ícono de diseFo .) en este caso) <%ri/era celda de la selecci>n: %or <%ri/era %osici>n a la derec"a de adr (. G.

es conveniente entrar los valores seleccionados en una matri6 din.() 9s Integer < Declara una /atri@ dinK/ica -as instrucciones siguientes cam/ian el tamaFo de la matri6 /tr. 0na matri6 din. Dim mtr1() A" 'nte0er 4 Declara una matriz din?mica9 Dim r() a" Dou!le Redim mtr1(11) 4 Cam!ia el tama@o a 11 elemento".m) 4 Cam!ia tama@o a n x m For i = 1 &o 11 mtr1(i) = i /ext i 4 <ucle 11 $ece"9 4 'nicializa la matriz9 .Matrices din"micas @uando hacemos una selección con el mouse. 1x119 Redim r(n. se pueda recortar o hacer m. es decir. una matri6 que se ajuste a la cantidad de datos seleccionada y que.mica. de entradas enteras se declara así: Di/ /tr.mica.s grande. eventualmente. 7/serve el uso de 4edi/ para cam/iar el tamaFo de la matri6 din. y la iniciali6a.mica /tr.

así como sus pesos.(. El centro de Por ejemplo. Podemos correr el programa una ve6 que se ha seleccionado el rango completo en el que se u/ican los puntos y sus pesos. *upongamos que a cada punto gravedad de se le asigna un peso se define así tal que . haciendo clic so/re un /ot1n H@entro IravedadH. entonces el centro de gravedad es el punto medio del segmento que une con -a su/rutina que calcula el centro de gravedad de un conjunto de puntos actúa so/re un rango de tres columnas en el que se han escrito las coordenadas de dichos puntos. 4edi/ 0reser1e /tr.5 ele/entos Ejemplo * +entro de gravedad de un conjunto de puntos en @onsideremos un conjunto .0sando 0reser1e se puede cam/iar el tamaFo de la matri6 /tr. si tenemos dos puntos con igual peso 9este de/er. pero sin /orrar los elementos anteriores. ser para cada punto>.fico es un tra/ajo adicional.5) < Ca/)ia el ta/aLo a . . El gr.

2eamos el c1digo completo en la su/rutina del /ot1n 0ri1ate Di/ Di/ Di/ Di/ Di/ Di/ Su) Co//and-utton2IClicJ() 4 9s 4ange n:/: i 9s Integer $() 9s Dou)le < /atri@ dinK/ica M() 9s Dou)le < se aFustarK a la selecci>n de datos %() 9s Dou)le Su/a%esos: 7$: 7M 9s Dou)le <En el rango 4 guarda/os el rango seleccionado6 Set 4 = Selection n = 4 4o*s Count < #=/ero de filas / = 4 Colu/ns Count < #=/ero de colu/nas < c"eNuear Nue se "aMan seleccionado los datos de la ta)la If n C . !"en <nada %asa: todo )ien Else Msg-o$ (ODe)e seleccionar los datosO) E$it Su) < sali/os de la su)rutina End If 4eDi/ $(n) 4eDi/ M(n) 4eDi/ %(n) < 1ector $ tiene a"ora n ca/%os . 4 veces se usa esta construcci1n por comodidad. 9nd / = . se envía un mensaje y la su/rutina se deja de ejecutar. incluimos un fragmento de c1digo adicional para controlar la selecci1n. el pro0rama contin6a El"e C"0<ox (*De!e "eleccionar lo" dato"*) Exit -u! 4 "alimo" de la "u!rutina End '% 7/servemos que si no se cumple el requisito. Puede causar curiosidad que que antes del Else no haya c1digo. -et R = -election n = R9RoA"9Count 4 /6mero de %ila" m = R9Column"9Count 4 /6mero de columna" '% n 5 1 And m = B &)en 4todo e"t? !ien.@omo el programa necesita que el usuario haya seleccionado al menos dos filas y e5actamente tres columnas. *i no hay c1digo el programa continúa.

4 de /ensaFes %re1ios Else </ensaFe de error Cells(.) B 0 00.4 de 1alores %re1ios End If Else Cells(.) B 0 00. . la instrucci1n If Su/a%esos = . !"en <la su/a los %esos de)e 7$ = 7$ E Su/a%esos 7M = 7M E Su/a%esos <escri)e 7 en la celda D.4: 5) = OError: los %esos su/an O ? Str(Su/a%esos) Cells(.Su/a%esos = 0 7$ = 0 7M = 0 If n C .4: 4) = OO <li/%ia D. 0n ejemplo de corrida se ve en la figura que sigue .4: 4) = OO <1entana de ad1ertencia6 seleccione datosP Msg-o$ (ODe)e seleccionar los datosO) E$it Su) < a)orta la su)rutina si no "aM datos End If End Su) Nota: Por cuestiones de redondeo.4: 4) = O7 = (O ? Str(7$) ? O:O ? Str(7M) ? O)O Cells(. For i = . ser . !"en <iniciali@a %ara acu/ular <iniciali@a las /atrices con los datos <si "aM datos seleccionados: n C . !o n $(i) = 4(i: .4: 5) = OO <li/%ia E.4 Cells(.) <calcula centro de gra1edad Su/a%esos = Su/a%esos ? %(i) 7$ = 7$ ? $(i) * %(i) 7M = 7M ? M(i) * %(i) #e$t i If 9)s(Su/a%esos D . se cam/i1 por If 9)s(Su/a%esos D .) <entra los datos de colu/na de los $<s M(i) = 4(i: 2) %(i) = 4(i: .

y aplíquela a la ta/la Implemente una su/rutina que calcula la Inercia ?otal de del ejemplo J. #. 0sando la notaci1n del último ejemplo. *i tenemos puntos .Figura #7. se define la inercia total de como donde es la norma usual. se define . . 0orrer una su(rutina desde un (otón Ejercicios .

!"en <si "aM datos seleccionados: n C . #e$t i +2n= . en se elimina el factor en el denominador en el numerador y el factor Implemente una hoja. como se ve en la figura.7 sea.) <entra los datos de colu/na de los $i<s M los Mi<s: inicia en . M(i) = 4(i: 2) <aNuA: inicia/os desde $.) < 1alorQ estK en celda C2 If n C . en la que el usuario hace una selecci1n de la ta/la y al hacer clic en el /ot1n. !o n $(i) = 4(i: . Parte del c1digo sería Set 4 = Selection n = 4 4o*s Count < #=/ero de filas 4eDi/ $(n) < 1ector $ tiene a"ora n ca/%os 4eDi/ M(n) 1alorQ = Cells(2: . <inicia cKlculo de +2n(1aria)le $) For F = . se calcula Figura #".: es decir el $0 de la teorAa: es $. !o n <calcula/os +2n(1alorQ) If F BC 2 !"en +2n = +2n * (1alorQ D $(F)) E ($(J) D $(F)) <+2n e1aluado en 1alorQ End If #e$t F Cells(2: 4) = +2n Else Msg-o$ (ODe)e seleccionar los datosO) E$it Su) < a)orta la su)rutina si no "aM datos seleccionados End If . For i = .

). para cada valor de factor se elimina el factor en el numerador y el en el denominador Este polinomio cumple Por ejemplo. un polinomio que pasa por todos estos puntos se llama Polinomio Interpolante. 0n polinomio interpolante muy conocido es el Polinomio de -agrange o sea 7 sea. el . . *i tenemos puntos . y . para el caso de tres puntos Polinomio de -agrange es .

. su/a = 0 If n C . !"en <iniciali@a %ara acu/ular <si "aM datos seleccionados: n C For i = . !o n +Jn = . !o n $(i) = 4(i: . M(i) = 4(i: 2) <aNuA: inicia/os desde $. #e$t i For J = . 4plique la implementaci1n anterior a una ta/la como la que se presenta en la figura Figura #1. %olinomio de 2agrange Parte del c1digo sería . <inicia cKlculo de +Jn For F = .) <entra los datos de colu/na de los $i<s M los Mi<s: inicia en . Implemente una su/rutina que. evalúa el polinomio interpolante en una valor dado de antemano en una celda. #. calcula para un valor dado. !o n <calcula/os +Jn(1alorQ) If F BC J !"en +Jn = +Jn * (1alorQ D $(F)) E ($(J) D $(F)) <+Jn e1aluado en 1alorQ End If #e$t F su/a = su/a ? +Jn * M(J) #e$t J Cells(5: 4) = su/a . a partir de una selección de puntos 9en dos columnas> en una hoja de E5cel.: es decir el $0 de la teorAa: es $. o sea.

ngulo de Pascal en la celda E y lo despliega de la forma: .ngulo de Pascal es un arreglo triangular de números de la forma: Figura )$. Ejemplo . por lo que es importante conocer una forma de incorporar en la aplicaci1n un procedimiento de /orrado. /ri'ngulo de %ascal.ngulo.ngulo hay un uno en los e5tremos y.ngulo de Pascal de N niveles. Presentamos a continuaci1n un programa que. a partir de un número construye el tri. el tri. Por simplicidad. a partir del tercer nivel. salvo los e5tremos. En cada nivel del tri. presentamos un programa que lee el número de niveles del tri. es la suma de los dos de arri/a.Else <1entana de ad1ertencia6 seleccione datosP Msg-o$ (ODe)e seleccionar los datosO) E$it Su) < a)orta la su)rutina si no "aM datos seleccionados End If -nclusión de procedimientos de borrado En ocasiones es necesario /orrar alguna informaci1n que ha sido escrita en una hoja electr1nica. cada número. ?am/i8n se incluye un programa que funciona como /orrador o destructor del tri. @oncretamente.

.G) 4 Elenar uno"F For i = 1 &o / Cell"(i. . El c1digo para la construcci1n del tri. 6 4 ..i)= 1 /ext i 4 Elenar el re"toF '% / 5 2 &)en For i=B &o / For D=2 &o i#1 Cell"(i. D)9 alue = /ull /ext D /ext i End -u! . ?anto la construcci1n del tri.ngulo de la celda E . .1)= 1 Cell"(i.ri$ate -u! EDecucionDe.D) + Cell"(i#1.a"cal=Clic2() 4 Eectura de la cantidad de ni$ele"F / = Cell"(1.ngulo como su destrucci1n pueden ser activados mediante /otones. . .0 . 4 5 . tal y como se detalla a continuaci1n.ngulo quedaría así: .D#1) /ext D /ext i End '% End -u! El procedimiento para /orrar el tri. . 2 . . .D)= Cell"(i#1.ngulo tam/i8n lee el número de niveles del tri. . .0 5 . El procedimiento para /orrar el tri. G)9 alue For i = 1 &o / For D = 1 &o i Cell"(i. -as instrucciones que reali6an estos procedimientos tam/i8n pueden ser incluidas directamente en el c1digo de los /otones.ngulo tam/i8n lee el número de niveles y hace el mismo recorrido de celdas que hi6o el constructor y en cada celda escri/e un valor nulo.ri$ate -u! <orrador=Clic2() / = Cell"(1.

!ay muchos algoritmos en los que se usa e5clusivamente divis1n entera. ..ngulo. . J.0 . . 0ritm1tica entera.s grande que es menor o igual a . . . es el siguiente a. 2eamos un ejemplo.S2 = .ngulo de Pascal en la forma: 2 . 4 5 6 R . que opera en aritm8tica entera. es decir 9: = es la parte entera>. .Figura )1. al activarlo desde un /ot1n de comando. En 234 hay dos tipos de divisi1n: aE) es la divisi1n corriente 9en punto flotante> y aS) que es la divisi1n entera. Por ejemplo. . . 5 mientras que .s. El algoritmo. 2 .> c. *i es un entero positivo. /ri'ngulo de %ascal construido con 1$ niveles.> .0 5 .> Inicio: /. 4 6 4 . .E2 = . /ri"ngulo de Pascal# !aga un programa que. . Ejercicios 2 . lea un un número de la celda 4 y construya el tri. 5 . 4dem. incluya un /ot1n que active un destructor especiali6ado para este tri. vamos a calcular el entero m.

vamos a resolver la ecuaci1n . por simplicidad. K. con el m8todo de NeLton. y el último sería Por ejemplo si Implemente el algoritmo.iterar hasta que d. Esto nos dar. si soluci1n de la ecuaci1n es una /uena apro5imaci1n a una entonces el esquema iterativo usan la converge a con error . se pueden usar varios algoritmos dependiendo de la precisi1n y rapide6 que se /usca. el esquema iterativo se podría simplificar un poco m.s lento. 3ajo ciertas hip1tesis. Para calcular con . Para hallar con . +"lculo de la ra23 cuadrada.> el último es .s en el c1digo Nota: ?am/i8n se pudo ha/er usado la ecuaci1n apro5imaci1n es un poco m. -a calculadoras usualmente tienen implementadas muy /uenas su/rutinas para calcular e5ponenciales y logaritmos por lo que para calcular identidad En nuestro caso. vamos a usar un m8todo iterativo: el m8todo de NeLton. pero el proceso de . una apro5imaci1n a Nota: @omo es una constante.

hasta eliminar todos los múltiplos de los primos que han ido quedando en la lista menores o iguales que . *i . #. E.>. $). #K.sico para hallar todos los números primos menores que un entero positivo . K. y así sucesivamente.s cercano a un número . si un número es múltiplo de otro. el programa de/ería retornar el número $).. N4meros primos# 7/tenga un programa para hallar el número primo m. J. En c1digo sería así If / /od n = 0 !"en End If <si / es /=lti%lo de n .Nota: Para una apro5imaci1n inicial se podría usar usando la soluci1n del pro/lema anterior. G. . K. es la llamada criba de ratóstenes.) Por ejemplo. (. En la pr. ). 4sí. usamos la funci1n /od. la divisi1n es e5acta. Para decidir si un número es múltiplo de otro..>. siendo N un número entero positivo mayor que uno. '.ctica se usa una apro5imaci1n inicial /asada en la representaci1n /inaria del número. o sea. Esta funci1n devuelve el resto de una divisi1n 9entera>. #). ) .. $ .. -o que se hace es colocar en una lista todos los números del al e ir eliminando de esta lista todos los múltiplos de 9$. 0n procedimiento cl. )G. todos los múltiplos de 9'. . el resto es cero. los números primos menores que E( son: #.