 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 05 21, 12:33. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui)
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 2 Pereiti prie 1, 2 Toliau |
|
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 23, 22:37 |
|
|
|
int main(void)
while (1)
{
if (PINA&1);
else break;
}
while (2)
{
if (PINA&1);
else break;
}
return 0;
}
Siuo atveju migtuko pagalba persokama i antra cikla, o antra karta paspaudus niekas nebevyksta. Ka daryt, kad is While(2) ciklo persoktu i while(1)? |
|
|
|
|
 |
Re: Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliu |
Parašytas: 2011 05 24, 08:14 |
|
|
|
gintas6001 rašo: |
int main(void)
while (1)
{
if (PINA&1);
else break;
}
while (2)
{
if (PINA&1);
else break;
}
return 0;
}
Siuo atveju migtuko pagalba persokama i antra cikla, o antra karta paspaudus niekas nebevyksta. Ka daryt, kad is While(2) ciklo persoktu i while(1)? |
int main(void)
while(3)
{
while (1)
{
if (PINA&1);
else break;
}
while (2)
{
if (PINA&1);
else break;
}
}
return 0;
} |
|
|
|
|
 |
 |
Re: Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliu |
Parašytas: 2011 05 24, 09:11 |
|
|
|
gintas6001 rašo: |
int main(void)
while (1)
{
if (PINA&1);
else break;
}
while (2)
{
if (PINA&1);
else break;
}
return 0;
}
Siuo atveju migtuko pagalba persokama i antra cikla, o antra karta paspaudus niekas nebevyksta. Ka daryt, kad is While(2) ciklo persoktu i while(1)? |
Jo kam tuos "lievus" interuptus sugalvojo, juk galima visur "while(n+1)" naudot..
Oj ble..
Tai gal geriau tada palik tik ta while(1) ir viduj flagus naudok.. patikrini busena "mygtukas_status = 0/1" ir keli if'ai viduj, dar "delay", kad debounce nebutu (jei jau tokiais metodais "prgramuojama" ) |
|
|
|
|
 |
 |
