21:00 < adam_i`2> Btw Gynvael: na twoj stroen kiedys byl tam jaksi teks I cos tam psils o jak sa ustwione zminne w pamici itp to gidz to jest ? 21:01 <@Gynvael> adam_i`2: hmmm to byl art na 4programmers bodajze 21:01 -!- petherson [~petherson@host-81-190-92-20.gdynia.mm.pl] has joined #gynkurs 21:01 < petherson> cze ;P 21:01 < petherson> zaczelo sie juz ? ;] 21:01 <@Gynvael> hi 21:01 -!- b3x [buterux@pstryk.net] has joined #gynkurs 21:01 < b3x> ;> 21:01 <@Gynvael> hi 21:01 <@Gynvael> ok 21:01 <@Gynvael> wiec zaczynamy ;> 21:01 <@Gynvael> u mnie 21 ;> 21:01 <@Gynvael> hi all ;> 21:01 -!- phoenix__ [~phoenix@cdn170.neoplus.adsl.tpnet.pl] has quit ["Cya"] 21:01 <@Gynvael> dobra, najpierw slowko o zasadach ;> 21:01 < Blizzard> b3x: :)()))) 21:01 < Blizzard> siema ziom 21:01 <@Gynvael> zeby mniej wiecej balaganu nie bylo 21:01 < Blizzard> ;] 21:01 <@Gynvael> tyo powiedzmy ze wszyscy sa cicho jak nawijam 21:01 < b3x> yo Blizzard... Gynvael możesz +m 21:01 -!- __phoenix [^phoenix@ccv96.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:02 <@Gynvael> a jak powiem ze mozna mi przeszkadzac 21:02 < __phoenix> kurwa 21:02 <@Gynvael> tyo nadajecie pytania ;> 21:02 <@Gynvael> ok 21:02 <@Gynvael> tyo bede sie +m bawil 21:02 <@Gynvael> jak jest +m 21:02 <@Gynvael> to nikt nic nie mowi 21:02 < d0b0c0p> tu sie nie wita =) 21:02 <@Gynvael> ale zeby nikt nie czul sie urazony +m 21:02 < __phoenix> d0b0c0p wylaczylo mnie 21:02 -!- mode/#gynkurs [+ooo b3x Blizzard __phoenix] by Gynvael 21:02 < d0b0c0p> przygotwania... ;] 21:02 < d0b0c0p> Gynvael: i o platonosci... ;] 21:02 < d0b0c0p> k 21:02 < d0b0c0p> Gynvael: i wszystkim -o (oprocz ciebie) :P 21:02 -!- phoenix__ [~phoenix@cdn170.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:02 <@__phoenix> witaj 21:02 -!- mode/#gynkurs [+ooo d0b0c0p petherson adam_i`2] by Gynvael 21:02 < phoenix__> no juz 21:02 <@salv4tion> juz? 21:02 -!- mode/#gynkurs [+oo seraphin phoenix__] by Gynvael 21:02 <@phoenix__> na boice nie siedze 21:02 <@Gynvael> ok 21:02 <@Gynvael> JAK JEST +m TO CISZA ;> 21:02 <@Gynvael> ok 21:03 <@Gynvael> zaczynamy 21:03 <@Gynvael> wiec tak 21:03 -!- gRl [grl@host-81-190-204-245.gorzow.mm.pl] has joined #gynkurs 21:03 <@salv4tion> ja moge zadac pytanie? 21:03 < gRl> aloha :> 21:03 <@Gynvael> salv4tion: ty w szczegolnosci masz siedziec cicho ;ppppp 21:03 -!- mode/#gynkurs [+o gRl] by adam_i`2, d0b0c0p 21:03 <@Blizzard> Gynvael: daj +m jak zaczynasz;) 21:03 <@Gynvael> salv4tion: hehehe ok mow ;> 21:03 <@petherson> ej , no madafaka , dajcie mu cos powiedziec.............. 21:03 <@Gynvael> to jeszcze 3 sec ;> 21:03 <@salv4tion> wiec tak ;p 21:03 -!- BeOm_ [^r00t@ccv96.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:03 <@petherson> nie kazdy jest C guru ;/ 21:03 < BeOm_> :P 21:03 <@salv4tion> to raczej prosba ;p 21:03 < BeOm_> zaczelo sie? 21:03 <@Gynvael> salv4tion: szybko ;> 21:03 -!- mode/#gynkurs [+o b3x] by Blizzard 21:03 <@Gynvael> BeOm_: wlasnie zaczyna ;> 21:03 <@salv4tion> wymysl mi pomysl na napisanie programu :D 21:03 -!- mode/#gynkurs [+o BeOm_] by Blizzard 21:04 -!- mode/#gynkurs [+o BeOm_] by d0b0c0p 21:04 <@salv4tion> tylko nie os'a odrazu ;p 21:04 <@Gynvael> ... 21:04 <@salv4tion> ani inne cuda ;p 21:04 <@seraphin> ... 21:04 -!- mode/#gynkurs [+m] by Gynvael 21:04 <@Gynvael> ok 21:04 <@salv4tion> dobra 21:04 <@salv4tion> to inne 21:04 <@Gynvael> teraz cisza ;> 21:04 <@salv4tion> --; 21:04 <@salv4tion> ok 21:04 <@Gynvael> Wiec... 21:04 <@Gynvael> Na tej lekcji bedziemy sie bawic: 21:04 <@Gynvael> - errorcody - czyli to co program zwraca do systemu 21:04 <@Gynvael> - zmienne i jak je wypisywac 21:04 <@Gynvael> na poczatku beda proste rzeczy 21:04 <@Gynvael> a potem troche ciekawostek dla bardziej zaawansowanych 21:04 <@Gynvael> (jesli jakies wymysle na poczekaniu ;p) 21:05 <@Gynvael> zaczniemy od error code'ow 21:05 <@Gynvael> funkcja main jest postaci jak wiadomo nastepujacej (jest to jedna z postaci 21:05 <@Gynvael> int main(void) { 21:05 <@Gynvael> ... 21:05 <@Gynvael> return 0; 21:05 <@Gynvael> } 21:05 <@Gynvael> return 0; zwraca do systemu kod 0 21:05 <@Gynvael> zgodnie ze standardem POSIX jest to kod mowiacy "WSZYSTKO OK!" 21:06 <@Gynvael> jesli wiec return zwroci wartosc rozna od zera (np 2) to wtedy zostanie to przez system zinterpretowane 21:06 <@Gynvael> ze program mowi ze cos poszlo nie tak 21:06 <@Gynvael> http://gynvael.lunarii.org/temp/ex3.c 21:06 <@Gynvael> sciagnijcie ten krociootki program i skompilujecie 21:06 -!- nicon_ [~nicon@80.51.59.3] has joined #gynkurs 21:06 <@Gynvael> userzy windowsa 98 i innych niech sciagna tez 21:06 <@Gynvael> http://gynvael.lunarii.org/temp/errno.bat 21:06 -!- mode/#gynkurs [+o nicon_] by Gynvael 21:06 <@Gynvael> nicon_: (csii jak +m) 21:07 <@Gynvael> nicon_: -=210356=- <@Gynvael> http://gynvael.lunarii.org/temp/ex3.c 21:07 <@Gynvael> ok 21:07 <@Gynvael> i teraz 21:07 <@Gynvael> kompilacja wyglada prosto 21:07 <@Gynvael> gcc ex3.c -o ex3 21:07 <@Gynvael> pod linuxem zostanie stworzony plik ex3 21:07 <@Gynvael> pod windowsem ex3.exe 21:07 <@Gynvael> int main(void) 21:07 <@Gynvael> { return 2; 21:07 <@Gynvael> } 21:07 <@Gynvael> to jest w sumie caly program 21:07 <@Gynvael> po prostu zwraca do systemu kod 2 21:07 <@Gynvael> teraz 21:08 <@Gynvael> po kompilacji odpalamy na konsoli 21:08 <@Gynvael> ./ex3 (pod linem) 21:08 <@Gynvael> ex3 (pod winda) 21:08 <@Gynvael> i chcemy sprawdzic co program zwrocil 21:08 -!- Blizzus [blizzard@frycek.net] has joined #gynkurs 21:08 <@Gynvael> pod linuxem piszemy: echo $? 21:08 <@Gynvael> a pod winda odpalamy skrypt errno.bat 21:08 <@Gynvael> 21:07:36 LiTeStEp D:\tmp\kurs>gcc ex3.c -o ex3 21:09 <@Gynvael> 21:07:43 LiTeStEp D:\tmp\kurs>ex3 21:09 <@Gynvael> 21:07:44 LiTeStEp D:\tmp\kurs>errno 21:09 <@Gynvael> 2 21:09 -!- mode/#gynkurs [+o Blizzus] by d0b0c0p 21:09 <@Gynvael> gynvael@localhost:gynvael> gcc ex3.c -o ex3 21:09 <@Gynvael> gynvael@localhost:gynvael> ./ex3 21:09 <@Gynvael> gynvael@localhost:gynvael> echo $? 21:09 <@Gynvael> 2 21:09 <@Gynvael> taki powinien byc na obu systemach efekt 21:09 <@Gynvael> po co to jest? 21:09 <@Gynvael> na przyklad 21:09 <@Gynvael> zalozmy ze mamy program 21:09 <@Gynvael> ktory zwraca 0 jesli all ok 21:10 <@Gynvael> lub inna wartosc jesli cos nie tak poszlo 21:10 <@Gynvael> mozemy napisac prosty skrypt (czy to .bat, czy pod linem .sh) ktory sprawdzi 21:10 <@Gynvael> i ew wypisze blad ze sie cos nie udalo 21:10 <@Gynvael> pod linuxem przykladowo mozna napisac: 21:10 <@Gynvael> ./ex3 || echo Wystapil blad 21:10 <@Gynvael> albo 21:10 <@Gynvael> ./ex3 && echo Wszystko OK! 21:10 <@Gynvael> jako ze ./ex3 zwraca 2 21:11 <@Gynvael> to "Wystapil blad" zostanie wypisane 21:11 <@Gynvael> a "Wszystko OK!" juz nie 21:11 <@Gynvael> pod winda jest troche wiecej zabawy, i o tym bede mowil potem, jako ze skrypty .bat nie sa tematem dyskusji 21:11 <@Gynvael> wiec 21:11 <@Gynvael> dobrym stylem programisty 21:11 <@Gynvael> jest zwracac w main 0 jesli wszystko poszlo ok 21:11 <@Gynvael> lub wartosc niezerowa jesli cos poszlo nie tak 21:12 <@nicon_> imho najlepiej jeszcze dopisac wlasne komunikaty o bugach 21:12 <@Gynvael> taka informacja: skrypty Makefile automatycznie sprawdzaja co zwrocil program, jesli zwrocil cos niezerowego, to przerwa dzialanie 21:12 <@Gynvael> ok 21:12 <@Gynvael> tyle 21:12 <@Gynvael> teraz pytanka do tej czesci 21:12 -!- mode/#gynkurs [-m] by Gynvael 21:12 <@seraphin> ja mam pytanie 21:12 <@phoenix__> ja tez 21:12 <@seraphin> jak dopisac wlasny komunikat 21:12 <@salv4tion> a ja nie ;P 21:12 <@adam_i`2> Jakes pzyklady njeczstszych errocdow I co one oznaczja 21:12 <@phoenix__> czy to samo dotyczy C++ ? 21:12 <@d0b0c0p> phoenix__: tak :) 21:13 <@Gynvael> adam_i`2: w sumie nie natknalem sie na jakies ustandaryzowane errorcode'y ;> 21:13 <@phoenix__> Gyn to jest pokaz ;] 21:13 <@Gynvael> ale sprawdze dla pewnosci 21:13 <@Gynvael> phoenix__: to dotyczy kazdego jezyka ;> 21:13 <@Gynvael> seraphin: zazwyczaj robi sie to bezposrednio w C 21:13 <@phoenix__> aha 21:13 <@d0b0c0p> [21:05] return 0; zwraca do systemu kod 0 21:13 <@d0b0c0p> [21:05] zgodnie ze standardem POSIX jest to kod mowiacy "WSZYSTKO OK!" 21:13 <@d0b0c0p> gdzie mozna znalezc ten stadard? 21:13 <@Gynvael> if(blad) { puts("error! pliku nei znaleziono"); return 1; } 21:14 <@d0b0c0p> * standard 21:14 <@adam_i`2> Czyli 1 to standrdowe ze niam pliku ? 21:14 <@seraphin> Gynvael: aa zwyklym putsem? ok 21:14 <@nicon_> imho najlepiej jeszcze dopisac wlasne komunikaty o bledach 21:14 <@seraphin> d0b0c0p: nie pytak 21:14 <@seraphin> d0b0c0p: wolalbys nie znac tego standartu ;) 21:14 <@seraphin> d0b0c0p: on nie dotyczny C 21:14 <@Gynvael> d0b0c0p: http://www.knosof.co.uk/posix.html tam bym szukal 21:14 <@Gynvael> ale on nie dotyczy C 21:14 * b3x prosi o pozostawienie logów na serwerze do jutra 21:14 <@Gynvael> tylko systemow operacyjnych (budowy) 21:14 <@seraphin> dotyczy UNIX'a 21:15 <@salv4tion> b3x: ok 21:15 <@Gynvael> adam_i`2: czekaj, sprawdze i potem ci powiem czy sa standardowe, bo osobicei nie znam.. tylko tyle ze 0 to wszystko ok 21:15 <@d0b0c0p> to nie pytam :) 21:15 <@seraphin> Gynvael: chyba sa 21:15 <@phoenix__> !time 21:15 -__phoenix:#gynkurs- 21:16:55 21:16 * Blizzus ma propozycje aby ktos skladowal wszystkie logi z odcinkow na jakims koncie 21:16 <@seraphin> Gynvael: errorcode 2 to chyba nieodpowiednia liczba argumentow 21:16 <@seraphin> Gynvael: a pozatym to jak sie mają segfault i errorcode zwracany? 21:16 <@BeOm_> dobra.jak tteraz wrucic do Uw_team? na irssi 21:16 <@Gynvael> seraphin: serio nie wiem ;> ja dobieram wg widzimisie ;> wiec narazie nie moge powiedziec 21:16 <@salv4tion> Blizzus: u mnie moga byc 21:17 <@Gynvael> seraphin: segfault to zupelnie inna bajka 21:17 <@salv4tion> tzn u adama na koncie 21:17 <@gRl> BeOm_: alt + 2 pewnie 21:17 <@Blizzus> salv4tion: ok tylko ponumeruj je 1,2,3.... 21:17 <@seraphin> Gynvael: zwraca jakiegos errorcode czy cos? 21:17 <@Gynvael> seraphin: wysyla sygnal ;> 21:17 <@Gynvael> seraphin: sygnaly to inna bajka ;> serio ;> 21:17 <@seraphin> ok 21:17 <@seraphin> to innym razem 21:17 <@Gynvael> adam_i`2: z tego co google mowi 21:17 <@seraphin> kontynuujemy? 21:17 <@BeOm_> thanks 21:17 <@nicon_> segfault to chyba 11 tak? 21:17 <@Gynvael> adam_i`2: to kazda aplikacja ma wlasna liste numerkow i bledow 21:17 <@Gynvael> adam_i`2: nie ma zadnego standardu 21:17 <@d0b0c0p> BeOm_: alt + nr_okna 21:17 <@d0b0c0p> Gynvael: zebym nie zapomnial... proponuje kiedys omowic (jesli mozesz) sytuacje wyjatkowe 21:18 <@adam_i`2> ok 21:18 <@salv4tion> ehh 21:18 <@salv4tion> moze dalej ? 21:18 <@salv4tion> chyba wszystko jasne jest 21:18 <@seraphin> jedziemy? 21:18 <@nicon_> let`s rock ;] 21:18 <@d0b0c0p> jesli wszystko ok to napisac ok i jedziemy dalej (jesli gyn pozowli ;-)) 21:19 <@salv4tion> ok 21:19 <@nicon_> ok 21:19 <@Gynvael> dobra 21:19 <@Gynvael> imgo dalej 21:19 <@adam_i`2> ok 21:19 <@Gynvael> jak by co to priv 21:19 <@Gynvael> ok 21:19 -!- mode/#gynkurs [+m] by Gynvael 21:19 <@Gynvael> dobra 21:19 <@Gynvael> tyle o error codach 21:19 <@Gynvael> jak by co to http://www.google.com/search?q=%2Breturn+%2Bcodes&sourceid=mozilla&start=0&start=0&ie=utf-8&oe=utf-8 21:19 <@Gynvael> tam mozna znalesc listy dla roznych aplikacji 21:19 <@Gynvael> ;> 21:19 <@Gynvael> ale dalej 21:20 <@Gynvael> teraz ZMIENNE 21:20 <@Gynvael> co to jest zmienna ? 21:20 <@Gynvael> formalnie, jest to fragmentw pamieci ktoremu nadano nazwe i powiedziano co on reprezentuje i jak go mozna uzywac 21:20 <@Gynvael> mniej formalnie 21:20 <@Gynvael> powiedzmy ze zmienna moze byc pudelko zapalek 21:20 <@Gynvael> a jego wartoscia ilosc zapalek w tym pudelku 21:21 <@Gynvael> powiedzmy ze mamy 3 pudelka 21:21 <@Gynvael> "a" "b" i "c" ;> 21:21 <@Gynvael> mozemy powiedziec ze w pudelku "a" jest 5 zapalek 21:21 <@Gynvael> w C bysmy napisali 21:21 <@Gynvael> a = 5; 21:21 <@Gynvael> mozemy powiedziec ze w "b" jest 8 21:21 <@Gynvael> b = 8; 21:21 <@Gynvael> mozemy powiedziec ze w "c" jest o 3 zapalki wiecej niz w "b" 21:21 <@Gynvael> c = b + 3; 21:22 <@Gynvael> teraz tak 21:22 <@Gynvael> zmiennych jest pare rodzajow 21:22 <@Gynvael> roznia sie one ILOSCIA ZAJMOWANYCH BAJTOW 21:22 <@Gynvael> oraz TYPEM JAKI REPREZENTUJA 21:22 <@Gynvael> typy powtarzaja sie z lekcji matematyki glownie 21:22 <@Gynvael> mianowicie sa typy CALKOWITE, NATURALNE i RZECZYWISTE (sa tez typy tekstowe, ale to inna bajka i o tym potem) 21:22 <@Gynvael> po co sa zmienne ? 21:23 <@Gynvael> w sumie jest to cala esensja programowania 21:23 <@Gynvael> glownie sluza przechowywaniu informacji 21:23 <@Gynvael> i operowaniu na nich (na informacjach) 21:23 <@Gynvael> ;> 21:23 <@Gynvael> http://gynvael.lunarii.org/temp/ex4.c 21:23 <@Gynvael> sciagnijcie ten kod 21:24 <@Gynvael> pojawiaja sie tam glownie znane rzeczy 21:24 <@Gynvael> #include 21:24 <@Gynvael> definicja main 21:24 <@Gynvael> return 0; 21:24 <@Gynvael> oraz pare nowych 21:24 <@Gynvael> mianowicie: DEKLARACJA ZMIENNEJ 21:24 <@Gynvael> int zmienna; 21:24 <@Gynvael> OGOLNY ZAPIS DEKLARACJI wyglada tak: 21:24 <@Gynvael> TYP NAZWA; 21:24 <@Gynvael> typem jest u nas "int" 21:25 <@Gynvael> "int" jest skroconym angielskim slowem "integer" znaczacym "calkowite" 21:25 <@Gynvael> a "zmienna" jest nazwa 21:25 <@Gynvael> (nazwa zmiennej jest budowana identycznie jak nazwa funkcji, czyli litery duze, male, znak _ i cyfry (ale one nie moga byc pierwszym znakiem) 21:26 <@Gynvael> int zmienna; mowi kompilatorowi ze "zmienna" jest ZMIENNA o typie INT, czyli ze jest FRAGMENTEM PAMIECI DO KTOREGO BEDZIEMY ZAPISYWAC LICZBY CALKOWITE 21:26 <@Gynvael> nastepna linijka jest "zmienna = 12;" 21:26 <@Gynvael> czyli tzw NADANIE WARTOSCI ZMIENNEJ 21:26 <@Gynvael> to tak jak bysmy do pudelka "zmienna" wrzucili 12 zapalek ;> 21:26 <@Gynvael> od tej chwili zmienna ma WARTOSC 12 ;> 21:26 <@Gynvael> printf("zmienna ma wartosc %i\n", zmienna); 21:27 <@Gynvael> to natomiast wypisuje na konsole WARTOSC zmiennej 21:27 <@Gynvael> skompilujmy program 21:27 <@Gynvael> gcc ex4.c -o ex4 21:27 <@Gynvael> i odpalmy 21:27 <@Gynvael> pod winda ex4, pod linem ./ex4 21:27 <@Gynvael> <@Gynvael> sciagnijcie ten kod 21:27 <@Gynvael> -- 21:27 <@Gynvael> 21:07:45 LiTeStEp D:\tmp\kurs>gcc ex4.c -o ex4 21:27 <@Gynvael> 21:26:31 LiTeStEp D:\tmp\kurs>ex4 21:27 <@Gynvael> zmienna ma wartosc 12 21:28 <@Gynvael> powinno taki efekt da 21:28 <@Gynvael> *dac 21:28 <@Gynvael> printf("zmienna ma wartosc %i\n", zmienna); 21:28 <@Gynvael> pytanie brzmi, co to jest 21:28 <@Gynvael> printf to jest FUNKCJA ZADEKLAROWANA W STDIO.H 21:28 <@Gynvael> przyjmuje ona PRZYNAJMNIEJ jeden argument, tak zwany CIAG FORMATUJACY 21:28 -!- d0b0c0p [~user@aag2.internetdsl.tpnet.pl] has quit [Ping timeout] 21:28 <@Gynvael> printf pochodzi od angielskich slow PRINT FORMATED (wydrukuj sformatowane) 21:29 <@Gynvael> czym jest ciag formatujacy ? 21:29 <@Gynvael> w tym przykladzie jest uzyty 21:29 <@Gynvael> "zmienna ma wartosc %i\n" 21:29 <@Gynvael> taki ciag 21:29 <@Gynvael> oczywiscie pierwsza czesc "zmienna ma wartosc 21:29 <@Gynvael> to napis 21:29 <@Gynvael> natomiast tajemnicze %i\n to: 21:30 <@Gynvael> %i - w to miejsce zostanie podstawiona wartosc PODANEJ zmiennej ktora jest typu calkowitego (%i.. i jak integer) 21:30 -!- adam_i`2 [~none@amw17.neoplus.adsl.tpnet.pl] has quit [Connection reset by peer] 21:30 -!- adam_i`3 [~none@amm200.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:30 <@Gynvael> \n to tzw znak nowej linii... wypisanie tego znaku na ekran jest rownowazne nacisnieciu entera w edytorze teksty 21:30 -!- mode/#gynkurs [+o adam_i`3] by Gynvael 21:30 <@Gynvael> *tekstu 21:30 <@Gynvael> czyli kursor idzie na poczatek nowej linii 21:31 -!- nicon_ [~nicon@80.51.59.3] has quit [Connection reset by peer] 21:31 <@Gynvael> \n zostanie przez kompilator w momencie kompilacji skonwertowany na znak ASCII o kodzie 10 21:31 <@Gynvael> (pod winda beda to dwa znaki, 13 i 10, ale to inna bajka) 21:31 <@Gynvael> nastepnie jaki drugi PARAMETR funkcji printf podana jest zmienna 21:32 <@Gynvael> printf("zmienna ma wartosc %i\n", zmienna); 21:32 <@Gynvael> czyli mamy cos takiego 21:32 <@Gynvael> przy uruchomieniu (niejawnie) beda mniej wiecej takie przeksztalcenia realizowane 21:32 <@Gynvael> "zmienna ma wartosc %i\n", zmienna 21:32 <@Gynvael> "zmienna ma wartosc (TU WARTOSC zmienna)\n" 21:32 <@Gynvael> zmienna ma wartosc 12 21:32 <@Gynvael> "zmienna ma wartosc 12\n" 21:32 <@Gynvael> i to zostanie wypisane na ekran 21:32 <@Gynvael> przykladowo 21:32 <@Gynvael> mozna zrobic: 21:32 -!- Blizzard [blizzard@l33t.zief.pl] has quit [EOF From client] 21:33 <@Gynvael> printf( "%i > %i\n", 12, 9 ); 21:33 <@Gynvael> wtedy przeksztalcenia beda wygladac nastepujaco 21:33 <@Gynvael> "%i > %i\n", 12, 9 21:33 <@Gynvael> "12 > %i\n", 9 21:33 <@Gynvael> "12 > 9\n" 21:33 <@Gynvael> i to zostanie wypisane 21:33 <@Gynvael> printf jest bardzo duzym kombajnem 21:33 <@Gynvael> jak mozna zauwazyc rozni sie od puts tym ze: 21:33 <@Gynvael> - nie dodaje znaku nowej linii (\n) na koneic linii jak to puts robil 21:34 -!- nicon_ [~nicon@80.51.59.3] has joined #gynkurs 21:34 <@Gynvael> - moze wstawiac wartosci zmiennych/stalych w tekst 21:34 -!- mode/#gynkurs [+o nicon_] by Gynvael, salv4tion 21:34 <@salv4tion> lol 21:34 <@phoenix__> cii 21:34 <@Gynvael> ok 21:34 <@Gynvael> za chwile bedzie o: 21:34 <@Gynvael> - wielkosci zmiennych 21:34 <@Gynvael> - rozne typy zmiennych i jak je wypisac 21:35 <@Gynvael> a teraz pytania, ale prosil bym zeby nie dotyczyly rzeczy ktore beda za chwile 21:35 -!- mode/#gynkurs [-m] by Gynvael 21:35 <@Gynvael> jakies pytania ?;> 21:35 <@seraphin> w8 21:35 <@salv4tion> ;> 21:35 <@adam_i`3> Ja mowie "ok" bo nimam pytan 21:35 <@Gynvael> czy jedziemy dalej ?;> 21:35 <@phoenix__> czy wielkosc zmikennych to chodzi o sizeof() ? 21:35 <@salv4tion> ja chyba tez ok mowie 21:35 <@seraphin> sec 21:35 <@salv4tion> wszystko jasne 21:35 <@Gynvael> phoenix__: tak 21:35 <@phoenix__> bo chcialem zadac na tem temat pytanie 21:35 <@salv4tion> to potem -- 21:35 <@seraphin> ja mam pytanie 21:35 -!- Blizzard [~blizzard@l33t.zief.pl] has joined #gynkurs 21:35 <@Gynvael> phoenix__: tzn sizeof jest metoda pobrania wielkosci zmiennej, ale o tym za chwile 21:35 <@phoenix__> Gynvael: aha to potem zadam 21:35 <@adam_i`3> phoenix__: milo nibyc o ty m co bedze za chwielm 21:35 -!- mode/#gynkurs [+o Blizzard] by salv4tion 21:35 <@Gynvael> seraphin: mow 21:36 <@Blizzus> o jakie "puts" chodzi? 21:36 <@seraphin> ale to chyba troche niezwiazane 21:36 <@Gynvael> Blizzus: o to z rannej czesci, w topicu jest link do loga 21:36 <@phoenix__> adam_i`3: wiem ale sie pytam 21:36 <@Gynvael> seraphin: powiedz, zobaczymy 21:36 <@Blizzus> no nie zdarzylem przeczytac 21:36 <@Blizzus> ok 21:36 <@seraphin> jak to sie dzieje ze do printf() mozna wsadzic nieokreslona liczbe arguemntow 21:36 <@seraphin> i printf sie nie gubi z nimi 21:36 <@Gynvael> seraphin: faktycznie niezwiazane ;> 21:37 <@seraphin> to kiedy indziej ;p 21:37 <@Gynvael> seraphin: powiedzmy ze sa funkcje ktore moga nieokreslona liczbe argumentow przyjmowac 21:37 <@Gynvael> seraphin: i sa metody zeby sie nie pogubic 21:37 <@Gynvael> seraphin: po wykladzie ci to moge przestawic, albo odesle cie do mojego arta 21:37 <@seraphin> odeslij ;p 21:37 <@Gynvael> 3 sec 21:37 <@Gynvael> inne pytania ? 21:38 <@nicon_> fuckane lagi 21:38 -!- nicon_ [~nicon@80.51.59.3] has quit ["Reconnecting"] 21:38 <@phoenix__> Gyn nie widzac 21:38 <@phoenix__> odeslij chcetnie poczytam 21:38 -!- nicon_ [~nicon@80.51.59.3] has joined #gynkurs 21:38 -!- mode/#gynkurs [+o nicon_] by phoenix__ 21:38 <@Gynvael> seraphin: http://4programmers.net/article.php?id=470 tam rzuc okiem na tablice argumentow.. jak sa nieokrelone liczby, to jest to jedna z metod zeby takie parametry odczytac 21:38 <@Gynvael> seraphin: a dokladniej po wykladzie ;> 21:38 <@Gynvael> ok 21:39 <@Blizzus> Gynvael: te puts 21:39 <@phoenix__> Gynvael: ja tez bym chetnie posluchal to prosze tutaj nie na priv ;] 21:39 <@Blizzus> jaki ma odpowiednik w c++ 21:39 <@Blizzus> ? 21:39 <@Gynvael> Blizzus: hmm w sumie nei ma, ale cout dziala w czesci podobnie (z tym ze to kombajn) 21:39 <@Gynvael> Blizzus: ew ma odpowiednik "puts" z "cstdio" ;p 21:39 <@Gynvael> ok 21:39 <@Gynvael> cos jeszcze ? 21:39 <@Blizzus> e dobra;P 21:39 <@Blizzus> nie;] 21:39 <@salv4tion> Gynvael: dalej ;> 21:39 <@Gynvael> ok 21:39 <@salv4tion> chyba all zrozumieli 21:40 -!- mode/#gynkurs [+m] by Gynvael 21:40 <@Gynvael> lecimy dalej 21:40 <@Gynvael> teraz tak 21:40 <@Blizzus> Gynvael: jece jedno 21:40 <@Blizzus> podaj potem link do tego arta 21:40 <@Gynvael> Blizzus: mow 21:40 <@Gynvael> k 21:40 <@Gynvael> ok 21:40 <@Blizzus> z tym niepogubiewniem sie w argumentach 21:40 <@Gynvael> wiec 21:40 <@Blizzus> ok 21:40 <@Gynvael> kazdy wie co to bajt ;> 21:40 <@salv4tion> ja mam pytanie ale nie zwiazane z tematem ale to pozniej zapytam :> 21:40 <@Gynvael> csii, +m jest ;p 21:41 <@Gynvael> kazdy wie co to bajt ;> 21:41 <@Gynvael> to jest 8 bitow 21:41 <@Gynvael> znaczy to mniej wiecej tyle 21:41 <@Gynvael> ze mozna uzyskac DOKLADNIE 256 kombinacji bitow 21:41 <@Gynvael> (2 do potegi 8) 21:41 <@Gynvael> czyli 21:41 <@Gynvael> 8 bitow mozna uzyc 21:41 <@Gynvael> zeby zapisac liczbe od 0 do 255 21:41 <@Gynvael> albo jesli sie umowimy na jakis specialny zapis 21:41 <@Gynvael> to od -128 do 127 21:42 <@Gynvael> wazne ze jest 255 kombinacji mozliwych 21:42 <@Gynvael> po wielkosci zmiennej 21:42 <@Gynvael> mozna okreslic jej spodziewany zakres 21:42 <@Gynvael> czyli ile mozna MAXYMALNIE wpisac 21:42 <@Gynvael> a ile MINIMALNIE 21:42 <@Gynvael> przykladowo 21:42 <@Gynvael> wielkosc "int" to CZTERY (4) bajty 21:42 <@Gynvael> mozemy tam zapisac 2 do 32 kombinacji 21:43 <@Gynvael> 4294967296 21:43 <@Gynvael> to jest tyle 21:43 <@Gynvael> dokladnie 4*1024*1024 21:43 <@Gynvael> ALE 21:43 <@Gynvael> int jest typem calkowitym 21:43 <@Gynvael> oznacza to ze POLOWA zakresu idzie na liczby ujemne 21:43 <@Gynvael> wiec mozna zapisac: 21:44 <@Gynvael> od -2147483648 do 2147483647 21:44 -!- d9k [criptin@cfg20.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:44 <@Gynvael> innych wartosci (wiekszych lub mniejszych) 21:44 <@Gynvael> int nie przyjmie ;> 21:44 <@Gynvael> http://gynvael.lunarii.org/temp/ex5.c 21:44 <@Gynvael> sciagnijcie to 21:44 -!- lemix [~lemixx@proxy.iginet.net] has joined #gynkurs 21:44 -!- mode/#gynkurs [+oo d9k lemix] by Gynvael 21:44 <@Gynvael> program rozni sie niewiele od poprzedniego 21:45 <@Gynvael> printf("i wielkosc %i bajty\n", sizeof(zmienna)); 21:45 <@Gynvael> printf("po za tym typ int ma wielkosc %i bajty\n", sizeof(int)); 21:45 <@Gynvael> doszly te dwie linijki 21:45 <@Gynvael> widac tam wykorzystane jakies "sizeof" 21:45 <@Gynvael> sizeof(argument) jest MAKREM (nie jest funkcja!) 21:45 <@Gynvael> ktora wstawia w miejsce sizeof(argument) WIELKOSC W BAJTACH ARGUMENTU 21:45 <@Gynvael> argumentem moze byc typ 21:45 <@Gynvael> badz zmienna 21:45 <@Gynvael> przykladowo 21:45 <@Gynvael> sizeof(int) zwroci 4 21:46 <@Gynvael> skompilujmy i odpalmy ten progs 21:46 <@Gynvael> gcc ex5.c -o ex5 21:46 <@Gynvael> ex5 (na linie ./ex5) 21:46 <@Gynvael> 21:26:34 LiTeStEp D:\tmp\kurs>gcc ex5.c -o ex5 21:46 <@Gynvael> 21:45:24 LiTeStEp D:\tmp\kurs>ex5 21:46 <@Gynvael> zmienna ma wartosc 12 21:46 <@Gynvael> i wielkosc 4 bajty 21:46 <@Gynvael> po za tym typ int ma wielkosc 4 bajty 21:46 <@Gynvael> powinnismy cos takiego otrzymac 21:46 <@Gynvael> jak widac za %i w DRUGIM PRINTF zostalo podstawione 4 21:47 <@Gynvael> tak samo w trzecim ifie 21:47 <@Gynvael> po co komu jest znac wielkosc jakiejs zmiennej ? 21:47 <@Gynvael> - zeby nie probowac zapisac wiecej do danej zmiennej 21:47 <@Gynvael> - zeby ustrzec sie przykrych niespodzianek 21:47 <@Gynvael> jak mowilem wczesniej, zmiennych jest troche rodzajow 21:48 <@Gynvael> mniejszym odrobine typem niz "int" jest typ "short" (wczesniej "short int") 21:48 <@Gynvael> sizeof(short) wynosi 2 21:48 <@Gynvael> jest to typ calkowity 21:48 <@Gynvael> 2 czyli 16 bitow, czyli 2 do 16 roznych kombinacji 21:49 <@Gynvael> podzielonych na czesc ujemna i dodatnia 21:49 <@Gynvael> dokladny zasieg to 21:49 <@Gynvael> -32768 do 32767 21:49 <@Gynvael> teraz 21:49 <@Gynvael> co sie stanie 21:49 <@Gynvael> kiedy przekroczymy dany zakres ? 21:49 <@Gynvael> na przyklad 21:49 <@Gynvael> wezmy zmienna: 21:49 <@Gynvael> short zmienna; 21:49 <@Gynvael> zmienna = 32767; 21:50 <@Gynvael> czyli zmienna przyjela GRANICZNA wartosc 21:50 <@Gynvael> co sie stanie kiedy zwiekszymy zmienna o 1 ? 21:50 <@Gynvael> zmienna = zmienna + 1; ? 21:50 <@Gynvael> jaka wartosc bedzie miala zmienna ? 21:50 <@Gynvael> odpowiedz brzmi: 21:50 -!- nicon_ [~nicon@80.51.59.3] has quit [Ping timeout] 21:50 <@Gynvael> -32768 21:50 <@Gynvael> czyli.. dla komputera po maxymalnej dodatniej, jest minimalna ujemna 21:50 <@Gynvael> dla nas moze wydawac sie to dziwne 21:50 <@Gynvael> bardzo dziwne 21:51 <@Gynvael> ale ma to swoje uzasadnienie, o ktorym bedzie pozniej ;> 21:51 <@Gynvael> jesli chcemy zeby nasze programy dzialaly 21:51 <@Gynvael> musimy byc pewni ze nie przekroczymy wielkosci danej zmiennej 21:51 <@Gynvael> ok 21:51 <@Gynvael> teraz pare slow o tzw inkrementacji 21:52 <@Gynvael> czyli ZWIEKSZENIU ZMIENNEJ O 1 21:52 <@Gynvael> w C mozna to zrobic na 3 sposoby: 21:52 <@Gynvael> zmienna = zmienna + 1; 21:52 <@Gynvael> zmienna += 1; 21:52 <@Gynvael> zmienna ++; 21:52 <@Gynvael> wszystkie 3 sposoby sa rownowazne i dadza taki sam rezultat 21:52 <@Gynvael> natomiast przyjelo sie uzywac NAJKROTSZEGO sposobu, czyli zmienna++; 21:52 <@Gynvael> mozna to rowniez zapisac jako ++zmienna; 21:53 <@Gynvael> jest droba roznica, ale o niej pozniej 21:53 <@seraphin> moge? a jest cos takieog jak inc(zmienna) z pascala boadajze? 21:53 <@Gynvael> seraphin: nie, nie ma 21:53 <@phoenix__> cii pytanie potem 21:53 <@Gynvael> ok 21:53 <@Gynvael> dalej 21:53 <@Gynvael> sizeof mozna uzywac zarowno z nazwa zmiennej 21:53 <@Gynvael> jak i z typem 21:53 <@Gynvael> mozemy napisac sizeof(zmienna) 21:53 <@Gynvael> i sizeof(int) 21:53 <@Gynvael> przykladowo 21:53 <@Gynvael> int zmienna; 21:54 <@Gynvael> printf( "%i == %i\n", sizeof(zmienna), sizeof(int)); 21:54 <@Gynvael> to zostanie zmienione przed kompilacja na 21:54 <@Gynvael> printf( "%i == %i\n", 4, 4); 21:54 <@Gynvael> a przy uruchomieniu powstanie nastepujaca niejawna konwersja 21:54 <@Gynvael> "%i == %i\n", 4, 4 21:54 <@Gynvael> "4 == %i\n", 4 21:54 <@Gynvael> "4 == 4\n" 21:54 <@Gynvael> i to zostanie wypisane 21:54 <@Gynvael> teraz tak 21:54 <@Gynvael> liczenie zasiegu zmiennej za pomoca ILOSCI BITOW / BAJTOW 21:55 <@Gynvael> jest DOBRA I DZIALA TYLKO DLA TYPOW CALKOWITYCH I NATURALNYCH 21:55 <@Gynvael> typy RZECZYWISTE sa zapisywane W DZIWNY SPOSOB (o ktorym za parenascie lekcji) i wielkosc liczy sie inaczej 21:55 <@Gynvael> ok 21:55 <@Gynvael> a teraz 21:56 <@Gynvael> jakie sa w C typy zmiennych 21:56 <@Gynvael> standardowe, akceptowane wszedzie 21:56 <@Gynvael> http://gynvael.lunarii.org/temp/ex6.c 21:56 <@Gynvael> sciagnijcie program 21:56 <@Gynvael> wiec 21:56 <@Gynvael> /* typy calkowite */ 21:56 <@Gynvael> int a = -1; 21:56 <@Gynvael> short b = -2; 21:56 <@Gynvael> char c = -3; 21:56 <@Gynvael> long d = -4; 21:56 <@Gynvael> sizeof(int) da 4 21:56 <@Gynvael> sizeof(short) da 2 21:57 <@Gynvael> sizeof(char) da 1 21:57 <@Gynvael> sizeof(long) da 4 21:57 <@Gynvael> pare uwag tutaj 21:57 <@Gynvael> int i long sa TECHNICZNIE RZECZ BIORAC TYM SAMYM 21:57 <@Gynvael> natomiast DLA KOMPILATORA SA TO ROZNE TYPY 21:57 <@Gynvael> natomiast "char" jest jednobajtowym typem 21:57 <@Gynvael> uzywany jest on w dwojaki sposob 21:58 <@Gynvael> albo do przechowywania liczby (od -128 do 127) 21:58 <@Gynvael> albo do przechowywania KODU ASCII JEDNEGO ZNAKU 21:58 <@Gynvael> ale o tym drugim zastosowaniu pozniej 21:58 <@Gynvael> zmienne o roznych typach MOZNA miedzy soba dodawac, mnozyc etc 21:58 <@Gynvael> wykonywac rozne operacje arytmetyczne 21:59 * Blizzus dopowiedz tak btw cos o tych kodach ASCII bo ja o tym prawie nic nie wiem pewnie jak polowa reszty 21:59 <@Gynvael> z tym ze trzeba miec na uwadze, ze WYNIK ZOSTANIE OBCIETY DO TYPU ZMIENNEJ KTOREMU NADAJEMY WARTOSC 21:59 -!- seraphin is now known as seraph`pytanie 21:59 <@Gynvael> Blizzus: o tym pozniej ;> 21:59 <@Blizzus> ok 21:59 <@Gynvael> teraz jeszcze przyklad 21:59 <@Gynvael> i pytania 21:59 <@phoenix__> cii 21:59 <@Gynvael> mianowiscie 21:59 <@Gynvael> zalozmy: 21:59 <@Gynvael> int a,b; 21:59 <@Gynvael> char c; 21:59 <@Gynvael> a = 123; 21:59 <@Gynvael> b = 123; 21:59 <@Gynvael> c = a+b; 21:59 <@Gynvael> jako ze c ma zasieg od -128 do 127 22:00 <@Gynvael> a 123+123 (246) to wiecej niz 127 22:00 <@Gynvael> wynik zapisany do c bedzie ZLY, FALSZYWY 22:00 <@Gynvael> i na to trzeba glownie uwazac 22:00 <@Gynvael> gdyby "c" byl typu short albo int, nie bylo by problemu 22:00 <@Gynvael> ok, za chwile o typach NATURALNYCH I RZECZYWISTYCH 22:00 <@Gynvael> a teraz pytania 22:00 -!- mode/#gynkurs [-m] by Gynvael 22:00 -!- seraph`pytanie is now known as seraphin 22:01 <@seraphin> to tak 22:01 <@gRl> Gynvael: a ktore najszybsze (z tych przykladow z inkrementacja) 22:01 <@phoenix__> i++ 22:01 <@seraphin> czy przy prownywaniu typow calkowitych roznych trzeba uzywac rzutowania 22:01 <@Gynvael> gRl: obecnie kompilatory optymalizuja, wiec bez roznicy 22:01 <@Gynvael> seraphin: nie, nie trzeba 22:01 <@seraphin> Gynvael: na zadnym z typow? 22:02 <@Gynvael> seraphin: przy porownywaniu miedzy typami tego samego rodzaju nie trzeba 22:02 <@seraphin> Gynvael: zadne porownania na typach calkowitych nie wymagaja rzutowania? 22:02 <@Gynvael> seraphin: ale np wypada zrzutowac jesli typ rzeczywisty z calkowitym porownujesz 22:02 <@Gynvael> seraphin: albo naturalny z calkowitym 22:02 <@Gynvael> seraphin: zadne, bo przy porownaniu juz znane sa wartosci 22:02 <@Gynvael> seraphin: i zostaly wczesniej obciete 22:02 <@Gynvael> seraphin: wiec rzutowanie nie jest potrzebne 22:02 <@seraphin> hmmm a jak wyglada porownywanie signed i unsigned? 22:03 <@Gynvael> dla niewiedzacych: rzutowanie (eng casting) to KONWERSJA JEDNEGO TYPU DO INNEGO 22:03 <@Gynvael> seraphin: wtedy juz musisz rzutowac 22:03 <@Gynvael> seraphin: bo inaczej kompilator wygeneruje WARNING (ostrzerzenie) 22:03 <@Gynvael> (ostrzezenie ;p) 22:03 <@adam_i`3> A = (int)a ? 22:03 <@Blizzus> Gynvael: ja mam pytanie co do tych argumentow w printf, a konkretniej printf( "%i > %i\n", 12, 9 ); -jakby tu bylo w cudzyslowiu jeszcze jedno %i to co by bylo i drugie pytanie co z tymi ASCII 22:03 <@Gynvael> adam_i`3: tzn ? 22:04 <@adam_i`3> To jest zutowanie ? 22:04 <@gRl> rzutowanie 22:04 <@Gynvael> Blizzus: jak by bylo jeszcze jedno, a nie bylo by wiecej podanych zmiennych (3 %i, ale 2 zmienne) to wypisal by zamiast %i jakies z powietrza (stosu ;p) wziete smieci 22:04 <@gRl> adam_i`3: ta 22:04 <@Gynvael> adam_i`3: tak 22:04 <@Gynvael> adam_i`3: jedna z metod ;> jeszcze jest metoda pointerowa, ale to troche inaczej dziala 22:05 <@Gynvael> Blizzus: w sumei o ascii mialem mowic jutro ;> 22:05 <@Gynvael> Blizzus: ale moge 3 slowa powiedziec 22:05 <@Gynvael> ok 22:05 <@Gynvael> cos jeszczxe ? 22:05 <@Gynvael> czy kontynuowac ? 22:05 <@salv4tion> ta... 22:05 <@seraphin> Gynvael: co mi da np signed a = -10; unsigned int b 30; a - (signed) b 22:05 <@Blizzus> Gynvael: rob jak chcesz zeby sie tylko calosci 3malo 22:05 <@Gynvael> seraphin: a to zalezy komu to a - b przypiszesz 22:06 <@Gynvael> seraphin: bo jesli b = a - b (signed zbedne), to prawdopodobnie 0 bedzie (zalene od kompilatora) 22:06 <@Gynvael> seraphin: a jesli a = a - b, to wpisze ladnie -40 22:06 <@adam_i`3> Hehe linijka 24 ex6.c 22:06 <@Gynvael> adam_i`3: ;ppp 22:06 <@seraphin> hoho -40 22:06 <@Gynvael> adam_i`3: przypadek 22:06 <@seraphin> a no tak racja 22:07 <@Gynvael> ok 22:07 <@Gynvael> lecimy dalej ? 22:07 <@seraphin> lecimy 22:07 <@salv4tion> ta 22:07 -!- mode/#gynkurs [+m] by Gynvael 22:07 <@Gynvael> ok 22:07 <@adam_i`3> ok 22:07 <@Gynvael> wiec 22:07 <@Gynvael> najpierw dokoncze te zmienne 22:07 <@Gynvael> a potem pare slow o ASCII 22:07 -!- Blizzard [~blizzard@l33t.zief.pl] has quit [EOF From client] 22:07 <@Gynvael> typy calkowite juz wymienilem 22:08 <@Gynvael> jak uzystkac typy naturalne (liczby naturalne to dodatnie z zerem) 22:08 <@Gynvael> mianowicie wystarczy wstawic "unsigned" (eng "bez znaku") 22:08 <@Gynvael> przed nazwe typu 22:08 <@Gynvael> np: 22:08 <@Gynvael> mamy int 22:08 <@Gynvael> mozemy napisac: 22:08 <@Gynvael> unsigned int 22:08 <@Gynvael> wtedy jest to typ naturalny o zasiegu 0 do 4G 22:09 <@Gynvael> /* typy naturalne */ 22:09 <@Gynvael> unsigned int e = 1; 22:09 <@Gynvael> unsigned short f = 2; 22:09 <@Gynvael> unsigned char g = 3; 22:09 <@Gynvael> unsigned long h = 4; 22:09 <@Gynvael> zasieg typu naturalnego to 22:09 <@Gynvael> od 0 do ( 2 do potegi sizeof(typ) - 1 ) 22:09 <@Gynvael> czyli np char ma zasieg 22:09 <@Gynvael> od 0 do ( 2 do potegi 8 - 1 ) 22:09 <@Gynvael> czyli 22:09 <@Gynvael> od 0 do ( 256 - 1 ) 22:09 <@Gynvael> czyli 22:09 <@Gynvael> od 0 do 255 22:09 <@Gynvael> przykladowo 22:10 <@Gynvael> unsigned char x = 255; 22:10 <@Gynvael> x++; // w tym momencie x ma wartosc 0 (slownie: zero) 22:10 <@Gynvael> analogicznie do "unsigned" jest "signed" 22:10 <@Gynvael> natomiast jest to zbedne i tego sie nie uzywa 22:10 <@Gynvael> zapis 22:10 <@Gynvael> int a; 22:10 <@Gynvael> jest rownowazny 22:10 <@Gynvael> singed int a; 22:10 <@Gynvael> natomiast: 22:11 <@Gynvael> samo: unsigned a; 22:11 <@Gynvael> jest rownowazne: unsigned int a; 22:11 <@Gynvael> ok 22:11 <@Gynvael> dalej 22:11 -!- Blizzard [~blizzard@l33t.zief.pl] has joined #gynkurs 22:11 <@Gynvael> ostatni rodzaj standardowych typow to 22:11 <@Gynvael> typy rzeczywiste, tak zwane ZMIENNOPRZECINKOW (dluga historia czemu sie tak nazywaja, ale o tym potem) 22:11 <@Gynvael> /* typy zmiennoprzecinkowe */ 22:11 <@Gynvael> float i = 1.0f; 22:11 <@Gynvael> double j = 2.0; 22:11 <@Gynvael> typy sa dwa 22:11 <@Blizzus> ale przeciez sizeof(typ) czyli np. sizeof(int) da nam wynik 4 bajty , wiec 2^4 nie bedzie iles tam co mowiles na poczatku 22:11 <@Gynvael> float, ktory ma 4ry bajty 22:12 <@Gynvael> Blizzus: sluszna uwaga 22:12 <@Gynvael> -=220659=- <@Gynvael> od 0 do ( 2 do potegi sizeof(typ) - 1 ) 22:12 <@Gynvael> -=220659=- <@Gynvael> od 0 do ( 2 do potegi sizeof(typ)*8 - 1 ) 22:12 <@seraphin> bo to bajty 22:12 <@Gynvael> wkoncu liczymy w bitach 22:12 <@Gynvael> Blizzus: thx ;> 22:12 <@phoenix__> kurde cisza 22:12 <@Blizzus> no wlasnie:) 22:12 <@Gynvael> ok 22:12 <@Gynvael> lecimy dalej 22:12 <@Gynvael> sizeof(float) == 4 22:12 <@Gynvael> sizeof(double) == 8 22:12 <@Gynvael> co do zasiegu tych zmiennych 22:12 <@Gynvael> to jest pewien problem 22:12 <@Gynvael> ;p 22:13 <@Gynvael> mianowicie liczby ZMIENNOPRZECINKOWE maja to do siebie 22:13 <@Gynvael> ze maja cos takiego jak "dokladnosc" 22:13 <@Gynvael> powiedzmy sobie szczerze 22:13 <@Gynvael> nie liczyl bym ze: 22:13 <@Gynvael> float a = 123456789.0f; 22:13 <@Gynvael> a++; 22:13 <@Gynvael> to bedzie 123456790.0f 22:13 <@Gynvael> moze sie zdarzyc ze to bedzie 22:13 <@Gynvael> 123456789.9999999999999999999999999999999999999999f; 22:14 <@Gynvael> typy te MAJA ZMNIEJSZONA DOKLADNOSC 22:14 <@Gynvael> I NIE NALEZY SIE SPODZIEWAC DOKLADNYCH WARTOSCI 22:14 <@Gynvael> NIGDY ;> 22:14 <@Gynvael> bo sie mozna niezle przejechac 22:14 <@Gynvael> w okolicach zera typy maja dokladnosc do wielu miejsc po przecinku (float okolo 12, double 17) 22:14 <@seraphin> o kurde ! oO 22:15 <@Gynvael> natomiast powyzej zera, dokladnosc (liczac "o 1") maja do 12 cyfr (float) i 17 (double) 22:15 <@Gynvael> liczby zmienno przecinkowe to temat na oddzielny wyklad 22:15 <@Gynvael> wiec sie zaglebial nie bede 22:15 <@Blizzus> a te "f" na koncu wartosci to co? 22:15 <@Gynvael> nalezy pamietac jedynie ze NA ZBYTNIA DOKLADNOSC LICZYC NIE NALEZY 22:15 <@Gynvael> (w8 3 sec) 22:16 <@Gynvael> ok 22:16 <@Gynvael> teraz tak 22:16 <@Gynvael> co do NOTACJI 22:16 <@Gynvael> o ile liczby calkowite pisalismy ZAWSZE TAK SAMO (ofc oprocz wyjatkow o ktorych kiedys indziej) 22:16 <@Gynvael> czyli a = 123; 22:17 <@Gynvael> to przy liczbach zmienno przecinkowych 22:17 <@Gynvael> jesli operujemy na floatach dodajemy "f" na koniec 22:17 <@Gynvael> np 22:17 <@Gynvael> a = 123.0f 22:18 <@Gynvael> albo 22:18 <@Gynvael> a = 123.f 22:18 <@Gynvael> nie mozna natomiast pisac 22:18 <@Gynvael> a = 123f 22:18 <@Gynvael> mozemy ofc liczby po przecinku zapisywac 22:18 -!- petherson [~petherson@host-81-190-92-20.gdynia.mm.pl] has quit ["[BX] Showering in your clothes shows you're crazy. Showering nude shows your nuts."] 22:18 <@Gynvael> a = 0.123f; 22:18 <@Gynvael> a = .123f; 22:18 <@Gynvael> a = 3214.123f; 22:19 <@Gynvael> niom 22:19 <@Gynvael> natomiast w double 22:19 <@Gynvael> nie trzeba f dodawac 22:19 <@Gynvael> ale trzeba . dac 22:19 <@Gynvael> np 22:19 <@Gynvael> double j; 22:19 <@Gynvael> j = 1234.0; 22:19 <@Gynvael> j = 0.0; 22:19 <@Gynvael> etc 22:19 <@Gynvael> teraz tak 22:19 <@Gynvael> jak wykonac KONWERSJE typu int na double i odwrotnie 22:19 <@Gynvael> int i; 22:19 <@Gynvael> double j; 22:19 <@Gynvael> w PASCALU bylo to sporo cwiczenia 22:20 <@Gynvael> w C nie ma zadnych problemow 22:20 <@salv4tion> double j XD[sorx] 22:20 <@Gynvael> i = 1234; 22:20 <@Gynvael> j = i; // to jest wpelni poprawne 22:20 <@Gynvael> i = j; // to tez 22:20 <@Gynvael> mozemy DLA PEWNOSCI UZYC RZUTOWANIA 22:20 <@Gynvael> rzutowanie (cast) to podanie typu zmiennej przy liczbie 22:20 <@Gynvael> na jaki ma byc zmienione, typ podajemy w nawiasie 22:20 <@Gynvael> i przyczepia sie TYLKO I WYLACZNIE DO LICZBY/ZMIENNEJ PO PRAWEJ (najblizszej) 22:20 <@Gynvael> np 22:21 <@Gynvael> j = (double)i; 22:21 <@Gynvael> i = (int)j; 22:21 <@Gynvael> dlaczego to jest wazne ? 22:21 <@Gynvael> przykladowo: 22:21 <@Gynvael> int a = 10; 22:21 <@Gynvael> int b = 3; 22:21 <@Gynvael> float c; 22:21 <@Gynvael> c = 10/3; 22:21 <@Gynvael> c jest typem ZMIENNO PRZECINKOWYM 22:22 <@Gynvael> wiec MOZNA BY SIE SPODZIEWAC WYNIKU c == 3.3333333f; 22:22 <@Gynvael> natomiast tak nie bedzie 22:22 <@Gynvael> powniewaz mozna calosc zapisac jako: 22:22 <@Gynvael> btw 22:22 <@Gynvael> c = a/b; 22:22 <@Gynvael> zapedzilem sie, ale to bez roznicy 22:22 <@Gynvael> wynik taki sam by byl 22:22 <@Gynvael> ok 22:22 <@Gynvael> mozna to zapisac jako: 22:22 <@Gynvael> c = (double)( (int)a / (int)b ); 22:23 <@Gynvael> czyli KONWERSJA NA TYP ZMIENNOPRZECINKOWY 22:23 <@Gynvael> nastepuje PO wykonaniu DZIELENIA 22:23 <@seraphin> ? 22:23 <@Gynvael> c = a/b; 22:23 <@Gynvael> zapismy wiec to inaczej 22:23 <@phoenix__> ciiiisza 22:23 <@Gynvael> zrobmy konwersje wczesniej 22:23 <@Gynvael> (eh.. znowu blad 22:23 <@Gynvael> c = (float)( (int)a / (int)b ); 22:23 <@seraphin> wlasnie 22:23 <@Blizzus> i co on se dolozy jakies tam smieci po tym przecinku jak skonwersujemy int na double? 22:23 <@Gynvael> (tam float, nie double) 22:24 <@phoenix__> Blizzus: pozniej pYTANIA 22:24 <@phoenix__> cicho 22:24 <@Blizzus> okk;] 22:24 <@Gynvael> Blizzus: to zalezy ;> przy wartosciach kolo 0 nie ;> przy jakis wysokich moze sie zdarzyc (wysokich == kolo 13 liczb po przecinku, ale int tylko 10 ma wiec looz) 22:24 <@Gynvael> ok 22:24 <@Gynvael> dalej 22:24 <@Gynvael> zrobmy konwersje wczesniej 22:24 <@Gynvael> c = (float)a / (float)b; 22:24 <@Gynvael> czyli 22:24 <@Gynvael> c = (float)10 / (float)3; 22:24 <@Gynvael> czyli 22:24 <@Gynvael> c = 10.f / 3.f; 22:24 <@Gynvael> czyli 22:24 <@Gynvael> c = 3.3333333333f; 22:25 <@Gynvael> czyli to o co nam chodzilo 22:25 <@Gynvael> dosc czesto mlodzi programisci (;p) popelniaja blad wlasnie tego typu 22:25 <@Gynvael> pisza c = a/b; 22:25 <@Gynvael> zamiast c = (float)a / (float)b; 22:25 <@Gynvael> wiec o tym nalezy pamietac 22:25 <@Gynvael> to samo da c = 10/3; 22:25 <@Gynvael> zamiast c = 10.f / 3.f; 22:25 <@Gynvael> wiec to ".f" jest WAZNE 22:25 <@Gynvael> a nie jakas tam ozdoba 22:25 <@Gynvael> teraz tak 22:26 <@Gynvael> ZAOKRAGLENIE 22:26 <@Gynvael> w pascalu bylo jakies tam floor, round, etc 22:26 <@Gynvael> powiedzmy ze chcemy 22:26 <@Gynvael> zeby jesli bedzie .5 lub wiecej do bylo 1 22:26 <@Gynvael> a .4999 lub mniej to bylo +0 22:26 <@Gynvael> np 22:26 <@Gynvael> 10.3 to 10 22:26 <@Gynvael> a 10.8 to 11 22:26 <@Gynvael> taka konwersja 22:26 <@Gynvael> w C mozemy posluszyc sie prosta matematyka 22:26 <@Gynvael> zalozmy ze mamy 22:27 <@Gynvael> double j = 10.8; 22:27 <@Gynvael> int i; 22:27 -!- Blizzard [~blizzard@l33t.zief.pl] has quit [EOF From client] 22:27 <@Gynvael> i = (int)(j+0.5); 22:27 <@Gynvael> co to da ? 22:27 <@Gynvael> policzmy 22:27 <@Gynvael> i = (int)(10.8+0.5); 22:27 <@Gynvael> i = (int)(11.3); 22:27 <@Gynvael> i = 11; 22:27 <@Gynvael> zaokraglone ok 22:27 <@Gynvael> spradzmy to dla 10.5 i 10.49999999999 22:27 <@Gynvael> i = (int)(10.5+0.5); 22:27 <@Gynvael> i = (int)(11.0); 22:28 <@Gynvael> i = 11; 22:28 <@Gynvael> ok, spelnai zalozenia zaokraglenia 22:28 <@Gynvael> i = (int)(10.499999999999999+0.5); 22:28 <@Gynvael> i = (int)(10.999999999999999); 22:28 <@Gynvael> i = 10; 22:28 <@Gynvael> widac tez spelnia 22:28 <@Gynvael> czyli mozemy sie takim prostym trikiem do zaokralania poslugiwac 22:28 <@Gynvael> jak widac tez, rzutowanie na inta obcina wszystko po zerze 22:29 <@Gynvael> zalozmy wiec ze mamy 22:29 <@Blizzus> y? 22:29 <@Blizzus> a nie i=11? 22:29 <@Gynvael> Blizzus: w tym ostanim przypadku ? ne 22:29 <@Gynvael> (int)10.99999999999999 22:29 <@Gynvael> int OBCINA WSZYSTKO PO . 22:29 <@Gynvael> czyli 22:29 <@Gynvael> .99999999999999999 bedzie uciete 22:29 <@Gynvael> czyli zostanie 10 22:29 <@Gynvael> a nie 11 ;> 22:29 <@phoenix__> czyli to nei jest normalna mata ?> 22:29 <@Gynvael> a co w tym jest nienormalnego ?:p 22:30 <@seraphin> phoenix__: ciiiiiiii 22:30 <@phoenix__> kontynuj 22:30 <@Gynvael> ok 22:30 <@Gynvael> teraz tak 22:30 <@Gynvael> zalozmy 22:30 <@Gynvael> double j = 10.25426235; 22:30 <@Gynvael> interesuje nas zeby j mialo TYLKO CZESC CALKOWITA z tego 22:30 <@Gynvael> mozna wiec zrobic: 22:30 <@Gynvael> j = (double)(int)j; 22:30 <@Gynvael> czyli co sie stanie ? 22:30 <@Gynvael> po kolei 22:30 <@Gynvael> j = (double)(int)10.25426235; 22:30 <@Gynvael> najpierw konwersja na int 22:31 <@Gynvael> j = (double)10; 22:31 <@Gynvael> teraz na double 22:31 <@Gynvael> j = 10.0; 22:31 <@Gynvael> i juz 22:31 <@Gynvael> obciete 22:31 <@Gynvael> ok 22:31 <@Gynvael> tyle o tym 22:31 -!- seraphin is now known as seraph`pytanie 22:31 <@Gynvael> teraz pare slow o wypisywaniu 22:31 <@phoenix__> a mzoe pytania ? 22:31 <@Gynvael> j,, 22:31 <@Gynvael> hmm 22:31 <@Gynvael> ok 22:31 <@Gynvael> to pytania 22:31 -!- mode/#gynkurs [-m] by Gynvael 22:31 <@Gynvael> pytanka plz ;> 22:31 <@seraph`pytanie> czy to jest optymalna wersja? 22:32 <@salv4tion> po co tyle kombinacji? 22:32 <@Gynvael> seraph`pytanie: ktora ?;> 22:32 <@seraph`pytanie> j = (double) (int).... 22:32 <@phoenix__> czemu tam jest to 10.0f w floatach a e cpp nie ma ? :> 22:32 <@Blizzus> jakies to trudne jest ;] 22:32 <@Gynvael> seraph`pytanie: z jednej strony optymalna, ale z drugiej niebespieczna 22:32 <@adam_i`3> Nei wystarczy j=(int)j ? 22:32 <@Blizzus> sam zapis 22:32 <@salv4tion> tak sie nad tymi zmiennymi rozpisales ;f to mozna w 5 zdaniach ujac a ty juz wyklad na 2 kartki zrobiles 22:32 -!- Blizzard [~blizzard@l33t.zief.pl] has joined #gynkurs 22:32 <@Gynvael> seraph`pytanie: z uwagi na to ze int ma mniejszy zasieg powyzej zera niz double ;> 22:32 <@seraph`pytanie> moze skonczymy? 22:32 -!- d9k [criptin@cfg20.neoplus.adsl.tpnet.pl] has quit [""] 22:32 <@Blizzus> salv4tion: potem sie wyda za złotówki ksiazke o C;] 22:33 <@Gynvael> seraph`pytanie: wiec mozna troche cyferek stracic (szczegolnie powyzej 10 cyfrowych liczb przed przecinkiem) 22:33 <@seraph`pytanie> stara mnie goni 22:33 <@salv4tion> [; 22:33 <@seraph`pytanie> Gynvael: aha 22:33 <@phoenix__> czemu tam jest to"f" 10.0f w floatach a e cpp nie ma ? :> 22:33 <@Gynvael> adam_i`3: wytarczy ;> 22:33 <@seraph`pytanie> konczymy czy jeszcze cos? 22:33 <@salv4tion> jaka ksiazke ;P? 22:33 <@Gynvael> adam_i`3: C sam dokona konwersji ;> 22:33 <@Gynvael> phoenix__: jest w CPP tez 22:33 <@Blizzus> seraph`pytanie: beda logi przeczytasz 22:33 <@Blizzus> nie mędz 22:33 <@Gynvael> phoenix__: jesli ktos tego nie uzywa.. coz.. moze sie czasem natknac na bledy o ktorych mowilem wczesniej 22:33 <@Blizzus> niech Gynvael kontynouje 22:33 <@phoenix__> Gynvael: a jakby nie dal tego ? 22:33 <@phoenix__> w c 22:34 <@Gynvael> phoenix__: to tez bedzie dzialac 22:34 <@phoenix__> aha 22:34 <@phoenix__> no dobra dalej 22:34 <@Gynvael> phoenix__: tu chodzi o SPRECYZOWANIE rzeczy o ktorej mowimy 22:34 <@Gynvael> phoenix__: wkoncu np mozna powiedziec "10 pieniedzy" 22:34 <@Gynvael> phoenix__: ale nie do konca wiadomo czy chodzi o 10$, 10zl, czy 10gr 22:34 <@phoenix__> no tak ... 22:34 <@Gynvael> phoenix__: i mozna popelnic blad 22:35 <@Gynvael> phoenix__: np sonda z MARSa nie wrocila bo ktorys w NASA nie podal koledze jednostek, bo myslal ze ten bedzie wiedzial ;> 22:35 <@Gynvael> phoenix__: chyba nie chcemy zeby nasze sondy przeprowadzaly sie na stale na marsa ne ? ;> 22:35 <@phoenix__> aha 22:35 <@phoenix__> no dobra dalej 22:35 <@Gynvael> ok 22:35 <@Gynvael> lecimy dalej 22:35 <@phoenix__> mode +m l[ 22:35 -!- mode/#gynkurs [+m] by Gynvael 22:35 <@salv4tion> hehehe 22:35 <@Gynvael> teraz o wypisaywaniu 22:35 <@Gynvael> w kodzie ktory podalem 22:36 <@Gynvael> http://gynvael.lunarii.org/temp/ex6.c 22:36 <@Gynvael> o tym 22:36 <@Gynvael> koncowka programu to pare printf 22:36 <@Gynvael> z roznycmi %znkami 22:36 <@Gynvael> w duzym skrocie 22:36 <@Gynvael> typy calkowite oznaczamy %i 22:36 <@Gynvael> WYJATKIEM jest long, ktory oznaczamy %li (long integer) 22:37 <@Gynvael> analogicznie typy naturalne, unsigned, oznaczamy %u (badz %lu dla long) 22:37 <@Gynvael> (unsigned long) 22:37 <@Gynvael> natomiast oba typy zmiennoprzecinkowe 22:37 <@Gynvael> oznaczamy %f 22:37 <@Gynvael> (na SUN'ach bodajze trzeba %lf dla double uzywac) 22:38 <@Gynvael> zamiast %i mozna uzyc %d 22:38 <@Gynvael> jest to DOKLADNIE TO SAMO 22:38 <@Blizzus> od decy? 22:38 <@Gynvael> ok 22:38 <@Gynvael> tak 22:38 <@Gynvael> decimal 22:38 <@Gynvael> ok 22:38 <@Gynvael> a teraz jeszcze cos o czym zapomnialem 22:38 <@Gynvael> mianowicie skad sa nazwy float i double 22:39 <@Gynvael> float - floating precision - zmienna precyzja (ew zmienno przecinkowa jak to na polski przelozyli) 22:39 <@Gynvael> double - double floating precision - podwojna zmienna precyzja ;> 22:39 <@Gynvael> ew 22:39 <@Gynvael> floting point 22:39 <@Gynvael> tez moze byc 22:39 <@Gynvael> i w sumie czesciej to widac 22:39 <@Gynvael> float - floating point (plywajaca kropka ;>>>>) 22:39 <@Gynvael> double - double floating point 22:39 <@Gynvael> niom 22:40 <@Gynvael> ok 22:40 <@Gynvael> w sumie tyle jesli chodzi o formalna czesc "wykladu" 22:40 <@Gynvael> jako zadanie domowe dla chetnych: 22:40 <@Gynvael> - skompilowac ex6.c 22:40 <@Gynvael> - napisac program ktory wypisze sizeof( ) dla wszystkich typow w postaci: 22:41 <@Gynvael> typ == 4 b 22:41 <@Gynvael> np 22:41 <@Gynvael> int == 4b 22:41 <@Gynvael> char == 1b 22:41 <@Gynvael> etc 22:41 <@Gynvael> to jest pare printf ;> 22:41 <@Gynvael> ok 22:41 <@Gynvael> za chwile pytania 22:41 <@Gynvael> a potem pare chwil o ASCII 22:41 <@Gynvael> i pare slow o %znaczkach i \znaczkach w printf 22:41 -!- mode/#gynkurs [-m] by Gynvael 22:41 <@Gynvael> ok 22:41 <@adam_i`3> Czy da sie okrslic ile misc po przcinuku ma byc wypisanych czy to od ustawin zminnej zalezy 22:41 < Blizzard> bo ja uczylem sie troche c++ podstawy i za cholere nie umiem tego zkumac 22:42 <@Gynvael> adam_i`3: da sie, o tym za chwile ;> 22:42 <@Gynvael> Blizzard: a czego dokladniej ?;> 22:42 < Blizzard> tych % 22:42 < Blizzard> wogole tego printf 22:42 <@Gynvael> ;> 22:42 < Blizzard> cout jakies latwiejsze 22:42 <@Gynvael> to o tym bedzie za chwile 22:42 <@Gynvael> Blizzard: cout latwiejsze, ale do czasu ;> wierz mi, do czasu ;> 22:42 <@gRl> %d3 Gynvael to bedzie 3 po przecinku ? 22:42 <@Gynvael> i sporo wolniejsze ;p 22:42 < Blizzard> czemu do czasu? 22:42 <@Gynvael> gRl: nie ;> 22:43 <@gRl> ;f, tak wogole cos dziala? 22:43 <@Gynvael> Blizzard: w cout STRASZNIE TOPORNIE sie robi formatowanie 22:43 < Blizzard> przyklad prosze;) 22:43 <@Gynvael> gRl: to ci doda "3" na koneic tego co z %d wyjdzie 22:43 <@gRl> ;p 22:43 <@Gynvael> Blizzard: przykladowo wypisz za pomoca cout liczbe 12 w hexa 22:43 <@Gynvael> Blizzard: w printf to sie robi printf("%x", 12) 22:44 <@Gynvael> a jak w cout ? ;> 22:44 <@Gynvael> bo ja nie kojarze prostej metody ;> 22:44 <@Gynvael> sila cout lezy gdzies indziej 22:44 <@adam_i`3> Neda sie jkos "\x12" ? 22:44 <@adam_i`3> a 22:44 < Blizzard> Gynvael: nie wiem nie doszedlem do tego 22:44 <@Gynvael> mianowicie cout jest tak zrobione, ze mozna za pomoca odpowiedniego przeciazenia zrobic zeby wlasna klasa w okreslony sposob byla wypisywana 22:45 < Blizzard> ja sie uczylem z symfonii 22:45 < Blizzard> ;) 22:45 <@Gynvael> adam_i`3: nie do konca, "\x12" to ZNAK O KODZIE ASCII 12 22:45 <@Gynvael> adam_i`3: nie do konca, "\x12" to ZNAK O KODZIE ASCII 0x12 ;p 22:45 < Blizzard> i chyba zaczne od poczatku 22:45 <@Gynvael> Blizzard: symfonia troszke stara juz jest -- 22:45 < Blizzard> moje 5 podejscie do c/c++ (po miesiacu przegrywam) 22:45 <@salv4tion> Gynvael: nie zaschlo ci w gardle? 22:45 <@Gynvael> ;p 22:45 <@Gynvael> ne 22:45 <@Gynvael> ok 22:45 <@salv4tion> Gynvael: moze wody chesz? 22:45 <@salv4tion> ;p 22:45 <@Gynvael> mozna dalej ? 22:45 <@salv4tion> tak 22:45 <@Gynvael> o ASCII pare slow 22:45 <@salv4tion> mozna 22:45 <@Gynvael> i formatowania w printf 22:46 < Blizzard> Gynvael: nom 22:46 <@Gynvael> ok 22:46 -!- mode/#gynkurs [+m] by Gynvael 22:46 <@Gynvael> co to jest ASCII ? 22:46 -!- mode/#gynkurs [+o Blizzard] by Blizzus 22:46 <@Gynvael> i co to wogole za nazwa ? 22:46 <@Gynvael> ASCII to skrot od American Standard Code for Information Interchange 22:47 <@Gynvael> czyli "Amerykanski Standard Kodowania dla Wymiany Informacji" (mniej wiecej) 22:47 <@Gynvael> w praktyce jest to lista 128 standardowych ZNAKOW i ich kodow 22:47 <@Gynvael> oraz lista 128 dodatkowych 22:47 <@gRl> hex w cout to cout << hex << liczba :p 22:48 <@Gynvael> tak zwana TABLICE ASCII dzieli sie na 3 czesci 22:48 <@Gynvael> wartosci od 0 do 31 22:48 <@Gynvael> (grl aha ;> nie tak zle, ale "hex" zasmieca namespace ;p) 22:48 <@Gynvael> wartosci od 0 do 31 to takzwane KODY KONTROLNE 22:48 <@Gynvael> nie tyle sa to znaki 22:49 <@Gynvael> co kody, po ktorych otrzymaniu jakies urzadzenie wyjscia (drukarka, ekran) zachowuja sie w okreslony sposob 22:49 <@Gynvael> przykladem moze byc kod 9, czyli TAB 22:49 <@Gynvael> po ktorym to ekran, badz drukarka, robia 8 spacji przerwy (standardowo jest 8, ale to zalezy od "urzadzenia") 22:50 <@Gynvael> innym moze byc kod 10, czyli ENTER (przejscie do nowej linii) 22:50 <@Gynvael> badz 13 (przejscie kursora na poczatek linii) 22:50 <@Gynvael> (przykladowo: 22:50 <@Gynvael> a 22:50 <@Gynvael> nvm 22:50 <@Gynvael> przyklady potem 22:50 <@Gynvael> od 32 do 127 sa STANDARDOWE ZNAKI 22:50 <@Gynvael> czyli wszystko co mozemy NORMALNYMI METODAMI wklepac z klawiatury 22:50 <@Gynvael> litery 22:50 <@Gynvael> cyfry 22:50 <@Gynvael> np litera A ma kod 65 22:51 <@Gynvael> B 66 22:51 <@Gynvael> C 67 22:51 <@Gynvael> etc 22:51 -!- d9k [criptin@cfg20.neoplus.adsl.tpnet.pl] has joined #gynkurs 22:51 <@Gynvael> cyfra 1 ma kod 0x31 (czyli 49) 22:51 <@Gynvael> 2 0x32 czyli 50 22:51 <@Gynvael> etc 22:51 -!- d9k [criptin@cfg20.neoplus.adsl.tpnet.pl] has left #gynkurs [] 22:51 <@Gynvael> od 128 do 255 jest czesc rozszerzona 22:51 <@Gynvael> zalezna TYLKO I WYLACZNIE OD WIDZIMISIE URZADZENIA 22:51 <@Gynvael> na przyklad od czcionki ktorej uzywamy 22:52 <@Gynvael> sa tam zazwyczaj jakeis rameczki, ozdoby, znaki diakrytyczne (np ó) 22:52 <@Gynvael> etc 22:52 <@Gynvael> tablice ascii mozna obejrzec 22:52 <@Gynvael> http://www.unipg.it/carlo/Ascii.png 22:52 <@Gynvael> na przyklad tam 22:53 <@Gynvael> 3 slowa o tej rozpisce ktora tam jest 22:53 <@Gynvael> najpierw jest kod DECYMALNIE 22:53 <@Gynvael> potem kod hexa i octalnie (osemkowo) 22:53 <@Gynvael> potem znak, lub NAZWA KONTROLNA 22:53 <@Gynvael> np TAB 22:53 <@Gynvael> lub LF (nowa linia) 22:53 <@Gynvael> po co ASCII ? 22:53 <@Gynvael> w C mozemy pisac: 22:54 <@Gynvael> char a; 22:54 <@Gynvael> a = 'X'; 22:54 <@Gynvael> ablo 22:54 <@Gynvael> albo 22:54 <@Gynvael> a = 88; 22:54 <@Gynvael> oba zapisy sa ROWNOZNACZNE 22:54 <@Gynvael> do wypisania jednego znaku sluzy funkcja puchar(KOD ASCII) 22:54 <@Gynvael> na przyklad 22:54 <@Gynvael> putchar(88); wypisze X 22:54 <@Gynvael> putchar('X'); tez wypisze X 22:55 <@Gynvael> char a = 88; 22:55 <@Gynvael> putchar(a); tez wypisze X 22:55 <@Gynvael> ;> 22:55 <@Gynvael> ok 22:55 <@Gynvael> a teraz lagodne przejscie do printf 22:55 <@Blizzus> chyba a = '88'; 22:55 <@Gynvael> printf("%c", 88); rowniez wypisze X 22:55 <@adam_i`3> nie 22:55 <@Gynvael> Blizzard: nie ;> 22:55 <@Gynvael> Blizzard: a = 88; ;> to KOD ZNAKU 22:55 <@Blizzus> a:PP 22:55 <@Gynvael> Blizzard: a = 'X' to prawie ze makro ktore robi a = kod znaku(X), czyli a = 88 22:56 <@Gynvael> ok 22:56 <@Gynvael> tyle o ASCII 22:56 <@Gynvael> (o stringach bedzie potem) 22:56 <@Gynvael> teraz printf 22:56 <@Gynvael> najpierw tak zwane znaki kontrolne 22:56 <@Gynvael> czyli: 22:57 <@Gynvael> \n - nowa linia 22:57 <@gRl> a o slipach? : f 22:57 <@Blizzus> czaje 22:57 <@Gynvael> \r - powrot na poczatek linii 22:57 <@Gynvael> \t - tab 22:57 <@Gynvael> \b - backspace 22:57 <@Gynvael> przykladowo 22:57 -!- nicon_ [~nicon@80.51.59.3] has joined #gynkurs 22:57 <@Gynvael> printf("XXXX\rAA\n"); wypisze 22:57 <@Gynvael> AAXX 22:57 <@Gynvael> jako ze po wypisaniu XXXX nastapi powrot na poczatek linii i napisanie AA 22:58 <@gRl> Gynvael: a jak skakac pare lini w gore? : f 22:58 <@Gynvael> gRl: nie skakac normalnymi sposobami ;> 22:58 <@salv4tion> ansi escape codes 22:58 <@salv4tion> gRl: tym 22:58 <@Gynvael> ansi escape codes na linuxie 22:58 <@Gynvael> na windzie cos innego ;p 22:58 <@Gynvael> ale nvm 22:58 <@salv4tion> Gynvael: winda to hardkor ;p 22:59 <@gRl> na windzie conio.h ; o 22:59 <@Gynvael> conio.h nie ma, to wymysl borlanda ;p 22:59 <@Gynvael> ok 22:59 <@salv4tion> konsola windowsowska jest zjebana 22:59 <@Gynvael> ale dalej 22:59 <@Blizzus> chcialbym zaznaczyc ze jest +m 22:59 <@Gynvael> mozna pisac tez: 22:59 <@Gynvael> \x12 - to znak o kodzie 0x12 (czyli 18) 22:59 <@Gynvael> \xLICZBA_W_HEXA_KONIECZNIE_DWUCYFROWA 23:00 <@Gynvael> \123 - to znak o kodzie 0123 (to juz jest oktalny) 23:00 <@Gynvael> po za tym 23:00 <@Gynvael> \" to cudzyslow 23:00 <@Gynvael> a \' to aprostrof 23:00 <@Gynvael> np 23:00 <@Gynvael> btw te zapisy z \ sa dostepne we wszystkich " " a nie tylko w printf 23:00 <@Gynvael> np 23:01 <@Gynvael> puts(" ala \"kot\" nyo"); 23:01 <@Gynvael> to wypisze: 23:01 <@Gynvael> ala "kot" nyo 23:01 <@Gynvael> ok 23:01 <@Gynvael> teraz czas na % 23:01 <@Gynvael> najpierw formatowanie 23:01 <@Gynvael> 1) liczba miejsc po przecinku: 23:02 <@Gynvael> float a; 23:02 <@Gynvael> a = 123.456f; 23:02 <@Gynvael> printf("%f\n", a); 23:02 <@Gynvael> to wypisze: 23:02 <@Gynvael> 123.456001 (bo to niedokladne takie ;p) 23:02 <@Gynvael> defaultowo jest 6 miejsc po przecinku 23:02 <@Gynvael> a my chcemy 2 23:02 <@Gynvael> wiec robimy 23:02 <@Gynvael> printf("%.2f\n", a); 23:03 <@Gynvael> i dostajemy 23:03 <@Gynvael> 123.45 23:03 <@Gynvael> jak bysmy chcieli 6 miejsc, to bysmy dali .6 23:03 <@Gynvael> to raz 23:03 <@Gynvael> zalozmy ze chcemy zapis naukowy 23:03 <@Gynvael> to zamiast %f damy %e 23:03 <@Gynvael> 1.234560e+002 23:03 <@Gynvael> takie cos dostaniemy 23:04 <@Gynvael> %.2e mozna uzyc tez 23:04 <@Gynvael> 1.23e+002 23:04 <@Gynvael> takie cos bedzie efektem 23:04 <@Gynvael> teraz zalozmy ze chcemy liczbe 123 wypisac w hexa 23:04 <@Gynvael> printf("%x\n", 123); 23:04 <@Gynvael> 7b 23:04 <@Gynvael> zalozmy ze chcemy zeby bylo 0x7b (to nei wszedzie dziala) 23:04 <@Gynvael> printf("%#x\n", 123); 23:05 <@Gynvael> 0x7b 23:05 <@Gynvael> a teraz 23:05 <@Gynvael> chcemy sobie ladnie sformatowac cos 23:05 <@Gynvael> i powiedzmy ze chcemy zeby pole zajmowalo DOKLADNIE 10 znakow 23:05 <@Gynvael> i wolne miejsce bylo wypelnione spacjami 23:05 <@Gynvael> printf("|%10i|\n", 123); 23:05 <@Gynvael> | 123| 23:06 <@Gynvael> ale my chcemy zeby bylo po lewej! 23:06 <@Gynvael> printf("|%+10i|\n", 123); 23:06 <@Gynvael> e 23:06 <@Gynvael> printf("|%-10i|\n", 123); 23:06 <@Gynvael> ;p 23:06 <@Gynvael> |123 | 23:06 <@Gynvael> w sumie to nie chcemy 23:06 <@Gynvael> spacji 23:06 <@Gynvael> chcemy zera 23:06 <@Gynvael> printf("|%.10i|\n", 123); 23:06 <@Gynvael> |0000000123| 23:07 <@Gynvael> co daje cos takiego ? 23:07 <@Gynvael> np ladne tabelki 23:07 -!- seraph`pytanie [~seraphin@82.139.18.5] has quit ["Lost terminal"] 23:07 <@Gynvael> printf("+----------+\n"); 23:07 <@Gynvael> printf("|%10i|\n", 123); 23:07 <@Gynvael> printf("|%10i|\n", 66); 23:07 <@Gynvael> printf("|%10i|\n", 52); 23:07 <@Gynvael> printf("+----------+\n"); 23:07 <@Gynvael> to da 23:07 <@Gynvael> +----------+ 23:07 <@Gynvael> | 123| 23:07 <@Gynvael> | 66| 23:07 <@Gynvael> | 52| 23:07 <@Gynvael> +----------+ 23:08 <@Gynvael> niom 23:08 <@Gynvael> w duzym skrocie 23:08 * salv4tion sie pyta co ile gyn nowa klawaiture kupuje 23:08 <@Gynvael> tyle 23:08 <@Gynvael> wiecej info: man 3 printf 23:08 <@Gynvael> aha 23:08 <@Gynvael> ciekawe % 23:08 <@Gynvael> %c - znak o kodzie 23:08 <@adam_i`3> A czy da sie cos innego poza sapcje I 0 np 'a' 23:08 <@Gynvael> printf("%c", 88); da X 23:09 <@salv4tion> adam_i`3: a czemu by nie? 23:09 <@Gynvael> %p - pointer wypisany w hexa (to sie potem przyda, to samo co %x tyle ze defaultowo 8 cyfr wypisuje) 23:09 <@Gynvael> adam_i`3: nie 23:09 <@Gynvael> adam_i`3: a przynajmniej ja sie nie spotkalem 23:09 * Blizzus wnioskuje o konczenie dzisiejszego odcinka bo sie mozg rasuje i powoli zasypia 23:09 <@salv4tion> nie! 23:10 <@Gynvael> (jest jeszcze %n, ale to jest temat na osobny wyklad ;p) 23:10 <@salv4tion> gyn zawijaj dalej! 23:10 <@Gynvael> ok 23:10 -!- mode/#gynkurs [+o nicon_] by Blizzus 23:10 <@salv4tion> nawijaj* 23:10 <@Gynvael> teraz pytania 23:10 -!- mode/#gynkurs [-m] by Gynvael 23:10 <@salv4tion> ja mam 23:10 <@salv4tion> co ile klawiature zmieniasz? 23:10 <@nicon_> Gynvael: imho zapomniales dodac jeszcze w tym \' i \" tego ze sam \ to jest \\ 23:10 <@Gynvael> salv4tion: 3-5 lat 23:10 <@salv4tion> ;p 23:10 <@Gynvael> nicon_: aaa fakt ;> 23:10 <@Gynvael> jeszcze \\ to \ ;> 23:10 <@adam_i`3> Jzu koniec kursu na dzis ? 23:10 <@Gynvael> tak 23:10 <@salv4tion> ne 23:10 <@Gynvael> na dzisiaj koniec 23:10 <@salv4tion> ;( 23:11 <@Gynvael> jutro beda stringi ;> 23:11 <@salv4tion> a o funkcjach mialo byc jescze 23:11 <@nicon_> Gynvael: zauwazylem ze jak robiles do 2 miejsc po przecinku to on obcinal reszte 23:11 <@Gynvael> salv4tion: ale nie dzisiaj juz 23:11 <@Gynvael> o 23:11 <@Blizzus> uhuhuhu 23:11 <@nicon_> a co jakbym chcial zaokraglic?? 23:11 <@Blizzus> fajnie:) 23:11 <@Gynvael> to jutro wieczorem o 21 beda FUNKCJE i moze STRINGI 23:11 <@adam_i`3> Btw prosze nie przeklinac bo to do druku idzie 23:11 <@salv4tion> ;> 23:11 <@Gynvael> nicon_: polecam sztuczki z +0.5 23:11 <@Blizzus> to koniec na dzis? 23:11 <@phoenix__> Gynvael: o ktorej nastepny kurs? 23:11 <@Gynvael> nicon_: ale on to zaokragla AFAIR 23:11 <@salv4tion> adam_i`3: all? 23:11 <@nicon_> hmm, nie 23:12 <@Gynvael> printf("%.2f", 123.9999f); 23:12 <@Gynvael> 124.00 23:12 <@Gynvael> zaokragla 23:12 <@phoenix__> KIEDY NASTEPNY KURS!!!?????? 23:12 <@Gynvael> phoenix__: jutro 20:30 23:12 <@nicon_> 123.456001 do 2 miejsc po przecinku napisales 123.45 23:12 <@salv4tion> 23:11 <@Gynvael> to jutro wieczorem o 21 beda FUNKCJE i moze STRINGI 23:12 <@Gynvael> nicon_: hmm ;> 23:12 <@phoenix__> eee czemu tak pozno? 23:12 <@Gynvael> nicon_: widac trzeba kombinowac ;> 23:12 <@Gynvael> phoenix__: bo wczesniej mnie nie ma 23:12 <@phoenix__> no dobra 23:12 <@phoenix__> da rade ;] 23:12 <@Gynvael> salv4tion: zmienilem zdanie na 20:30 ;pppp