Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Pedro_madrid en 30 Mayo 2008, 17:38 PM

Título: Mi primer programa en VB
Publicado por: Pedro_madrid en 30 Mayo 2008, 17:38 PM
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.
Título: Re: Mi primer programa en VB
Publicado por: byebye en 30 Mayo 2008, 17:54 PM
Citarcreo que estoy preparado para hacer este primer programa

yo creo que no. dices que estas preparado y te tenemos que decir como hacerlo......
Título: Re: Mi primer programa en VB
Publicado por: Pedro_madrid en 30 Mayo 2008, 17:56 PM
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?
Título: Re: Mi primer programa en VB
Publicado por: pisagatos en 30 Mayo 2008, 18:09 PM
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
Título: Re: Mi primer programa en VB
Publicado por: Spider-Net en 30 Mayo 2008, 20:12 PM
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
Título: Re: Mi primer programa en VB
Publicado por: chrominum en 30 Mayo 2008, 20:31 PM
Quedaria mejor con select case.
Título: Re: Mi primer programa en VB
Publicado por: Spider-Net en 30 Mayo 2008, 20:35 PM
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!
Título: Re: Mi primer programa en VB
Publicado por: pisagatos en 30 Mayo 2008, 21:26 PM
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...
Título: Re: Mi primer programa en VB
Publicado por: Pedro_madrid en 30 Mayo 2008, 21:28 PM
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?
Título: Re: Mi primer programa en VB
Publicado por: Spider-Net en 30 Mayo 2008, 22:31 PM
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]
Título: Re: Mi primer programa en VB
Publicado por: Pedro_madrid en 31 Mayo 2008, 09:49 AM
¡Ajá!, ya lo voy entendiendo.
Con el select case dices los casos posibles y lo que le corresponde a cada caso, sin embargo con con ElseIf va como "por escalones", si lo 1º es False, pasa a el siguiente Else.
Bueno, creo que la teoria de los Else e If me la se... me falta la practica y aprender lo de los valores decimales, enteros...(me parece que tengo por aqui una tabla), y lo de As String, que no lo entendi muy bien (todo pasito a pasito...)
Gracias por la ayuda ;), si se me ocurre algun otro ejercicio muy muy sencillo lo posteare (no sin antes buscar yo como hacerlo...); pero de momento me dedicare a mirar ejercicios ya resueltos.
Título: Re: Mi primer programa en VB
Publicado por: Spider-Net en 31 Mayo 2008, 10:01 AM
Para entender lo de As String y demás, lo que te recomiendo es que estudies y comprendas bien los tipos de datos.

Los tipos enteros (Integer) los usas para representar números enteros, sin coma flotante, osea sin decimales.
Los tipos decimales (Double) los usas para representar números más grandes y números decimales.
Los tipos cadena (String) los usas para almacenar cadenas, por ejemplo "Suspenso" es una cadena de caracteres.

Existen más tipos de datos: Boolean, Long, Single, Byte...

Para comprender lo del As String tienes que entender la sintaxis de una función, en este caso:

Function se pone siempre delante de cada función para indicar que es una función.
Después de Function viene el nombre de la función, en este caso: saberminota.
(numero As Double): Es el parámetro que se le pasa a la función, tú tienes que pensar en ¿qué le paso a la función para que haye la nota?. Un número decimal, por lo tanto el tipo de la variable es Double.
As String es el tipo de dato que devuelve la función. Si te fijas en la función, dependiendo de qué valor introduzcas, por ejemplo: 6. La función toma el valor: "bien" y el valor "bien" es una cadena. "Suspenso", "Notable", "Sobresaliente" son todo cadenas, por lo tanto el tipo que devuelve la función es tipo cadena, en Visual Basic (String).
Espero que más o menos hayas entendido como va el tema, pero sin duda para comprenderlo bien te sugiero que leas sobre el tema, que leas algún libro o manual de Visual Basic muy básico, desde el principio, así lo entenderás todo mucho mejor.

Saludos!
Título: Re: Mi primer programa en VB
Publicado por: Pedro_madrid en 31 Mayo 2008, 11:56 AM
Ya lo voy entendiendo mejor...
Me cogi 3 manuales, 1 de ellos con ejercicios... pero no se... no los entiendo muy bien...De momento el que mejor estoy entendiendo es el de los ejercicios practicos.
Gracias por la ayuda, si quieren ya pueden cerrar el hilo.