Ejercicio de invertir un numero en vb.net (algo incomprendido)

Iniciado por DSREY, 22 Junio 2017, 05:59 AM

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

DSREY

hola q tal, bueno hace rato estaba haciendo un ejercicio sencillo, era un algoritmo que lea un numero entero y obtenga el inverso ejemplo:
123=321, 4789=9874
y bueno lo digite asi:

Código (vbnet) [Seleccionar]
Imports System.Console
Module Module1

   Sub Main()
       Dim num, y As Integer
       y = 0
       Do
           WriteLine("INGRESE UN NUMERO")
           num = ReadLine()
           Do
               y = y * 10 + (num Mod 10)
               num = num \ 10
           Loop While num > 0
           WriteLine(y)
           WriteLine()
           y = 0

       Loop While y = 0
   End Sub

End Module


y si corre bien y sirve ... pero aqui viene mi duda.... en la linea 12 donde esta :
               num = num \ 10
si cambio a:
               num = num / 10
es decir solo el signo \ por este: /
cuando lo ejecuto si me da el numero inverso pero solo hasta 345
ejemplo: escribo 345 me da el inverso 453 >>>ojo<<<< pero si escribo 456 me da 665 y si escribo cualquier otro numero mayor no lo invierte sino que da otra cantidad, entonces esa es mi duda.. cual es la diferencia entre "\" y "/"

gracias.!!!  aqui dejo el algoritmo que marca el inverso mal a partir de 456

Código (vbnet) [Seleccionar]
Imports System.Console
Module Module1

   Sub Main()
       Dim num, y As Integer
       y = 0
       Do
           WriteLine("INGRESE UN NUMERO")
           num = ReadLine()
           Do
               y = y * 10 + (num Mod 10)
               num = num / 10
           Loop While num > 0
           WriteLine(y)
           WriteLine()
           y = 0

       Loop While y = 0
   End Sub

End Module



· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
· Los temas de .NET van en su respectivo subforo
>aquí las reglas del foro
-Engel Lex

Eleкtro

#1
Cita de: DSREY en 22 Junio 2017, 05:59 AMesa es mi duda.. cual es la diferencia entre "\" y "/"

La diferencia es que un divisor es para divisiones entre números enteros (la operación devuelve un valor de tipo Integer), y el otro para decimales (la operación devuelve un valor de tipo Double)...

Asignar un valor decimal a una variable entera se considera una operación ilegal "permitida". Si eres nuevo en la programación de Visual Basic.NET entonces deberías activar la sentencia Option Strict ON para prevenir ese tipo de fallos, esto lo puedes activar de forma temporal escribíendo la sentencia en la cabecera de una clase, o de forma global (afectando a todas las clases actuales y futuros proyectos de VB.NET) en la configuración de Visual Studio.




Usando el divisor para enteros:
Cita de: Visual Studio Output WindowINGRESE UN NUMERO
Input: 123456

Loop 1: 12345
Loop 2: 1234
Loop 3: 123
Loop 4: 12
Loop 5: 1
Loop 6: 0

Result: 654321

Usando el divisor para decimales:
Cita de: Visual Studio Output WindowINGRESE UN NUMERO
Input: 123456

Loop 1: 12346
Loop 2: 1235
Loop 3: 124
Loop 4: 12
Loop 5: 1
Loop 6: 0

Result: 665421




Por último, déjame aconsejarte una cosa más...

Si el código que has hecho ha sido con la intención de aprender cosas básicas, o por que te han mandado un ejercicio en el que te obligan a solucionar el problema de esa forma, entonces está bien, pero si es por cualquier otro motivo entonces no estás haciendo lo más apropiado, puesto que hablando en términos de productividad y eficiencia, la librería de clases de .NET Framework expone una función llamada IEnumerable.Reverse() la cual sirve para invertir los elementos de un array/secuencia...

Para que te hagas una idea de la diferencia o ventaja que supone:

En una CPU AMD Ryzen 7 1700X, 10 millones de iteraciones del siguiente código finaliza en 16 segundos aprox.:
Código (vbnet) [Seleccionar]
For x As Integer = 0 To 10000000
   Dim num As Integer = 123456789, y As Integer
   Do
       y = y * 10 + (num Mod 10)
       num = num \ 10
   Loop While num > 0
