estructuras de control repetitivas

Upload: john1975

Post on 02-Nov-2015

10 views

Category:

Documents


0 download

DESCRIPTION

VISUAL BASIC

TRANSCRIPT

cURSO DE EXTENSIN PROFESIONAL

[cURSO DE EXTENSIN PROFESIONAL]MICROSOFT VISUAL STUDIO CON VISUALBASIC

Estructuras RepetitivasRepetitivas o Estructuras Cclicas

Desde el lenguaje de programacin, vamos a repasar cmo podemos repetir partes de un programa mientras cierta condicin se cumpla o sea verdadera, y conoceremos las distintas estructuras que podemos utilizar. La estructura de control repetitiva Do Loop le permite a nuestro desarrollo reiterar la ejecucin de un bloque de instrucciones hasta que se cumpla cierta condicin. La sintaxis tiene dos variantes:

Do While condicinInstrucciones()Loop

En este caso se analiza la condicin. Si es verdadera, se ejecutar el bloque de instrucciones delimitado entre Do y Loop, y el proceso se repetir otra vez, siempre que el resultado de la condicin sea verdadero.DoInstrucciones ()Loop While Condicin

Como podemos ver, esta ltima estructura es muy similar a la anterior, solo que cambia la ejecucin de las instrucciones. En el bucle anterior primero PREGUNTA sobre la condicin dada y luego HACE; en cambio, en esta estructura, primero HACE y luego PREGUNTA. En pseudocdigo equivaldra a la sintaxis Mientras que Fin mientras.

Veamos ahora una estructura repetitiva que nos resultar muy til, que en pseudocdigo equivaldra a la sintaxis Hacer-Hasta. En el caso de este lenguaje, se utiliza For o For Each.La instruccin For-Next ejecutar en un determinado nmero de veces un bloque de cdigo. Veamos la sintaxis:

For Variable = Valor1 To Valor2 Step IncrementoInstrucciones()Next

El bloque de instrucciones que se repite est delimitado por las instrucciones For y Next. La sintaxis Variable es una variable de tipo numrico que toma valores entre Valor1 y Valor2. Por cada vez que el bloque se ejecuta, el valor de Variable se incrementa en el valor especificado en Incremento, que puede ser positivo o negativo.A continuacin, veamos un ejemplo que nos demuestre cmo sumar de un nmero 5 veces:

Dim i, respuesta As IntegerFor i = 1 To 5respuesta = i + iNext

En este ejemplo, la repetitiva ejecutar 5 veces desde i=1 hasta 5 y acumular la suma en la variable respuesta. Si la variable i iniciara en 0, entonces se ejecutara 6 veces.Revisando estas estructuras, podemos ver que las repetitivas se aplican para realizar una accin, siendo necesario o no cumplir una condicin determinada. A continuacin, veamos las diferencias.

Descripcin de algunas propiedades de objeto Form

EjemplosVamos a elaborar un programa que me permita ingresar 6 nmeros, estos nmeros se debern almacenar en un control Lista para luego encontrar la suma de los nmeros que son pares e impares, as tambin el promedio de los nmeros pares e impares encontrados.

Creamos un nuevo proyecto y le daremos el nombre: Ejemplo01_sumayPromedionumeros

El diseo del formulario tendr la siguiente apariencia:

Agregando cdigo a nuestro programa:Public Class Form1declarando variables globales

Dim contapar, contaimpar As Integer Dim numero As String Dim sumapar, sumaimpar As Integer Dim prompar, promimpar As Double

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click For i = 0 To 5 numero = InputBox("Ingresar valor " + Convert.ToString(i + 1)) If Not IsNumeric(numero) Then MessageBox.Show("No es un valor numrico", "mensaje") i = i - 1 Else ListBox1.Items.Add(Str(numero)) End If If i = 5 Then Button1.Enabled = False

End If Next End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

For i = 0 To ListBox1.Items.Count() - 1 If (ListBox1.Items(i) Mod 2 = 0) Then contapar = contapar + 1 sumapar += ListBox1.Items(i) Else contaimpar = contaimpar + 1 sumaimpar += ListBox1.Items(i) End If

Next prompar = sumapar / contapar promimpar = sumaimpar / contaimpar TextBox2.Text = sumapar TextBox3.Text = sumaimpar Label7.Text = "el promedio de " + Str(contapar) + " pares" Label8.Text = "el promedio de " + Str(contapar) + " impares" TextBox4.Text = prompar TextBox5.Text = promimpar End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click ListBox1.Items.Clear() TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" Button1.Enabled = True

End Sub

End Class

Ejemplo02

