Učenje C preko foruma

Vse o programiranju na in za PC

Moderatorji: Kroko, tilz0R

Re: Učenje C preko foruma

OdgovorNapisal/-a VolkD » 22 Sep 2016, 12:55

Kroko je napisal/-a:Tudi C na PC-ju je lahko zabaven. Saj ni potrebno, da utripa tista LEDica.
Za učenje jezika C je popolnoma vseeno ali je to PC ali pa uC.

Problem je v tem da je na PC-ju dosegljiv C# in še kaj za uC pa je v glavnem na razpolago zgolj C. Od tod občutek da C sodi na uC.

Na PC-ju je debugiranje za razred lažje kot pa na uC koda pa povsem enaka. Marsikatero funkcijo se preprosto izplača narediti v PC in jo copy/paste na uC.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 41521
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 8986 krat
Prejel zahvalo: 5125 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a tilz0R » 22 Sep 2016, 12:59

Moje izkušnje pravijo, da najboljši algoritem napišem na PC-ju, če ga potem rabim na MCU-ju.
Recimo vse moje knjižnice na moji strani, ki nimajo direktne povezave z MCU-jem (recimo ciklični buffer) so bile napisane v visual studiu in kasneje samo copy/paste na MCU.

Takšen sistem res poenostavi delovanje, lažje testiraš feature, kot recimo iskanje stringa znotraj bufferja, in podobno.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1814
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 229 krat
Prejel zahvalo: 509 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a VolkD » 22 Sep 2016, 13:07

Prosim dajte ločiti jezik C in potem izbiro kje se ga bo poganjalo. To sta dve povsem ločeni stvari.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 41521
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 8986 krat
Prejel zahvalo: 5125 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a tilz0R » 22 Sep 2016, 13:08

Proteus, imaš prav, da ne moremo začeti govoriti o tem, kako kupiti na farnellu STM.

Lahko pa govorimo o tem, da za ČISTI ČISTI ČISTI začetek se uporabi kakšne video tutoriale, ki jih ni malo. Sam sem nalimal pomoje najboljše online free tutoriale.

Kasneje se pa pride sem, ko se zna, da je int main() začetek programa in se zna, da če rečem to je treba prevest in zagnat, da user ve kako to naredi.

Ko imamo to, lahko pa delamo marsikaj.

Video tutoriali so ZAKON! Tisto uro, da tutorial pokaže kako inštalirat na PC IDE za programiranje, si pa lahko vsak vzame čas.
Zadnjič spremenil tilz0R, dne 22 Sep 2016, 13:09, skupaj popravljeno 1 krat.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1814
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 229 krat
Prejel zahvalo: 509 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a VolkD » 22 Sep 2016, 13:08

Proteus je napisal/-a:Prav vse je mogoče zastonj dolpotegnit, pa se sami prepričajte, kaj počnejo otroci na otoku in kaj otroci na Mašunu.
Zanimiva opazka. A lahko v dveh stavkih opišeš kaj so delali otroci na Mašunu ?
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 41521
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 8986 krat
Prejel zahvalo: 5125 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a Kroko » 22 Sep 2016, 13:31

Ok, se predam. Zaradi mene se lahko učite C kakor želite.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4771
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1647 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a Proteus » 22 Sep 2016, 13:38

tilz0R je napisal/-a:Kasneje se pa pride sem, ko se zna, da je int main() začetek programa in se zna, da če rečem to je treba prevest in zagnat, da user ve kako to naredi.

Pa poglejmo:
- 3. številka MagPi
- članek: "The C Cave" na strani 22
https://www.raspberrypi.org/magpi-issues/MagPi03.pdf

Takšnih in podobnih prispevkov za raspberry pi (v MagPi in na WWW) kolikor hočeš in to za popolne začetnike.
N.pr. prižiganje LED diode:
http://wiringpi.com/examples/blink/
Uporabniški avatar
Proteus
 
Prispevkov: 2837
Pridružen: 18 Jan 2015, 01:31
Kraj: Planet Zemlja
Zahvalil se je: 292 krat
Prejel zahvalo: 591 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 107

Re: Učenje C preko foruma

OdgovorNapisal/-a tilz0R » 22 Sep 2016, 13:45

Kaj hočeš povedat Proteus sploh?
Da naj napišemo vse vse od začetka?

