Python Forum
Heating program to translate from Basic to Python
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Heating program to translate from Basic to Python
#1
I have written a few programs in Python but have not done much program translation.
My friend asked me to translate his heating program from Basic to Python.
Is there an easy way to do this? I haven't tried anything yet?

Tha Basic code is below:

1:PRINT"HLOSS85.1":PRINT"":GOTO 3

3:"N"INPUT"INPUT NOTES> ";B$(0):PRINT B$(0):GOTO 3

4:PRINT "":IF L>0 END

5:GOSUB 9:GOTO 104

9:PRINT"------------------------":RETURN

10:"=" PRINT=LPRINT:PRINT"":END

20"L"PRINT=PRINT:PAUSE "PO":END

50:"S" CLEAR:USING

60:DIM B$(0)*24

70:DIM S(6),W(6),G(6),V(0),Z(0),P(0),Q(0),O(0),K(0),N(0):N=1:A(27)=25:R=25:T=600

80:M=21:J=-4:U=5.6:A(30)=55:A(32)=3:GOSUB 9:GOTO 1

104:INPUT"INPUT OUTSIDE TEMP C ";J

105:PRINT"OUTSIDE TEMP ";J;" C

106:INPUT"INPUT ROOM TEMP C ";M

107:C=M-J

108:PRINT"PRINT TEMP ";M;" C":PRINT"TD = ";C;" C

114: GOSUB 9

115:"C"B$(0)="":INPUT"INPUT ROOM NAME ";B$(0)

116:IF B$(0)="" GOTO 115

117:IF B$(0)="*" GOTO 320

120:PRINT B$(0)

125:Y$="N":INPUT"SAME AS LAST ROOM? ";Y$;:IF Y$="Y" GOTO 252

130:S(5)=0:P=0:Q=0:B=0:O=0:K=0k:V=0:O(0)=0:K(0)=0:A=0:G(5)=0:W=0

140:USING:L=0:W=0:H=0:INPUT"INPUT ROOM LENGTH M ";L,"INPUT WIDTH M ";W,"INPUT HEIGHT M ";H

165:Z=LW:V=ZH:IF V=0 GOTO 140

175:PRINT"L=";L;"M W=";W;"M H=";H;"M

176:PRINT"AREA ";Z;" M2

177:PRINT"VOLUME ";V; M3

180:S=1

190:S(S)=LH:GOSUB 500

200:S(S)=WH:GOSUB 500

210:S(S)=S(1):GOSUB 500

220:S(S)=S(2):GOSUB 500

230:S(S)=LW:GOSUB 500

240:S(S)=S(5):GOSUB 500

245:USING:D=M-J:INPUT"INPUT AC/HR ";N;"INPUT TD C ";D

246:PRINT N;" A/C @ ";D;" C TD":B=.33VND

247:INPUT"INPUT SAFETY % ";A(33)

248:IF A(33)>100 GOTO 247

249:A(36)=INT B+INT P+INT Q

250:A(34)=INT((A(33)/100)*A(36))

251:PRINT"SAFETY ";A(33);"% ";INT A(34);"W

252:K=INT A(34)+INT A(36)

253:Y$="":INPUT"IS INFO CORRECT ? ";Y$

254:IF Y$="N" GOTO 115

255:IF Y$<>"Y" GOTO 253

256:Z(0)=S(5)+Z(0):P(0)=INT P+P(0):Q(0)=INT Q+Q(0):V(0)=INT B+V(0);O(0)=O+O(0)

257:N(0)=V+N(0):K(0)+K+K(0):A(35)=A(34)+A(35)

258:PRINT"- ROOM HEAT LOSS -

260:PRINT"FABRIC ";INT Q;"W":PRINT"WINDOW ";INT P;"W":PRINT" VENT ";INT B;"W

261:PRINT"SAFETY ";INT A(34);"W

262:PRINT"TOTAL ROOM LOSS ";K;"W

263:IF V=0 GOTO 265

264:PRINT INT ((K/V)+.5);" W/M3

265:GOSUB 9

266:"H"USING:INPUT"INPUT RADIATOR HT MM ";T

267:PRINT"RAD HEIGHT ";T;"MM

268:PRINT"SINGLE ";INT(544K/T);"MM LENGTH

269:PRINT"DOUBLE ";INT(362/T);"MM

270:GOSUB 9

310:GOTO 115

320:PRINT"

330:"G"USING:PRINT:PRINT"-------- TOTALS --------

