Novità

per i programmatori

salvo50

Advanced Member >PLATINUM PLUS<
Messaggi
2.672
Punti reazione
851
Punti
113
Prova ad inserire zero al posto del primo o del secondo numero

Codice:
Option Explicit
Sub Main
   Dim A,B,C
   A = CInt(InputBox("Inserisci il primo numero",,5))
   If A > 0 Then
      B = CInt(InputBox("Inserisci il secondo numero",,13))
      If B > 0 Then
         C = A * B
         Scrivi " IL PRIMO NUMERO ",1,0,,1,4
         Scrivi Format2(A),1,0,,2,4
         Scrivi " MOLTIPLICATO PER IL SECONDO NUMERO ",1,0,,1,4
          Scrivi Format2(B),1,0,,2,4
          Scrivi " UGUALE ",1,0,,1,4
          Scrivi Format2(C),1,,,2,4
      End If
      If B < 1 Then Scrivi " Hai inserito ZERO come secondo numero, non è cosentito, inizia da capo",1,,,2,5
   End If
   If A < 1 Then Scrivi  " Hai inserito ZERO come primo numero, non è cosentito, inizia da capo",1,,,2,5
End Sub
 

joe

Advanced Member >PLATINUM<
Messaggi
1.216
Punti reazione
108
Punti
63
Ciao Genios.

Quel vecchio Basic non può essere tradotto pari-pari.

Return per esempio sarebbe End Sub.

Ma la routine di input potrebbe essere pressoché identica.

Invece di essere richiamata con il numero della linea di programma (100)

deve avere "un nome".

Ma ha poco senso scrivere una Sub quando possono essere usati gli input-box

che in pratica sono quella "sub 100"

Se lo script di giggio fa quello che deve ... non capisco cosa altro cerchi.

Hai scritto il diagramma di flusso che vuol dire che hai capito cosa vuoi

ed hai un programma in vbscript che fa quello che vuoi.

Se invece vuoi usare i nuovi script dopo averli tradotti

su macchine come il commodore o lo zx spectrum,

o il ][gs o l' M24 ... direi che è quasi impossibile.

L'inverso ... anche.

Non consiglierei a nessuno tanto meno a te di provarci.

In pratica il diverso funzionamento delle macchine e del loro basic,

rendono INUTILIZABILI i diagrammi di flusso in computer

che elaborano versioni di Basic così diverse.

In pratica se riesci a trovare il diagramma di flusso

del vecchio programma e/o de nuovo programma

poi non lo puoi usare sull'altro sistema che necessita per funzionare

di un diagramma di flusso diverso.

:)
 
Ultima modifica:

Giggio

Member
Messaggi
43
Punti reazione
9
Punti
8
La differenza sta nella gestione degli errori in input e nella flessibilità se volessi inserire + di 2 elementi .da moltiplicare?

in questo caso invece di seguire il diagramma proposto da chi ha chiesto aiuto uno fa di testa sua e il diagramma invce di seguirlo lo interpreta.
 

genios

Advanced Member >GOLD<
Messaggi
808
Punti reazione
11
Punti
18
Invece se usassimo una funzione di inputbox che viene richiamata ?
 

i legend

Advanced Member >PLATINUM PLUS<
Messaggi
3.638
Punti reazione
293
Punti
83
in questo caso invece di seguire il diagramma proposto da chi ha chiesto aiuto uno fa di testa sua e il diagramma invce di seguirlo lo interpreta.
.
Lo 0 a ben vedere sembrerebbe voler essere escluso dal diagramma percio non l'ho messo , poi le modifiche per attuare ciò che si vuole non cambiano la logica del codice.
Osservazioni banali.
Eugenio ha detto che lo script fa quanto richiesto e
se non necessita di alcuna modifica , a mio avviso non si può parlare di interpretazione.
ma le assicuro che terrò in grande considerazione le sue critiche costruttive.
Cordiali saluti da i legend :)

X Genios
Eugenio , purtroppo non conosco i vecchi basic .
 

genios

Advanced Member >GOLD<
Messaggi
808
Punti reazione
11
Punti
18
joe scrive

[
Ma la routine di input potrebbe essere pressoché identica.

Invece di essere richiamata con il numero della linea di programma (100)

deve avere "un nome".

/QUOTE]

Bene joe hai centrato il problema

