www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

C - začetki

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Okt 21, 2010 12:15 pm    Naslov sporočila:  C - začetki Odgovori s citatom

Ne poznam sintakse C-a. Vem kaj naredi sledeča funkcija:
Koda:
int set_PORTB_bit(int position, int value)
{
        // Sets or clears the bit in position 'position'
        // either high or low (1 or 0) to match 'value'.
        // Leaves all other bits in PORTB unchanged.
       
        if (value == 0)
        {
                PORTB &= ~(1 << position);      // Set bit # 'position' low
        }
        else
        {
                PORTB |= (1 << position);       // Set bit # 'position' high
        }
        return 1;
}


In razumem sledeče:

== pomeni pogoj enakosti

&= ne vem kaj pomeni morda boolov and z nekaj
~ ne vem, kaj pomeni, morda negacijo
|= ne vem kaj pomeni, verjetno boolov or
in kako za vraga razložiti
(1 << position)

In še prosim, da me napotite na neko interntno stran, kjer je sintaksa C-a razložena, da vas ne bom gnjavil s takimi vprašanje.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2099
Aktiv.: 11.29
Kraj: Trebnje

PrispevekObjavljeno: Čet Okt 21, 2010 12:25 pm    Naslov sporočila:   Odgovori s citatom

Mislim da je tule kar lepo razloženo nekaj stvari:
http://lemurboards.net/book/operatorji-in-priredilni-stavki.php
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Okt 21, 2010 12:38 pm    Naslov sporočila:   Odgovori s citatom

Hvala. Že berem!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bumbar
Član
Član



Pridružen-a: Sre 28 Okt 2009 20:25
Prispevkov: 62
Aktiv.: 0.33
Kraj: Cerkno

PrispevekObjavljeno: Čet Okt 21, 2010 1:16 pm    Naslov sporočila:   Odgovori s citatom

Bom poskušal na kratko:

Vrstica PORTB &= ~(1 << position); postavi na 0 bit na poziciji "position".

&= je kompaktnejši zapis za PORTB = PORTB & (~(1 << position));
Enako velja za operator |=.
~ je negacija.
Operatorja >> in << sta za pomik v desno oz. levo.

Verjetno bo najlažje razumeti tole:
Recimo, da želim postaviti bit4 na vrednost 1. To storim z:
PORTB |= (1 << 4); ali krajše PORTB |= 0x10;

Izraz na desni strani operatorja |= je v bistvu maska za logični OR.

Če želim bit 5 postaviti na 0, uporabim
PORTB &= ~(1 << 5); ali krajše PORTB &= 0xDF;

Upam, da bo pomagalo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Okt 21, 2010 2:34 pm    Naslov sporočila:   Odgovori s citatom

Imam občutek, da želi biti C malo skrivnosten in namenoma težko berljiv laiku.

Skrivnostno: PORTB |= (1 << 4);
Preprosto: PORTB = PORTB | 0x10; // to bi znal razumeti tudi laik
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Mihec
Član
Član



Pridružen-a: Pet 24 Mar 2006 20:10
Prispevkov: 415
Aktiv.: 1.77
Kraj: Mengeš

PrispevekObjavljeno: Čet Okt 21, 2010 3:08 pm    Naslov sporočila:   Odgovori s citatom

Problem pri teh čudnih zapish je v tem, da če jih znaš uporabljati, ti pri marsikaterih drugih opravilih prav pridejo.

V tvojem primeru je mogoče oboje enakovredno, vendar pri kakšnem drugem primeru s poenostavljeno logiko nebi daleč prišel. No, vsaj ne tako hitro.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Alex17
Član
Član



Pridružen-a: Ned 28 Feb 2010 21:46
Prispevkov: 476
Aktiv.: 2.56
Kraj: Ljutomer

PrispevekObjavljeno: Čet Okt 21, 2010 4:46 pm    Naslov sporočila:   Odgovori s citatom

Res se na začetku zdi, da bi bilo bolj pregledno in razumljivo napisano tako kot "preprosto" in da je skrivnostna varianta malo "čudna", vendar pozneje ugotoviš, da je prav v tem prednsot C-ja. Namreč ko je potrebno napisati kakih 30 enačb oz operacij (npr. spremenljivka = spremenljivka + (a+3)), še posebno pri kakšnih daljših imenih, se kar hitro navadiš na bližnjice (spremenljivka += a+3).
Govorim iz lastnih izkušenj, tudi sam sem namreč "začetnik" v C-ju in mi je do sedaj najljubši programski jezik.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Majster
Član
Član



Pridružen-a: Sob 14 Nov 2009 1:05
Prispevkov: 344
Aktiv.: 1.81
Kraj: Majšperk

PrispevekObjavljeno: Pet Okt 22, 2010 3:44 pm    Naslov sporočila:   Odgovori s citatom

Res je. C ima dosti stvari še v obliki kompaktnega zapisa. Ko se na stvar enkrat navadiš se ti zdi zelo priročna (kaj vem recimo a++; namesto a=a+1Wink.

Ampak:
You don't have to know every detail of C++ to write good programs.
(Bjarne Stroustrup, the creator of C++) Mr. Green

_________________
Smith & Wesson — the original point and click interface.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group