<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=12&amp;t=5547&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-01-16T08:24:50+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=5547&amp;mode</id>
<entry>
<author><name><![CDATA[tomson5]]></name></author>
<updated>2014-01-16T08:24:50+01:00</updated>
<published>2014-01-16T08:24:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65196#p65196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65196#p65196"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65196#p65196"><![CDATA[
@jacekk232 świetny przykład. Wczoraj musiałem już odpuścić ale dzisiaj jak wrócę z arbajtu to sprawdzę twój pomysł. Już na oko widzę że jest Ok. Dzięki wielkie za pomoc.<br /><br /><br />Edit:<br />Sprawdziłem twój pomysł i wyszło mi coś takiego:<br /><br />[syntax=basic4gl]Sub Rozjasnic(byref X As Byte)<br />If Licznik2 &lt; 100 Then<br />   Incr Licznik2<br />    Incr X<br />     Przerwa<br />If Licznik2 = 100 Then<br />  Licznik2 = 0<br />    Exit Sub<br />End If<br />End if<br />End Sub[/syntax]<br /><br />(Pwm Jest zwiększane w stu krokach. Zmieniłem wcześniej było w dwudziestu)<br />Pojawiła się wymyślona przeze mnie procedura Przerwa<br />Zastąpiłem w ten sposób znienawidzone przez wszystkich polecenie Wait<br /><br />Procedura Przerwa wygląda tak:<br />[syntax=basic4gl]Sub Przerwa(byval X As Byte)<br />Licznik3 = 0<br />Do<br />  if Licznik3 = 100 Then Exit Do<br />Loop<br /><br />End Sub[/syntax] <br /><br /><br />W przerwaniu od Timera jest zwiększana zmienna Licznik3<br />Procek kręci się w pętli do chwili gdy warunek if Licznik3 = 100 zostanie spełniony<br /><br />Teraz myślę jakby tu można regulować sobie tą &quot;przerwę&quot;<br />Pisząc polecenie w ten sposób:<br />Przerwa 100 lub coś w tym stylu.<br /><br /><br />Edit2:<br /><br />Wymyśliłem Przerwę w ten sposób:<br /><br />[syntax=basic4gl],ble ble konfiguracja<br />Declare Sub Przerwa(byval X As Byte)<br />Dim P300 as integer<br />P300 = 300<br /><br />'Program główny<br />do<br />Rozjasnic A1<br />Przerwa P300<br />Zciemnic A1<br />Przerwa P300<br /><br />loop<br /><br />'Procedura<br />Sub Przerwa(byval X As Byte)<br />Licznik3 = 0<br />Do<br />   If Licznik3 = P300 Then Exit Do<br />Loop<br /><br />End Sub[/syntax]<br /><br />Ktoś ma inny pomysł na tą Przerwę ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2382">tomson5</a> — 16 sty 2014, o 08:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-15T22:36:33+01:00</updated>
<published>2014-01-15T22:36:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65165#p65165</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65165#p65165"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65165#p65165"><![CDATA[
Ja wiem, że ta procedura z argumentem jest trochę na wyrost i to samo by się osiągnęło używając zmiennej Pwm wewnątrz procedury. Ja to wiem. Ale chciałem pokazać koledze <strong>tomson5</strong>, że problemem w jego przykładzie była pętla for.<br /><br />I chciałem tez pokazać jak to jest z tym przekazywaniem parametrów. Bo jeśli przekażemy zmienną do procedury przez wartość to już ta zmiana nie będzie widoczna na zewnątrz.<br />[syntax=basic4gl]Do<br /><br />   Call Rozjasnic(pwm)                          'Z procedury Rozjasnic wartość zmiennej X ma być wpisywana do zmiennej Pwm<br /><br />   Locate 1 , 1<br />   Lcd &quot;Pwm= &quot; ; Pwm ; &quot;   &quot;<br /><br />Loop<br />End<br /><br />'Procedura zwiększająca wartość zmiennej X w 20 krokach<br />Sub Rozjasnic(byval X As Byte)<br />   If Licznik &lt; 20 Then<br />    Incr Licznik<br />    X = X + 5<br />    Waitms 100<br />   End If<br />End Sub[/syntax]<br /><br />Oczywiście osoba pisząca w Bascomie zapyta zaraz po co jej takie dziwactwa. Skoro bez tego też działa. Ale kolega <strong>tomson5</strong> wspomniał, że przymierza się do zakupu Bluebooka i nauki C. A tam takie rzeczy to normalność. Więc dlaczego by nie spróbować zrozumieć tego jak to jest z tymi argumentami przekazywanymi do procedur i funkcji, siedząc jeszcze w Bascomie. Tym bardziej, że przekazywanie argumentów przez referencje jest podobne do przekazywania argumentów poprzez wskaźniki w C. Jak kolega <strong>tomson5</strong> teraz to zrozumie to później będzie mu łatwiej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 15 sty 2014, o 22:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-01-15T22:07:40+01:00</updated>
<published>2014-01-15T22:07:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65159#p65159</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65159#p65159"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65159#p65159"><![CDATA[
Akurat to jest normalne. Nie używasz pętli for...next. W Twoim przypadku nie potrzeba nawet argumentu w nawiasie. To jest typowe liniowe zachowanie bascoma. Po każdym wykonaniu podprogramu wracasz do pętli głównej więc nie ma w tym nic dziwnego że masz wynik działania na bieżąco.<br /><br />Wysłane z mojego LG-P760 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 15 sty 2014, o 22:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-15T21:53:42+01:00</updated>
<published>2014-01-15T21:53:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65157#p65157</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65157#p65157"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65157#p65157"><![CDATA[
Tak na szybko napisałem taki przykładzik<br />[syntax=basic4gl]$regfile = &quot;m32def.dat&quot;                         ' specify the used micro<br />$crystal = 11059200<br /><br />Config Lcd = 16 * 2<br />Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.4 , Db6 = Porta.5 , Db7 = Porta.6 , E = Porta.2 , Rs = Porta.0<br /><br />Ddra.7 = 1 : Porta.7 = 1                        'podświetlanie LCD<br /><br />Cls<br />Declare Sub Rozjasnic(x As Byte)<br /><br />Dim Pwm As Byte<br />Dim Licznik As Byte<br /><br />Lcd &quot;Start...&quot;<br />Wait 1<br />Cls<br /><br />Do<br /><br />   Call Rozjasnic(pwm)                          'Z procedury Rozjasnic wartość zmiennej X ma być wpisywana do zmiennej Pwm<br /><br />   Locate 1 , 1<br />   Lcd &quot;Pwm= &quot; ; Pwm ; &quot;   &quot;<br /><br />Loop<br />End<br /><br />'Procedura zwiększająca wartość zmiennej X w 20 krokach<br />Sub Rozjasnic(x As Byte)<br />   If Licznik &lt; 20 Then<br />      Incr Licznik<br />      X = X + 5<br />      Waitms 100<br />   End If<br />End Sub[/syntax]<br />W procedurze Rozjasnic 20 razy wartość zmiennej X jest zwiększana o 5. A efekt na bieżąco jest widoczny w pętli głównej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 15 sty 2014, o 21:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-01-15T21:39:22+01:00</updated>
<published>2014-01-15T21:39:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65151#p65151</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65151#p65151"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65151#p65151"><![CDATA[
Bo pętla for...next do takich rzeczy nie służy. Nie podam przykładu do jakich rzeczy służy więc nie pytaj.<br /><br />Wysłane z mojego LG-P760 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 15 sty 2014, o 21:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-15T21:10:52+01:00</updated>
<published>2014-01-15T21:10:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65145#p65145</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65145#p65145"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65145#p65145"><![CDATA[
<div class="quotetitle">tomson5 napisał(a):</div><div class="quotecontent"><br />Myślałem że po takiej deklaracji X będzie Jakby tożsame ze zmienną PWM.<br /></div><br />No i tak jest. Jeśli się przekazuje argument przez referencje to zmienna X i zmienna Pwm to to samo.<br /><br /><div class="quotetitle">tomson5 napisał(a):</div><div class="quotecontent"><br />Wychodzi jednak na to że zanim pętla For Next nie skończy się nic z procedury nie wychodzi dopiero po skończeniu pętli<br /></div><br />Ta wartość jest na bieżąco zmieniana ale żeby tą zmianę zobaczyć w pętli głównej to program musi być w pętli głównej. A trafi do niej dopiero wtedy jak pętla for się skończy. Gdybyś tą zmienną odczytywał w przerwaniu od Timera np. co 10ms to na bieżąco byś widział jak zmienia się jej wartość.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 15 sty 2014, o 21:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomson5]]></name></author>
<updated>2014-01-15T20:51:44+01:00</updated>
<published>2014-01-15T20:51:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65141#p65141</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65141#p65141"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65141#p65141"><![CDATA[
Właśnie tu poległem.<br />Myślałem że po takiej deklaracji X będzie Jakby tożsame ze zmienną PWM.<br />Wychodzi jednak na to że zanim pętla For Next nie skończy się nic z procedury nie wychodzi dopiero po skończeniu pętli :/<br />Pożytek z tego chociaż taki że zrozumiałem co to jest Declare Sub i z czym to się je. Pozostało mi jeszcze declare function.<br /><br />Dzięki za pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2382">tomson5</a> — 15 sty 2014, o 20:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-15T20:41:47+01:00</updated>
<published>2014-01-15T20:41:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65134#p65134</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65134#p65134"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65134#p65134"><![CDATA[
No ale jak chcesz badać ta wartość po każdym kroku? Przecież jak program wpadnie w procedurę a potem do pętli for to będzie w niej &quot;siedział&quot; tak długo aż wykona wszystkie kroki pętli for. Dopiero potem wyskoczy z pętli i z procedury i wróci do pętli głównej. Jeśli chcesz aby zmiana wartości zmiennej była widoczna po każdym kroku to chyba by trzeba było zrezygnować z pętli for i napisac to tak aby procedura Rozjasnij była wywoływana ileś tam razy co np. 100ms. I wtedy po każdym kroku program by wracał do pętli głównej z aktualna wartością zmiennej Pwm.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 15 sty 2014, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-01-15T20:38:28+01:00</updated>
<published>2014-01-15T20:38:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65132#p65132</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65132#p65132"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65132#p65132"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />teraz jak mam coś napisać w Bascomie to odruchowo stosuję to co nauczyłem się podczas nauki C czyli stosowanie zmiennych lokalnych, dzielenie programu na funkcje itd.<br /></div><br />Ja też dzielę program na funkcje.<br /><br /><div class="quotetitle">tomson5 napisał(a):</div><div class="quotecontent"><br />Chodzi mi o to że kręci się od 1 do 100 ale nie zwraca wartości X na zewnątrz po każdym kroku tylko na koniec.<br /></div><br />No bo pętla FOR...NEXT tak się w bascomie zachowuje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 15 sty 2014, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomson5]]></name></author>
<updated>2014-01-15T20:32:43+01:00</updated>
<published>2014-01-15T20:32:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65128#p65128</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65128#p65128"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65128#p65128"><![CDATA[
Podczas pisania pojawiły się nowe wątki.<br /><br />@jacekk232 sprawdziłem twój kod na szybko i okazuje się że coś tam jest zwracane z procedury.<br />Dokładnie to jest tak<br /><br />krok1<br />pwm = 0 <br /><br />krok2 <br />pwm = 1<br /><br />Natomiast jak wywaliłem z procedury polecenie waitms 100 to w kroku2 pwm = 101<br />To już wcześniej zaobserwowałem że jeżeli w procedurze na sztywno wpisałem X = 10 to zmienna Pwm też przyjmowała wartość 10 <br />Problem jest taki że pętla For Next nie zachowuje się w taki sam sposób jakby to miało miejsce w podprogramie <br />Chodzi mi o to że kręci się od 1 do 100 ale nie zwraca wartości X na zewnątrz po każdym kroku tylko na koniec.<br /><br />uff... mam nadzieje że to rozumiecie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2382">tomson5</a> — 15 sty 2014, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-15T20:30:05+01:00</updated>
<published>2014-01-15T20:30:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65126#p65126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65126#p65126"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65126#p65126"><![CDATA[
Jak ja pisałem w Bascomie to też tak robiłem. I pewnie zdecydowana większość ludzi piszących w Bascomie tak robi. Ale nauka C wyrobiła we mnie inne podejście do pisania programów. I teraz jak mam coś napisać w Bascomie to odruchowo stosuję to co nauczyłem się podczas nauki C czyli stosowanie zmiennych lokalnych, dzielenie programu na funkcje itd.<br /><br /><strong>tomson5</strong> to co pokazałeś w pierwszym poście jest właśnie tym wariantem, w którym wszystkie operacje wewnątrz procedury są widoczne na zewnątrz. Jak możesz to pokaż cały kod.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 15 sty 2014, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomson5]]></name></author>
<updated>2014-01-15T20:18:11+01:00</updated>
<published>2014-01-15T20:18:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65122#p65122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65122#p65122"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65122#p65122"><![CDATA[
Mam osiem zmiennych Pwm1 , Pwm2 ..... Pwm8<br />Chciałem zadeklarować kilka wspólnych procedur dla tych zmiennych, tak by nie robić podprogramów dla każdej z osobna.<br />Dla przykładu tutaj była procedura (rozjasnic) którą później mógłbym wykorzystać np:<br /><br />[syntax=basic4gl]Do<br />rozjasnic Pwm1<br />rozjasnic Pwm2<br />rozjasnic Pwm3<br />....etc..<br /><br />loop[/syntax]<br />Według podręcznika są dwa warianty gdzie: wariant1 Działania na wew. zmiennych nie są &quot;widoczne na zewnątrz&quot; i wariant2 działania na zmiennych wew. są na bieżąco &quot;widoczne na zewnątrz&quot;<br />Myślałem że to co pokazałem w pierwszym poście jest wariantem2<br /><br />Pytałeś dlaczego próbuje upodabniać do C?<br />Czekam na kaskę a co za tym idzie na książkę Bluebook i wtedy się posypią pytania ale już nie w tym dziale <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />W wolnej chwili odrabiam opuszczone wcześniej lekcje i próbuje zgłębić te deklaracje szczególnie że mam teraz na stole mały projekcik w którym chciałem to wykorzystać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2382">tomson5</a> — 15 sty 2014, o 20:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-01-15T20:18:16+01:00</updated>
<published>2014-01-15T20:17:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65121#p65121</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65121#p65121"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65121#p65121"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />W Bascomie oprócz zmiennych globalnych są również zmienne lokalne czyli tworzone na stosie.<br /></div><br />Ja tego tak nie traktuję a może raczej nie używam.<br />Przyjmuję że wszystkie zmienne zadeklarowane na początku mam globalne i w dalszej części programu tak się do nich odnoszę.<br />Nigdy z tego powodu nie miałem kłopotów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 15 sty 2014, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-15T20:13:46+01:00</updated>
<published>2014-01-15T20:13:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65120#p65120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65120#p65120"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65120#p65120"><![CDATA[
Domyślnie w Bascomie argumenty do procedur lub funkcji są przekazywane przez referencje czyli przez adres. Oznacza to, że do procedury nie przekazujemy wartości zmiennej tylko jej adres. I wszystkie operacje dokonywane na tej zmiennej wewnątrz procedury są widoczne na zewnątrz np. w pętli głównej. Ten mechanizm jest podobny do wskaźników w C.<br />Argumenty można też przekazywać poprzez wartość. W tej sytuacji jest tworzona kopia zmiennej i operacje wewnątrz procedury są wykonywane na tej kopii i nie są widoczne na zewnątrz. <br /><br />Na szybko napisałem malutki programik testowy<br />[syntax=basic4gl]Do<br />   'krok pierwszy<br />   Locate 1 , 1<br />   Lcd &quot;1.) &quot; ; Pwm ; &quot;   &quot;<br />   Wait 1<br /><br />    Call Rozjasnic(pwm)                         'Z procedury Rozjasnic wartość zmiennej X ma być wpisywana do zmiennej Pwm<br /><br />   'krok drugi<br />   Locate 1 , 1<br />   Lcd &quot;2.) &quot; ; Pwm ; &quot;   &quot;<br />   Wait 1<br /><br />   Pwm = 0<br />Loop<br />End<br /><br />'Procedura zwiększająca wartość zmiennej X w 20 krokach<br />Sub Rozjasnic(x As Byte)<br />   For X = 1 To 100 Step 5<br />    Waitms 100<br />    Incr X<br />   Next<br />End Sub[/syntax]<br /><br />Zmienna Pwm w kroku pierwszym ma wartość równą zero, ale w kroku drugim już ma wartość jaką przyjęła po modyfikacji w wewnątrz procedury Rozjasnij.<br /><br />W takiej formie programu wszystkie działania na zmiennej Pwm wewnątrz procedury Rozjasnij są widoczne w pętli głównej.<br /><br /><div class="quotetitle">matrix napisał(a):</div><div class="quotecontent"><br />Poza tym zmienne w bascomie są globalne. Tu nie ma zmiennych jak w C.<br /></div><br />W Bascomie oprócz zmiennych globalnych są również zmienne lokalne czyli tworzone na stosie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 15 sty 2014, o 20:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-01-15T16:59:30+01:00</updated>
<published>2014-01-15T16:59:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65099#p65099</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65099#p65099"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65099#p65099"><![CDATA[
Po co chcesz upodabniać bascoma do C?<br />Nie możesz przepisać wartości x do wartości rozjasnic ?<br />Poza tym zmienne w bascomie są globalne. Tu nie ma zmiennych jak w C.<br />Robiąc coś na danej zmiennej gdzieś w podprogramie odczytasz to w pętli głównej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 15 sty 2014, o 16:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomson5]]></name></author>
<updated>2014-01-15T12:30:48+01:00</updated>
<published>2014-01-15T12:30:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65078#p65078</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65078#p65078"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65078#p65078"><![CDATA[
Też dochodzę do tego wniosku.<br />Próbowałem zrobić to jako Declare function w podany przez ciebie sposób<br />Niestety nie dokońca rozumiem co ma być wtedy w pętli głównej?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2382">tomson5</a> — 15 sty 2014, o 12:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[poczciwy]]></name></author>
<updated>2014-01-15T11:24:24+01:00</updated>
<published>2014-01-15T11:24:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65073#p65073</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65073#p65073"/>
<title type="html"><![CDATA[Re: Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65073#p65073"><![CDATA[
nie znam tego dialektu ale w basiku sub oznacza procedurę nie mogąca zwracać danych. Trzeba ożyć funkcji np Declare Function Rozjasnic(x As Byte) as byte<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=972">poczciwy</a> — 15 sty 2014, o 11:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomson5]]></name></author>
<updated>2014-01-14T19:10:59+01:00</updated>
<published>2014-01-14T19:10:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65017#p65017</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65017#p65017"/>
<title type="html"><![CDATA[Declaracja procedury i zwrot wartości zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5547&amp;p=65017#p65017"><![CDATA[
Witam<br />Próbuje zrealizować pewne zadanie<br />Chciałbym aby Działania wykonywane w procedurze na zmiennej X były przekazywane do zmiennej programu głównego Pwm<br /><br />[syntax=basic4gl]'ble ble konfiguracja<br />Declare Sub Rozjasnic(x As Byte)<br /> Dim Pwm As Byte<br />  Pwm = 0<br /><br /> Do<br />  Rozjasnic Pwm                 'Z procedury Rozjasnic wartość zmiennej X ma być wpisywana do zmiennej Pwm<br /> Loop<br /><br /><br />'Procedura zwiększająca wartość zmiennej X w 20 krokach<br />Sub Rozjasnic(x As Byte)<br />   For X = 1 To 100 Step 5<br />    Waitms 100<br />      Incr X<br />   Next<br />End Sub[/syntax]<br /><br />To jest fragment kodu odpowiedzialny za to działanie. Niestety nie działa<br />Nie jestem pewien czy to tak ma być czy może jednak trzeba użyć np: declare function zamiast declare sub ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2382">tomson5</a> — 14 sty 2014, o 19:10</p><hr />
]]></content>
</entry>
</feed>