Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-11-2012, 02:13   #1
Fiore!
Member
 
L'Avatar di Fiore!
 
Iscritto dal: Nov 2012
Messaggi: 61
[Visual Basic.NET] Console, accettare solo numeri

Salve, sto addentrando in questo nuovo mondo, la programmazione (VB.NET, C#, C++), problemi ne ho già riscontrati tanti, ma poco a poco li supero, questo però non ci riesco...
Premetto che sto usando ancora la console, devo ancora cominciare col Windows Form.

Arrivo al dunque:
Codice:
Module Rettangolo
    Sub main()
        Dim l1, l2, prm, area As Single
        'Titolo
        Console.Title = "Calcolo del perimetro e dell'area di un rettangolo"
        Console.WriteLine("Calcolo del perimetro e dell'area di un rettangolo" + vbCrLf)
        'Inserimento dato
        Do While (l1 <= 0)
            Console.Write(vbCrLf + "Inserire il 1° lato:" + vbTab)
            l1 = Console.ReadLine()
            'Clausola numeri positivi
            If (l1 <= 0) Then
                Console.WriteLine(vbCrLf + "Un rettangolo possiede lati solo con valori positivi maggiori di 0")
            End If
        Loop
        'Inserimento dato
        Do While (l2 <= 0)
            Console.Write(vbCrLf + "Inserire il 2° lato:" + vbTab)
            l2 = Console.ReadLine()
            'Clausola numeri positivi
            If (l2 <= 0) Then
                Console.WriteLine(vbCrLf + "Un rettangolo possiede lati solo con valori positivi maggiori di 0")
            End If
        Loop
        'Operazioni
        prm = (l1 + l2) * 2
        area = l1 * l2
        'Risposte
        Console.WriteLine(vbCrLf + "Il perimetro del rettangolo è:" + vbTab + Str(prm))
        Console.WriteLine("L'area del rettangolo é:" + vbTab + Str(area))
        'Quadrato?
        If (l1 = l2) Then
            Console.ForegroundColor = ConsoleColor.Red
            Console.WriteLine(vbCrLf + "\☺/ ♥ \☻/ ♥ \☺/     È un quadrato!     \☺/ ♥ \☻/ ♥ \☺/")
            Console.ResetColor()
        End If
        'Chiusura
        Console.WriteLine(vbCrLf + vbCrLf + "Premi un tasto per chiudere la console.")
        Console.ReadKey()
    End Sub

End Module
Funziona tutto perfettamente, però se inserisco una lettera al posto di un numero, logicamente va in crash, si può evitare questo bug?
Vorrei che accettasse solo le cifre più la virgola o il punto (inteso come virgola).

Altra cosa, la virgola nell'input del numero è una virgola (non un punto), mentre nella risposta finale è un punto.
C'è un modo per far combaciare le 2 cose?

Grazie a chi mi risponde.
Fiore! è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2012, 05:02   #2
AllerITA
Member
 
L'Avatar di AllerITA
 
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
Prova ad utilizzare le istruzioni Try Catch per intercettare l'errore del valore non numerico inserito:
Codice:
Try
      [ tryStatements ]
      [ Exit Try ]
  [ Catch [ exception [ As type ] ] [ When expression ]
      [ catchStatements ]
      [ Exit Try ] ]
  [ Catch ... ]
  [ Finally
      [ finallyStatements ] ]
  End Try
come anche indicato qui:

MSDN
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb

Ultima modifica di AllerITA : 19-11-2012 alle 05:50.
AllerITA è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2012, 21:52   #3
Fiore!
Member
 
L'Avatar di Fiore!
 
Iscritto dal: Nov 2012
Messaggi: 61
Quote:
Originariamente inviato da AllerITA Guarda i messaggi
Prova ad utilizzare le istruzioni Try Catch per intercettare l'errore del valore non numerico inserito:
Codice:
Try
      [ tryStatements ]
      [ Exit Try ]
  [ Catch [ exception [ As type ] ] [ When expression ]
      [ catchStatements ]
      [ Exit Try ] ]
  [ Catch ... ]
  [ Finally
      [ finallyStatements ] ]
  End Try
come anche indicato qui:

MSDN
Scusa la mia niubbaggine, ma non c'ho capito nulla...
Nemmeno dal sito.
Dove vanno messi? E come?
Intanto grazie.
Fiore! è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2012, 03:24   #4
AllerITA
Member
 
L'Avatar di AllerITA
 
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
Allora, l'istruzione try catch è una istruzione del VB.NET per intercettare,
in un gruppo di codice,
gli errori che il programma incontra
quando un tipo di operazione non permessa è stato eseguito.
Nel tuo caso particolare è la possibilità di convertire una stringa alfanumerica in un numero,
ciò da origine a un errore nel programma che per la stessa funzionalità del VB.NET,
genera un interruzione nell'esecuzione e la visualizzazione dell'errore corrispondente.
Però per la stessa natura del linguaggio è possibile intercettare tale errore attraverso il Try catch.
Vediamo come:

inserisci il Try all'inizio del gruppo di istruzioni che credi possa generare l'errore.
inserisci catch alla fine di questo gruppo di istruzioni.
Quando il programma trova un errore tra il try e catch, mette le informazioni dell'errore all'interno di un oggetto che viene detto eccezione,

Questo errore viene intercettato dal Try e l'esecuzione viene
passata al blocco Catch che esamina l'eccezione e se tu gli
hai indicato di intercettarla la assegna a una variabile,
Questa cosa si fa indicando il tipo di eccezione che si vuole intercettare
tale oggetto è fondato sulla classe base Exception.
quindi puoi utilizzare un oggetto Exception per intercettare l'errore generico.
Così se devi intercettare l'errore dato dalla conversione del valore alfanumerico devi fare così
Codice:
....Tuo Codice....
    Dim IsNumero As Boolean = False
    Do
       Try
          l1=Console.ReadLine
          IsNumero=True
       Catch ex as Exception
	   MsgBox "Errore non hai inserito un numero"
       End Try
     Loop While IsNumero=False
....Tuo Codice....
Questo codice intercetta l'errore e fino a quando non inserisci un numero
non esce dal ciclo.
Spero di essere stato chiaro, Se c'è qualcosa che non hai capito chiedi pure.
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb

Ultima modifica di AllerITA : 20-11-2012 alle 03:40.
AllerITA è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2012, 19:06   #5
Gaiden80
Member
 
Iscritto dal: Jun 2012
Città: Roma
Messaggi: 115
prova l'istruzione
Dim number As Integer
Dim result As Boolean = Int32.TryParse(value, number)

result è true se è un numero. Se true in number andrà un numero, altrimenti result sarà false e number non valorizzato
Gaiden80 è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2012, 21:15   #6
Fiore!
Member
 
L'Avatar di Fiore!
 
Iscritto dal: Nov 2012
Messaggi: 61
Siete stati gentilissimi, ora va benissimo, col metodo di AllerITA (grazie).

Gaiden80, se ho capito bene, così come ho fatto sopra, intercetto i "non numeri", invece come dici te accetta solo "numeri", giusto?

Mi hai consigliato Integer, mi interessano pure le virgole, infatti il "." non viene rilevato come una virgola, ma devo digitare la "," che non è un problema, nell'input però il "." è come se non esistesse (5.2 = 52), quindi lo devo intercettare, però il risultato viene scritto col punto, a cos'è dovuta questa discrepanza?
Fiore! è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2012, 22:50   #7
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Dal mio personale punto di vista, se sei all'inizio come accennavi nel primo post, lascerei assolutamente da parte il Visual Basic e andrei direttamente di C# (se si parla di rimanere nella piattaforma .NET), linguaggio decisamente più moderno e meglio implementato nel mondo .NET. Possiamo dire che l'intera piattaforma .NET è nata sul C# e viceversa.

Poi vabbè, io trovo il C# un linguaggio davvero ben fatto, ma queste son un altro paio di maniche e un discorso diverso da quello iniziale.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2012, 23:39   #8
Fiore!
Member
 
L'Avatar di Fiore!
 
Iscritto dal: Nov 2012
Messaggi: 61
Quote:
Originariamente inviato da [Kendall] Guarda i messaggi
Dal mio personale punto di vista, se sei all'inizio come accennavi nel primo post, lascerei assolutamente da parte il Visual Basic e andrei direttamente di C# (se si parla di rimanere nella piattaforma .NET), linguaggio decisamente più moderno e meglio implementato nel mondo .NET. Possiamo dire che l'intera piattaforma .NET è nata sul C# e viceversa.

Poi vabbè, io trovo il C# un linguaggio davvero ben fatto, ma queste son un altro paio di maniche e un discorso diverso da quello iniziale.
Non vorrei andate OT, ma per questo post faccio eccezione; leggendo in rete la maggior parte della gente (sempre contrastanti, ma mi sono fatto una mia idea) dice che il migliore è il C#, e Visual Basic è più per i principianti, mentre C++ molti non lo digeriscono.
Col C# ho fatto qualcosina, ma poco nulla e cmq roba banalissima.
Tornando a me, sono proprio all'inizio, diciamo che ho capito come ragionano i computer (da tempo), ma non so i comandi, e cambiando sempre linguaggio a volte faccio pure confusione...

Ora sono in Visual Basic.NET per scuola, lunedì VB (Visual Studio Express 2012), mercoledì C++ (Dev-C++), il C# raro.
Ho provato pure Gambas e Nanodev che sono opensource (in privato).
Per ora mi trovo bene in VB, anche se alcuni comandi del C++ li preferisco, tipo "\n" al posto di "vbCrLf", la punteggiatura "{;" a volte rompe, ma è solo abitudine, per ora stiamo usando solo la console, al max qualche finestra di risposta, anche se ho già capito varie cose del Windows Form.
Quello che ho fatto fin'ora è molto avanti rispetto ai miei compagni, e ho il dubbio di aver pure già superato la prof (spero che non leggerà mai 'sto post e soprattutto che non mi riconosca :P ).

