IALweb Homepage
Forum Home Forum Home > Programmazione > Programmazione > VB
  New Posts New Posts RSS Feed - qbasic
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

 Topic   Topic Hot   Topic New   Topic Locked   Topic Sticky   Topic Hidden

qbasic

 Post Reply Post Reply
Author
Message
maxlopez View Drop Down
Utente Base
Utente Base


Joined: 02/Set/2006
Status: Offline
Points: 56
Post Options Post Options   Thanks (0) Thanks(0)   Quote maxlopez Quote  Post ReplyReply Direct Link To This Post Topic: qbasic
    Posted: 15/Mar/2012 at 19:30
salve, ho bisogno di un aiuto, io ho un programmino di 41kb, lungo circa 20 pagine di a4,che esegue calcoli matematici , questo e scritto in qbasic,  e funziona cosi: io inserisco 8 dati che sono numeri e lui finito di scrivere questi 8 dati  , stampa i risultati in due pagine,  io vorrei sapere se fosse possibile vedere i risultati prima che esso stampasse , cosi da poter modificare uno degli 8 dati  che io ho inserito, tipo un foglio di execel..,
grazie in anticipo massimo
Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1224
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 15/Mar/2012 at 20:42
Se il tuo QBasic si riferisce ad un QuickBasic con le righe numerate per i vari statement
http://it.wikipedia.org/wiki/QBASIC
il passaggio ad un Basic più evoluto (Come Visual Basic) è sempre possibile ma la logica del passato (con i GOTO)
potrebbe richiedere una rivisitazione completa del programma.
Alcune istruzioni hanno una corrispondenza uno ad uno e sono magari anche supportate, altre invece dovranno essere modificate nel nuovo linguaggio. e la logica potrebbe essere diversa (ad esempio GOSUB sostituita da FUNCTION ecc.)
Certo devi avere la conoscenza della problematica e della logica con cui l'applicativo è stato realizzato.
Il consiglio che ti posso dare è quello suddividere il codice in parti ed un poco alla volta effettui il porting nel nuovo linguaggio.
Puoi impiegare anche Excel con il suo Visual Basic e produrre l'output su delle celle invece di agire (come nel passato) con i risultati in stampa.
Tieni present che però qualsiasi calcolo è funzione dei dati di input per cui forse devi rivedere l'intera procedura magari anche per gli aspetti dell'interfaccia utente. 
Buon lavoro.
Willy
Back to Top
andreacarnera View Drop Down
Utente Onorario
Utente Onorario
Avatar
Utente Onorario

Joined: 13/Set/2004
Status: Offline
Points: 1917
Post Options Post Options   Thanks (0) Thanks(0)   Quote andreacarnera Quote  Post ReplyReply Direct Link To This Post Posted: 16/Mar/2012 at 10:28
10 Estrai l'algoritmo di funzionamento
20 Riscrivi tutto con un linguaggio moderno
30 POKE 53280,RND(15); GOTO 10
Andrea Carnera
Db/Application Developer

www.alberghiera.it

Programmatore dal 1987
Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1224
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 16/Mar/2012 at 17:33
Vedo che vi sono anche altri giurrassici che nel passato si sono cimentati con:
Texax TI-59, CPM, Commodore 64, ZX Spectrum, PC XT, M24 e compagnia cantante.
Un saluto a tutti.
Willy
Back to Top
Ricky53 View Drop Down
Amministratore
Amministratore
Avatar
Esperto di Excel e PowerPoint

