programovanie v c
Moderátori: psichac, Moderátori
-
- Ultimate člen
- Príspevky: 4421
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: programovanie v c
Ok. Diki. Vecer vyskusam.
A ako je to s tym GOTO? Pouziva sa to v C?
A ako je to s tym GOTO? Pouziva sa to v C?
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
Re: programovanie v c
Prakticky sa goto nepoužíva, možno iba ako posledné pomazanie pred skokom na výpis chybovej hlášky a ukončením programu.
0
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 46
Re: programovanie v c
Závisí to od toho, či tie podmienky spolu navzájom súvisia. Spresnil prosím zadanie, potom sa určite nájde riešenie
0
-
- Ultimate člen
- Príspevky: 4421
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: programovanie v c
pin:
Takze vzdy sa da (si musim) nejako poradit s if, if-else, else-if a podobne?
Ak ano , tak si to nastudujem ake su tam moznosti.
lh:
OK. Skusim to poriesit sam s tymi if, if-else, else-if, ci na to pridem. Ak sa zamotam, tak potom dam sem kod.
Dakujem za info.
Takze vzdy sa da (si musim) nejako poradit s if, if-else, else-if a podobne?
Ak ano , tak si to nastudujem ake su tam moznosti.
lh:
OK. Skusim to poriesit sam s tymi if, if-else, else-if, ci na to pridem. Ak sa zamotam, tak potom dam sem kod.
Dakujem za info.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
Re: programovanie v c
Este existuje switch-case a break. A goto mozes pouzit, ak vies co robis. Ale nepredpokladam ze ti to bude treba. Volanie funkcie ti nahradi goto.
0
Re: programovanie v c
Ak začínaš s C odporúčam ti tieto dve knihy.
Mne dali veľmi ale veľmi moc. Sú to skvelé knihy v ktorých je okrem samotnej architektúry procesora popis princípu použitia jazyka C. Skvelé spracované príklady aj s vysvetlením a popisom.
Mne dali veľmi ale veľmi moc. Sú to skvelé knihy v ktorých je okrem samotnej architektúry procesora popis princípu použitia jazyka C. Skvelé spracované príklady aj s vysvetlením a popisom.
0
-
- Ultimate člen
- Príspevky: 4421
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: programovanie v c
Tak po troske potrepenia mozgovej kory som to vyriesil cez ELSE a GOTO som zrusil.
Dakujem z pomoc.
Dakujem z pomoc.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
-
- Ultimate člen
- Príspevky: 6221
- Dátum registrácie: 20 Júl 2007, 00:00
- Vek: 41
Re: programovanie v c
goto je peklo v akomkolvek jazyku. Jednoducho povedane, zabudni nan. Ak ho potrebujes, tak to znamena zle navrhnuty algoritmus.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
-
- Ultimate člen
- Príspevky: 4421
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: programovanie v c
V ASM GOTO pre mna bola "malina" lebo tam som vedel presne o kazdom riadku co robi. Tam som to mal "tvrdo" pod kontrolou ako komunisti Ceskoslovensko. pred 1989.
Takze nepouzivat v C. Beriem na vedomie.
Diki za upresnenie.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
Re: programovanie v c
Tak jednoduche to nie je. Odporcovia GOTO ti napisu program na jednu stranku, kde ti dokazu, ze program je jednoduchsi bez GOTO. Lenze to nebude platit pre program s 2,000 lines.
Kazdy DO, WHILE ma skryte GOTO, Kazdy CALL a RETURN je vlastne GOTO. Od Python 2.7 bolo GOTO zrusene:
Natiskne 1, 3, 4, 5.
'continue' a 'break' su zde inac pomenovane GOTO.
To, ze kazdy proggram je mozno napisat bez GOTO este nedokazuje, ze ho nemas pouzivat. Je na teba uvazit, ci je lepsie pouzit GOTO alebo nie. (Zo zkusenosti neradim, GOTO :kdesi_hore)
Kazdy DO, WHILE ma skryte GOTO, Kazdy CALL a RETURN je vlastne GOTO. Od Python 2.7 bolo GOTO zrusene:
Kód: Vybrať všetko
for i in range (1,99):
if i==2:
continue
if i==6:
break
print(i)
'continue' a 'break' su zde inac pomenovane GOTO.
To, ze kazdy proggram je mozno napisat bez GOTO este nedokazuje, ze ho nemas pouzivat. Je na teba uvazit, ci je lepsie pouzit GOTO alebo nie. (Zo zkusenosti neradim, GOTO :kdesi_hore)
0
Samozřejmě, že dědeček nemá kapesní hodinky poháněné elektřinou. Takový nesmysl si může vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
-
- Ultimate člen
- Príspevky: 6221
- Dátum registrácie: 20 Júl 2007, 00:00
- Vek: 41
Re: programovanie v c
zen: goto sa naposledy pouzivalo v asm a basicu. vo vsetkych vyssich jazykoch sa nema pouzivat.
existuje nieco ako navrhovy vzor (design pattern), ktory kazdy slusny programator dodrzuje a kde je presne popisane ako pisat v tom-ktorom jazyku prehladny kod.
kod s 2tis riadkami je zly a neprehladny. v praxi sa to rozbija na male funkcne casti v samostatnych suboroch.
a neexistuju odporcovia goto, ale su to ludia, ktori sa riadia istymi standardmi.
vyvijal som sw napr. aj pre banky a tam mali take kontroly, ze mi nepresiel ani kod, kde neboli spravne velke/male pismena v nazve premennych.
existuje nieco ako navrhovy vzor (design pattern), ktory kazdy slusny programator dodrzuje a kde je presne popisane ako pisat v tom-ktorom jazyku prehladny kod.
kod s 2tis riadkami je zly a neprehladny. v praxi sa to rozbija na male funkcne casti v samostatnych suboroch.
a neexistuju odporcovia goto, ale su to ludia, ktori sa riadia istymi standardmi.
vyvijal som sw napr. aj pre banky a tam mali take kontroly, ze mi nepresiel ani kod, kde neboli spravne velke/male pismena v nazve premennych.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
Re: programovanie v c
pocitujlasku napísal: ↑27 Okt 2021, 23:29.
kod s 2tis riadkami je zly a neprehladny. v praxi sa to rozbija na male funkcne casti v samostatnych suboroch.
Myslim 2000 riadkov dohromady vo vsetkych suborov.
Coz je pokus aby sa vyznali v tom, co si napisal, ked odides. Aj ak neprogramujes v Python, moj kod sa da interpretovat ako pseudo-code. Prepisaj to v ANSI-C s a bez GOTO. V poslednom pripade skoncis s bateriou zavoriek. Ja som programoval v dBaseIII a bol som nuteny si napisat program, ktory mi hladal, kde co konci. (Dneska ti to urobi editor.)pocitujlasku napísal: ↑27 Okt 2021, 23:29.
.vyvijal som sw napr. aj pre banky a tam mali take kontroly, ze mi nepresiel ani kod, kde neboli spravne velke/male pismena v nazve premennych.
Ak si cital The C bible, vzpomen si, co K&R pisu o GOTO.
0
Samozřejmě, že dědeček nemá kapesní hodinky poháněné elektřinou. Takový nesmysl si může vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
Re: programovanie v c
Ja som raz použil GOTO a ešte aj dnes sa kvoli tomu v noci strhávam s krikom zo sna
Na začiatku jednej aplikácie som testoval meno prihláseného užívateľa v systéme windows a podľa toho som mu priradzoval práva na používanie aplikácie.
Ak bol užívateľ nový, program prešiel ma zapís nového užívateľa do databázy...no a potom kedže som hovado, som program pomocou GOTO vrátil spať na autentifikáciu uživateľa...
Ale bolo to len raz čo si spomínam a už to neurobím
Na začiatku jednej aplikácie som testoval meno prihláseného užívateľa v systéme windows a podľa toho som mu priradzoval práva na používanie aplikácie.
Ak bol užívateľ nový, program prešiel ma zapís nového užívateľa do databázy...no a potom kedže som hovado, som program pomocou GOTO vrátil spať na autentifikáciu uživateľa...
Ale bolo to len raz čo si spomínam a už to neurobím
0
-
- Ultimate člen
- Príspevky: 6221
- Dátum registrácie: 20 Júl 2007, 00:00
- Vek: 41
Re: programovanie v c
2000 riadkov dokopy je nic. a prave to, ze ked to rozdelis na casti, tak sa vyhnes goto peklu.
ta kontrola kodu nebola preto, aby sa v tom niekto iny vyznal, ale aby sme splnali nejake standardy a certifikacie. Myslim, ze programatorovi je fuk, ci sa premenna vola xy, alebo XY.
Ja koncim diskusiu, ked si chcete programovat spaghetti code, tak si ho piste, ale ja ked nieco robim, tak chcem aby to aj nejako vyzeralo a bolo to tak, ako to ma byt, nie len to, ze to funguje.
A to, co bol standard pred 20timi rokmi, dnes uz nemusi platit. Vyvoj ide dopredu.
ta kontrola kodu nebola preto, aby sa v tom niekto iny vyznal, ale aby sme splnali nejake standardy a certifikacie. Myslim, ze programatorovi je fuk, ci sa premenna vola xy, alebo XY.
Ja koncim diskusiu, ked si chcete programovat spaghetti code, tak si ho piste, ale ja ked nieco robim, tak chcem aby to aj nejako vyzeralo a bolo to tak, ako to ma byt, nie len to, ze to funguje.
A to, co bol standard pred 20timi rokmi, dnes uz nemusi platit. Vyvoj ide dopredu.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
-
- Ultimate člen
- Príspevky: 2582
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: programovanie v c
To už sa dostávame k veciam ako single responsibility principle a don’t repeat yourself.
Je to naozaj dobrý nápad sa striktne držať týchto pravidiel.
Je to naozaj dobrý nápad sa striktne držať týchto pravidiel.
0
-
- Ultimate člen
- Príspevky: 4421
- Dátum registrácie: 09 Apr 2008, 00:00
- Bydlisko: Wicklow, Irsko
- Vek: 47
Re: programovanie v c
Rozvinyula sa tu debata a teraz chapem, ze GOTO nepouzivat, hlavne v zlozitych programoch,
Ak budem blikat ledku tak tam sa to da, (ale tam zase netreba goto. ).
Ak budem blikat ledku tak tam sa to da, (ale tam zase netreba goto. ).
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje
Re: programovanie v c
Tam skutocne nie, no, ked .budes riesit ze v krbu je -127 Celsius, tak si polozis otazku, kolko processor cycles ti vezme GOTO a kolko dalsi premena a baterie IF.
Ak sa ucis C, doporucujem Brian W. Kernigham & Denis M. Ritchie The C Programming Language. (Casto sa referuje ako C Bible).
0
Samozřejmě, že dědeček nemá kapesní hodinky poháněné elektřinou. Takový nesmysl si může vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
-
- Pokročilý člen
- Príspevky: 648
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 38
Re: programovanie v c
Mozno trochu od veci a mozno aj nebudete suhlasit, ale pridam:
Ked som sa dostal prvy krat k programovaniu MCU este na VS prekvapili ma dve veci:
1) Program bezi v nekonecnej slucke (preco?).
2) Prgram moze byt preruseny hocikedy, v ktorejkolvek casti programu (chaos).
Moje "prekvapenie" trva do dnes a mozno aj preto pouzivam MCU velmi zriedka. Oboje sa da vyriesit prepisanim v SW, ale nie je to ono - berie to zbytocne strojove cykly. Cela koncepcia MCU je +/- prebrata este z cias salovych pocitacov, kedy sa pisali programy pre jednoduche mat. vypocty a prerusovalo sa velmi malo.
Pride mi, ze ovela vhodnejsi je pristup pouzivany v log. obvodoch a to:
Vstup -> Vykonaj -> Koniec (nerob nic a cakaj na dalsi vstup), pricom vstup moze byt flag od prerusenia, alebo vykonanie inej casti programu (nazvime dielci program).
Dodam, ze pre efektivnu realizaciu takehoto pristupu je potrebne/vhodne viacjadro alebo jeho obdoba, obzvlast v casovo kritickych rieseniach (s kratkou latenciou).
Teraz k teme:
Ak rozkuskujes program na taketo dielcie casti, Goto (ked uz C je embedded standard) moze byt vyhodne, pretoze skoci priamo na dielci program bez funkcneho volania, riesenia navratovych adries... a inych zbytocnosti
Ked som sa dostal prvy krat k programovaniu MCU este na VS prekvapili ma dve veci:
1) Program bezi v nekonecnej slucke (preco?).
2) Prgram moze byt preruseny hocikedy, v ktorejkolvek casti programu (chaos).
Moje "prekvapenie" trva do dnes a mozno aj preto pouzivam MCU velmi zriedka. Oboje sa da vyriesit prepisanim v SW, ale nie je to ono - berie to zbytocne strojove cykly. Cela koncepcia MCU je +/- prebrata este z cias salovych pocitacov, kedy sa pisali programy pre jednoduche mat. vypocty a prerusovalo sa velmi malo.
Pride mi, ze ovela vhodnejsi je pristup pouzivany v log. obvodoch a to:
Vstup -> Vykonaj -> Koniec (nerob nic a cakaj na dalsi vstup), pricom vstup moze byt flag od prerusenia, alebo vykonanie inej casti programu (nazvime dielci program).
Dodam, ze pre efektivnu realizaciu takehoto pristupu je potrebne/vhodne viacjadro alebo jeho obdoba, obzvlast v casovo kritickych rieseniach (s kratkou latenciou).
Teraz k teme:
Ak rozkuskujes program na taketo dielcie casti, Goto (ked uz C je embedded standard) moze byt vyhodne, pretoze skoci priamo na dielci program bez funkcneho volania, riesenia navratovych adries... a inych zbytocnosti
0
"No pain, no gain." (KC238)
Re: programovanie v c
Čisto teoreticky ti MCU nemusí bežať v slučke - spravíš niečo, hodíš ho do nejakého spiaceho módu a zobudíš keď niečo potrebuješ...
Prerušenie programu, áno - ale v prerušení je fajn len meniť flagy a tie v danej častu programu ošetriť, potom až taký chaos nevznikne.
Prerušenie programu, áno - ale v prerušení je fajn len meniť flagy a tie v danej častu programu ošetriť, potom až taký chaos nevznikne.
0
Re: programovanie v c
Ked som prepusoval program z asmblera do C. Tak koli jednoduchosti som tam tie goto nechal. Inak nakoniec program zaberal viac miesta v C ako asm. Lenze trrba uvazit ze islo o prepis.
Inak uP robi yo co naprogramujes. Tak isto aj linux alebo win.
Nacita 6x ad vstup, posle hodnotu na displej, nacita data s rds tunera, ak trrba posle na displej. Ak sa vyskytne podmienka prerusenia vykona dekodovanie a prijem IR signalu, prerusenie od tlacidiel, prerusenie od dotykoveho displeja, prerusenie od mp3 prehravaca.... Takze nieco robi v slucke a nieco idskoci vykonat do preruseni. A ked chhces byt dosledny je tu napr ORTOS aby si to mal ako v tom zalagovanom windowse
Viac jadro netreba len treba pri pisani rozmyslat.
Sustruh 2000imp/ot, otacky vretena 1800ot.{skuste si vypocitat kolko casu ma atmega, ked je viac casu v preruseni ako nieco uzitocne robi} A ta atmega na 16Mhz. Stiha pocitat impulzi, zobrazuje otacky na displeji v realnom cas, obsluhuje displej po i2c zbernici, zobrazuje aktualnu polohu krokoveho motorA, posiela riadiace impulzy na krokac. Vsetko je to o spravnom casovani a rozmyslani ako to urobit.
Pid regulator prackoveho motora. Atmega 16Mhz. Encoder 100imp/ot, motor toci 16000ot. uP stiha pocitat pid slucku, snimat otacky, posielat data na i2c displej graficky BEZ fontu.
Na 99% veci staci bezny uP s jednym jadrom.
Na zlozitejsie veci su tu periferie procesora.
A az potom zaci1naju srandy DMA a podobne..
Prave prerusenie riesi veci namiesto tvojeho 10jadra absolutne zbytocneho.
Inak uP robi yo co naprogramujes. Tak isto aj linux alebo win.
Nacita 6x ad vstup, posle hodnotu na displej, nacita data s rds tunera, ak trrba posle na displej. Ak sa vyskytne podmienka prerusenia vykona dekodovanie a prijem IR signalu, prerusenie od tlacidiel, prerusenie od dotykoveho displeja, prerusenie od mp3 prehravaca.... Takze nieco robi v slucke a nieco idskoci vykonat do preruseni. A ked chhces byt dosledny je tu napr ORTOS aby si to mal ako v tom zalagovanom windowse
Viac jadro netreba len treba pri pisani rozmyslat.
Sustruh 2000imp/ot, otacky vretena 1800ot.{skuste si vypocitat kolko casu ma atmega, ked je viac casu v preruseni ako nieco uzitocne robi} A ta atmega na 16Mhz. Stiha pocitat impulzi, zobrazuje otacky na displeji v realnom cas, obsluhuje displej po i2c zbernici, zobrazuje aktualnu polohu krokoveho motorA, posiela riadiace impulzy na krokac. Vsetko je to o spravnom casovani a rozmyslani ako to urobit.
Pid regulator prackoveho motora. Atmega 16Mhz. Encoder 100imp/ot, motor toci 16000ot. uP stiha pocitat pid slucku, snimat otacky, posielat data na i2c displej graficky BEZ fontu.
Na 99% veci staci bezny uP s jednym jadrom.
Na zlozitejsie veci su tu periferie procesora.
A az potom zaci1naju srandy DMA a podobne..
Prave prerusenie riesi veci namiesto tvojeho 10jadra absolutne zbytocneho.
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 38 Odpovedí
- 2737 Zobrazení
-
Posledný príspevok od používateľa Lennox