bilgisayar etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
bilgisayar etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

1 Ocak 2008 Salı

İnternetin Hayat Hikayesi

İlk geniş alan ağı olan ARPANET 1960′lı yılların ortasında askeri amaçlarla ortaya çıktı. Nükleer bir savaş esnasında telefon hatlarının çoğunun tahrip olması durumunda bilgisayar iletişiminin sürdürülmesi amaçlanıyordu. Paul Baran, Rand Corp. adına paket-anahtarlamalı ağ fikrini gelişdi. Paket anahtarlamalı ağlarda, her mesaj küçük parçalara bölünür ve bu parçaların varış noktasına başarı ile ulaşıp orijinal mesajın oluşturulması sağlanır.





1969 yılında DARPA (Defense Advanced Projects Agency) Amerika’da örnek bir paket anahtarlamalı ağ oluşturulması için bir proje başlattı. Bu ağın adı ARPANET’ dir. ARPANET, veri haberleşmesindeki tekniklerin öğrenilmesi amacı ile oluşturulmuştur. 1972, ağların ağı ortaya çıkmaya başladı. 40 bilgisayardan oluşan bir ARPANET gösterisi yapıldı. 1975 yılında başarılı bir biçimde ARPANET işlevsel bir ağ konumunu aldı, birçok organizasyon bu ağa katıldı.






1983 yılında, Internetworking Working Group (INWG) TCP/IP’ye temel halini verdi. TCP/IP protokolleri de askeri standart olarak (MIL STD) uyarlanmıştır. Aynı yıllarda Internet terimi yaygın olarak kullanılmaya başlanmıştır. TCP/IP protokolünün Unix işletim sistemine eklenmesinin ardından, 1984 yılında DNS (Domain Name System) tanıtılmıştır. DNS’ in tamamlanması 4 sene sürmüştür. 1985 yılında, NSFNET süper bilgisayarlar arası TCP/IP tabanlı ağın oluşturulup çalıştırılması için kuruldu.





Eski ARPANET, MILNET ve daha küçük ARPANET (DDN: Defense Data Network) olmak üzere ikiye ayrılmıştır. 1990 yılında ARPANET varlığını yitirmiştir.



İnternet orijinal ARPANET’ den doğmuş, bağlantılı ağların dünya çapında bir koleksiyonudur. Bu ağlar değişik fiziksel ağlardan tek bir mantıksal ağa bağlantı için Internet protokolü (IP) kullanırlar.






1990 dan sonra internetin gelişimiyle beraber bilgisayarlar artık televizyon ve telefon gibi alışılmış birer aygıt hâline gelmişlerdir.

İlk Bilgisayarlar

1980′lerden bu yana kişisel bilgisayarları ya ana kartının genel mimarisi, ya da ana işlemcinin modeline göre türlere ayırmak gelenek oldu. Şimdi PC dünyasına biraz daha yakından bakabiliriz:








IBM-PC:





Bilgisayar çılgınlığını başlatan bu cihaz, 1981 yılında piyasaya sürüldüğünde, hangi tür mağazalarda satılabileceği bile belli değildi. İki adet 5.25 inçlik floppy disket sürücüsü olan IBM PC’nin sabit diski yoktu. Ana işlemcisi Intel 8086 idi; beş adet kart yuvası vardı. Bir süre sonra IBM bu modele sabit disk koydu; ama RAM çipi denilen bilgisayarın hafızasını oluşturan çipi alakartla birleşik olduğu için arttırılması mümkün değildi. Elinizde böyle bir antika bilgisayar varsa, yenilemek güncelleştirmekten vazgeçin; olduğu gibi saklayın. Bir süre sonra antikacılara ya da bilgisayar-teknoloji müzelerine satabilirsiniz.








IBM XT:



IBM firmasının 10 megabyte sabit disk koyduğu ilk kişisel bilgisayarı olan XT’nin CPU’su da ilk PC’ye göre daha hızlı Intel 8088′di. Kart yuvası sayısı 8′e çıkartılmıştı. 8-bit tabir edilen standartta kart kabul eden bu bilgisayarın da bugün layık olduğu tek yer müze!














IBM AT


1985′te piyasaya sürülen ve bugünkü şekliyle PC’nin gerçek büyükannesi olan AT, Intel 80286 CPU üzerine inşa edilmişti. Orijinal PC’ye göre beş kere daha hızlıydı ve 16-bit standardında kart kabul ediyordu. IBM firması, bu bilgisayarla, ISA denen ana kart mimarisini bütün endüstrinin yararlanabileceği şekilde kullanıma açtı. ISA bütün bilgisayar endüstrisi için standart mimari anlamına geliyordu; nitekim öyle de oldu. Bir anda yüzlerce şirket, AT ile uyumlu cihazlar imal etmeye başladı. Modemlerin, tarayıcı ve diğer harici cihazların bilgisayara bağlanmasında kullanılan ara-birim kartlarının bir anda mağazaları doldurması, bu standardın gerçekten bütün endüstri tarafından kabul edilmesiyle mümkün oldu. Ancak AT bilgisayarların ana kart hızı bugünkülere oranla son derece düşük olduğu için böyle bir bilgisayarın yeni kartlarla güncelleştirilmesi, yeni kartlara verilecek paranın çöpe atılması olur. IBM-AT bilgisayarın ana kart büyüklüğü, günümüzdeki modern kartlarla aynı olduğuna göre, kasasının boş kutu olarak değerlendirilip, içindeki herşeyi değiştirmek mümkündür. Ancak orijinal AT’nin güç birimine ayırdığı yer çok küçük olduğu için, yenilemek için göstereceğiniz zahmet, boş kutu masrafından sağlayacağınız tasarrufa değmeyecektir.






PCjr ve PS/2





ISA standardının kabulü ile IBM dışındaki firmaların IBM-uyumlu denilen bilgisayar imalatı da hızlandı. IBM’in ilk AT bilgisayarları oldukça pahalı idi. Diğer firmaların IBM-uyumlu bilgisayarları ise çok daha ucuzdu. IBM, 1986 ve 1987 yıllarında çıkarttığı PCjr modeli ile diğer firmalara kaptırmaya başladığı ev-bilgisayarı pazarını geri almaya çalıştı. PS/2 ise, IBM başka firmalar tarafından benzerinin yapılmasına izin vermediği bir mimari ile yapılıyordu. IBM bu mimariye MCA (Micro Channel mimarisi) adını veriyordu. ISA’dan farklı, günümüzdeki Tak-Çalıştır türü kartlar gibi, MCA bilgisayarları için yapılacak kartların ayarlarının kullanıcı tarafından değil, bilgisayar tarafından otomatik yapılacak olmasıydı. Ne var ki, bu strateji tutmadı. PCjr, çok az yetenekli oluşu; PS/2 ise herhangi bir mağazadan satın alınabilecek ISA kartları kabul etmediği ve MCA kartları diğerlerine oranla üç-dört kat daha pahalı olduğu için PS/2 bilgisayarları birkaç kişi ve firmanın antikaları arasında yer aldı. IBM, daha sonra fazla duyurmadan, PS/2 bilgisayarların ISA modellerini de çıkarttı. Eğer böyle bir bilgisayara sahipseniz, anakart yeri yeni anakartları alacağı ve güç birimine ayrılan köşe oldukça geniş olduğu için her şeyi yenilemek şartıyla, boş kutusu olarak kullanabilirsiniz. Ancak dökme-metal şasesi yüzünden yerinden kaldırması zor olan PS/2, kullanıcıya hayatı bayağı zorlaştırabilir.






386, 486 ve PENTIUM





Ve geldik günümüzün modern bilgisayarlarına. 1987′den itibaren Intel firması her iki yılda bir ana-işlem çipini daha hızlı ve daha çok işlem yapabilen modellerle geliştirmeye başladı. 486′yı 586 izledi. Bu sırada diğer firmalarda CPU üretmeye ve kendi çiplerine Intel-benzeri isimler vermeye başlamışlardı. Intel firması, rakamdan oluşan marka ve mamul adlarının telif hakkını korumanın güç, hatta imkansız olduğunu acı şekilde öğrenince, 586 çipine “beş kelimesinin Latincesinden (Penta) türetme Pentium adını verdi. (Pentium adı o kadar tuttu ki, Intel 686 ve 786 olması gereken çiplerine Pentium II ve Pentium III adını verdi.)

Bilgisayarın Tarihçesi

Bilgisayar, belirli komutlara göre veri işleyen bir makinedir.


Bilgisayarlar çok farklı biçimlerde karşımıza çıkabilirler. 20. yüzyılın ortalarındaki ilk bilgisayarlar büyük bir oda büyüklüğünde olup, günümüz bilgisayarlarından yüzlerce kat daha fazla güç tüketiyorlardı. 21. yüzyılın başına varıldığında ise bilgisayarlar bir kol saatine sığacak ve küçük bir pil ile çalışacak hâle geldiler. Toplumumuz kişisel bilgisayarı ve onun taşınabilir eşdeğeri, dizüstü bilgisayarını, bilgi çağının simgeleri olarak tanıdılar ve bilgisayar kavramı ile özdeşleştirdiler.






Bilgisayar tarihçesine baktığımızda, bilgisayar fikrinin çok eskilere dayanmadığını görürüz. 1830′larda Charles Babbage (1792-1871) fark makinesini ve ardından analitik makineyi yapmasıyla hesaplama işlerinin elektro mekanik araçlara yaptırılması ve sonuçların elde edilmesi görüşü doğmuştu. Charles Babbage yaptığı bu makineler ile başarılı sonuçlar elde edememesine rağmen, bilgisayarların temelinin onun tarafından atıldığı kabul edilmektedir.





1850 yılında George Boole kendi adıyla anılan ve sadece "1" ve "0" rakamlarının kullanıldığı Boole Cebiri sistemini bularak, bilgisayarların gelişimi üzerinde önemli rol oynamıştır.






1890′da Herman Hollerith tarafından, delikli kartlarla bilgilerin yüklenebildiği ve bu bilgiler üzerinde toplama işlemlerinin yapılabildiği bir elektro mekanik araç geliştirdi. Bu hesaplayıcı ABD’nin 1890 nüfus sayımında başarılı biçimde kullanıldı.





İlk analog bilgisayar 1931 yılında Vannevar Bush tarafından gerçekleştirildi. Buna karşılık, ilk sayısal bilgisayarı George Stibiz 1939′da New York’taki Bell Laboratuvarında üretti. Stibiz ikili sistemi bu makinaya uygulayarak komplex sayılarla aritmetik işlemler yapılmasını sağladı.






Bilgisayarlar konusunda en önemli ve hızlı gelişmelerin 2. Dünya Savaşından sonra başladığı görülüyor. Haward Aitken IBM ile işbirliği yapmak suretiyle 1944′de MARK I’i tamamladı. Bu bilgisayar küçük kapasiteli olmasına rağmen o günün koşullarında büyük bir başarı olarak kabul edildi. MARK I’e bilgiler delikli kartlarla veriliyor ve sonuçlar yine delikli kartlarla alınıyordu.











Bir grup bilim adamı tarafından 1945′de ENIAC isimli bir bilgisayar yapıldı. ENIAC askeri amaçlar için geliştirildi. Radyo lambaları kullanılıyordu ve MARK I’e göre oranla oldukça hızlıydı. Bu bilgisayar ile elektronik bilgisayara geçiş başlamış ve mekanik donanım yerini elektronik devrelere bırakmıştır.





Ticari amaçlarla kullanılabilen ve seri halde üretimi yapılan ilk bilgisayar UNIVAC I oldu. Bu bilgisayarın giriş-çıkış birimleri manyetik bant idi ve bir yazıcıya sahipti. Aynı yıllarda IBM 701 bilgisayarı piyasaya çıktı. Bu bilgisayarın vakum tüplü ve basit biçimde programlanabilen bir yapısı bulunuyordu. IBM firması 1958′den itibaren bilgisayarda vakum tüpleri yerine diot ve transistorları kullanmaya başladı. Buna bağlı olarak daha küçük, hafif ve daha az ısınan bilgisayarlar pazarlandı. Ayrıca bilgi depolama ortamları olarak disk ve tamburlar kullanılmaya başlandı.

1964 yılından itibaren transistorların yerini bütünleşik devrelerin alması bilgisayar alanındaki gelişmelere ivme kazandırmış; daha hızlı, güvenilir ve maliyeti daha ucuz bilgisayarlar üretilmeye başlanmıştır. 1970 yılından itibaren geniş çapta bütünleşik devrelerin kullanılmaya başlanmasının bilgisayar devrimine yeni boyutlar kattığı görülmüştür. Özellikle 1993 yılından itibaren geniş bellekli ve hızlı bilgisayarlar yanı sıra güçlü programlama dilleri ve işletim sistemlerinin ortaya çıktığı dikkatleri çekmektedir. Artık eski bilgisayarlarda kullanılan çekirdek bellek yerine daha ucuz manyetik iç bellekler kullanılmakta ve bilgisayar maliyetleri gün geçtikçe düşmektedir.

27 Aralık 2007 Perşembe

NEDEN TCP

Internet Protokolü(IP)paket adi verilen bilgi gruplarinin degisimi üzerine kurulmustur. Paketler baslik ve gövdeyi ihtiva eden bir dizi bytettir.Baslik paketlerin nereye gidecegini tanimlar,internette paketlerin paketlerin geçtigi yönlendiriciler paketin hedefine varabilmesi için basliga bakarak yönlendirme yapar.Gövde ise uygulama verilerini içerir.

Normal olmayan bir yigilma durumunda IP protokolü paketleri reddeder.Çünkü iki ardisik paketin internet üzerinde farkli yollardan hedefe ulasirsa siralamalari yanlis olur.

TCP protokolünün yazilim kütüphaneleri IP protokolünü kullanarak uygulamalara,basit arayüz saglar,uygulamalarin çogu temel paket yapilarini gizler,düzensiz paketleri yeniden düzenler,ag yigilmalarini önler,daha önceden reddedilmis olan paketleri tekrar gönderir.

Bu yüzden TCP çogu uygulama yazimini ciddi oranda basitlestirmistir.

TCP’nin Uygulanabilirligi

TCP içindeWWW.E-mail,FTP,Secure Shell ve bazi medya akis programlarininda bulundugu çogu uygulama ve uygulama protokolü tarafindan kullanilir.

TCP bazen düzensiz paketlerini beklerken veya kayip paketleri yeniden gönderirken uzun zaman gecikmelerine maruz kalir bu yüzden TCP teslimatlari zamana bagimli olarak degil veri bütünlügüne yönelik yapmak üzere iyilestirilmistir.

Bu yüzden IP üzerinden ses ve görüntü paylasimi için TCP uygun olmayabilir.

Bu tip uygulamalar için TCP yerine UDP(User Datagram Protokol-Kullanici veri blogu iletisim kurali)üzerinden çalisan RTP(Real-time transport protokol)kullanilmasi tavsiye edilir

TCP KULLANIMI :Uygulamalar herhangi bir ag üzerindeki bir bilgisayarlardan baska birine baglanti olusturabilirler.Olusturduklari bu baglanti üzerinden akis soketlerini kullanarak karsilikli olarak veri gönderip alabilirler.TCP eszamanli uygulamalar tarafindan gönderilen çoklu verileri ayristirabilir.

Internet iletisim kurali paketinde,TCP ortalarlarda bir yerdedir.Yani Internet protokol katmani ile uygulama katmaninin arasindadir.Uygulamalar genelde boruya benzergüvenilir bir hatta ihtiyaç duyarlar.Internet iletisim kurali (IP) iyi bir veri akisi sunamazken sadece best effort delivery(en iyi teslim etme isi )ne tercihen kullanilir.TCP basit bir OSI modelinin tasima katmaninin isini yapar. Internet iletisim kurallarinin diger tasima katmanlari ise UDP veSCTP dir.

Uygulamalar TCP ye network üzerinde istenilen bir noktaya teslim edilmek üzere arka arkaya 8 bitlik veriler gönderir,daha sonra TCPbu verileri network üzerinde tasinabilecek maksimum büyüklükte parçalara böler. Enson haldeki veriler diger uçtaki noktanin TCP modüle teslim edilmek üzere TCP tarafindan Internet protokolüne aktarilir.

Her pakete diger tarafa tam ve dogru sira ile ulasip ulasmadiklarini kontrol için sira numarasi verilir. Verilen bu sira numaralarina göre TCP veri kaybi olup olmadigini kontrol eder.Uzak taraftaki TCP modülü paketlerin alindigina dair ACK (acknovledgment-Kabul tanima)sinyali gönderiri.eger ortalama bir gidis-dönüs süresinde gönderici tarafindaki TCP modülüne ACK sinyali ulasmamissa, bu modüldeki zamanlayici zaman asimi sinyali olusturur ve muhtemel bir veri kaybina karsilik olarak bu paketler tekrar dan gönderilir.TCP ayni zamanda hiçbir byte’in bozulmadan ulasabilmesi için checksum (bütünlük dogrulayici )üretir.bu gönderici tarafindan herbir veri kümesi gönderilmeden önce üretilir.ve alici tarafindan kontrol edilir.



Iletisim Kuralinin Çalismasi

TCP geleneksel esdegeri olarak bilinen UDP den su açidan farklidir. UDP, paketleri hemen göndermeye baslarken, TCP verileri göndermeden önce bazi islemler yapar. TCP baglantilari üç adimdan olusur.

· Baglanti kurulumu

· Veri aktarimi

· Baglantinin sonlandirilmasi

Bu üç adimi açiklamadan önce, diger uçtaki son nokta veya internet soketi baglantisinin degisik durumlarini not alalim.

1. LISTEN

2. SYN-SENT

3. SYN-RECEIVED

4. ESTABLISHED

5. FIN-WAIT 1

6. FIN-WAIT 2

7. CLOSE WAIT

8. CLOSING,

9. LAST-ACK

10. TIME-WAIT

11. CLOSED

LISTEN: Uzaktaki bir TCP veya Port tarafindan gönderilecek baglanti sistemini beklemeyi temsil eder.

SYN-SENT: uzaktaki TCP nin SYN ve ACK bayraklarini kurmak için geriye bir TCP paketi göndermesinin beklenmesi.

SYN-RECEIVED: uzaktaki TCP ye geri gönderdigi verinin ulastigina dair bilgilendirme sinyalinin gönderilmesinin beklenmesi.

ESTABLISHED: Portlarin veri alip göndermeye hazir oldugunu gösterir.

TIME-WAIT: Uzaktaki TCP nin baglanti sonlandirma isteginin cevabini almasi için geçmesi gereken süre.

Baglanti kurulumu:TCP bir baglantiyi olusturmak için 3 degisik tokalasma yöntemi kullanilir.Bir istemci sonucu ile baglanti kurma girisiminde bulunmadan önce,sunucu bir portu bu baglantinin olusabilmesi için istemciyle iliskilendirmelidir.buna baglantinin pasif olarak açilmasi denir.Pasif baglantinin açilmasindan hemen sonra istemci aktif baglantiya geçer.Bir baglanin kurulabilmesi için 3 çesit tokalasma olur.



· Istemci tarafindan gerçeklestirilen aktif baglanti sunucuya SYN gönderir.

· Sunucu cevap olarak SYN-ACR gönderir.

· Son olarak istemci sunucuya ACR gönderir.

Bu noktada hem istemci hem de sunucu baglanti konusunda birbirlerini tanimis olurlar.

ÖRNEK:

1.Istemci baglantiyi baslatmak için Synchronization(SYN bayragim1 yapar)paketi gönderir. Her SYN paketi bir sira numarasi tutar. Sira numarasi 32 bitlik bir sayidir ve TCP baslik kisminda yer alir. Bu bölümde sirra numarasi x ile niteleyecegiz.

2. diger taraftaki makine paketleri alir ve sira numarasini kaydeder (x) ve bir tanima ve senkronizasyon ( Acknowlegment and Synchronization)

(SYN-ACK): Tanima (kabul)sinyali(verisi) 32-bittir ve TCP baslik kismindadir. Bu veri alamayi umdugu diger paketin sira numarasini tutar.

(x+1).host ayni zamanda dönüs oturumunuda baslatir. Bu içinde kendisinin baslangiç sira numarasi olan (y)barindiran bir tcp segmenti barindirir.

3. Baslangiç makinesi cevap olarak sira numarasi x+1 olan paketi ve sira numarasi göndericinin kinin bir fazlasi oln (y+1) tanima paketi gönderir.

Savunmasiz Tarafi Kilitlenme:korsanlarin sahte ip kullanarak üst üste SYN paketleri göndermeleri sunucunun sahte baglantilarin kaydini tutmak için çok fazla kaynak harcamasina sebep olur. Bu problemin önerilen çözümü SYN. Cookie ve Kriptolamada saklidir.



Veri Aktarimi

TCP ile UDP arasinda birkaç önemli farkliliklar vardir.

· Düzenli veri aktarimi

· Kayip paketlerin tekrar aktarimi

· Yenilenen paketlerin reddedilmesi

· Hatadan yoksun veri transferi

· Yigilma/Akis kontrolü

Verilerin Düzenli Aktarimi, Kayip Paketlerin Tekrar Gönderilmesi, Yenilenen Paketlerin Reddedilmesi

Yukarida bahsedilen 3 asamali el sikismadan ilk iki adimda her iki bilgisayar karsilikli olarak bir baslangiç seri numarasi (ISN-Initial Seguence Number ) birbirlerine gönderirler. Bu numara istege bagli olarak seçilebilir. Bu numara karsilikli veri gönderimlerinde olusabilecek olan parçalanma veya sira bozulmasindan etkilenmesinden veri tasinmasi için bytelarin siralarini belirler. Her byte tasinmasinda sira numarasi artirilir.

Kavramsal olarak, her byte bir sira numarasi ile gönderilir ve alici veriyi aldiginda, bunu belirtmek için bir ACK(kabul) sinyali gönderir. Gerçekte ne oluyor peki, sira numarasi alanina sira numarasi yerlestirilmis ilk veri byte alici tarafindan alindiginda, diger byte’i bekledigine dair bir onay bilgisi gönderir.

Örnegin: Eger A bilgisayari sira numarasi 100’den baslayan 4 byte’lik bir veri gönderirse, alici bu verileri düzgün olarak aldigini ve diger paketteki verileri bekledigini belirtmek için geriye degeri 104 olan bir onay sinyali gönderir.104 degerinde bir onay sinyalinin gönderilmesi 100,101,102,103 nolu bytelarin aldigini gösterir. Eger 102 nolu bir onay sinyali gönderilirse bu 100 ve 104 nolu byte’larin alindigi ve 102 ve 103 nolu bytelarin alinmadigini gösterir.

Bununla birlikte bazen paketler kaybolabilir. Örnegin 10 farkli pakette gönderilen 10.000 byte’tan gönderim sirasinda kaybolduysa; gönderici 10.000 byte’in hepsini tekrardan göndermek zorundadir. Alici 1000 ile 9.999 arasindaki bytelarin aldigini söyleyemez bunu yerine kaybolan ilk paketteki 0 ile 999 arasindaki bytelarin alamadigini söyleyebilir. Bu problemi halletmek için ’seçimli onay’ (Selectime Ack) sinyali seçenegi eklenmistir. Bu seçenek, basit TCP onayinda oldugu gibi basarili olarak alinan en son paketin sira numarasini onaylamak yerine, paketlerin düzgün bir biçimde alinan farkli bloklarina onay verebilir. Her blok baslangiç ve sonuç sira numaralari ile tasinir.” Yukaridaki örnege göre, alici sira numarasi 1000 ile 10000 arasinda olan SACK seçenegi zorunlu degildir, sadece iki kisimda bunu destekliyorsa kullanilabilir. Baglanti kurulum asamasinda karsilikli olarak karara baglanir. SACK kullanimi TCP basliginin seçimine bagli bir bölümdür. SACK ayni zamanda SCTP de de kullanilir.

Hatasiz veri transferi

Sira numaralari ve onay sinyalleri yineleyen paketleri kaybolan paketlerin yeniden gönderilmesi gibi olumsuz durumlari ortadan kaldirir ve düzenli bir veri transferine imkan saglar. Dogru bir transferi saglayabilmek için check sun( kontrol) eklenmistir. Yüksek oranda bit hatalarinin muhtemel oldugu veri baglanti katmanlari ek olarak baglanti hata düzeltme \bulma kapasitesini gerektirebilir. Eger TCP bügün tekrardan dizayn edilmils olsaydi su anda kullanilmakta olan kontrol yöntemi checksum’ un yerine 32 bitlik bir periyodik fazlalik kontrolü yüksek ihtimamli olarak olabilirdi. Zayif checksum 2 katmanda bulunan TCPve IP nin kullandigi en iyi tümlesik kontrolü veya CRC nin bir kismini karsilayabilir. Bununla birlikte bu karsilama 16 bitlik TCP saglamasifazlalik anlamina gelmez, Internet trafigi dikkatle incelenirse CRC korumali paketler arasindaki atlamalardan kaynaklanan yazilim ve donanim hatalarinin oldugu gözükür. Iste bu hatalarin cogunu 16 bitlik TCP saglamasi yakalamaktadir. Bu noktadan noktaya iletisimin bir prensibidir.

Yigilma kontrolü

TCP nin son parçasi yigilma kontrolüdür. TCP yüksek performas saglamak ve ag performansini ciddi derecede düsüren yigilmalarin engellenmesi için pek çok sayida mekanizma kullanmaktadir. Bu mekanizmalar tüm agdaki veri akisini kontrol eder. Veri akisini yigilmayi teziklememesi için belli bir oranin altinda tutulmasini saglar.

Veri gönderi için onaylama gönderici tarafindan , gönderici ve alici tarafindan ag sartlarinin üstü kapali sekilde yorumlanmasi için kullanir.

Bir zamanlayici ile birlestirilmis TCP alici ve göndericileri veri akis özelligini degistirebilirler. Bu akis kotrolü genelde yigilma kontrolü veya agda yigilmalari önlemeyi temsil eder.

TCP nin modern uygulamalari iç içine geçmis 4 algoritma barindirirlar. Yavas- baslangiç_ yigilmalardan uzak , hizli yeniden gönderim ve hizli kurtarma.

TCP pencere boyutu

TCP alici pencere büyüklügü alicinin baglanti süresince tamamlayabilecegi veri boyutudur. Gönderici tarafi ilk etapda en fazla bu büyüklük kadar veri gönderebilir daha sonra alicinin alindi onayini ve pencereyi güncellendi göndermeyi keser ve devem sayacini çalistirir. Devem sayaci TCP yi bir kilitlemeye karsi korur. Kilitleme göndericinin yeni pencere büyüklügünün güncellenmesini beklerken alicinin hiçbir veri göndermemesi durumunda meydana gelir. Devam sayaci sona erdiginde alicinin onay paketiyle birlikte yeni pencere büyüklügünü ve TCP nin kilitlemeye maruz kalmamasi için küçük bir veri paketi gönderir.

Pencere ölçeklendirme:

Yüksek bant genisligi saglayan aglarin daha etkin kullanimi için daha büyük TCP

pencere büyüklügü kullanilmalidir.TCP pencere alani veri akisini kontrol eder ve

2 ile 65.535 byte arasinda degisen araliktaki boyutlara sahiptir.Pencere büyüklügünün

asilamadigi durumlarda ölçeklendirme faktörü kullanilir.Iste TCP pencere ölçegi

seçenegi en büyük pencere boyutunu 65.535’den 1GB’a kadar yükseltmek içn

kulanilan bir seçenektir.Büyük boyutlarda pencer kullanimi TCP tuning adiverilen

yüksek bant genisligi ve düsük gecikmeli bir TCP’yi tanimlayan tekniklerin bir parçasidir.

Pencere ölçegi seçenegi sadece 3 asamali yapilan tokalasma sirasinda kulanilabilir.Bu

pencere ölçegi 16 bitlik pencere alaninin kaç bit sola kaydirildigini gösterir.Bu

pencere seçenegi 0 ile 14 arasindaki degerlerde olabilir.

Çogu yönlendirici ve güvenlik duvari iletim esnasinda pencere ölçeklendirme faktörünü yeniden yazar. Bu durum alici-gönderi taraflarinda farkli farkli pencere büyüklügüne sebep

olabilir. Sonuç ise çok yavas ve istikrarsiz bir ag trafigin ortaya çikmasidir.Bu problem kirik-bagli yönlendiricilerin arkasindaki alici ve gönderici sitelerde görülebilir.

Baglantinin Sonlandirilmasi:

Baglanti sonlandirma adimi genelde 4 asamali tokalasmada kullanilir.Her bir baglantiyi birbirinden bagimsiz olarak sonlandirir.Bir nokta baglantisini sonlandirmak isterse diger taraftaki noktanin ACK ile onaylamasi için bir FIN paketi gönderir.Bu yüzden, baglantinin sonlanmasi içinheruç noktadan bir çift FIN ve ACK segmenti gerekir.

Eger bir uç baglantiyi sonlandirdiysa fakat diger ucu sonlandirmadiysa baglanti “Yari açik” bir sekil alir. Bu sekilde bir taraf sonlandirmayi yaptiysa baglanti araciligiyla veri gönderemez fakat diger ise taraf veri gönderebilir.

3 asamali tokalasmada baglanti A ucunun FIN göndermesi ve B ucunun FIN+ACK ile onaylamasi ile sonlanabilir. Ve bu genelde kullanilan bir metoddur.

Iki ucun ayni anda FIN göndermesi ile sonlandirma olabilir.Bu durum FIN/ACK siralamasinin iki yönde ayni anda geçeklesmesiyle 2 asamali tokalasmada olabilir.

26 Aralık 2007 Çarşamba

İşletim Sistemleri Sürümleri

İÇİNDEKİLER
AÇIKLAMALAR ii
GİRİŞ 1
ÖĞRENME FAALİYETİ - 1 3
1. WINDOWS 9x AİLESİ 3
1.1. Windows 9x İşletim Sistemleri 3
1.2. Açılış Dosyaları 7
UYGULAMA FAALİYETİ 8
ÖLÇME VE DEĞERLENDİRME 9
ÖĞRENME FAALİYETİ - 2 10
2. WINDOWS NT/2000 AİLESİ 10
2.1. Windows 9x'den Farkları 10
2.2. Açılış Dosyaları 11
UYGULAMA FAALİYETİ 12
ÖLÇME VE DEĞERLENDİRME 13
ÖĞRENME FAALİYETİ - 3 14
3. WINDOWS XP AİLESİ 14
UYGULAMA FAALİYETİ 15
ÖLÇME VE DEĞERLENDİRME 16
ÖĞRENME FAALİYETİ - 4 17
4. LİNUX AİLESİ 17
4.1. Linux İşletim Sistemleri 17
4.2. Windows İşletim Sisteminden Farkları 18
4.3. Linux Masaüstü 18

4.3.1. Kontrol Merkezi 19
4.3.2. Sistem Menüsü 20
4.3.3. Uygulamalar Menüsü 20
4.3.4. Ağ Dizinleri 21
4.4. Açılış Dosyaları 21
UYGULAMA FAALİYETİ 23
ÖLÇME VE DEĞERLENDİRME 24
MODÜL DEĞERLENDİRME 25
CEVAP ANAHTARLARI 26
ÖNERİLEN KAYNAKLAR 27
KAYNAKÇA 28
i

AÇIKLAMALAR