la vogliamo scrivere questa sub che verrà richiamata io non so ancora farlo .:)

Grazie a tutti

ciao Eugenio
 

Giggio

Member
Messaggi
43
Punti reazione
9
Punti
8
Non è propriamente vero che un diagramma di flusso non possa essere sviluppato in un qualsiasi linguaggio.
Il diagramma dice cosa fare , il programmatore che conosce il linguaggio poi saprà come farlo.
o come nel caso di Genios dovrebbe ,specie dopo lo script postato in precedenza.

provo a postare la mia soluzione attinente al listato in qbasic di qualche post fa

Come ha suggerito Joe le subroutine richiamate da un numero di linea si trasformeranno in Subroutine da richiamarsi con il call , come detto da Ilegend il problema di questo listato si risolve concettualmente nello stesso modo dell'altro.



Codice:
Sub Main
   Call InputIntero(N1,"QUAL'È IL PRIMO NUMERO?")
   Call InputIntero(N2,"QUAL'È IL SECONDO NUMERO?")
   Scrivi "LA SOMMA DEI DUE NUMERI È :" & N1 + N2
End Sub
Sub InputIntero(n,Testo)
   Do
      s = InputBox(Testo,,n)
      s = Replace(s,",",".")
      n = CDbl(s)
      If Int(n) <> n Then
         MsgBox "MI DISPIACE, IL NUMERO DEVE ESSERE UN INTERO.RIPROVATE"
      End If
   Loop While Int(n) <> n
End Sub
 

genios

Advanced Member >GOLD<
Messaggi
808
Punti reazione
11
Punti
18
Giggio non funziona se inserisci 1,7 e 1,6 da come risultato 33 Anche se la via da intraprendere è questa.

Io pensavo a una soluzioni tipo

Codice:
10  "QUAL'È IL PRIMO NUMERO?"
20    Call InputIntero N
40  T=N
50  "QUAL'È IL SECONDO NUMERO?"
70  Call InputIntero N
80  SCRIVI"LA SOMMA DEI DUE NUMERI È", T + N
90  STOP

120 SCRIVI "MI DISPIACE, IL NUMERO DEVE ESSERE UN INTERO.
RIPROVATE"
140  Call InputIntero N
RETURN
Sub InputIntero(n)
IF N = INT (N) THEN 140

End Sub
 
Ultima modifica:

Giggio

Member
Messaggi
43
Punti reazione
9
Punti
8
Giggio non funziona se inserisci 1,7 e 1,6 da come risultato 33 Anche se la via da intraprendere sia questa.

Io pensavo a una soluzioni tipo

Codice:
10  "QUAL'È IL PRIMO NUMERO?"
20    Call InputIntero N
40  T=N
50  "QUAL'È IL SECONDO NUMERO?"
70  Call InputIntero N
80  SCRIVI"LA SOMMA DEI DUE NUMERI È", T + N
90  STOP
110 IF N = INT (N) THEN 140
120 SCRIVI "MI DISPIACE, IL NUMERO DEVE ESSERE UN INTERO.
RIPROVATE"
140  Call InputIntero N
RETURN
Sub InputIntero(n)
End Sub

Credo che tu abbia un problema con le impostazioni internazionali.
Se inserisci un numero decimale non dovrebbe prenderlo ed infatti fa cosi sul mio pc.

prova ad invertire la virgola con il punto in questa istruzione

s = Replace(s,",",".")
 

genios

Advanced Member >GOLD<
Messaggi
808
Punti reazione
11
Punti
18
se ometto l' istruzione Replace con la virgola funziona mentre con il punto da risultati sballati.
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 11 luglio 2020
    Bari
    61
    70
    43
    74
    79
    Cagliari
    35
    90
    63
    30
    10
    Firenze
    59
    60
    70
    24
    11
    Genova
    01
    57
    53
    63
    10
    Milano
    77
    40
    13
    58
    83
    Napoli
    02
    40
    88
    61
    90
    Palermo
    02
    80
    03
    87
    63
    Roma
    27
    14
    76
    66
    72
    Torino
    50
    90
    07
    23
    89
    Venezia
    38
    60
    29
    89
    31
    Nazionale
    02
    26
    63
    77
    48
    Estrazione Simbolotto
    26
    33
    45
    30
    29

Ultimi Messaggi

Alto