|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Hrvoje Mojster
Pridružen/-a: Ned Apr 2005 13:50 Prispevkov: 48
|
Objavljeno: Čet Jun 16, 2005 2:02 pm Naslov sporočila: bascom procedure |
|
|
Pozdrav, vec duze vrijeme programiram u delphi-u i sad kad vidim bascom cini mi se nefunkcionalnim. Problem je u tome sto neznam kako bih pozvao potprogram (subrutine), u helpu pise ovako, ali to nije tocno sto meni treba:
Dim A As Byte , Bb As Byte
Declare Sub Test(bb As Byte)
A = 65
Call Test(a) 'call test with parameter A
Test A 'alternative call
End
Sub Test(bb As Byte) 'use the same variable as the declared one
Lcd Bb 'put it on the LCD
Lowerline
Lcd Bcd(bb)
End Sub
.. ja bih to sto trebam u delphi-u napisao ovako:
.
.
.
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure program(a,b,c: integer); // naprimjer neka je ovo neka procedura koja ce paliti i gastiti dc motore..
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.program(a,b,c:integer);
begin
... // neki program
end;
.. ja ovu proceduru mogu pozvati u bilo kojem momentu!
// sta meni zapravo nije jasno kod basoma je kako da iz neke druge procedure, moze biti i do-loop petlja skocim na subrutine (nesto sa declare sub.. kako sam procitao i vratim se nazad kad je obavljeno
end.
primjer sta meni treba:
Call Motor_p(10 , 10 , 0)
Sub Motor_p(broj_koraka As Integer , Brzina As Integer , Lijevo As Bit)
.
.
.
end sub |
|
Nazaj na vrh |
|
|
red_mamba Profesionalec
Pridružen/-a: Tor Jan 2004 16:44 Prispevkov: 181 Kraj: Mozirje
|
Objavljeno: Čet Jun 16, 2005 2:34 pm Naslov sporočila: |
|
|
na začetku moraš deklarirat vsako rutino
declare Sub Motor_p(broj_koraka As Integer , Brzina As Integer , Lijevo As Bit)
vmes jo kličeš z
Call Motor_p(10 , 10 , 0)
nekje v kodi imaš pa še program definiran za rutino
Sub Motor_p(broj_koraka As Integer , Brzina As Integer , Lijevo As Bit)
..
..koda
..
end sub _________________ Bad things happen to good people all the time for no reason!
Štrom: http://www.red-mamba.com & http://www.red-mamba.biz
Prosti čas: http://www.maddogs-clan.org |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Čet Jun 16, 2005 6:15 pm Naslov sporočila: bascom |
|
|
Hrvoje!
V help-u Bascom-a poglej ukaze "GOSUB , GOTO"
Vlado |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Pet Jun 17, 2005 7:11 am Naslov sporočila: Bascom je basic in ne nek višji programski jezik. |
|
|
Bascom je basic in ne nek višji programski jezik.
Pozna sicer gosub in call ukaze in podobno, a ne naredi tistega, kar ti ukazi narede v višjem programskem jeziku - ne narede substitucijo spremneljivk.
Če imaš recimo podprogram s tremi spremenljivkami
rutina ( x,y,z)
je ne moreš na različnih mestih klicati recimo
call rutina (a,b,c)
in na nekem drugem mestu v programu uporabiti isto rutino z
call rutina (d,e,f)
kar v višjih jezikih seveda gre.
vilko _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
bsuhel Profesionalec
Pridružen/-a: Sre Jun 2004 9:49 Prispevkov: 68 Kraj: Laško
|
Objavljeno: Pon Jan 16, 2006 9:34 pm Naslov sporočila: Re: Tule se pa ne strinjam s tabo |
|
|
Omenjena substitucija v Bascomu seveda tudi deluje.
vilko je napisal/a: | Bascom je basic in ne nek višji programski jezik.
Pozna sicer gosub in call ukaze in podobno, a ne naredi tistega, kar ti ukazi narede v višjem programskem jeziku - ne narede substitucijo spremneljivk.
Če imaš recimo podprogram s tremi spremenljivkami
rutina ( x,y,z)
je ne moreš na različnih mestih klicati recimo
call rutina (a,b,c)
in na nekem drugem mestu v programu uporabiti isto rutino z
call rutina (d,e,f)
kar v višjih jezikih seveda gre.
vilko |
|
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Tor Jan 17, 2006 1:30 pm Naslov sporočila: Recimo, da imav prav vsak pol! |
|
|
Recimo, da imav prav vsak pol!
V dokaz sem na mojem BASCOM8051 (prav lahko, da je AVR boljši) naredil programček.
Deklariral sem sremenljivke in funkcijo:
Koda: | Dim Aa As Byte
Dim Ab As Byte
Dim Ac As Byte
Dim Xa As Byte
Dim Xb As Byte
Dim Xc As Byte
Declare Sub Sestej(xa As Byte , Xb As Byte , Xc As Byte ) |
Funkcija je preprosta, c = a + b:
Koda: | Sub Sestej(xa As Byte , Xb As Byte , Xc As Byte )
Xc = Xa + Xb
End Sub |
Spremenljivkam sem dal vrednosti in jih izpisal pred in po klicu funkcije:
Koda: | Aa = 21
Ab = 22
Ac = 23
Xa = 31
Xb = 32
Xc = 33
Print "Aji " ; Aa ; " " ; Ab ; " " ; Ac
Print "xI " ; Xa ; " " ; Xb ; " " ; Xc
Print
Call Sestej(aa , Ab , Ac)
Print "Aji " ; Aa ; " " ; Ab ; " " ; Ac
Print "xI " ; Xa ; " " ; Xb ; " " ; Xc
Print
End |
Prevedel in pognal simulator.
Na njem sem dobil kar je videti v prilogi snap.jpg
( - zaradi posebnosti tega foruma je priloga preimenovana v snap.pdf, kajti samo .pdf priponke so dovoljene na tem forumu. Ko si jo pretocite k sebi seveda preimenujte snap.pdf nazaj v snap.jpg in si jo potem oglejte.)
No, pa da ne bo težav bom kar prepisal, kar sem dobil:
Citiram: | Aji 21 22 23
Xi 31 32 33 (to je pred klicem funkcije) in potem
Aj 21 22 23 (torej nobene spremembe !!)
Xi 21 22 43 |
kar pomeni, da so sicer xi prevzeli vrednosti od glavnega programa,
niso jo pa na koncu programa dali nazaj glavnemu progamu.
Tretju Aj bi moral biti 43! _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|