KOD 481BB0022
ALAN Bilişim Teknolojileri
DAL/MESLEK Alan Ortak
MODÜLÜN ADI İşletim Sistemleri Sürümler
MODÜLÜN TANIMI İşletim sisteminin farklı sürümleri arasındaki kullanım farklılıklarının bilinmesi ve gerektiğinde farklı işletim sistemlerinin kullanılabilmesi ile ilgili öğrenme materyalidir.
SÜRE 40/16
ÖN KOŞUL İşletim Sistemleri Destek modülünü almış olmak.
YETERLİK İşletim sistemlerini tanımak
MODÜLÜN AMACI Genel Amaç
Gerekli ortam sağlandığında, işletim sistemlerinin farklı sürümleri arasındaki farklılıklarını bilecek ve gerektiğinde farklı işletim sistemlerini ve sürümlerini kullanabileceksiniz.
Amaçlar
Windows9x işletim sistemini yeterli bir şekilde kullanabileceksiniz. > Windows 2000 işletim sistemini yeterli bir şekilde kullanabileceksiniz. > Windows XP işletim sistemini etkin bir şekilde kullanabileceksiniz. Linux işletim sistemini tanıyıp temel seviyedeki bazı özelliklerini kullanabileceksiniz.
EĞİTİM ÖĞRETİM ORTAMLARI VE DONANIMLARI Bilgisayar laboratuarı ve bu ortamda bulunan; ilgili işletim sistemlerini çalıştırabilecek konfigürasyona sahip bilgisayar, yazıcı, bilgisayar masaları, lisanslı işletim sistemi programları.
ÖLÇME VE DEĞERLENDİRME Her faaliyet sonrasında o faaliyetle ilgili değerlendirme soruları ile kendi kendinizi değerlendireceksiniz. Modül içinde ve sonunda verilen öğretici sorularla edindiğiniz bilgileri pekiştirecek, uygulama örneklerini ve testleri gerekli süre içinde tamamlayarak etkili öğrenmeyi gerçekleştireceksiniz. Sırasıyla araştırma yaparak grup çalışmalarına katılarak ve en son aşamada alan öğretmenlerine danışarak ölçme ve değerlendirme uygulamalarını gerçekleştirin. Öğrenci ürün dosyası tutulması tavsiye edilir.
ii

GİRİŞ
Sevgili Öğrenci,
İşletim sistemleri, bilgisayar bilimleri kapsamındaki en temel konulardan birini oluşturmaktadır. İşletim sistemleri, bilgisayar sistemlerinin gelişmesine paralel olarak gelişme göstermiştir. Çünkü yeni gelişen bilgisayar mimarisi, yeni istekler ve ihtiyaç duyulan güvenliğe göre işletim sistemleri gelişmiştir.
Merkezi işlem birimi bir bilgisayar sisteminin en temel bileşenidir, aynı şekilde bilgisayar sistemlerindeki disk, yazıcı, disket, ana bellek vs. gibi giriş çıkış üniteleri bilgisayarın donanım kısımlarını oluşturmaktadır.
Yazılım ise hem bilgisayar sistemini oluşturan donanım birimlerinin yönetimini sağlayan hem de kullanıcıların diğer işlerini (yazı yazma, elektronik tablolama, sunum hazırlama, resim düzeltme vs.) yapması için gerekli olan programlardır. Yazılım olmaksızın bir bilgisayar sistemi; bir takım elektronik kartlar, kablolar ve mekanik bazı parçalardan ibaret bir cihazdır.
İşletim sistemleri kullanıcı ile bilgisayar arasında bir köprü görevi yürüten ve donanıma en yakın yazılımdır. Bir bilgisayar sistemi, üzerine işletim sistemi (Operating System) ve onun üzerine de diğer yazılımların yüklenmesi ve çalıştırılmasından sonra gerekli işlevleri yerine getirebilmektedir. Bu nedenle işletim sistemleri bilgisayarla ilgili öğrenilmesi gereken en temel konulardan biridir.
1
Bu modül sonunda; güncel işletim sistemi yazılımlarının farklı sürümlerini tanıyacak ve kullanabileceksiniz. Ayrıca bilgisayarınızın donanım kapasitesine en uygun olan işletim sistemini seçebileceksiniz.


2
2

ÖĞRENME FAALİYETİ-1
J

Windows9x işletim sistemini yeterli bir şekilde kullanabileceksiniz.
ARAŞTIRMA
Bu faaliyet öncesinde hazırlık amaçlı olarak şu işlemleri internette tarama yoluyla veya bilgisayar şirketlerindeki çalışanlarla görüşme yoluyla yapmalısınız.
> Windows 9x (Windows 95/98) işletim sistemleriyle gelen yenilikleri araştırınız.
> Windows 98 işletim sistemini kurabilmek için hangi donanım özelliklerine
sahip olmak gerekir? Araştırınız .
1. WINDOWS 9x AİLESİ
1.1. Windows 9x İşletim Sistemleri
Her bilgisayara en az bir tane işletim sistemi kurulmak zorundadır. Çünkü işletim sistemi yazılımı olmadan bilgisayarımızı kullanamayız. İlk işletim sistemlerinde grafikler olmadan, komutlar yazılarak işlemler yapılırken Windows 9x (Windows 95 ve Windows 98) işletim sistemleriyle birlikte, işletim sistemlerinde grafik kullanıcı arayüzü (GUI - Graphic User Interface) kullanılarak işlemler yapılmaya başlanmıştır. Grafik arayüzlü işletim sistemlerini kullanmak, daha önceki komut satırından çalışan işletim sistemlerini kullanmaktan daha kolaydır.
Resim 1.1: Windows 98 grafik kullanıcı arayüzü
Windows 98'deki "Komut İstemi" programına komutlar yazarak da bilgisayar kullanabilirsiniz. Fakat sürekli komut yazmanın zorluğunu yaşadıkça "Grafik Kullanıcı Arayüzü" kullanımının rahatlığını daha iyi hissedeceksiniz.

3
3

Windows 95/98 kullanıcıları bilgisayarlarına Windows 2000/XP programlarını yüklediklerinde kullanımda büyük güçlük çekmezler. Kullanıcıların sonraki sürümlere rahat uyum sağlaması açısından Windows sürümleri görsel olarak öncekilere benzemektedir. Bununla birlikte sonraki sürümlerde öncekilerde olan kimi bileşenlerin kaldırılması, yeni bileşenlerin eklenmesi, yeni gruplandırmalar yapılması gibi nedenlerle görsellikte kimi değişiklikler kaçınılmazdır. Fakat bu değişimleri, (Programlara farklı menülerden ulaşma, kimi programlardaki isim değişiklikleri gibi) kullanıcı kısa sürede öğrenebilmektedir.
Windows 98 işletim sisteminde gelişmiş grafik arayüzü sunulmazken, windows XP sürümünde efektli gelişmiş grafik arayüzleri beraber gelmektedir.
Yeni sürüm işletim sistemlerinin gerektirdiği sistem gereksinimi önceki sürümlerden farklıdır. Yeni sürümler daha üstün bilgisayar donanım özellikleri gerektirirler. Yeni sürümler sabit diskte daha fazla alana, hafıza miktarına, işlemci özelliğine vb. ihtiyaç duyarlar.

SİSTEM BİLEŞENİ MİNİMUM DONANIM GEREKSİNİMİ
İşlemci 486DX 66 veya daha hızlı işlemci. Pentium işlemciler tavsiye edilir.
Bellek 16 MB hafıza. 24 MB tavsiye edilir.
Boş Sabit Disk Alanı FAT16 sürücü üzerinde Windows 98'in tam sürümü 225 MB alan gerektirir. Fakat yüklediğiniz bileşenlere ve bilgisayar donanımlarınıza bağlı olarak 165 ile 355 MB arasında sabit disk alanı gerekir.
FAT32 sürücü üzerinde Windows 98'in tam sürücü 175 MB alan gerektirir. Ancak yüklediğiniz bileşenlere ve bilgisayar donanımlarınıza bağlı olarak 140 ile 255 MB arasında sabit disk alanı gerekir.
Sürücü 3.5 inç disket sürücüsü
Ekran Kartı VGA veya daha yüksek çözünürlük. 16-bit veya 24-bit renk SVGA tavsiye edilir.
Klavye,fare Gerekli.
Tablo 1.1: Windows 98 için sistem gereksinimi

SİSTEM BİLEŞENİ MİNİMUM DONANIM GEREKSİNİMİ
İşlemci 133 Mhz veya daha yüksek Pentium uyumlu işlemci. Tek ve çift çekirdekli işlemciyi desteklenir.
Bellek En azından 64 MB hafıza.
Boş Sabit Disk Alanı 2 GB sabit disk.
Sürücü CD-ROM veya DVD-ROM sürücü
Ekran Kartı VGA veya daha yüksek çözünürlüğe sahip ekran kartı ve ekran
Klavye,fare Gerekli.
Tablo 1.2: Windows 2000 Professional için sistem gereksinimi

4
4

SİSTEM BİLEŞENİ MİNİMUM DONANIM GEREKSİNİMİ
İşlemci 233 Mhz hızlı çift veya tek çekirdekli işlemci. 300 Mhz veya daha yüksek hızlı işlemci tavsiye edilir. Pentium/Celeron ailesi işlemcileri, AMD K6/Athlon/Duron ailesi şlemcileri ve diğer uyumlu işlemciler
Bellek 64 MB hafıza. Daha yüksek kapasiteli hafızalar tavsiye edilir.
Boş Sabit Disk Alanı 1.5 GB sabit disk alanı
Sürücü CD-ROM veya DVD-ROM sürücü
Ekran Kartı SVGA (800 x 600) veya daha yüksek çözünürlüğe sahip ekran kartı ve ekran
Klavye,fare Gerekli.
Tablo 1.3: Windows XP Professional için sistem gereksinimi
Her işletim sistemi sabit diskte belirli bir alan kaplar. İşletim sisteminin yeni sürümlerine kullanıcıların güncel isteklerini karşılamak amacıyla yeni özelliklerin, programların eklenmesi, onların sabit diskte kapladıkları alanı artırır. Yani Windows XP, Windows 2000'den daha büyük, Windows 2000'de Windows 98'den daha büyük sabit disk alanı gerektirir. Yeni eklenen programlara örnek vermek gerekirse Windows 98'de olmayan sıkıştırma programı Windows XP'yle beraber gelmektedir. Diğer bir örnek, Windows 2000'de olmayan CD-yazma programı Windows XP işletim sistemi bünyesinde gelmektedir.
Yeni sürümler her zaman daha fazla hafızaya ihtiyaç duyarlar. Örneğin, Windows 98 32 MB hafızaya sahip bilgisayarda rahat çalışırken, Windows XP'yi bu bilgisayara yükleyemeyiz bile. Çünkü Windows XP minimum 64 MB hafıza ister. 64 MB hafızalı bilgisayarda bile XP yavaş çalışır.
İşletim sistemiyle birlikte gelen programlar yeni sürümlerinde daha fazla özellik barındırır. Örneğin Windows 98'de Paint programı birkaç tane resim biçimini (format) tanırken Windows XP'deki Paint programı çok daha fazla resim biçimini desteklemektedir.
İşletim sistemlerinin farklı sürümlerinde bir işlem farklı yollardan yapılabilmektedir. Örneğin, F klavye ile Q klavye arasındaki geçişi yapmak için Windows 98'de Denetim Masasından Klavye simgesi çalıştırıldığında gelen pencere kullanılırken, Windows XP'de denetim masasından bölge ve dil Seçenekleri simgesi çalıştırıldığında gelen pencere kullanılır.

5
5


Resim 1.2: Windows 98 denetim masasında klavye simgesi

Resim 1.3: Windows XP denetim masasında bölge ve dil seçenekleri simgesi
İşletim sistemlerinde donanımları kullanmamız için donanıma ait sürücü (driver) programını yüklememiz gerekir. İşletim sistemleri piyasadaki donanımların sürücülerini içinde bulundururlar. İşletim sistemleri sadece piyasaya sürüldükten sonra üretilen bazı donanımların sürücülerini bulundurmazlar. Bu donanımlarda üreticilerinin sağladığı sürücü programları kurularak kullanılabilir. İşte bu sürücü programları konusunda da işletim sistemleri sürümlerinde farklılıklarla karşılaşırız. Windows 98 piyasaya çıktıktan sonra üretilen donanımların sürücülerini Windows 98'e ayrıca yüklemek gerekirken bu donanımların sürücüleri Windows XP'de bulunduğundan ayrıca yüklemeye gerek yoktur. Örneğin, 2001 yılında satın aldığınız dijital fotoğraf makinesini Windows 98'e fotoğraf makinesiyle birlikte verilen sürücü CD'sindeki sürücüyle ayrıca tanıtmanız gerekir. Fakat Windows XP'de fotoğraf makinesine ait sürücü yüklü olduğundan ayrıca tanıtmanıza gerek kalmaz. XP kendi içindeki sürücüyü kullanarak fotoğraf makinenizi tanır. Benzer durum USB belleklerde de karşınıza çıkacaktır. USB belleğinizi Windows 98'de tanıtmak zorunda kalırken Windows XP USB belleğinizi doğrudan tanır.

6
6

Önceki ve sonraki sürümler arasındaki dikkat edilmesi gereken bir diğer husus program uyumluluğudur. Windows 98'de sorunsuz çalışan bir program Windows XP'de çalışmayabilir, çeşitli hatalar üretebilir veya kimi işlemleri gerçekleştirmeyebilir. Önceki sürümde kullanılan bir programı sorunsuz çalıştırmak için Windows XP'deki "Program Uyumluluğu" özelliği kullanılabilir. Programın simgesi üzerinde sağ tık/Özellikler/ Uyumluluk komutlarıyla Uyumluluk penceresine ulaşılabilinir.

Resim 1.4: Uyumluluk penceresi
1.2. Açılış Dosyaları
Windows 98 işletim sisteminin açılış dosyaları ana dizinde (root directory) yer alır. Bu dosyaların çalışma sırası şu şekildedir:
1. IO.SYS
2. MSDOS.SYS
3. CONFIG.SYS
4. COMMAND.COM
5. AUTOEXEC.BAT

Resim 1.5: Açılış dosyaları
7