350:PRINT"FLOOR AREA ";Z(0);" M2

355:PRINT"VOLUME ";N(0);" M3

410:PRINT"FABRIC LOSS ";INT Q(0);"W

420:PRINT"WINDOW LOSS ";INT P(0);"W

430:PRINT"VENT LOSS ";INT V(0);"W

440:PRINT"SAFETY LOSS ";INT A(35);"W

457:GOSUB 9

460;K=INT Q(0)+INT P(0)+INT V(0)+ INT A(35):PRINT "TOTAL LOSS ";INT K;"W

465:PRINT"AV.HEAT LOSS ";INT((K/M-J))+.5);"W/C

467:IF N(0)=0 GOTO 480

468:PRINT" ";INT((K/N(0)))+.5);"W/M3

470:PRINT USING"###.##";"G VALUE ";(K/(M-J))/N(0);" W/M3/C

480:USING:GOSUB 9

484:GOTO 900

489:A(31)=K+A(29)*1E3

490:INPUT"INPUT BOILER MARGIN % ";A(27)

491:A(28)=A(31)*A(27)/1E2

492:PRINT"BOILER MARGIN":PRINT A(27);"% = ";INT A(28);"W

493:GOSUB 9

494:PRINT" BOILER SIZE

495:PRINT USING"#######.#";" ";(A(31)+A(28))/1E3;"KW

496:USING:GOSUB 9

497:PRINT "":PRINT"

498:END

500:IF S<5 PRINT"WALL ";S

502:IF S=5 PRINT"CEILING/ROOF

504:IF S=6 PRINT"FLOOR

505:X=0:G(S)=0:C=M-J

507:INPUT"INPUT FABRIC U VALUE ";X:GOTO 509

508:GOTO 515

509:INPUT"INPUT TD C";C

510:GOSUB 700

512:IF X>0 GOTO 530

515:PRINT"NO LOSS

530:S=S+1:RETURN

700:IF S<6 INPUT"INPUT GLASS AREA M2 ";G(S)

702:IF G(S)>S(S) GOTO 700

705:W(S)=S(S)-G(S):IF W(S)=S(S) GOTO 710

707:IF S<5 LET A=A+S(S)

710:F=W(S)CX:PRINT W(S);"X";X;"X";C;"=";F;"W

712:Q=Q+F

715:IF S(S)=W(S) RETURN

717:INPUT"INPUT GLASS U VALUE ";U

800:IF S=5 PRINT"ROOFLIGHT":GOTO 805

802:PRINT"WINDOW ";S

805:G=G(S)UC

810:PRINT G(S);"X";U;"X";C;"=";G;"W

815:P=P+G:O=O+G(S)

820:K(0)=G(5)

830:RETURN

900:"D"USING:PRINT"D.H.WATER":INPUT"INPUT NO.OF PEOPLE ";I

905:IF I>0 PRINT 920

910:A(29)=0:PRINT"NONE":GOTO 489

920:INPUT"INPUT LITRE/PERSON ";R

930:PRINT I;"PEOPLE X ";R;"LITRE

940:INPUT"INPUT WARMUP - HRS ";A(32)

942:INPUT"INPUT WATER TD C ";A(30)

945:A(29)=4.2A(A30)IR/3600A(32)

950:PRINT A(32);"HR WARMUP @ ";A(30);"C TD

955:PRINT USING"#####.#";HOT WATER CYL";A(29);"KW

970:USING:GOTO 489

975:"X"USING:INPUT"INPUT FLOOR AREA M2";Z(0):PRINT Z(0)

976:INPUT"INPUT VOLUME M3 ";N(0):PRINT N(0)

977:INPUT"INPUT FABRIC W ";Q(0):PRINT Q(0)

978:INPUT"INPUT WINDOW W ";P(0):PRINT P(0)

979:INPUT"INPUT VENT W "V(0):PRINT V(0)

980:INPUT"INPUT SAFETY W ";A(35):PRINT A(35)

995:GOTO "G"

997:"Z"INPUT"INPUT W";K:PRINT K;"W

998:GOTO "H"
Reply
#2
I would start with the GOSUB statements which will become function calls in python. Here you have GOSUB 9, GOSUB 500, GOSUB 700. Looking at the code and the RETURN statements, you see that you can make three functions, one with line 9 alone, and the two others with lines 500-530 and 700-830. Then you need to write logical loops to eliminate the GOTO statements. The rest should be easy.
Reply
#3
(Apr-25-2019, 09:42 AM)Gribouillis Wrote: I would start with the GOSUB statements which will become function calls in python. Here you have GOSUB 9, GOSUB 500, GOSUB 700. Looking at the code and the RETURN statements, you see that you can make three functions, one with line 9 alone, and the two others with lines 500-530 and 700-830. Then you need to write logical loops to eliminate the GOTO statements. The rest should be easy.

