No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Ciclos For - Next

14/17
Recursos

Aportes 56

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Para el ejercicio se podr铆a convertir el Ciclo For en una funci贸n recursiva (funci贸n que se llama a s铆 misma) y luego a trav茅s de otro ciclo generar una sumatoria de los primeros N n煤mero de Fibonacci. Aqu铆 el ejemplo

Lo coment茅 para facilitar el entendimiento, pero para este momento con el curso de la profesora Annie seguro que ni necesitaban que lo comente porque son super geniales
.
El c贸digo es:

Public Function Fibonacci(x As Integer) As Integer

    'Funci贸n recursiva basado en f(x) = f(x-1) + f(x-2)
    'Con valores para detenerse en f(2) = 1 y f(1) = 1, que son los iniciales de Fibonacci

    If x = 2 Or x = 1 Then
        Fibonacci = 1
    Else
        Fibonacci = Fibonacci(x - 1) + Fibonacci(x - 2)
    End If

End Function

Public Sub Suma_Fibonacci()
    
    'Definici贸n de variables, n贸tese que se pueden definir varias con un mismo tipo
    Dim n, suma_fibo As Integer
    Dim m As String
    
    'Solicitud de dato al usuario y set inicial de la suma en 0
    n = InputBox("Coloca la cantidad de n煤meros de Fibonacci que quieres acumular (mayor que 0)", "Acumulador Fibonacci")
    suma_fibo = 0
    
    'Ciclo For
    For i = 1 To n
        suma_fibo = suma_fibo + Fibonacci(Int(i))
    Next
    
    m = MsgBox("El resultado es: " & suma_fibo)
    
End Sub

.
El ciclo For sirve bastante para acumular resultados. Aunque m谩s all谩 de eso te puede servir para cosas super interesantes como scrapping a las webs. Yo uso los objetos XML.HTTP y HTMLDocument, luego alimento excel con un listado de datos y uso del ciclo FOR para recorrer cada dato y las dem谩s mec谩nicas extraen la informaci贸n que necesito de p谩ginas

Utilic茅 FOR para hacer una macro sencilla en la que al ingresar un n煤mero nos devuelve su tabla de multiplicar.

Lo entiendo, el problema ser谩 cuando quiera hacer algo solo 馃槄

Es m谩s complicado utilizar este ciclo que en lenguajes de programaci贸n

Hice una subrutina para actualizar los precios de todos mis productos, ingresando la cantidad de productos y el aumento de precios en porcentaje. Para el caso de un 100 (%) me da la siguiente tabla:

Aqu铆 va mi aporte
Muestra reloj y d铆as de la semana

Ejemplo de bucle For Next el cual va contando hacia atr谩s por el step-1

Utilice ciclo for para obtener valores de la funcion y = x ^ 2

Saludos,

Muestra los Numeros Primos dando un valor limite, inidcando si es primo y justificando si no lo es.
Sintaxis:
Resultados en Hoja:

Public Sub Potenciador()

Dim y As Integer
Dim z As Integer

z = InputBox("Coloque el valor", "Potenciador")

Cells(1, 1) = z

For y = 2 To z

Cells(y, 1) = (Cells(1, 1) * (y - 1))

Next y

End Sub

