Page 1 of 1
Smart BASIC Programming. Lesson 3
Posted: Tue Oct 14, 2014 2:24 pm
by Mr. Kibernetik
Lesson 3 - User functions
One of important smart BASIC features is user functions. User functions can work both as functions and as commands.
In program:
Code: Select all
DEF F (X,Y) = SQR (X^2 + Y^2)
A = 3 ! B = 4
PRINT "For catheti";A;"and";B;"hypotenuse is";F (A,B)
user function F is set to expression SQR (X^2 + Y^2), where X and Y are function parameters. Using function F with different parameters will give corresponding results.
User functions can contain several lines:
Code: Select all
DEF F (X,Y)
X2 = X^2
Y2 = Y^2
F = X2 + Y2
END DEF
And this is an example of using user function as a command:
Code: Select all
'function outputs current time
DEF CUR_TIME
H = CURRENT_HOUR()
M = CURRENT_MINUTE()
S = CURRENT_SECOND()
TEXT CLEAR
PRINT H & ":" & M & ":" & S
END DEF
'infinite loop
LOOP: 'label
CUR_TIME 'function call
PAUSE 1
GOTO LOOP 'going to label
As you see, in this program user function neither has any parameters nor returns any result. It just performs some action here, so there is no need to use brackets in function definition or in function call - anyway they will be empty.
EXERCISE 4
Solve one of previous exercises using user functions.
Re: Smart BASIC Programming. Lesson 3
Posted: Sat Mar 23, 2019 1:06 am
by Chooch912
When I entered the program example below and ran it I get a message indicating the following error- WHY?
"DUPLICATED FUNCTION"
"DEF TIME"
'function outputs current time
DEF TIME
H = CURRENT_HOUR()
M = CURRENT_MINUTE()
S = CURRENT_SECOND()
TEXT CLEAR
PRINT H & ":" & M & ":" & S
END DEF
'infinite loop
LOOP: 'label
TIME 'function call
PAUSE 1
GOTO LOOP 'going to label
Re: Smart BASIC Programming. Lesson 3
Posted: Sat Mar 23, 2019 3:12 am
by Mr. Kibernetik
Chooch912 wrote: ↑Sat Mar 23, 2019 1:06 am
When I entered the program example below and ran it I get a message indicating the following error- WHY?
"DUPLICATED FUNCTION"
"DEF TIME"
'function outputs current time
DEF TIME
H = CURRENT_HOUR()
M = CURRENT_MINUTE()
S = CURRENT_SECOND()
TEXT CLEAR
PRINT H & ":" & M & ":" & S
END DEF
'infinite loop
LOOP: 'label
TIME 'function call
PAUSE 1
GOTO LOOP 'going to label
Because function TIME already exists. Please look at documentation, section "Misc".
Re: Smart BASIC Programming. Lesson 3
Posted: Sat Mar 23, 2019 5:23 pm
by Chooch912
I did read the "Misc" section about TIME, but I was just trying the example you wrote and copied it exactly. That is when I got the error. I appreciate your prompt reply, but how can I get the example to work?
Re: Smart BASIC Programming. Lesson 3
Posted: Sat Mar 23, 2019 6:50 pm
by Mr. Kibernetik
Chooch912 wrote: ↑Sat Mar 23, 2019 5:23 pm
I did read the "Misc" section about TIME, but I was just trying the example you wrote and copied it exactly. That is when I got the error. I appreciate your prompt reply, but how can I get the example to work?
Probably this example was created before built-in function TIME was implemented. Thank you for your note, example is corrected.
Re: Smart BASIC Programming. Lesson 3
Posted: Sat Mar 23, 2019 7:32 pm
by Chooch912
Great! I really am having fun with this program and look forward to spending many of my retirement "hours" learning all I can about all the commands so I can create a unique program for sighting in my airgun rifle scopes!
Thank you for your help.
Re: Smart BASIC Programming. Lesson 3
Posted: Thu Mar 28, 2019 8:25 am
by GeorgeMcGinn
***** POST MOVED TO OTHER TOPICS *****
Re: Smart BASIC Programming. Lesson 3
Posted: Thu Mar 28, 2019 9:04 am
by Mr. Kibernetik
GeorgeMcGinn wrote: ↑Thu Mar 28, 2019 8:25 am
WOW, I had an adhoc program that I wrote that does a similar thing, but it produces text only, and currently I input where each shot goes in order of fire.
Since I reload shotgun shells, rile and pistol cartridges, I also factor in wind speed/direction, altitude, differences in height between gun and target, bullet style and weight, powder type and amount, and primer to name a few. It was one of the first programs I worked on. I use some of your example code and right now I use a weather provider for all weather conditions.
My future would be to attach by WIFI my Olympus OM-1D (right now I can only use this in TechBASIC as it can watch an image live (setting up the camera as a sensor) and the program will be modified to measure the distance from a dot I put on the target in the center of my x-ring. I do not know if in the future you will allow IoT and code that allows sensor input of raw data. I'm not asking for this to be in the first releases, but will the product evolve in that direction?
I have all the algorithms, some are not in the program, others exist in tables I get from manufacturers of reloading components, which, unlike an air rifle, bullet weight and type, powder used and how much, how fast it burns, and even the primer effects the speed which the powder ignights.
I look forward to the new BASIC and I too can spend my free time on what I would like to do.
George
Chooch912 wrote: ↑Sat Mar 23, 2019 7:32 pm
Great! I really am having fun with this program and look forward to spending many of my retirement "hours" learning all I can about all the commands so I can create a unique program for sighting in my airgun rifle scopes!
Thank you for your help.
This is another topic. This topic is about BASIC lesson.
If you want to discuss future BASIC development, then please use dedicated topic instead. I am very interested to know what possibilities are required for IoT and your camera (you meant Olympus OM-D E-M1?).