Re: Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliu |
Parašytas: 2011 05 24, 13:09 |
|
|
|
MarcaZ rašo: |
Jo kam tuos "lievus" interuptus sugalvojo, juk galima visur "while(n+1)" naudot..
Oj ble..
Tai gal geriau tada palik tik ta while(1) ir viduj flagus naudok.. patikrini busena "mygtukas_status = 0/1" ir keli if'ai viduj, dar "delay", kad debounce nebutu (jei jau tokiais metodais "prgramuojama" ) |
su break yra aiskiau nei kitaip |
|
|
|
|
 |
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 24, 17:55 |
|
|
|
Yra toks operatorius goto, gali bandyt jį naudot, bet manau patogiau, tiesiog tvarkingai kodą pasirašyt, kad to nereikėtų.
Šaltinis: http://sc-algis.vgtu.lt/manowiki/index.php/Operatoriai#Operatorius_goto
Kadangi C/C++ kalboje yra daug kitų valdymo struktūrų break ir continue pagrindu, operatoriaus goto mažai prisireikia. Tai pogi vartoti šį operatorių laikoma blogu programavimo stiliumi. Nežiūrint į tai, operatorius goto kartais vis dar naudojamas. Pavyzdžiui goto puikiai išeina iš giliai įdėtų ciklų. Operatoriui goto reikalinga žymė, kuri yra indentifikatorius su dvitaškiu. Žymė privalo būti toje pačioje funkcijoje kaip ir operatorius goto, peršokti iš funkcijo sį funkciją tokiu būdu negalima. Bendras operatoriaus pavidalas yra toks:
Kodas: |
goto žymė;
.
.
.
žymė:
|
Žymė gali bųti kaip prieš taip ir po operatoriaus goto. Pavyzdžiui:
Kodas: |
x = 1;
ciklas:
x++;
if(x<100) goto ciklas; |
|
|
|
|
|
 |
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 24, 20:25 |
|
|
|
Goto tinkamas nebent kai reikia is dvigubo ciklo iseiti arba klaidu apdorojimui. jei ciklas viengubas goto nepatartina naudoti.
Goto reiketu suprasti kaip funkcija is kurios negriztama o ne kaip koki nors programos valdymo metoda. |
|
|
|
|
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 24, 23:50 |
|
|
|
Digix rašo: |
Goto tinkamas nebent kai reikia is dvigubo ciklo iseiti arba klaidu apdorojimui. jei ciklas viengubas goto nepatartina naudoti.
Goto reiketu suprasti kaip funkcija is kurios negriztama o ne kaip koki nors programos valdymo metoda. |
O dar teisingiau tokio kaip goto isvis nenaudoti. |
|
|
|
|
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 25, 00:09 |
|
|
|
Socrates rašo: |
Digix rašo: |
Goto tinkamas nebent kai reikia is dvigubo ciklo iseiti arba klaidu apdorojimui. jei ciklas viengubas goto nepatartina naudoti.
Goto reiketu suprasti kaip funkcija is kurios negriztama o ne kaip koki nors programos valdymo metoda. |
O dar teisingiau tokio kaip goto isvis nenaudoti. |
Tuoj Digix tau "irodys", kad goto naudoti reikia, nes taip daro "pingvinu" programuotojai. |
|
|
|
|
 |
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 25, 00:50 |
|
|
|
na siap jei esi programuotojas priklausatis ipatingai C programuotoju sektai tai tada goto privaloma nenaudoti nes kitaip busi ekskomunikuotas.
nors siaip manau netgi gincytis kvaila apie tai naudoti ar nenaudoti tai kas C kalboje yra.
jei butu nereikalinga to ten nebutu, jei yra tai vadinasi reikalinga.
beje idomu ar yra kokia nors programuotoju sekta kurios istatymai nurodytu ar naudoti
for( ; ; ){ }
ar
while (1){ }
o gal
do{}while(1) ;
?
arba kaip rasyti:
if(x) a=1;
ar
if(x) {a=1;}
?
if(x==0)
ar
if (!x)
siaip C kalboje yra daugybe variantu kaip galima atlikti ta pati dalyka.
tai man kvaila atrodo kai atsiranda kazkas kas aiskina kad kazkuris metodas yra absoliucai netinkamas.
Pastebejau kad linukso programuotojai labai jau nusitate pries
// komeantarus
jie butinai naudoja
/* komentarus */
nors sitie gana neparankus debuginant |
|
|
|
|
 |
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 25, 08:49 |
|
|
|
Digix rašo: |
na siap jei esi programuotojas priklausatis ipatingai C programuotoju sektai tai tada goto privaloma nenaudoti nes kitaip busi ekskomunikuotas.
nors siaip manau netgi gincytis kvaila apie tai naudoti ar nenaudoti tai kas C kalboje yra.
jei butu nereikalinga to ten nebutu, jei yra tai vadinasi reikalinga.
beje idomu ar yra kokia nors programuotoju sekta kurios istatymai nurodytu ar naudoti
for( ; ; ){ }
ar
while (1){ }
o gal
do{}while(1) ;
?
arba kaip rasyti:
if(x) a=1;
ar
if(x) {a=1;}
?
if(x==0)
ar
if (!x)
siaip C kalboje yra daugybe variantu kaip galima atlikti ta pati dalyka.
tai man kvaila atrodo kai atsiranda kazkas kas aiskina kad kazkuris metodas yra absoliucai netinkamas.
Pastebejau kad linukso programuotojai labai jau nusitate pries
// komeantarus
jie butinai naudoja
/* komentarus */
nors sitie gana neparankus debuginant |
Na del to "goto", tai daugelis, tarp ju ir as skaite knygu, kur rekomenduojama juo "nepiktnaudiziauti". O siaip tai sitas dalykas labai gelbeja, kai yra kokia ~1000 eiluciu funkcija su dax**ja if, else ir t.t.. Taigi, kodel nepanaudoti, kai tai sutaupo daug laiko ir galvos skausmo, ypac, jei esi patyres programuotojas. Reikia kartais to "apejimu" ) |
|
|
|
|
 |
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 25, 14:41 |
|
|
|
jei tavo programoje yra 1000 eiluciu funkcija tai tu esi toks prastas programuotojas kad jau goto panudojimas cia nebeturi reiskmes.
o del knygu tai raoma tik mokyklinese kur bandoma iaiskinti beisiko programuotojams kuris goto naudojo kas antroje eiluteje kad ant C kabos to daryti nereikia cia vietoje goto naudojami {} |
|
|
|
|
 |
Kaip grizti i pirmini cikla? (C kalba avr mikrovaldikliui) |
Parašytas: 2011 05 25, 15:52 |
|
|
|
//pirmas ciklas////////////////////////
void ciklas1()
{
while (1)
{
if (PINA&1) else break;
}
}
//antras ciklas//////////////////////////
void ciklas2()
{
while (1)
{
if (PINA&1) else break;
}
}
//pagrindine programa////////////////
int main(void)
{
while (1)
{
ciklas1();
ciklas2();
}
}
manau labai paprasta ir visiems suprantama. |
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |