Created
November 22, 2017 21:32
-
-
Save denizozger/356cc6724b4aec5fb08207f2f4b4e73f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<mengus> tamam | |
<mengus> o zaman ba$liyoruz | |
<mengus> dersi aib ile birlikte anlatacagiz parca parca | |
<mengus> i$leyecegimiz konular $oyle: | |
<mengus> - "Program" neye denir, nasil cali$ir. | |
<mengus> - kod nedir, data nedir, nasil i$lenir | |
<mengus> - degi$ken nedir, nasil kullanilir | |
<mengus> - ozel kelimeler (reserved keywords) | |
<mengus> - statement nedir, nasil kullanilir | |
<mengus> - fonksiyon nedir, yenir mi | |
<mengus> - input/output mekanizmalari | |
<mengus> - control structures: | |
<mengus> .tanim | |
<mengus> .durum operatorleri: if..elseif..else | |
<mengus> .durum operatorleri: switch | |
<mengus> .donguler: for | |
<mengus> .donguler: while | |
<mengus> bir sorunuz oldugu zaman ozelden mesaj atin, ben | |
kanala paste edip cevaplayacagim (ya da aib) | |
<aib> ikimizden biri olabilir | |
<mengus> ba$layalim. | |
<aib> hayhay | |
<mengus> "Program" neye denir, nasil cali$ir? | |
<mengus> bir program, en basit anlamiyla | |
<mengus> bir CPU (central processing unit-merkezi i$lemci) | |
tarafindan | |
<mengus> i$lenen, kullanicinin istekleri dogrultusunda bir | |
cikti ureten/bir i$ yapan kod parcalarina denir | |
<mengus> yuzlerce programlama dili, bu programlama dilleriyle | |
yazilmi$ binlerce program mevcuttur | |
<mengus> bu noktada yapilmasi gereken onemli bir ayrim | |
'program' ve 'script' ayrimidir | |
<mengus> program dedigimiz sey, bir platformda calismak uzere | |
'binary' hale getirilmis | |
<mengus> yani CPU nun anlayacagi dile 'tercume edilmis' | |
kodlardir | |
<mengus> script ise | |
<mengus> herhangi bir platformda cali$tirilacagi zaman, o | |
platforma ozel yazilmis tercuman tarafindan 'tercume edilen' kodlardir | |
<mengus> burada 'tercuman' dedigimiz hadisenin teknik adi | |
'compiler (derleyici)' | |
<mengus> programlar icin | |
<mengus> scriptler icin ise 'interpreter' olarak adlandirilir | |
<mengus> bu konuda da ha derine simdilik girmeyecegiz | |
<mengus> bir program iki parcadan olu$ur | |
<mengus> "kod" ve "veri" | |
<mengus> bunlari $imdi aib anlatacak | |
<aib> simdi efendim | |
<aib> "kod" dedigimiz kisim, programin kendisidir | |
<aib> kendisi derken, tamamini sizin yazdiginiz (veya elle | |
yazilan) | |
<aib> komutlar zinciridir | |
<aib> programin ne yapacagini kodu belirler (code) | |
<aib> data ise, programin yardimci kesimidir | |
<aib> turkcesi 'veri' olmakla birlikte, kodun isleyecegi parca | |
budur | |
<aib> ornegin basit bi program dusunun: hesap makinesi | |
<aib> bilgisayarda veya elinizde tuttugunuz olsun | |
<aib> bunun kodu su sekildedir: | |
<aib> kullanicidan giris al (hesaplanacak sey) | |
<aib> hesapla | |
<aib> ve ekrana yaz | |
<aib> burada kullanicinin girdigi sey ise data'dir | |
<aib> hesap makinesi bu datayi isler ve sonucu verir | |
<aib> data'yi yine kullanicidan alan kodun kendisidir tabii ki | |
<aib> program yani kod, data uzerinde islem yapar | |
<tuonela> i$lenen veya i$lenecek veri , kodun icine | |
gˆm¸l¸ olabilir mi. | |
<aib> tabii ki | |
<aib> ilerde de gorecegimiz uzere data girisi (INPUT) bir suru | |
yerden yapilabilir | |
<aib> bir programin datasi cok buyuk ve cesitli olabilir | |
<aib> ornegin hesap makinesi bile, "kullanicinin girdigi ilk | |
sayi" "kullanicinin girdigi ikinci sayi" | |
<aib> "kullanicinin yapacagi islem" seklinde bi suru data'ya | |
sahiptir | |
<aib> bu datanin verimli olarak kullanilabilmesi icin | |
parcalara bolunmesi sarttir | |
<aib> simdi mengus bi soruyu cevapladiktan sonra size bu | |
parcalara bolunmenin nasil oldugunu ve data parcalarinin "variable" ne | |
oldugunu anlatacak | |
<mengus> once bir soruyu cevaplayaagim | |
<mengus><Grabsplatter> bu baglamda java scripte script, | |
html'e interpreter diyebilir miyiz? | |
<mengus> burada biraz kavram karma$asi olmu$, $oyle | |
aciklayayim | |
<mengus> javascript'e script diyebiliriz, ancak interpreter'i | |
html degil 'BROWSER'dir | |
<mengus> bazen javascript ile yazilmi$ scriptler, bir | |
browser'da cali$irken digerinde cali$mayabilir | |
<mengus> bunun sebebi | |
<mengus> her browserin -maalesef- javascript'i kendine gore | |
bir $ekilde kullanmasi/yorumlamasidir | |
<mengus> html ise ne bir script ne bir programdir | |
<mengus> bir 'MARKUP LANGUAGE'dir | |
<mengus> markup language'in ne olduguna $imdi girmeyecegim | |
cunku konumuzun di$inda kaliyor | |
<mengus> $imdi, | |
<mengus> sonraki konuya gecmeden once | |
<mengus> buraya kadar anlamadiginiz/kafaniza takilan herhangi | |
bir $ey var mi? | |
*** Mode "-m" by mengus | |
<cortez> en basit ˆrnek olarak buna xircon ve xdream | |
olabilirmi? xircon bi program xdream ise xircon iÁin yazilmi$ bir script? | |
<mengus> cortez: evet, x dream, xircon icin yazilmi$ bir | |
scripttir, tcl diliyle yazilmi$tir | |
<mengus> ba$ka soru yoksa devam ediyorum | |
<aib> burada xircon'un TCL dilini interpret ettigi goruluyor | |
(hamza zulfikar mode) | |
<mengus> :) | |
*** Mode "+m" by mengus | |
*** Mode: +mtnr (m/moderated) (t/topic protection) (n/no | |
extmsg) (r/registered) | |
<aib> TCL genel bir scripting dili olmakla beraber cogu IRC | |
client tarafindan interpret edilmektedir | |
<mengus> dogrudur. | |
<mengus> $imdi aib'nin az evvel bahsettigi 'degiskenler' | |
konusunu acacagim | |
<detay_PRG101> (cok afedersiniz) peki$mesi acisindan, lingo da | |
director tarafindan interpret edilen bir scripting language'dir | |
<mengus> degisken, adi ustunde degeri degisebilen bir | |
kavramdir | |
* SSG kissadan hisse: makine diline (exe/dll dosyalari mesela) | |
donu$turulen diller compiled (derlenen), direk bir metin dosyasindan (bat, | |
asp gibi) cali$an diller interpreted (yorumlanan) dillerdir ve cali$mak icin | |
bir "exe"leri olmadigindan yorumlayici programa ihtiyac duyarlar.. | |
interpreter ile cali$an bu dillere cogu zaman "script" denir.. | |
<mengus> degiskenleri kavramanin en kolay yolu | |
<mengus> orta okul yillarindaki matematik derslerini biraz | |
hatirlamaktir | |
<mengus> x+7=10 | |
<mengus> gibi bir denklem kurdugumuzda | |
<mengus> x'in degeri "3" t¸r | |
<mengus> bir baska denklemde | |
<mengus> x+10=21 | |
<mengus> dersek, x'in degeri "11" dir | |
<mengus> gorulebilecegi gibi, x bir sayi degildir, biz | |
kendisine ne deger atarsak o degeri tutan bir 'kap'tir | |
<mengus> degiskenlerin programlar icindeki kullanimi ise cok | |
cesitlidir | |
<mengus> daha sonra kullanacagimiz bir veriyi saklamadan tutun | |
<mengus> bir 'dongu' yu kontrol etmeye, | |
<woe> yani degi$ken ba$lI ba$Ina sadece bo$ bir | |
bardaktar ibarettir. biz iÁine ne koyarsak onu tutar ?? | |
<mengus> daha iyi bir benzetme yapilamazdi | |
<mengus> varana kadar bir cok iste kullanilabilir | |
<mengus> woe'nin orneginde soyledigi gibi, degi$ken bir | |
bardaktir | |
<mengus> ancak 'bardak', hepimizin bildigi uzere 'sinirli' bir | |
kaptir, alabilecegi hacim bellidir | |
<mengus> bunun bilgisayar ortamindaki kar$iligi da 'hafiza'dir | |
<mengus> degi$kenlerin alabilecekleri degerler, kendilerine | |
bah$edilen hafiza ile sinirlidir | |
<mengus> kimi diller degi$kenlerin tutabilecekleri hafiza | |
miktarini kendileri ayarlarken, kimi dillerde bunu sizin onceden kesin | |
olarak belirtmeniz gerekir | |
<mengus> bu onceden belirtme islemine herkes kafasina gore bir | |
cok isim verir: initiation, definition, declaration vs. | |
<mengus> biz anlatim kolayligi olsun diye 'tanimlamak' fiilini | |
kullanacagiz | |
<mengus> bir degiskenin kullanimi ile ilgili sembolik bir | |
ornek yaptiktan sonra | |
<mengus> aib size 'veri tipleri'ni anlatacak | |
<mengus> ornegin | |
<mengus> x degiskenini, simdilik 'olmasi gerektigi gibi' diye | |
nitelendirecegim, daha sonra anlam kazanacak bir sekilde tanimlamis olalim | |
<mengus> ve kodumuzun icinde | |
<mengus> x="Merhaba" | |
<mengus> diye bir 'atama (assignment)' yapmis olalim | |
<mengus> bu, bilgisayarimizin hafizasinda x degiskeninin | |
durdugu bolume 'Merhaba' karakter dizisini yerlestirecektir | |
<mengus> daha sonra | |
<mengus> print x | |
<mengus> diyerek | |
<mengus> 'x degiskeninin degerini ekrana yazdir' | |
<mengus> komutunu gonderdigimizde | |
<mengus> ekrana gelecek deger 'Merhaba' olacaktir | |
<mengus> buraya kadar sorusu olan? | |
*** Mode "-m" by mengus | |
<tuonela> mirc scriptleri yapIlIrken tcl mi kullanIlIyor | |
yani? | |
<aib> mIRC'in scripting dili kendisine aittir | |
<UnConscious> degi$kenlere yalnIz veri mi atanIr, | |
yoksa i$lem yaptIran bir kod da atanabilir mi? | |
<aib> mIRC scripting dilini anlayan ve interpret eden program | |
mIRC'dir | |
<mengus> degi$kenlere yalnizca veri atanir | |
<mengus> ancak bu veriyi bir kod parcasi olarak tanimlayip | |
<mengus> daha sonra 'bu degiskenin icindeki kodu calistir' | |
komutu verilebilir | |
<mengus> bu komut her programlama dilinde farklidir, | |
bazilarinda yoktur kendinizin yaratmaniz gerekir. | |
<mengus> ancak bir degiskenin icerigindeki kod, 'veri' olarak | |
algilanmaktan oteye gitmez | |
<krAl_EmrE> farzedelim ki degiskene 10 haneli rakam | |
siniri koyduk, degisken '50' de olsa '500000000' de olsa hafizada ayni yeri | |
mi kaplar? | |
<mengus> bu, kullandiginiz programlama dilinin hafiza yonetim | |
yontemleri ile ilgilidir | |
<mengus> ancak bir cok programlama dili, siz ne kadar alan | |
ayirirsaniz, degiskeninize o kadar alan verir ne daha az, ne daha fazla | |
peer)) | |
<Shirakahn> veri sInIrlarI sonsuz mudur ben milyon | |
haneli sayIlar mertebesinde ÁalI$abilir miyim ˆrnegim ? | |
<mengus> bu konuya birazdan aib, veri tiplerini anlatirken | |
deginecek | |
* aib nod | |
<mengus> bir de hemen mikrofonu aibye devretmeden | |
<mengus> 'byte' kavramina hafifce bir degineyim, detayli | |
olarak 'input/output mekanizmalari' bolumunde anlatilacak olsa da | |
<mengus> gelen soruya istinaden anlatayim | |
<mengus> farzedelim ki degiskene 10 haneli rakam siniri koyduk | |
<mengus> dendi | |
<mengus> degi$kenlerin limitleri hane sayisiyla/karakter | |
sayisiyla degil, hafizadan ayirmak istedigimiz bayt sayisiyla belirtilir | |
<mengus> bir bayt, sekiz bit'ten olusmus bir pakettir | |
<mengus> bit ise degeri 0 ya da 1 olan bir 'kutu' olarak | |
dusunulebilir | |
<mengus> demek ki bir bayt | |
<mengus> 8 haneli ve ikilik tabanda bir sayidir | |
<mengus> ve degiskenlerin hafizada kaplayabilecekleri alan | |
<mengus> baytlar seviyesinde belirtilir | |
<mengus> ornegin "x 32 baytlik bir metindir" | |
<mengus> gibi tanimlar yapabiliriz | |
<mengus> bunlara detaylica daha sonra deginecegiz | |
<mengus> $imdi aib bize veri tiplerini anlatacak | |
<aib> yessir | |
<aib> gordugunuz uzere veri ve degisken kavrami cok genis bi | |
kavramdir | |
<aib> yani "veri" dedigimizde insan isminden tutun metine, | |
resme, her turlu sey bir 'veri' olabilir | |
<aib> yine deminki hesap makinesi orneginden iki veriyi ele | |
alalim | |
<aib> "kullanicinin girdigi sayi" | |
<aib> "kullanicinin yapacagi islem" | |
<aib> ve insani de bi program olarak dusunerek iki tane daha | |
veri ornegi vermek istiyorum | |
<aib> "en iyi arkadasimin ismi" | |
<aib> "en sevdigim renk" | |
<aib> gorebileceginiz uzere, bu veriler yapi olarak | |
birbirlerinden cok farklidirlar | |
<aib> ilki bir sayidir, ikincisi bir islem (+, -, /, x), | |
ucunsucu bir isim, dorduncusu bir renk | |
<aib> biglisayarlar matematiksel olarak calistiklarindan, bu | |
verileri bilgisayara gecirmek istediginizde | |
<aib> verilerin hepsi sayisal olmak zorundadir | |
<aib> yazdigimiz programlar da | |
<aib> bu verileri degiskenlere aktarirken sayiya cevirip, | |
<aib> degiskenlerden alirken sayilari tekrar gercek manalarina | |
cevirmektedirler | |
<detay_PRG101> bir harf nasil sayisal olarak ifade | |
edilir? | |
<aib> ornegin bir harfi hafizaya atarken | |
<aib> en genel olarak kullanilan yontem, simdi deginmemizin | |
yersiz olacagi "ASCII" kod tablosudur | |
<aib> bu tablo, her harfe BIR BAYT karsilik verir | |
<aib> ornegin hafizada bi yere 'a' harfini atmak istiyorsak | |
<aib> bu 'a' harfinin sayisal karsiligini bu tablodan bulup | |
hafizaya sayi olarak atariz | |
<aib> yalniz bu degeri hafizadan tekrar okurken, bize tekrar | |
sayi olarak donecektir | |
<aib> ve bu sayiyin hangi harfe tekabul ettigini yine ASCII | |
tablodan bakarak ogrenebiliriz | |
<aib> ama korkmayin bu isi programlama dilleri otomatik olarak | |
halletmektedir :) | |
<aib> iste burasi veri tiplerine deginmek icin guzel bir nokta | |
<aib> dedigimiz gibi hafiza sadece byte'lardan veya bit'lerden | |
olusmaktadir | |
<aib> fakat verilerimiz cesitlidir (geriye donelim, mor, mavi, | |
sari gibi renk olabilirken, ahmet, mehmet gibi en sevdigimiz arkadasin | |
isimleri olabilir) | |
<aib> programlama dilleri, kendi amaclarina ve | |
calistirildiklari platforma gore, kullaniciya cesitli "otomatik" veri | |
tipleri sunarlar | |
<aib> ornegin bir programlama dilinde 'renk' saklamak icin | |
'renk' tipinde bi degisken olabilir | |
<aib> boyle bi durumda "renk" tutacagini bildigimiz 'y' | |
degiskenine deger olarak bir renk verebiliriz | |
<aib> orn. y = mor; | |
<aib> sorulari almadan once standart veri tiplerine | |
deginecegim | |
<aib> en standart veri tipi "int"tir | |
<aib> "integer" yani "tamsayi" anlamina gelir | |
<aib> veri olarak, artili-eksili bir tamsayi alir | |
<aib> gunumuzde kullandigimiz islemcilerin "32-bit" oldugunu | |
duymussunuzdur | |
<aib> bu, islemcilerin en basit veri kapasitesini, yani | |
cogunlukla 'int'in veri kapasitesini belirtir | |
<aib> yani standart bir kavram olarak baktigimizda, 'int', | |
32-bit'lik bir tamsayi degiskenidir | |
<aib> icinde "32 bitlik bir tamsayi" alan bir bardak da | |
diyebiliriz | |
<aib> "32 bit"in ne olduguna deginmek gerekirse, | |
<aib> mengus'un dedigi 'bit' tanimini dusunun: "icine 1 veya 0 | |
alabilen kutu" | |
<aib> kissadan hisse, "32 bit"lik bir int, icinde 2^32 yani 4 | |
milyar farkli veri alabilir | |
<aib> bu veriler -2 milyardan +2 milyara kadardir (yaklasik | |
olarak) | |
<lhr> her 32 bit islemci kullanan sistemde int denen sey | |
32 bit mi alir | |
<aib> "int", genellikle islemcinin veri kapasitesini | |
yansittigindan dolayi, evet | |
<aib> fakat bir dil olur "bizim dilde int'ler 16 bittir" | |
diyebilir | |
<tuonela> 2lik bir sayIda 32 hanenin ¸zerine cIkamIyor | |
muyuz yani veri atarken bir int'e | |
<aib> dedigim gibi int 32 bit ise | |
<aib> ki 32-bit bir islemciyle calisan herhangi bir standart | |
dilde oyledir | |
<aib> 32 haneli bir ikili sayinin uzerine cikamazsiniz | |
<aib> bunu ondalik degere cevirdiginizde yaklasik olarak -2 | |
milyar ile +2 milyar arasinda bir menzili vardir | |
<aib> simdi mengus diger standart data tiplerini hizli olarak | |
anlaticak | |
<krAl_EmrE> bir degiskene 32 bitten fazla veri saklama | |
sansimiz yok yani? | |
<aib> degisken int ise, hayir | |
<aib> ama degisik tipler vardir: | |
<mengus> hah | |
<mengus> int, aib'nin dedigi gibi yalnizca 'tamsayi' depolayan | |
bir veri tipidir | |
<mengus> dolayisiyla her $eyi yapmak icin yeterli degildir | |
<mengus> zira harflerin, kelimelerin, ondalikli sayilarin | |
girla gittigi bir dunyada ya$iyoruz | |
<mengus> standard veri tiplerinden int kadar sik kullanilan | |
bir tanesi | |
<mengus> 'string' yani 'metin'dir | |
* SSG not du$er: bilgisayarlarin sayi kavrami elektronigin | |
kisitlari yuzunden sadece 0 ve 1'den ibarettir. o yuzden sayilari ancak | |
yanyana bitlerle gosterebilir ve anlayabilirler. bilgisayar yanyana ne kadar | |
cok bit koyarsa o kadar cok sayiyi ifade edilebilir. bu kadar da ilkel | |
makinalardir aslinda bilgisayarlar. | |
<mengus> bir degiskenin icine az evvel bahsettigimiz "merhaba" | |
karakter dizisini depolayabilmek icin bu degiskenin depolayacagi veri tipini | |
string olarak belirtmek durumundayiz | |
<mengus> bu nicin onemlidir? | |
<mengus> ornegin elimizdeki x degiskenini | |
<mengus> 'int' olarak tanimladigimizi varsayalim | |
<mengus> ve bu degiskene 'merhaba' degerini atamaya calisalim | |
<mengus> bilgisayar (interpreter, compiler, ne isterseniz | |
artik) | |
<mengus> bu veriyi bir tamsayi olarak yorumlamaya cali$acak, | |
ba$arisiz olacaktir | |
<mengus> bu sebepten, veri tiplerini dogru tanimlamak her | |
zaman cok onemlidir. | |
<mengus> bu noktada olayi bir ornekle peki$tirmek isterim, | |
aib? | |
<aib> degisken turlerini bardak turleri olarak | |
dusunebilirsiniz | |
<aib> ornegin bir kola bardagi, icine kola almakla yukumludur | |
<aib> su bardagi ise su | |
<aib> ha su var, bir kola bardagina su koyamaz misiniz? | |
<aib> koyabilirsiniz, fakat bu turlu zorluklar getirir | |
<aib> ornegin ben sahsen bir kola bardaginin "kac yudumluk su" | |
oldugunu soyleyemezsiniz | |
<aib> soyleyemem* | |
* detay_PRG101 notu: x="merhaba" kodu derlendiginde hafizada 7 | |
byte lik yer kaplayacaktir, x=32 dendiginde x, hafizada bir integer'in | |
kapladigi deger olan 2 byte kaplayacaktir. daha buyuk degerler icin farkli | |
tipte sayisal veri tipleri mevcuttur | |
<aib> cunku kola bardagini kolaya gore dusunurum, ve yarisi | |
kolayla dolu bi kola bardagi bana cok gelecekken | |
<aib> yarisi su dolu bi kola bardagi disimin kovuguna bile | |
gitmeyebilir | |
<aib> bu yuzden kodunuz verileri olcerken, verileri dogru yere | |
koymalisiniz | |
<mengus> $u noktada bir duralim, anlamadigi, sormak istedigi | |
bi$eyler olan var mi? zira bir anda cok veri oldu gibi geliyor bana? | |
*** Mode "-m" by mengus | |
<aib> evet evet | |
<aib> buyrun konusun | |
<tuonela> x=merhaba derken 7 bayt mI kaplar 7 bit mi? | |
<SSG> byte kaplar | |
<SSG> bitler bit kadardir | |
<krAl_EmrE> hahaha | |
<cortez> eheh | |
<Ancyreum> AHA | |
<mengus> her harf bir byte=8 bittir | |
<aib> standart olarak oyle evet | |
<tuonela> ha tamam dogru | |
<mengus> bu da $u $ekilde mantiklica aciklanabilir | |
<cortez> a nin bit olarak kar$iligi nedir? | |
<mengus> bir harfi bir bit ile ifade etmek durumunda olsak | |
<cortez> 011001 gibimi yani | |
<mengus> bir bitin degeri 0 ya da 1 olabilecegi icin | |
<aib> cortez: ASCII tablosunda diyosan 8 bite karsilik gelir | |
<tuonela> 32 derken 2 bayt mI 2 bit mi? | |
<mengus> elmizde yalnizca 2 harf olurdu | |
<SSG> bilgisayar a harfini sayiyla "65" oalrak ifade eder | |
ASCII tablosunda | |
<SSG> 65 sayisinin da ikilik sistemde kar$iligi 00100001 olsa | |
gerek | |
<cortez> :} | |
<aib> SSG: killik yapiim mi? o 'a'yi sormustu :) | |
<SSG> bu da yanyana degerleri 0 veya 1 olan 8 bit demek | |
<Zeus> yani her harf aslinda 8 bitten olu$uyor degil mi? | |
<aib> a da 00110001 olsa gerek | |
<mengus> Zeus: evet | |
<SSG> yes | |
<cortez> case sensitive varmi yani assembly de | |
<cortez> hmm aptalca bi soru oldu ehehe | |
<SSG> assembly'de degil karakter tablosunda var | |
<cortez> hmm | |
<SSG> "a" ile "A" nin kodu farkli ki bilgisayar ikisini | |
ayirdedebilsin | |
<SSG> charmap'ten acip bakabilirsiniz | |
<mengus> ba$ka sorusu olan? | |
<UnConscious> biraz ba$a dˆner gibi olacagIm ama, programlar | |
programlama dilleriyle yazIlIyor, peki derleyici programlar nasIl yazIlIyor? | |
<mengus> bu kadar adam var herkes anladi mi $imdi?- | |
<cortez> charmap nedir | |
<mengus> cortez: start->run->charmap | |
<Ancyreum> evet | |
<aib> UnConscious: olduklari gibi bir text dosyasina konuyolar | |
<SSG> ben cevap vereyim mi | |
<tuonela> ben 2 ¸ss¸ 32 = 4 milyar olayInI anlamadIm | |
<mengus> UnConscious: buna ssg cevap versin | |
<aib> UnConscious: daha sonra "interpreter" yani tercuman | |
programlar onlari oradan okuyup calistiriyor | |
<mengus> aib: bunu en iyi ssg bilir :) | |
<ilkerz_kodaranz> baslat-calIstIr-charmap ayaz | |
<SSG> UnConscious: derleyici programlar da derlenen | |
programlama dilleriyle yazilir ve kendileri de bizzat derlenirler | |
<ilkerz_kodaranz> karsIna cIkacak | |
<aib> UnConscious: yani script dillerini CPU yerine programlar | |
calistirir | |
<SSG> unconc: bu yumurta mi tavuk mu tarzinda bir probleme yol | |
acar gibi gorunur "ilk derleyiciyi nasil yazdilar?" diye.. | |
<UnConscious> evet, tam onu soracaktIm... | |
<SSG> ilk derleyici de direk makina dilinde yazilmi$tir | |
<cortez> iyi kasmi$lardir :) | |
<Ancyreum> AHAHa | |
<woe> ilk programlama dili nedir? ve hangi dil ile | |
yazIlmI$tIr? | |
<mengus> bu sorunun da cevabi sanirim bulunmu$ oldu :) | |
<UnConscious> makine dilini direk cpu mu yorumluyor? | |
<aib> tuonela: icinde 32 tane bit saklayabilen bi degisken, bu | |
bitler ikilik duzende birer basamak olarak dusunduklerinde | |
<SSG> evet cpu'nun tek anladigi dil o malesef | |
<aib> tuonela: onluk dyzende 4 milyar farkli sayiyi | |
tuabilirler | |
<SSG> yani siz x=5; yaptiginizda o 36 05 00 gibi bir koda | |
donu$turuluyor | |
<Zeus> SSG: bu verinin i$lenebilmesi icin i$lemciden elektrik | |
gecmesi gerekli tabi degil mi? | |
<SSG> cpu da bunlari ezbere cali$tiriyor.. super de hizli | |
yapiyor bu i$i tabi | |
<SSG> e tabi elektrik olmadan bugun tuvalete giremiyoruz | |
<aib> Zeus: evet, CPU yapisi geregi bu 36 05 00 belli bi yere | |
yazildigi anda x'e 5 degerini veriyo | |
<mengus> :) | |
<mengus> bu noktada | |
<cortez> SSG: hahaha :) | |
<Zeus> :) | |
<mengus> iki saattir anlattigimiz 0 nedir 1 nedir e deginelim | |
<aib> +m ? | |
<mengus> CPU icin 1: elektrik geciyor | |
<mengus> 0: elektrik gecmiyor | |
<mengus> demektir teorik olarak | |
<Zeus> mengus: anla$tik. | |
<cortez> bi$i sorcam | |
<cortez> elektrik kaÁagi olursa program bozuk mu Áikar? | |
<cortez> :) | |
<detay_PRG101> bu sorunu ciddiye almak cok guc cortezim | |
<mengus> ben daha ciddi bi soru soracam | |
<Ancyreum> :) | |
<tuonela> 2 kere elektrik gecince bilgisayar 3 rakamInI mI | |
anlIyo yani | |
<mengus> $imdi durmadan devam edebiliriz ya da bir 5 dakika | |
mola verebiliriz | |
<tuonela> mola | |
<cortez> devam | |
<Ancyreum> mola verelim sigara molasi | |
<detay_PRG101> mola verilsin derim | |
<Ancyreum> sonra devam edelim | |
<Ancyreum> olur mu | |
<Ancyreum> = | |
<woe> evet mola iyi olur | |
<ferss> molaa | |
<mengus> ok | |
<mengus> o zaman | |
<SSG> ben de kola alayim | |
<mengus> bir 5 dakika mola veriyoruz | |
<mengus> ihtiyac molasi | |
<mengus> sonra kaldigimiz yerden devam | |
<mengus> moladan sonraki konumuz: ozel kelimeler (reserved | |
keywords) | |
<cortez> peki bi$i daha sorucam interpreted dillerde cpu ya | |
gidio dimi | |
<orqan> okurken yoruldum birakmaya gelmiyor :) | |
<mengus> cortez: elbette | |
<mengus> her $ey cpudan gelir cpuya doner | |
<Arbalest> ehem buradaydIm zaten | |
<SSG> meng: hahaha | |
<Zeus> SSG: abi tuvalete gidilir elektrik olmadan da gorerek | |
gitmek ba$ka bir $ey tabi :) | |
<mengus> bu arada mola verdik diye soru sormamazlik etmeyin, | |
ben buradayim cevaplarim | |
<mengus> hatta ben ne biz burdayi cevaplariz i$te :) | |
<cortez> yani $u an senin attigin mesaj bile cpuda derleniomu | |
yoksa ˆnceden derlenmi$ bu program kendisimi gˆsterio yazdiklarini | |
<mengus> 'derlenmek' degil | |
<mengus> ama cpu'da daha onceden derlenmi$ bir program | |
tarafindan 'i$leniyor' | |
<mengus> (process ediliyor) | |
* aib kissadan hisse: bilgisayara verdiginiz her turlu deger | |
(sayi olsun isim olsun renk olsun) hafizaya yazilirken sayilara | |
donusturuleceginden, bu degerin _turunun_ ne oldugunu iyi bilmeniz gerekir. | |
<mengus> ve binbir dereden su getirmek suretiyle internet | |
uzerinden sizlere ula$iyor | |
03/07/22 21:13:48 * aib ornegin bilgisayar hafizasinda "sari" rengi de "ahmet" | |
ismi de 1293823 sayisina denk geliyorsa, hafizadan "1293823" degerini | |
aldiginizda bunun "sari rengi" mi yoksa "ahmet ismi" mi oldugunu bilmek icin | |
onceden belirlediginiz ture bakmak zorundasiniz. | |
<cortez> hiii | |
<cortez> ama | |
<cortez> senin attigin mesaj | |
<cortez> 010 hedhˆd diye bana gelip benim cpu mda proses | |
edilio dimi | |
<aib> cortez: evet | |
<aib> su anda ekranda gordugunuz hersey bi sayi, cesitli | |
programlar tarafindan harflere ve harflerden latin alfabesine donusturulerek | |
bize sunuluyor | |
<cortez> oha ekranda gˆrd¸g¸m imajlardami sayi | |
<detay_PRG101> hersey | |
<cortez> bi an acidim cpu lara | |
<mighty_smite> binary sayilar kayiyor her yerden yiyom kafayi | |
<detay_PRG101> dinledigin mp3 ler de | |
<ferss> matrix! | |
<detay_PRG101> imajlarda | |
<detay_PRG101> videolarda | |
<mengus> teorik bir ilginclik sunayim sizlere | |
<Arbalest> bu askerdeki hiyerar$i gibi degil mi, yani sizin | |
burada yazdIgInIzdan en son derlenen program ya da script sorumlu? yani | |
Áavu$ varken generale ÁIkamIyorsun | |
<emirhan> ps7 $ifre arIom acele | |
<cortez> emihan oha | |
<coldplay> cpu yu yormayan tek$ey audio cdler sanIrIm | |
<mengus> ornegin bir resim dosyasiyla bir mp3 dosyasinin | |
header (tanim) kisimlari haricinde kalan tum yerleri ayni olabilir | |
<cortez> hayir | |
<cortez> onlarda bence | |
<mengus> bunlari farkli programlar yorumladiginda | |
<mengus> farkli sonuclar ortaya cikar | |
<coldplay> eger ses cdromun kartIna baglIysa... | |
<syk> cpu aslInda yorulmaz! | |
<mengus> pratikte cok mumkun degil ancak, imkansiz degil. | |
<aib> mengus: o header'i da o dosyanin "type"i olarak | |
dusunebilir miyiz... int, string, mp3, jpeg gibi ? | |
<UnConscious> matrix'te 2,3,5 gibi 10 tabanlI sayIlar yanInda | |
Áin alfabesinden harfler de akIyor, yani bu adamlar binary nedir bilmiyorlar | |
mI yoksa ne? | |
<cortez> yani ben mp3 ¸ acdsee ile aÁsam | |
<cortez> ? | |
<mengus> aib: evet du$unulebilir | |
<Ancyreum> ya bisi sorcam belki aptalca olcak ama | |
<Ancyreum> eskiden oynadIgIm atari, amiga gibi makinelerde cpu | |
esasIna mI dayaniyordu ? | |
<mengus> coldplay: orada da cd'den gelen veriyi ses kartinin | |
i$lemcisi i$ler. CPU yorulmaz ama arada yine bir i$lemci var. | |
<Ancyreum> yani aynI i$lemler onlar icinde gecerlimiydi | |
<mengus> Ancyreum: evet. | |
<mighty_smite> UnConscious : artizlik yapior onlar | |
bilmediklerinden degil | |
<cortez> o halde $ˆyle bi baglantikurabiliriz mesaj olayinda | |
<cortez> client>server>client2 cpu hmm | |
<mengus> hatta buzdolabinda da gecerli ayni i$lemler :) | |
<Ancyreum> ciddimisin ? | |
<cortez> mengus: ordadami 0101 var? | |
<mighty_smite> bu mola uzarsa hayatin anlamina giricez | |
<coldplay> mengus: ucuz ses kartlarInda da var mI bu i$lemdci? | |
<cortez> coldplay: hayir sanirim | |
<mengus> evet herkes tamam mi | |
<aib> coldplay: hepsinde var | |
<cortez> bi$i daha sorcam | |
<cortez> son | |
<Ancyreum> evet | |
<cortez> 010110 i$lemleri sadece ve sadece cpu da oluyo dimi | |
keran kartinda falan olmuyo | |
<aib> yoo her yerde var | |
<compumaster> heheh. | |
<detay_PRG101> cortez: bildigin tum elektronik donanim binary | |
data i$liyor | |
<aib> ekranin kapatma dugmesine bastiginda bile bi yerlere | |
010101'ler gidiyo | |
<compumaster> aklIna gelen heryerde var cortez. | |
<detay_PRG101> cep telefonlari bile | |
<compumaster> saatlerde arabalarda bile | |
<mengus> ba$ka sorusu olan? onceki konularla ilgili kafasina | |
bi$eyler takilan? | |
<aib> hatta ben bile 0-1'lerlen isliyorum ama caktirmiyorum | |
<detay_PRG101> sesi 1 ve 0 lara donusturup yolluyor | |
<mighty_smite> 8 brilik teknoloji harikasi : cep telefonlari | |
<mighty_smite> heh | |
<cortez> hmm o zaman bu bitler Áok az elektrik harcio | |
<SSG> "dijital" olan her $ey 0-1'le cali$ir | |
<aib> ba$ka sorusu olan? onceki konularla ilgili kafasina | |
bi$eyler takilan? | |
<detay_PRG101> cortez: nasil 1 ve 0 sese donu$ur, anlamak | |
istersen eski ta$ plaklari incelemen gerekir. | |
<Ancyreum> int konusunun bi daha ustunden gecebilirmisin? | |
<mengus> Ancyreum: tabii, nesinin? | |
<aib> ben toparliyim mi? | |
<detay_PRG101> plak uzerinde birsuru cukur ve tepecik sese | |
donusur | |
<detay_PRG101> temel prensip aynidir | |
<Ancyreum> 32 bit ve int olayi | |
<mengus> tam olarak nesini anlamadin, oyle anlatalim | |
<Ancyreum> aslInda int i hiÁ annlamadIm i$te | |
<mengus> ok | |
*** Mode "+m" by mengus | |
<mengus> bir int'in ustunden gecip | |
<mengus> sonra reserved keywordleri anlatacagim | |
<mengus> $imdi int dedigimiz veri tipi, | |
<mengus> "tamsayi" degi$kenleri depolamak icin kullanilir, | |
integer'in kisaltilmi$idir | |
<mengus> tamsayilar kumesi, ilkokul bilgilerimiz i$iginda | |
bildigimiz kadariyla | |
<mengus> 'sonsuz' bir kumedir | |
<mengus> ancak ne i$lemcimizin i$lem gucu, ne de hafizamiz | |
sonsuz olmadigindan | |
<mengus> 'bilgisyarin kullanabilecegi tamsayilar kumesi' | |
'sinirli' olmak zorundadir | |
<mengus> bu sinir ise | |
<mengus> bilgisayardan bilgisayara degi$ir | |
<mengus> kimi bilgisayarlarda 16 bit (yani 16 haneli, ikilik | |
tabanda bir sayi) kimilerinde 32- bit vs olabilir | |
<mengus> 16 bitlik bir tamsayinin degeri | |
<mengus> + 2 ¸zeri 16 ile -2 ¸zeri 16 arasinda degi$ir | |
<mengus> ki bu da +/- 65536 demektir | |
<mengus> burada anla$ilmayan bi$ey kaldi mi? | |
03/07/22 21:25:35 *** Mode "-m" by mengus | |
<Ancyreum> yok tesekkur ederim mengus | |
<mengus> tamam | |
<mengus> devam ediyoruz o zaman | |
*** Mode "+m" by mengus | |
<mengus> $imdi her programlama dilinde 'reserved keyword' | |
denen, onceden programlama dilinin kendisine ayrilmi$ kelimeler vardir | |
<mengus> ornegin 'if' hemen hemen her programlama dilinde ozel | |
bir kelimedir | |
<mengus> ozel kelimelerin "ozel"liklerinin kaynagi, dilden | |
dile degisir, genellikle bu isimlerde fonksiyon ya da degisken tanimlanamaz | |
<mengus> cok onemli bir kavram olmasa da, uzerinden gecmek | |
gerektigini du$undum | |
<mengus> $imdi aib, 'statement' kavramini anlatacak | |
<aib> statement'lar ise cok onemli bir karamdir :) | |
<mengus> :) | |
<aib> sanirim turkce karsiligi "beyanat" olmakla birlikte | |
<aib> programa ne yapacagini anlatirlar | |
<aib> bi programda yazdiginiz seyin COGU statement'tir | |
<aib> su ki; | |
<aib> bir program yazmak istiyorsunuz, ve yapacagi sey cok | |
basit | |
<aib> kullanicidan bir deger alacak | |
<aib> bunu daha sonra tekrar gorebilmek icin bir variable'a | |
kaydedicek | |
<aib> ve bu degeri ekrana bastiracak | |
<aib> aslen yazdiginiz dile ve yazis stilinize gore degisse de | |
<aib> boyle bir program uc statement'tan olusur: | |
<aib> 1) kullanicidan degeri al | |
<aib> 2) degeri degiskene kaydet | |
<aib> 3) degiskendeki degeri ekrana yaz | |
<aib> gordugunuz gibi, programda yapacaginiz her 'i$' icin bir | |
statement gerekmektedir | |
<aib> statement'lar kod stili guzel insanlar tarafindan | |
yazildiginda genelde bir satira bir tane dusecek sekildedir | |
<aib> yani program statement (enter) statement (enter) | |
seklinde yazilir | |
<aib> hatta asp ve basic gibi dillerde, tek bir satira bir | |
statement yazilabilir en fazla <enter>la | |
algilanir | |
<aib> bunun disinda her dilin kendine ozgu bir statement | |
bitirisi vardir ama buna fazla deginmeye gerek yok | |
<aib> bi programin ne yaptigini anlayabilmek icin once | |
kodundaki statement'lari ayirip ona gore incelemeniz gerekir | |
<aib> ayni sekilde yazarken de, programin yapacagi isi | |
statement'lara ayirip oyle yazarsiniz | |
<aib> yani dedigim gibi "kullanicidan bi sayi alip bunu | |
degiskene koyup ekrana yazan program"i ben 3 statement'a ayirdim | |
<aib> 1) al 2) koy 3) yaz seklinde.. yukarda yazmistim | |
<aib> mengus'cugum 3 soru var, ben onlara bakarken sen | |
statement delimiteri kisaca gecer misin ? | |
<mengus> ok | |
<mengus> 'statement delimiter' denen $ey | |
<mengus> programlama dilinin 'compiler'inin ya da scripting | |
dilinin 'interpreter'inin | |
<mengus> 'bu statement bitti' yi algilamasina yarar | |
<mengus> aib'nin bahsettigi gibi | |
<mengus> visual basic gibi dillerde | |
<mengus> bu 'new line' yani 'yeni satir' karakteridir (enter'a | |
bastiginiz zaman ortaya cikan budur) | |
<mengus> c dilinde ";" karakteri | |
<mengus> bir statement'in sonlandigini gosterir | |
<mengus> bu da demektir ki c'de 'ayni satira' birden cok | |
statment yazilabilir | |
<mengus> statement1; statement2; | |
<mengus> gibi | |
<mengus><UnConscious> bir statement birden fazla satIr tutabilir | |
mi peki? bunu da cevaplamis olduk sanirim | |
<mengus> evet :) | |
<mengus> ancak dedigimiz gibi | |
<mengus> her programlama dilinin 'delimiter'i yani | |
'sinirlayicisi' farklidir | |
<mengus> kavram hakkinda sorusu olan? | |
<aib> ok | |
<tuonela> bu verdigin basit ˆrnegi bir dilde yazabilir | |
misin C falan | |
<aib> ve beraberinde | |
<Ancyreum> degiskeni kullanIcIdan al | |
<Ancyreum> ekrana yaz olmaz mI? | |
<Ancyreum> illa degi$kene yazmak zorundamI? | |
<aib> Ancyreum onceki ornegimi iki statement'ta dusunmus | |
<aib> 1) kullanicidan degeri al ve degiskene aktar | |
<aib> 2) degiskeni ekrana yaz | |
<aib> dedigim gibi, herkes ayri dusunebilir bu konuda | |
<aib> hatta bunu 4 kerede yapmak da mumkundur: | |
<aib> 1) kullanicidan degeri al a'ya yaz | |
<aib> 2) b'ye a'nin degerini yaz | |
<aib> 3) c'ye b'nin degerini yaz | |
<aib> 4) c'yi ekrana yazdir | |
<aib> sonucta ortadaki problem belliyse buna gore bir sonuc | |
elde etmek sizin elinizdedir | |
<aib> ve bu baglamda yazdiginiz programlar farklilik | |
gosterecektir | |
<Zeus> statement ile dos' ta prompt' a yazdigimiz komut | |
e$degerdir diyebilir miyiz? | |
<aib> bi baglamda diyebiliriz | |
<aib> aslinda dos'un da cok basit bir programlama (scripting) | |
dili vardir: bat dosyalari | |
<aib> bat dosyalari, ENTER ile ayrilmis komutlardan ibarettir | |
<aib> simdi c'den ornek birkac statement yazacagim | |
<aib> tuonela'nin istegi uzerine | |
<aib> yalniz ornege fazla kafa yormayin | |
<aib> int c; | |
<aib> c = kullanicidanTamsayiAl(); | |
<aib> printf("%i\n", c); | |
<aib> hemen aciklamasini geciim | |
<aib> statement 1: int c; c'yi bir tamsayi olarak belirle | |
<aib> statement 2: c = kullanicidanTamsayiAl(); kullanicidan | |
tamsayi alip bunu c degiskenine yaz | |
<aib> statement 3: printf("%i\b", c); bu degeri ekrana yazmak | |
icin printf komutunu kullan | |
<aib> bu program kesinlikle 3 statement'dan olusmak zorunda | |
degildir ama benim aklima gelen bu ornekti | |
<aib> buradaki kullanicidanTamsayiAl ve printf ise birer | |
fonksiyon iyi | |
<aib> fonksiyonlarin ne oldugunu anlatmasi icin mengus'a | |
mikrofonu uzatiyoruz... | |
<mengus> :) | |
<aib> eger sorusu olan yoksa | |
*** Mode "-m" by aib | |
<tuonela> burada bir tamsayIyI bir fonksiyon olarak belirledik | |
<aib> hayir buradaki tamsayi c | |
<tuonela> c = .. dedik sonra? | |
<aib> kullanicidanTamsayiAl ise tamsayi verecegini umdugumuz | |
bi fonksiyon | |
<mengus> tuonela: az sonra anlatacagim onun nasil yazildigini | |
<tuonela> tamam | |
<mengus> ve niye boyle gorundugunu | |
<aib> statement'lar anlasildi mi? | |
<Ancyreum> evet | |
<tuonela> eet hocaam | |
<aib> yukardaki program tek bir statement'ta da yazilabilirdi | |
<aib> yazmiyorum :) | |
<mengus> :)) | |
<Ancyreum> :) | |
<mengus> devam ediyorum? | |
*** Mode "+m" by mengus | |
<aib> tabi | |
<mengus> "Fonksiyon nedir, yenir mi?" | |
<mengus> bir fonksiyon (function) bir i$i yapmak uzere | |
yazilmi$ bir kod blogudur | |
<mengus> kod blogu nedir? | |
<mengus> bir 'statement lar grubudur' yani ornek bir fonksyon | |
tanimi $oyle olabilir | |
<mengus> function ornek() { | |
<mengus> statement1; | |
<mengus> statement2; | |
<mengus> } | |
<mengus> burada parantez icinde bu { ve } nedir onu anlatayim | |
<mengus> bunlar da 'kod blogu sinirlayicilari'dir | |
<mengus> ve statement sinirlayicilari gibi, her dilde farkli | |
olabilir | |
<mengus> az evvel verdigim ornek | |
<mengus> c ve benzeri dillerde kullanilan sinirlayicilar idi | |
<mengus> ancak ornegin visual basicte | |
<mengus> function ornek() | |
<mengus> statement 1 | |
<mengus> statement 2 | |
<mengus> end function | |
<mengus> $eklinde kullanilir | |
<mengus> 'ba$i belli sonu belli bir kod bloguna fonksyon | |
denir' | |
<mengus> fonksyonlar temel olarak ikiye ayrilir: | |
<mengus> - bir deger donduren fonksiyonlar | |
<mengus> - bir deger dondurmeyen fonksiyonlar | |
<mengus> bir deger dondurmek ne demektir, en iyi $ekilde bir | |
ornekle anlatilabilir: | |
<mengus> function kare(x) { | |
<mengus> return x*x; | |
<mengus> } | |
<mengus> bu yazdigimiz fonksiyon x 'parametre'sini alir | |
<mengus> ornegin | |
<mengus> kare(2) | |
<mengus> dedigimiz zaman bu fonksiyonun 'dondurecegi' deger | |
<mengus> 4 | |
<mengus> olacaktir | |
<mengus> az evvel aib'nin yazdigi ornek koddaki | |
<mengus> kullanicidanTamsayiAl() | |
<mengus> fonksiyonu da, tam sayi donduren bir | |
<mengus> fonksiyondur (halihazirda boyle bir fonksiyon yoktur | |
tabii, karisiklik olmasin:)) | |
<mengus> dolayisiyl | |
<mengus> a | |
<mengus> int x | |
<mengus> x= kullanicidanTamsayiAl(); | |
<mengus> dedigimizde | |
<mengus> x'i bu fonksiyona degil | |
<mengus> bu fonksiyonun dondurdugu degere e$itlemi$ oluruz | |
<aib> benim umdugum sekilde calisiyorsa kullanicinin ekrana | |
yazdigi bilgiyi tamsayiya cevirip x'e koyacaktir... di mi ? | |
<mengus> evet | |
<mengus> deger dondurmeyen fonksiyonlar ise, tahmin ettiginiz | |
uzere, bir deger dondurmeyen (en kotu ihtimalle "0" donduren) | |
fonksiyonlardir | |
<mengus> deger dondurmeyen bir fonksiyon neye yarar peki | |
diyeceksiniz | |
<mengus> hemen $oyle anlatayim | |
<mengus> function imdat() { | |
<mengus> polisiAra; | |
<mengus> } | |
<mengus> bunun bir deger dondurmesine gerek yoktur, | |
<mengus> polisiAra statement'ini calistirir | |
<mengus> cok fiktif bir ornek oldu ama umarim anla$ilmi$tir | |
<mengus> buraya kadar anla$ilmayan bir $ey var mi? zira onemli | |
bir konu bu | |
*** Mode "-m" by mengus | |
<cortez> if evde hirsiz var; imdat(); ? $eklindemi Áagrilio | |
imdat | |
<aib> cortez: if nedir ? | |
<tuonela> ehehe | |
<Ancyreum> :) | |
<aib> mengus: benim belirli 4-5 tane statement'i devamli | |
olarak kullanmam lazim. n'apiim her seferinde copy paste mi ediim gereken | |
yere? | |
<cortez> :) yani anla i$te | |
<mengus> cortez: istedigin $ekilde cagirabilirsin | |
<mengus> ancak bu fonksiyon bir deger dondurmuyorsa | |
<mengus> ve eger dil deger dondurmeyen dilleri buna uygun | |
$ekilde handle etmiyorsa | |
<mengus> x=imdat() | |
<mengus> dediginde erroru yersin :) | |
<tuonela> hocam peki | |
<F5> Áok pardon bu ne dersi ? asp mi | |
<cortez> ha yani function lar programlar Áali$tirildiginda | |
i$lenmior dimi ancak Áagrildiginda | |
<aib> PRG101 | |
<Ancyreum> :) | |
<aib> cortez: evet | |
<mengus> cortez: evet | |
<aib> mengus: benim belirli 4-5 tane statement'i devamli | |
olarak kullanmam lazim. n'apiim her seferinde copy paste mi ediim gereken | |
yere? | |
<tuonela> x = kullanicidantamsayial() dendiginde parantez | |
icine bi$ey yazIlmalI mI | |
<mengus> aib: ok | |
<mengus> tuonela: | |
<mengus> fonksiyonun tanimina gore | |
<mengus> ornegin demin yazdigim kare(x) fonksiyonunda | |
<mengus> x gerekli bir parametredir | |
< if evde hirsiz var; imdat(); ? $eklindemi | |
Áagrilio imdat> hala dondurmeyen fonksiyon mu bu durumda | |
<aib> coldplay: bilmiyoruz fonksiyonu gormedik | |
<SSG> olur mu | |
<mengus> ancak, kullanicidantamsayial() fonksiyonunun | |
taniminda | |
<mengus> function imdat() { | |
<mengus> polisiAra; | |
<mengus> } | |
<mengus> eger gerekli bir parametre tanimlanmami$sa | |
<mengus> bir $ey yazmak gerekmez | |
03/07/22 21:55:00 *** Join: hmmzie ([email protected]) | |
<SSG> function polisiAra() { | |
<mengus> coldplay: fonksiyonun nasil cagirildigi ile degil, | |
nasil tanimlandigi ile ilgilidir | |
<SSG> dial("155"); | |
<mengus> deger dondurup dondurmeyecegi | |
<tuonela> eheheh | |
<SSG> if(problem) return -1; else return 0; | |
<SSG> } | |
<cortez> ˆeh | |
<cortez> :) | |
<tuonela> ;) | |
<mengus> SSG: boyle olsa bile | |
<aib> kendim bi soru sorup cevaplayabilir miyim? | |
<cortez> SSG: comment ta koy yanina aÁiklama olarak :) | |
<mengus> sonucta imdat fonksiyonundan bir $ey dondurmedigim | |
surece, di$ariya bir $ey donmeyecektir | |
<mengus> ancak bunlar ile kari$tirmanin anlami yok $u a$amada | |
<SSG> "problem" burada global bir degi$ken.. dial'da problem | |
olursa icini duruma gore 0 ya da -1 yapiyor | |
<coldplay> padon bi$i sorcam ... degi$ik verilerle degi$ik | |
sonuÁlar veren fonk. mu donduren oluyor? | |
<mengus> coldplay | |
<mengus> hayir | |
<aib> eveet | |
<mengus> her fonksiyon degi$ik verilerle degi$ik sonuclar | |
verebilir | |
<aib> sana diildi | |
<tuonela> eheheh | |
<mengus> sonuc vermeyebilir | |
<mengus> her $ey olabilir | |
<cortez> SSG: 0 ve -1 hayir ve evete mi tekabul ediyo | |
<mengus> ornegin | |
<aib> cortez: ssg nasil tanimlarsa oyle | |
*** Mode "+m" by mengus | |
<SSG> cortez: ben uydurdum kafadan | |
<mengus><coldplay> padon bi$i sorcam ... degi$ik verilerle degi$ik sonuÁlar veren fonk. mu donduren oluyor? | |
<mengus> buna cevap vereyim | |
<mengus> bir fonksiyon di$aridan veri alabilir | |
<mengus> kare orneginde oldugu gibi | |
<detay> ozetle, bir fonksyion bir deger dondurebilir yada | |
dondurmeyebilir. bu tamamen ihtiyaca yonelik bir hadise. | |
login(username,password) size isim $ifrenin ba$arili olup olmadigini | |
dondurebilir, ama mesela playSound() fonksiyonu sadece ses cikartacaktir, | |
sesini cikartir bir deger dondurmez | |
<mengus> ya da almayabilir | |
<mengus> kullanicidantamsayial | |
<mengus> da oldugu gibi | |
<mengus> fonksiyonun deger alip almamasiyla bi$ey dondurup | |
dondurmemesinin baglantisi yoktur | |
<mengus> bir fonksiyona 'bu degeri dondur' demedigimiz surece | |
bir deger dondurmez | |
<mengus> kare fonksiyonuna c dilinde 'bize x*x in degerini | |
dondur' dedik | |
<mengus> ancak imdat() fonksiyonuna hic bir $ey dondurmesini | |
soylemedik | |
<mengus> fonksiyonun bir $ey dondurmesi demek ise $udur | |
<mengus> 'bu fonksiyon cali$tigi zaman, tanimlandigi veri | |
tipinde bir deger olarak kullanilabilir' | |
<mengus> x=kullanicidanTamsayiAl() | |
<mengus> daki gibi | |
<mengus> kullanicidanTamsayiAl() fonksiyonu diyelim ki 3 | |
degerini dondurdu bize | |
<mengus> x=3 | |
<mengus> demek ile ayni kapiya cikar bu | |
<mengus> ya da | |
<mengus> x=kare(3); | |
<mengus> dersek | |
<mengus> x'in degeri 9 olacaktir | |
<mengus> anla$ilmayan bir yer? | |
*** Mode "-m" by mengus | |
<detay> kare bir$ey dondurmez ise hata alinacaktir | |
<detay> kare() daha dogrusu | |
<SSG> fonksiyonlara programlama dilinde neden ihtiyac | |
duyuldugundan bahsetmi$ miydik? | |
<tuonela> kullanIcIdantamsayial() fonksiyonu duruma gˆre nasil | |
farkli degerler dˆnd¸recek | |
<aib> evet fonksiyonlardan bahsederken sonlarina () koymakta | |
fayda vardir | |
<mengus> SSG: sen bahset istersen | |
<aib> tuonela: kullanici 3 yazarsa 3 dondurucek | |
<aib> tuonela: 5 yazarsa 5 | |
<SSG> bahsedeyim | |
*** Mode "+m" by mengus | |
<SSG> efendim fonksiyonlar program yazmayi kolayla$tirmak icin | |
yaratilmi$lardir | |
<SSG> bir programi yazarken surekli tekrar eden ortak | |
i$lemleri bir fonksiyonda toplayip kisaltmamizi saglar | |
<SSG> bu ayni zamanda programimizin ayni i$i muhtelif yerlerde | |
yapan parcalarinda sadece fonksiyonu degi$tirerek tum programi | |
guncelleyebilmemizi saglar | |
<SSG> ornek vereyim basitce | |
<SSG> butun ek$i sozluk yazarlarinin nick'lerini sonuna " beni | |
yakalayamaz ki" diye yazan bir program yazacagiz | |
<SSG> bunun icin seceneklerimizden biri | |
<SSG> alt alta "mengus beni yakalayamaz ki" "aib beni | |
yakalayamaz ki" yazdiran bir kod yazmak olabilir | |
<SSG> yazayim hemen | |
<SSG> print "mengus beni yakalayamaz ki" | |
<SSG> print "aib beni yakalayamaz ki" | |
<SSG> print "michael jackson beni yakalayamaz ki" | |
<SSG> gordugunuz uzere cok fazla efor harcadim ve terledim | |
<SSG> oysa ki bir fonksiyon yazsam | |
<SSG> function yaz(kim) { | |
<SSG> print(kim+" beni yakalayamaz ki"); | |
<SSG> } | |
<SSG> sonrada programimi | |
<SSG> yaz("mengus"); | |
<SSG> yaz("aib"); | |
<SSG> yaz("michael jackson"); | |
<SSG> a cevirsem gordugunuz uzere efordan kazandim | |
<SSG> ayrica "yakalayamaz ki" cumlesinde bir yazim hatasi | |
yapmi$ olsa idim tum source'u ba$tan editlemem gerekecekti | |
<SSG> oysa ki bunda sadece fonksiyonu degi$tirmem yeterli | |
<SSG> ben yaz fonksiyonunu | |
<SSG> function yaz(kim) { | |
<SSG> print(kim+" hayvanin tekidir"); | |
<SSG> } | |
<SSG> olarak degi$tirsem programimimin ciktisi da buna gore | |
degi$ecekti | |
<SSG> fonksiyonlari olu$turmamizin amaci da programlarimizi | |
boyle moduler parcalara bolup kodlamamizi kolayla$tirmak ve anla$ilir hale | |
getirmektir | |
<SSG> sorusu olan? | |
*** Mode "-m" by SSG | |
<aib> ** ayrica fonksiyonu uste mi alta mi yazacaginizi hic | |
dusunmeyin, simdilik "fonksiyon" konseptini anlayin yeter... konsept | |
anlatiyoruz cunku.. dilden dile degisir neyi nereye yazacaginiz ** | |
<Ancyreum> tamam sorun yok | |
<mengus><tuonela> bir fonksiyon ba$lI ba$lIna bir kodun b¸t¸n | |
olanaklarIna sahip midir? | |
<mengus> buna cevap vereyim | |
<mengus> bir fonksiyon, kendi icerisinde fonksiyon icermek | |
haric, fonksiyon di$inda yapilabilecek her $eyi icerebilir | |
<mengus> yani bir fonksiyonun icinde baska bir fonksiyon | |
tanimlayamazsiniz | |
<mengus> bunun di$inda her $eyi yapabilirsiniz | |
<tuonela> ama cagirabiliriz* | |
<tuonela> ? | |
<mengus> evet | |
<tuonela> cok $Ik | |
<mengus> bir fonksiyonun icinden ba$ka bir fonksiyonu | |
cagirabilirsiniz | |
<mighty_smite> recursive functionlar ornek cagirmaya mesela | |
<tuonela> ˆyledir de biz bilmiyoz onnari daa ;( | |
* detay notu: fonksiyon icerisinde fonksyion cagirilabilir, sadece fonksiyon bloku icerisinde yeni bir fonksiyon tanimlanamaz | |
<aib> dilden dile degismez mi o? | |
<mengus> benim bildigim kadariyle degi$mez. yanli$im varsa | |
duzeltin | |
<mengus> ok | |
<aib> benim de aklima gelmiyo ama kesin laf etmeyelim dedim | |
<mengus> $imdi | |
<SSG> object pascal'da (delphi) fonksiyon icinde fonksiyon | |
tanimlanabilir | |
<tuonela> o yea | |
<tuonela> bu cok iyi | |
<mengus> demek ki tanimlanabildigi diller de varmi$ :) | |
<Ancyreum> :) | |
<tuonela> sonra o tanImlanan fonksiyonda tekrar ba$takInI | |
cagIrarak loopa da sokarIz off ;) | |
<UnConscious> ˆyle bir durumda iÁeride tanImlanan fonksiyon | |
birinci fonksiyon i$ yaptIktan sonra silinir mi? | |
<mighty_smite> dikkat et infinite loop'a sokma :) | |
<aib> UnConscious: hayir fonksiyonlar kod olduklari icin | |
silinmez | |
<Arbalest> minicik bi$ey sorabilir miyim | |
<mengus> Arbalest: tabii | |
<Arbalest> $imdi efenim, bizim bu dersteki amacImIz, | |
delimeter, fonksiyon, compiler gibi $eyleri duydugumuzda apI$mamak degigl mi | |
<aib> aynen oyle | |
<caesar> :) | |
<mengus> eh evet. ayrica diger programlama dilleri ile ilgili | |
dersleri rahatca kavramak | |
<tuonela> hehe | |
<mengus> SSG: yok daha diil :9 | |
<Arbalest> yani biraz fazla ˆgrenme arzusuyla yanIp | |
tutu$uyoruz gibi geldi bana | |
<Arbalest> zannedersem $u anda fonksiyon yazmak durumunda | |
degiliz biz Áˆmezler | |
<mengus> Arbalest: tabii degiliz | |
<mengus> digerlerini de i$lemek iyi olur gibi geliyor bana | |
<mighty_smite> arrayleri falan da isleseydiniz | |
<mengus> mighty_smite: gun gelir sen i$lersin | |
<mengus> ok | |
<mengus> devam o zaman | |
*** Mode "+m" by mengus | |
<aib> son bir ornek fonksiyon yaziim gecelim mi mengus? | |
<mengus> $imdi kahtali aib sizlere i/o mekanizmalarini | |
anlatacak | |
<mengus> diyordum ki | |
<mengus> yaz da gecelim :) | |
<aib> function topla(x, y) { | |
<aib> z = x + y; | |
<aib> return z; | |
<aib> } | |
<aib> simdi bu fonksiyon, parametre olarak x ve y aliyo | |
<aib> sonra icinde bunlari toplayarak z'ye koyuyo | |
<aib> sonra z'yi donduruyo | |
<aib> yani | |
<aib> baska bi yerde | |
<aib> a = topla(5,5); yazarsak a'nin degeri 10 oluyor | |
<aib> fonksiyon boyle olsaydi | |
<aib> function topla(x, y) { | |
<aib> z = x + y; | |
<aib> return 1; | |
<aib> } | |
<aib> a = topla(5,5); dedigimizde a'nin degeri 1 olacakti | |
<aib> cunku fonksiyonun dundurdugu deger (return'un yanindaki) | |
1 | |
<aib> ustte z'yi donduruyodu, z de x ve y'nin toplamina esitti | |
<UnConscious> return yazmasak da direk print(z) diyerek | |
z'nin degerini yazdIrabilir miydik? | |
<aib> bazi diller fonksiyon icinde tanimli degerlerin disa | |
cikmasini onluyor | |
<mengus> araya girmek gibi olacak | |
<mengus> ozur dileyerek | |
<aib> mesela c'de olsa print(z) dedigimizde C bize "z ne ulan" | |
derdi | |
<mengus> $unu ekleyeyim: | |
<mengus> return yazmasak, print(z) yazsak, | |
<mengus> z'nin degerini ekrana yazdirirdik | |
<mengus> ancak | |
<mengus> a=topla(3,5); | |
<mengus> dedigimizde | |
<mengus> a'nin degeri 8 olmazdi | |
<mengus> ekrana 8 yazilirdi, ancak a tanimsiz -ya da fonksiyon | |
ne donduruyorsa o- olarak kalirdi | |
<mengus> te$ekkur ederek susuyorum yine :) | |
<aib> (ikinci return 1 ornegine deginerek) | |
<orqan> o hal$de bunu yapmak salaklik degil mi? yani | |
naaparsan yap sonuc ayni? | |
<orqan> niye kullanioruz yani bunu? yapior muyuz bole | |
seyler? | |
<aib> tabii, topla() gibi bi fonksiyona toplam yerine 1 | |
dondurmek kulliyen salaklik | |
<aib> lutfen rezilligimi yuzume vurmayin | |
<SSG> salak aib | |
<aib> ssg: lutfen dedim! | |
<hadara> direk return (x+y) diyemezmiydik peki? | |
<mengus> :) | |
03/07/22 22:18:37 * detay notu: bir onceki kod hatali bir kodun ornegidir, aib | |
bu konuda zaten gereken uyariyi yapti | |
<aib> gayet rahat derdik return x+y | |
<aib> ama iste ben 2 statement kullanmayi tercih ettim | |
<aib> z = y + x; | |
<aib> return z; | |
<aib> hadara tek kullanmayi tercih etmis, return y+x | |
<aib> simdi I/O olayina girmek istiyorum | |
<aib> derken... | |
<lhr> y+x*y desek ne olurdu peki | |
<aib> dil "y+x*y"ye ne deger veriyosa onu dondururdu | |
<aib> return y+x*y dedigimizi varsayiyorum | |
<aib> normal bir dil once x ve y'yi carpip sonuca y eklerdi ve | |
en son sonucu dondururdu | |
<aib> ama dedigim gibi bu bi konsept dersi, sizin | |
programladiginiz dilde * isareti "cikartma" anlamina gelirse ona gore | |
hareket eder | |
<aib> "I/O"ya gecmeden mengu bisiy diyicekmis: | |
<mengus> bir 'best practice' olarak | |
<mengus> islem onceligini dilin insafina birakmamanizi | |
oneririm | |
<mengus> carpma islemi toplamadan once yapiliyor olsa bile | |
<mengus> return y+(x*y) | |
<mengus> diyerek parantez kullanmanizi tavsiye ederim | |
<mengus> bu kadar, buyrun sayin aib | |
<aib> efenim I/O dedigimiz sey, input/output'un acilimi | |
<aib> gulmeyin ama turkcesi "girdi/cikti" | |
<aib> bilgisayarlarda, hatta muhendislikte her yerde | |
kullanilir | |
<aib> ama ben 2 onemli yerine deginecegim | |
<aib> 1) program icin girdi cikti | |
<aib> dedigimiz gibi program bilgiyi 'islemekle' yukumludur | |
<aib> bu manada, programa 'giren' her veri 'girdi/input', | |
cikan her veri de 'cikti/output' olarak belirtilir | |
<aib> yalniz, program KODU ve DEGISKENLERI ile bir butun | |
sayildigindan | |
<aib> programin bir degiskene bisiy yazmasi | |
<aib> veya bir degiskenden deger okumasi INPUT, OUTPUT veya | |
I/O olarak nitelendirilemez | |
<aib> bunun disinda, programa 'disardan' gelen veriler | |
"input", programdan 'disariya' cikan veriler "output"tur | |
<aib> ornegin yine hesap makinesi programimizda | |
<aib> kullanicinin girdigi sayilar ve yapacagi islem, | |
kullanici tarafindan girilen 'input'lardir | |
<aib> cikti ise hesap makinesinin ekranina giden, islemin | |
sonucu, yani 'output'tur | |
<aib> konsept olarak baktigimizda, | |
<aib> PhotoShop | |
<aib> resim dosyasi 'girdisi' alan ve yine resim dosyasi | |
'ciktisi' veren bi program diyebiliriz | |
<aib> mengus beyin yazdigi SourSummitz de, zirve girdisi alan | |
ve hangi tarihte ne zirvesi oldugu ciktisini veren | |
<aib> bir organizasyon programi diyebiliriz | |
<aib> kabaca :) | |
<mengus> cok kabaca oldu, ama olsun, diyelim :) | |
<aib> pardon :) | |
<aib> 1) demistik, I/O'nun benim bahsedegim ikinci yonu ise | |
kullanici tarafidir: | |
<aib> 2) kullanici tarafi | |
<aib> bu ise cok daha basittir, bir program EGER kullanici ile | |
haberlesecekse, kullanici ona girdi verir ve cikti alir | |
<aib> programin kullanici ile haberlesen bolumune UI (user | |
interface/kullanici arabirimi) denir | |
<aib> eger bu arabirimde butonlar, resimler, cicekler varsa bu | |
UI bi GUI'dir... (GRAPHIC user interface/GRAFIK kullanici arayuzu) | |
<aib> girdi ve cikti islemlerinin tamamini (yani hem 1. hem 2. | |
dedigimiz seyleri) Isletim Sistemi araciligiyla yapar | |
<aib> isletim sistemi, kendisi icin yazilacak her dildeki | |
programlara, I/O kullanabilmesi icin cesitli fonksiyonlar bahsetmistir | |
<aib> mesela bi programin kullanicidan bir girdi almasi icin | |
klavyeyi bilmesi, tus vuruslarini dinlemesi gerekmez | |
<aib> program C ise scanf() gibi komutlar mevcuttur... PHP ise | |
zaten girisini web uzerinden yapmaktadir | |
<aib> pardon komut degil fonksiyon olucak scanf() | |
<aib> benzer sekilde, butun orneklerde gordugunuz gibi program | |
ciktilari "print" "echo" gibi fonksiyonlarla yapilmaktadir | |
<mengus> ne yapar bu scanf() fonksiyonu? | |
<aib> eger programin calistigi isletim sistemi veya script'i | |
interpret eden interpreter bu print komutunu bize bahsetmeseydi, | |
<aib> bizim programimiz ekran kartinin ayarlarindan tutun, | |
latin alfabesinin monitorde nasi gozukecegine kadar her seyini kendisi | |
hesaplamasi gerekecekti | |
<aib> oysa biz "print" dedigimiz anda topu isletim sistemine | |
atiyor, ve bunyesindeki fontlari vs. kullanarak guzel bir cikti vermesini | |
sagliyoruz | |
<aib> mengus: cok deginmek gereksiz olacak fakat, scanf(), | |
C'nin standart kutuphanelerinin birinde bulunan basit bir girdi | |
fonksiyonudur | |
<aib> hatali yazmaydiysam scanf("%i", &c); gibi bir ornekte, | |
ekrana yazilan tamsayiyi 'c' degiskenine aktaracaktir | |
<hadara> mouse pointer'in yer degi$tirmesi bir program | |
icin girdi midir? kodlarin mouse pointer'i onemsedigini varsayarsak... | |
<aib> 'onemseme' olayina iyi degindin, saniyede yuzlerce I/O | |
olan bi isletim sistemi bunlarin hepsini her programa yetistirmez | |
<aib> yani mouse pointer'i kullanmak istiyosaniz | |
<aib> isletim sistemine "arkadasim her mouse oynatildiginda | |
bana haber ver" dersiniz | |
<aib> ve boylece, isletim sistemi her bu olay oldugunda sizin | |
programa GIRDI verir... evet bu sizin program icin bir INPUT'tur | |
<aib> bu konuda anlasilmayan ? | |
*** Mode "-m" by aib | |
<tuonela> hatali yazmaydiysam scanf("%i", &c); gibi bir | |
ornekte, ekrana yazilan tamsayiyi 'c' degiskenine aktaracaktir | |
<hadara> i$letim sistemine ve programlama diline ragmen | |
print komutunu kendi elimizle nasil icra ederiz? | |
<tuonela> burayI anlaˆadIm | |
<Ancyreum> bu konu daha basitmi$ diyerlerinden oyuzden analdIm | |
<aib> hadara: isletim sistemini ignore etmek istiyorsan | |
<aib> hadara: onun yaptigi butun isleri yapmak zorundasin | |
<aib> hadara: bu yuzden, ekran kartinin destekledigi | |
cozunurlukten baslayip fontlari filan ayarlaman lazim | |
<aib> hadara: sonra isletim sistemi senin boyle bi hareket | |
yapmana izin verirse uzun bir kodla isi halledebilirsin | |
<aib> tuonela: o mengus'a giden scanf() fonksiyonunun | |
aciklamasiydi | |
<mengus> ne yapar bu scanf() fonksiyonu? | |
<aib> mengus: cok deginmek gereksiz olacak fakat, | |
scanf(), C'nin standart kutuphanelerinin birinde bulunan basit bir girdi | |
fonksiyonudur | |
<aib> hatali yazmaydiysam scanf("%i", &c); gibi bir | |
ornekte, ekrana yazilan tamsayiyi 'c' degiskenine aktaracaktir | |
<mengus> araya soktugum icin uzgunum | |
<mengus> hakikaten gereksiz idi :) | |
<aib> lafi mi olur | |
<tuonela> ;) taam | |
<tuonela> affoldun menguscum ;) | |
<aib> ama mesela C ogrenmediginiz surece gereginiz olmayacak | |
scanf()'i bilmeye | |
<tuonela> ogrencez ama | |
<aib> kaldi ki ben C bildigim halde kullanmamakta ozen | |
gosteriyorum | |
<tuonela> tamam o zaman | |
<mengus> :) | |
<tuonela> niye F harfi var hep printf scanf? | |
<aib> tuonela: bir dosyaya yazdirdigi/okudugu icin | |
<Arbalest> feminen komutlar bunlar | |
<mengus> :)) | |
<Arbalest> ˆz¸r dilerim bir daha olmayacak | |
<tuonela> ;) | |
<aib> ha diyicen sen diyosun dosya, onceleri ekran dedin | |
<tuonela> misal dedim | |
<mengus> kurcalamayalim oralari $imdilik bence | |
<aib> evet evet gectim | |
<tuonela> taam | |
<SSG> "scanf = ks. scan formatted" | |
<tuonela> tama | |
<SSG> "printf = ks. print formatted" | |
<aib> aa dogru ya | |
<tuonela> m | |
<aib> dosyalar fprintf | |
<tuonela> hehe ;) | |
<Zeus> sondaki f kullanilmazsa ne olur peki? atiyorum c' de? | |
<tuonela> compile error verir bence | |
<aib> Zeus: print() fonksiyonu cagrilir | |
<aib> Zeus: print() fonksiyonu yoksa hata cikar | |
<aib> Zeus: varsa o kullanilir | |
<aib> Zeus: printf() tanimli degilken printf() kullanirsan da | |
ayni sey olur | |
<aib> veya printdflkjasdflkasdf() | |
<Zeus> aib: yani ba$inda print olan herhangi bir komut | |
print()' i mi cagirir? | |
<cortez> include falanda vardi sanirim | |
<cortez> bi include olmadan printf olmuodu | |
<aib> Zeus: hayir C'de cagirmaz | |
<UnConscious> ama printf() ˆnceden c tarafIndan tanImlI, degil | |
mi? | |
<mengus> bi dakika | |
<mengus> $imdi her $ey cok kari$ti | |
<mengus> ben toparliyorum hemmen | |
*** Mode "+m" by mengus | |
<mengus> $imdi | |
<aib> UnConscious: hayir C fonksiyon tanimlamaz.. C'nin | |
kutuphaneleri tanimlar | |
<mengus> fonksiyon_adi() | |
<mengus> dedigimiz zaman yalnizca ve yalnizca fonksiyon_adi() | |
isimli fonksiyon cagirilir | |
<mengus> fonksiyon_adi1() ile fonksiyon_adi() farkli | |
kavramlardir | |
<mengus> eger | |
<mengus> fonksiyon_adi() isimli fonksiyon tanimli ise | |
<mengus> calistirilir | |
<mengus> degilse | |
<mengus> hatayi yersiniz kafaniza :) | |
<mengus> yeterli bi aciklama olmu$tur umarim? | |
*** Mode "-m" by mengus | |
<aib> hatta diline gore FONKSIyon_adi() ile Fonksiyon_Adi() | |
ayri fonksiyonlar olabilir | |
<mengus> sorusu olan yoksa kontrol yapilarini anlatmaya | |
ba$layacagim | |
<UnConscious> Fonksiyon_Adi dedigimiz zaman Fonksiyon_Adi() | |
ÁalI$tIrIlIr mI? yoksa sonuna () koymamIz zorunlu mu | |
<mengus> UnConscious: dilden dile degi$ir | |
<mengus> c'de () koymak gerekir | |
<SSG> pascal'da gerekmez | |
<aib> UnConscious: o da diline gore... ama programlama | |
konseptlerinden bahsederken fonksiyon adlarinin sonuna her zaman () koyunuz | |
<mengus> o parantezleri | |
<Ancyreum> mengus | |
<mengus> matematikteki gibi du$unun | |
<mengus> f(x)=x*4; | |
<tuonela> oo cok klas | |
<mengus> eger fonksiyon parametre aliyorsa, parametreleri | |
parantezlerin icine yazarsiniz | |
<mengus> yoksa parantezlerin icini bo$ birakirsiniz | |
<Ancyreum> kucuk bi ara versek , 40 dakkadan sonra odaklanma | |
sorunlarI ba$lIyor insanlarInda! | |
<mengus> elbette | |
<tuonela> o yeah | |
<Ancyreum> sonra anlattIklarIn bo$a gitmese | |
<aib> az kaldi zaten | |
<mengus> bir 5-10 dakikalik mola daha verelim | |
<mengus> az kaldi | |
<aib> tek bir ana konu kaldi | |
<mengus> evet | |
<SSG> oh yeah! | |
<detay> mengus: bence son konu biraz daha ilgi alaka ister, | |
ara verelim bence | |
<aib> arkadaslar iki soru gecti konuyla alakasi olmadigindan | |
simdi yanitliyim | |
<aib> fonksiyon icinde z = y+x; dedikten sonra | |
<aib> fonksiyon disinda print z dedigimizde ne olacagi dile | |
baglidir | |
<aib> ornegin C'de fonksiyon icindeki degerler aksi | |
belirtilmedigi surece disari cikamaz | |
<aib> PHP'de filan da oyle | |
<aib> mengus: disardan icerdeki degeri dondurmeyi diyodu | |
<mengus> susarim o vakit ve sorarim 'ey halk, devam etmeye | |
hazir misiniz?' | |
<Ancyreum> yep | |
<mengus> sess.. se..ah..sses? | |
<mengus> ba$liyorum sonra akti koktu demeyin | |
<aib> fa ister misin mengus'um 440 Hz civarinda> | |
<mengus> kofteburger: kolay gelsin | |
<aib> FAAAAA | |
<aib> sol muydu yoksa | |
*** Mode "+m" by mengus | |
<mengus> sol minor. | |
<mengus> $imdi sira geldi | |
<mengus> kontrol yapilarina | |
<mengus> $imdi bunlarin adi niye kontrol yapilari? | |
<mengus> kodun icinde bir $eyleri kontrol ediyorlar, ce$itli | |
durumlara gore ce$itli tepkiler veriyorlar | |
<mengus> ornegin 'eger a degiskeninin degeri 3 ise su kodu | |
calistir, degilse bu kodu calistir' gibi seyler soyleyebilmemizi saglayan | |
yapilardir | |
<mengus> temelde ikiye ayrilirlar | |
<mengus> conditional (durumsal, duruma gore) | |
<mengus> ve | |
<mengus> loop (dongu) | |
<mengus> yine her dilde farkli yorumlari, farkli | |
implementasyonlari olsa da | |
<mengus> temeldeki mantik aynidir | |
<mengus> conditional yapilar bir durumun dogrulugunu kontrol | |
ederek hareket ederler | |
<mengus> bir conditional yapida | |
<mengus> eger dogrulugu test edilen durum, dogru ise | |
cali$tirilmasi soylenen kod bir kez cali$tirilir ve gecer | |
<mengus> looplarda ise | |
<mengus> 'dogrulugu kontrol edilen durum, dogru oldugu surece' | |
cali$tirilmasi soylenen kod tekrar tekrar cali$tirilir | |
<mengus> inceleyecegimiz ilk kontrol yapisi, bir conditional | |
(durumsal) kontrol yapisi olan 'if...elseif...else'dir | |
<mengus> her zamanki gibi, yazim tarzina cok takilmayin, | |
mantigi kavrayin | |
<mengus> if conditional kontrol yapisi, sundugunuz durumun | |
dogrulugunu kontrol eder | |
<mengus> bir basit ornek ile ba$layalim | |
<mengus> if(a==3) { | |
<mengus> print "a nin degeri 3tur"; | |
<mengus> } | |
<mengus> elseif (a==4) { | |
<mengus> print "a nin degeri 4tur"; | |
<mengus> } | |
<mengus> else { | |
<mengus> print "a nin degeri 3 ya da 4 degildir"; | |
<mengus> } | |
<mengus> $imdi yukarida yazdigimiz kod parcasi ne yapiyor? | |
<mengus> cumle haline getirelim | |
<mengus> "a degiskeninin degeri 3 ise 'a nin degeri 3 tur' | |
stringini ekrana yaz, a'nin degeri 3 degilse, a 'nin degeri 4 mudur? eger | |
oyleyse ekrana 'a nin degeri 4 tur' yaz. anin degeri 4 de degilse ekrana 'a | |
nin degeri 3 ya da 4 degildir' yaz" | |
<mengus> $imdi yukarida yazdigimiz kod parcasi C dilinin | |
syntaxina goredir | |
<mengus> ve burada kafaniza takilabilecek en onemli nokta | |
<mengus> "== nedir? niye = degil de ==?" olacaktir | |
<mengus> ancak $imdilik buna takilmayin diyecegim | |
<mengus> c'de esitligi test etmek icin boyle yapiyoruz | |
<mengus> visual basic gibi dillerde | |
<mengus> if a = 3 then | |
<mengus> gibi bir yazim kullanilir | |
<tuonela> elseifler arttIrIlabilir mi | |
<mengus> evet | |
<aib> else if konulmayabilir mi ? | |
<mengus> gerci elseif kullanimi da dilden dile degi$en bir | |
durum olsa da | |
<mengus> kullanilabildigi yerde, istedigimiz kadar elseif | |
kullanabiliriz | |
<mengus> 'bu degilse su mu, su da degilse o mu' diyerekten | |
<mengus> ve evet else if ler konmayabilir | |
<aib> else koymasak ? | |
<mengus> if(a==3) { | |
<mengus> .... | |
<mengus> } | |
<mengus> else { | |
<mengus> ... | |
<mengus> } | |
<mengus> diye bir kod da olabilir | |
<mengus> else'siz bir kod da olabilir | |
<mengus> zira | |
<mengus> 'sadece $u ko$ulun dogrulugunu test etmek istiyorum' | |
diyebilirsiniz | |
<mengus> ya da 'eger bu ko$ula uymuyorsa, ne olursa olsun $unu | |
yap diyebilirsiniz' | |
* detay notu: else if sayisi ne olursa olsun, belirtilen | |
kosullar disinda kalan her durum icin ELSE bloku kullanilir. else bloku bir | |
kez kullanilabilir. | |
<mengus> ilki icin yalnizca bir if, ikincisi icin if...else | |
kullanirsiniz | |
<mengus> elbette sadece e$itlik test edecegiz diye bir $ey | |
yok, | |
<mengus> if(a>4), if(b<2), if(c>=3) | |
<mengus> gibi testler yapabiliriz | |
<mengus> burada her dilin kendine ait bir 'mantik yorumlama'si | |
vardir | |
<mengus> if'in icindeki test 'dogru' ya da 'yanlis' olarak | |
yorumlanir | |
<mengus> her dilin dogru/yanlis tanimlamalari farkli olabilir | |
<aib> (conditional statement) | |
<mengus> ancak bilinmesi gereken | |
<mengus> if ile test ettigimiz statement DOGRU ise if blogunun | |
icindeki kod cali$tirilir | |
<mengus> degilse devam eder. | |
<mengus> bu konuda anla$ilmayan bir $ey? | |
*** Mode "-m" by aib | |
<Ancyreum> yok | |
<Ancyreum> bu konuda kolaymI$ | |
<tuonela> yok | |
<tuonela> eheh 2 ki$i kalmI$Iz uyumu$ herkes misal | |
<UnConscious> bence de yok gibi | |
<Ancyreum> 2 ki$i dinliyoruz heralde ? | |
<Ancyreum> :P | |
<Ancyreum> 3 | |
<Zeus> 4. :) | |
<Ancyreum> :) | |
<aib> 5 | |
<detay> 5 | |
<mengus> eheh | |
<Ancyreum> :) | |
<tuonela> orqan da var biliuom hissediyom | |
<mengus> susanlari anlami$ farz ediyorum | |
<UnConscious> sukut ikrardandir diyelim gecelim | |
<UnConscious> ? | |
<mengus> :) | |
<mengus> ok | |
<mengus> $imdi conditional statement'larin detaylarina | |
girmeyecegim | |
<ilkerz_kodaranz> 6 | |
<Arbalest> valla anladIm ben | |
<mengus> switch kontrol yapisini anlatacam | |
<mengus> akabinde aib while ve for dongulerini anlatacak, bu | |
geceyi kapatacagiz :) | |
<UnConscious> hocam bi$ey diycem | |
<Arbalest> iki buÁuk saattir ikrar ediyorum | |
<SSG> susanlari onemsemeyin onlar suser | |
<mengus> ahhahaha | |
<tuonela> mengus | |
<mengus> evet tuonela? | |
<tuonela> while ve for da kontrol yapisi di mi ama dˆng¸ | |
<mengus> tuonela: evet | |
<UnConscious> degi$ken t¸rlerinden yalnIzca integer ve stringi | |
gˆrd¸k, ba$ka yok mu? | |
<aib> UnConscious: var ama dile gore degistikleri icin cok | |
fazla detaya inmedik | |
<UnConscious> ok :) | |
*** Mode "+m" by mengus | |
<mengus> "switch" | |
<mengus> $imdi, switch dedigimizi 'coklu if' olarak | |
du$unebilirsiniz | |
<mengus> yine yazimi dilden dile farklilik gosterir, kimi | |
dillerde adi bile farklidir, kimi dillerde yoktur ancak populer bir cok | |
dilde oyle ya da boyle bir 'switch' implementasyonu oldugu icin anlatacagimn | |
<mengus> yine bir ornek uzerinden gidelim | |
<mengus> switch(a) { | |
<mengus> case 1: | |
<mengus> print "a nin degeri 1": | |
<mengus> break; | |
<mengus> case 2: | |
<mengus> print "a nin degeri 2"; | |
<mengus> break; | |
<mengus> default: | |
<mengus> print "a nin degeri 1 ya da 2 degil"; | |
<mengus> break; | |
<mengus> } | |
<mengus> bunun aynisini | |
<mengus> if(a==1) { | |
<mengus> print "a nin degeri 1"; | |
<mengus> } | |
<mengus> elseif (a==2) { | |
<mengus> print "a nin degeri 2"; | |
<mengus> } | |
<mengus> else { | |
<mengus> print "a nin degeri 1 ya da 2 degil"; | |
<mengus> } | |
<mengus> diye yazabilirdik | |
<mengus> yani yaptigi is ayni. ancak bazi durumlarda | |
programlama zamanindan (coding time), bazi durumlarda da calisma zamanindan | |
(run time) kazandirdigi icin tercih edilir | |
<mengus> $u anda bu farklarin ne olduguna deginmenin pek | |
anlami oldugunu sanmiyorum | |
<mengus> burayla ilgili sorusu olan? | |
*** Mode "-m" by mengus | |
<tuonela> case 1 demek degiskenin degeri 1 mi demek | |
<tuonela> yoksa onceden tanImlI mI "case" | |
<aib> evet parantez icindeki (a) case'len ayniysa o case | |
cailsir | |
<mengus> tuonela: asagidaki if statement ile yukaridaki switch | |
statement birbirinin aynisi | |
<tuonela> e$itlik dI$Inda bir $eyi kontrol edemez miyiz | |
switch() le | |
<mengus> ayni i$i yapiyorlar | |
<Wish> selamlar | |
<mengus> tuonela: hayir | |
<mengus> edilemez | |
<tuonela> hmm | |
<tuonela> tamam | |
<mengus> ba$ka sorusu olan? | |
<aib> tuonela: if.. else if..else'le yaparsin esitsizligi | |
<Ancyreum> yok | |
<UnConscious> sayI dI$Inda bir$ey de olabilir degil mi o? case | |
mustafa gibi? | |
<aib> dilden dile degisiyo | |
<mengus> UnConscious: dilden dile degi$ir | |
<aib> C'de sadece integer olabiliyo | |
<mengus> ornegin php'de ya da visual basic'de olabilir | |
<UnConscious> ok | |
<Arbalest> peki switch'i e$itsizlik iÁin de | |
kullanabilir miyiz | |
<Wish> int var | |
<mengus> hayir | |
<Wish> void var | |
<mengus> switch'te sadece e$itlik test edilebilir | |
<aib> wish: sorulara mengu ve ben cevap veriyoruz | |
<SSG> delphi'de ve visual basic'te switch yerine "case" | |
kullanilir | |
<SSG> case a | |
<SSG> 1: hede; | |
<SSG> 2: hodo; | |
<SSG> end; | |
<SSG> gibi | |
<mengus> ba$ka sorusu olan yoksa devam ediyoruz? | |
<Ancyreum> tamam | |
*** Mode "+m" by mengus | |
<aib> ok.. loop'lar | |
<mengus> $imdi aib bize dongu kavramini, for ve while | |
dongulerini anlatacak | |
<aib> loop yani dongu, devamli tekrar edilen kod parcasi | |
demektir | |
<aib> dongunun basit bi mekanizmasi vardir | |
<aib> 1) (bi sey olana kadar tekrar et) | |
<aib> veya | |
<aib> 2) (sonsuza kadar tekrar et) | |
<aib> normalde sonsuz loop'larin icinden de bi cikma | |
mekanizmasi olmasina ragmen | |
<aib> bunlara deginmeyecegiz | |
<aib> bunun disinda, sonsuz loop'larin icinden cikilamaz | |
<aib> windows gibi isletim sistemlerinde CTRL+ALT+DEL ile | |
filan program kapatilir | |
<aib> DOS'ta da restart atilir anca | |
<aib> scripting diliyle yaziyosaniz interpreter'in bi "cikma" | |
komutu varsa o da kullanilabilir | |
<aib> ama bunun disinda sonsuz donguler cikilamadigindan | |
kullanilmamalidir | |
<aib> neyse, diger donguler ise nispeten rahat dongulerdir, | |
belirli bi olay olana kadar tekrar ederler | |
<aib> ornek veriyorum | |
<aib> bundan once "kullanicidanYaziAl()" fonksiyonunun | |
kullanicinin klavyeye yazdigini dondurdugunu dusunun lutfen | |
<aib> string sifre; | |
<aib> sifre = "(bo$)"; | |
<aib> while (sifre != "asecretplace") | |
<aib> { | |
<aib> sifre = kullanicidanYaziAl(); | |
<aib> } | |
<aib> simdi bunu tek tek aciklamak istiyorum | |
<aib> string sifre; sifre degiskenini "string" yani "yazi" | |
iceren bi degisken olarak tanimladik | |
<aib> sifre = "(bo$)"; sifre degiskenine herhangi bir deger | |
verdik, onemli degil | |
<aib> while (sifre != "asecretplace") sifre stringi | |
"asecretplace"e esit degilse (!=) asagidaki blogu { ... } calistir | |
<aib> sifre = kullanicidanYaziAl(); kullanicinin girdigi | |
yaziyi degiskene ata | |
<aib> burda blok bittiginde kod ne olursa olsun while'a | |
doner... | |
<aib> while (sifre != "asecretplace") sifre stringi | |
"asecretplace"e esit degilse asagidaki blogu calistir | |
<aib> eger kullanici bi onceki calistirmada "asecretplace" | |
yazmamissa, sifre ona esit olmayacagindan program sifreyi tekrar sorar | |
<aib> sorduktan sonra tekrar while'in basina doner... eger | |
hala esit degilse yine sorar | |
<aib> kisacasi kullanici bu yaziyi yazana kadar dongu doner | |
<cortez> eger bu sifre sayi ise nolucak | |
<aib> ben ornek olarak string kullandim ama sayi da | |
kullanilabilir gayet rahat | |
<aib> while (sifre != 666) | |
<aib> { sifre = kullanicidanTamsayiAl(); | |
<aib> } | |
<aib> burda dikkat edilecek ilk nokta, | |
<aib> while() statement'i ilk goruldugunde while'in en basta | |
bi test yatigidir | |
<aib> bu test yuzunden onceden sifre = "(bo$)"; diyerek | |
sifrenin bi sekilde kazara bizim sifreye esit olmasini onledik | |
<Arbalest> ¸nlem i$areti if statement mI oluyo | |
<aib> while'in parantezlerinin icine giren seyler if'inkilere | |
girenle aynidir | |
< > | |
<aib> hatta boyle bir karsilastirma olmasi gerekli bile degil, | |
o parantez icindeki sey DOGRU oldugu surece loop calisir | |
<aib> kisaca sunlari geciim bari | |
<aib> == sagdaki soldakine esitse DOGRU | |
03/07/22 23:29:33 *** hired-spor is now known as hired-gun | |
<aib> != sagdaki soldakine esit degilse DOGRU | |
<aib> > sagdaki soldakinden buyukse DOGRU | |
< sagdaki soldakinden kucukse DOGRU | |
<mengus> yanli$ oldu | |
<aib> ay sag sol mu dedim | |
<mengus> :) | |
<aib> offf o kadar da bakmistim | |
<aib> ya ilkokul matematigi gibi | |
<aib> 6 > 3 dogru | |
< 6 yanlis | |
<aib> x = 3; | |
<mengus> ahhahah | |
< 6 yanlis | |
<mengus> aib: hanim senin uykun geldi :) | |
<aib> x = 100; | |
<aib> x > 6 dogru | |
<tuonela> bi $ekilde $ifre dogrulanInca ne olur | |
<aib> dikkat edin, sifrenin dogrulanmasi gibi bisiy yoktur | |
burda, kod sadece yazdigimizi yapar | |
<aib> sayet eger sifre degiskeni "asecretplace" olsaydi | |
<aib> (sifre != asecretplace) YANLIS dondureceginden | |
<aib> loopa bir daha girilmezdi | |
<aib> yani looptan cikilmis olunurdu | |
<tuonela> yani adam 34.denemede asecretplace yazsa? | |
<aib> hic fark etmez, bu dongu sifre "asecretplace"e esit | |
oluncaya kadar calisir | |
<aib> while "su su su iken" demektir ingilizcede | |
<aib> sunu okursak: | |
<aib> while (sifre != "asecretplace") | |
<aib> "sifre 'asecretplace'e esit OLMADIGI SURECE" | |
<UnConscious> hem sayI hem harf iÁeriyorsa? | |
<aib> degiskenin ne icerdigi ve buna nasil baktiginiz | |
degiskene gore degisir | |
<aib> mesela | |
<aib> while (1 == 1) { print "hede"; } | |
<aib> seklinde bir loop 1 her zaman 1'e esit olacagindan | |
DEVAMLI calisir | |
<aib> while (1 == 2) { print "hede"; } ise bir kere bile | |
ekrana hede yazmaz | |
<mengus> bi araya girebiir miyim | |
<aib> bi sn | |
<aib> kisaca while'i soyle acalim | |
<aib> parantez icindeki sey dogru ise, loopun icindekileri | |
yap, yapman bitince tekrar kontrol et | |
<aib> parantez icindeki sey dogru ise, loopun icindekileri | |
yap, yapman bitince tekrar kontrol et | |
<aib> parantez icindeki sey dogru ise, loopun icindekileri | |
yap, yapman bitince tekrar kontrol et | |
<aib> ... | |
<UnConscious> mesela bu ˆrnekte $ifre carismaboy17 | |
olsaydI, en ba$ta string $ifre veya int $ifre yazamazdIk sanIrIm, ne | |
yazardIk bu durumda? | |
<aib> string yazardik "17" ayni zamanda bi string de | |
olabilir | |
<aib> sifreye de yarildim :) | |
<aib> mengus: buyur | |
<mengus> hah biraz soyledin | |
<mengus> ben onu tamamlayayim | |
<mengus> abcdef | |
<mengus> bir stringdir | |
<mengus> abcdef16 | |
<mengus> da bir stringdir | |
<mengus> 16 bir int tir | |
<mengus> boyledir :) | |
<aib> ok :) | |
<aib> bakin soyle bisiy yapalim | |
<aib> 1'den 10'a kadar saydirma: | |
<-- i tamsayi | |
<-- i 1 | |
<= 10) | |
<aib> { | |
<aib> print i; | |
<aib> } | |
<aib> simdi bakalim mantik nasi calisiyo | |
<aib> int i; -> i'yi bi tamsayi variable'i olarak dusun... | |
bazi dillerde yazmaniza gerek yok pardon ben alistigim icin otomatik | |
yazmisim | |
<aib> i = 1; -> i'ye 1 degerini koy | |
<= 10) -> i 10'dan kucuk veya 10'a esit ise | |
asagidakini yap: | |
<aib> print i; -> i'yi ekrana yaz | |
<aib> print i;'nin altina i = i + 1; koyuyoruz | |
<aib> i = i + 1; -> i'ye i'nin degerinin bi fazlasini koy (2) | |
<aib> burda basa donuyo | |
<= 10) -> i 10'dan kucuk veya esit ise | |
asagidakini yap... | |
<aib> 2, 10'dan kucuk veya esit oldugu icin aynen devam: | |
<aib> print i; -> ekrana 2 yaziyo | |
<aib> i = i + 1; -> i bu sefer 3 oluyo | |
<aib> ... | |
<aib> fast forward'a aliyoruz, i'nin 10 oldugunu dusunun | |
<= 10) -> i 10'dan kucuk veya esit oldugu icin | |
asagidakini yap: | |
<aib> print i; -> 10 yazdir | |
<aib> i = i + 1; -> i 11 oldu | |
<aib> tekrar basa | |
<= 10) -> bu sefer i 11 oldugundan calismiyo | |
<aib> ve loopa bi daha girilmiyo.. loopun altinda ne varsa o | |
calismaya basliyo | |
*** Mode "-m" by aib | |
<aib> soru? | |
<stackoverflow> abi ne dersiydi bu | |
<tuonela> sifre asecretplace girildiginde de bu blogun | |
altIndaki koddan mI devam edIyor | |
<mengus> tuonela: evet | |
<aib> tuonela: evet once while() bakiyo o ikisi esit... esit | |
oldugu icin loopu calistirmiyo direk atliyo | |
*** Mode "+m" by aib | |
<aib> bi ornek daha | |
<cortez> mengus: ok o halde | |
<Wish> ea | |
<aib> i = 5; | |
<mengus> aib dur | |
<aib> while (i == 6) | |
<aib> { | |
<mengus> wish bisey soracak | |
<mengus> aloovvv | |
<aib> print "i 6 olmus"; | |
<aib> } | |
<aib> ohooo | |
<mengus> buyur wish | |
<mengus> wish bambaska alemlerde sanirim. | |
<mengus> devam edelim biz | |
<aib> ok | |
<aib> su ornegi tekrar veriim | |
<aib> i = 5; | |
<aib> while (i == 6) | |
<aib> { | |
<aib> print "i'nin degeri 6"; | |
<aib> } | |
<aib> print "loop bitmis oh be"; | |
<aib> boyle bi program, while'in parantezindeki hicbir zaman | |
dogru olmayacagindan | |
<aib> while'in icindeki print "i'nin degeri 6";" satirini | |
hicbir zaman calistirmaz | |
<aib> diger "loop bitmis oh be" der | |
<aib> sayet eger en basta i = 5; yerine i = 6; deseydik | |
<aib> bu sefer de program devamli i'nin degeri 6 diyip basa | |
doneceginden | |
<aib> sonsuz loopa girmis olurduk | |
<tuonela> loop bitmis oh be'yi bir kere yazar di mi | |
<aib> tabii ki, o satir loop icinde degildir | |
<aib> loop'u kapatan, dile ozgu DELIMITER'lar vardir | |
<aib> if gibi | |
<aib> benim yukardaki yazdigim ornekte bunlar { ve } | |
oldugundan sadece { ve } icerisi loopa alinir | |
*** Mode "-m" by aib | |
<aib> anlasilmayan ? | |
<tuonela> s¸per | |
<Wish> bide | |
<Wish> ! var | |
<Wish> aib | |
<Wish> ! expressionu anlatirmisin | |
<Wish> != gibi | |
<aib> diyince a alti ise hede calisiyodu ya | |
<Arbalest> ben cevaplayabilir miyim | |
<aib> Arbalest: tabi | |
<Arbalest> efenim "!" yazInca e$itdegildir demek oluyo | |
<arbalest> eski osmanlicada <> derdik biz buna | |
<mengus> Arbalest :) | |
<mengus> bir cok dil halen o yazimi da kabul etmektedir | |
<UnConscious> if nasIl delimiter oluyor onu anlamadIm | |
<aib> if'teki gibi | |
<aib> if (a == 6) { hede } | |
<aib> UnConscious: if delimiter degil, while'da da if'teki | |
gibi delimiter var | |
<aib> if (a == 6) { hede } gibi while (a == 6) { hede } | |
<UnConscious> aib: ok anladIm | |
<aib> { ve } arasindaki seyler looptadir sadece | |
<aib> gerisinin while'la alakasi olmaz | |
<aib> mengus: for'u geciim bitiriim mi ? | |
<aib> mengus: while'la ayni zaten | |
<tuonela> delimiter ";" dilmiydi yav | |
<aib> tuonela: o statement delimiter... bu block delimiter | |
<mengus> for'u yapalim ve bitirelim | |
*** Mode "+m" by aib | |
<aib> ok while'i anladiysaniz for cok basittir | |
<aib> biraz akil karistirabilir ama mantigi cok kolaydir | |
<aib> soyle ki | |
<aib> demin sayi saydirma yaptik ya | |
<aib> i = 1; | |
<= 10) | |
<aib> { | |
<aib> print "i'nin degeri:" i; | |
<aib> i = i + 1; | |
<aib> } | |
<aib> for bunun gibi seyleri kolaylastirmak icindir | |
<aib> bakin ben once bu while'i tek bi for icine aliim | |
<= 10; i = i + 1) | |
<aib> { | |
<aib> print "i'nin degeri:" i; | |
<aib> } | |
<aib> ne nereye geldi gorduyseniz, | |
<aib> for (a; b; c) formatinda bi loop'un | |
<aib> a; | |
<aib> while (b) { | |
<aib> ... | |
<aib> c; | |
<aib> } | |
<aib> seklinde acildigini gorursunuz | |
<aib> yani a loop'tan once yapilan seydir | |
<aib> b while'in test ettigi seydir | |
<aib> c'de loop'tan sonra yapilir | |
<aib> burda dikkat edilmesi gerek nokta a'nin bir kere | |
yapildigidir | |
<aib> cumle haline getiriim: | |
<aib> for(bunu bi kere yap; bu dogru oldugu surece loopu | |
islet; loop bitiminde bunu yap) | |
<Arbalest> sondaki i=i+1 de antik ÁaglarIn next'i oluyor | |
degil mi | |
<aib> evet ama burdaki fark | |
<aib> "antik caglardaki" for'larin, daha dogrusu | |
for...next'lerin variable'in degerini birer birer arttirmasidir | |
<aib> biz burda i = i + 2; hatta i = i * 3; de diyebilirdik | |
<mengus> "i nin degerini sifira esitle, i nin degeri | |
10dan kucuk oldugu surece i 'yi bir artirarak dongu icindeki kodu calistir' | |
< 10; i = i + 1) | |
<tuonela> for da yapip while da yapilamayan veya tersi | |
bir ˆrnek var mI | |
<aib> hayir, for while'lar icin bi kolayliktir | |
<UnConscious> next nasIl kullanIlIr o hale | |
<aib> for'u bu sekilde olan dillerde next yoktur | |
<aib> next olan dillerde for ayridir | |
<SSG> tamam icecek ve sosisli servisi ba$lasin | |
<mengus> ssg hakkaten ne g¸zel dedin sen | |
<mengus> midem yaniyor | |
*** Mode "-m" by aib | |
<tuonela> abiler , for her dafasInda () arasInda 2. ;.....; | |
yere mi bakIyor | |
<Arbalest> benimki tur$usuz olsun l¸tfen | |
<aib> tuonela: aynen oyle while icine o giriyo gibi dusun | |
<SSG> tuonela: 2. yer dongunun devam etme ko$ulunu kontrol | |
eden statement | |
<SSG> expression diyelim veya | |
<tuonela> sanki her defasInda i=0 yapacak gibi geliyor ;) | |
<mengus> for(baslangicta yapilacak hareket; kontrol edilecek | |
ko$ul; loop edince yapilacak hareket) | |
<tuonela> tamamdIr tamam | |
<SSG> 1. 'si for ilk ba$larken cali$an 3.'su de her | |
iterasyonda cali$acak olan kod | |
<SSG> mesela ekrana 1'den ona kadar sayilar yazdiran for | |
<detay> afiyet olsun :) | |
<mengus> sizler sagolun :) | |
<Arbalest> evet elinize saglIk | |
<SSG> for(n=1;n<=10;n=n+1) printf("%d ",n); | |
<Arbalest> uzun boylu arkada$larIn beline de | |
03/07/22 23:58:15 * UnConscious hocalar˝n˝n ellerinden tek tek ˆper, | |
te˛ekk¸rlerini sunar. | |
<tuonela> ziya: hadi canIm ;) | |
<kofteburger_> t¸rkiye sizinle guru duyuyor | |
<SSG> ahah ders bitti hala bagiriyorum | |
<SSG> arkada$laaar fooooorrrrr | |
<mengus> ahhahahaha | |
<tuonela> eheheh | |
<tuonela> ssg koptu yaziyo | |
<SSG> fooor donguleeeriiiiiiii | |
<Ancyreum> cok saolun arkadaslar | |
<UnConscious> ehehe | |
<down> tesekkurler | |
<kofteburger_> susun hoca bi$i diyo | |
<orqan> ellerinize saglik arkadaslar | |
<SSG> allah belanizi versin | |
<mengus> ahhaha | |
<SSG> egeeheh | |
<UnConscious> hoca ÁIkmadan ders bitmi$ sayIlmaz! | |
<PrymeSinistaJinx> SSG: for kafalarIna kafalarIna da | |
sussunlar. | |
* SSG rastgele tebe$ir atar | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment