Mi primer programa en VB

Iniciado por Pedro_madrid, 30 Mayo 2008, 17:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Pedro_madrid

Hola a todos, bueno acabo de empezar a programar, y me recomendaron VB.
Estuve leyendo sobre cómo usarlo y creo que estoy preparado para hacer este primer programa (muy cutre, pero por algo se empieza...)
Todas las dudas que me surgan las ire formulando en este hilo.

El programa es muy sencillo, quiero, con una TextBox y un Label, hacer que cuando yo ponga una calificacion (1,2,3,....10) me salga su correspondiente en notable, bien, sobresaliente... no se si me explico.
Y nada mas pensarlo se me plantea una duda:
¿Cómo hago para que el suspenso sea desde 0 a 5 sin que entre el 5? ¿Simplemente poniendo 4,9? ¿Poniendo 4,9 no se quedaria fuera el 4,95 por ejemplo?
Otra duda:
¿Cómo hago para que se visualice en el Label "Suspenso"?

Saludos y gracias de antemano, segun vaya haciendo el programa se me iran planteando mas dudas asique no cierren el hilo cuando ésta sea respondida por favor.

byebye

Citarcreo que estoy preparado para hacer este primer programa

yo creo que no. dices que estas preparado y te tenemos que decir como hacerlo......

Pedro_madrid

#2
Solo necesito saber esas 2 cosas de momento.... es para practicar, un ejercicio que me he propuesto yo mismo para aprender a trabajar con el If, Else y Then...
Es más que nada una práctica.
Por cierto, con la primera duda creo que ya tengo la respuesta... poner <5 ¿no?

pisagatos

Function saberMiNota(numero as intenger) as string

If numero < 0 or numero =< 5 then
saberMiNota = "Suspenso"
If Not numero =< 6 then
saberMiNota = "Bien"
If Not numero =< 8 then
saberMiNota = "Notable"
If Not numero =<10 then
saberMiNota = "Sobresaliente"

End If
pruebalo q lo acabo de hacer a jopo aqui en dos minutos... y no se si está bien

Spider-Net

La sintaxis no es correcta, ese programa no compila... Creo que lo que querías era hacer un ElseIf porque sino no entiendo por qué no cierras cada uno de los Ifs. Bueno Yo haría algo así:

Introduce en el Form un CommandButton y un TextBox, en el textbox escribes la nota de la cual quieras obtener la calificación y luego pulsas en el botón para hallar la nota. El CommandButton lo único que hace es llamar a una función pasándole como parámetro el número que pones en el textbox y según el número introducido devolverá un mensaje con la calificación correspondiente. También podrías poner un Label y en el CommandButton escribir: Label1.Caption=saberminota(Text1.Text)

Aquí te dejo el ejemplo, espero que te ayude... aunque quizás el uso de funciones aún no lo dominas. Pero bueno, si tienes alguna pregunta no dudes en preguntar.  ;)

Código (vb) [Seleccionar]
Private Sub Command1_Click()
     MsgBox saberminota(Text1.Text)
End Sub

Function saberminota(numero As Integer) As String
    If numero >= 0 And numero < 5 Then
        saberminota = "Suspenso"
    ElseIf numero = 5 Then
        saberminota = "Suficiente"
    ElseIf numero = 6 Then
        saberminota = "Bien"
    ElseIf numero >= 7 And numero <= 8 Then
        saberminota = "Notable"
    ElseIf numero >= 9 And numero <= 10 Then
        saberminota = "Sobresaliente"
    Else
        MsgBox "Ha introducido un valor incorrecto", vbInformation, "Error en la nota"
    End If
End Function

chrominum

Quedaria mejor con select case.

Spider-Net

Sí claro, eso es más claro con un Select Case, pero como el chaval ha dicho en su post que estaba haciendo el programa para practicar con los if ¿no se lo vamos a enseñar con Select no? vamos por partes.. xD

Saludos!

pisagatos

jaja perdonad chicos, se me ha ido la cabeza, coño, en q *** estaba pensando, con Else If!! y si quedaria muchisimo mejor con Select Case... pero bueno...

Pedro_madrid