(
UYGULAMA FAALİİYETY
Aşağıdaki uygulamada sizden Windows 98 işletim sistemini bilgisayara kurmanız istenmektedir. İşletim Sistemleri Kurulum modülünde Windows XP'nin kurulumu anlatılmıştır. Bu uygulama faaliyetinde, önceki bilgilerinizden hareketle kendi başınıza, karşılaştığınız farklılıklarda yorumlar yaparak Windows 98'i kurmanız hedeflenmektedir.

İşlem Basamakları Öneriler
1. Sanal makine yazılımını (ör:Wmware) bilgisayarınıza kurunuz. > Sanal makine kurabilmek için en az 512 mb RAM'iniz olması gerekir.
2. Windows 98 işletim sistemini sanal makineye kurunuz. > Windows 98, Windows XP'ye benzer şekilde kurulmaktadır. Kurarken ekrana gelen pencerelerdeki bilgileri okuyunuz. Gerektiğinde öğretmeninizden yardım alınız.
3. İşletim sistemini sanal makineden başlatınız.
8

ÖLÇME VE DEĞERLENDİRME J
A- OBJEKTİF TESTLER (ÖLÇME SORULARI) Doğru/Yanlış Soruları
Aşağıdaki ifadeleri okuyunuz ve doğru olanlar ifadelerin önündeki boşluğa "D", yanlış olan ifadelerin önündeki boşluğa "Y" harfi koyunuz.
1. ( ) İşletim sistemi kullanıcı ile bilgisayar arasında köprü görevi yürüten ve
donanıma en yakın yazılım türüdür.
2. ( ) İstediğimiz işletim sistemini donanıma bağlı olmaksızın bilgisayarımıza
kurabiliriz.
3. ( ) Windows 98 işletim sistemi sadece yazı (text) modunda çalışan yani komut
satırından çalışan bir işletim sistemidir.
4. ( ) Tüm işletim sistemlerinin sistem gereksinimleri aynıdır.
5. ( ) Bir donanımın çalışması için o donanımın sürücüsünün yüklenmesi gereklidir.
6. ( ) Windows 98 NTFS sürücü üzerinde yüklenebilir.
7. ( ) Windows 98'in sabit diskte kapladığı alan Windows XP'den daha büyüktür.
8. ( ) İşletim sistemlerinin yeni sürümleri eski sürümlerinden daha az hafıza
gerektirirler.
9. ( ) Windows 98 işletim sisteminde sorunsuz çalışan bir program Windows XP'de
çalışmayabilir.
10. ( ) Windows XP, 32 MB hafızaya sahip bir bilgisayarda hızlı bir şekilde çalışır.

9
9

ÖĞRENME FAALİYETİ-2
Windows2000 işletim sistemini yeterli bir şekilde kullanabileceksiniz.
ARA ŞTIRMA
Bu faaliyet öncesinde hazırlık amaçlı olarak şu işlemi internette tarama yoluyla veya bilgisayar şirketlerindeki çalışanlarla görüşme yoluyla yapmalısınız.
> Windows NT/2000 işletim sistemi ile birlikte gelen yenilikleri araştırınız.
2. WINDOWS NT/2000 AİLESİ
Windows 2000, kendinden önceki işletim sistemlerine göre daha güvenilir, daha hızlı, birden fazla kullanıcı ile çalışmaya imkân veren, görsel kullanıcı arayüzlü bir işletim sistemidir. Windows NT (Network) sunucu bilgisayarlar için üretilmiş bir işletim sistemidir. Windows 2000, Windows NT çekirdeği temel alınarak üretilmiştir. Microsoft, Windows NT'ye artık teknik destek vermemektedir. Windows 2000'in sunucu bilgisayarlar, ev ve iş bilgisayarları için sürümleri vardır
2.1. Windows 9x'den Farkları
Windows 2000 işletim sisteminin Windows 9x'e göre farklarını kısaca şu şekilde sıralayabiliriz:
> Daha kolay kullanılabilen arabirim (arayüz)
> Yeniden düzenlenmiş denetim masası ve bilgisayar yönetimi gibi araçlar
> USB, IEEE 1394 (Firewire) teknolojilere destek
> Geliştirilmiş çoklu ortam desteği
> Yeni sürücü modelleri
> NT çekirdeği kullanması sayesinde Windows 9X'ten çok daha kararlı
çalışabilmesi
Windows NT ve Windows 2000 NTFS sistemini kullanır. Windows 98'le birlikte gelen tak çalıştır özelliği Windows 2000'de daha da geliştirmiştir.
10

2.2. Açılış Dosyaları
Windows 2000 işletim sisteminin açılış dosyaları, bilgisayardaki yerleri ve ne amaçla kullanıldıkları aşağıdaki tabloda gösterilmiştir.

Açılış dosyası Yeri Görevi
NTLDR C: NT çekirdeğini yükler
BOOT.INI C: İşletim sistemi seçeneklerini gösterir
BOOTSECT.DOS C: Sadece çift açılma varsa kullanılır.
NTDETECT.COM C: Bazı standart ve zorunlu donanım parçalarını araştırır
NTBOOTDD.SYS C: Sabit diskin kontrol kartı SCSI ise kullanılır
NTOSKRNL.EXE C:\Winnt\System32 Mikrokernel dosyası
HAL.DLL C:\Winnt\System32 Sistemin donanım bilgilerini içerir
SYSTEM registery key C:\Winnt\System32\Config Sistem kayıt anahtarları
Aygıt Sürücüleri C:\Winnt\System32\Drivers Aygıtların sürücü dosyaları
Tablo 2.1: Açılış dosyaları
11


(
UYGULAMA FAALİİYETYETİ

Aşağıdaki uygulamada sizden Windows 2000 işletim sistemini bilgisayara kurmanız istenmektedir. İşletim Sistemleri Kurulum Modülünde Windows XP'nin kurulumu anlatılmıştır. Bu uygulama faaliyetinde, önceki bilgilerinizden hareketle kendi başınıza, karşılaştığınız farklılıklarda yorumlar yaparak Windows 2000'i kurmanız hedeflenmektedir.

İşlem Basamakları Öneriler
Windows 2000 işletim sistemini sanal makineye kurunuz. > Windows 2000, Windows XP'ye benzer şekilde kurulmaktadır. Kurarken ekrana gelen pencerelerdeki bilgileri okuyunuz. Gerektiğinde öğretmeninizden yardım alınız.
İşletim sistemini sanal makineden başlatınız.
12

EÖLÇME VE DEĞĞERLENDERLENDİRME J
OBJEKTİF TESTLER (ÖLÇME SORULARI)
Doğru/Yanlış Soruları
Aşağıdaki ifadeleri okuyunuz ve doğru olanlar ifadelerin önündeki boşluğa "D", yanlış olan ifadelerin önündeki boşluğa "Y" harfi koyunuz.
1. ( ) Windows NT/2000 işletim sistemi NTFS yi kullanır.
2. ( ) Windows 2000, Windows 98'den önce piyasaya sürülmüştür.
3. ( ) Windows 2000, NT çekirdeğini kullanır.
4. ( ) Windows 2000, USB desteğine sahiptir.
13

ÖĞRENME FAALİYETİ-3
Windows XP işletim sistemini etkin bir şekilde kullanabileceksiniz.
ARA ŞTIRMA
Bu faaliyet öncesinde hazırlık amaçlı olarak şu işlemi yapmalısınız.
> Windows XP işletim sistemiyle birlikte gelen yenilikleri araştırınız.
3. WINDOWS XP AİLESİ
Windows XP, Microsoft Windows'un Windows 2000 ve Windows Millennium 'dan (Windows ME) sonraki sürümüdür. Bir yandan Windows 2000'in güvenlik, yönetilebilirlik ve güvenilirlik gibi güçlü özelliklerini; diğer yandan Windows 98'in ve Windows Me'nin "Tak ve Kullan", basitleştirilmiş kullanıcı arayüzü ve destek hizmetleri gibi özelliklerini temel almaktadır. Windows XP, ev kullanıcıları ve iş kullanıcıları için iki farklı sürümde sunulmaktadır: Windows XP Home Edition ve Windows XP Professional Edition.
Windows XP'yle beraber birçok yenilik gelmiştir. Aşağıdaki satırlarda bu yeniliklere değinilecektir. Windows XP işletim sistemiyle birlikte gelen, Windows Güvenlik Duvarı, "Otomatik Güncelleştirme" ve virüse karşı koruma yazılımını içeren "Güvenlik Merkezi", bilgisayarınızı virüslere ve diğer güvenlik tehditlerine karşı korumanıza yardımcı olur.
Uzak masaüstü programı, kişinin başka bir bilgisayardayken, kendi bilgisayarına erişmesini sağlar. Örneğin, bir çalışan, evindeki bilgisayarda uzak masaüstü programını kullanarak iş bilgisayarına bağlanabilir, bu bilgisayardaki tüm uygulamalarına, dosyalarına ve ağ kaynaklarına ulaşabilir.
Uzaktan yardım programıyla bilgisayarınızda bir sorun olduğunda bilgisayar uzmanına veya bir arkadaşınıza bilgisayarınıza erişip sorunu çözmeye çalışmasına izin verebilirsiniz. Yardım eden kişi, internet vasıtasıyla bilgisayar ekranınızı görür; sohbet kutusu yoluyla iletişim kurar ve sorunu çözmeye çalışır.
Önceki sürümlerde olmayan CD yazma programıyla ayrı bir CD yazma programı yüklemeden CD'lerinizi yazabilirsiniz. Windows Movie Maker programıyla filmlerinizi düzenleyebilirsiniz.
14


(
UYGULAMA FAALİİYETYETİ

Aşağıdaki uygulamada sizden Windows XP işletim sistemini bilgisayara kurmanız istenmektedir. İşletim Sistemleri Kurulum modülünde Windows XP'nin kurulumu anlatılmıştır. Bu uygulama faaliyetinde, önceki bilgilerinizden hareketle kendi başınıza, Windows XP'yi kurmanız hedeflenmektedir.

İşlem Basamakları Öneriler
Windows XP işletim sistemini sanal makineye kurunuz > Windows XP'yi kurarken ekrana gelen pencerelerdeki bilgileri okuyunuz. Gerektiğinde öğretmeninizden yardım alınız.
İşletim sistemini sanal makineden başlatınız.
15

ÖLÇME VE DEĞERLENDİRME J
OBJEKTİF TESTLER (ÖLÇME SORULARI)
Doğru/Yanlış Soruları
Aşağıdaki ifadeleri okuyunuz ve doğru olanlar ifadelerin önündeki boşluğa "D", yanlış olan ifadelerin önündeki boşluğa "Y" harfi koyunuz.
1. ( ) Görsel işletim sistemleri kullanım rahatlığı sağlamalarına rağmen daha fazla
bellek alanı kullanırlar.
2. ( ) Windows XP'nin sadece ev (home) sürümü vardır.
3. ( ) Uzaktan yardım programını kullanarak bilgisayarınızda sorun olduğunda başka
birisinden yardım alabilirsiniz.
4. ( ) Windows XP işletim sistemindeki yeniliklerden biri CD yazma programıdır.
5. ( ) Windows Movie Maker, Windows 98 işletim sistemiyle birlikte gelen bir
programdır.
6. ( ) Windows Güvenlik Merkezi programı bilgisayarımızı virüs ve benzeri tehditlere
karşı korumamıza yardımcı olur.
16

ÖĞRENME FAALİYETİ-4
J
Linux işletim sistemini tanıyıp temel seviyedeki bazı özelliklerini kullanabileceksiniz.
ARAŞTIRMA
Bu faaliyet öncesinde hazırlık amaçlı olarak şu işlemleri internette tarama yoluyla veya bilgisayar şirketlerindeki çalışanlarla görüşme yoluyla yapmalısınız.
> Linux işletim sisteminin Türkiye'deki kullanım yoğunluğunu araştırınız.
> Linux işletim sisteminin temel dağıtımlarını ve Linux tabanlı yerli işletim
sistemlerimizi araştırınız.
4. LİNUX AİLESİ
4.1. Linux İşletim Sistemleri
Linux, serbestçe dağıtılabilen, çok görevli, çok kullanıcılı bir UNIX işletim sistemi türevidir. Linux, internet üzerinde ilgili ve meraklı birçok kişi tarafından ortak olarak geliştirilmekte olan ve başta IBM-PC uyumlu kişisel bilgisayarlar olmak üzere birçok platformda çalışabilen ve herhangi bir maliyeti olmayan bir işletim sistemidir.
UNIX 70'li yılların ortalarında çok kullanıcılı bir işletim sistemi olarak geliştirilmiştir. Zaman içerisinde yayılmış ve birçok türevi ortaya çıkmıştır. UNIX ismi UNIX Research Laboratories INC şirketinin tescilli markası olduğundan dolayı birçok şirket, aynı temele dayanan işletim sistemleri için değişik isimler kullanmışlardır.
Linux, temel olarak Finlandiya Üniversitesinde öğrenci olan Linus Torvalds'ın ve internet üzerinde meraklı birçok yazılımcının katkıları ile geliştirilmiştir. Linux işletim sistemi açık kaynak kodludur (GNU/GPL lisansı). İşletim sisteminin her aşaması açık olarak internet üzerinde yayınlanmakta, dünyanın dört bir yanında kullanıcılar tarafından test edilmekte, hataları ve eksiklikleri tespit edilerek düzeltilmekte ve geliştirilmektedir. Zaman zaman bu deneme aşamaları belirli bir noktada durdurulur ve güvenilir bir işletim sistemi sunulup geliştirme için ayrı bir seriye devam edilir. Geliştirmede yer alan bu açıklık Linux'un en büyük avantajlarından biridir. Gelişimi evrimseldir, hatalar anında kullanıcılar tarafından tespit edilip rapor edilmekte ve birçok kişinin katkısıyla düzeltilmektedir. Bazı işletim sistemi sürümleri saatler içerisinde güncellenebilmektedir.
17


Linux son yıllarda hızlı bir gelişme göstermiş, çeşitli ülkelerden birçok kullanıcıya erişmiş ve yazılım desteği günden güne artmıştır. Değişik kuruluşlar Linux işletim sistemi ve uygulama yazılımlarını bir araya getirerek dağıtımlar oluşturmuşlar ve kullanımını yaygınlaştırmışlardır. Bu dağıtımlardan bazıları; Pardus, Turkix, Fedora, Suse, Ubuntu, Mandrake, Xandros gibi isimlerle kullanıcılara sunulmaktadır.
Windows işletim sisteminde yapılabilecek tüm işlemler Linux'te de yapılabilir. Linux'te bulunan programlar Windows'takilerle aynı görevi yapmaktadır; fakat farklı isimleri vardır.
4.2. Windows İşletim Sisteminden Farkları
> Linux işletim sistemi açık kaynak kodlu ve ücretsizdir. Windows işletim sistemi
ise lisans ücreti ödenerek kullanılabilir ve kaynak kodlarına erişilemez.
> Linux işletim sisteminde güvenlik açıkları daha hızlı kapatılabildiği için sunucu
(server) hizmeti veren kuruluşlar tarafından Windows'a göre daha çok tercih
edilmektedir.
> Linux işletim sisteminin diğer işletim sistemlerinde olan teknik destek, dağıtım
ve dokümantasyon gibi konularda eksikleri vardır.
> Linux işletim sisteminde işletim sisteminin temelini oluşturan çekirdek,
kullanıcı tarafından da derlenebildiği için, bu derleme sırasında sadece kullanım
amacına yönelik alt programlar seçilebilir ve donanıma uygun hale getirilebilir.
Böylece daha performanslı bir işletim sistemi elde edilir. Windows'ta ise böyle
bir imkan yoktur.
> Linux işletim sisteminin çalışma biçimi nedeniyle herhangi bir virüs bulaşması
durumunda virüsün bilgisayarın tamamına yayılması olanaksızdır.
> Linux işletim sisteminde zaman zaman donanım desteği problemleri
yaşanmaktadır. Windows'ta bu oran biraz daha düşüktür.
4.3. Linux Masaüstü
Linux işletim sisteminde kullanılabilecek birçok masaüstü ortamı vardır. Bunlardan bazılarını KDE, GNOME, XFce, XPde olarak sayabiliriz. Kullanıcı isterse bu masaüstü ortamlarından birini kurarak istediği masaüstüyle çalışabilir. Resim 4.1'de Linux dağıtımlarından Ubuntu ile birlikte standart olarak gelen GNOME masaüstü görülmektedir.
18


Resim 4.1: GNOME masaüstü
GNOME (GNU Network Object Model Environment), içeriğinin tamamı açık kaynak kodlu yazılımların oluşturduğu bir GNU projesidir. Pek çok işletim sisteminde çalışabilen GNOME, kolay kullanımlı yazılımları (uygulama geliştirme, oyun, eğlence, kişisel bilgi yönetim sistemi, e-posta programları, internet uygulamaları vb.) içinde barındırır.
Resim 4.2: Ubuntu Kontrol Merkezi
19
Linux işletim sistemindeki kontrol merkezi Windows işletim sisteminde yer alan Denetim Masası ile aynı görevi yapmaktadır. GNOME masaüstü kullanılan Ubuntu dağıtımında kontrol merkezine erişmek için Sistem menüsünden, Yönetim seçilir. Kontrol merkezi kullanılarak işletim sistemi ile ilgili birçok ayarlama yapılabilir.


Sistem menüsü altındaki seçenekler ile dosya yönetimi, görüntü ayarları (ekran koruyucu, arkaplan resmi, çözünürlük vb.) ağ ayarları, yardım, sistemi yeniden başlatma gibi işlemler yapılabilir.

Resim 4.3: Sistem menüsü

Resim 4.4: Uygulamalar menüsü
20
Linux işletim sistemiyle birlikte gelen bazı uygulamaların bağlantılarının yer aldığı menüdür. Bu menü içerisinde internet, ofis, oyun, ses ve video gibi başlıklar altında birçok uygulama yer almaktadır. Windows işletim sistemindeki başlat/programlar seçeneği ile aynı işi yapmaktadır.


Linux işletim sisteminde Ağ Sunucuları kullanılarak farklı işletim sistemlerindeki dosya ve dizinlere erişilebilir. Bunun için Samba adı verilen bir ağ sunucusu kullanılır. Samba Linux ve Unix işletim sistemleri ile Windows NT ve Windows 9X işletim sistemleri arasındaki iletişimi sağlayan bir uygulamadır. Bunun dışında ftp, http gibi sunucu hizmetleri de Sunucuya Bağlan seçeneği ile kullanılabilir.

Resim 4.5: Ağ dizinleri
4.4. Açılış Dosyaları
Linux işletim sisteminin açılış dosyaları /boot dizini altında yer almaktadır. Linux işletim sistemindeki dizin yapısı aşağıdaki gibidir:
> /boot: Çekirdek ve açılış dosyaları dizinidir. Sistem açılışını sağlayan grub veya
lilo programının dosyaları burada bulunur.
> /etc: Genel sistem ayar dosyalarını (kullanıcılar, gruplar, ağ ayarları) tutan
dizindir. Bu dizine denetim masası da diyebiliriz.
> /home: Kullanıcıların kişisel dosyalarının ve ayarlarının bulunduğu dosyalar bu
dizin altında bulunur. Bir diğer adı da kullanıcı ev dizinidir.
> /dev: Aygıt dosyaları dizinidir. Linux'ta tüm aygıtlar birer dosya olarak
tutulmaktadır. Örneğin /dev/modem dosyası adından da anlaşılacağı üzere
modemi ifade etmektedir.
> /tmp: Sistemin ve kullanıcıların geçici dosyalarının tutulduğu dizindir.
> /var: Sistemde bulunan kuyruk dosyalar (yazıcı ve sistem kayıt dosyaları gibi)
ve boyutları dinamik olarak değişen dosyaların tutulduğu dizindir.
21

>
>
>
>
>
>
>

/mnt: Sisteme bağlanmış olan (mount) aygıtların dizinidir. Disket sürücü, CD-ROM, USB Disk gibi aygıtlara bu dizin altından ulaşılabilir.
/lib, /usr/lib: Kitaplık (library) dosyaları dizinidir. Paylaşılan nesneler (Shared objects) bu dizinde tutulur. Salt koddan derlenerek sisteme yüklenecek yeni programlar burada mevcut dosyalar kullanılarak derlenir.
/usr/include: Programlama aracı olan C için başlık (header) dosyalarının tutulduğu dizindir.
/usr/local: İşletim sistemi kurulduktan sonra eklenen yerel (local) uygulamalar ve bileşenlerin dizinidir.
/proc: Çekirdek ayar dizinidir.
/bin, /usr/bin: Uygulamalarının çalıştırılabilir betiklerinin bulunduğu dizindir.
/sbin, /usr/sbin: Sistem yöneticisi tarafından kullanılan sistem programlar dizinidir. Sistemin bakımı ve genel ayarlamalar bu dizindeki programlar ile yapılır.


Şekil 4.1:Linux işletim sistemindeki dizin yapısı
22

UYGULAMA FAALİİYETY

İşlem Basamakları Öneriler
Linux dağıtımlarından birini sanal makineye kurunuz. > Linux dağıtımlarını internetten ücretsiz temin edebilirsiniz. Ör: Ubuntu Linux dağıtımı internet üzerinden dolduracağınız bir form ile adresinize ücretsiz olarak ulaştırılmaktadır. https://shipit.ubuntu.com/
Sistem menüsünden arka plan resmini değiştiriniz.
23

ÖLÇME VE DEÖLÇME VE DEĞĞERLENDERLENDİİRME R
OBJEKTİF TESTLER (ÖLÇME SORULARI)
Doğru/Yanlış Soruları
Aşağıdaki ifadeleri okuyunuz ve doğru olanlar ifadelerin önündeki boşluğa "D", yanlış olan ifadelerin önündeki boşluğa "Y" harfi koyunuz.
1. ( ) Linux işletim sistemi açık kaynak kodludur.
2. ( ) Linux işletim sistemi Windows işletim sistemleri ile karşılaştırıldığında
virüslere karşı daha savunmasızdır.
3. ( ) /home klasörü Linux işletim sisteminde aygıt dosyalarının yer aldığı dizindir.
4. ( ) Samba dosya sunucusu ile Windows işletim sistemi dosyalarına ağ üzerinden
erişilebilir.
24

MODÜL DEĞERLENDİRME
PERFORMANS TESTİ (YETERLİK ÖLÇME)
Modül ile kazandığınız yeterliği aşağıdaki kriterlere göre değerlendiriniz.

DEĞERLENDİRME KRİTERLERİ Evet Hayır
Sanal makine yazılımını kurdunuz mu?
Windows 98 işletim sistemini sanal makineye kurdunuz mu?
Windows 2000'i sanal makineye kurdunuz mu?
Linux işletim sistemini sanal makineye kurdunuz mu?
Sistem menüsünden arkaplan resmini değiştirdiniz mi?
DEĞERLENDİRME
Yaptığınız değerlendirme sonucunda eksikleriniz varsa öğrenme faaliyetlerini tekrarlayınız.
Modülü tamamladınız, tebrik ederiz. Öğretmeniniz size çeşitli ölçme araçlar uygulayacaktır. Öğretmeninizle iletişime geçiniz.
25

CEVAP ANAHTARLARI
ÖĞRENME FAALİYETİ-1 CEVAP ANAHTARI

Sorular Cevaplar
1 D
2 Y
3 Y
4 Y
5 D
6 Y
7 Y
8 Y
9 D
10 Y
ÖĞRENME FAALİYETİ-2 CEVAP ANAHTARI

Sorular Cevaplar
1 D
2 Y
3 D
4 D
ÖĞRENME FAALİYETİ-3 CEVAP ANAHTARI

Sorular Cevaplar
1 D
2 Y
3 D
4 D
5 Y
6 D
ÖĞRENME FAALİYETİ-4 CEVAP ANAHTARI
Sorular Cevaplar
1 D
2 Y
3 Y
4 D
Cevaplarınızı cevap anahtarları ile karşılaştırarak kendinizi değerlendiriniz.
26

ÖNERİLEN KAYNAKLAR
> ÜÇÜNCÜ Hayrettin, Windows XP ve Office 2003, Alfa Yayınları, 2005
> ÇUBUKÇU Faruk, WINDOWS XP, Alfa Yayınları, 2002
> AYFER Can Uğur, AYFER Ömer, KİM KORKAR LİNUX'TAN? , Pusula
Yayıncılık, Eylül 2003
27

KAYNAKÇA


>
>
>

http://egitek.meb .gov.tr/dersdesmer/DersDestek/dersdestekmerkezi/BilgKitap/A naSayfa.htm
http://tr.wikipedia.org/wiki/Windows_2000
http://www.cc .boun.edu.tr/training/doc/windows2000_tur.pdf
http: //www .muratyildirimoglu. com/makaleler/ntbootislemleri .htm
http://www.microsoft.com/turkiye/windowsxp/professional/urunbilgisi.asp
http://www.belgeler.org/lis/archive-tlkg-lis- 1g.html
http://seminer.linux.org.tr/konferanslar/ab-2000/linux-sistem-yonetimi.ppt
http: //seminer. linux.org .tr/seminer-notlari/masaustu/masaustu-ortami .html
http://www.gnome.org.tr/?p=gnomesss
http://sunsite.bilkent.edu.tr/pub/linux/linux-tr/lis/lis-1 .html
http://www.belgeler.org/howto/samba-sunucusu-nasil_samba-nedir.html
http: //www .istanbul. edu .tr/akademik/linux_nedir .php
Cisco It Essentials II - Network Operating Systems v1.1 dökümanlar
Cisco - It Essentials I-Pc Hardware And Software, v3.0 dökümanlar

28

Temel ALgoritmalar

İÇİNDEKİLER
İÇİNDEKİLER i
AÇIKLAMALAR ii
GİRİŞ 1
ÖĞRENME FAALİYETİ-1 3
1. SIRALAMA 3
.1. Ekleme Sıralaması 4
1.2. Balon Sıralaması 7
.3. Kabuk Sıralaması 8
.4. Hızlı Sıralama 10
1.5. Sıralama Algoritmaları 12
UYGULAMA FAALİYETİ 14
ÖLÇME VE DEĞERLENDİRME 15
ÖĞRENME FAALİYETİ-2 16
2. ARAMA 16
2.1. Sıralı (Ardışık) Arama 16
2.2. İkilik Arama 18
2.3. Kıyma (Hashing) Yöntemi 19

2.3.1. Kıyma Fonksiyonu 19
2.3.2. Kıyma Yönteminde Çakışmalar 20
2.3.3. Kıyma Yönteminde Arama 20
UYGULAMA FAALİYETİ 22
ÖLÇME VE DEĞERLENDİRME 23
ÖĞRENME FAALİYETİ-3 24
3. KOD İYİLEŞTİRME 24
3.1. Doğru Veri Yapısını Seçmek 24
3.2. Doğru Algoritmayı Seçmek 25
3.3. Kaynak Kodu İyileştirmek 25
UYGULAMA FAALİYETİ 29
ÖLÇME VE DEĞERLENDİRME 30
MODÜL DEĞERLENDİRME 31
CEVAP ANAHTARLARI 32
SÖZLÜK 33
KOD ÖRNEKLERİ 34
ÖNERİLEN KAYNAKLAR 42
KAYNAKÇA 43

i
i

AÇIKLAMALAR

KOD 481BB0028
ALAN Bilişim Teknolojileri
DAL/MESLEK Alan Ortak
MODÜLÜN ADI Temel Algoritmalar
MODÜLÜN TANIMI Sıralama ve arama ile ilgili program yazımı, kodu iyileştirme ile ilgili öğrenme materyalidir.
SÜRE 40/24
ÖN KOŞUL Veri Yapıları modülünü almış olmak.
YETERLİK Temel algoritmalar yapmak
MODÜLÜN AMACI Genel Amaç
Gerekli ortam sağlandığında, sıralama ve arama ile ilgili algoritmalar yazabilecek, programlamanın son aşaması olarak kodu iyileştirebileceksiniz. Amaçlar > Sıralama yapabileceksiniz. > Aramayapabileceksiniz. > Kodu iyileştirebileceksiniz.
EĞİTİM ÖĞRETİM ORTAMLARI VE DONANIMLARI Bilgisayar laboratuvarı ve bu ortamda bulunan; bilgisayar, yazıcı, bilgisayar masaları, kâğıt, kalem, lisanslı işletim sistemi programı ve akış diyagramı sembolleri ile ilgili panolar.
ÖLÇME VE DEĞERLENDİRME Her faaliyet sonrasında o faaliyetle ilgili değerlendirme soruları ile kendi kendinizi değerlendireceksiniz. Modül içinde ve sonunda verilen öğretici sorularla edindiğiniz bilgileri pekiştirecek, uygulama örneklerini ve testleri gerekli süre içinde tamamlayarak etkili öğrenmeyi gerçekleştireceksiniz. Sırasıyla araştırma yaparak, grup çalışmalarına katılarak ve en son aşamada alan öğretmenlerine danışarak ölçme ve değerlendirme uygulamalarını gerçekleştireceksiniz.
ii

GİRİŞ
Sevgili Öğrenci,
Her şeyden önce herkes bir programlama dilini öğrenebilir. Bilgisayar programlama yüksek bir zekâ ve matematik bilgisi gerektirmez. Sadece asla vazgeçmeme sabrı ve öğrenme isteği yeterlidir.
Programlama bir hünerdir. Bazı insanlar doğal olarak diğerlerinden daha iyidir, ama herkes pratik yaparak iyi olabilir. Başaramamaktan korkmak yerine, kendinizi bu maharete vererek, öğrenmek için uğraşın. Programlama eğlencelidir, fakat yanlış çalışma yöntemleriyle sinir bozucu olabilir ve zamanınızın boşa geçmesine neden olabilir. Bu sebeple bu modülleri takip ederek, en az sıkıntı ve en yüksek memnuniyet ile programlamayı öğreneceksiniz.
Bu modül ile kazanacağınız bilgiler sıralama ve arama ile ilgili program yazmak ve kodu iyileştirme yöntemlerini kullanmaktır. Modülü bitirdiğinizde anlamadığınız yerleri tekrar okuyup, uygulayınız.
1
Bu modül programlama temelleri modüllerinin ilk dört modülünde gösterilen konuların bir araya gelmiş hâlidir. Takıldığınız yerlerde eski modüllerdeki bilgilere (diziler, veri yapıları, döngüler...) geri dönerek uygun konulara göz atınız.


2
2

ÖĞRENME FAALİYETİ-1
Programda sıralama ile ilgili kısımları yazabileceksiniz.


ARAŞTIRMA
Bu faaliyet öncesinde hazırlık amaçlı aşağıda belirtilen araştırma faaliyetlerini yapmalısınız.

>
>
>

Kitaplığınızda karışık hâlde bulunan ansiklopedilerinizi veya dergilerinizi nasıl
sıralı hâle getirirsiniz? Düzenli olarak durmasının faydaları neler olabilir?
Bir yerden bir yere gitmek için birçok alternatifiniz olabilir. En avantajlı yolu
nasıl seçersiniz? En kısa yol bulma problemi ile ilgili
araştırma yapınız. Örneğin IETT sitesini ve "Google
Earth" programlarını inceleyebilirsiniz.
Doğada bulunan motifler, simetri ve fraktal hakkında
araştırma yapınız. Mesela Fibonacci sayı dizisi ile
ayçiçeğinin çekirdekleri aynı şekilde sıralanır.

1. SIRALAMA







Genellikle sıralama (sorting) işlemlerini veritabanında kullanırız. İsim bilgileri harf sırasında, telefon bilgileri alan kodlarına sıralı olarak istenebilir. Programımız bu olanakları sağlamalıdır. Çok gerekli olan bu işlemlerin algoritması karmaşık olabilir. Programınızın sıralama hızı da önemlidir. Örneğin 15 ismin sıralanması dakikalarca sürmemelidir.
3

Bu bölümde göreceğiniz bilgisayar bilimi çalışmaları, en kısa sürede en etkili şekilde sıralama için düzenlenmiştir.
Büyük O Gösterimi
Bir algoritmanın etkinliğini ölçmek için bilgisayar programcıları "Büyük O Gösterimi"ni tasarlamışlardır. Büyük O, bir algoritmanın yönetmesi gereken bilgi miktarının işlenme hızını ölçer.
Programcılar genellikle aynı miktardaki verinin, farklı algoritmalardaki işlem süresini bilmek isterler. Ortalama ve en kötü durum senaryosu üretirler. "Büyük O" sayesinde program için en uygun algoritma seçilir.
Mesela isimlerin sıralanacağı bir algoritmada, isimlerin sayısı programın hızını etkiler. Bu O(n) ile gösterilir. "O" sıralama büyüklüğü, "n" de nesne sayısıdır. "n" boyutundaki bir problemin çözümünde geçen adım sayısı T(n) = 4n2 - 2n + 2 olarak bulunabilir.
1.1. Ekleme Sıralaması
Ekleme sıralaması (insertion sort) aslında bir kart oyunundaki kartların sıralanmasına benzetilebilir. Dağınık durumdaki kartlardan iki tanesini elinize alırsınız, üçüncüsünü diğerlerinin yanında uygun bir yere eklersiniz. Her kart aldığınızda diğerlerinin içinden uygun olan yere eklersiniz. Böylece kartlar sıralı hâle gelir.
Bu yöntem ile basitçe program, karışık olan sayıları şu adımlar ile sıralar:
1. İlk iki eleman listeden alınıp, karşılaştırılır, gerekirse yerleri değiştirilir.
2. Bir sonraki eleman alınıp, önceki sıralı elemanlar içinde uygun yere eklenir.
3. İkinci adım sıralama bitene dek tekrar edilir.

Resim 1.1: Ekleme sıralaması yöntemi

4
4

Ekleme sıralamasında önce diziye* rastgele değerler yükleriz. Dizinin ikinci elemanından başlayan bir ana döngü içinde programı yazarız. Bir sonraki dizi elemanı geçici olarak bir değişkene aktarıldıktan sonra, bu değeri aktif dizi elemanı ile karşılaştırırız. Eğer "geçici değer" küçük ise başka bir döngüde, sıralı olan kısımda bu değerin yeri bulunur. Dizi sıralanana dek bu işlem devam eder.
"Ekleme Sıralaması" programının 5 elemanlı dizi için akış şeması aşağıdaki gibidir:

Resim 1.2: "Ekleme Sıralaması"nın ekran görüntüsü
: Ekleme sıralaması örneğinin sahte kodlarını yazınız.
Diziler, programlama dillerinde genellikle 0 veya 1 indis değeri ile başlarlar.
5


Resim 1.3: Ekleme sıralaması akış şeması

6
6

1.2. Balon Sıralaması
Balon sıralamasında (bubble sort) karışık durumdaki sayılar suyun içindeki balonlar gibi hareket ederek yerlerini bulurlar. Sayılar tekrarlı olarak kontrol edilerek yakın sayılar bir araya getirilir.
1. İlk iki eleman karşılaştırılır, gerekirse yerleri değiştirilir.
2. Listede bir sonraki elemana gidilerek, bir önceki eleman ile karşılaştırılır.
3. Liste sonuna kadar 2. adım tekrar edilir.
4. 1 ve 3. adım, tüm listenin sıralaması bitene dek tekrar edilir.

Resim 1.4: Balon sıralaması yöntemi
Önce veri listesi hazırlanır. Ön şartlı bir ana döngü içine, sınırları ilk elemandan sondan bir önceki elemana kadar olan bir döngü yapılır. Seçili elemanın değeri ile dizinin sonraki elemanının değeri karşılaştırılır. Eğer büyük ise iki dizi elemanı yer değiştirilir. Dizi sonuna kadar tarama ve yer değiştirme işlemleri devam eder. Bu döngü tekrar edilir ve değişiklik kalmamış ise ana döngü sonlandırılır.
: Balon sıralaması örneğinin sahte kodlarını yazınız.

Resim 1.5: "Balon sıralaması"nın ekran görüntüsü, 13 rakamına dikkat ediniz
7


Resim 1.6: Balon sıralaması akış şeması
: Her iki algoritmanın işlem adımlarını karşılaştırınız. Karışık listenin kaç adımda sıralandığını bulunuz.
: Dizilerin maksimum sınırlarını değiştirerek, kaç adımda sıralamanın bittiğini test ediniz.
1.3. Kabuk Sıralaması
Karışık durumdaki listede, en sondaki elemanı en başa getirmek zaman kaybıdır. Bu sebeple programcılar kabuk sıralaması (shell sort) algoritmasını geliştirmişlerdir.
"Böl ve yönet" mantığı ile tüm dizinin sıralanması yerine, küçük parçalar halinde dizi sıralanır. Küçük listeler sıralandıktan sonra, listeler birleştirilir.
8

Aslında kabuk sıralaması balon ve ekleme sıralamasını hızlandırmak için geliştirilmiştir. Yani farklı bir sıralama algoritması değildir.

1.
2. 3.
4.
5. 6.

Büyük liste küçük listelere bölünür.
Küçük liste balon veya ekleme sıralaması ile sıralanır.
Resim 1.7'deki örnekte 15 ve 29 rakamı sıralanmasına gerek yoktur. 16 ve 4
rakamı sıralanır, 78 ise işleme girmez.
3. adımda sadece 4 ve 16'nın yeri değişir, tekrar dizi küçük listelere bölünür.
Dizide 15, 78 ve 16 sıralanır, 4 ve 29 rakamlarının sıralanmasına gerek yoktur.
Liste sıralaması tamamlanana kadar 2 ve 4. adımlar tekrarlanır.


Resim 1.7: Kabuk sıralaması yöntemi
: Kabuk sıralaması sahte kodları aşağıdaki gibidir. Akış şemasını hazırlayınız.



Resim 1.8: Kabuk sıralaması ekran görüntüsü

9
9

Başla

= Veriler(i) = Veriler(i + X) = Geçici = 1
Bitir

Sayısal Dizi Veriler(5)
Sayısal i, Geçici, Dur, Geç, X, Sınır
Yaz; "Sıralanacak veriler:" Döngü i = 1, 5, 1
Veriler(i) = Rasgele(100) Yaz; Veriler(i) Döngü Bitti X = tamsayı(5 / 2) İken (X > 0)
Dur = 0 Sınır = 5 - X İken (Dur = 0)
Geç = 0
Döngü i = 1, Sınır, 1
Eğer (Veriler(i) > Veriler(i + X)) Geçici Veriler (i + X) Veriler(i + X) Geç
= 1
Eğer Bitti Döngü Bitti Sınır = Geç - X Eğer Geç = 0 İse Dur İken Bitti X = tamsayı(X / 2) İken Bitti
Yaz; "Sıralı liste:" Döngü i = 1, 5, 1
Yaz; Veriler(i) Döngü Bitti

İse

1.4. Hızlı Sıralama
Hızlı sıralama (quick sort) diğer yöntemlere göre daha çok kullanılır. Bu yöntemde listenin ortasından bir eleman alınır, elemanın değerine göre sol veya sağdaki değerler yer değiştirir.

Resim 1.9: Hızlı sıralama yöntemi
10

Liste yarıya bölündükten sonra, her ayrılan parça tekrar yarıya bölünür. Alt parçalar kendi aralarında sıralanır. Küçük parçalar birleştirilerek tüm listenin sıralı hali oluşturulur.
1. Listenin ortasından bir eleman seçilir. Seçili elemandan büyük olan elemanlar
sağa, küçük olanlar sola yer değiştirilir.
2. 1. adım listenin her yarısı için tekrar edilir.
3. Küçük listeler birleştirilir, sıralı liste elde edilir.
Kendini tekrar eden fonksiyonlara "tekrarlamalı - recursive" fonksiyon denir. Basit olarak fonksiyonun kendini çağırmasıdır. "Hızlı sıralama"da bu yöntem kullanılıyor. Bu sebeple sıralama için alt program yapmamız gereklidir.

Resim 1.10: Hızlı Sıralama ekran görüntüsü
: Hızlı sıralamanın sahte kodlarını yazınız.
? Akış şemasını test ediniz. Kendiniz 5 adet rastgele rakam seçerek, bu değerleri adım adım deneyiniz.
: Sıralama yönünü "büyükten küçüğe" doğru yapmak için akış şemasında ne gibi bir değişiklik yapılmalıdır?

Resim 1.11.a: Hızlı sıralamanın ana programı
11


Resim 1.11b: Hızlı sıralama yönteminin akış şeması
1.5. Sıralama Algoritmaları
Ekleme, balon, kabuk ve hızlı sıralama yöntemleri ile karışık listelerin değişik metotlar ile sıralanabildiğini gördünüz.
Genellikle küçük listelerde ekleme sıralaması, neredeyse sıralı olan bir listede balon sıralaması, hız gerektiren yerlerde hızlı sıralama kullanılır. Fakat kodlamak için gereken zamandan tasarruf etmek için, programcılar dilin içine "hazır" bulunan sıralama komutlarını tercih ederler. Örneğin, şu şekilde bir komut olabilir:
sırala diziAdi, ilkEleman, sonEleman
Dilin kendi komutunu kullanmanız tavsiye edilir, fakat komut yavaşlığa neden oluyor ise, kendi algoritmanızı oluşturunuz.
12


Resim 1.12: Hazır komut kullanarak sıralama işlemi
: Hazır sıralama yönteminin sahte kodunu yazınız.

Resim 1.13: Hazır sıralama komutu ile liste sıralamak
13


(
UYGULAMA FAALİİYETYETİ


İşlem Basamakları Öneriler
1. 5 adet karışık hâlde tam sayı değer seçiniz. Aşağıdaki tablodan belli bir sütunu seçebilirsiniz.
2. Değerlerin hangi yöntem ile sıralanacağına karar veriniz. Genellikle küçük listelerde "balon sıralaması", daha uzun listelerde "eklemeli ve hızlı sıralama" tercih edilir.
3. Karışık haldeki sayıları sıralayınız. Akış şemasını çizerek, seçtiğiniz değerleri sıralayınız.
4. Ekrana sayıları listeleyiniz. Listedeki en büyük ve en küçük değerleri istatistik amaçlı belirtebilirsiniz. Sayıların ortalama ve toplamlarını bulma işlemlerini yapabilirsiniz.
5. Programı yazarak kaç adımda sıralandığını bulunuz Diğer algoritmalar ile işlemlerin bitmesi için gereken adım sayısı karşılaştırılabilir.
Örnek alınabilecek değerler:
Sözcük Resim Sayfa Araştırma Örnekler
Modül 1 8664 65 54 44 14
Modül 2 8048 29 52 52 36
Modül 3 6261 29 41 22 15
Modül 4 4700 31 36 19 10
Modül 5 5608 27 39 16 12


14

ÖLÇME VE DEÖLÇME VE DEĞĞERLENDERLENDİRME İ
OBJEKTİF TESTLER (ÖLÇME SORULARI)
Aşağıdaki sorulardan; sonunda parantez olanlar doğru / yanlış sorularıdır. Verilen ifadeye göre parantez içine doğru ise "D", yanlış ise "Y" yazınız. Şıklı sorularda uygun şıkkı işaretleyiniz.
1. (...) Bilgisayardaki dosya ve klasörler diskte isimlerine göre sıralanmış olarak tutulur.
2. (...) Kısa algoritmalar karmaşık algoritmalardan daha hızlı çalışır ve hemen sonucu
bulur.
3. (...) Listenin tamamını tarayan sıralama yöntemine balon sıralaması denir.
4. Aşağıdaki sıralama yöntemlerinden hangisi hemen hemen sıralı değerler için tercih
edilir?

A) Eklemeli
B) Balon
C) Kabuk
D) Hızl
5. Aşağıdaki sıralama yöntemlerinden hangisi diğer sıralama yöntemlerinden birini
kullanır?
A) Eklemeli
B) Balon
C) Kabuk
D) Hızl
6. Aşağıdaki sıralama yöntemlerinden hangisi genellikle en az adımda işlemi tamamlar?
15
A) Eklemeli
B) Balon
C) Kabuk
D) Hızl



ÖĞRENME FAALİYETİ-2
Programda arama ile ilgili kısımları yazabileceksiniz.



ARAŞTIRMA
Bu faaliyet öncesinde hazırlık amaçlı aşağıda belirtilen araştırma faaliyetlerini yapmalısınız.
> Bilgisayarınızdaki dosya ve klasörlerin aranmasını nasıl
yapıyorsunuz? Dosya içindeki bilgileri de arayabilir
misiniz? Daha hızlı nasıl arama yapılabilir?
> İnternet sayfalarında arama imkânı nasıl sağlanıyor? Arama
motorlarının gelişmiş arama seçeneklerini inceleyiniz.
> Elektronik posta adreslerine gereksiz mesajlar gelebilir. Bu
tür mesajları bulan algoritmaları araştırınız. Mesela
"Bayesian Filtreleme Algoritması" gibi...
2. ARAMA


Sıralama adımından sonra en önemli konu "arama" işlemidir. İsim ve adres bilgilerini saklayan bir programda, bilgilerin sıralanması ve aranması algoritmalarına ihtiyaç duyulur. Örneğin; Ankara'da yaşayan "F" harfi ile başlayan isimlerin listelenmesi istenebilir.
Arama işleminin hızlı olması için genellikle programlar verileri önce sıralarlar. Sıralama ve arama işlemleri, uygun algoritma seçilerek hızlı ve etkin olarak yapılır. Ayrıca sıralı listede minimum ve maksimum değer otomatik olarak bulunmuş olur. Listenin en başındaki eleman en küçük değere, liste sonundaki eleman ise en büyük değere sahiptir.
2.1. Sıralı (Ardışık) Arama
Sıralı arama (sequential search) listedeki tüm bilgileri tarama yöntemidir. Liste, bağlı liste veya dizi olabilir.
16