Joined: 05/Ott/2006
Location: Italy
Status: Offline
Points: 9476
Post Options Post Options   Thanks (0) Thanks(0)   Quote Ricky53 Quote  Post ReplyReply Direct Link To This Post Posted: 16/Mar/2012 at 17:55
ECCOMI:
A) TI-59 anno 1978 forse 1979 ... (fatto programmone con schede (tante) per il dimensionamento di un forno per la cottura dei mattoni di argilla (facoltà di ingegneria di Roma istituto di chimica applicata ... il professore non me lo ricordo forse era Sebastiani impianti chimici I ... che bei tempi e che stupendi ricordi) lavorava per circa due ore con tolti e metti schede e faceva il lavoro di una squadra di 5 ingegneri che con il regolo impiegava una settimana a dimensionarlo

B) Commodore 64 anno 1983 forse 1984 fatto "programmissimo" per la gestione
dei "Condomini" con il floppy da 170 Kb (è stato utilizzato fino al 1995 ed era un portento faceva anche il caffè !!!

Tutto questo non per vantarmi ma trasmettere il mio piacere nei ricordi e l'entusiasmo che provo ancora oggi nel ricordare quanto si faceva allora con pochissimi mezzi e strumenti molto limitati ma per l'epoca all'avanguardia (Commodore 64)

Edited by Ricky53 - 16/Mar/2012 at 17:56
Amministratore

Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione
Back to Top
maxlopez View Drop Down
Utente Base
Utente Base


Joined: 02/Set/2006
Status: Offline
Points: 56
Post Options Post Options   Thanks (0) Thanks(0)   Quote maxlopez Quote  Post ReplyReply Direct Link To This Post Posted: 18/Mar/2012 at 15:47
CLS

INPUT "numero dei mattoni 1 parete    ", H1
PRINT
INPUT "numero mattoni 2 parete     ", H2
PRINT
INPUT "altezza parete    ", H4
PRINT
INPUT "numero di operai          ", H5
PRINT
INPUT "giorni lavorati    ", H6
PRINT
INPUT "larghezza parete          ", H7
PRINT
INPUT "valore di carico             ", K
PRINT
INPUT "somam delle 2 pareti", SPA
PRINT
'INPUT "grafico altezza finestra     ", GAF
'PRINT
INPUT "finestra sinistra          ", HOG$
PRINT
INPUT "finestra destra        ", HOP$
PRINT
INPUT "materiale con cemento         ", MCNO
PRINT
INPUT "Minino cemento         ", MnBL
PRINT
INPUT "Max. calce           ", MxBL


CONST pi = 3.141592654#

H3 = ROUND((H1 / H2), 5)

H8 = ROUND((25 + (5 * (SQR(H2 / H1))) + (90 * (H5 / H6))), 5)

H9 = ROUND(TANDEG(H8), 5)
H10 = ROUND((1.2 * H3), 5)
H11 = ROUND((SINDEG(90 - ATNDEG(H10))), 5)
H12 = ROUND(((H6 - (H4 * H11)) / 2), 5)
H13 = ROUND(((H5 * H11) / H12), 5)
H14 = ROUND((COSDEG(SININVDEG(H13))), 5)
H15 = ROUND((H14 + (H9 * H13)), 5)
H16 = ROUND((H3 * H12), 5)
H17 = ROUND((H15 * H16), 5)
IF H1 > 11 THEN TTF = 1.3
IF H1 < 11 THEN TTF = 1.06
IF H1 = 11 THEN TTF = 1.06
H18 = ROUND(((.02 * (H1)) + TTF), 5)
H19 = ROUND(((H12 / H10) + H17), 5)


'H20 = ROUND(((H5 / H19) *

A20 = (H5 / H19)
A21 = (SQR(1 + (A20 * A20)))
A22 = (A20 / A21)
A23 = (SININVDEG(A22))
A24 = ((H5 - (H17 * A22)) / H12)
A25 = (TANDEG(SININVDEG(A24)))
A26 = (A22 / A25)
A27 = (COSDEG(ATNDEG(A26)))
A28 = (A24 / A27)
A29 = (COSDEG(SININVDEG(A28)))
A30 = ((H15 - A29) / A28)
A31 = (A28 * (H9 - A30))
A32 = (H3 * A31)
A33 = (A24 - (A22 * A32))
A34 = (TANDEG(SININVDEG(A33)))
A35 = (A22 / A34)
A36 = (ATNDEG(A35))
A37 = COSDEG(A36)
A38 = (A33 / A37)
A39 = SININVDEG(A38)
A40 = COSDEG(A39)
A41 = ((H15 + A31 - A40) / A38)
A42 = (ATNDEG(A41))
A43 = (COSDEG(A42))
A44 = (A42 - A39)
A45 = COSDEG(A44)
A46 = TANDEG(A44)
A47 = (A20 / A33)
A48 = (90 - ATNDEG(A47))
A49 = (SINDEG(A48))
A50 = (COSDEG(A48))
A51 = ((H17 + (H12 * A32)) / A37)
A52 = (H12 / A50)
A53 = (A51 + A52)
A54 = ((H12 * A45) / A49)
A55 = ((A43 * A51) / A35)
A56 = (((A41 * A55) - (A46 * A54)) / A53)
A57 = (ATNDEG(A56))
A58 = (COSDEG(A57))
A59 = ((A41 * A56) / A51)
A60 = ((A46 * A56) / A52)
A61 = (A54 * A55)
A62 = ((A54 - A55) / A61)
A63 = (A59 + A60 + A62)
A64 = ((A41 - A46) / A63)
A65 = (A64 / A58)
A66 = (H7 / A65)
IF A65 < H7 THEN B20 = A20 * .9
IF A65 > H7 THEN B20 = A20 * 1.1


B21 = (SQR(1 + (B20 * B20)))
B22 = (B20 / B21)
B23 = SININVDEG(B22)
B24 = ((H5 - (H17 * B22)) / H12)
B25 = TANDEG(SININVDEG(B24))
B26 = (B22 / B25)
B27 = COSDEG(ATNDEG(B26))
B28 = (B24 / B27)
B29 = COSDEG(SININVDEG(B28))
B30 = ((H15 - B29) / B28)
B31 = (B28 * (H9 - B30))
B32 = (H3 * B31)
B33 = (B24 - (B22 * B32))
B34 = (TANDEG(SININVDEG(B33)))
B35 = (B22 / B34)
B36 = (ATNDEG(B35))
B37 = (COSDEG(B36))
B38 = (B33 / B37)
B39 = (SININVDEG(B38))
B40 = (COSDEG(B39))
B41 = ((H15 + B31 - B40) / B38)
B42 = (ATNDEG(B41))
B43 = (COSDEG(B42))
B44 = (B42 - B39)
B45 = (COSDEG(B44))
B46 = TANDEG(B44)
B47 = (B20 / B33)
B48 = (90 - ATNDEG(B47))
B49 = SINDEG(B48)
B50 = COSDEG(B48)
B51 = ((H17 + (H12 * B32)) / B37)
B52 = (H12 / B50)
B53 = (B51 + B52)
B54 = ((H12 * B45) / B49)
B55 = ((B43 * B51) / B35)
B56 = (((B41 * B55) - (B46 * B54)) / B53)
B57 = ATNDEG(B56)
B58 = (COSDEG(B57))
B59 = ((B41 * B56) / B51)
B60 = ((B46 * B56) / B52)
B61 = (B54 * B55)
B62 = ((B54 - B55) / B61)
B63 = (B59 + B60 + B62)
B64 = ((B41 - B46) / B63)
B65 = (B64 / B58)
B66 = (H7 / B65)



H20 = ((B20 - A20) / (B66 - A66)) * (1 - A66) + A20

H21 = (SQR(1 + (H20 * H20)))
H22 = (H20 / H21)
H23 = (SININVDEG(H22))
H24 = ((H5 - (H17 * H22)) / H12)
H25 = TANDEG(SININVDEG(H24))
H26 = (H22 / H25)
H27 = COSDEG(ATNDEG(H26))
H28 = (H24 / H27)
H29 = (COSDEG(SININVDEG(H28)))
H30 = ((H15 - H29) / H28)
H31 = (H28 * (H9 - H30))
H32 = (H3 * H31)
H33 = (H24 - (H22 * H32))
H34 = (TANDEG(SININVDEG(H33)))
H35 = (H22 / H34)
H36 = (ATNDEG(H35))
H37 = (COSDEG(H36))
H38 = (H33 / H37)
H39 = (SININVDEG(H38))
H40 = (COSDEG(H39))
H41 = ((H15 + H31 - H40) / H38)
H42 = (ATNDEG(H41))
H43 = (COSDEG(H42))
H44 = (H42 - H39)
H45 = (COSDEG(H44))
H46 = (TANDEG(H44))
H47 = (H20 / H33)
H48 = (90 - ATNDEG(H47))
H49 = SINDEG(H48)
H50 = (COSDEG(H48))
H51 = ((H17 + (H12 * H32)) / H37)
H52 = (H12 / H50)
H53 = (H51 + H52)
H54 = ((H12 * H45) / H49)
H55 = ((H43 * H51) / H35)
H56 = (((H41 * H55) - (H46 * H54)) / H53)
H57 = (ATNDEG(H56))
H58 = (COSDEG(H57))
H59 = ((H41 * H56) / H51)
H60 = ((H46 * H56) / H52)
H61 = (H54 * H55)
H62 = ((H54 - H55) / H61)
H63 = (H59 + H60 + H62)
H64 = ((H41 - H46) / H63)
H65 = (H64 / H58)
H66 = (H7 / H65)
PRINT
PRINT "Item no.65    ", H65
INPUT "Is 65 equale a h7 , ck$
IF ck$ = "Y" THEN GOTO CARRYON ELSE END
CARRYON:


H67L = (H3 * H50)
H67R = (1 - H3)
H68L = ((H5 / H34) - (H17 * H35))
H68R = (H35 * H37)

poi ci sono pure queste varianti o come si chiamano..
IF H338OB < 12 THEN H341OB = 12
IF H338OB = 12 OR H338OB > 12 AND H338OB < 14 THEN H341OB = 14
IF H338OB = 14 OR H338OB > 14 AND H338OB < 16 THEN H341OB = 16

niente si puo' fare ?
Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1224
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 18/Mar/2012 at 22:06
In base a quanto presentato, il codice allegato può essere convertito in Excel.
Per semplicità si può (ad esempio) inserire nelle celle A21, A22,..., B21, B22, ... , H1. H2 ecc. le relative formule.
Per le variabili K, SPA, GAF si possono prendere a riferimento altre celle denominandole appropriatamente.
Alcune funzioni matematiche devono trovare corrispondenza fra vecchio e nuovo linguaggio.
Ad esempio la funzione di arrotondamento (ROUND = ARROTONDA); la radice quadrata  (SQR = RADQ)
devono essere migrate (ad Excel in base alla versione e lingua impiegata).
Inoltre per le funzioni trigonometriche si devono impiegare le funzioni disponibili in Excel
(corrispondenza TANDEG = TAN ecc.) tenendo presente che in Basic la logica era ad esempio quella sotto riportata:
http://rosettacode.org/wiki/Trigonometric_functions
Capita la logica ed effettuato il porting nel nuovo linguaggio sarà da effettuare la verifica dei calcoli e magari una migliore interfaccia e presentazione dei dati.
Buon lavoro.


Edited by willy55 - 18/Mar/2012 at 22:12
Willy
Back to Top
roberto97 View Drop Down
Moderatore
Moderatore
Avatar
Moderatore

Joined: 05/Dic/2006
Location: Italy
Status: Offline
Points: 1767
Post Options Post Options   Thanks (0) Thanks(0)   Quote roberto97 Quote  Post ReplyReply Direct Link To This Post Posted: 19/Mar/2012 at 00:34
Qual'è la parte di questo thread che riguarda Visual Basic ? 
MaxLopez se la soluzione che cerchi è migrare in Excel allora sposto la richiesta in quella sezione ... 
Altrimenti chiarisci la cosa ... vuoi apportare delle modifiche al sorgente qbasic ... vuoi migrarlo in Visual Basic ... 
In questo caso potrebbe anche essere "compatibile" con questa sezione ... non essendocene una specifica ...
Ma di base ... la tua richiesta è un'anteprima di stampa in qbasic ?
Roberto
Back to Top
maxlopez View Drop Down
Utente Base
Utente Base


Joined: 02/Set/2006
Status: Offline
Points: 56
Post Options Post Options   Thanks (0) Thanks(0)   Quote maxlopez Quote  Post ReplyReply Direct Link To This Post Posted: 19/Mar/2012 at 19:40
si si, una anteprimain q basic  sarebbe meglio, è possibile farlo?
Back to Top
willy55 View Drop Down
Veterano
Veterano
Avatar
Esperto di Access

Joined: 03/Ago/2011
Location: Italy
Status: Offline
Points: 1224
Post Options Post Options   Thanks (0) Thanks(0)   Quote willy55 Quote  Post ReplyReply Direct Link To This Post Posted: 20/Mar/2012 at 19:20

Credo che il codice da te allegato non sia quello descritto nel primo post (non ha 8 valori in input ma ben 14) e non ha la lunghezza indicata. Inoltre non vi è nessuna istruzione per la stampante (LPRINT) ne per quanto riguarda l'output su file (WRITE ecc.) presentato magari quale risultato.
Evidenzio, inoltre, che il codice allegato ha un errore nella seguente riga:

Originally posted by maxlopez maxlopez wrote:


INPUT "Is 65 equale a h7 , ck$

che dovrebbe essere scritta (con doppi apici finali) come:


INPUT "Is 65 equale a h7" , ck$

Ritengo che il codice sia parziale o non confacente quanto prospettato, rivedilo nella sua complessità.

In ogni caso, per quanto riguarda le istruzioni (non presenti) della stampa se vuoi convertire l'output, dalla printer al video,  (quanto viene prodotto dal calcolo) deve essere inviato allo schermo per cui modificare l'istruzione LPRINT in PRINT

Ritengo comunque che la scelta di impiegare il QBasic sia una soluzione non confacente con le esigenze che oggi sono disponibili (per le intefaccie grafiche e gli strumenti di facility) per cui io suggerisco di prendere in considerazione una soluzione alternativa. Come detto nel post precedente si può affrontare la problematica in Excel magari con integrazione di Visual Basic. Ciò permette di avere i dati sottomano (anche le elaborazioni intermedie) ed è possibile istantaneamente modificare un parametro ed ottenere come variano i risultati finali in modo da ottimizzare i parametri di input.

Valuta tu comunque la scelta ottimale in base alle esigenze e conoscenze.

Bye
Willy
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.11
Copyright ©2001-2012 Web Wiz Ltd.

This page was generated in 0,234 seconds.