<?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=4&amp;t=16153&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-09-10T23:26:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=16153&amp;mode</id>
<entry>
<author><name><![CDATA[Jatsekku]]></name></author>
<updated>2016-09-10T23:26:10+01:00</updated>
<published>2016-09-10T23:26:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168560#p168560</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168560#p168560"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168560#p168560"><![CDATA[
Okey, już sobie jakoś poradziłem bez tego. Dziękuję bardzo wszystkim za odpowiedzi.<br />Temat do zamknięcia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3920">Jatsekku</a> — 10 wrz 2016, o 23:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harry]]></name></author>
<updated>2016-09-07T21:09:04+01:00</updated>
<published>2016-09-07T21:09:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168291#p168291</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168291#p168291"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168291#p168291"><![CDATA[
Być może, ale nawet takie coś trzeba zrozumieć przed implementacją, zwłaszcza jeśli to ma być niezawodne.<br />Idea jest prosta, ale tylko dla kogoś kto tworzył aplikacje jednowątkowe z przymusu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14685">Harry</a> — 7 wrz 2016, o 21:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-09-07T08:04:11+01:00</updated>
<published>2016-09-07T08:04:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168233#p168233</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168233#p168233"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168233#p168233"><![CDATA[
Myślę, że koledze chodzi o stworzenie takiego Multi-tasking, z kolejką funkcji, zdefiniowanym przydziałem czasu na wykonanie każdej z nich i ich priorytetem. Taka wielozadaniowość, lub coś na wzór prostego RTOS'a. <br /><br />Tutaj znalazłem artykuł w języku angielskim: <a href="http://www.avrfreaks.net/forum/tutc-multi-tasking-tutorial-part-1?page=all"  class="postlink">http://www.avrfreaks.net/forum/tutc-multi-tasking-tutorial-part-1?page=all</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 7 wrz 2016, o 08:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[43kuku]]></name></author>
<updated>2016-09-07T07:13:05+01:00</updated>
<published>2016-09-07T07:13:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168230#p168230</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168230#p168230"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168230#p168230"><![CDATA[
Albo narysuj jakiś algorytm/ schemat działania programu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3190">43kuku</a> — 7 wrz 2016, o 07:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harry]]></name></author>
<updated>2016-09-06T22:24:58+01:00</updated>
<published>2016-09-06T22:24:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168216#p168216</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168216#p168216"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168216#p168216"><![CDATA[
Ja dalej nie rozumiem o co chodzi, m.in. z priorytetem zadania, w avr wszystko wykonuje się po kolei. <br />Klamerki możesz sobie wstawić gdzie chcesz, pytanie tylko po co, jedni piszą IF z pojedynczą instrukcją jako blok z klamrami, inni bez, osobiście preferuje klamry, ale to kwestia przyzwyczajenia, a może zboczenie poprawiające czytelność zwłaszcza przy długich kodach.<br />Może wrzuć w postaci kodu co masz zamiar osiągnąć, będzie łatwiej coś wymyślić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14685">Harry</a> — 6 wrz 2016, o 22:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jatsekku]]></name></author>
<updated>2016-09-06T20:56:56+01:00</updated>
<published>2016-09-06T20:56:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168189#p168189</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168189#p168189"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168189#p168189"><![CDATA[
Załóżmy, że jako argumenty przekazuje sobie np priorytet zadania, i jego maksymalny czas wykonywania. I funkcja ta wywołuje się cyklicznie wtedy kiedy nastąpi jej kolej, z tym, że nie chcę by była to zwykła funkcja tylko właśnie taki &quot;przełącznik&quot; który realizuje mi to co jest w klamrach w zależności od argumentów i np zmienny globalnych jakim w tym wypadku mógłby być timer programowy. Wiem, że może nie opisuje problemu zbyt dokładnie ale nie wiem jak to najlepiej ubrać w słowa. Może pomogłaby analiza działania samego bloku warunkowego if od wewnątrz. Może nakieruje mnie ktoś gdzie mogę ją podejrzeć? <br />Najistotniejsze są dla mnie te klamerki - funkcja realizujące instrukcje zawarte w klamrach<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3920">Jatsekku</a> — 6 wrz 2016, o 20:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-09-06T16:23:43+01:00</updated>
<published>2016-09-06T16:23:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168143#p168143</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168143#p168143"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168143#p168143"><![CDATA[
<div class="quotetitle">Sparrow-hawk napisał(a):</div><div class="quotecontent"><br />Kolego andrews, to co podałeś, to przykłady, jak nie programować<br /></div><br />Panie kolego zanim napiszesz takie (przepraszam) bzdury - to proszę cię przemyśl co i jak piszesz na forum ok ? na TYM forum.<br /><br />1. Jak na razie NIKT nie rozumie o co chodzi autorowi wątku - ja też nie dlatego nie wypowiadam się gdy nie rozumiem pytania. <br /><br />2. Ok są życzliwi ludzie, którzy chcą pomóc i próbując zgadnąć o co chodziło autorowi wątku podpowiadają jakieś sposoby - a nóż któryś trafi do autora<br /><br />3. kolega andrews napisał wyraźnie <br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />to można zrobić coś w stylu:<br /></div><br />i dalej:<br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Oczywiście isEqual() to tylko przykładowa, prosta funkcja. W rzeczywistości można w niej wykonać dowolne obliczenia i sprawdzić dowolną ilość warunków.<br /></div><br /><br />natomiast na temat proponowanego makra andrews napisał wyraźnie<br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />tylko moim zdaniem to pogorszy zrozumiałość kodu, a nie bardzo rozumiem, czemu miałoby to służyć.<br /></div><br /><br />więc proszę cię - nie czepiaj się - tylko jeśli już chcesz coś podpowiedzieć to podpowiedz, pokaż rozwiązania które ty proponujesz , ew odnieś się do jakichś ewidentnych błędów gdyby ktoś wcześniej podczas swojej odpowiedzi takie popełnił  - pokazując jak wg ciebie należałoby to rozwiązać <br /><br />bo dzięki temu WSZYSCY skorzystają i pytający i odpowiadający itp itd .... Tymczasem jak pisałem wyżej - kolega andrews jasno określił o co chodzi i jakie to niesie konsekwencje - ale główny cel to było sprowokowanie autora wątku do myślenia i uzupełnienia swojego pytania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 wrz 2016, o 16:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-09-06T16:08:28+01:00</updated>
<published>2016-09-06T16:08:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168141#p168141</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168141#p168141"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168141#p168141"><![CDATA[
<div class="quotetitle">Sparrow-hawk napisał(a):</div><div class="quotecontent"><br />funkcja isEqual niczego nie upraszcza<br /></div>Napisałem wyraźnie, że to tylko przykład, aby pokazać, w jaki sposób użyć funkcji jako warunku (bo tak zrozumiałem pytanie). To, czy ta funkcja ma sens jest bez znaczenia, ponieważ zakładałem, że autor wątku sam sobie napisze funkcję, która robi coś sensownego.<br /><br /><div class="quotetitle">Sparrow-hawk napisał(a):</div><div class="quotecontent"><br />Kolego andrews, to co podałeś, to przykłady, jak nie programować ... funkcja isEqual ... ukrywa sposób w jaki te argumenty są porównywane<br /></div>Zgodnie z tą tezą wszystkie funkcje biblioteki standardowej ctype.h (isalpha() isdigit() itp.) są przykładem, jak nie programować, bo one też ukrywają...<br /><br /><div class="quotetitle">Sparrow-hawk napisał(a):</div><div class="quotecontent"><br />A pomysł z tym makrem? To dopiero zaciemnienie kodu.<br /></div>Pokazałem tylko w jaki sposób osiągnąć dokładnie taki efekt, jakiego oczekiwał autor wątku (patrz pierwszy post), nie napisałem, że to dobry sposób. Przeczytałeś w ogóle to, co napisałem po tym przykładzie, czy żądza krytyki już Ci nie pozwoliła?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 6 wrz 2016, o 16:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-09-06T14:59:06+01:00</updated>
<published>2016-09-06T14:59:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168139#p168139</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168139#p168139"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168139#p168139"><![CDATA[
Kolego Jatsekku rozwiń swoją myśl, bo obecnie to bardzo ciężko przychodzi mi zrozumienie twojego problemu. Chcesz w jednej funkcji wykonywać inne funkcje w zależności od argumentów wejściowych? Czy chcesz też wywoływać różne funkcje na argumentach przekazanych do tej funkcji?<br /><br />Kolego andrews, to co podałeś, to przykłady, jak nie programować. Nie dość, że funkcja isEqual niczego nie upraszcza, to jeszcze ukrywa sposób w jaki te argumenty są porównywane. W dodatku przypomina mi to:<br />[syntax=c]bool isEqual(bool value) {<br />  if (value == true)<br />    return true;<br />  else<br />    return false;<br />}[/syntax] A pomysł z tym makrem? To dopiero zaciemnienie kodu. Jest podatne na błędy, a patrząc na kod w ogóle nie wiadomo, o co chodzi, jeśli się wcześniej tego makra nie widziało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 6 wrz 2016, o 14:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-09-06T09:33:25+01:00</updated>
<published>2016-09-06T09:33:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168108#p168108</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168108#p168108"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168108#p168108"><![CDATA[
Jeśli chodzi Ci o to, że masz jakiś skomplikowany warunek, który zmniejsza czytelność kodu i chciałbyś zastąpić go funkcją, to można zrobić coś w stylu:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdbool.h&gt;<br /><br />bool isEqual(int16_t val1, int16_t val2, int16_t val3)<br />{<br />    if ( val1 == val2 &amp;&amp; val2 == val3 ) return true;<br />    else return false;<br />}<br /><br />int main(void)<br />{<br />    int16_t a =9, b = 3, c = 5;<br />    // ...<br />    if ( isEqual(a, b, c) )<br />    {<br />        // tutaj blok instrukcji, jeśli funkcja zwróci prawdę<br />    }<br /><br />    while (1)<br />    {<br />    }<br />}[/syntax]<br />Oczywiście <strong><em>isEqual()</em></strong> to tylko przykładowa, prosta funkcja. W rzeczywistości można w niej wykonać dowolne obliczenia i  sprawdzić dowolną ilość warunków.<br /><br />Jeśli nadal przeszkadza Ci słowo kluczowe <strong>if</strong>, można dodatkowo użyć makra preprocesora:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdbool.h&gt;<br /><br />#define Task(v1,v2,v3) if(isEqual(v1,v2,v3))<br /><br />bool isEqual(int16_t val1, int16_t val2, int16_t val3)<br />{<br />    if ( val1 == val2 &amp;&amp; val2 == val3 ) return true;<br />    else return false;<br />}<br /><br />int main(void)<br />{<br />    int16_t a =9, b = 3, c = 5;<br />    // ...<br />    Task(a, b, c)<br />    {<br />        // tutaj blok instrukcji, jeśli funkcja zwróci prawdę<br />    }<br /><br />    while (1)<br />    {<br />    }<br />}[/syntax]<br /><br /> tylko moim zdaniem to pogorszy zrozumiałość kodu, a nie bardzo rozumiem, czemu miałoby to służyć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 6 wrz 2016, o 09:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2016-09-06T06:06:52+01:00</updated>
<published>2016-09-06T06:06:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168088#p168088</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168088#p168088"/>
<title type="html"><![CDATA[Re: Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168088#p168088"><![CDATA[
Nie dokońca rozumiem czy o to chodzi, ale jest taka instrukcja switch(argument), która w zależności od wartości argumentu może wykonywać różne sekwencje programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 6 wrz 2016, o 06:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jatsekku]]></name></author>
<updated>2016-09-06T00:29:43+01:00</updated>
<published>2016-09-06T00:29:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168085#p168085</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168085#p168085"/>
<title type="html"><![CDATA[Funkcja na wzór bloku warunkowego if]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16153&amp;p=168085#p168085"><![CDATA[
Witam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Szanowni koledzy, mam taką zagwozdkę. Czy możliwe jest napisanie funkcji(bloku) który później w programie byłby wykorzystywany tak jak instrukcja warunkowa if. Dla lepszego zobrazowani posłużę się prościutkim przykładem jak miałoby to wyglądać:<br />[syntax=c]Task(argument1, argument2, argument3.. argumentN)<br />{<br />//wykonywanie instrukcje<br />}[/syntax]<br /><br />Chodzi mi o to, żeby do wcześniej utworzonej funkcji móc zalinkować instrukcję znajdujące się między klamrami i wykonywać je w zależności od podanych argumentów - bardzo zbliżone do if;ów czy jakichkolwiek pętli ale stanowiące własną funkcję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3920">Jatsekku</a> — 6 wrz 2016, o 00:29</p><hr />
]]></content>
</entry>
</feed>