Evinizin kapı anahtarını kaybettiğinizde, sıralı arama yöntemini kullanarak anahtar aramak istersek, apartmandaki tüm odaları tek tek arama yolu ile yapabiliriz. Eğer anahtar ilk odalarda ise hızlı bir şekilde anahtarınızı bulursunuz. Yani küçük listelerde bu arama yönteminin yavaşlığını hissetmezsiniz bile. Tüm şehri aramanız gerektiğini düşünün, arama hızı çok yavaş olurdu.
Aramayı ister başlangıçtan, isterseniz listenin sonundan başlatabilirsiniz. Aranan bilgi bulunduğunda arama işlemi sona erer.

Resim 2.1: Sıralı arama yöntemi
17

: Sıralı arama yönteminin sahte kodlarını hazırlayınız.



Resim 2.2: Sıralı arama programının ekran görüntüsü
2.2. İkilik Arama
İkilik arama1^ (binary search) sıralı haldeki bir listede hızlıca arama yapmamızı sağlar. Uzun liste ikiye bölünür, aranan bilgi hangi yarıda ise, o yarı içinde arama yapılır. Sayı bulunana kadar liste yarıya bölünerek arama işlemi devam eder.

Resim 2.3: İkilik arama yöntemine bir örnek
On elemanlı dizide 37 rakamını bulmak için, önce dizinin ortasındaki eleman olan 30 ile aramaya başlanır. 37 rakamı 30'dan büyük olduğu için sağ taraftaki yarıda arama yapılacaktır.
İkilik arama sadece sıralı hâldeki listeler içindir.
18

Kalan beş sayıda ortadaki 59 ile aranan sayı olan 37 karşılaştırır. Bu sefer de sol tarafta arama yapılacaktır. Elimizde iki sayı kaldı. Listedeki ilk eleman aranan sayı ile karşılaştırılır. 37 rakamı üçüncü adımda bulunmuş oldu. Sıralı arama yönteminde olsaydı altıncı adımda arama bitecekti.
: İkilik arama yönteminin akış şemasını çiziniz. Test değerleri seçip, akış şemanızı deneyiniz.
? "Yari" değişkeninin değeri bulunmasında bir açık vardır. Eğer "Sol ve Sağ" değişkenlerinin toplamı tam sayı değişkenin sınırlarını geçerse, program hata verip kapanır. Bu sorunu nasıl çözebilirisiniz?
Çözüm önerisi: (tamsayı () komutu ondalıklı sayının tam sayı kısmını verir.)
Yari = Sol + tamsayı((Sol - Sag) / 2)

Resim 2.4: İkilik arama programının ekran görüntüsü
2.3. Kıyma (Hashing) Yöntemi
Kıyma veya kıyım yöntemi (hashing search) yeri hemen hemen bilinen değerleri bulmak için yapılmıştır. Mesela, evinizin anahtarını genellikle belli bir yere koyarız veya bir yere asarız. Böylece bulmamız kolaylaşır. Programda aramayı kolaylaştırmak için elimizdeki değerleri dizide belli yerlere atacağız.
2.3.1. Kıyma Fonksiyonu
Bir veri yapısı (dizi veya bağlı liste) içine değerler için, kıyma veya kıyım değeri (hash value) hesaplanır. Kıyma değeri, kıyma fonksiyonu (hash function) yardımı ile bulunur. Kıyma fonksiyonu sayesinde, "aranan değer" tüm listede aranması yerine, belli bir yerde aranarak bulunur. Örneğin bir arananDeger adlı tam sayıyı dizide aradığımızı düşünelim; önce "kıyma değeri" bulunur:
KıymaDegeri = arananDeger % 5 //mod bulmak için başka bir yöntem:
KıymaDegeri = arananDeger - (tamsayı(arananDeger / 5) * 5)
19

