programovanie v c

C,C++,C#

Moderátori: psichac, Moderátori

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4416
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: programovanie v c

Príspevok od používateľa romiadam » 26 Okt 2021, 13:50

Ok. Diki. Vecer vyskusam.
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

pin
Power user
Power user
Príspevky: 2370
Dátum registrácie: 09 Máj 2009, 00:00

Re: programovanie v c

Príspevok od používateľa pin » 26 Okt 2021, 14:03

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

Používateľov profilový obrázok
lh
Pokročilý člen
Pokročilý člen
Príspevky: 715
Dátum registrácie: 23 Mar 2013, 14:02
Bydlisko: z južnej strany Poľany
Vek: 45

Re: programovanie v c

Príspevok od používateľa lh » 26 Okt 2021, 16:25

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

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4416
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: programovanie v c

Príspevok od používateľa romiadam » 26 Okt 2021, 16:31

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.
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

Atlan
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1146
Dátum registrácie: 01 Feb 2008, 00:00
Bydlisko: Kosice okolie

Re: programovanie v c

Príspevok od používateľa Atlan » 26 Okt 2021, 19:07

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

wizing
Nový člen
Nový člen
Príspevky: 95
Dátum registrácie: 21 Sep 2017, 09:09
Bydlisko: Žilina
Vek: 40

Re: programovanie v c

Príspevok od používateľa wizing » 26 Okt 2021, 21:57

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.
Prílohy
IMG_20211026_215131.jpg
0

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4416
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: programovanie v c

Príspevok od používateľa romiadam » 27 Okt 2021, 01:21

Tak po troske potrepenia mozgovej kory som to vyriesil cez ELSE a GOTO som zrusil.

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

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6201
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: programovanie v c

Príspevok od používateľa pocitujlasku » 27 Okt 2021, 09:10

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.

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4416
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: programovanie v c

Príspevok od používateľa romiadam » 27 Okt 2021, 14:38

:thumbup:
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. :biggrin: 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

Používateľov profilový obrázok
zen
Stály člen
Stály člen
Príspevky: 483
Dátum registrácie: 22 Nov 2013, 14:33
Bydlisko: Cadca

Re: programovanie v c

Príspevok od používateľa zen » 27 Okt 2021, 17:15

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:

Kód: Vybrať všetko

for i in range (1,99):
  if i==2:
     continue
  if i==6:
    break
  print(i)
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)
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)

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6201
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: programovanie v c

Príspevok od používateľa pocitujlasku » 27 Okt 2021, 23:29

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.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
zen
Stály člen
Stály člen
Príspevky: 483
Dátum registrácie: 22 Nov 2013, 14:33
Bydlisko: Cadca

Re: programovanie v c

Príspevok od používateľa zen » 28 Okt 2021, 00:53

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.
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.
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.)

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)

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: programovanie v c

Príspevok od používateľa Radus » 28 Okt 2021, 09:55

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 :)
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6201
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: programovanie v c

Príspevok od používateľa pocitujlasku » 28 Okt 2021, 10:41

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.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: programovanie v c

Príspevok od používateľa maskrtnik01 » 28 Okt 2021, 11:18

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.
0

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4416
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: programovanie v c

Príspevok od používateľa romiadam » 28 Okt 2021, 15:22

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. :-D).
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

Používateľov profilový obrázok
zen
Stály člen
Stály člen
Príspevky: 483
Dátum registrácie: 22 Nov 2013, 14:33
Bydlisko: Cadca

Re: programovanie v c

Príspevok od používateľa zen » 29 Okt 2021, 14:06

romiadam napísal:
28 Okt 2021, 15:22
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. :-D).
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)

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: programovanie v c

Príspevok od používateľa miso156 » 29 Okt 2021, 15:36

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 :)
0
"No pain, no gain." (KC238)

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: programovanie v c

Príspevok od používateľa Radus » 29 Okt 2021, 15:51

Č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.
0

Atlan
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1146
Dátum registrácie: 01 Feb 2008, 00:00
Bydlisko: Kosice okolie

Re: programovanie v c

Príspevok od používateľa Atlan » 29 Okt 2021, 18:40

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.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok