[ Pobierz całość w formacie PDF ]
.J zyk C co do zasady pozwala na grupowanie podwy-ra e w wyra eniach w a nie za pomoc nawiasów.88 Rozdzia 4.Wyra eniaNo dobrze, ale jak zinterpretowa wyra enie bez nawiasów? Czy dla kompi-latora i + j * k to jest (i + j) * k, czy mo e jednak i + (j *k)? Takjak w wielu innych j zykach, w C potencjalne w tpliwo ci tego rodzaju rozstrzygasi na bazie regu pierwsze stwa (albo inaczej priorytetów) operatorów (ang.precedence).Dla operatorów arytmetycznych pierwsze stwo przedstawia si tak(od najwy szego priorytetu):+ - (jednoargumentowe)* / %+ - (dwuargumentowe)Operatory wymienione w tym samym wierszu (jak jednoargumentowe + i -)cechuj si identycznym pierwsze stwem.Kiedy w jednym wyra eniu wyst puje wiele operatorów, mo emy okre lisposób ich interpretowania (kolejno obliczania podwyra e ) przez kompilator,posi kuj c si nawiasami grupuj cymi podwyra enia, od operatorów o najwy -szym priorytecie po operatory o priorytecie najni szym.Oto przyk ady:i + j * k interpretuje si jako i + (j * k)-i * -j interpretuje si jako (-i) * (-j)+i + j / k interpretuje si jako (+i) + (j / k)Regu y pierwsze stwa operatorów nie s jednak wystarczaj ce do rozstrzy-gni cia w tpliwo ci co do kolejno ci obliczania podwyra e , kiedy w wyra eniuwyst puje wiele operatorów o tym samym priorytecie.W takiej sytuacji zastoso-wanie ma regu a czno ci operatorów (ang.associativity).O operatorze mówimy,e jest lewostronnie czny, kiedy grupuje operandy od lewej do prawej.Dwuar-gumentowe operatory arytmetyczne (*, /, %, + i -) s czne lewostronnie, wi c:i - j - k interpretuje si jako (i - j) - ki * j / k interpretuje si jako (i * j) / kOperator jest prawostronnie czny, kiedy grupuje operandy od prawej strony dolewej.Prawostronnie cznymi operatorami s jednoargumentowe operatory aryt-metyczne (+ i -), wi c:- + i interpretuje si jako -(+i)Regu y pierwsze stwa i czno ci operatorów s bardzo wa ne tak e w innychj zykach programowania, ale w C ich znaczenie jest szczególne.Z drugiej stronyprzy liczbie operatorów dost pnych w j zyku C (jest ich niemal pi dziesi t!) ma októry programista jest w stanie zapami ta czno i pierwsze stwo wszystkichtabela operatorów Dodatek Aoperatorów.Pisz c program w j zyku C, warto wi c mie pod r k tabelk opera-torów i zagl da do niej w razie w tpliwo ci.Mo na te je eliminowa poprzezjawne grupowanie podwyra e w nawiasach.PROGRAM Obliczanie cyfry kontrolnej kodu kreskowegoW latach siedemdziesi tych producenci dóbr szybko zbywalnych w Stanach Zjed-noczonych i Kanadzie zacz li znakowa swoje towary, umieszczaj c na nich kodykreskowe.Taki kod kreskowy albo inaczej kod UPC (universal product code)4.1.Operatory arytmetyczne 89identyfikuje zarówno producenta, jak i konkretny produkt.Ka dy kod kreskowyreprezentuje dwunastocyfrow liczb (wypisan zreszt najcz ciej pod kodemkreskowym).Oto przyk adowy kod kreskowy pizzy Stouffer:Cyfry:0 13800 15173 5s jawnie wypisane pod w a ciwym kodem kreskowym.Pierwsza z nich okre latyp towaru (dla wi kszo ci towarów jest to 0 albo 7, dla towarów wa onych 2,dla lekarstw i produktów farmaceutycznych 3, a dla kuponów 5).Pierwsza gru-pa pi ciu cyfr identyfikuje producenta towaru (13800 to kod Nestle USA FrozenFood Division, czyli dzia u mro onek ameryka skiego koncernu Nestle).Drugagrupa cyfr (znów pi ) to identyfikator produktu (okre laj cy mi dzy innymirozmiar opakowania).Ostatnia cyfra to cyfra kontrolna, której jedynym zadaniemjest pomoc w weryfikowaniu poprawno ci kodów kreskowych (poprawno cipoprzednich cyfr).Kiedy taki kod zostanie niepoprawnie zeskanowany, cyfra kon-trolna nie b dzie si zgadza z jedenastoma pierwszymi cyframi, wi c skanerkasowy odrzuci kod.Oto jedna z metod obliczania cyfry kontrolnej kodu kreskowego UPC:Dodaj cyfr pierwsz , trzeci , pi t , siódm , dziewi t i jedenast.Dodaj cyfr drug , czwart , szóst , ósm i dziesi t.Pomnó pierwsz sum przez 3 i dodaj j do drugiej sumy.Od wyniku odejmij 1.Oblicz reszt z dzielenia pomniejszonego wyniku przez 10.Odejmij reszt z dzielenia od 9.Na przyk adzie pizzy Stouffer otrzymamy pierwsz sum o warto ci (0+3+0+1+1+3) = 8; druga suma powinna wynosi (1+8+0+5+7) = 21.Suma iloczynu pierw-szej sumy przez 3 i drugiej sumy daje 45.45 odj 1 daje 44.Reszta z dzielenia44 przez 10 to 4.Ró nica 9 4 wynosi 5.Oto kilka innych przyk adów liczbowychkodów kreskowych UPC, które mo emy sprawdzi lepiej liczy , zamiast szukatych produktów w lodówkach:Jif Creamy Peanut Butter (18 uncji): 0 51500 24128 ?Ocean Spray Jellied Cranberry Sauce (8 uncji): 0 31200 01005 ?Odpowiedzi znajduj si u do u strony1.1Brakuj ce cyfry kontrolne to 8 (Jif) i 6 (Ocean Spray) przyp.autora.90 Rozdzia 4.Wyra eniaNapiszmy program, który b dzie oblicza cyfr kontroln dla dowolnego koduUPC.Program b dzie wymaga od u ytkownika wprowadzenia pierwszych 11cyfr kodu UPC, a nast pnie wypisze brakuj c cyfr kodu.Aby unikn omy ek,naka emy u ytkownikowi wprowadzanie cyfr kodu partiami: najpierw wprowadzisamotn cyfr z lewej, potem grup pi ciu cyfr kodu producenta, a na koniec pi tkcyfr kodu produktu.Sesja z programem b dzie wygl da a mniej wi cej tak:Podaj pierwsz cyfr kodu: 0Podaj pierwsz grup pi ciu cyfr kodu: 13800Podaj nast pn grup pi ciu cyfr kodu: 15173Cyfra kontrolna: 5Zamiast wczytywa poszczególne grupy cyfr jako liczby pi ciocyfrowe,b dziemy wczytywa je jako pi tk liczb jednocyfrowych.Wczytanie cyfr jakoosobnych liczb b dzie dla nas potem znacznie wygodniejsze.Nie trzeba b dziesi te martwi na przyk ad o to, e jedna z dwóch pi ciocyfrowych liczb niezmie ci si w zmiennej int (w niektórych starszych kompilatorach graniczna war-to typu int to 32 767).Aby wczyta pojedyncz cyfr , wykorzystamy funkcjscanf ze specyfikatorami konwersji %1d, odpowiadaj cymi liczbom jednocyfro-wym (w zapisie dziesi tnym).upc
[ Pobierz całość w formacie PDF ]
Tematy
IndexWheeler Secure Programming for Linux and UNIX HOWTO (2003)
Addison Wesley Programming for the Java Virtual Machine (1999)
Visual Studio 2005 Programowanie z Windows API w jezyku C
Wprowadzenie do programowania Neurolingwistycznego J O'Connor, J Seymour
Linux Programmer s Guide PL P.Niewiadomski
java programming unleashed [ EN ], Java2
Kernighan The C Programming Language 2e
WPP
Demeo James Podrecznik Akumulatora Orgonu
Gordon Ramsay Gordon Ramsay's Great British Pub Food