Next x

100 millones de iteraciones del mismo código toma un tiempo de ejecución total de 2:42 minutos.

Este otro código, bajo las mismas circunstancias que el primero, con 10 millones de iteraciones se toma 10 segundos aprox.:
Código (vbnet) [Seleccionar]
For x As Integer = 0 To 10000000
   Dim num As Integer = 123456789
   num = CInt(String.Join("", num.ToString().Reverse()))
Next x

100 millones de iteraciones del mismo código toma un tiempo de ejecución total de 1:41 minutos.

¿Cual es la conclusión de este benchmark?, pues que en la mayoría de ocasiones reinventar la rueda no es lo más apropiado ni tampoco lo más eficiente...

La lbrería de clases de .NET Framework se lleva desarrollando desde el año 2002, ¿alguien cree que no han pensado en la necesidad de invertir secuencias?, ¡por supuesto que si!, .NET Framework expone una inmensa cantidad de sofisticados miembros (métodos y funciones desarrolladas por Microsoft) que nos facilitan la vida y, aunque para realizar una inversión de los dígitos del valor de una variable numérica debemos sufrir un tedioso proceso de conversión de tipo a string, luego a array/IEnumerable, iterar la secuencia hacia atrás, unir la secuencia resultante y el direct cast a Integer, al final lo cierto es que el tiempo de ejecución total supone mucho menos que si lo intentásemos hacer de otro modo... por lo tanto es más eficiente ( aunque por otro lado el algoritmo interno de la función IEnumerable.Reverse() no es muy eficiente, pero eso es otra historia ).

¡Saludos!








Serapis

#2
El modo más fácil y rápido de invertir una cadena de texto, es acceder a sus bytes individuales y operar sobre ellos... Toma rel primero e intercambialro por el último, luego el segundo por el penúltimo, etc... hasta que se encuentren en el centro.

Ahora bien, cuando tienes un número, cada byte no retiene un carácter del número, si no que es un 'trozo' de la base numérica en sí misma (decimal al caso), por lo que se hace preciso convertirlo a cadena de texto (una base numérica de base 256, donde los números tienen una posición concreta dentro de dicha base), sólo entonces la inversión puede aplicarse adecuadamente operando con los bytes...

Más o menos como los tienes (y digo más o menos, porque al tiempo que inviertes, vas generando el número, es más óptimo, convertirlo entero a cadena, luego invertirlo y luego convertirlo a número (si es preciso que deba devolverse un número)),  sin embargo, en tu código hay dos errores de lógica...

Cita de: DSREY en 22 Junio 2017, 05:59 AM
...
       Do
           WriteLine("INGRESE UN NUMERO")
           num = ReadLine()
           Do
               y = y * 10 + (num Mod 10)
               num = num \ 10
           Loop While num > 0
           WriteLine(y)
           WriteLine()
           y = 0

       Loop While y = 0

...
Marcado en negrita...
- Tu bucle interno, debería tener el 'while' tras el 'do', ya que si la entrada es 0, todavía entrará en el bucle una vez, siendo innecesario (sin entrar a valorar el código interno).
- Tu bucle externo, es un bucle sin fin... porque le dices (marcado en negrita):
Y = 0 y luego: Repetir mientras Y=0, como acabas de asignarle el valor 0, jamás saldrá del bucle, porque jamás dejará de cumplir esa condición.

okik

#3
Matemáticamente...

Código (vbnet) [Seleccionar]
     
Do
           Console.WriteLine("Escribe un número:")
           Dim numero As Integer = Console.ReadLine()
           Dim numeroInvertido As String = Nothing
           Dim y As Integer
           While numero > 0
               y = numero Mod 10
               numero \= 10
               numeroInvertido &= y
           End While
           Console.WriteLine(numeroInvertido)
           Console.WriteLine()
       Loop




Con Substring:

