Estructuras Repetitivas Final VISUAL BASIC

Embed Size (px)

Citation preview

  • ESTRUCTURAS REPETITIVAS E ITERATIVASALGORITMOS Y MTODOS DE PROGRAMACIN

  • Introduccion

    Las computadoras estn especialmente diseadas para ejecutar tareas repetidamente. Las estructuras de control repetitivas son aquellas en las que una sentencia o grupos de sentencias se repiten muchas veces hasta que se cumpla una condicion , esta condicion puede estar al principio o al final del bucleUna estructura de control que permite la repeticin de una serie determinada de sentencias se denomina bucle (lazo o ciclo). El cuerpo del bucle contiene las sentencias que se repiten. La accin o acciones que se repiten en un bucle se denomina el cuerpo del bucle, y cada repeticin del cuerpo del bucle se denomina iteracin.

  • Se tiene 3 estructuras repetitivas

    MIENTRAS

    PARA O DESDE

    REPETIR

    ContadoresAcumuladores

  • Representacin de contador nom_contador = nom_contador + valor_constanteEjemplo 1: contador de incrementoPar = 0: inicializando el contador Par = par + 11: 1 = 0 + 12: 2 = 1 + 13: 3 = 2 + 1

    Ejemplo 2: contador de decremento C = 100: inicializando el contador C = C - 101: 90 = 100 - 102: 80 = 90 - 103: 70 = 80 - 10

    Valor constante Valor constante

  • Representacin de acumulador : Nom_acumulador = Nom_acumulador + valor _variableEjemplo 1: Media = 0 Media = Media + nota 1: 10 = 0 + 10 2: 15 = 10 + 5.0 3 21 = 15 + 6Ejemplo 2: mul = 1 mul =mul * num_par 1: 2 = 1 * 2 2: 12 = 2 * 6 3: 48 = 12 * 4 Valor variable

  • DIFERENCIA ENTRE UN CONTADOR Y UN ACUMULADORLa diferencia entre un contador y un acumulador es que mientras el primero va aumentando ms una cantidad constante, el acumulador va aumentando en una cantidad variable.

  • Estructura MIENTRASLa estructura repetitiva mientras es aquella en la que el nmero de iteraciones no se conoce por anticipado y el cuerpo del bucle se repite mientras se cumple una determinada condicin. Por esta razn a estos bucles se les denomina bucles condicionales.

  • Diagrama de flujo ACCION AACCION BACC. XVFFINSe evalua la expresin lgica Si la condicin es verdadera se ejecuta el bucleSi la condicin es falsa se sale del cicloBucle o ciclo repetitivoCONDICION

  • Mientras (condicin) Hacer InicioAccion AAccion B . Accion N

    fin_mientras Accion x

    Do while (condicion)

    sentencia 1sentencia 2..sentencia nLoopSentencia x

    PSEUDOCODIGOVisual Basic

  • Ejemplo de mientras :

    Contar los nmeros enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contar el nmero de enteros positivos). Se supone que se leen nmeros positivos y se detiene el bucle cuando se lee un nmero negativo o cero.

  • InicioFin

    numero, contador son enteros

    Ingrese cualquier nmeronumerocontador=contador+1Ingrese un nuevo nmeronumeroVEl nmero de enterospositivos es: contadorF

    Contador=0

    NUMERO>0

  • PSEUDOCODIGO

    Inicio: ContadorDeclarar num, cont son enteros asignar cont=0 escribir( ingrese un nmero)Leer (num)Mientras (num > 0) hacer Inicioasignar cont= cont +1 escribir(Ingrese un nuevo nmero) Leer (num) Fin_MientrasEscribir (El nmero de enteros positivos es :, cont)Fin: Contador

    VISUAL BASIC

    dim num,cont as integer cont = 0; num =val(InputBox( ingrese un nmero)do while (num > 0) LSTNUM.AddItem num cont= cont +1 num=val(InputBox(Ingrese un nuevo nmero loop lblresultado=(El nmero de enteros positivos es : & cont

  • Ejemplo 2 Realizar un algoritmo para contar n nmeros pares e Impares hasta que se ingrese un ceroinicioR, Nun, par, impar son enteros NumIngrese un nmeroR=Num mod 2R=0Impar=impar+ 1par=par+ 1Ingrese un nmeroNumcantidad de partes es : par ,cantidad de impares es:, impar Fin snvFPar=0 Impar = 0Num < > 0

  • Pseudocodigo Inicio: ParImparDeclarar Num, par,impar son enteros Escribir (ingrese un numero)Leer(Num)Par=0Impar=0Mientras(Num0 ) hacerInicio R=Num mod 2 Si (R=0) entonces par =par +1 caso contrario impar=impar +1 Escribir (ingrese un numero) Leer(Num)Fin_MientrasEscribir (la cantidad de pares es :, par ) ESCRIBIR (la cantidad de impares es :, impr )Fin:ParImpar

  • DISEO DE FORMULARIO CONTROL: LISTBOXNOMBRE: LSTNUMLIST: ENTER CONTROL: LISTBOXNOMBRE :LSTPARCONTROL: LISTBOXNOMBRE :LSTIMPAR CONTROL: LABEL CAPTION : NUMEROS PARES CONTROL: COMMANDBOTTON NOMBRE:: CMDCALCULAR

  • VISUAL BASIC

    Private Sub CMDCALCULAR_Click()

    Dim R, Num, par, impar As IntegerNum = Val(InputBox("ingrese un numero")) ' MOSTRAR Y EL LEERpar = 0impar = 0Do While (Num 0) 'MIENTRAS ( CONDICION ) LSTNUM.AddItem Num ' ADICIONANDO EL NUMERO A LA LISTA R = Num Mod 2 If (R = 0) Then ' SI ( CONDICION)ENTONCES par = par + 1 lstpar.AddItem Num ' ADICIONANDO EL NUMERO A LA LISTA DE PARES Else ' CASO CONTRARIO impar = impar + 1 lstimpar.AddItem Num End If Num = Val(InputBox("ingrese un numero")) 'MOSTRAR Y LEER

    Loop ' FIN DEL MIEMTRASlblpares.Caption = "CANTIDAD -> " & parlblimpares.Caption = "CANTIDAD -> " & imparEnd Sub

  • Ejercicio propuesto para la clase

    Realizar un algoritmo para que sume n nmeros hasta que el resultado de la suma sea mayor o igual que 100

  • ESTRUCTURA PARA (FOR)El que el nmero de iteraciones es fija, se debe usar la estructura desde o para.La estructura Desde ejecuta las acciones del cuerpo del bucle un nmero especfico de veces y de modo automtico controla el nmero de iteraciones o pasos a travs del cuerpo del bucle. La sentencia para requiere que conozcamos por anticipado el nmero de veces que se ejecutan las sentencias del interior del bucle.

  • Para cont = valor inicial hasta valor final cont++ hacer sentencias...fin_Para El pseudocdigo es el siguiente:Al ejecutarse la sentencia para (o desde) la primera vez, el valor inicial se asigna a cont, que se denomina variable de control, y a continuacin se ejecuta la sentencia del interior del bucle. Al llegar al final del bucle se verifica si el valor final es mayor que el valor inicial; en caso negativo se incrementa el valor de la variable de control en uno y se vuelven a ejecutar todas las sentencias del interior del bucle, hasta que la variable de control sea mayor que el valor final, en cuyo momento se termina el bucle.

  • PSEUDOCODIGO

    cont=v_inical hasta v_final, inc/decAccin AAccin BAccion nVla primera vez, el valor inicial se asigna a contVariable de controlse ejecuta la sentencia del interior del bucleAccin x FAl llegar al final del bucle se verifica el valor de la variable de control si es menor o igual al valor final se incrementa el valor de la variable de control en uno y se vuelven a ejecutar todas las sentencias del interior del bucleEl valor de la VC es mayor que el valor final se termina el bucle

  • PSEUDOCODIGO para (cont=Vi hasta vf ,incr/dec) inicioaccion Aaccion B .accion n fin_desde VISUAL BASIC for c=vi TO vf step sentencia Asentecia B NEXT C

  • Las variables de control, valor inicial y valor final deben ser todas del mismo tipo. Los valores inicial y final pueden ser tanto expresiones como constantes. La variable de control puede estar definida dentro del mismo bucle. Para entero c = 1 hasta 10 hacer // podran definirlo antes del bucleint cPara c = 1 hasta 10 hacer2. Es ilegal intentar modificar el valor de la variable de control, valor inicial y el valor final dentro del bucle. 3. Al igual que en las sentencias de seleccin, las sentencias repetitivas se pueden anidar.

    Reglas

  • 1. Las variables de control, valor inicial y valor final deben ser todas del mismo tipo. Los valores inicial y final pueden ser tanto expresiones como constantes. La variable de control puede estar definida dentro del mismo bucle. Reglas 2. Es ilegal intentar modificar el valor de la variable de control, valor inicial y el valor final dentro del bucle. 3. Al igual que en las sentencias de seleccin, las sentencias repetitivas se pueden anidar. Para i = 1 hasta 10 +1 hacer

    // podran definirlo antes del bucle

    Para i = 1 hasta 10 +1 hacer

  • 1

  • PSEUDOCODIGO

    INICIO:MediaEdadDeclarar edad, acumE,contE, media son enteros Declarar Op es textoAsignar acumE = 0Asignar contE = 0Repetir Inicio Mostrar(ingrese una edad) Leer(Edad) Asignar acumE=acumE+ edad Asignar contE=contE + 1 Mostrar(Desea seguir ingresando mas edades S/N) Leer(op)Fin_repetir Mientras (op =S)Asignar media=acumE/contEMostrar (La edad media es :, media)Fin:MediaEdad

  • DIFERENCIASLa diferencia entre ambas es que la condicin se sita al principio (Mientras) o al final (Repetir) de la secuencia de instrucciones. Entonces, en el primero, el bucle contina mientras la condicin es verdadera (la cual se comprueba antes de ejecutar la accin) y en el segundo, el bucle contina hasta que la condicin se hace verdadera (la condicin se comprueba despus de ejecutar la accin, es decir, se ejecutar al menos una vez).La estructura Desde/Para suele utilizarse cuando se conoce con anterioridad el nmero de veces que se ejecutar la accin y se le conoce como Estructura Repetitiva en lugar de iterativa, para diferenciarla de las dos anteriores.Las estructuras Mientras y Para/Desde suelen en ciertos casos, no realizar ninguna iteracin en el bucle, mientras que Repetir ejecutar el bucle al menos una vez.

    **************************