#8
Ayyy... ya me disteis el codigo entero... XD, bueno, asi tambien ire aprendiendo... ¿no?.
Pisagatos: Al poner asi el codigo... no se "confundiria" el programa? Yo mas bien lo tenia pensado hacer "en cadena"(se dice compilado ¿no?), con los ElseIF.
Por lo que veo del código... lo que yo tenia que haber hecho seria una Función, esque yo lo habria metido en Private Sub... aun me queda por aprender mucho...
Ahora otra duda... con MsgBox... no saldria una ventana? Yo lo que pretendia esque me saliera en un Label que hice previamente... ¿hay alguna forma de hacerlo asi? Ahora probare el código, haber como va.
Gracias por la ayuda, y aver si me busco ejemplos muy muy muy sencillos e intento hacer lo que me diga sin mirar la solución :P.
PD: ¿Para que sirve eso del Select Case? Me parece que leí algo pero no me enteré de como hacerlo...
PD: Acabo de provar el código y funciona ;). Solo 1 cosa... al meter decimales (6.7, 9.5...) me sale el mensaje de error. ¿Cómo se haría para que funcionara con decimales?

Spider-Net

Cita de: Pedro_madrid en 30 Mayo 2008, 21:28 PM
Por lo que veo del código... lo que yo tenia que haber hecho seria una Función, esque yo lo habria metido en Private Sub... aun me queda por aprender mucho...
No tendrías por que haberlo hecho en una función, también se puede hacer en un private sub y funcionaría igual. Hay muchas formas de hacer la misma cosa.

Cita de: Pedro_madrid en 30 Mayo 2008, 21:28 PM
Ahora otra duda... con MsgBox... no saldria una ventana? Yo lo que pretendia esque me saliera en un Label que hice previamente... ¿hay alguna forma de hacerlo asi?
Ya te lo puse en mi mensaje, eso del MsgBox es sólo un ejemplo, pero como ya te puse en el mensaje que te escribí...

Cita de: Spider-Net en 30 Mayo 2008, 20:12 PM
También podrías poner un Label y en el CommandButton escribir: Label1.Caption=saberminota(Text1.Text)
Osea, inserta un label y deja el código así para que funcione con decimales y todo salga en un Label:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
     Label1.Caption = saberminota(Text1.Text)
End Sub

Function saberminota(numero As Double) As String
    If numero >= 0 And numero < 5 Then
        saberminota = "Suspenso"
    ElseIf numero >= 5 And numero < 6 Then
        saberminota = "Suficiente"
    ElseIf numero >= 6 And numero < 7 Then
        saberminota = "Bien"
    ElseIf numero >= 7 And numero < 9 Then
        saberminota = "Notable"
    ElseIf numero >= 9 And numero <= 10 Then
        saberminota = "Sobresaliente"
    Else
        MsgBox "Ha introducido un valor incorrecto", vbInformation, "Error en la nota"
    End If
End Function


Como ves lo único que he cambiado es el tipo del dato que se le envía Function saberminota(numero As Double) As String.
Antes era Integer(valor entero) y ahora es Double(valor decimal). Y a parte, lo único que cambié fueron los rangos desde que número a qué número se le asigna cada nota, por ejemplo:
Desde numero >= 6 hasta numero <= 8. Simplemente le especifico desde que número a que número tiene que indicar cierta calificación.

NOTA: En Visual Basic para poner números decimales no uses el punto, ej.: 7.2
Usa la coma: 7,2

Se puede hacer un Replace para usar el punto, pero es innecesario, usando la coma sale bien.

Cita de: Pedro_madrid en 30 Mayo 2008, 21:28 PM
PD: ¿Para que sirve eso del Select Case? Me parece que leí algo pero no me enteré de como hacerlo...
Select Case es otro tipo de estructura selectiva, es una especie de if anidado (no compilado, como dijiste antes).
Con un Select Case sería algo así:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
     MsgBox saberminota(Text1.Text)
End Sub

Function saberminota(numero As Double) As String
    Select Case (Text1.Text)
        Case 1, 2, 3, 4:
            saberminota = "suspenso"
        Case 5:
            saberminota = "suficiente"
        Case 6:
            saberminota = "bien"
        Case 7, 8:
            saberminota = "notable"
        Case 9, 10:
            saberminota = "sobresaliente"
        Case Else:
            MsgBox "Ha introducido un número incorrecto", vbindormation
    End Select
End Function

Pero de esta forma no puedes coger valores decimales, el Select Case sólo toma valores enteros.
[/quote]