Código (vbnet) [Seleccionar]

    Do
           Console.WriteLine("Escribe un número:")
           Dim numero As String = Console.ReadLine()
           Dim numeroInvertido As String = Nothing
           For I As Integer = 1 To numero.Length

               numeroInvertido += numero.Substring(numero.Length - I, 1)
           Next
           Console.WriteLine(numeroInvertido)
           Console.WriteLine()
       Loop

DSREY

#4
gracias por su ayuda, entiendo que hay mas formas de hacer que un numero se invierta y son mejores, como estoy recien aprendiendo a programar no conozco aun todas sus funciones aunq me gustaria algun folleto de los espacios de nombres y variables que existen y en que situaciones se las puede usar o para que sirven,
asi podre ponerlas en mi speudocodigo.... :huh: :huh: :huh:

DSREY

#5
gracias por su ayuda, entiendo que hay mas formas de hacer que un numero se invierta y son mejores, como estoy recien aprendiendo a programar no conozco aun todas sus funciones aunq me gustaria algun folleto de los espacios de nombres y variables que existen y en que situaciones se las puede usar o para que sirven,
asi podre ponerlas en mi speudocodigo....
por otro lado tengo una duda... en cuanto a reolver ejercicios como sumas, resta, multiplicacion, division y potencias,
que variable se usa.?? xq no me resuelve ninguna operacion este codigo que hice,,, se trata sobre sacar el indice de masa corporal y bueno se usan varias operaciones ...
este es mi codigo

Imports System.Console
Module Module1

   Sub Main()
       Dim nom As String
       Dim cm, lb, m, kg, m2 As Integer
       Dim masa As Long
       cm = 0
       lb = 0
       m = cm / 100
       kg = lb / 2.2
       m2 = m * m
       WriteLine("CALCULADORA DE MASA CORPORAL CMC")
       WriteLine("")
       WriteLine("ESCRIBA SU NOMBRE")
       nom = ReadLine()
       WriteLine("ESCRIBA SU ESTATURA EN CENTIMETROS")
       cm = ReadLine()
       WriteLine("ESCRIBA SU PESO EN LIBRAS")
       lb = ReadLine()
       WriteLine(masa)
       WriteLine(kg)
       WriteLine(m)
       WriteLine(m2)
        masa = kg / m2
       WriteLine(("SU PORCENTAJE DE MASA CORPORAL ES, "), masa, ("%"))
       WriteLine("*---------------------------------------------------------*")
       WriteLine("*Indice de masa             Clasificacion                 *")
       WriteLine("*---------------------------------------------------------*")
       WriteLine("*<16.00___________________Infrapeso: Delgadez Severa______*")
       WriteLine("*16.00 - 16.99____________Infrapeso: Delgadez moderada____*")
       WriteLine("*17.00 - 18.49____________Infrapeso: Delgadez aceptable___*")
       WriteLine("*18.50 - 24.99____________Peso Normal_____________________*")
       WriteLine("*25.00 - 29.99____________Sobrepeso_______________________*")
       WriteLine("*30.00 - 34.99____________Obeso: Tipo I___________________*")
       WriteLine("*35.00 - 40.00____________Obeso: Tipo II__________________*")
       WriteLine("*>40.00___________________Obeso: Tipo III_________________*")
       WriteLine("*---------------------------------------------------------*")
       ReadLine()
       If masa < 16 Then
           WriteLine(nom, ("Tiene infrapeso: delgadez severa"))
           WriteLine("presione enter para salir")
           ReadLine()
           If masa > 16 And masa < 16.99 Then
               WriteLine("Tiene Infrapeso: Delgadez moderadap")
               WriteLine("presione enter para salir")
               ReadLine()
               If masa >= 17 And masa <= 18.49 Then
                   WriteLine(nom, " Tiene Infrapeso: Delgadez aceptable")
                   WriteLine("presione enter para salir")
                   ReadLine()
                   If masa >= 18.5 And masa <= 24.99 Then
                       WriteLine(nom, " Tiene Peso Normal")
                       WriteLine("presione enter para salir")
                       ReadLine()
                       If masa >= 25 And masa <= 29.99 Then
                           WriteLine(nom, " Tiene sobrepeso")
                           WriteLine("presione enter para salir")
                           ReadLine()
                           If masa >= 30 And masa <= 34.99 Then
                               WriteLine(nom, " Se encuentra con Obesidad: Tipo I")
                               WriteLine("presione enter para salir")
                               ReadLine()
                               If masa >= 35 And masa <= 40 Then
                                   WriteLine(nom, " Se encuentra con Obesidad: Tipo II")
                                   WriteLine("presione enter para salir")
                                   ReadLine()
                                   If masa > 40 Then
                                       WriteLine(nom, " Se encuentra con Obesidad: Tipo III")
                                       WriteLine("presione enter para salir")
                                       ReadLine()

                                   End If
                               End If
                           End If
                       End If
                   End If
               End If
           End If
       End If

   End Sub