Tornando al discorso sopra, impostando la tastiera 142, col "." del tastierino numerico mi esce la virgola, ma la risposta appare col punto, quindi vorrei risolvere quest'ultimo problema in modo definitivo per tutti i pc.
Fiore! è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2012, 00:40   #9
Gaiden80
Member
 
Iscritto dal: Jun 2012
Città: Roma
Messaggi: 115
in metodo tryparse è presente per ogni tipo primitivo, int, datetime, float etc.
restituisce sempre true se convertibile, false altrimenti ed in out la variabile valorizzata.

Agganciandomi alla discussione penso che un linguaggio valga l'altro. Alla fine di .net la complessità sta nel framework.
L'unico vero vantaggio in c# è la maggiore diffusione in ambiente lavorativo, VB.net è stato usato nel passaggio a .net dal VB6 ma a parte la sintassi simile sono 2 linguaggi completamente differenti
Gaiden80 è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2012, 05:34   #10
AllerITA
Member
 
L'Avatar di AllerITA
 
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
Quote:
Originariamente inviato da Fiore! Guarda i messaggi
Siete stati gentilissimi, ora va benissimo, col metodo di AllerITA (grazie).

Gaiden80, se ho capito bene, così come ho fatto sopra, intercetto i "non numeri", invece come dici te accetta solo "numeri", giusto?