Elaborar un programa que me permita ingresar los datos de x empleado: Nombres, apellido, direccin, fecha de nacimiento, sexo, sueldo neto.Adems permita calcular la bonificacin y el descuento en base a la siguiente tabla:

La bonificacin se obtiene del sueldo neto y puede ser: 8%, 20%, 30%.El descuento se obtiene del sueldo neto y puede ser: 5%, S/. 20.00 y S/.60.00.

El programa debe mostrar: el total de bonificacin, el total de descuento y el sueldo a pagar.Y el total de planilla a pagar.

Solucin:

Ahora modificaremos nuestro proyecto anterior para darle la siguiente apariencia:

DataGridView

Modificando las propiedades de los controles de acuerdo a la siguiente tabla:

ControlPropiedadValor de propiedad

Label1TextTotal Planilla

Textbox8TextText AlignReadonlyBackColorForecolor Size Bold0RighttrueElegir colorGreen10True

Button4TextImageCalcular PlanillaCalcular.jpg

DataGridViewColumnsAllowUserToAddRowsAllowUserToDeleteRowsAllowUserToOrderColumnsAllowUserToResizeColumnsAllowUserToResizeRowsColumnHeaderHeightSizemode RowHeadersVisibleRowHeadersWidthSizeMode

ColeccinFalseFalseFalseFalseFalseAutosize FalseDisableResizing

Presentacin visual del formulario

Solucin del problema

Codificacin:

Public Class Form1

Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing 'If e.CloseReason = CloseReason.UserClosing Then ' If MsgBox("Si cierra la aplicacion no se guardaran los cambios, realmente desea salir?", MsgBoxStyle.YesNo, "Salir?") = MsgBoxResult.Yes Then ' End 'Else ' e.Cancel = True ' End If 'End If Button3_Click(sender, e) End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load TextBox1.Focus()

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() TextBox6.Clear() TextBox7.Clear() TextBox8.Clear() DateTimePicker1.Value = DateTime.Now RadioButton1.Checked = False RadioButton2.Checked = False RadioButton3.Checked = False RadioButton4.Checked = False RadioButton5.Checked = False CheckBox1.Checked = False CheckBox2.Checked = False CheckBox3.Checked = False DataGridView1.Rows.Clear() TextBox1.Focus()

End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim result As Integer = MessageBox.Show("Est seguro de salir?", "Salir", MessageBoxButtons.YesNo) If result = DialogResult.Yes Then End End If

End Sub

Private Sub TextBox4_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox4.KeyPress 'llamar al procedimeinto de validadcion NumConFrac(TextBox4, e) End Sub

' procedimiento que permite validar un datos decimal Public Sub NumConFrac(ByVal CajaTexto As Windows.Forms.TextBox, ByVal e As System.Windows.Forms.KeyPressEventArgs) If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar = "." And Not CajaTexto.Text.IndexOf(".") Then e.Handled = True ElseIf e.KeyChar = "." Then e.Handled = False Else e.Handled = True End If End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim bonificacion, descuento, sueldo As Double 'inicializando variables bonificacion = 0 descuento = 0 'preguntandosi sueldo tiene contenido If TextBox4.Text "" Then 'validando la bonificacin If RadioButton3.Checked = True Then bonificacion = CDbl(TextBox4.Text) * 0.08 ElseIf RadioButton4.Checked = True Then bonificacion = CDbl(TextBox4.Text) * 0.2 ElseIf RadioButton5.Checked = True Then bonificacion = CDbl(TextBox4.Text) * 0.3

End If 'validando descuentos If CheckBox1.Checked = True Then descuento = CDbl(TextBox4.Text) * 0.05 End If If CheckBox2.Checked = True Then descuento = descuento + 20 End If If CheckBox3.Checked = True Then descuento = descuento + 60

End If

sueldo = CDbl(TextBox4.Text) + bonificacion - descuento TextBox5.Text = Format(bonificacion, "##,##0.#0") TextBox6.Text = Format(descuento, "##,##0.#0") TextBox7.Text = Format(sueldo, "##,##0.#0")

DataGridView1.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text, TextBox7.Text) 'TextBox8.Text = Convert.ToString(DataGridView1.Rows.Cast(Of DataGridViewRow)().Sum(Function(x) Convert.ToDecimal(x.Cells("Column4").Value)))

Else MessageBox.Show("No ha Ingresado el sueldo neto") TextBox4.Focus() End If End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim datos As String Dim i As Integer Dim planilla As Double planilla = 0 For i = 0 To DataGridView1.Rows.Count - 1 datos = DataGridView1.Rows.Item(i).Cells(5).Value planilla = planilla + CDbl(datos) Next

TextBox8.Text = Format(planilla, "##,##0.#0") End SubEnd Class

Pgina 1