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.
Citarcreo que estoy preparado para hacer este primer programa
yo creo que no. dices que estas preparado y te tenemos que decir como hacerlo......
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?
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
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. ;)
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
Quedaria mejor con select case.
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!
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...
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?
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:
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í:
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]
¡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.
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!
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.