Bu formül bize sayının beşe bölümünden kalan sayıyı "kıyma değeri" olarak verir. Hangi sayı saklanmış olursa olsun kıyma değerleri 0, 1, 2, 3 veya 4 olabilir. Mesela 26 rakamının 5'e bölümünden kalan değeri 1 olduğu için, 26 değerini dizinin 1. elemanına atayabiliriz.

Resim 2.5: Kıyma yöntemi ile değerleri yerleştirmek
Uzun listelerde kıyma yöntemi ile arama çok hızlı bir şekilde yapılabilir. 2.3.2. Kıyma Yönteminde Çakışmalar
Kıyma fonksiyonu ile tek olan değere sahip bir sayı üretilir. Farklı liste elemanlarının aynı kıyma değeri olabilir. Mesela, 7 ve 32 değerlerinin 5 ile bölümünden kalan sayı 2'dir.
Aynı kıyma değeri birden fazla sayıda ise, buna çakışma (collision) denir. Çakışmalar kontrol altına almak için, aynı kıyma değerine sahip olan elemanlar bir yapıda toplanır. İki boyutlu bir dizi veya bağlı liste içine çakışanlar tutulabilir.
Dizi veya bağlı liste büyüyebilir veya hafızada fazla yer kaplamaması için kısaltılabilir.

Resim 2.6: Kıyma yönteminde çakışmaları engelleme 2.3.3. Kıyma Yönteminde Arama
Değerler listeye kaydedildikten, sonra arama işlemi kıyma fonksiyonu ile rahatlıkla yapılabilir. Aynı kıyma değerine sahip elemanlar da kendi aralarında taranır.
20

Eğer her elemanın kendi tek (unique) kıyma değeri var ise, kıyma fonksiyonu sayesinde tek adımda arama işlemi tamamlanır. Birden fazla kıyma değeri olan elemanlar ise en azından küçük bir liste halinde olduğundan, arama işlemi fazla zaman kaybına neden olmaz. Bu küçük listede sıralı veya ikilik yöntemleri ile arama yapılabilir.

Resim 2.7: Kıyma yönteminin program ekran görüntüsü
? Kıyma arama yönteminde oluşan alt listelerde nasıl arama yapılabilir? Hangi arama yöntemini tercih edersiniz?
Kısa listelerde kolay kodlanabilen "sıralı arama", hız gerektiren daha büyük listelerde "ikilik arama" tercih edilir.
Çok büyük verilerde "kıyma yöntemi" seçilebilir, ama kodlaması zordur. Önceden değerleri veri yapısına yerleştirme gerekliliği ve alt listede farklı algoritma ile arama kullanılması gerektiği için kod yazımı uzun zaman alır.
21


(
UYGULAMA FAALİİYETYETİ


İşlem Basamakları Öneriler
1. 5 adet karışık halde tam sayı değer seçiniz. Aşağıdaki tablodan belli bir sütunu seçebilirsiniz.
2. Aramayı kolaylaştırmak için veriyi sıralayınız. Genellikle küçük listelerde "balon sıralaması", daha uzun listelerde "eklemeli ve hızlı sıralama" tercih edilir.
3. Uygun algoritmayı seçerek arama programını yazınız. Akış şemasını çizerek daha kolay program yazılabilir.
4. Arama değerleri girerek, programı deneyiniz. Seçtiğiniz değeri listede arayabilirsiniz.
Örnek alınabilecek değerler:
Sözcük Resim Sayfa Araştırma Örnekler
Modül 1 8664 65 54 44 14
Modül 2 8048 29 52 52 36
Modül 3 6261 29 41 22 15
Modül 4 4700 31 36 19 10
Modül 5 5608 27 39 14 12
22

ÖLÇME VE DEÖLÇME VE DEĞĞERLENDERLENDİRME İ
OBJEKTİF TESTLER (ÖLÇME SORULARI)
Aşağıdaki sorulardan; sonunda parantez olanlar doğru / yanlış sorularıdır. Verilen ifadeye göre parantez içine doğru ise "D", yanlış ise "Y" yazınız. Şıklı sorularda uygun şıkkı işaretleyiniz.
1. Karışık bir listede sadece sayılar için arama yapabiliriz. ( )
2. Küçük listelerde sıralı arama yöntemi ile hızlıca aranan değeri buluruz. ( )
3. Çok büyük değerlere sahip olan sayıları arama işlemi daha yavaştır. ( )
4. Kıyma fonksiyonu sayesinde bir değeri ilk denemede buluruz. ( )
5. Aşağıdaki arama yöntemlerinden hangisi tüm listeyi tarayıp işlemi tamamlar?

A) Sıralı
B) İkilik
C) Kıyma
D) Hiçbiri
6. Aşağıdaki yöntemlerden hangisi listeyi ikiye bölerek arama yapar?
A) Sıralı
B) İkilik
C) Kıyma
D) Hiçbiri
23

ÖĞRENME FAALİYETİ-3
J
Programın derlenmesini ve kod yazımını daha iyi hâle getirebileceksiniz.


ARAŞTIRMA
Bu faaliyet öncesinde hazırlık amaçlı aşağıda belirtilen araştırma faaliyetlerini yapmalısınız.
> Bilgisayarınızın yazılım ve donanım olarak daha iyi çalışması için neler
yapıyorsunuz? Mesela disk birleştirici ile ayda bir disklerin birleştirilmesi
gibi...
> Bilgisayarınızda kurulu bir program artık çalışmamaya başlarsa veya işletim
sisteminde problemler meydana gelmiş ise ne gibi önlemler alabilir, tamir
etmek için neler yaparsınız?


3. KOD İYİLEŞTİRME
Program çalışır hâle geldikten, hatalar elinden geldiğince giderildikten sonraki istenen yazılımın sürümünün oluşturulması veya kodların iyileştirilmesidir. İyileştirme ile anlatılmak istenen şunlardır:
1. Programı daha da hızlandırmak
2. Programın kapladığı disk alanını azaltmak
3. Program için gereken bellek miktarını azaltmak
Programın ilk sürümü 1.0 olarak piyasaya sürüldükten belli bir süre sonra, yazılım firmaları küçük güncellemeler yaparak 1.01 gibi yeni sürümler oluştururlar. Genellikle sonradan bulunan böcekler giderilmiş olur, çok büyük yenilik yapılmaz. Yepyeni yapılan değişikliklerle 2.0 gibi daha büyük sürüm numarası ilerlemesi yapılır.
3.1. Doğru Veri Yapısını Seçmek
Her programın veri saklama ihtiyacı vardır. Bunun için doğru yöntemi seçmelisiniz. Bir dizi yapmak çok kolay gözükebilir, ama dizinin eleman sayısını bilmeniz gereklidir. Küçük bir dizi yaptıysanız, programınız daha fazla bilgi saklamak istediğinde çökebilir; büyük bir dizi yaptıysanız, ana bellekte gereksiz alan kaplayan içi boş değişkenler oluşur. Gereğinden fazla bellekte yer kaplayan diziden uzak durulmalıdır.
Seçtiğiniz veri yapısı kullandığınız sıralama ve arama algoritmasını etkiler. Bir dizi yerine bağlı liste kullanırsanız, daha etkin ve hızlı olarak veriler içinde yer değiştirme işlemi yapabilirsiniz.
24

3.2. Doğru Algoritmayı Seçmek
Algoritma ile bir problemin nasıl aşılacağı ayrıntılı olarak anlatılır. Mesela arkadaşınıza evinizi tarif etmeniz gerekirse, kısa olsun diye ara sokaklardan veya kolay olsun diye ana yoldan gitmeyi anlatabilirsiniz. Ara sokakların anlatılması zordur, ana yolun tarifi de kolay ama yolu uzatıyor olabilir.
50.000 kişinin listelendiği bir veri yapısında "hızlı sıralama" yerine, "balon sıralaması" yapmak çok uzun zaman alır. Sıralama yapılan listede arama yapmak için, "sıralı arama" yöntemi çok uzun zamanda sonuçlanır, "ikilik arama" yöntemi seçilerek daha hızlı tamamlanabilir.
Bir oyundaki en yüksek 10 rekor bilgisi saklanıyor diyelim, ilk kez oyun oynandığında 10 adet rekor bilgisi boştur. Her oyun oynandığında rekora yeni değerler eklenir. Burada en uygun sıralama yöntemi "ekleme sıralaması" olabilir. Yeni yüksek rekor yapıldıkça listede uygun yere bilgi eklenir. Eğer "balon sıralaması" ile rekor bilgilerini sıralamak isterseniz, her oyun sonunda bilgiler defalarca taranarak sıralanır.
Yazdığınız programda, doğru algoritmayı seçerek programın daha hızlı çalışmasını sağlayabilirsiniz.
3.3. Kaynak Kodu İyileştirmek
Doğru veri yapısını ve algoritmayı seçseniz bile kodu iyileştirme (code optimizing) gerekebilir. Programınızın belli kısımlarını tekrar yazarak daha hızlandırabilir ve daha az bellek harcar hale getirebilirsiniz.
Öneriler:
> "Eğer" komutunda birden fazla şartı "Ve / Veya" işleçleri ile bağlayınız.
Örnek:
Eğer (şart1) Ve (şart2) İse
Komutlar Eğer Bitti
Burada birinci şart eğer Hayır (False) ise ikinci veya diğer şartlara bakılmaz. Bu sayede program fazladan işlem yapmaz. Zaman kazanırız ve program biraz daha hızlı çalışır.
> İç içe "Eğer" kullanırken Evet (True) olması muhtemel şartı önce yazınız.
"Durum" komutunda da buna dikkat ediniz. Böylece diğer şartları boşuna
taramak gerekmez.
Örnek:
Eğer şart1 İse
Komutlar Değilse Eğer şart2 İse
Komutlar Eğer Bitti
Eğer birinci şart doğru ise ikinci şarta bakılmaz. Eğer çoğu zaman birinci şart Hayır (False) ikinci şart Evet (True) oluyor ise şartların yerlerini değiştirerek, zaman ve hız kazanabilirsiniz.
25

> "Döngü" komutu ile gereksiz fazladan döngü yapmayınız. Döngüler programda
çok zaman yitirilmesine sebep olabilir. Döngü belli sayıda iç kısmındaki
komutları çalıştırır. Mesela dizide aranan değer daha ilk eleman ise, diğer
elemanlar taranmaya devam edilmemelidir. Zaman kaybı olmaması için gerekli
yere "Döngüden Çık" komutu yerleştirerek döngüden hedefe ulaşılınca çıkılır.
Bulundu = 0
Döngü J = 1, 300, 1
Eğer Dizi(J) = Aranan İse Bulundu = 1 Döngüden Çık //döngüden çıkılacak
Eğer Bitti Döngü Bitti Eğer bulundu = 0 İse
Yaz; "Aranan değer bulunamadı!" Değilse
Yaz; "Aranan değer bulundu: " & J Eğer Bitti
> Döngü içine gereksiz kod yazmayınız. Döngü ile alakası olmayan satırlar
döngü dışına alınız.
Döngü J = 1, 5000, 1
I = 0
Eğer Dizi(J) = 55 İse Yaz; Dizi(J)
Eğer Bitti Döngü Bitti
Arama yapılırken fazladan yazılan "I = 0" satırı 5.000 kez çalıştırılacaktır. Bu gereksiz satır, az da olsa döngünün yavaşlamasına sebep olacak, sonuç olarak programınızı yavaşlatacaktır.
İç içe döngü yaparken içteki döngüye gereksiz kod yazmayınız. İç döngü yavaşlar ise, dış döngü de yavaşlar.
> Bellek tasarrufu için değişkenlerin veri türünü doğru seçiniz. Tam sayı bir
değişken içine küçük değer aktarılarak kullanılıyor ise "Short - Kısa", büyük
değerler aktarılarak kullanılıyor ise "Long - Uzun" seçebilirsiniz. Kısa tam
sayının alabileceği değer aralığı yaklaşık 64.000 iken, uzun tam sayının değer
aralığı yaklaşık 4 milyardır. Short türünde bir tam sayı 2 Byte, Long ise 8 Byte
bellek alanı kaplar.
> Mümkün olduğunca programlama dilinin kendi komutları ile hesaplama
yapınız. Genellikle bu komutlar daha hızlı çalıştırılırlar.
Sayi = Sayi + 1 //komutu yerine
Sayi++; //C dilinde
Inc(Sayi); //Pascal dilinde
Dilin kendi komutlarını kullanmak kodun anlaşılır olmasını engeller. Diğer
programcılar kodu anlayamayabilirler.
26

>
>

Daha hızlı bir programlama diline geçiniz. En hızlı programlama dili makine
dilidir. Sonra C ve C++ dilleri gelir. Birçok programcı basit ve yavaş olan
Visual Basic'te prototip olarak programı hazırlar, daha sonra asıl programlama
diline kodları taşırlar. Aslında bu zahmetli ve riskli bir işlemdir. Yeni kodların
çalışacağı garanti değildir.
Öyleyse ikinci bir yol, tüm programı yazmak yerine görüntü olarak basit bir
dilde hazırlamak, asıl dile sonra geçmek olabilir.
Birden fazla dil kullanılarak program yazılıyor ise, her dilin kendi avantajı
kullanılabilir. Birbiri ile çalışabilen dillerde program yazmak, farklı
programlama dilleri bilen programcıların takım halinde bir proje üzerinde
çalışmalarını sağlar.
Derleyicinizi daha iyi hâle getiriniz. Daha hızlı bir dil yerine daha performanslı bir derleyici seçilebilir.
Derleyicinin ayarlarını inceleyerek, daha iyi hâle getirebilirsiniz. Ayarlar değiştirirken dikkatli olunuz, programı hızlandırmak isterken, hata ve çökmelere karşı daha zayıf hâle getirebilirsiniz.


27




(
UYGULAMA FAALİİYETYETİ


İşlem Basamakları Öneriler
1. Programın bitiminde kodları iyileştiriniz. Öneriler kısmındaki maddelere göre bir örnek programı iyileştiriniz.
2. Kod satırlarını daha okunaklı hale getiriniz. Yaptığınız programı diğer programcıların rahat anlaması için okunaklı hâle getirmeniz iyi bir alışkanlıktır.
3. Program için daha hızlı bir dile kodlar dönüştürünüz. QBasic gibi bir dilde yazılan programı daha performanslı olan C gibi bir dile çeviriniz.
4. Derleyici seçeneklerini iyileştiriniz. Programlama dilinin derleme seçeneklerini inceleyiniz.
29

ÖLÇME VE DEÖLÇME VE DEĞĞERLENDERLENDİRME İ
OBJEKTİF TESTLER (ÖLÇME SORULARI)
Aşağıdaki sorulardan; sonunda parantez olanlar doğru / yanlış sorularıdır. Verilen ifadeye göre parantez içine doğru ise "D", yanlış ise "Y" yazınız. Şıklı sorularda uygun şıkkı işaretleyiniz.
1. Programların sürüm numaraları her zaman 1.0 ile başlar. ( )
2. Programların sürüm numaraları sadece çok büyük değişikliklerde ilerler. ( )
3. Basit mantık kullanılarak yapılan algoritmalar, programın performansını artırır. ( )
4. Derleyici ayarları değiştirilerek programın hiç hata vermeden çalışması sağlanabilir,
fakat programın çökme ihtimali daha da artar. ( )
5. Aşağıdakilerden hangisi programın çalışmasını hiç etkilemez?

A) Programdaki gereksiz açıklama satırlarını silmek
B) Programda iç içe döngüleri çok kullanmak
C) Programda "Eğer" yerine "Durum" komutunu kullanmak
D) Programdaki değişkenlerin türünü doğru seçmek
6. Aşağıdakilerden hangisi kodu iyileştirme ile ilgili değildir?
30
A) Programı daha hızlandırmak
B) Programın kapladığı disk alanını azaltmak
C) Programın yardım dosyasını hazırlamak
D) Program için gereken bellek miktarını azaltmak


