September 26, 2020, 06:44:05 am

## News:

IonicWind Snippit Manager 2.xx Released!  Install it on a memory stick and take it with you!  With or without IWBasic!

## Temperature conversions

Started by Egil, June 02, 2018, 02:25:24 am

0 Members and 1 Guest are viewing this topic.

#### Egil

##### June 02, 2018, 02:25:24 am
Yesterday two of my young "assistants" came visiting. And since we have a heat wave here in Norway now, we discussed how to make temerature conversion routines using CB.
I challenged them to do their own outines in a way so that the code was easy to use in other projects.

Graham posted a project many years ago: http://www.ionicwind.com/forums/index.php?topic=5113.msg38734#msg38734, where he stressed the importance of defining the variables  correctly, so I was curious to see what the young boys came up with.

Their code surprised me. They use string variables and output formatting to present the results. And the output appears to be correct, without rounding errors!

Have fun!
Egil

Code Select
`'------------------------------------------------------------------------------' temp_conv.cba' Temperature conversions DEMO (Celcius to Farenheit and Farenheit to Celcius)'------------------------------------------------------------------------------DECLARE C2F(tc:string)DECLARE F2C(tf:string)DEF celcius,farenheit:stringOPENCONSOLEINPUT "Degrees Celcius: ",celciusprintprintfarenheit = C2F(celcius)Print using("####.#",val(celcius)) + "C =",PRINT using("####.#",val(farenheit)) + "F"PRINTcelcius = F2C(farenheit)Print using("####.#",val(farenheit)) + "F =",PRINT using("####.#",val(celcius)) + "C"PRINTPRINTprint"Press ANY KEY to end"DO:UNTIL INKEY\$<>""CLOSECONSOLEENDSUB C2F(tc:string)'------------------------------------------------------------------------------'Celcius to Farenheit: T(Â°Farenheit) = T(Â°Celcius) Ã-- 9/5 + 32RETURN str\$(((val(tc) * 9)/5) + 32)SUB F2C(tf:string)'------------------------------------------------------------------------------'Farenheit to Celcius: T(Â°Celcius) = (T(Â°Farenheit) - 32) Ã-- 5/9RETURN str\$((val(tf)-32) * (5/9))`

Support Amateur Radio  -  Have a ham  for dinner!

#### Andy

##### June 02, 2018, 04:42:11 am #1
Egil,

Your assistants did very well, they deserve a pat on the back!.

Here is the IWB version of what they did:

Code Select
`'------------------------------------------------------------------------------' temp_conv.iwb' Temperature conversions DEMO (Celcius to Farenheit and Farenheit to Celcius)'------------------------------------------------------------------------------'DECLARE C2F(tc:string)'DECLARE F2C(tf:string)DEF celcius,farenheit:stringOPENCONSOLEINPUT "Degrees Celcius: ",celciusprintprintfarenheit = C2F(celcius)Print using("####.#",val(celcius)) + "C =",PRINT using("####.#",val(farenheit)) + "F"PRINTcelcius = F2C(farenheit)Print using("####.#",val(farenheit)) + "F =",PRINT using("####.#",val(celcius)) + "C"PRINTPRINTprint"Press ANY KEY to end"DO:UNTIL INKEY\$<>""CLOSECONSOLEENDSUB C2F(tc:string),string '------------------------------------------------------------------------------'Celcius to Farenheit: T(Â°Farenheit) = T(Â°Celcius) Ã-- 9/5 + 32RETURN str\$(((val(tc) * 9)/5) + 32)endsubSUB F2C(tf:string),string'------------------------------------------------------------------------------'Farenheit to Celcius: T(Â°Celcius) = (T(Â°Farenheit) - 32) Ã-- 5/9RETURN str\$((val(tf)-32) * (5/9))endsub`

Andy.
Day after day, day after day, we struck nor breath nor motion, as idle as a painted ship upon a painted ocean.

#### Egil

##### June 02, 2018, 05:26:16 am #2
QuoteYour assistants did very well, they deserve a pat on the back!

I agree Andy!
Pity they are not allowed to use CB at school. But they have seen how I use CB for testing out new ideas and then convert the code to IWB, so they use the same way to develop algorithms in CB and then convert the code to Python, which is the compulsary coding language for use in norwegian schools.
BTW: Nice to see that you have taken up the habit yourself....

What puzles me now is why this "string" method works so good when comparing it to what I would have done myself (defined the variables as float or double).

Egil

Support Amateur Radio  -  Have a ham  for dinner!

#### Egil

##### June 02, 2018, 10:35:55 am #3 Last Edit: June 02, 2018, 01:39:26 pm by Egil
Andy,

Finally came around to test your IWB version of the code. The IWB program gives wrong answers when calculating from F to C.

Replacing the F2C sub with the code below, rectifies the problem.

Code Select
`SUB F2C(tf:string),string'------------------------------------------------------------------------------'Farenheit to Celcius: T(Â°Celcius) = (T(Â°Farenheit) - 32) Ã-- 5/9RETURN str\$((val(tf) - 32) * 5/9)endsub`

CB is more "forgiving" when it comes to correct syntax compared to IWB. This corected code works equally well in both languages.

Egil
Support Amateur Radio  -  Have a ham  for dinner!

#### Andy

##### June 03, 2018, 04:01:39 am #4
Egil,

Yes I probably would have used something like double and float too, I can only guess (and could be mistaken) but maybe the USING command is really IWB's version of something like C's SPRINTF command?

As for the F2C sub routine, strange, I didn't take any note of those results, I was just looking at the C to F figures, so well spotted!

Andy.
Day after day, day after day, we struck nor breath nor motion, as idle as a painted ship upon a painted ocean.