miércoles, enero 18, 2006

Sentencias de Control del Programa

  • Clase .NET

  • III Sentencias de Control del Programa


    El exito es un profesor horrible
    • Desafortunadamente, la mejor manera de aprender es cometer errores.
    • Tienes que erradicar todos los errores.
    • Tecnica recomendada: Escribir poco, probar poco. 40% codificando y el 60% probando.
    (escribes un poco de codigo y luego lo pruebas)

    Trapping Runtime Errors
    • On Error Goto
    • On Error Resume Next
    • Try... Catch ... Finaly

    La agonia de ser vencido
    Cuando encuentras un problea
    • Lee el mensaje de error cuidadosamente. (muchas veces el error lo podras encontrar 3 lienas arriba. Si se lee con cuidado y trata uno de entender que significa ese error podremos encontrar el error en el codigo.
    • Tratar cosas diferentes (Aislar el problema de lo que percibimos es el problema.)
    • Leer el manual o ayuda completamente.
    • Buscar diligentemente en la red
    • Ultima Opcion: Preguntarle a alguien.

    Mas acerca de las Aplicaciones de Consola.

    Le vamos a pasar argumentos al programa a traves de la consola.

    Function Main (ByVal Consola () As String ) As Integer
    Dim NumArg As Integer
    For NumArg = 0 To UBound (Consola)
    Console.WriteLine ("Argumento" & ":" & " "&NumArg.ToString () & Consola (NumArg).ToString ())
    Next NumArg
    Return 0
    End Function

    Le vamos a mandar a traves de la consola varios parametros
    Programa.exe cadena1 cadena2 cadena3
    Lo que se ve:
    Argumento:1 cadena1
    Argumento:2 cadena2
    Argumento:3 cadena3

    If, Then, Else

    Module Module1
    Sub Main (ByVal ConsolaArg () As String )
    If ConsolaArg(0).ToString = "str1" Then
    Console.WriteLine ("Fue la cadena Str1")
    ElseIf ConsolaArg(0).ToString = "str2" Then
    Console.WriteLine ("fue la segunda")
    Else
    Console.WriteLine ("No fue ninguno de los dos")
    End If
    End Sub
    End Module

    Select Case

    Module Module1
    Sub Main (ByVal ConsolaArg () As String )

    Select Case ConsolaArg (0)
    Case "daniel"
    Console.WriteLine ("Fue daniel")
    Case "Gallo"
    Console.WriteLine ("fue gallo")
    Case Else
    Console.WriteLine ("No fue el indicado " & ConsolaArg(0).ToString())
    End Select
    End Sub
    End Module

    While Statement

    Dim Numero as Integer
    Dim Num2 As Integer
    Numero = 0
    Num2 = 0
    While Num2 < 50
    Numero = numero + 1
    Num2 = (Num2 +2 ) * 2
    End While
    Console.WriteLine ("Se conto"&Numero.ToString())

    While Numero > 30
    Numero = Numero -1
    If Numero = 20
    Exit While
    End If
    End While
    'Con el Exit While se sale

    Do... Loop


    DO WHILE: Se repite mientas una condicion (expresion) se evalua como verdadera. Una ves evaluada falso, entonces no se repite mas.

    DO UNTIL: Se Repite hasta que que una condicion (expresion) se evalua verdadera. Una ves cumplida, ya no realiza mas repeticiones.


    Dim Numero As Integer
    Dim Valor As Integer
    Numero = 1
    Valor = 0
    Do While Valor < 10
    Valor = Valor + 1
    Loop

    Do
    Valor = Valor +1
    Loop While Valor < 10

    En el primer ejemplo checa primero la condicion antes de ejecutar. Diferente al segundo, primero hace un ciclo antes de verificar.

    Do Until Valor = 10
    Valor = Valor + 1
    Loop

    Do
    Valor = Valor + 1
    Loop Until Valor =10

    ' Es un ejemplo similar al Do While, solo que la condicion se repite hasta que se cumpla una condicion. ( ya sea al inicio o al final del Loop).

    For ... Next Statements

    Dim x As Integer

    For x = 0 To 10
    Console.WriteLine (x.ToString ())
    Next

    For x=0 To 10 Step 2
    Console.WriteLine (x.ToString())
    Next

    For x=10 To 0 Step -1
    Console.WriteLine (x.ToString())
    Next

    For x=0 To 10
    If x = 5 Then
    Exit For
    End If
    Console.WriteLine (x.ToString ())
    Next

    Como se puede ver tambien podemos terminar un For con un EXIT FOR antes de que termine.


    Ejercicios

    Programa en C (Pasarlo a VB)

    2. Examine the following program. Imagine entering three numbers, and write what output you expect.
    1: #include
    2: int main()
    3: { 4: int a, b, c;
    5: cout << "Please enter three numbers\n";
    6: cout << "a: ";
    7: cin >> a;
    8: cout << "\nb: ";
    9: cin >> b;
    10: cout << "\nc: ";
    11: cin >> c;
    12:
    13: if (c = (a-b))
    14: {cout << "a: ";
    15: cout << a;
    16: cout << "minus b: ";
    17: cout << b;
    18: cout << "equals c: ";
    19: cout << c << endl;}
    20: else
    21: cout << "a-b does not equal c: " << endl;
    22: return 0;
    23: }

    4. Examine this program and anticipate the output:

    1: #include
    2: int main()
    3: {
    4: int a = 1, b = 1, c;
    5: if (c = (a-b))
    6: cout << "The value of c is: " << c;
    7: return 0;
    8: }


    Ejercicio:
    Mostrar en pantalla un menú que nos pida sacar el área de un Cuadrado o un Triangulo.

    Module Module1

    Sub Main()
    Dim Altura As Integer
    Dim Ancho As Integer
    Dim opcion As Integer
    Dim Area As Integer
    inicio:
    Console.WriteLine("1. Area de un cuadradi")
    Console.WriteLine("2. area de un triangulo")
    Console.WriteLine("3. Salir")

    opcion = Console.ReadLine()
    Select Case opcion
    Case 1
    Console.WriteLine("Elegiste la opcion 1")
    Console.WriteLine("Dame la altura")
    Altura = Console.ReadLine()
    Console.WriteLine("Dame el Ancho")
    Ancho = Console.ReadLine()
    Area = Altura * Ancho
    Console.WriteLine("El Area del Cuadrado es: " & Area.ToString())

    Case 2
    Console.WriteLine("Elegiste la opcion 2")
    Console.WriteLine("Dame la altura")
    Altura = Console.ReadLine()
    Console.WriteLine("Dame el Ancho")
    Ancho = Console.ReadLine()
    Area = (Altura * Ancho) / 2
    Console.WriteLine("El Area del Triangulo es: " & Area.ToString())
    Case 3
    GoTo salir
    Case Else
    Console.WriteLine("No has elejido bien ")

    End Select
    GoTo inicio
    salir:
    End Sub

    End Module

    Programa que Pregunte La Altura(en cms) y Peso (kgs) y no diga si tiene sobrepeso, bajo del peso o tiene peso normal.

    Module Module1

    Sub Main()
    Dim Peso As Double
    Dim Altura As Double
    Console.WriteLine("Dame el peso de la persona: ")
    Peso = Console.ReadLine()
    Console.WriteLine("Dame la Altura de la persona: ")
    Altura = Console.ReadLine()
    If Peso < (Altura / 2.5) Then
    Console.WriteLine("Esta bajo del peso")
    ElseIf (Altura / 2.5) <= Peso And Peso <= (Altura / 2.5) Then
    Console.WriteLine("Peso Normal")
    Else
    Console.WriteLine("Tiene Sobre peso")

    End If

    End Sub

    End Module

    Programa que convierta de grados centigrados a Farenheit


    //#include
    //
    //double FahrenToCelsius (double fahren)
    //{
    // return 5 * (fahren - 32) / 9;
    //}
    //
    //int main (void)
    //{
    // double fahrenheit;
    //
    // cout << "Temperature in Fahrenhait: ";
    // cin >> fahrenheit;
    //
    // cout << fahrenheit << " degrees Fahrenheit = "
    // << FahrenToCelsius(fahrenheit) << " degrees Celsius\n";
    // return 0;
    //}