End Module


"no se como insertan el codigo y q salga con las letras azules o rojas segun corresponde"

que debo cambiar.?? xq aumente unas lineas para verificar si esta resolviendo los ajercicios y nada

puse

writeline (masa)
writeline (kg)
writeline (m)
writeline (m2)


y me sale

0
0
0
0

....  :( :( :( :huh: :huh: :huh: :huh:

okik

#6
Cita de: DSREY en 24 Junio 2017, 21:48 PM
puse

writeline (masa)
writeline (kg)
writeline (m)
writeline (m2)


y me sale

0
0
0
0

....  :( :( :( :huh: :huh: :huh: :huh:

Te sale ...
0
0
0


porque colocas las operaciones ANTES de que el usuario haya introducido algún valor, y como es de esperar operas con valores nulos


 
(ANTES)
m = cm / 100
kg = lb / 2.2
m2 = m * m

...
(DESPUÉS)
       WriteLine("ESCRIBA SU ESTATURA EN CENTIMETROS")
       cm = ReadLine()
       WriteLine("ESCRIBA SU PESO EN LIBRAS")
       lb = ReadLine()
...


Como puedes imaginar primero se debe introducir el valor y luego operar.

Por otro lado como operas con DECIMALES debes usar el tipo de variable Decimal

Cuando introduzcas valores numéricos en el código si son decimales añade la letra D para indicar a VB, por ejemplo 2.2D
. De este modo indicas a VB que es un número decimal, y trabajará con el como tal.


Bueno aquí dejo tu código creo que arreglado, espero te sirva y esté correcto. Si ves cualquier problema o no entiendes algo nos comentas ¿ok?.

Código (vbnet) [Seleccionar]

Imports System.Console
Imports System.ConsoleColor
Module Module1

   Sub Main()
       Dim nom As String
       Dim cm, lb, m, kg, m2 As Decimal
       Dim masa As Decimal

       WriteLine("CALCULADORA DE MASA CORPORAL CMC")
       WriteLine("")
       WriteLine("ESCRIBA SU NOMBRE")
       nom = ReadLine().ToUpper
       WriteLine("ESCRIBA SU ESTATURA EN CENTIMETROS")
       cm = ReadLine()
       WriteLine("ESCRIBA SU PESO EN LIBRAS")
       lb = ReadLine().Replace(".", ",")
       m = cm / 100D
       kg = lb / 2.20462D
       m2 = m * m
       masa = CDec(kg / m2)
       WriteLine()

       WriteLine("===========================================")
       ForegroundColor = Cyan
       WriteLine(String.Format("NOMBRE: {0}", nom))
       WriteLine(String.Format("PESO (KG): {0:0.0000} kg", kg)) '{0} referencia a valor kg y :00.0000 formato a mostrar ej: 45,5899
       WriteLine(String.Format("ESTATURA: {0:0.00} m", m))
       WriteLine(String.Format("M{1}: {0:0.0000} m{1}", m2, Convert.ToChar(178)))
       ForegroundColor = White
       WriteLine("===========================================")
       WriteLine()
       ForegroundColor = White
       WriteLine("SU PORCENTAJE DE MASA CORPORAL ES: ")
       WriteLine()
       BackgroundColor = Yellow
       ForegroundColor = Red
       Write(String.Format("{0:0.0000} %", masa))
       WriteLine()
       WriteLine()

       BackgroundColor = Yellow
       ForegroundColor = Blue
       WriteLine("*---------------------------------------------------------*")
       WriteLine("*Indice de masa             Clasificacion                 *")
       WriteLine("*---------------------------------------------------------*")
       WriteLine("*<16.00___________________Infrapeso: Delgadez Severa______*")
       WriteLine("*16.00 - 16.99____________Infrapeso: Delgadez moderada____*")
       WriteLine("*17.00 - 18.49____________Infrapeso: Delgadez aceptable___*")
       WriteLine("*18.50 - 24.99____________Peso Normal_____________________*")
       WriteLine("*25.00 - 29.99____________Sobrepeso_______________________*")
       WriteLine("*30.00 - 34.99____________Obeso: Tipo I___________________*")
       WriteLine("*35.00 - 40.00____________Obeso: Tipo II__________________*")
       WriteLine("*>40.00___________________Obeso: Tipo III_________________*")
       WriteLine("*---------------------------------------------------------*")


       BackgroundColor = Black
       ForegroundColor = White

       WriteLine()

       Select Case masa
           Case Is < 16D
               WriteLine(nom & "Tiene Infrapeso: Delgadez Severa")
           Case 16D To 16.99D
               WriteLine(nom & "Tiene Infrapeso: Delgadez moderada")
           Case 17D To 18.49D
               WriteLine(nom & " Tiene Infrapeso: Delgadez aceptable")
           Case 18.5D To 24.99D
               WriteLine(nom & " Tiene Peso Normal")
           Case 25D To 29.99D
               WriteLine(nom & " Tiene sobrepeso")
           Case 30D To 34.99D
               WriteLine(nom & " Se encuentra con Obesidad: Tipo I")
           Case 35D To 40D
               WriteLine(nom & " Se encuentra con Obesidad: Tipo II")
           Case Is > 40D
               WriteLine(nom & " Se encuentra con Obesidad: Tipo III")
       End Select
       'If masa > 16 And masa < 16.99 Then
       ' WriteLine("Tiene Infrapeso: Delgadez moderada")
       'End If

       'If masa >= 17 And masa <= 18.49 Then
       '    WriteLine(nom, " Tiene Infrapeso: Delgadez aceptable")
       'End If

       'If masa >= 18.5 And masa <= 24.99 Then
       '    WriteLine(nom, " Tiene Peso Normal")
       'End If


       'If masa >= 25 And masa <= 29.99 Then
       '    WriteLine(nom, " Tiene sobrepeso")
       'End If

       'If masa >= 30 And masa <= 34.99 Then
       '    WriteLine(nom, " Se encuentra con Obesidad: Tipo I")
       'End If

       'If masa >= 35 And masa <= 40 Then
       '    WriteLine(nom, " Se encuentra con Obesidad: Tipo II")
       'End If


       'If masa > 40 Then
       '    WriteLine(nom, " Se encuentra con Obesidad: Tipo III")
       'End If

       ForegroundColor = Yellow
       WriteLine()
       WriteLine("Presione ENTER para salir")

       ReadLine()


   End Sub

End Module


Por cierto  según esto tengo peso Normal, sin embargo ya estoy mas que harto que me digan que estoy muy delgado. En fin que le vamos a hacer.





He realizado una arreglo para que esto
SU PORCENTAJE DE MASA CORPORAL ES:  21 %

quede en una sola línea tal que así:

CitarSU PORCENTAJE DE MASA CORPORAL ES: 21 %")

Simplemente remplazas lo anterior por  esto y listo:

Código (vbnet) [Seleccionar]

   Out.NewLine = Convert.ToChar(ConsoleKey.Backspace)
        WriteLine("SU PORCENTAJE DE MASA CORPORAL ES:  ")
        BackgroundColor = Yellow
        ForegroundColor = Red
        Out.NewLine = Environment.NewLine
        WriteLine(String.Format("{0:0.0000} %", masa))
        WriteLine()




COMPLETO:
Código (vbnet) [Seleccionar]

Imports System.Console
Imports System.ConsoleColor
Module Module1

    Sub Main()
        Dim nom As String
        Dim cm, lb, m, kg, m2 As Decimal
        Dim masa As Decimal

        WriteLine("CALCULADORA DE MASA CORPORAL CMC")
        WriteLine("")
        WriteLine("ESCRIBA SU NOMBRE")
        nom = ReadLine().ToUpper
        WriteLine("ESCRIBA SU ESTATURA EN CENTIMETROS")
        cm = ReadLine()
        WriteLine("ESCRIBA SU PESO EN LIBRAS")
        lb = ReadLine().Replace(".", ",")
        m = cm / 100D
        kg = lb / 2.20462D
        m2 = m * m
        masa = CDec(kg / m2)
        WriteLine()

        WriteLine("===========================================")
        ForegroundColor = Cyan
        WriteLine(String.Format("NOMBRE: {0}", nom))
        WriteLine(String.Format("PESO (KG): {0:0.0000} kg", kg)) '{0} referencia a valor kg y :00.0000 formato a mostrar ej: 45,5899
        WriteLine(String.Format("ESTATURA: {0:0.00} m", m))
        WriteLine(String.Format("M{1}: {0:0.0000} m{1}", m2, Convert.ToChar(178)))
        ForegroundColor = White

        WriteLine("===========================================")
        WriteLine()

        ForegroundColor = White
        Out.NewLine = Convert.ToChar(ConsoleKey.Backspace)
        WriteLine("SU PORCENTAJE DE MASA CORPORAL ES:  ")
        BackgroundColor = Yellow
        ForegroundColor = Red
        Out.NewLine = Environment.NewLine
        WriteLine(String.Format("{0:0.0000} %", masa))
        WriteLine()

        BackgroundColor = Yellow
        ForegroundColor = Blue
        WriteLine("*---------------------------------------------------------*")
        WriteLine("*Indice de masa             Clasificacion                 *")
        WriteLine("*---------------------------------------------------------*")
        WriteLine("*<16.00___________________Infrapeso: Delgadez Severa______*")
        WriteLine("*16.00 - 16.99____________Infrapeso: Delgadez moderada____*")
        WriteLine("*17.00 - 18.49____________Infrapeso: Delgadez aceptable___*")
        WriteLine("*18.50 - 24.99____________Peso Normal_____________________*")
        WriteLine("*25.00 - 29.99____________Sobrepeso_______________________*")
        WriteLine("*30.00 - 34.99____________Obeso: Tipo I___________________*")
        WriteLine("*35.00 - 40.00____________Obeso: Tipo II__________________*")
        WriteLine("*>40.00___________________Obeso: Tipo III_________________*")
        WriteLine("*---------------------------------------------------------*")


        BackgroundColor = Black
        ForegroundColor = White

        WriteLine()

        Select Case masa
            Case Is < 16D
                WriteLine(nom & "Tiene Infrapeso: Delgadez Severa")
            Case 16D To 16.99D
                WriteLine(nom & "Tiene Infrapeso: Delgadez moderada")
            Case 17D To 18.49D
                WriteLine(nom & " Tiene Infrapeso: Delgadez aceptable")
            Case 18.5D To 24.99D
                WriteLine(nom & " Tiene Peso Normal")
            Case 25D To 29.99D
                WriteLine(nom & " Tiene sobrepeso")
            Case 30D To 34.99D
                WriteLine(nom & " Se encuentra con Obesidad: Tipo I")
            Case 35D To 40D
                WriteLine(nom & " Se encuentra con Obesidad: Tipo II")
            Case Is > 40D
                WriteLine(nom & " Se encuentra con Obesidad: Tipo III")
        End Select

        ForegroundColor = Yellow
        WriteLine()
        WriteLine("Presione ENTER para salir")

        ReadLine()


    End Sub

End Module

DSREY

 :D :D okik, Muchas gracias, ahora entiendo mejor como hacer q funcione el pseudogodigo y como usar las variables,

CitarBueno aquí dejo tu código creo que arreglado, espero te sirva y esté correcto. Si ves cualquier problema o no entiendes algo nos comentas ¿ok?.

Código
;-)

Si funciono bien con select case y con if.


No tengo muy claro para que es exactamente "Convert.ToChar(178)"
CitarWriteLine(String.Format("M{1}: {0:0.0000} m{1}", m2, Convert.ToChar(178)))

"ToUpper"
Citarnom = ReadLine().ToUpper

y "Cyan"
CitarForegroundColor = Cyan

CitarPor otro lado como operas con DECIMALES debes usar el tipo de variable Decimal

Cuando introduzcas valores numéricos en el código si son decimales añade la letra D para indicar a VB, por ejemplo 2.2D
. De este modo indicas a VB que es un número decimal, y trabajará con el como tal.

y lo de los decimales me sirvio mucho, asi pude corregir otros pseudocodigos que estoy haciendo, la verdad es q tengo un examen el jueves en visual y como requisito para dar el examen es llevar 12 aplicaciones funcionando, (temas q ya nos dieron) y bueno ya solo me faltan 4 (hoy ya los termino) pero en fin
como uso visul basic 2017 en internet google o en otras paginas no encuentro mucha ayuda xq tienen pseudocodigos mas de visual estudio 2010 y ahora hay mas variables que son mejores para usarlas

 

okik

#8
Cita de: DSREY en 25 Junio 2017, 18:32 PM
No tengo muy claro para que es exactamente "Convert.ToChar(178)"
"ToUpper"
y "Cyan"

Convert.ToChar() Convierte un valor Char en un carácter Unicode. Donde Char es un código UTF-16 (16-bits Unicode Transformation Format). En la tabla Unicode se puede encontrar que el superíndice "²" en formato UTF-16 corresponde al número Unicode U+00B2, 0x00B2, o bien &HB2. Donde B2 es el valor hexadecimal de 178. De modo que puedes ponerlo de las dos maneras.

Código (vbnet) [Seleccionar]

   WriteLine(Convert.ToChar(&HB2))

   WriteLine(Convert.ToChar(178))

   WriteLine("²")



https://en.wikipedia.org/wiki/List_of_Unicode_characters

https://unicode-table.com/es/#00B2
´
También puede ser que lo veas escrito así ChrW(178) en lugar de
Convert.ToChar(). Antiguamente en VB se usaba ChrW(), que es una función de VB6, pero todavía se puede usar en VB.NET.

Para declara una variable de tipo char se hace de la siguiente manera:
Código (vbnet) [Seleccionar]
       
       Dim miChar As Char =  Convert.ToChar(178) ' o ChrW(178),
       Console.WriteLine(miChar)
       Console.ReadLine()



Una forma sencilla de encontrar el valor numérico Unicode de un carácter es usar el miembro Enumeración ConsoleKey

Enumeración ConsoleKey

Código (vbnet) [Seleccionar]

 Dim caracter As Integer = ConsoleKey.A
       WriteLine(caracter)
       WriteLine(Convert.ToChar(caracter))


Enter por ejemplo sería el 13

Y si te fijas en el código hay una línea como esta:
Código (vbnet) [Seleccionar]

Out.NewLine = Convert.ToChar(ConsoleKey.Backspace)


He utilizado el ConsoleKey para obtener el código de retroceso o retorno de carro (ConsoleKey.Backspace). Que es el 8.

De modo que envío un retorno de carro a la consola para subir el valor del porcentaje hacia la línea anterior.



ToUpper es un método que convierte una cadena todo en mayúsculas

Dim cadena as String= "Hola mundo"
WriteLine(cadena.ToUpper())
ReadLine()


Devuelve "HOLA MUNDO"

Método String.ToUpper ()




Cyan es un color de la lista de colores de System.ConsoleColor. El color azul clarito ▓▓▓ .
Enumeración ConsoleColor

Al principio de código he importado System.ConsoleColor para no tener que escribirlo todo el tiempo. Pero de no haberlo importado tendría que ponerlo así:
Código (vbnet) [Seleccionar]

      Console.ForegroundColor = ConsoleColor.Cyan


Si escribes "ConsoleColor." en el editor de código te aparecerá una lista de colores.