--- Log opened Fri Feb 12 10:25:22 1999 10:25 -!- adam_i [~adam@80.48.232.136] has joined #gynkurs 10:25 -!- Irssi: #gynkurs: Total of 6 nicks [1 ops, 0 halfops, 0 voices, 5 normal] 10:25 -!- Irssi: Join to #gynkurs was synced in 1 secs 10:25 < SlimFast> nawet adam_i :D 10:25 < cinq> ;dd 10:25 < phoenix__> Gynvael: ja wiem jak kompilowac itd... 10:25 < SlimFast> ja chyba ;d 10:25 < phoenix__> w koncu troche umiem cpp 10:25 <@Gynvael> ok 10:25 <@Gynvael> dobra 10:25 <@Gynvael> nyo to 10:26 < d0b0c0p> SlimFast: uruchom | kompiluj :P 10:26 <@Gynvael> niech kazdy otworzy swoj ulubiony IDE, edytor 10:26 <@Gynvael> i sie bawimy 10:26 <@Gynvael> jezyk C 10:26 < d0b0c0p> hieh :D 10:26 <@Gynvael> ktos jedzie od podstaw ? 10:26 < SlimFast> ja 10:26 <@Gynvael> czy wszyscy juz hello world + skladnie mniej wiecej znaja 10:26 <@Gynvael> ? 10:26 < cinq> ja ;d 10:26 <@Gynvael> ok 10:26 < SlimFast> wlasnie napsialem program [; 10:26 <@Gynvael> cinq: masz jakis kompilatorek etc ? 10:26 < SlimFast> Hello World 10:26 < SlimFast> :) 10:26 < cinq> nie ;d 10:26 <@Gynvael> cinq: a jaki OS masz ? 10:27 < SlimFast> ej jak w c++ jest polecenie pdoobne do readln; w pascalu ? 10:27 < cinq> dopiero mialem zamiar sie uczyc c 10:27 <@Gynvael> SlimFast: cin 10:27 < SlimFast> zeby po wsywyietlenui napsiau sie nie zamykalo samo 10:27 < SlimFast> #include 10:27 < SlimFast> using namespace std; 10:27 < SlimFast> int main(){ 10:27 < SlimFast> cout << "Hello world"; 10:27 < SlimFast> cin 10:27 < SlimFast> return 0; 10:27 < cinq> mam win xp 10:27 < phoenix__> od podstaw gyn 10:27 < SlimFast> } 10:27 < d0b0c0p> #include 10:27 < SlimFast> ? 10:27 < d0b0c0p> getch(); 10:27 <@Gynvael> SlimFast: nie do konca, ale nvm 10:27 <@Gynvael> ;> 10:27 < cinq> ^^ 10:27 <@Gynvael> nie ma conio.h 10:27 <@Gynvael> conio.h to wymysl borlanda 10:27 <@Gynvael> ;p 10:27 < d0b0c0p> jest ;] 10:27 < phoenix__> ej niech gyn mowi a potwem my bedziemy zadawac pyrtania 10:27 < d0b0c0p> ze standadrdowymi poleceniami jest ;] 10:28 <@Gynvael> cinq: sciagniesz teraz cos czy na sucho lecisz ? 10:28 < d0b0c0p> dobra gyn zaczyna my milczymy 10:28 -!- __phoenix [^phoenix@ccb14.neoplus.adsl.tpnet.pl] has joined #gynkurs 10:28 < d0b0c0p> Gynvael: daj +m :P 10:28 < d0b0c0p> i bedzie spokoj 10:28 < cinq> na sucho 10:28 < cinq> do notepada ;d 10:28 < d0b0c0p> a potem odpowiadamy na pytnia ;) 10:28 <@Gynvael> ok 10:28 <@Gynvael> hehe 10:28 <@Gynvael> dobra 10:28 <@Gynvael> ne, bez +m 10:28 <@Gynvael> ale csii ;> 10:28 < d0b0c0p> k 10:29 < SlimFast> ook loga robie ; 10:29 < SlimFast> ;d 10:29 <@Gynvael> http://gynvael.lunarii.org/temp/ex1.c 10:29 <@Gynvael> pierwszy program 10:29 < SlimFast> lol D: 10:29 <@Gynvael> czyli hello world 10:30 <@Gynvael> teraz tak 10:30 <@Gynvael> otwieramy sobie konsole (w windzie to uruchom->command) 10:30 <@Gynvael> i idziemy do katalogu gdzie mamy ten pliczek 10:30 <@Gynvael> po czym jak dev go skompiluje, tyo piszemy 10:30 <@Gynvael> ex1 10:30 < SlimFast> ale ja to dalem do dev-c++ 10:30 < SlimFast> i mi nie skompilowalo :| 10:30 <@Gynvael> SlimFast: a co zrobilo ?;> 10:30 < SlimFast> w pyte eroorow 10:30 < SlimFast> ;| 10:30 < d0b0c0p> SlimFast: zapisz jako rozszerzene c ;p 10:31 <@Gynvael> dla linuxowcow: gcc ex1.c -o ex1; ./ex1 10:31 < SlimFast> ui dupa 10:31 < SlimFast> nei skompilowalo :| 10:31 <@Gynvael> SlimFast: dobra, wlaz pod konsole ;p 10:31 < cinq> apokoj! ;s 10:31 < d0b0c0p> mi skompilowalo :P 10:31 < phoenix__> ja juz zrobilem 10:31 < SlimFast> ale pod knsola skompiluje ? 10:31 < cinq> nie 10:31 <@Gynvael> SlimFast: jak odpalisz konsole to napisz mi tu katalog w jakim masz dev-cpp 10:32 < SlimFast> dysk e [; 10:32 < SlimFast> a dev gdzie mam 10:32 <@Gynvael> SlimFast: dokladnie plz ;> 10:32 < phoenix__> Gynvael: moglbys dodawac kometarze np do czego jest puts do czego stdio itd... 10:32 < phoenix__> ? 10:32 < SlimFast> C:\Dev-Cpp 10:32 < SlimFast> ;] 10:32 <@Gynvael> btw zrobmy tak, jak komus dziala, pisze "OK" ;> i tyle 10:32 < adam_i> ok 10:32 < phoenix__> OK 10:32 <@Gynvael> phoenix__: to bede tlumaczyc tu ;> 10:32 < d0b0c0p> OK 10:32 < SlimFast> failed [; 10:32 < phoenix__> Gynvael: ja zaraz spadam 10:32 <@Gynvael> SlimFast: wklep w konsoli: set path=%path%;c:\dev-cpp\bin 10:33 <@Gynvael> phoenix__: tyo log ci zostanie, 10:33 < phoenix__> Gynvael: wiec __phoenix bezdie logowal to piszcie wyraznie ;] 10:33 <@Gynvael> phoenix__: teraz podstawy beda i tak, potem wieczorem cos najwyzej ;> 10:33 <@Gynvael> phoenix__: ok ;> 10:33 < cinq> SlimFast: po co Ci to kompilowac? pozniej sie tym zajmiesz 10:33 < phoenix__> Gynvael: ja wolalbym gdzies o 23 10:33 <@Gynvael> SlimFast: jak wklepiesz to powiedz gdzie masz ten ex1.c sciagniety 10:33 <@Gynvael> phoenix__: ja tez ;> 10:33 < d0b0c0p> SlimFast: a sciagnales dev-c++ z mingw? :] 10:33 < SlimFast> ten plik mam na dysku e 10:33 < d0b0c0p> czy bez? 10:33 < SlimFast> nie wiem z czym :P 10:33 <@Gynvael> phoenix__: najwyzej lookniesz loga i ci odpowiem na ew pytania 10:33 <@Gynvael> SlimFast: a ile zajmowal ?:P 10:34 <@Gynvael> SlimFast: 2mb czy 10mb ?;> 10:34 < cinq> ;d 10:34 < SlimFast> 7 10:34 < SlimFast> [; 10:34 < SlimFast> 7.80 chyba :) 10:34 <@Gynvael> ok 10:34 <@Gynvael> to spoko 10:34 < d0b0c0p> mi na dysku zajmuje 73 ^==^, tylko, ze ja osobno sciagalem mingw ;] 10:35 <@Gynvael> SlimFast: wiec w jakim katalogu masz to ex1.c ? 10:35 < SlimFast> ok mam ten plin na dysku e 10:35 < SlimFast> e: 10:35 < SlimFast> ;] 10:35 < phoenix__> Gyn czemu mi powstal plik a.out 10:35 < SlimFast> e:\ex1/c 10:35 < phoenix__> ? 10:35 <@Gynvael> po prostu ? 10:35 < SlimFast> tak 10:35 <@Gynvael> phoenix__: a dales -o ex1 ? 10:35 < SlimFast> e:\ex1.c 10:35 < SlimFast> :) 10:35 <@Gynvael> SlimFast: ok 10:35 <@Gynvael> SlimFast: wiec wpisz w konsoli: 10:35 <@Gynvael> SlimFast: e: 10:35 <@Gynvael> SlimFast: cd \ 10:35 <@Gynvael> SlimFast: gcc ex1.c -o ex1.exe 10:35 <@Gynvael> SlimFast: ex1.exe 10:35 < phoenix__> Gynvael: daklen 10:36 < phoenix__> i powstal plik 10:36 <@Gynvael> phoenix__: -o a nie -O na pewno ?;> 10:36 <@Gynvael> phoenix__: powinien powstac plik ex1 10:36 < phoenix__> skopiolwalem to co ty napisales 10:36 < phoenix__> ten tez powstal 10:36 < phoenix__> 2 powstaly 10:36 <@Gynvael> a 10:36 <@Gynvael> tyo ok 10:36 <@Gynvael> wywal ten a.out 10:36 < SlimFast> o skompilwoalo :) 10:36 <@Gynvael> rm a.out 10:36 < d0b0c0p> Gynvael: del ;] 10:36 <@Gynvael> SlimFast: wypisalo ci Hello World ? 10:36 < SlimFast> tak 10:37 < cinq> k lecimy dalej 10:37 <@Gynvael> ok 10:37 < cinq> teraz obaisniaj 10:37 <@Gynvael> wiec 10:37 < phoenix__> Gyn to teraz komentarze co do czego 10:37 <@Gynvael> teraz co jest co 10:37 <@Gynvael> wiec 10:37 < SlimFast> ja nie iwem o co chodzi z tym include caly czas ;d 10:37 <@Gynvael> C sklada sie z dwoch czesci 10:37 * d0b0c0p by polecil na przyszlosc www.cplusplus.com/ref/ 10:37 <@Gynvael> pierwsza czesc, to tak zwany PREPROCESOR 10:37 <@Gynvael> wiekszosc instrukcji PREPROCESORA zaczyna sie od # 10:38 <@Gynvael> na przylklad #include 10:38 <@Gynvael> PREPROCESOR jest czyms, to dzieje sie przed kompilacja 10:38 <@Gynvael> *co dziala ;p 10:38 <@Gynvael> glownie sluzy do podmian nazw, wrzucania "bibliotek" etc 10:38 <@Gynvael> teraz tak 10:38 <@Gynvael> niech kazdy zalozy dwa pliki 10:38 <@Gynvael> pierwszy: asdf.txt 10:38 <@Gynvael> i wpisze w nim: ala ma kota 10:39 < d0b0c0p> niop 10:39 < SlimFast> ... 10:39 < SlimFast> jets ;d 10:39 <@Gynvael> i drugi: 10:39 <@Gynvael> ex2.c o tresci 10:39 <@Gynvael> tutaj wklejam plik: 10:40 <@Gynvael> #include "asdf.txt" 10:40 <@Gynvael> a tu juz nie 10:40 <@Gynvael> niom 10:40 <@Gynvael> te 3 linie do "niom" 10:40 <@Gynvael> (ok, ci co nie sa na konsoli spadac na konsole ;p) 10:40 <@Gynvael> (jesli ktos nie wie jak, pisac) 10:40 < SlimFast> ex2.c o tresci 10:40 < SlimFast> tutaj wklejam plik: 10:40 < SlimFast> #include "asdf.txt" 10:40 < SlimFast> a tu juz nie 10:40 < SlimFast> niom 10:40 <@Gynvael> zaczynamy na konsoli od: set path=%path%;SciezkaDoDev-Cpp\bin 10:40 < SlimFast> tutaj wklejam plik: 10:40 < SlimFast> #include "asdf.txt" 10:40 < SlimFast> a tu juz nie 10:40 < SlimFast> niom 10:40 < SlimFast> te linie 10:40 < SlimFast> ? 10:40 < cinq> nie 10:41 <@Gynvael> eh 10:41 < cinq> bo on ma sie odwola do asdf ;d 10:41 <@Gynvael> zaznacze gwiazdka 10:41 <@Gynvael> ktore 10:41 <@Gynvael> albo 10:41 < SlimFast> re linie: 10:41 < SlimFast> * tutaj wklejam plik: 10:41 < SlimFast> #include "asdf.txt" 10:41 < SlimFast> a tu juz nie 10:41 < SlimFast> niom 10:41 < SlimFast> * 10:41 < SlimFast> ;d 10:41 < SlimFast> ? 10:41 <@Gynvael> http://rafb.net/paste/results/wzeZg559.html 10:41 <@Gynvael> tam ma ex2.c wygladac ;> 10:41 < phoenix__> Gynvael: w linie tez to set path.... ? 10:42 <@Gynvael> http://gynvael.lunarii.org/temp/asdf.txt a tak asdf 10:42 <@Gynvael> phoenix__: a w linie nie trzeba bo lin jest kochany 10:42 < SlimFast> ok zapisany :D 10:42 <@Gynvael> ok 10:42 <@Gynvael> i teraz 10:42 <@Gynvael> piszemy pod konsola 10:42 < phoenix__> Gynvael: to pisz tez co na linie a co na win bo ja za chwile spadam 10:42 <@Gynvael> gcc ex2.c -E -o ex2.txt 10:42 <@Gynvael> pod oby dwoma systemami 10:43 < phoenix__> o takie cos mi chodzi 10:43 < SlimFast> jaksi blad 10:43 <@Gynvael> SlimFast: jaki ? 10:43 <@Gynvael> sklej 10:43 < phoenix__> *wklej 10:43 <@Gynvael> z konsoli na windzie przekleja sie: na NTkach zaznaczasz i naciskasz enter 10:43 <@Gynvael> po czym wklejasz tutaj 10:43 <@Gynvael> a pod 98 zaznaczsz i klkasz ikonke na gorze od kopiowania 10:43 < SlimFast> in file included from ex2.c:3: 10:44 < adam_i> SlimFast: : daje enter na kocncu 10:44 < SlimFast> lol 10:44 < SlimFast> dalem 10:44 < SlimFast> ;] 10:44 < adam_i> ale w ala ma kota 10:44 <@Gynvael> SlimFast: tylko to ? 10:44 <@Gynvael> SlimFast: dales -E ? 10:44 < cinq> pandaboy: uspokuj sie! [; 10:44 < adam_i> SlimFast: asdf.txt:1:12: warning: no newline at end of file ? 10:44 < SlimFast> tak 10:44 < SlimFast> :) 10:44 <@Gynvael> tya, to daj enter na koncu 10:45 < adam_i> to daj enter po al ma kota 10:45 < d0b0c0p> adam_i: daj etner na koncu asdf.txt 10:45 <@Gynvael> (ja mam vim, on mi automagicznie dodaje ;p) 10:45 <@Gynvael> ok 10:45 <@Gynvael> teraz tak 10:45 < SlimFast> znowu to samo [; 10:45 <@Gynvael> gcc -E to jest "nie kompiluj, tylko odpal pre-processor" 10:45 <@Gynvael> SlimFast: to daj w asdf.txt dwa entery 10:45 <@Gynvael> SlimFast: na koneic, zapisz i 1m 10:45 < phoenix__> dobra to ja spadam 10:45 <@Gynvael> w pliku ex2.txt powinno pojawic sie cos takiego 10:45 < d0b0c0p> papa phoenix__ 10:45 < phoenix__> tylko pamietajcie pisac o obu systesmach 10:46 < SlimFast> o zrobilo [; 10:46 <@Gynvael> # 1 "ex2.c" 10:46 <@Gynvael> # 1 "" 10:46 <@Gynvael> # 1 "" 10:46 <@Gynvael> # 1 "ex2.c" 10:46 <@Gynvael> tutaj wklejam plik: 10:46 <@Gynvael> # 1 "asdf.txt" 1 10:46 <@Gynvael> ala ma kota 10:46 <@Gynvael> # 3 "ex2.c" 2 10:46 < phoenix__> d0b0c0p: jakby gyn pisal o winidzie to go upomnij pamietaj ;] 10:46 <@Gynvael> a tu juz nie 10:46 <@Gynvael> -- cut -- 10:46 < d0b0c0p> phoenix__: hehe :D 10:46 < phoenix__> d0b0c0p: ma pisac ten o linie ;] 10:46 < SlimFast> # 1 "ex2.c" 10:46 < SlimFast> # 1 "" 10:46 < SlimFast> # 1 "" 10:46 < SlimFast> # 1 "ex2.c" 10:46 < SlimFast> tutaj wklejam plik: 10:46 < SlimFast> # 1 "asdf.txt" 1 10:46 < phoenix__> dobra to cya 10:46 < d0b0c0p> ;-) 10:46 < SlimFast> ala ma kota 10:46 < phoenix__> !time 10:46 -__phoenix:#gynkurs- 10:42:48 10:46 < SlimFast> # 4 "ex2.c" 2 10:46 < SlimFast> a tu juz nie 10:46 <@Gynvael> i teraz, te linie z # nas tutaj nie interesuja, to sa komentarze dla kompilatora 10:46 < SlimFast> ja mam takic cso :) 10:46 < d0b0c0p> ale chyba bedzie to samo ;) 10:46 < phoenix__> dobra moj bot czuwa ;] 10:46 <@Gynvael> niom 10:46 <@Gynvael> i teraz, te linie z # nas tutaj nie interesuja, to sa komentarze dla kompilatora 10:46 -!- phoenix__ [~phoenix@cdp34.neoplus.adsl.tpnet.pl] has quit ["papa"] 10:46 < d0b0c0p> ;] 10:46 <@Gynvael> wiec mozna wyswietlic bez nich ;> 10:47 <@Gynvael> na windzie: type ex2.c | find /v "#" 10:47 <@Gynvael> na linuxie: cat ex2.c | grep -v "#" 10:47 <@Gynvael> i wyswietli: 10:47 <@Gynvael> --cut-- 10:47 <@Gynvael> tutaj wklejam plik: 10:47 <@Gynvael> ala ma kota 10:47 <@Gynvael> a tu juz nie 10:47 -!- cinq [^cinq@ccb14.neoplus.adsl.tpnet.pl] has quit [Broken pipe] 10:47 <@Gynvael> --cut-- 10:47 <@Gynvael> co sie stalo brzmi pytanie 10:48 <@Gynvael> odpowiedz: #include WKLEIL plik asdf.txt w miejsce #include "asdf.txt" 10:48 <@Gynvael> po prostu wzial i go tam wrzucil 10:48 < SlimFast> i pisze tutaj wklejam plik 10:48 < SlimFast> a tutaj uz nie 10:48 <@Gynvael> SlimFast: to jest w kodzie ex2.c 10:48 -!- cinq [^cinq@ccb14.neoplus.adsl.tpnet.pl] has joined #gynkurs 10:48 <@Gynvael> w ex2.c jest 10:48 <@Gynvael> tutaj wklejam plik: 10:48 <@Gynvael> #include "asdf.txt" 10:48 <@Gynvael> a tu juz nie 10:48 <@Gynvael> zamiast #include "asdf.txt" pojawia sie "ala ma kota" 10:48 <@Gynvael> wiec dostajemy 10:48 <@Gynvael> tutaj wklejam plik: 10:48 <@Gynvael> ala ma kota 10:49 <@Gynvael> a tu juz nie 10:49 < SlimFast> hm 10:49 <@Gynvael> ok, czy to jest jasne ? 10:49 < SlimFast> u mnie nei ma napsaiu ala ma kota :P 10:49 <@Gynvael> jesli ktos bawil sie php, to include() tam dziala identyczne 10:49 -!- cinq [^cinq@ccb14.neoplus.adsl.tpnet.pl] has quit ["#include //"] 10:49 <@Gynvael> SlimFast: co masz w pliku asdf.txt ? 10:49 < SlimFast> ala ma kota 10:49 < SlimFast> ;d 10:49 <@Gynvael> i czy masz ten plik w tym samym katalogu 10:49 <@Gynvael> co ex2.c 10:49 < adam_i> SlimFast: a dles "asdf.txt czy 10:49 < SlimFast> tutaj wklejam plik: 10:49 < SlimFast> #include "asdf.txt" 10:49 < SlimFast> a tu juz nie 10:49 <@Gynvael> SlimFast: niom to jest w ex2.c 10:49 <@Gynvael> a co masz w ex2.txt ? 10:49 < SlimFast> nom 10:50 < SlimFast> # 1 "ex2.c" 10:50 < SlimFast> # 1 "" 10:50 < SlimFast> # 1 "" 10:50 < SlimFast> # 1 "ex2.c" 10:50 < SlimFast> tutaj wklejam plik: 10:50 < SlimFast> # 1 "asdf.txt" 1 10:50 < SlimFast> ala ma kota 10:50 < SlimFast> # 4 "ex2.c" 2 10:50 < SlimFast> a tu juz nie 10:50 < adam_i> no i masz tego kota 10:50 <@Gynvael> SlimFast: niom ;> czyli masz dobrze 10:50 < SlimFast> ale w konsoli nie mam kota :) 10:50 <@Gynvael> SlimFast: daj w konsoli sobie: type ex2.txt | grep /v "#" 10:50 < adam_i> ex2.txt a nei ex2.c 10:51 <@Gynvael> eh 10:51 <@Gynvael> fakt 10:51 <@Gynvael> -=104450=- <@Gynvael> na windzie: type ex2.c | find /v "#" 10:51 <@Gynvael> -=104500=- <@Gynvael> na linuxie: cat ex2.c | grep -v "#" 10:51 <@Gynvael> tam ma byc ex2.txt 10:51 <@Gynvael> w obu miejscach 10:51 < SlimFast> ;] 10:51 <@Gynvael> sorx za zamieszanie 10:51 <@Gynvael> SlimFast: jak tak zrobisz to co dostajesz ? 10:51 < SlimFast> dobrzejest :0 10:51 < SlimFast> mam kota [; 10:52 <@Gynvael> ok 10:52 <@Gynvael> reszta ? 10:52 <@Gynvael> wszyscy tak maja ? 10:52 < adam_i> ja mam 10:52 < d0b0c0p> not ok, but ok ;] 10:52 <@Gynvael> d0b0c0p: ? 10:52 < d0b0c0p> mi sie konslola zacina jak dam find /v "#" 10:53 <@Gynvael> d0b0c0p: a napisales cale ? 10:53 <@Gynvael> d0b0c0p: type ex2.txt | find /v "#" 10:53 <@Gynvael> ? 10:53 < d0b0c0p> tak daje 10:53 <@Gynvael> i ci sie zacina ? -- 10:53 < d0b0c0p> ale niewazne ;] 10:53 <@Gynvael> co ty masz za winde ? 10:53 < d0b0c0p> ta 10:53 < d0b0c0p> ta 10:53 <@Gynvael> ciekawe 10:53 <@Gynvael> nvm 10:53 < SlimFast> mi chodzi 10:53 < SlimFast> :/ 10:53 <@Gynvael> dobra 10:53 < SlimFast> [; 10:53 <@Gynvael> czy kazdy rozumie 10:53 <@Gynvael> co robi #include "plik" ? 10:54 < SlimFast> pokazuje zaqwrtosc pliku 10:54 < adam_i> nom 10:54 < SlimFast> [; 10:54 < d0b0c0p> ta ;] 10:54 < SlimFast> chyba :D 10:54 < adam_i> wkleja nei pooazkuje 10:54 < d0b0c0p> nie pokazuje ;] 10:54 < SlimFast> no wkleja :P 10:54 <@Gynvael> odpowiedz poprawna brzmi "WKLEJA zawartosc pliku w miejsce #include" 10:54 <@Gynvael> ;> 10:54 < SlimFast> i pokazuje ;P 10:54 < adam_i> SlimFast: nei poakzuje 10:54 <@Gynvael> i to zapamietac ;> to jest intuicja, nie definicja ofc ;> 10:54 < SlimFast> jak wkei to to widac 10:54 < SlimFast> :) 10:54 <@Gynvael> SlimFast: pokazuje to type ;p 10:54 <@Gynvael> ok 10:54 <@Gynvael> i teraz 10:54 <@Gynvael> wracamy do ex1.c 10:54 <@Gynvael> tam jest 10:54 <@Gynvael> #include 10:54 <@Gynvael> czym sie rozni 10:54 <@Gynvael> #include "asdf" 10:54 <@Gynvael> od 10:55 <@Gynvael> #include 10:55 < adam_i> <> oznacza ze z katalogu kompilatora 10:55 <@Gynvael> odpowiedz brzmi: "asdf" szuka w OBECNYM katalogu 10:55 * SlimFast slaps adam_i around a bit with a large trout 10:55 <@Gynvael> a w katalogach kompilatora (badz podanych z -I przy kompilacji, ale to niewazne teraz) 10:55 < SlimFast> [; 10:55 <@Gynvael> ok 10:55 <@Gynvael> teraz tak 10:55 <@Gynvael> na windzie 10:55 <@Gynvael> idziemy do katalogu dev-cpp 10:55 < adam_i> SlimFast: co sie bijesz 10:55 <@Gynvael> do katalogu include tam 10:55 <@Gynvael> i szukamy pliku stdio.h 10:56 <@Gynvael> jak znajdziemy, mozemy go otworzyc, etc, po prostu chodzi o to zebyscie wiedzieli ze cos takiego istnieje 10:56 <@Gynvael> i gdzie tego szukac 10:56 <@Gynvael> dev-cpp\includes 10:56 <@Gynvael> dev-cpp\include 10:56 <@Gynvael> ;p 10:56 <@Gynvael> na linuxie 10:56 < SlimFast> mam :P 10:56 <@Gynvael> /usr/include albo /usr/local/include 10:56 <@Gynvael> ok 10:56 < SlimFast> ale jak to otworzylem w notaniku 10:56 < SlimFast> to dzien to;d 10:56 <@Gynvael> SlimFast: ;ppp 10:56 <@Gynvael> ok 10:56 <@Gynvael> ten plik nas teraz nie interesuje 10:57 <@Gynvael> on jest pogmatwany 10:57 <@Gynvael> ;p 10:57 <@Gynvael> po prostu wazne zebyscie wiedzieli ze jest 10:57 < SlimFast> widze 10:57 < SlimFast> [; 10:57 <@Gynvael> i gdzie jest 10:57 <@Gynvael> czyli 10:57 <@Gynvael> #include 10:57 <@Gynvael> go wklei tam 10:57 <@Gynvael> mozna to sprawdzic robiac: gcc -E ex1.c -o ex1.txt 10:57 <@Gynvael> ale to nie jest konieczne 10:57 <@Gynvael> wystarczy ze mi uwierzycie na slowo ;> 10:57 <@Gynvael> ok 10:57 < adam_i> duzo smici jednozensie wkleja 10:57 <@Gynvael> teraz.. co jest w tym pliku stdio.h 10:57 < adam_i> Gynvael: neida sei tak ze tylko poszczegolne funkcje 10:58 <@Gynvael> adam_i: to sa tylko definicje, to w niczym nie przeszkadza ;> 10:58 <@Gynvael> e 10:58 <@Gynvael> deklaracje 10:58 <@Gynvael> ;p 10:58 <@Gynvael> ok 10:58 < SlimFast> dobrze jest 10:58 < SlimFast> ;] 10:58 <@Gynvael> w pliku stdio.h sa DEKLARACJE STANDARDOWYCH FUNKCJI WYJSCIA I WEJSCIA ;> 10:58 <@Gynvael> STDIO == STD (standard) I (input) O (output) 10:58 <@Gynvael> na przyklad jest tam funkcja "puts" zadeklarowana 10:59 <@Gynvael> DEKLARACJA to powiedzenie kompilatorowi "cos takiego ISTNIEJE" (nie mowisz mu dokladnie gdzie i co to, tylko ze cos takiego jest) 10:59 <@Gynvael> czyli w stdio.h jest powiedziane na przyklad: istnieje funkcja "puts" 10:59 -!- seraphin_ [~seraphin@82.139.18.5] has joined #gynkurs 10:59 < SlimFast> :) 10:59 <@Gynvael> ok 10:59 <@Gynvael> czy wszystko jasne ? 10:59 < adam_i> ta 10:59 < seraphin_> ta 10:59 < SlimFast> nom 11:00 < d0b0c0p> ta 11:00 <@Gynvael> seraphin_: ;p 11:00 <@Gynvael> ok 11:00 < seraphin_> :P 11:00 <@Gynvael> wiec lecimy dalej 11:00 <@Gynvael> juz jedna linie hello world mamy za soba ;> 11:00 <@Gynvael> teraz mamy cos takiego 11:00 <@Gynvael> int main(void) 11:00 <@Gynvael> { puts("Hello World"); 11:00 <@Gynvael> return 0; 11:00 <@Gynvael> } 11:00 <@Gynvael> noo prawie cos takiego ;> 11:00 <@Gynvael> co jest co 11:00 <@Gynvael> wiec.. jakos tak wyszlo 11:00 <@Gynvael> ze w jezyku C sa funkcje 11:01 <@Gynvael> funkcja to oglnie rzecz bioraz kawalek kodu z nazwa, ktora to mozna wywolac a ona powroci do miejsca wywolania po skonczeniu 11:01 <@Gynvael> np 11:01 <@Gynvael> obiad() to funkcja 11:01 <@Gynvael> dlaczego ? 11:01 <@Gynvael> siedzimy przed kompem 11:01 <@Gynvael> mama wola nas na obiad, wiec idziemy na obiad jemy obiad 11:01 <@Gynvael> i wracamy przed kompa 11:01 <@Gynvael> ;> 11:01 <@Gynvael> tzw Glowna Funkcja w C jest "main" 11:01 < SlimFast> :) 11:01 * adam_i wydrukuje logi z irca i wyda ksizke 11:02 < SlimFast> lol ;d 11:02 <@Gynvael> program zaczyna dzialanie od tej funkcji 11:02 < SlimFast> adam_i: dal mnie bezplatny egzemplarz ? :PP 11:02 < adam_i> SlimFast: ty masz na zywo 11:02 <@Gynvael> teraz tak 11:02 <@Gynvael> jak sie definiuje funkcje, jak ona wyglada: 11:02 < d0b0c0p> eot of ot 11:02 * SlimFast slaps adam_i around a bit with a large trout 11:02 <@Gynvael> TYP_ZWRACANY NAZWA(ARGUMENTY) { 11:02 < SlimFast> :P 11:02 <@Gynvael> CIALO FUNKCJI 11:02 <@Gynvael> } 11:02 <@Gynvael> po kolei 11:02 <@Gynvael> dla main: 11:03 <@Gynvael> TYP_ZWRACANY to int 11:03 <@Gynvael> NAZWA to main 11:03 <@Gynvael> ARGUMENTY to void 11:03 <@Gynvael> CIALO FUNKCJI to puts("Hello World"); i return 0; 11:03 < adam_i> a to co zwrca main to kod wyjsca z programu ? 11:03 <@Gynvael> adam_i: tak;> 11:03 <@Gynvael> teraz tak 11:03 <@Gynvael> main przyjmuje 3 postacie 11:03 <@Gynvael> z czego narazie znac musicie jedna 11:03 <@Gynvael> int main(void) { 11:03 <@Gynvael> tutaj kod 11:03 <@Gynvael> return 0; 11:03 <@Gynvael> } 11:04 <@Gynvael> main sie zawsze nazywa main 11:04 < d0b0c0p> maly ot :). czemu w c++ jest main(), a w c main(void)? 11:04 <@Gynvael> jesli nie dacie main w programie, to kompilator bedzie zly 11:04 <@Gynvael> d0b0c0p: w c++ (void) oznacza sie krotko (), w C natomiast () to (...) 11:04 <@Gynvael> d0b0c0p: wiec w C++ mozesz pisac main(), ale w C juz main(void) 11:05 <@Gynvael> teraz tak 11:05 <@Gynvael> po kolei 11:05 <@Gynvael> co to jest TYP_ZWRACANY 11:05 <@Gynvael> to jest cos co funkcja zwraca, 11:05 <@Gynvael> na przyklad 11:05 <@Gynvael> dodawanie jest funkcja 11:05 <@Gynvael> ktora ma dwa parametry i zwraca ich wynik 11:05 <@Gynvael> na przyklad 11:05 <@Gynvael> 1+2 11:05 <@Gynvael> to dodaj(1,2) 11:05 <@Gynvael> to zwroci wynik, czyli 3 11:06 <@Gynvael> main zwraca do systemu kod bledu 11:06 <@Gynvael> tym sie za chwile pobawimy 11:06 <@Gynvael> ogolnie jest przyjete 11:06 <@Gynvael> ze return 0; w main oznacza "Program Zakonczyl Pomyslnie Wykonanie" ;> 11:06 <@Gynvael> main ma ZAWSZE int, jesli nie ma int, to znaczy ze pisal to kretyn ;p 11:06 <@Gynvael> teraz co do nazwy funkcji 11:07 < SlimFast> heh 11:07 < seraphin_> Gynvael: maly ot, co sie stanie jezeli w C napisze int main() ? 11:07 <@Gynvael> seraphin_: przyjmie to, ale tak nie powinno sie robic ;> 11:07 < seraphin_> bo ja tak pisze i gcc sie nie burzy 11:07 <@Gynvael> seraphin_: to po prostu zly styl i mieszanie pojec ;> 11:07 < seraphin_> aha, ok 11:07 < adam_i> a void main(void) 11:07 <@Gynvael> seraphin_: zadnego innego powodu nie ma, jako ze technicznie jest to poprawny zapis 11:07 < d0b0c0p> hieh :) 11:07 < adam_i> bo jak tak widzlm w kursie 11:07 < d0b0c0p> adam_i: tez jest zel ;] 11:07 <@Gynvael> adam_i: afair gcc wyrzuca blad 11:07 < d0b0c0p> bo main ma zwracac jakas wartosc ;-) 11:08 <@Gynvael> adam_i: ale bodajze Visual C++ to przyjmie 11:08 < adam_i> ale bede psial int bo nijstem kretyn 11:08 < d0b0c0p> hehe :D 11:08 < adam_i> ale gcc to kompiluje i tak 11:08 < seraphin_> a small int przyjmie?;p 11:08 <@Gynvael> asdf.c: In function `main': 11:08 <@Gynvael> asdf.c:2: warning: return type of 'main' is not `int' 11:08 <@Gynvael> gcc wyrzuca warning 11:09 <@Gynvael> a kompilator M$ nawet sie nie zajaknie 11:09 < d0b0c0p> Gynvael: sorki, ze maly ot... gdzie mozna znalesc standard c 99 (opis tego standardu)? 11:09 <@Gynvael> d0b0c0p: uf, to jest troche szukania, 11:09 <@Gynvael> d0b0c0p: moge ci wyslac potem 11:09 < d0b0c0p> ;/ 11:09 < d0b0c0p> jestes wielki :> 11:10 <@Gynvael> d0b0c0p: ISO/IEC 9899:1999 to oznaczenie standardu 11:10 <@Gynvael> d0b0c0p: plik sie zwie ansi_c.pdf 11:10 < d0b0c0p> na maila, czy wrzucisz na serka? 11:10 <@Gynvael> nba serek 11:10 <@Gynvael> *na server 11:10 < d0b0c0p> k 11:10 < d0b0c0p> jaki bedzie adres? 11:10 <@Gynvael> ok dalej 11:10 < seraphin_> tylko nie serek... 11:10 < seraphin_> ok dalej 11:10 <@Gynvael> adam_i: po prostu zalozmy ze ma byc int ;> system spodziewa sie jakiegos kodu bledu ;> 11:10 <@Gynvael> adam_i: void tam jest bardzo zlym nawykiem > 11:10 <@Gynvael> ok 11:10 <@Gynvael> dalej 11:10 < adam_i> a po co odrazu int a nei np byte jakeis 11:10 <@Gynvael> nazwa to main ;> 11:10 < adam_i> ok dalej 11:10 <@Gynvael> zazwyczaj ;> 11:11 <@Gynvael> adam_i: na 32 bitowych prockach typy 32 bitowe chodza szybciej ;> 11:11 < d0b0c0p> adam_i: char? 11:11 <@Gynvael> adam_i: wiec kwestia optymalizacyjna glownie ;> 11:11 < adam_i> aha 11:11 <@Gynvael> ok 11:11 <@Gynvael> dalej 11:11 <@Gynvael> nazwa funkcji moze byc cokolwiek skladajace sie z liter duzych, malych badz znaku _ 11:12 <@Gynvael> np a_s_d_f jest ok 11:12 <@Gynvael> mozzna tez uzywac cyfry, pod warunkiem ze nie sa one pierwszym znakiem nazwy 11:12 < seraphin_> a cyfry w srodku? 11:12 < seraphin_> aha ok 11:12 <@Gynvael> na przyklad a_s_d_3_a_4 jest ok 11:12 <@Gynvael> ale 2_3_4 juz nie 11:12 <@Gynvael> _2_3_4 tak ;> 11:12 <@Gynvael> ok 11:12 <@Gynvael> glowna funckja zwie sie "main" ZAWSZE (oprocz wyjatkow ofc ;>) 11:13 <@Gynvael> (bo wyjatki sa do wszystkiego, ale niewazne, wyjatkami sie pobawicie za 3 lata ;p) 11:13 < d0b0c0p> np. w winapi nie ma main :-) 11:13 <@Gynvael> ok 11:13 <@Gynvael> d0b0c0p: na przyklad ;> chociaz moze byc ;> 11:13 < d0b0c0p> kk ;] 11:13 <@Gynvael> ok 11:13 <@Gynvael> i teraz 11:13 <@Gynvael> -=110046=- <@Gynvael> ARGUMENTY to void 11:13 <@Gynvael> int main(void) 11:13 <@Gynvael> void to proznia, pustka, nic ;> 11:14 <@Gynvael> czyli jesli funkcja w C nie ma zadnych argumentow (tj nic jej nie chcemy przekazac) 11:14 <@Gynvael> to ma (void) 11:14 < seraphin_> hmm 11:14 < d0b0c0p> a jesli jest ()? 11:14 < adam_i> a jakie main mzoe miec argument ? parametry programu ? 11:14 <@Gynvael> (main ma 3 postacie, (void) to jedna z nich, reszta ma juz argumenty) 11:14 < seraphin_> ale () to niby tez pustka 11:14 <@Gynvael> d0b0c0p: to powiedzmy ze to samo co (void), ale nie powinno sie w C tak pisac ;> 11:14 < seraphin_> bo niby nie ma argumentow 11:14 <@Gynvael> seraphin_: nie do konca, () to NIEOKRESLONA liczba parametrow 11:14 < d0b0c0p> a czemu powiedzmy? :D 11:15 <@Gynvael> seraphin_: a (void) to BRAK parametrow 11:15 < seraphin_> haa taki bajer 11:15 < d0b0c0p> czyli moge przekazac do () 1, 2, znak, string, itd.? 11:15 <@Gynvael> d0b0c0p: tak 11:15 < seraphin_> ale co wtedy przyjmie te zmienne :| 11:15 < d0b0c0p> a jak sie potem to odczytuje w funkcji (jakie sa nazwy tych argumentow)? 11:16 <@Gynvael> seraphin_: ehehe tym sie pobawimy pozniej ;> to ma swoje zastosowanie 11:16 <@Gynvael> powiedzmy ze w C nazwy nie do konca sa konieczne ;p 11:16 <@Gynvael> ale o tym duzo pozniej ;> 11:16 < seraphin_> ok 11:16 <@Gynvael> ok 11:16 < d0b0c0p> --; 11:16 <@Gynvael> czyli wiemy juz co to 11:16 <@Gynvael> int main(void) 11:16 <@Gynvael> tak ? 11:16 < adam_i> tak 11:16 < seraphin_> ta 11:16 <@Gynvael> teraz kazdy blok kodu 11:16 <@Gynvael> jest miedzy { } 11:16 <@Gynvael> zapamietac ;> 11:16 <@Gynvael> funkcje zawsze maja { } 11:17 <@Gynvael> inne bloki kodu nie zawsze 11:17 <@Gynvael> my mamy tak 11:17 <@Gynvael> { 11:17 <@Gynvael> puts("Hello World"); 11:17 <@Gynvael> return 0; 11:17 <@Gynvael> } 11:17 <@Gynvael> bloki kodu mozna dodawac for fun, albo z jakiegos powodu 11:17 < d0b0c0p> bedziesz moil o zasiegu zmiennych? ;> 11:17 <@Gynvael> bez problemu mozemy napisac 11:17 < adam_i> return zwraca to co ma zwrocvic funkcja ? 11:17 <@Gynvael> int main(void) 11:17 <@Gynvael> { 11:17 <@Gynvael> { 11:17 <@Gynvael> { 11:17 <@Gynvael> puts("Hello World"); 11:17 <@Gynvael> return 0; 11:17 <@Gynvael> } 11:17 <@Gynvael> } 11:18 <@Gynvael> } 11:18 <@Gynvael> i to tez jest poprawnie ;> 11:18 <@Gynvael> adam_i: tak;> ale po kolei ;> 11:18 < seraphin_> hmmm ale nie ma sensu, nie? 11:18 <@Gynvael> seraphin_: anom nie ma ;> 11:18 <@Gynvael> seraphin_: zawsze sie daje { } i juz ;> 11:18 <@Gynvael> ok 11:18 <@Gynvael> teraz mamy puts ;> 11:18 <@Gynvael> puts("napis"); 11:18 <@Gynvael> puts to funkcja ZADEKLAROWANA w stdio.h ktora: 11:19 <@Gynvael> PUTS - PUT S(tring) - wypisuje Lancuch Znakow (napis ;p) 11:19 <@Gynvael> napisy w C to histormia dluga i szeroka ;> 11:19 < seraphin_> i dodaje \n 11:19 <@Gynvael> narazie powiem tylko ze napisem moze byc "ala ma kota" ;> 11:19 < d0b0c0p> a nie lepiej uzywac printf? 11:19 <@Gynvael> i dodaje \n ;> 11:19 <@Gynvael> d0b0c0p: i jedno i drugie ma swoje zalety ;> 11:19 < seraphin_> ale to formatowanie dodaje 11:19 <@Gynvael> d0b0c0p: jak i wady 11:19 < seraphin_> bez formatowania jest szybsze chyba 11:19 < d0b0c0p> ja zawsze uzywam printf ;) 11:19 <@Gynvael> yep, jak mowi seraphin_ ;> 11:20 < seraphin_> ale nie daje takich mozliwosci 11:20 <@Gynvael> puts wypisze linie i doda enter 11:20 <@Gynvael> a printf przeanalizuje i wypisze przekonwertowane ;p 11:20 <@Gynvael> puts jest szybsze 11:20 < adam_i> a ten string mus byc w " czy mzoe byc w ' 11:20 <@Gynvael> ale printf ma wiecej zastosowan ;> 11:20 <@Gynvael> string musi byc w "asdf" 11:20 < seraphin_> musza byc w "" 11:20 <@Gynvael> w '' sa znaki 11:20 < seraphin_> '' oznacza jeden znak 11:20 < adam_i> a no tak 11:20 <@Gynvael> na przyklad 'a', etc, ale o tym pozniej 11:21 < seraphin_> "x" to x\0 a 'x' to tylko x 11:21 <@Gynvael> parametry funkcji sa ZAWSZE w ( ) 11:21 <@Gynvael> seraphin_: noo prawie ;> 11:21 < d0b0c0p> Gynvael: juz nie musisz wrzucac ansi_c.pdf znalazlzem na google ;] 11:21 <@Gynvael> seraphin_: "x" to const char const *, a 'x' to int ;p 11:21 <@Gynvael> d0b0c0p: ok ;> 11:21 < adam_i> Gynvael: wrzuc 11:21 < adam_i> albo daj linka d0b0c0p 11:21 <@Gynvael> ehehe ok wrzuce ;> 11:21 <@Gynvael> d0b0c0p: daj linka ;> 11:21 < seraphin_> hmmm ciekawe 11:21 <@Gynvael> dobra 11:21 <@Gynvael> i teraz tak 11:21 < d0b0c0p> dam linka 11:22 < d0b0c0p> http://www.nirvani.net/docs/ansi_c.pdf 11:22 <@Gynvael> puts("napis"); po rostu wypisuje 11:22 <@Gynvael> teraz tak 11:22 <@Gynvael> kazda instrukcja badz ciag instrukcji MUSI byc zakonczona ; 11:22 <@Gynvael> dla kompilatora C nie ma ENTEROW, SPACJI, TABOW, sa ; , etc 11:22 <@Gynvael> dlatego mozemy bez problemu napisac: 11:22 <@Gynvael> puts 11:22 <@Gynvael> ( 11:22 <@Gynvael> "napis" 11:22 <@Gynvael> ) 11:22 <@Gynvael> ; 11:22 <@Gynvael> i to tez jest wpelni poprawne 11:22 <@Gynvael> "na 11:22 <@Gynvael> pis" 11:22 <@Gynvael> juz nie 11:22 <@Gynvael> ale 11:22 <@Gynvael> "na" 11:22 <@Gynvael> "pis" 11:23 <@Gynvael> tak 11:23 <@Gynvael> i to logicznie to samo ;> 11:23 <@Gynvael> mamy teraz puts("Hello World"); 11:23 <@Gynvael> napiszmy: 11:23 <@Gynvael> puts("Hello" " World"); 11:23 <@Gynvael> skompilujmy 11:23 <@Gynvael> i zobaczmy ze jest DOKLADNIE to samo 11:23 <@Gynvael> C laczy "asdf" "xxx" (ale TYLKO takie w cudzyslowiach) 11:24 <@Gynvael> czyli "asdf" "xxx" to to samo co "asdfxxx" 11:24 < d0b0c0p> a jesli by bylo 'a' 'b' 'c'? 11:24 <@Gynvael> d0b0c0p: to nie polaczy, bo to inty ;> 11:24 <@Gynvael> a 11:24 <@Gynvael> btw 11:24 <@Gynvael> int == integer == liczba calkowita 11:24 < d0b0c0p> Gynvael: to moze lepiej niech zajrza na wiki tam sa typy ;-) 11:24 <@Gynvael> obecnie o wielkosci 32 bitow (4 bajty) i zasiegu od -2*1024*1024 do 2*1024*1024-1 ;p 11:24 < d0b0c0p> http://pl.wikipedia.org/wiki/C_%28j%C4%99zyk_programowania%29 11:24 <@Gynvael> d0b0c0p: hii po kolei ;> 11:25 <@Gynvael> ok 11:25 <@Gynvael> czy ktos nie rozumie co robi puts ? 11:25 < adam_i> a gdzie SlimFast 11:25 <@Gynvael> .n 11:25 <@Gynvael> nie wiem 11:26 <@Gynvael> ok 11:26 <@Gynvael> lecimy dalej 11:26 <@Gynvael> return 0; 11:26 <@Gynvael> return to NIE JEST FUNKCJA 11:26 <@Gynvael> raz, to to jest KEYWORD (czyli nazwa zarezerwowana przez kompilator) 11:26 <@Gynvael> a dwa, to to ma nastepujace dzialanie 11:26 <@Gynvael> return ARGUMENT; 11:26 <@Gynvael> 1) wychodzi z funkcji 11:26 <@Gynvael> 2) funkcji poprzedniej / systemowi przekazuje ARGUMENT 11:27 <@Gynvael> ARGUMENT jest tu opcjonalny 11:27 <@Gynvael> np 11:27 < adam_i> a jesli nieam return to co bedze zwrocone ? 11:27 <@Gynvael> void asdf(void) (funkcja nic nie zwraca) moze uzyc return; 11:27 <@Gynvael> adam_i: 1) zostanie wygenerowany Warning ze nie jest zwracana wartosc 11:27 < d0b0c0p> Gynvael: takie btw... czemu w rekurencji jest return funkcja(cos_tam);? 11:28 <@Gynvael> adam_i: 2) ale to juz hackish, prawdopodobnie zostanie zwrocona wartosc ostatniej operacji arytmetycznej z uzyciem rejestru eax, badz tego co zwraca poprzednia funkcja 11:28 <@Gynvael> d0b0c0p: return zwraca WARTOSC argumentu.. 11:28 <@Gynvael> d0b0c0p: wartoscia argumentu funkcja(cos_tam) jest WYNIK tej funkcji dla cos_tam ;> 11:28 <@Gynvael> d0b0c0p: czyli on najpierw URUCHAMIA ta funkcje, po czym zwraca to co ona jemu zwrocila 11:29 < d0b0c0p> tak myslalem ;) 11:29 < d0b0c0p> bo sie glowiem czemu tak jest ;] 11:29 < d0b0c0p> tak samo jest w np. while(ble = 120) {} // nawet jak nie spelni warunku to przypisze 11:29 <@Gynvael> adam_i: ale na 2) sie nie opieraj, to jest BARDZO zalezne od kompialtora, OSu i humoru ;p 11:29 <@Gynvael> d0b0c0p: yep 11:29 <@Gynvael> d0b0c0p: chociaz to bedzie warning 11:30 <@Gynvael> d0b0c0p: while((ble=120)) jest poprawnie ;p 11:30 < d0b0c0p> ale ((ble = 120)) juz nie ;] 11:30 < d0b0c0p> spoznilem sie ;> 11:30 <@Gynvael> d0b0c0p: po za tym 120 spelnia warunek ;p 11:30 < d0b0c0p> wiem ;-) 11:30 < d0b0c0p> bo != 0 11:30 <@Gynvael> nvm 11:30 <@Gynvael> ok 11:30 <@Gynvael> tak ;> 11:30 <@Gynvael> teraz tak 11:30 <@Gynvael> no to return zwraca i wychodzi 11:30 <@Gynvael> czyli kompilator dziala tak: 11:30 <@Gynvael> #include 11:30 <@Gynvael> tam preprocesor wrzuca deklaracje funkcji 11:31 <@Gynvael> kompilator je czyta i zapamietuje jakie funkcje zna 11:31 <@Gynvael> na przyklad zapamietuja puts 11:31 <@Gynvael> int main(void) { 11:31 <@Gynvael> kompilator to czyta i wie ze teraz zaczyna sie funkcja "main" 11:31 <@Gynvael> puts("Hello World"); 11:31 <@Gynvael> kompilator wstawia tam wywolanie funkcji puts z argumentewm "Hello World"); i analizuje dalej 11:31 <@Gynvael> return 0; 11:31 <@Gynvael> kompilator wstawia tam wyjscie z funkcji z kodem 0 ;> 11:31 <@Gynvael> } 11:32 <@Gynvael> kompilator wie ze to jest koniec funkcji 11:32 <@Gynvael> linker (tzw konsolidator, robi z tego co kompilator mu poda plik wykonywalny) 11:32 <@Gynvael> linker teraz robli plik .exe (badz wykonywalny na linuxa) 11:32 <@Gynvael> i ustawia START PROGRAMU na funkcje main (kompilator mu powiedzial gdzie ona) 11:32 <@Gynvael> jak my odpalamy program.exe (badz ./program) 11:33 <@Gynvael> to jest wykonywane z main wszystko po kolei 11:33 < seraphin_> hmmm... istoty kompilatora nigdy nie czailem 11:33 < seraphin_> tfu 11:33 < seraphin_> linkera 11:33 <@Gynvael> czyli Hello World zostaje wypisane 11:33 < adam_i> to piszemuy teraz kompilator ? 11:33 <@Gynvael> po czym nastepuje powrot do systemu z kodem 0 11:33 <@Gynvael> adam_i: hehehe ne ;> ale to mozna widziec; > 11:33 <@Gynvael> ok 11:33 <@Gynvael> czy jeszcze jakies pytania do hello world ? 11:33 < d0b0c0p> chyba ne ;] 11:33 < seraphin_> hmm 11:34 < seraphin_> do hello moze nie 11:34 < seraphin_> ale 11:34 < seraphin_> pytanko mam 11:34 * d0b0c0p mysli, ze mozna by teraz zaczac wyjasniac pointerki ;) 11:34 < seraphin_> co sie dokladnie dzieje na etapie kompilowania i linkowania 11:34 < seraphin_> czemu sa dwa etapy 11:34 <@Gynvael> d0b0c0p: hehe po kolei ;p pointerki potem 11:34 <@Gynvael> seraphin_: ok ;> 11:34 <@Gynvael> wiec 11:34 <@Gynvael> masz kod 11:34 <@Gynvael> asdf.c powiedzmy 11:34 < seraphin_> nyo 11:34 < adam_i> seraphin_: bo linkier dodaje naglwokiek mz itp a kompilator tworzy oopcody 11:34 <@Gynvael> najpierw leci preprocesor i zamienia wszystkie #include #define etc na co tam trzeba 11:35 <@Gynvael> to mozna zobazcyc gcc -E 11:35 <@Gynvael> gcc -E asdf.c 11:35 <@Gynvael> teraz 11:35 <@Gynvael> kompilator analizuje kod (w 2ch-3ch fazach, ale to mozna pominac) 11:35 <@Gynvael> i tworzy kod asma 11:35 <@Gynvael> to mozna zobaczyc 11:36 <@Gynvael> gcc -S asdf.c 11:36 <@Gynvael> (zostanie utworzony plik asdf.s z kodem asma) 11:36 <@Gynvael> nastepnie kompilator kompiluje ten kod asma do tzw PLIKU OBIEKTOWEGO 11:36 <@Gynvael> plik obiektowy ( zazwyczaj asdf.o albo asdf.obj, zaleznie od kompilatora) 11:36 <@Gynvael> btw zobaczyc to mozna piszac 11:36 <@Gynvael> gcc -c asdf.c 11:36 <@Gynvael> plik asdf.o zostanie utworzony 11:37 <@Gynvael> plik obiektowy zawiera: 11:37 <@Gynvael> - skompilowany kod funkcji 11:37 <@Gynvael> - liste funkcji i ich adresy 11:37 <@Gynvael> - liste funkcji POTRZEBNYCH tym funkcja zeby dzialaly 11:37 <@Gynvael> - liste zmiennych globalnych 11:37 <@Gynvael> - jesli kompilujemy z -g to tez zawiera informacje dla DEBUGGERA 11:38 <@Gynvael> - i zawiera full innego info ;> serio full ;> 11:38 <@Gynvael> i teraz 11:38 <@Gynvael> jest czas na linkowanie 11:38 <@Gynvael> tym sie zajmuje program ld, ale gcc tez rozumie co sie do niego mowi i sam wywola ld 11:38 <@Gynvael> gcc asdf.c -o asdf.exe (badz bez .exe dla linuxowcow) 11:38 <@Gynvael> skompiluje i zliknuje asdf.c 11:38 <@Gynvael> do pliku .exe 11:38 <@Gynvael> plik .exe zawierac moze DUZO obiektow, oczywiscie przetworzonych i polaczonych 11:39 <@Gynvael> powiedzmy mamy dwa obiekty 11:39 <@Gynvael> a.o w ktorym jest funkcja "x" 11:39 <@Gynvael> i b.o w ktorym jest funkcja "main" i wymaga funkcji "x" 11:39 <@Gynvael> gcc musi miec oba obiekty zeby utworzyc plik wykonywalny 11:39 < seraphin_> e 11:39 <@Gynvael> bo b.o nie moze dzialac bez funkcji "x" 11:39 <@Gynvael> a a.o bez "main" 11:39 < seraphin_> w8 11:40 < seraphin_> jak kompilator ma stwozyc a.o skoro nie ma w nim maina 11:40 <@Gynvael> on laczy te obiekty, dorzuca i zmienia troche info (relokacje funkcji, etc) i zapisuje .exe 11:40 < seraphin_> i jak ma stwozyc b.o 11:40 < seraphin_> skoro 11:40 < seraphin_> nie ma w b.c funkcji x 11:40 <@Gynvael> seraphin_: pliki obiektowe nie sa pelnym kodem, tylko skrawkiem 11:40 < seraphin_> a jest ona wymagana 11:40 <@Gynvael> seraphin_: wystarczy ze powie sie kompilatorowi ze cos takiego istnieje 11:41 < seraphin_> aha... 11:41 <@Gynvael> seraphin_: i on zaznaczy w obiekcie ze do zrobienia pliku binarnego z tego obiektu jest dana funkcja potrzebna 11:41 <@Gynvael> seraphin_: na przyklad "x" 11:41 <@Gynvael> seraphin_: natomiast main nie musi byc w obiekcie 11:41 <@Gynvael> seraphin_: ale DOKLADNIE jeden main musi byc w obiektach jak sie kompiluje do .exe 11:41 < d0b0c0p> moze przejdzmy do c? ;> 11:41 < seraphin_> aha 11:42 < seraphin_> i w taki sposob 11:42 < seraphin_> mozna podzielic 11:42 < seraphin_> jeden program 11:42 < seraphin_> na wiele plikow .c tak? 11:42 <@Gynvael> seraphin_: wszstkie duze projekty sa tak zrobione, ze maja full kodu .c, full obiektow .o, ale jeden exe 11:42 <@Gynvael> seraphin_: tak ;> 11:42 <@Gynvael> seraphin_: tak jest wygodniej ;> 11:42 <@Gynvael> seraphin_: np w kaboom mamy 130kb kodu (okolo 6k linii), jak by to w jednym .c bylo to to by bylo troche niewygodne ;p 11:42 < seraphin_> zrobic z nich wiele plikow obiektowych na koncu laczonych w jeden wykonywalny? 11:42 <@Gynvael> seraphin_: tak ;> 11:42 <@Gynvael> seraphin_: jest jeszcze jeden plus 11:43 <@Gynvael> seraphin_: powiedzmy ze masz 100 plikow 11:43 < seraphin_> jaki? 11:43 <@Gynvael> seraphin_: i masz je skompilowane do plikow .o 11:43 <@Gynvael> seraphin_: i potem linkujesz je do exe 11:43 <@Gynvael> seraphin_: zmienisz cos w JEDNYM pliku 11:43 <@Gynvael> seraphin_: to przekompilowujesz do .o tylko ten jeden plik 11:43 <@Gynvael> seraphin_: a nie wszystkei 100 11:43 <@Gynvael> seraphin_: i linkujesz go z reszta .o 11:43 <@Gynvael> seraphin_: przez co dziala to ofc 100 razy szybcije ;> 11:43 < seraphin_> no racja 11:43 <@Gynvael> seraphin_: bo tamtych nie musisz kompilowac ;> 11:44 < seraphin_> dobra kontynuuj o C 11:44 <@Gynvael> seraphin_: skrypty Makefile maja wbudowane sprawdzanie czy cos sie zmienilo w .c ;> 11:44 <@Gynvael> hmm 11:44 < d0b0c0p> hieh 11:44 < d0b0c0p> pewnie polowa spi :D 11:44 <@Gynvael> o C narazie tyle w sumie ;> 11:44 < seraphin_> :P 11:44 < d0b0c0p> kiedy c.d.? 11:44 <@Gynvael> nowi niech sie pobawia putsem 11:44 < d0b0c0p> ^==^ 11:44 <@Gynvael> ;> 11:44 <@Gynvael> a c.d. powiedzmy wieczorem ;> 11:44 <@Gynvael> jak sie nowi obudza ;p 11:44 < seraphin_> ok 11:44 < seraphin_> :D 11:44 <@Gynvael> powiedzmy ze beda zmienne 11:44 <@Gynvael> i moze funkcje 11:44 < d0b0c0p> czyli o ktorej miej wiecej? 11:44 <@Gynvael> hehe u mnie idzie wolno 11:44 < d0b0c0p> * mniej 11:45 <@Gynvael> jak widzicie ;p 11:45 < d0b0c0p> 20:00? 11:45 <@Gynvael> hello world == 1:10 tlumaczenia 11:45 <@Gynvael> d0b0c0p: hmm ne 11:45 <@Gynvael> d0b0c0p: 21 11:45 < d0b0c0p> ok 11:45 * d0b0c0p ustawil budzik na 21 ^^ 11:45 -!- Gynvael changed the topic of #gynkurs to: CD o 21:00 (29.08) 11:45 < seraphin_> k 11:45 * adam_i koniec rpozdzilu pierwszego 11:45 < seraphin_> ja ide se legtke wyrobic do budy 11:45 < SlimFast> :D 11:45 < seraphin_> legitke* 11:45 < seraphin_> naraziem 11:46 -!- pandaboy [~fuzi@213.199.211.251] has joined #gynkurs 11:46 < pandaboy> re all 11:46 -!- Blizzard [blizzard@frycek.net] has joined #gynkurs 11:46 <@Gynvael> niech ktos wrzuci logi na serv kk ? 11:46 < pandaboy> no wlasnie 11:46 < adam_i> ok 11:46 < pandaboy> ten kto ma niech wrzuci 11:46 < adam_i> a wrzuce 11:47 -!- mode/#gynkurs [+o adam_i] by Gynvael 11:47 < pandaboy> to daj linka 11:47 -!- mode/#gynkurs [+o __phoenix] by Gynvael 11:47 -!- mode/#gynkurs [+o d0b0c0p] by Gynvael 11:47 < Blizzard> adam_i: podaj linka na #uw-team 11:47 -!- mode/#gynkurs [+o pandaboy] by Gynvael 11:47 -!- mode/#gynkurs [+o seraphin_] by Gynvael 11:47 < SlimFast> a mi opa [; 11:47 -!- mode/#gynkurs [+o SlimFast] by Gynvael 11:47 <@pandaboy> hehe 11:47 <@SlimFast> o thx :D 11:47 -!- mode/#gynkurs [+o Blizzard] by Gynvael 11:47 * SlimFast slaps Blizzard around a bit with a large trout 11:47 <@Blizzard> thx