Thankyou; I'm not asking you to rewrite the code for me, but could you give me a clue (as well as the ones you have given above)? I have a feeling I may get stuck!
Reply
#4
(Apr-25-2019, 10:02 AM)tommy2k19 Wrote: I have a feeling I may get stuck!
Start coding and if/when you get stuck - ask question here
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#5
(Apr-25-2019, 10:04 AM)buran Wrote:
(Apr-25-2019, 10:02 AM)tommy2k19 Wrote: I have a feeling I may get stuck!
Start coding and if/when you get stuck - ask question here

Thankyou - I guess that's the best way to learn!
Reply
#6
(Apr-25-2019, 10:02 AM)tommy2k19 Wrote:
(Apr-25-2019, 09:42 AM)Gribouillis Wrote: I would start with the GOSUB statements which will become function calls in python. Here you have GOSUB 9, GOSUB 500, GOSUB 700. Looking at the code and the RETURN statements, you see that you can make three functions, one with line 9 alone, and the two others with lines 500-530 and 700-830. Then you need to write logical loops to eliminate the GOTO statements. The rest should be easy.

Thankyou; I'm not asking you to rewrite the code for me, but could you give me a clue (as well as the ones you have given above)? I have a feeling I may get stuck!

I have got stuck before I even start coding!
I think, as I have just started to learn Python, this may be too much for me!
However, I am not the kind of person that gives up.

I found this as well:

https://www.element14.com/community/thre...hread=true

(Apr-25-2019, 10:04 AM)buran Wrote:
(Apr-25-2019, 10:02 AM)tommy2k19 Wrote: I have a feeling I may get stuck!
Start coding and if/when you get stuck - ask question here

Is it possible for you to start me off?
Reply
#7
(Apr-25-2019, 09:42 AM)Gribouillis Wrote: I would start with the GOSUB statements which will become function calls in python. Here you have GOSUB 9, GOSUB 500, GOSUB 700. Looking at the code and the RETURN statements, you see that you can make three functions, one with line 9 alone, and the two others with lines 500-530 and 700-830. Then you need to write logical loops to eliminate the GOTO statements. The rest should be easy.

I am really having trouble here. Could you give me a clue with the first function please?
Reply
#8
This is the code I have got so far (which doesn't look right somehow!):

print "HL0SS85.1":print"":goto(6)
def goto(5):
	global 6
	line = lineNumber
	lineNumber = 6
Reply
#9
Anyone?
Reply
#10
Don't try to translate it verbatim. You have to understand the algorithm, the program/logic flow and implement it in python.
As to your code - it's difficult to say something different in addition to what you already said yourself - it doesn't look right at all.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Basic Coding Question: Exit Program Command? RockBlok 3 551 Nov-19-2023, 06:31 PM
Last Post: deanhystad
  googletrans library to translate text language for using data frame is not running gcozba2023 0 1,215 Mar-06-2023, 09:50 AM
Last Post: gcozba2023
  BeautifulSoup - I can't translate html tags that contain <a href=..</a> OR <em></em> Melcu54 10 1,619 Oct-27-2022, 08:58 AM
Last Post: wavic
  trying to understand a string literal in a basic server program CompleteNewb 4 2,100 Nov-14-2021, 05:33 AM
Last Post: deanhystad
  How to Translate a python code written in Mac-OS to Windows? alexanderDennisEnviro500 2 2,682 Jul-31-2021, 08:36 AM
Last Post: Gribouillis
  Delimiters - How to skip some html tags from being translate Melcu54 0 1,641 May-26-2021, 06:21 AM
Last Post: Melcu54
  PLEASE HELP! Basic Python Program joeroffey 5 2,418 Apr-10-2021, 02:59 PM
Last Post: jefsummers
  Basic python Natters10 3 3,077 Nov-29-2020, 07:04 AM
Last Post: Love2code
  Translate to noob a Name Eroor message bako 2 2,218 Mar-30-2020, 05:58 PM
Last Post: bako
  Translate this line of code please keystone76 2 2,621 Jan-31-2020, 11:15 PM
Last Post: keystone76

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020