Mi hai consigliato Integer, mi interessano pure le virgole, infatti il "." non viene rilevato come una virgola, ma devo digitare la "," che non è un problema, nell'input però il "." è come se non esistesse (5.2 = 52), quindi lo devo intercettare, però il risultato viene scritto col punto, a cos'è dovuta questa discrepanza?
Il valore Integer non ha la virgola quindi devi usare un Double come variabile per
intercettare la virgola (in realtà dovrebbe essere il punto come si utilizza nella formattazione inglese).
quindi devi fare:

Double.TryParse(value,number)

come indicato qui

MSDN
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb

Ultima modifica di AllerITA : 21-11-2012 alle 05:40.
AllerITA è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2012, 19:29   #11
Fiore!
Member
 
L'Avatar di Fiore!
 
Iscritto dal: Nov 2012
Messaggi: 61
Siete molto gentili, davvero, più o meno ho capito come funziona TryParse, ma non capisco come fargli capire che mi interessano solo i punti e le virgole...
Fiore! è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
HP blocca anche le cartucce di inchiostr...
Acquisizione Apple: SigScalr chiude, gli...
Cooler Master HAF II 500 integra le vent...
I musulmani non dovrebbero usare le crip...
AMD Radeon 9000 pronte a sorpassare le N...
Soulframe, il nuovo gameplay chiarisce m...
La Commissione UE presenterà una ...
Niente più eliche: con due ali, i...
Waze si aggiorna con nuove funzioni IA: ...
Oltre 200 economisti ed esperti di IA la...
I migliori produttori del 2026? Facci sa...
Claude Code consuma fino a 33 mila token...
Si chiama Starfire il chip con cui Intel...
Chrome espone l'OS reale dietro ogni ric...
Intel investe altri 5 miliardi di euro p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v