Vsaka tema o C-ju, ki bo tukaj objavljena bo n^n-to krat napisana ponovno.

Kroko je napisal/-a:Ok, se predam. Zaradi mene se lahko učite C kakor želite.


Tudi jaz!
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1814
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 229 krat
Prejel zahvalo: 509 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a jmivsek » 22 Sep 2016, 14:03

Kroko je napisal/-a:Ok, se predam. Zaradi mene se lahko učite C kakor želite.

Prav sedaj ni za vreči puške v koruzo, kajti različna menja se približujejo asimptoti: učenje lepo počasi po korakih na treh platformah:

    1. korak: PC
    2. korak: Arduino
    3. korak: STM32
Vem, da nič ne vem (Sokrat)
Uporabniški avatar
jmivsek
 
Prispevkov: 1084
Pridružen: 18 Jan 2015, 01:20
Kraj: Ajdovščina
Zahvalil se je: 1485 krat
Prejel zahvalo: 356 krat
Uporabnika povabil: S52O
Število neizkoriščenih povabil: 63

Re: Učenje C preko foruma

OdgovorNapisal/-a Proteus » 22 Sep 2016, 14:04

tilz0R je napisal/-a:Kaj hočeš povedat Proteus sploh?

Zelo preprosto, za začetek bi naredil anketo, kaj ljudje sploh hočejo in s kakšnim nivojem znanja sploh razpolagajo.
Trenutno sta se oglasila samo SamoBr in Cimabella, pri čemur je samo Cimabella jasno nakazala česa konkretno bi se rada naučila.
Uporabniški avatar
Proteus
 
Prispevkov: 2837
Pridružen: 18 Jan 2015, 01:31
Kraj: Planet Zemlja
Zahvalil se je: 292 krat
Prejel zahvalo: 591 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 107

Re: Učenje C preko foruma

OdgovorNapisal/-a s54mtb » 22 Sep 2016, 14:06

Res je treba ločit SW od HW, kljub vsemu pa je zanimivo rezultat svojega programčiča videti v neki aplikaciji (pa ni nujno to LED utripanje, lahko je recimo preprost panel meter, osebno naravnan zvonec, senzor temperature z deisplejem in relejem za termostat, .... miljon stvari). Do takih rešitev se da priti dokaj enostavno, ko so osnove, kot jih ponuja Kroko pod streho.

Ko pa bi namesto jamranja kdo tudi kaj pogledal po forumu, bi lahko našel info že tu, ni treba preko Alp:
viewtopic.php?f=29&t=1107
viewtopic.php?f=42&t=4477

pa še: http://e.pavlin.si/category/microcontrollers/stm32f0/

tudi za tega se dobi launchpad po smešno nizkih cenah:
viewtopic.php?f=29&t=3359

Samo je lažje jamrat, kako nekaj ni, kot pa prijeti spajkalo v roke ali tipkovnico pod prste in kaj konkretno naredit.

tilz0R je napisal/-a:Kaj hočeš povedat Proteus sploh?
Da naj napišemo vse vse od začetka?

Vsaka tema o C-ju, ki bo tukaj objavljena bo n^n-to krat napisana ponovno.

Kroko je napisal/-a:Ok, se predam. Zaradi mene se lahko učite C kakor želite.


Tudi jaz!


Tudi jaz, tukaj. Če koga zanima, bo našel kaj zanimivega tu: http://e.pavlin.si ali pa tu: http://stm32f4-discovery.net/
Uporabniški avatar
s54mtb
 
Prispevkov: 11178
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1555 krat
Prejel zahvalo: 4049 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a IgorK » 22 Sep 2016, 14:22

Kroko je napisal/-a:C sploh ni tako globok, kot si večina misli.


Za poznavalca seveda ne, za začetnika pa ni enostavno. Govorim o tem, da za utripanje LEDic ne rabiš struktur in kazalcev, še for stavka ne.
Vse je pogojeno s tem, kaj hočeš delat.

Vsekakor pa začetnikom z amaterskimi nameni priporočam Arduino.
IgorK
 
Prispevkov: 566
Pridružen: 20 Feb 2015, 00:08
Kraj: Rače
Zahvalil se je: 4 krat
Prejel zahvalo: 105 krat
Uporabnika povabil: s56rir
Število neizkoriščenih povabil: 10

Re: Učenje C preko foruma

OdgovorNapisal/-a VolkD » 22 Sep 2016, 14:34