Me pierdo al momento de elegir la columna para la variable "i" 驴Por qu茅 no coloca "cells(3,1) = i " ?
![](https://static.platzi.com/media/user_upload/image-9557abcc-9205-4e06-9eac-51adee75ee61.jpg)
Este ciclo For... Next se pod铆a emplear por ejemplo para cambiar los valores de una fila o columna, por ejemplo valores positivos y negativos, dejarlos todos como positivos. Este ser铆a un ejemplo.
Public Sub conteo() Dim i As Integer Dim n As Integer n = InputBox("elementos de la sucesi贸n", "conteo") For i = 1 To n Cells(i, 1) = i \* n Next i End Sub

Ejercicio de fibonacci.

mi c贸digo de la pr谩ctica ```js Public Sub Fibonacci() Dim i As Integer Dim n As Integer n = InputBox("elementos de la sucesion", "Fibonacci") Cells(1, 1) = 1 Cells(2, 1) = 1 For i = 3 To n Cells(i, 1) = Cells(i - 1, 1) + Cells(i - 2, 1) Next i End Sub ```Public Sub Fibonacci() Dim i As Integer Dim n As Integer n = InputBox("elementos de la sucesion", "Fibonacci") Cells(1, 1) = 1 Cells(2, 1) = 1 For i = 3 To n Cells(i, 1) = Cells(i - 1, 1) + Cells(i - 2, 1) Next i End Sub

Utilice el ciclo For para extraer los numeros de una cadena de textos (celda):

Comparto mi ejemplo

Los ciclos For Next son herramientas clave para automatizar tareas repetitivas. Al emplear una variable contador y una estructura For Next con la sintaxis adecuada, se logra ejecutar un bloque de c贸digo en un rango predefinido de veces. Esto simplifica la manipulaci贸n de datos, la aplicaci贸n de f贸rmulas y otros c谩lculos al tiempo que se pueden incorporar condiciones para acciones espec铆ficas.

Ese ciclo For Next me para ce util para armar una lista que recoja datos por ejemplo usando un inputbox que pregunte datos personales para armar una lista de participantes, apenas una persona responda cada pregunta vuelval el programa a preguntar para que la siguiente persona responda.

Una subrutina para proyectar tu salario m铆nimo en los pr贸ximos n a帽os en funci贸n de la tasa de inflaci贸n promedio de tu pa铆s y tu sueldo actual , para garantizar el mismo poder adquisitivo que tiene ahora.

De esta otra forma imprime la serie, cambiando el ejercicio a mostrar los n煤meros de la serie que sean menores a un numero dado por el usuario.

Public Function Fibonachix(s As Integer) As String

Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim b As Integer
Dim x As Integer
j = 0

For i = 1 To s
   a = MsgBox(i, , "Divisi贸n")
   x = i + j
   j = i
   i = x - 1
Next

End Function

Gran explicacion

Aqu铆 hay algunas situaciones comunes en las que puedes usar 鈥淔or Next鈥 en macros de VBA:

Recorrer una serie de elementos: Puedes utilizar 鈥淔or Next鈥 para iterar sobre una serie de elementos, como una matriz o una colecci贸n, y realizar alguna acci贸n en cada elemento.

Generar una secuencia num茅rica: Si necesitas generar una secuencia de n煤meros, puedes usar 鈥淔or Next鈥 para iterar desde un valor inicial hasta un valor final, incrementando en pasos espec铆ficos si es necesario.

Realizar c谩lculos repetitivos: Si tienes una f贸rmula o una serie de c谩lculos que necesitas repetir un n煤mero determinado de veces, puedes utilizar 鈥淔or Next鈥 para realizar los c谩lculos de forma iterativa.

Hice un contador de numeros de 5 en 5 preguntando el numero de l铆neas a llenar.

Ejercicio fibonacci:

Buena clase.

Ciclos For-Next podr铆an ser usados para hacer listas de sucesiones como n煤meros de 5 en 5.

隆 Casi que no puedo! jajajajaj

鈥 Calcula fibonacci
Public Sub fibo()

Dim i As Integer
Dim n As Integer
Dim a

Cells(1, 1) = "Valor de i"
Cells(2, 1) = 1
Cells(3, 1) = 2

Cells(1, 2) = "Valor Fibonacci"
Cells(2, 2) = 1
Cells(3, 2) = 1

n = InputBox(鈥淐oloque los elementos que desea (Serie Finonacci) Min. 3 / Max. 100鈥)


鈥 Val铆da si n es menor 3 (no se hace el calculo y se envia mensaje de error)
'
If n < 3 Then

 a = MsgBox("El numero de elementos m铆nimo es 3, Ud ingres贸 " & n)

Else

鈥 Val铆da si n es menor o igual a 100

If n <= 100 Then

鈥 Limpia matriz corrida anterior

For i = 4 To 100

If Cells(i, 1) > "" Then
    Cells(i, 1) = ""
    Cells(i, 2) = ""
Else
    i = 101
End If

Next i
'
' Calculo fibonacci
'
For i = 4 To n + 1

    Cells(i, 1) = i - 1
    Cells(i, 2) = Cells(i - 1, 2) + Cells(i - 2, 2)

Next i

Else
'
' Si n es mayor a 100 envia mensaje de error
'
 a = MsgBox("El numero de elementos maximo es 100, Ud ingres贸 " & n)

End If

End If

End Sub

Aqui esta mi ejemplo

<Sub EjemploForLoop()
    Sheets("Sheet4").Select
    Dim contadorVar As Integer 'Declara la variable contador
    For contadorVar = 1 To 10 'Inicia el ciclo desde 1 hasta 10
        Range("A" & contadorVar).Value = "ContadorEmpresa" & contadorVar 'Asigna el valor a la celda
    Next contadorVar 'Incrementa el contador en 1
End Sub

> 

Ejercicios de la clase

Creo que es buena pr谩ctica tratar de resolver el ejerccio antes que el docente.

Esto fue mi l贸gica:

Public Sub fibonacci()
    Dim n As Integer
    Dim i As Integer
    Dim j As Integer
    Dim t As Integer
    i = 0
    j = 1
    
    n = InputBox("Ingrese cantidad a mostrar", "Serie Fibonacci")
    Debug.Print i
    Debug.Print j
    
    For n = 3 To n
        t = i + j
        i = j
        j = t
        Debug.Print t
    Next n
    
End Sub

Luego seg煤n el desarrolo de la docente, con unos peque帽os cambios:

Public Sub fibonacci2()
    Dim n As Integer
    n = InputBox("Ingrese cantidad a mostrar", "Serie Fibonacci")
    Sheets("Hoja2").Select
    Cells(1, 1) = 0
    Cells(2, 1) = 1
    For n = 3 To n
        Cells(n, 1) = Cells(n - 1, 1) + Cells(n - 2, 1)
    Next n
End Sub

Se puede usar for-next para hacer operaciones matematicasque sean secuenciales

'Fibonacci
Public Sub Fibonacci()
    Dim contador As Integer
    Dim numeroElementos As Integer
    
    numeroElementos = InputBox("驴Cuanto elementos de la sucesion quieres?", "Fibonacci")
    
    Cells(1, 1) = 1
    Cells(2, 1) = 1
    
    For contador = 3 To numeroElementos
        Cells(contador, 1) = Cells(contador - 1, 1) + Cells(contador - 2, 1)
    Next contador
    
End Sub

No se que les parezca esta soluci贸n integrando todo en un FOR

Algunos escenarios en los que se podr铆a usar:

  • Procesamiento de archivos: Si tienes una carpeta con muchos archivos, podr铆as usar un ciclo 鈥渇or鈥ext鈥 para abrirlos uno por uno, procesarlos y guardar los resultados.

  • Generaci贸n de gr谩ficos: Podr铆as usar un ciclo 鈥渇or鈥ext鈥 para generar gr谩ficos din谩micos a partir de datos en una hoja de c谩lculo.

  • Validaci贸n de datos: Podr铆as usar un ciclo 鈥渇or鈥ext鈥 para verificar la integridad de los datos en una hoja de c谩lculo, como comprobar que todos los campos requeridos est茅n llenos.

El ejercicio de la clase

Interesante clase. Comparto mi funci贸n para crear una lista.

Adjunto mi Aporte Macro para numerar fila dado un valor, utilizando el ciclo For - Next

F贸rmula de Clase:

La Subrutina calcula e imprime un n煤mero de n煤meros pares o impares de acuerdo de lo que indique el usuario.

Si el n煤mero de inicio no corresponde al grupo elegido, aumenta su valor en 1.

Por ejemplo: Si queremos los primeros 10 n煤meros pares y damos como inicio el n煤mero 1, el programa autom谩ticamente parte desde el 2, ya que el n煤mero 1 no es par.

Public Sub Pares_impares()

    Dim i As Integer
    Dim n As Integer
    Dim tipo As Integer
    Dim a
    Dim indice
    tipo = InputBox("Indica el tipo de secuencia: 1 para impares o 2 para pares", "驴Par o impar?")
    
    If tipo = 1 Then
    
        i = InputBox("N煤mero de inicio", "Secuencia de pares o impares")
        n = InputBox("N煤mero de elementos", "Secuencia de pares o impares")

        If (i Mod 2 <> 0) Then
            For indice = 1 To n
                Cells(indice, 1) = i
                i = i + 2
            Next indice
        ElseIf (i Mod 2 = 0) Then
            i = i + 1
            For indice = 1 To n
                Cells(indice, 1) = i
                i = i + 2
            Next indice
        End If
        
    ElseIf tipo = 2 Then
    
        i = InputBox("N煤mero de inicio", "Secuencia de pares o impares")
        n = InputBox("N煤mero de elementos", "Secuencia de pares o impares")
        
        If (i Mod 2 = 0) Then
            For indice = 1 To n
                Cells(indice, 1) = i
                i = i + 2
            Next indice
        ElseIf (i Mod 2 <> 0) Then
            i = i + 1
            For indice = 1 To n
                Cells(indice, 1) = i
                i = i + 2
            Next indice
        End If
        
    Else: a = MsgBox("Opci贸n inv谩lida")
    
    End If
End Sub

Estos ciclos son sumamente utiles cuando:
Estamos poniendo un formato en el documento
Vaciamos la informaci贸n
O necesitamos que las cosas se repitan sin tener que dar la instrucci贸n

Bueno yo hice una sucesi贸n aritm茅tica: se suman los n煤meros hasta el valor ingresado.
Tambi茅n hice una sucesi贸n geom茅trica: se multiplican los n煤meros hasta el valor ingresado.

Ejercicio: comprobar los datos en una columna si son positivos, negativos, ceros o no num茅rico

Public Sub Check_data()
    ' Valida si un dato es positivo, negativo, cero o no num茅rico
    ' Escribe los posibles valores: Positivo, Negativo, Cero, No num茅rico en la siguiente columna
    Dim iColumn As Integer ' N煤mero de la columna donde se encuentran los datos
    Dim i As Integer, lastRow As Integer
        
    iColumn = InputBox("Ingrese el n煤mero de la columna que contiene los datos", "Columna de datos")
    
    lastRow = ActiveSheet.Cells(Rows.Count, iColumn).End(xlUp).Row ' valor de la 煤ltima fila con datos
    
    For i = lastRow To 1 Step -1
        idata = Cells(i, iColumn).Value
        
        If Not IsNumeric(idata) Or IsEmpty(idata) Then
            Cells(i, iColumn + 1) = "No num茅rico"
        ElseIf idata = 0 Then
            Cells(i, iColumn + 1) = "Cero"
        ElseIf idata < 0 Then
            Cells(i, iColumn + 1) = "Negativo"
        ElseIf idata > 0 Then
            Cells(i, iColumn + 1) = "Positivo"
        End If
    Next i
End Sub

Eh realizado dos ejemplos:

  1. uno b谩sico donde me me suma las 10 vueltas

     	Public Sub sum()
     	Dim i As Integer
     	Dim suma As Integer
     		For i = 1 To 10
     			suma = suma + i
     		Next i
     	MsgBox (suma)
     	End Sub
    
  1. Se quiere ver el incremento de 15![orden en hoja de calculo.jpg]pg) despachos de las 10 ordenes en el mismo dia


conocimiento apropiado.

Public Sub Fibonacci()

    Dim i As Integer
    Dim n As Integer
    
    n = InputBox("elementos de la sucesi贸n", "Fibonacci")
    Cells(1, 1) = 1
    Cells(2, 1) = 1
    
    For i = 3 To n
    
        Cells(i, 1) = Cells(i - 1, 1) + Cells(i - 2, 1)
    
    Next i
    

End Sub