MODÜL DEĞERLENDİRME



PERFORMANS TESTİ (YETERLİK ÖLÇME)
Modül ile kazandığınız yeterliği, öğretmeniniz işlem basamaklarına göre 0 ile 9 puan arasında olacak şeklinde değerlendirecektir.


DEĞERLENDİRME KRİTERLERİ Puan
5 adet karışık hâlde tam sayı değer seçme
Değerlerin hangi yöntem ile sıralanacağına karar verme
Karışık hâldeki sayıları sıralama
Programı yazarak kaç adımda sıraladığını bulma
Aramayı kolaylaştırmak için veriyi sıralama
Uygun algoritmayı seçerek arama programını yazma
Arama değerleri girerek, programı deneme
Programın bitiminde kodları iyileştirme
Kod satırlarını daha okunaklı hâle getirme
Program için daha hızlı bir dile kodları dönüştürme
Derleyici seçeneklerini iyileştirme
Toplam (en fazla 99 puan olabilir)
DEĞERLENDİRME
Yaptığınız değerlendirme sonucunda eksikleriniz varsa öğrenme faaliyetlerini tekrarlayınız.
Modülü tamamladınız, tebrik ederiz. Öğretmeniniz size çeşitli ölçme araçlar uygulayacaktır, öğretmeninizle iletişime geçiniz.
31

CEVAP ANAHTARLARI
ÖĞRENME FAALİYETİ-1 CEVAP ANAHTARI

1 Y
2 Y
3 D
4 B
5 C
6 D
ÖĞRENME FAALİYETİ-2 CEVAP ANAHTARI

1 Y
2 D
3 Y
4 Y
5 A
6 B
ÖĞRENME FAALİYETİ-3 CEVAP ANAHTARI

1 Y
2 Y
3 Y
4 D
5 A
6 C
32
Cevaplarınızı cevap anahtarları ile karşılaştırarak kendinizi değerlendiriniz.



SÖZLÜK

İsim Okunuş Anlam i
sign sayn işaret, signature - imza j
simulate simyuleyt benzetmek (simulation - benzetim)
slot slot yuva, kart takılan yarıklar j
specify spesifay tanımlamak, belirtmek
speech spiiç konuşma
sprite sprayt grafik programcılığında kullanılan hareketli nesneler i
SQL es kyu el Structured Query Language - Yapısal Sorgulama Dili
stack stek yığın, geçici bellek alanı
status steytıs durum; statement - deyim, komut
structure strakçır yapı
subdirectory sabdayrektöri alt dizin, klasör j
substitute sabstityut başkasının yerine koymak
success sıkses başarı
supervisor supıvayzır yetkili i
support sıport destek i
surface söfıs yüzey, görünüş
suspend sıspend askıya almak j
switch sviç anahtar, yer değiştirmek
terminal törminıl son, uçbirim j
thread tred kanal
toggle togl iki şeyin birbirleri ile yer değiştirmeleri (swap)
track trek iz, fiziksel disk dairesi i
true tru mantıksal doğru
truetype trutayp boyutu değiştirilebilir yazı tipi
try tray denemek
tutorial tyutıriıl öğretici
unit yunit kod yazılan alan j
utility yutiliti yardımcı programlar
variable verayıbl değişken
virus vayrıs virüs
volume volyum sürücü
warning worning uyar
watch voç çalışma anında değişkenleri seyretmek j
33

KOD ÖRNEKLERİ


Visual Basic dilinde ekleme sıralaması örneği
Private Sub Button1_Click 'Kurulum kısmı Dim Maksimum As Integer = 5 Dim Dizi(Maksimum) As Integer
Dim i, j, DiziDongusu, Gecici, Dur, Dur2, Sayac As Integer Dim metin As String
'Rasgele komutu için Randomize() ekledik Randomize()
ListBox1.Items.Clear() 'İlk değerler atanıyor metin = "" For i = 1 To Maksimum
Dizi (i) = Rnd(1) * 99 + 1 metin = metin & Dizi(i) & " " Next i
ListBox1.Items.Add(metin) 'Sıralama döngüsü açılıyor For DiziDongusu = 2 To Maksimum Gecici = Dizi(DiziDongusu) Dur = 0 : Sayac = 1 : Dur2 = 0 While (Dur2 = 0)
If Gecici < Dizi(Sayac) Then
For j = DiziDongusu To Sayac Step -1
Dizi (j) = Dizi(j - 1) Next j
Dizi(Sayac) = Gecici Dur = 1 End If
Sayac = Sayac + 1
If (Dur = 1) Or (Sayac = DiziDongusu) Then Dur2 = 1 End While
'Ekrana ara değişiklikler yansıtılıyor metin = "" For i = 1 To Maksimum
metin = metin & Dizi(i) & " " Next i
ListBox1.Items.Add(metin) Next DiziDongusu End Sub
34

Visual Basic dilinde balon sıralaması örneği
'Kurulum kısmı Dim Maksimum As Integer = 5 Dim Dizi(Maksimum) As Integer

Dim i, j, Gecici, Dur, Gec, Degistirme As Integer Dim metin As String
'Rasgele komutu için Randomize() ekledik Randomize()
ListBox1.Items.Clear() 'İlk değerler atanıyor metin = " For i = 1 To Maksimum
Dizi(i) = Rnd(1) * 99 + 1 metin = metin & Dizi(i) & " Next i
ListBox1.Items.Add(metin) 'Sıralama döngüsü açılıyor Gec = 1 Dur = 0 While (Dur = 0)
Degistirme = 1
For i = 1 To (Maksimum - Gec)
If Dizi(i) > Dizi(i + 1) Then Gecici = Dizi(i) Dizi (i) = Dizi(i + 1) Dizi(i + 1) = Gecici Degistirme = 0 End If Next i metin = "" For j = 1 To Maksimum
metin = metin & Dizi(j) & " " Next
ListBox1.Items.Add(metin) If Degistirme = 1 Then Dur = 1 End While
35

Visual Basic dilinde kabuk sıralaması örneği
'Kurulum kısmı Dim Maksimum As Integer = 5 Dim Dizi(Maksimum) As Integer Dim i, Gecici, Dur, Gec, X, Sinir As Integer Dim metin As String
'Rasgele komutu için Randomize() ekledik Randomize()
ListBox1.Items.Clear() 'İlk değerler atanıyor metin = "" For i = 1 To Maksimum
Dizi (i) = Rnd(1) * 99 + 1 metin = metin & Dizi(i) & " Next i
ListBox1.Items.Add(metin) 'Sıralama döngüsü açılıyor X = Int(Maksimum / 2) While X > 0
Dur = 0
Sinir = Maksimum - X While (Dur = 0) Gec = 0 For i = 1 To Sinir
Then
If Dizi(i) > Dizi(i + X) Gecici = Dizi(i)
Dizi (i) = Dizi (i + X) Dizi(i + X) = Gecici Gec = i End If Next i
Sinir = Gec - X If Gec = 0 Then Dur = 1 End While metin = " For i = 1 To Maksimum
metin = metin & Dizi(i) & " " Next i
ListBox1.Items.Add(metin) X = Int(X / 2)
End
End While
36

Visual Basic dilinde hızlı sıralama örneği
Public Class Form1
r
'Kurulum kısmı (global değişkenler) Dim Maksimum As Integer = 5 Dim Dizi(Maksimum) As Integer
Sub hizliSirala(ByVal Baslangic, ByVal Bitis) 'Alt programımız Dim metin As String Dim i, J, k, X, Gecici As Integer i = Baslangic : J = Bitis X = Dizi(Int((i + J) / 2)) While i <= J
While Dizi(i) < X
i = i + 1 End While While Dizi(J) > X
J = J - 1 End While If i <= J Then
Gecici = Dizi(i): Dizi(i) = Dizi(J): Dizi(J) = Gecici i = i + 1 J = J - 1 End If End While metin = "" For k = 1 To Maksimum
metin = metin & Dizi(k) & " Next k
ListBox1.Items.Add(metin) 'Alt program kendini çağırıyor
If J > Baslangic Then hizliSirala(Baslangic, J) If i < Bitis Then hizliSirala (i, Bitis) End Sub
Private Sub Button1_Click
'Sırala düğmesi kodları (ana program) Dim metin As String Dim i As Integer
Randomize()
ListBox1.Items.Clear()
'İlk değerler atanıyor
metin = ""
For i = 1 To Maksimum
Dizi (i) = Rnd(1) * 99 + 1 metin = metin & Dizi(i) & "
Next i
ListBox1.Items.Add(metin)
'Sıralama alt programı çağrılıyor
hizliSirala (1, Maksimum)
metin = ""
For i = 1 To Maksimum
metin = metin & Dizi(i) & "
Next i
ListBox1.Items.Add(metin)
End Sub
37



Visual Basic dilinde hazır sıralama komutu örneği
Dim Maksimum As Integer = 5 Dim Dizi(Maksimum) As Integer Dim i As Integer Dim metin As String
andomize()
ListBox1.Items.Clear()
İlk değerler atanıyor
metin = "" For i = 1 To Maksimum
Dizi (i) = Rnd(1) * 99 + 1 metin = metin & Dizi(i) & Next i
ListBox1.Items.Add(metin) 'hazır komut kullanıyoruz Array.Sort(Dizi, 1, Maksimum) metin = "" For i = 1 To Maksimum
metin = metin & Dizi(i) & Next i ListBox1.Items.Add(metin)
38



Visual Basic dilinde sıralı arama örneği
Dim Maksimum As Integer = 4
Dim Dizi(), I, Bulundu, Aranan As Integer
Private Sub Form1_Load
'Programın açılış anında çalışan komutlar
Dim Metin As String ReDim Dizi(Maksimum)
Randomize()
Dizi(0) = Int(Rnd(1) * 10) + 1
Metin = Dizi(0)
TextBox1.Text = Metin
For I = 1 To Maksimum
+ Int(Rnd(1) * 10) + 1 Dizi (I)
Dizi (I) = Dizi (I - 1) Metin = Metin & " " & Next I
Label2.Text = Metin End Sub
Private Sub Button1_Click
'Bul düğmesinin komutları
Aranan = TextBox1.Text
Bulundu = 0
For I = 0 To Maksimum
If Dizi(I) = Aranan Then Bulundu = 1
MsgBox(I + 1 & ". elemanda bulundu") Exit For End If Next I If Bulundu = 0 Then MsgBox("Aranan değer bulunamadı.")
End Sub
39


Visual Basic dilinde ikilik arama örneği
Dim Maksimum As Integer = 9
Dim Dizi(), I, Aranan As Integer
Private Sub Form1_Load
'Programın açılış anında çalışan komutlar Dim Metin As String ReDim Dizi(Maksimum)
Randomize()
Dizi(0) = Int(Rnd(1) * 10) + 1
Metin = Dizi(0)
For I = 1 To Maksimum
Dizi(I) = Dizi(I - 1) + Int(Rnd(1) * 10) + 1 Metin = Metin & " " & Dizi(I) Next I
Label2.Text = Metin
TextBox1.Text = Dizi(Int(Rnd(0) * Maksimum)) End Sub

Private Sub Button1_Click
'Bul düğmesinin komutları
Dim Dur, Sol, Sag, Yari As Integer
Aranan = TextBox1.Text
Sol = 0
Sag = Maksimum
Dur = 0
While Dur = 0
Yari = Int((Sol + Sag) / 2) If Aranan < Dizi(Yari) Then
Sag = Yari - 1 Else
Sol = Yari + 1 End If
If (Aranan = Dizi(Yari) Or Sol > Sag) Then Dur = 1 Exit While End If End While
Then
elemanda bulundu")
If (Aranan = Dizi(Yari)) MsgBox(Yari + 1 & ". Else
MsgBox("Aranan değer bulunamadı.") End If End Sub
40


Visual Basic dilinde kıyma arama örneği
Dim Maksimum As Integer = 5
Dim Dizi(,) As Integer
Dim i, j, Aranan As Integer
Private Sub Form1_Load
ReDim Dizi(Maksimum, Maksimum)
Dim kiymaDegeri, Sayac, Saklanan, Dur As Integer
Dim metin As String

Randomize()
'dikey değerler 'yatay değerler
For i = 1 To Maksimum
For j = 1 To Maksimum
Dizi(i, j) = 0 Next j Next i
DataGridView1.Rows.Add(5) Sayac = 1 : metin = "" For J = 1 To Maksimum Dur = 0
Saklanan = Int(Rnd(1) * 100) + 1
kiymaDegeri = Saklanan - (Int(Saklanan / 5) * 5) While Dur <> 1
If Dizi(Sayac, kiymaDegeri) = 0 Then
Dizi(Sayac, kiymaDegeri) = Saklanan Dur = 1 Else
Sayac += 1 End If
DataGridView1.Item(kiymaDegeri, Sayac - 1).Value = Saklanan End While
metin &= Saklanan & Space$(1) Next J Label2.Text = metin End Sub
Private Sub Button1_Click
Dim kiymaDegeri, Aranan As Integer
Aranan = TextBox1.Text
kiymaDegeri = Aranan - (Int(Aranan / 5) * 5) + 1
If Dizi(1, kiymaDegeri) = 0 Then
MsgBox("Aranan değer bulunamadı.")
Else
MsgBox(kiymaDegeri & ". sütunda bulundu")
End If End Sub
41

ÖNERİLEN KAYNAKLAR



> blogs.borland.com/corbindunn/archive/2004/09/29/1483 .aspx
> en.wikipedia.org/wiki/Fractal
> fraktaller.tripod.com
> googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
> main.linuxfocus.org/Turkce/March2003/article273 .shtml
> ostermiller.org/ti82
> ozguryazilim.org
> tr.wikipedia.org/wiki/Big-O
> tr.wikipedia.org/wiki/Google_Earth
> tr.wikipedia.org/wiki/Seyyar_satıcı_problemi
> www.algosort.com
> www.automatedqa.com/products/aqtime
> www.ba.infn.it/~zito/plaw.html
> www.belgeler.org/howto/acik-kod-yazilimcisi.html
> www.codeproject.com
> www.cs.ubc.ca/~harrison/Java
> www.developerfusion.co.uk/show/3824
> www.devx.com/vb2themax/Article/19900?type=kbArticle&trk=MSCP
> www.e-optimization.com
> www.iett.gov.tr
> www.ileriseviye.org/Makale/lisperati-tr
> www.ileriseviye .org/arasayfa.php?inode=kadinlar.html
> www.inner-smile.com/delphifaq.phtml
> www.iti.fh-flensburg.de/lang/algorithmen/sortieren
> www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci
> www.papatya.info.tr/bilisimAnsiklopedisi.htm
> www.paulgraham.com/spam.html
> www. softwarefederation.com/fractal.html
> www.techtoolblog.com/archives/195-free-online-programming-books
> www.telekom.gov.tr
> www.turkyol.com
> www.yazilimci.org/content/view/29/31
42

KAYNAKÇA

>
>

BAĞRIYANIK Tarık, Programlama Ders Notları ve Uygulamalı Genel Programlama Kitabı (www.yunus.projesi.com)
WALLACE Wang, Beginning Programming for Dummies, Wiley Basımevi, Indianapolis, 2004

43