Zdaj imam pa jaz tega dovolj !

Tema je učenje C preko foruma.

Vsak post, ki bo zavil na nekaj kar ni C ali na hw, ki je kao najbolj primeren ali post, ki bo samopromocija z linki bom BRISAL!
Tu se pogovarjamo o učenju C!

Vsak, ki bi rad bil pameten naj namesto trolanja pripravi eno domačo nalogo za popolne začetnike. Če nekdo nima namena pomagati naj tega ne objavlja, ker za to ni nobene potrebe.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 41521
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 8986 krat
Prejel zahvalo: 5125 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a SamoBr » 23 Sep 2016, 16:36

s54mtb je napisal/-a:Vse skupaj res ni nek bav bav. Pred kaksnimi dvajsetimi leti sem se na poti domov ustavil pri Keilu. Malo smo debatirali in potem sem vprasal, ce mi lahko pove par osnov "c"-ja, saj sem takrat programirak le v asm51. V enem popoldnevu in po dveh bavarskih pivih je bilo vse jasno. Dober predavatelj lahko nadomesti marsikatero uro prwskanja po glavi.
Ja ravno to je poanta. Ker si ne moremo vsi privoščiti piva,... ali it k kakemu prijatelju, bi se po moje tole dalo narediti preko foruma.

Pravite, da je C eno HW pa drugo. Mogoče res, ampak jaz bi rad to kar ustvarim tudi videl kako dela. To te potem potegne naprej.
Če sem prav razumel se potem skregate med seboj, ker ima vsak svojo priljubljeno ploščico in vsak svoj prevajalnik.
To česar ne razumem je potem to: C naj bi bil prenosen in enak za vse uC-je. Zakaj je potem tako pomembno katero ploščico imaš?
SamoBr
 
Prispevkov: 2798
Pridružen: 14 Jun 2015, 14:45
Zahvalil se je: 129 krat
Prejel zahvalo: 251 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 48

Re: Učenje C preko foruma

OdgovorNapisal/-a TilenS » 23 Sep 2016, 19:11

C je C.

Tako kot je slovenščina pač slovenščina. Beseda "če" se lahko prevede v xy različnih jezikov, v angleščini bo to "if" v nemščini "wenn" (govorim na pamet),...

Kar je dejansko pomembno je to kaj določen ukaz dejansko pomeni za neko HW platformo, v kaj se določen C ukaz prevede. Prevede se pa v ASM (vsaj pri naših malih procesorčkih).

"if else" v C prevajalniku za 8051 se prevede v par ukazov, ki jih razume samo 8051 platforma, tako prevedena koda ne bo delovala v rec- ARM-u. Če pa ta "if else" prevedeš z ARM C prevajalnikom boš pa dobil niz ukazov, ki jih razume samo ARM platforma. Na svojem PC-ju seveda lahko emuliraš delovanje enega in drugega prevajalnika (ponavadi to delaš z samim prevajalnikom in vgrajenim debuger-jem). Lahko pa emuliraš samo C kodo, brez raznih posebnosti kot so recimo vpisovanja v specifične registre ciljne HW platforme, takšno C kodo lahko testiraš tudi online.

Meni je dejansko C (ter vse ostalo povezano z mikro krmilniki) naredil "klik" šele ko sem začel pregledovati kaj razne C-jevske besede dejansko pomenijo za procesor in potem lepo vidiš kaj dejansko pomeni beseda "prevajalnik" :mrgreen:
TilenS
 
Prispevkov: 359
Pridružen: 05 Feb 2015, 00:40
Zahvalil se je: 0 krat
Prejel zahvalo: 55 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 11

Re: Učenje C preko foruma

OdgovorNapisal/-a MitjaN » 25 Sep 2016, 22:07

C ima cel kup izjem, čudnih pravil in nedefiniranega delovanja. Zaradi tega ga je težje učiti predvsem tistim, ki šele začenjajo s programiranje. S tega stališča so druge platforme ali jeziki lažji za učenje, če govorimo, da začetnika učimo programiranja. Če pomislim samo koliko ljudi uporablja Arduino. Močno dvomim, da bi se vsi te ljudje spravili na C, če Arduinota ne bi bilo.

Da se zastopimo, sam tudi nisem pristaš takih rešitev (Arduino, Bascom, ...), vendar če nekomu to ustreza zakaj pa ne. Bolje to, kot nič. Šanse so, da bo nekdo kasneje migriral višje.

Če pa obstaja predhodno znanje s področja programiranja potem pa ne vidim težav.

Za konec samo naštejem nekaj primerov s katerimi se jaz srečujem, ko koga učim ali mu svetujem okoli C-ja:
1. velikost podatkovnih tipov. C standard zelo megleno definira velikosti.
"char" mora biti sposoben spraviti vsaj 8 bitov. Lahko več. Tipično je "char" res 8 bitni obstajajo pa platforme, kjer je 16 bitni. Texas Instruments-ova C2000 serija ima "char" velik 16 bitov. Tako sta "char" in "int" enako velika.
"int" mora biti sposoben spraviti lahko vsaj 16 bitov. Lahko tudi več. PIC24 serija ima "int" velik 16 bitov. x86 arhitektura pa 32 bitov.
"long" mora biti sposoben spraviti lahko vsaj 32 bitov. Tako sta na x86 arhitekturi "int" in "long" enako velika.
Tako zelo hitro prideš do tega, da standardnih tipov ne uporabljaš, temveč uporabljaš izpeljane iz "stdint.h" in "limits.h". Predvsem, ko se ukvarjaš s komunikacijo med različnimi arhitekturami.
2. vrstni red operacij. Predvsem ko imaš opravka z logičnimi operacijami v kombinaciji z ++ in/ali -- operatorji stvari niso čisto jasne. In tudi če vse korektno zaviješ z oklepaji še ni rečeno da se bo vse izvedlo tako kot si mislil.
3. pretvorbe med tipi. Če imaš matematično operacijo, ki vključuje dva operanda, ki sta različnega tipa bo prevajalnik avtomatsko pretvoril enega iz med njiju. Po pravilih, ki so sicer znana, vendar pa včasih lahko pride do nepredvidenih posledic (pretvorba predznačenega števila v ne-predznačeno število iste bitne širine) in če vse skupaj shraniš v tretji podatkovni tip lahko sploh pride do čudnih situacij (float a = 3/2; ali pa long long b = 1<<33;). Zaradi tega je vedno priporočljivo uporabljati eksplicitno pretvarjanje med podatkovnimi tipi.
4. uporaba ++ in -- operatorjev (https://en.wikipedia.org/wiki/Sequence_point)

Taki in podobni primeri rušijo potek pedagoškega procesa in so nadvse nadležni ko nekoga učiš C. Če zna programirati, potem še nekako gre, sicer je pa to res tečno. Še najhuje je to, da je na spletu zelo veliko C-jevske kode napisane za x86, ki pa je ne moreš direktno uporabiti na ostalih arhitekturah ravno zaradi širine podatkovnih tipov. In potem ljudem ni jasno, ko s spleta kopirajo kodo, za katero je napisano da dela, njim pa daje čudne rezultate.
MitjaN
 
Prispevkov: 85
Pridružen: 24 Feb 2015, 12:45
Zahvalil se je: 10 krat
Prejel zahvalo: 35 krat
Uporabnika povabil: aly
Število neizkoriščenih povabil: 7

Re: Učenje C preko foruma

OdgovorNapisal/-a VolkD » 25 Sep 2016, 23:17

V velikosti podatkovnih tipov ne vidim problema. Vedno ko se program piše za nek procesor je treba pač upoštevati lastnosti tega procesorja. Saj podatkovni tipi niso edina stvar ki striže. Program pisan za avr tudi ne bo tekel na ARM in obratno.
C pač omogoča širino, kakšna je pa posamezna vrednost tega je pa odvisno od procesorja.

En stavek ki reši vse probleme okrog različnih podatkovnih tipov.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 41521
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 8986 krat
Prejel zahvalo: 5125 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Učenje C preko foruma

OdgovorNapisal/-a Kroko » 26 Sep 2016, 08:58

Tipi niso problem. Uporabiš pač stdint.h.
2, 3 in 4 pa znajo bit tečni ampak ne za popolne začetnike. Ko pa enkrat naletiš na to mino se za vedno naučiš. Takrat dojameš, zakaj so te v šolu učili takole:
Koda: Izberi vse
float a = 3.0f / 2.0f;
uint32_t b = (1UL<<33);
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4771
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1647 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Prejšnja

Vrni se na Programski jeziki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 2 gostov