2015 - 2016 EĞİTİM ÖĞRETİM YILI İŞLETMELERDE BECERİ EĞİTİMİ DERSİ BİLİŞİM TEKNOLOJİLERİ ALANI VERİ TABANI PROGRAMCILIĞI DALI DERS NOTLARI DONANIM BİRİMLERİ İÇ DONANIM BİRİMLERİ ANA KARTLAR Ana Kart Nedir, Yapısı Nasıldır? Anakart, bir bilgisayarın tüm parçalarını üzerinde barındıran ve bu parçaların iletişimini sağlayan elektronik devredir. Ana Kartın Bileşenleri 1.Yonga Seti (Chipset) Yonga seti (chipset) ana kartın "beynini" oluşturan entegre devrelerdir. Bunlara bilgisayarın trafik polisleri diyebiliriz: işlemci, önbellek, sistem veri yolları, çevre birimleri; kısacası PC içindeki her şey arasındaki veri akışını denetlerler. 2. Veri Yolları (BUS) Ana kart üzerindeki bileşenlerin birbirleriyle etkileşimde bulunmasını sağlarlar. Veri yolları geliştirilme sırası ile ISA (Industry Standard Architecture), PCI (Peripheral Componet Interconnect) , AGP (Advanced Graphics Port) ve PCIe (Peripheral Componet Interconnect Express)’dir ISA (Industry Standard Architecture): En eski veriyoludur. Günümüzde kullanılmamaktadır. PCI (Peripheral Component Interconnect): Halen sıklıkla kullanılan veriyoludur. Tak ve Çalıştır desteği vardır. PCI Express : Şu anki en hızlı veri yoludur. Ekran kartları da dahil olmak üzere birçok kart takılabilir. AGP (Accelerated Graphics Port) : Ekran kartları için özel olarak yapılmış PCI’dan daha hızlı bir veri yoludur. 3. Portlar ve Konnektörler 1. PS/2 Fare Portu: Yeşil renkte olan bu port, PS/2 fareler içindir. 2. Paralel Port: 25-pin’li port konnektörlere yazıcı, scanner ve diğer aygıtların takılabilir. 3. LAN (RJ-45) Port: Yerel alan ağlarında ağa bağlanmak için kullanılır. 4. Ses Girişi: Açık mavi renkte olan bu porta teyp, CD, DVD çalar ya da diğer ses kaynakları bağlanabilir. 5. Ses Çıkışı: Açık yeşil renkte olan bu porta kulaklık, hoparlör takılabilir. 6. Mikrofon Girişi: Pembe renkte olan bu porta mikrofon takılabilir. 7 ve 8. USB Port: USB cihazlar yeni yeni yaygınlaşmaktadır. USB portlara neredeyse her tür harici cihaz bağlanabilir. Özelliği, seri ve paralel portlara göre çok daha hızlı olması ve USB aygıtlar üzerindeki yeni USB portları aracılığı ile uç uca çok sayıda cihazın zincirleme bağlanabilmesidir. 9. VGA Port: 15-pin’li VGA porta monitör bağlanır. 10. Seri Port:Bu 9-pin’li COM porta seri aygıtlar bağlanabilir. 11. PS/2 Klavye Portu: Mor renkte olan bu porta klavye bağlanır. 4. Anakart Üzerindeki Bağlantı Soketleri: 1.Floppy Bağlantısı: 2.IDE Bağlantısı 3.SATA Konnektörleri: 4. Fan Konnektörleri: 5. Dijital Audio Konnektör 6. ATX Güç Konnektörleri 7. USB Konnektörler: 8. Sistem Panel Konnektörleri 9. İşlemci Soketi 10. Bellek Yuvaları 11. Bios ve Bios Pili Ana Kart Çeşitleri 1. XT Ana Kartlar: İlk kişisel bilgisayarlarda kullanılan ana kartlardır. 8086 veya 8088 mikroişlemcileri üzerinde sabit olarak taşıyan bu ana kartın ek donanım birimi sadece 8 bit olmalıdır. 2. AT Ana Kartlar: XT anakartlardan sonra günümüzde kullanılan ATX anakartlara benzeyen ama sadece 5 ve 12 volt güç alan anakartlardır.PS/2 desteği yoktur.ISA, PCI ve AGP veri yolları ile değiştirilebilir işlemci desteği sunar. 3. ATX Ana Kartlar: Kendinden önceki ana kart standartlarına göre daha fazla giriş/çıkış birimi sunar. Bellek yuvaları orta kısımda yer alır ve erişimi kolaydır. ATX ana kartları kullanmak için ATX kasalar gerekir. İşletim sisteminin özelliklerine göre güç yönetimi düzenlenebilir. Örneğin Windows işletim sistemi kapatıldığında bilgisayarın otomatik olarak kapatılması sağlanabilir. İŞLEMCİLER İşlemci Nedir? İşlemci, bilgisayarın birimlerinin çalışmasını ve bu birimler arasındaki veri akışını kontrol eden, veri işleme görevlerini yerine getiren elektronik aygıttır. İşlemciye ne yapmasını istediğimizi söyleyen programlar olmadığı sürece işlemci bir işe yaramaz. Bilgisayarda tüm programlar sabit diskte (hard disk) tutulur. İşlemci her saniyede milyonlarca, hatta milyarlarca komutu işleyebilir. Sabit disk, işlemcinin komut işleme hızına ulaşamaz. Bu sorunu ortadan kaldırmak için programlar sabit diskten alınarak RAM’e yüklenir. RAM’den de işlemciye aktarılır. Verinin sabit disk, RAM ve işlemci arasındaki akışı tek yönlü bir işlem değildir. İşlemcinin yaptığı işlemler sonucunda ürettiği veriler de işlemciden, RAM’e ve oradan da sabit diske alınarak, sabit diskte tutulur. MERKEZİ İŞLEM BİRİMİ ÇIKIŞ BİRİMİ GİRİŞ BİRİMİ İşlemcilerin Görevleri Bilgiyi alma Bilgiyi işleme Bilgiyi saklama Bilgiyi gönderme RAM DEPOLAMA BİRİMİ Şekil: Bilgisayarın İç Yapısı İşlemcinin Yapısı: ALU KONTROL BİRİMİ CORE GİRİŞ BİRİMİ ÇIKIŞ BİRİMİ CACHE RAM DEPOLAMA BİRİMİ Şekil: İşlemcinin İç Yapısı İşlemcinin yapısında bulunan birimler aşağıda kısaca açıklanmıştır. A) Çekirdek (Core): Komut çalıştırma işlemlerini yapan bölümdür. Çalıştırma birimi (execution unit) olarak da bilinir. B) ALU (Aritmetik Lojik Unit / Aritmetik Mantık Birimi): İşlemci tarafından gerçekleştirilecek matematiksel ve mantıksal işlemlerin yapıldığı bölümdür. C) Ön Bellek (Cache): Sistem belleğinden gelen veriler, çoğunlukla CPU’nun hızına yetişemezler. Bu problemi çözmek için CPU içinde yüksek hızlı hafızalar bulunur. Ön bellek çalışmakta olan programa ait komutların, verilerin geçici olarak saklandığı yüksek hızlı hafızalardır. İşlemcinin komutları daha hızlı yüklemesini sağlayan bu hafıza genellikle L1 (Level 1) ve L2 (Level 2) olmak üzere iki kısımdan oluşur. İşlemci, ihtiyaç duyduğu komutu ilk önce L1 ön bellekte (L1 ön bellek L2 ön bellekten daha hızlıdır.) arar. Eğer işlemcinin aradığı komut burada yoksa L2 önbelleğe bakar. Eğer burada da yoksa sırasıyla RAM ve sabit disk üzerindeki sanal hafıza üzerinde arar. Ön belleklerin kimisi işlemci ile aynı hızda çalışır. D) Kontrol Birimi : İşlemciye gönderilen komutların çözülüp (komutun ne anlama geldiğinin tanımlanması) işletilmesini sağlar. İşlemci içindeki birimlerin ve dışındaki birimlerin eş zamanlı olarak çalışmasını sağlayan kontrol sinyalleri bu birim tarafından üretilir. İşlemciler bilgisayarı yönetmek, kontrol etmek için iletişim yollarını kullanır. Hem işlemci içerisinde hem de işlemciyle diğer birimler arasında iletişim hatları bulunmaktadır. Adres Yolu (Address Buses): İşlemcinin bilgi yazacağı veya okuyacağı her hafıza hücresinin ve çevre birimlerinin bir adresi vardır. İşlemci, bu adresleri bu birimlere ulaşmak için kullanır. Veri Yolu (Data Buses): İşlemci, hafıza elemanları ve çevresel birimleriyle çift yönlü veri akışını sağlar. Kontrol Yolu (Control Buses): İşlemcinin diğer birimleri yönetmek ve eş zamanlamayı (senkronizasyon) sağlamak amacı ile kullandığı sinyallerin gönderildiği yoldur. Bilginin Getirilmesi: İşlemci tarafından işlenecek bilgi önce ön bellekte aranır. Ön bellekte yoksa işlemci RAM bellekten gerekli bilgiyi ister. İstenen bilgi ön bellekte de yoksa Sabit Diskten getirilir. Bellekler arasındaki hız ilişkisi; Ön Bellek > RAM > Sabit Disk şeklindeyken kapasite ters orantılıdır. Yani Sabit Disk > RAM Bellek > İşlemci. İşlemci tarafından istenen bilgi parçalar halinde sabit diskten RAM belleğe ordan da ön belleğe aktarılarak iletilir. Dolayısıyla işlemci Sabit diske kadar gidip veri almak zorunda kaldığı durumlarda, veriyi beklemesi gerekecek ve bilgisayar yavaş çalışacaktır. İşlemcilerin Soğutulması Üç Çeşit Soğutma Vardır Hava+Fan Soğutma: İşlemcinin üzerinde soğutucu ve onun da üzerinde fan bulunur. Soğutucu alüminyum veya bakır olabilir. Soğutucu işlemci üzerindeki sıcaklığı kanatlarına yayar ve üzerindeki fan da bu ısıyı işlemciden uzaklaştırır. Soğutucu ile işlemci yüzeyi arasına termal macun sürülerek ısı iletiminin daha iyi olması sağlanır. Su İle Soğutma: İşlemci üzerinde bulunan düzenek içerisinde su dolaşmaktadır. İşlemcinin üzerinde ısınan su radyatöre taşını ve fan yardımıyla soğutulan su tekrar işlemcinin üzerinde gönderilir. Böylece işlemcinin sürekli soğuk kalması sağlanır. Isıl Borulu Soğutma: İşlemci üzerindeki düzenek içerisinde çok kolay buharlaşıp tekrar yoğunlaşabilen özel bir sıvı bulunur. Boru içerisindeki sıvı işlemcinin sıcaklığıyla buharlaşarak borunun üst kısmına yükselir. Borunun tavanına çarpan buhar tekrar soğuyarak işlemcinin üzerine düşer böylece işlemci soğuk kalır. BELLEKLER RAM Bellekler Rastgele Erişimli Bellek manasına gelen RAM; işletim sisteminin, çalışan programların veya kullanılan bilginin geçici olarak depolandığı yerdir. RAM, ön bellekten sonraki en hızlı bellektir Geçici Belleklerdir yani bilgisayar kapandığında RAM deki bilgiler silinir RAM ler birbirinden tamamen bağımsız hücrelerden oluşur. Her hücrenin kendine ait farklı bir adresi vardır. Her hücrenin çift yönlü bir çıkışı vardır. RAM genellikle ana kart üzerindeki SIMM (Single Inline Memory Modules) veya DIMM (Dual Inline Memory Modules) adı verilen yuvalara takılır. Yarı İletken Özeliklerine Göre RAM Bellek Çeşitleri SRAM (Static Random Access Memory-Statik Rastgele Erişimli Bellek) SRAM’ler DRAM’lerden daha hızlıdır. SRAM’lerin üretim maliyetlerinin DRAM’lerinkine oranla çok daha yüksektir. DRAM ( Dynamic Ramdom Access Memory-Dinamik Rastgele Erişimli Hafıza) DRAM’lerin bellek tasarımcılarına çekici gelmesinin, özellikle de bellek büyük olduğu zaman, çeşitli nedenleri vardır. Teknolojik Gelişimlerine Göre Ram Çeşitleri: FPM DRAM (Fast Page Mode DRAM-Hızlı Sayfa Modu DRAM) EDO DRAM (Extended Data Out–Genişletilmiş Veri Çıkışı) SDRAM (Senkronize DRAM) DDR SDRAM (Double Data Rate SDRAM) DRD RAM ( Direct Rambus DRAM) ROM ( Read Only Memory ) ROM, RAM'in aksine üzerindeki bilgiler kalıcıdır. ROM birimine bilgi kalıcı olarak yerleştirilmiştir ve içerik kesinlikle değiştirilemez. Bilgisayarınızı kapatsanız bile üzerindeki bilgiler gitmeyecektir ROM'un birkaç versiyonu vardır. PROM (Programable Read Only Memory-Programlanabilir Yalnızca Okunur Bellek) EPROM (Erasable Programmable Read Only Memory – Silinebilir Programlanabilir Yalnızca Okunur Bellek) EEPROM (Electrically Erasable Read Only Memory - Elektiksel Olarak Silinebilen Programlanabilen Yalnızca Okunur Bellek) FLASH ROM (EEPROMlar ile aynıdır ancak daha hızlıdır) SABİT DİSKLER Sabit Diskin Görevi Sabit disk adından anlaşılacağı üzere verilerin sürekli olarak saklanması istenen durumlarda kullanılır. Bilgisayarın çevre birimleriyle uyumlu bir şekilde çalışması için gerekli işletim sistemi sabit disk üzerine kurulur. Ayrıca sürekli çalışması gereken yazılımlar da sabit disk üzerinde tutulur. Bir sabit disk kullanılmaya başlanmadan önce formatlanması gerekir (biçimlendirilir). Bir sabit diskin formatlanması demek, üzerine yazılacak bilgilerin nereye ve hangi standartlara göre yazılacağının belirtilmesi demektir. Formatlama işlemi yapılmamış bir sabit diskin üzerine anlamlı bilgi kümeleri yazmak söz konusu değildir. Sabit Diskin Yapısı Sabit diskler dönen disklerden oluşmaktadır. Diskler alüminyum veya cam gibi manyetik özelliği olmayan malzemeden yapılırlar. Her bir diskin yüzeyi manyetik alan etkisine sahip bantlarla kaplanır. Manyetik diskler üzerindeki dairesel çizgilere iz (track) denir Track ler üzerinde ayrılmış alanlara ise sector denir. Pizza dilimi gibi görünen kısımlara ise küme (cluster) adı verilir Sabit Disk Çeşitleri 1. IDE-EIDE (PATA) Advanced Technology Attachment kelimelerinin baş harflerinden oluşan ATA, kişisel bilgisayarlarda harddisk ve CD-ROM gibi depolama aygıtlarıyla bilgisayar arasında veri iletişimi gerçekleştiren bir arayüz standardıdır. ATA kısaltması için farklı kısaltmalar yaygın biçimde kullanılmaktadır (IDE, ATAPI ve UDMA). 2. SCSI SCSI’nin sunduğu yüksek veri hızı oranları ve çok sayıda cihaz bağlanabilme özelliği nedeniyle iş istasyonları, sunucular ve yüksek seviyeli sistemlerde SCSI harddiskleri yaygın olarak kullanılmaktadır. 3. Sata ATA teknolojisinin mirasçısı olarak ortaya çıkmış olup, seri veri iletişimine dayalı bir teknolojidir. Öncelikli olarak bilgisayar veri yoluyla harddiskler arasında veri iletişimi için geliştirilmiştir. 4. Firewire 5. Usb 6. Fiber Channel OPTİK DİSK SÜRÜCÜLERİ Verileri okuma ve yazmanın özel bir ışık sistemiyle gerçekleştirildiği optik depolama birimleridir. Bunları okuyan araçlara ise optik sürücüler denir. Üç temel optik disk türü vardır. Bunlar; CD (compact disk), DVD (digital versatile disk / dijital çok yönlü disk) ve BluRay (mavi lazer teknolojili disk) dir. CD-ROM ve CD-Writer sürücüleri CD Çeşitleri CD-ROM: Fabrikada bir kez kaydedilip daha sonra silinip değiştirilemeyen diskler CD-R: Piyasaya boş olarak sürülen bir kez veri kaydedildikten sonra silinip değiştirilemeyen disklerdir. CD-RW: Tekrar tekrar silinip veri kayıt edilebilen disklerdir. Günümüzde en çok kullanılan CD-R ler ve CD-RW’ler 700 MB kapasitesine sahiptir. CD-ROM veya CD-writer’ın okuma yazma hızları performansını gösterir. Üzerindeki “x” çarpanıyla ifade edilir. “x” bu donanım birimi için 150 KB/s anlamındadır. Her CD Writer için üç adet hız değeri vardır bunlar; boş CD yazma hızı, tekrar yazma hızı ve okuma hızıdır. Yazma hızı, her zaman okuma hızına eşittir ya da ondan daha yavaştır. Optik sürücüyü bilgisayara bağlamak için üç seçenek vardır. Eğer haricî olarak kullanılacaksa USB, dâhilî olarak kullanılacaksa IDE veya SATA ara birimleriyle bağlanabilir. DVD-ROM ve DVD-Writer Sürücüleri DVD disklerinde DVD-ROM, DVD+R, DVD+RW ve DVD-RAM gibi çeşitleri bulunmaktadır. DVD’yi en iyi tanımlayan tek kelime kapasitedir. Veri kümeleri burada daha yakın ve daha küçük yapıya kavuşarak aynı büyüklüğe daha çok veri sığdırılmıştır. Tek katmanlı ve tek yüzlü DVD 4.7GB, çift katman çift yüz DVD diskler ise 17 GB veri depolayabilmektedir. CD’lerle fiziksel büyüklükleri aynı fakat kapasiteleri farklıdır. DVD diskleri üzerinde 12x, 16x, 24x rakamları maksimum yazma hızını belirtir. Hız ifadesindeki "x" çarpanı DVD’ler için yaklaşık 1318 kilobayt değerindedir. DVD-RW’ler ise tekrar tekrar yazılıp silinebilen DVD çeşitleridir. Blu-Ray sürücüleri Blu-ray sürücüleri mavi lazer kullanarak diskler üzerinde daha hassas odaklama yapabilmektedir. Blu-ray’in de CD ve DVD’ye karşılık gelen türleri vardır. BD-ROM, dağıtımlar için sadece okunabilir biçimi, BD-R üzerine veri kaydedilebilir biçimi, BD-RE ise yeniden yazılabilir biçimi ifade eder. Tek katmanda 27 GB, çift katmanda 54 GB veri depolayabilir. DONANIM KARTLARI EKRAN KARTI Ekran kartı, mikroişlemcide (CPU) işlenen verileri monitörde görüntülenmesini sağlayan sinyallere dönüştüren bir Genişleme kartıdır. Ekran kartlarında standart bir monitör (VGA) çıkışı vardır. Günümüzde bazı ekran kartlarında, TV görüntülerini bilgisayar sisteminde görüntülemek için TV-Out, video görüntülerini için Video-In, dijital çıktı aygıtlarını kullanmak için DVI bağlantıları da bulunmaktadır. Ekran Kartının Yapısı 1. Grafik İşlemcisi (GPU) Grafik işlemcisi görüntü hesaplamalarını ve görüntü işlemlerini ekran kartında gerçekleştiren bir yongadır. 2. Görüntü Belleği (Video RAM) Görüntü ile ilgili hesaplamaların tutulduğu bellektir. Bilgisayar sistemindeki ana bellek gibi çalışır. Görüntü belleği bilgileri grafik işlemcisinden alır ve bunları saklar. Görüntü belleğinin büyüklüğü ekran kartının performansıyla doğru orantılıdır. Yüksek çözünürlükle kaliteli görüntü alabilmek için görüntü belleği kapasitesinin büyük olması gerekir. 3. Dijital Analog Çevirici (RAMDAC ) Ekran kartının görüntü belleğindeki dijital (sayısal) verileri monitörde görüntülenecek analog sinyallere dönüştürerek ekran kartının monitör çıkışına gönderir. RAMDAC ekran kartı görüntü belleğini saniyede belirli sayıda tarayıp verileri alıp analog sinyallere dönüştürüp monitöre aktarır. 4. Video BIOS Video BIOS, ekran kartı içindeki tüm veri akışını düzenler ve ekran kartı bileşenleri arasındaki koordinasyonu sağlar. Bu işlemleri yapabilmesi için için video bios içinde bir yazılım vardır. 5. Ekran Kartı Çıkış Bağlantıları VGA-OUT: CRT monitörlerin ve projeksiyon aygıtlarının bağlandığı ve bu aygıtlara görüntü aktarıldığı çıkış portudur. DVI-OUT: Dijital cihazlara ve LCD ekranlara görüntü aktaran çıkış portudur. VİDEO-IN/OUT: Televizyon, video, VCD player, DCD gibi aygıtlardan görüntü alan veya aktaran porttur. HDMI: Yüksek Çözünürlüklü görüntü ve ses aktarmak için kullanılan bir çıkış portudur. 6. Z-Buffer (Tampon Bellek) 7. Video Codec Ekran Kartının Çalışması Bilgisayardaki tüm verinin kaynağı mikroişlemcidir. Mikroişlemci görüntülenmesi istenen bilgiyle ilgili verileri önce RAM belleğe aktarır daha sonra ordan alınan veriler anakart üzerinden ekran kartı yuvası yardımıyla ekran kartına aktarılır. Ekran kartına gelen bilgi ilk önce VIDEORAM belleğe alınır. Burada alınan veri GPU tarafından işlenerek elde edilen görüntü verisi tekrar VIDEORAM’e yazılır. Eğer kullanılan monitör CRT ise bellekten alınan veri RAMDAC’a aktarılır. RAMDAC dijital bilgiyi analog bilgiye çevirerek VGA portu ile monitöre gönderir. LCD monitör ise görüntü direkt olarak DVI porta yönlendirilir. SES KARTI Ses kartı bilgisayardaki dijital ses verilerini analog ses sinyallere, analog ses sinyallerini de bilgisayarda işlenebilecek dijital sinyallere dönüştürür. Bilgisayarda ses kartı olmaması bilgisayarın çalışmasını engellemez. Sadece ses ile ilgili işlemler yapılmaz. Ses kartları anakartın PCI Express veya PCI slotuna takılır. Günümüzde anakartların çoğunda ses kartlarını anakartla bütünleşiktir (onboard). Bazı ses kartları ses kaydederken aynı anda ses de çıkarır, bu tür ses kartları“full-duplex” olarak nitelendirilir. Ses Kartının Yapısı DSP (Dijital Sinyal İşlemcisi) : DSP seslerin üretilmesini sağlar. Ses kartına gelen dijital sinyalleri işler. DSP, notaları hafızadan değişik hızlarda okuyarak sesin çıkmasını sağlar. İşlenenen sinyalleri bilgisayarın işlemcisine gönderir. DAC (Dijital Analog Çevirici) : Bilgisayardaki dijital ses verileri çıkış birimlerine aktarılırken ses kartındaki dijital analog çevirici bu verileri analog sinyallere dönüştürüp ses kartının çıkışına gönderir. ADC (Analog Dijital Çevirici) : Mikrofon veya diğer müzik aygıtlarından alınan analog ses sinyallerini dijital sinyallere dönüştürür Bellek : Ses ile ilgili dijital verileri depolamak için kullanılan bellektir. DSP tarafından işlenen veriler bu belleğe gönderilir. TAD (Telefon Cevaplama Aygıtı), AUX_IN, CD_IN S/P DIF Ses Kartının Çalışması Ses Girişi Bilgisayarın çevre birimlerinde girilen analog ses sinyalleri ses kartına aktarılır. Ses kartının analog dijital çeviricisi (ADC) tarafından analog ses sinyalleri dijital sinyallere dönüştürülerek belleğe aktarılır. Dijital hale dönüştürülmüş ses sinyalleri DSP tarafından işlenir. DSP verileri MİB ne gönderir MİB ise depolanması için depolama birimlerine aktarır. Ses Çıkışı MİB, depolama birimlerinden ses bilgilerini alır ve ses kartının belleğine aktarır. DSP bellekten bilgileri alarak işler ve belleğe tekrar gönderir DAC tarafından dijital sinyaller analog sinyallere çevrilerek ses kartının çıkışına gönderilir. ETHERNET KARTI Ethernet kartı, bilgisayar ağlarında bilgisayarla ağ arasında iletişimi sağlar. Ethernet kartlarının çıkış noktaları RJ-45 veya BNC konektörlere uygun olarak tasarlanmıştır. RJ-45 konektörler çift bükümlü kablolaları, BNC konektörler koaksiyel kabloları kullanır. Günümüzdeki ethernet kartları R-45 konektörlere uygun olarak üretilmektedir. Ayrıca bazı ankartlarda ethernet kartları anakarta tümleşik olarak üretilmektedir. Bu kartlar 10 Mbps, 10/ 100 Mbps, 1000 Mbps gibi farklı veri iletim hızlarına sahiptir. MAC (Media Access Control) Adresi Her bir ethernet kartında sadece o karta ait olan bir 48 bitlik numara vardır. Buna MAC adresi denir. MAC adresi üretici firma tarafından kartın rom belleğine üretim sırasında kaydedilir ve bu numara değiştirilemez. Bilgisayar ağlarında veri alış-verişi bu MAC adresleri kullanılarak yapılır. MAC adresi ile ethernet kartları birbirlerinden ayırt edilir. GÜVENLİK KARTI Güvenlik kartı, sisteminizi bilgisayar virüslerinin etkilerine, kaza sonucu dosyaların silinmesine ya da bozulmasına, elektrik kesintisinden oluşan yazılım bozulmalarına ve yetkisi olamayan kullanıcıların yapılandırma ayar değişiklerine karşı koruyan kartlardır. Tüm yazılım ve donanımlarıyla hazır hâle getirilen bilgisayar sisteminize en son güvenlik kartı monte edilir. Yazılımı yüklendikten sonra devre dışı bırakabilmek için bir şifre belirlenir. Aktif edildikten sonra çalışma esnasında yapılan bütün değişiklikler, bilgisayar yeniden başlatıldıktan sonra eski hâline geri dönecektir. DIŞ DONANIM BİRİMLERİ Bilgisayarın doğrudan bir parçası olmayan ancak bilgisayara daha sonradan çeşitli portlar vasıtasıyla bağlanan cihazlara dış donanım birimleri ismini veriyoruz. MONİTÖRLER Monitör, bilgisayar içerisindeki bilgilerin kullanıcıya aktarılması amacıyla kullanılır. Monitör çeşitleri Monitörler yapılarına göre CRT (Cathode Ray Tube), LCD (Liquid Crystal Display), plazma ve LED olmak üzere 4’e ayrılır. Bilgisayar monitörlerinde genellikle CRT ve LCD ekranlar kullanılırken Plazma ve LED ekranlar daha çok televizyon ekranı olarak kullanılmaktadır. Ancak özellikle yeni üretilen laptop modellerinde LED ekranlar da kullanılmaktadır. CRT (cathode ray tube) monitörler: LCD (liquid crystal display): Plazma ekranlar: LED ekranlar: Monitör Bağlantıları Monitörlerle ilgili Temel Kavramlar Çözünürlük: Ekranların çıktıları (resim, video, program ara yüzü…) gösterirken kullanacağı nokta sayısını gösterir. Bu noktalara piksel denmektedir. Yaygın çözünürlük değerlerinden 800x600, 1024x768, 1280x1024 değerleri vardır. Masaüstü bilgisayarlarda yaygın olarak 800x600 ve 1024x768 değerleri kullanılmaktadır. Çözünürlük azaldıkça ekrandaki resimler daha büyük ve kalitesiz görülecektir. Ekran boyutu: Ekranın köşegen uzunluğunu (bir köşesinden diğer köşesine olan uzaklığını) gösterir. İnç olarak ifade edilir. 17, 19, 21, 23, 101… gibi değerler vardır. Ekran boyutu için LCD ekranlarda görülebilir alan (kasa hariç) kastedilirken; CRT ekranlarda kasa dâhil edilmektedir. Not: 1 inç = 2.54 cm değerindedir. İki piksel arası uzaklık (dot pitch): Ekranda iki piksel arası en yakın uzaklığı belirler. Uzaklığın az olması daha fark edilebilir, keskin renk geçişlerinin olduğu görüntüler anlamına gelir. Günümüzde 0.21, 0.24, 0.25, 0.27, 0.28 mm gibi değerler vardır. En/boy oranı (aspect ratio): Ekranın en ve boy oranlarını gösterir. Genelde bu oran 4:3’tür. Mesela 1024x768 çözünürlüğe sahip bilgisayarda en boy oranı 4:3’tür. Ama günümüzde 16:9, 16:10 gibi oranlar da mevcuttur. 16:9 oranına “widescreen” (geniş ekran) ekran denilmektedir. Ekran tazeleme oranı (refresh rate): Ekranın baştan aşağıya saniyede taranma sayısını gösterir. Başka bir deyişle ekrandaki görüntünün saniyedeki oluşurulma sayısıdır. Düşük orana sahip ekrandaki görüntüler titrer ve dolayısıyla kullanıcının gözünü yorar. Ölü pikseller: Ölü pikseller görüntü değiştiği hâlde rengi değişmeyen ekran üstündeki noktalardır (piksel). Tepki süresi: Özellikle LCD ekranların seçiminde önemlidir. Bir pikselin istenen rengi alması için geçen süre onun tepki süresidir. Ekranlardan bu sürenin az olması istenir. Görüş açısı: Ekrana belirli bir açıdan bakıldığında oluşan renk kaybıdır. CRT ve plazma ekranlarda görüş açısı daha iyidir. PROJEKSİYON CİHAZLARI Bilgisayar veya televizyon ekranındaki görüntüyü daha da büyüterek perdeye ya da duvara yansıtan görüntü cihazlarıdır. Projeksiyon Cihazı Çeşitleri Projeksiyon cihazları LCD, LED ve DLP diye üç farklı yapıya sahiptir. Yaygın olarak üretilen ve kullanılan tipler LCD ve DLP çeşitleridir. Projeksiyon cihazlarında duvardaki görüntüyü oluşturmak için kullanılan ışık kaynağı yüksek güçlü lambadan oluşur. Kullanılan lambanın ömrü ve gücü, projeksiyon cihazı seçimi açısından önemlidir. YAZICI (PRINTER) Bilgisayarda hazırladığınız yazı, hesap tablosu, resim ve benzeri içerikleri kâğıda dökmek amacıyla kullanılır. Yazıcıları bilgisayarınıza USB veya LPT bağlantısı kullanarak bağlayabileceğiniz gibi kablosuz bağlantıyla çalışan yazıcılar kurmanız da mümkündür. Bazı ağ cihazlarının ve ADSL modemlerin üzerinde bulunan yazıcı bağlantı noktası ve cihazdaki yazıcı sunucusunu kullanarak bir yazıcıyı birden çok bilgisayarın aynı anda kullanabileceği ağ yazıcısı olarak da kurabilmektesiniz. Yazıcılar renkli ve siyah beyaz olarak yazı ve resim basabilmektedir. Yazıcı Çeşitleri Nokta Vuruşlu (Dot Matrix) Yazıcılar Yazma işlemi, mekanik olarak mürekkepli bir şeride yazma kafasının vurması ile (daktilo gibi) gerçekleşir. Yazılar diğer yazıcı tiplerine göre daha büyük noktalardan oluşur. Sesli çalışır ve aynı anda karbon kâğıdı kullanılarak birden fazla sayfayı yazabilir. Bu yazıcı seçiminde yazıcı kafadaki pin (iğne) ve kolon sayısı önemlidir. Pin sayısı bir anda kâğıt üzerine bırakılabilecek nokta sayısını gösterir. Kolon sayısı ise bir satırdaki basılacak harf adedini gösterir. Nokta vuruşlu yazıcılar, sayfa başına düşük yazdırma maliyeti fakat yüksek yazıcı fiyatına sahiptir. Baskı kaliteleri yüksek değildir. Dolayısıyla sadece metin içeriklerini, genellikle de fatura, irsaliye ve makbuz yazdırmada kullanılır. Ev kullanımı için uygun değildir. Mürekkep Püskürtmeli (Ink Jet) Yazıcılar Mürekkebin kâğıt üzerine püskürtülme esasına dayalı olarak çalışan yazıcılardır. Yazıcı kafası, üzerinde siyah ve renkli mürekkep kartuşlarını taşır. Yazma sırasında, kâğıdı satırın başından sonuna kadar tarar ve sonra alt satıra geçer. Tarama sırasında mürekkep püskürtülecek noktalara mürekkep, bu kafa tarafından kâğıt üzerine bırakılır. Kartuşlar genelde ısı ile damla oluşturma esasına göre mürekkep püskürtür. Tüp içerisinde ısıtıcının ısınarak basıncı artırıp damlanın dışarı çıkmaya zorlanması ile püskürtme işlemi gerçekleşir. Mürekkep püskürtmeli yazıcılar, günümüzde bulundukları konum itibariyle fotoğraf kalitesinde resimlerden düşük çözünürlüklü siyah beyaz yazılara kadar çeşitli türde baskı yapabilmektedir. Ayrıca yazıcı fonksiyonuna ek olarak bünyesinde fotokopi çekebilme ve resim tarayabilme özelliklerini de barındıran çok fonksiyonlu yazıcı modellerinin sayısı oldukça fazladır. Son yıllarda üretilen mürekkep püskürtmeli yazıcılara “Bluetooth” üzerinden kablosuz bağlantı ile resim gönderebilme, dijital fotoğraf makinenizin hafıza kartını yazıcınıza takarak anında baskı alabilme gibi ilave fonksiyonlar da eklenmiştir. İlk satın alma maliyetleri düşük fakat sayfa başı maliyetleri fazladır. Lazer Yazıcılar Lazer yazıcılar, yazım işleminde toner denilen kurumuş mürekkep kullanır. Elektrostatik yükleri üzerinde tutabilen bir tambura sahiptir. Tambur ilk olarak pozitif yüke sahiptir. Lazer ışını bilgisayardan gelen komuta göre istenen noktaları tarayıp negatif yükle yükleyerek elektrostatik baskı resminin negatifini oluşturur. Pozitif yüklü noktalar basılacak Şekil, negatif kısımlar ise arkalandır. Toner tambur üzerinde bu noktalara yapışarak kâğıdın yüzeyine yapıştırılır. Daha sonra kâğıt ısıtılarak toner iyice kâğıt üzerinde kalıcı hâle getirilir. Sonrasında ise tamburdaki baskısı biten elektrostatik resim temizlenir. Lazer yazıcılar, çok hızlı ve fazla miktarda baskı yapmanıza imkân verir. Lazer yazıcıların renkli olanları da vardır. Birim sayfa başına düşen maliyet genelde daha azdır. Yazıcılarla İlgili Temel Kavramlar Çözünürlük: Birim alana bırakılabilecek nokta sayısını gösterir. Birimi inç başına düşen nokta sayısıdır (dpi). Çok olması baskı kalitesini artırır. TARAYICI (SCANNER) Kitap, dergi, gazete, fotoğraf gibi çeşitli basılı dokümanlarda bulunan renkli veya siyah beyaz yazıları, resimleri bilgisayar ortamına aktarmak için tarayıcılar kullanılmaktadır. Tarayıcılar, dokümanın ince bir satır hâlinde ışıklandırılıp yansıyan ışığın algılanması prensibi ile çalışır. Algılanan ışık seviyeleri sensör tarafından gerilime dönüştürülerek ADC üzerinden sayısala çevrilip bilgisayara aktarılır. Burada sensörün boyutları ve ADC’nin çözünürlüğü taranan materyalin kalitesi açısından önemlidir. Işık kaynağı doğrusal ve tek boyutlu bir yapıya sahiptir. Tarayıcı içerisinde CCD optik algılayıcı, yansıyan ışığı CCD üzerine toplayan lens, yansıyan ışığı CCD üzerine taşıyan aynalar ve tüm bu sistemi yatay düzlemde ileri geri hareket ettiren step (adım) motor barındırır. Tarayıcıların Bağlantıları Tarayıcıların hangi bağlantı noktası üzerinden bilgisayara bağlandığı, verilerin tarandıktan sonra bilgisayara gönderilmesi aşamasında önemlidir. Bağlantı noktasının bant genişliği ne kadar yüksekse aktarım o kadar hızlı gerçekleşir. Günümüzde paralel port, SCSI, USB ve firewire arayüzüne sahip tarayıcılar bulunmaktadır. KAMERALAR Dijital Kameralar Dijital kameralar vasıtası ile fotoğraf çekip bunları bilgisayara aktarabilir ya da fotoğraf yazıcıları yardımı ile baskı yapabilirsiniz. Dijital kameralarla ilgili temel kavramlar Çözünürlük: Her karede kaç piksel olduğunu gösteren bu değer çektiğiniz fotoğrafın kalitesini belirlemektedir. Çözünürlük değerinin yüksekliği kaliteyi artıracaktır ancak fotoğrafın hafızada kapladığı alanı da artıracaktır. Çözünürlük değerleri sensör tipinin çözünürlük değerleridir. Fotoğraf makinelerinde CMOS ve CCD sensör olmak üzere iki tip sensör kullanılmaktadır. CCD daha çok enerji harcar, kolay ısınır, daha temiz ve kaliteli görüntü elde eder. CMOS ise daha az enerji harcar, ucuzdur, kolay üretilir fakat daha az kaliteli görüntüler elde eder. Genişleme yuvası: Dijital kameraların çözünürlükleri yüksek fakat iç hafızaları düşük olduğundan fotoğraf çekme kapasiteleri tamamen hafıza kartlarına bağlıdır. Yakınlaşma (zoom) özelliği: Yakınlaşma özelliği optik ve dijital olmak üzere iki çeşittir. Optik yakınlaştırma, mercek ile yapılan gerçek yakınlaştırmadır. Dijital yakınlaştırma ise yazılımsal yakınlaştırmadır. Kalite kaybına neden olur. Dolayısı ile bir fotoğraf makinesi alırken en önemli husus dijital zoom oranının yüksekliğinden ziyade, optik zoom oranının yüksekliğidir. Dijital yakınlaştırmanın diğer adı “interpolasyon”dur. Diyafram: Diyafram; kullanıcının gündüz veya gece, güneşli ya da kapalı havalarda en ideal fotoğrafı çekmesine imkân tanır. Diyaframın özelliği, mercek üzerine düşen ışığın miktarını, kapanıp açılarak ayarlayabilmesidir. Diyafram ışık yoğunluğunun fazla olması durumunda kapanır, az olması durumunda da açılarak genişler. Bu sayede kullanıcı, güneşli ve parlak bir havada da gece karanlıkta da benzer netliği yakalar. BİLGİSAYAR KAMERASI (WEBCAM) Bilgisayara resim ve görüntüyü aktarmak için kullanılan donanım birimidir. WebCam ile evde video ve resimler çekmek, ayrıca internet alt yapısını kullanarak görüntülü konuşmak mümkündür. Bunun için birçok üretici WebCam üzerine tümleşik olarak mikrofon koymaktadır. WebCam’ler USB port üzerinden bilgisayara bağlanır. WebCamler’de görüntüyü yakalamak için optik sensörler kullanılır. Sensörlerin üzerinde binlerce küçük optik (ışık) algılayıcı vardır. Bu algılayıcılar dışarıdan gelen ışığı elektriksel işarete dönüştürdükten sonra sayısala çevirip bilgisayara gönderir, böylece görüntü elde edilir. Bir sensör üzerinde ne kadar çok algılayıcı varsa görüntüye ait o kadar çok ayrıntı algılanabilir. WebCam’ler kullanılan sensör tipine göre CMOS ve CCD olmak üzere ikiye ayrılır. CCD daha çok enerji harcar, kolay ısınır, daha temiz ve kaliteli görüntü elde eder. CMOS ise daha az enerji harcar, ucuzdur, kolay üretilir fakat dahagürültülü (görüntü üzerinde istenmeyen noktacıklar) ve daha az kaliteli görüntüler elde eder. WebCam’lerle ilgili temel kavramlar Çözünürlük: Sensör üzerindeki algılayıcı miktarını gösterir. Mega piksel (MP) olarak değerlendirilir. Ne kadar çok olursa o kadar iyi ve ayrıntıların yer aldığı görüntüler elde edilir Gece aydınlatmalı LED ışıklar: Gece görüntü almaya yardımcı çeşitli sayıda LED lambalara sahip WebCam’ler, aydınlığı düşük ortamlarda daha iyi görüntüler elde etmek için kullanılabilir. Zoom (Büyütme): Görüntüyü daha da büyütmek için gerekli bir özelliktir FPS (Frame per second): Webcam’in saniyede yakaladığı görüntü sayısını gösterir. İŞLETİM SİSTEMLERİ KURULUM BIOS BIOS terimi; “Basic Input / Output System” (Temel Giriş/ Çıkış Sistemi) kelimelerinin baş harflerinin birleşmesiyle meydana gelmiştir. BIOS, bilgisayar ilk açıldığı anda çalışmaya başlayan küçük bir yazılımdır İlk olarak bilgisayarın donanımını tarar ve test eder. Bu işlem Power On Self Test ( İlk açılışta kendini sınama) veya POST olarak adlandırılır. BIOS Çeşitleri Piyasadaki BIOS çeşitleri şunlardır; Award Software Phoenix BIOS AMI BIOS Award Medallion BIOS ( Phoenix BIOS + Award BIOS ). HATA MESAJLARI Sesli Hata Mesajları Bilgisayar, POST esnasında ekranın açılışını engelleyici bir hata ile karşılaşırsa, bu hatanın ne olduğunu kullanıcıya bildirmek için çeşitli ses sinyalleri gönderir. Çeşitli sayı ve uzunlukta olan bu sinyallere “Sesli Hata Mesajları” denir. Yazılı Hata Mesajları 1. BIOS ROM checksum error - System halted (BIOS ROM kontrol hatası- Sistem durduruldu). 2. CMOS battery failed (CMOS pili hatası). 3. CMOS checksum error - Defaults loaded (CMOS kontrol hatası- Varsayılan ayarlar yüklendi). 4. Floppy disk(s) fail (Disket sürücü). 5. Keyboard error or no keyboard present (Klavye hatasıveya mevcut klavye yok). 6. Memory test fail (Hafıza testi hatası). 7. Hard Disk(s) Fail (Sabit disk hatası). 8. Disk boot failure, insert system disk and press enter (Disk başlatma başarısız, Sistem diskini yerleştirin ve “Enter” tuşuna basın). 9. Non system disk or disk error. Replace and press any key to continue (when ready) (Sistem disketi değil veya disk bozuk. Yeniden yerleştir ve devam etmek için (hazır olduğunda) herhangi bir tuşa bas.) İŞLETİM SİSTEMLERİ GELİŞMİŞ ÖZELLİKLER Sistem Ve Bakım 1. Sistem Geri Yükleme Sistem Geri Yükleme, kişisel bilgisayarın sistem dosyalarını ve programlarını her şeyin yolunda gittiği bir zamana döndürerek sorun giderme için saatlerce çabalamaları potansiyel olarak önler. 2. Disk Birleştirme Disk birleştirme bir birimdeki (örneğin, bir sabit disk veya depolama aygıtı) verilerin birleştirilmesi işlemidir. Bir birime dosya kaydettikçe, değiştirdikçe ve sildikçe za man içinde parçalanma ortaya çıkar. Bir dosyada kaydedilen değişiklikler, genellikle birimde orijinal dosyadan farklı bir yerde depolanır. Bu durum dosyanın işletim sisteminde göründüğü yeri değiştirmez, yalnızca dosyayı oluşturan bilgi bitlerinin gerçek birimde depolandığı yerleri değiştirir. Zamanla hem dosya hem de birimin kendisi parçalanır ve bilgisayar tek bir dosyayı açmak için farklı konumlara bakması gerektiğinden yavaşlar. Disk birleştirici için aşağıdaki yolları izlenir: “Disk Birleştiricisi”ni açmak için Başlat arama kutusuna Disk Birleştiricisi yazıp ardından sonuç listesinde “Disk Birleştiricisi” tıklanır. Yönetici parolası veya onay istenirse parola yazılır veya onay verilir. “Zamanlamayı Yapılandırma” tıklanıp birleştirmenin saati, sıklığı ve birleştirilmek istenen birimler seçilip ayar yapılabilir. 3. Disk Denetleme Bazı bilgisayar sorunları sürücü veya sürücülerde hataları denetleyerek çözülebilir. Örneğin, bazı performans sorunlarını düzeltmek için bilgisayarın ana sabit diskini denetleyebilir veya bir dış sabit diskin düzgün çalışıp çalışmadığına bakılabilir. Uygulanması gereken adımlar; BilgisayarDenetlenmesi istenen SürücüSağ Tık ÖzelliklerAraçlar SekmesiHata Denetimi'nin altında “şimdi Denetle” kullanılmaktadır. Tarama işleminin algıladığı dosya ve klasörlerle ilgili sorunları otomatik olarak onarmak için “Dosya Sistemi Hatalarını Otomatik Olarak Düzelt” seçeneğini belirlenir. Aksi durumda disk denetimi sorunları bildirir ama onarmaz. Kapsamlı bir disk denetimi gerçekleştirmek için “Bozuk Bölümleri Tarayıp Düzeltmeye Çalış” seçeneği belirlenir. Tarama işlemi, sürücüdeki fiziksel hataları bulup onarmaya çalışır ve tamamlanması uzun zaman alabilir. Dosya hatalarını ve fiziksel hataları birlikte denetlemek için hem “Dosya Sistemi Hatalarını Otomatik Olarak Düzelt” seçeneğini hem de “Bozuk Bölümleri Tarayıp Düzeltmeye Çalış” seçeneği işaretlenir. 4. Disk Temizle Diskte yer açarak bilgisayarın daha hızlı çalışmasını sağlamak ve sabit diskteki gereksiz dosyaları azaltmak için “Disk Temizleme” kullanılır. Bu özellik, geçici dosyaları siler, “Geri DönüĢüm Kutusu”nu boşaltır ve artık gerekmeyen çeşitli sistem dosyaları ile diğer öğeleri kaldırır. 5. Kayıt Defteri İşletim sisteminde bulunan; sistem donanımı, yüklü programlar, ayarlar ve bilgisayardaki tüm kullanıcı hesaplarının profilleri ile ilgili önemli bilgileri içeren bir veri tabanıdır. işletim sistemi ile gelen kayıt defteri düzenleyicisi regedit.exe adlı hizmet programıdır. İşletim sistemi sürekli olarak kayıt defterindeki bilgilere başvurur. Kullanıcı Hesapları ve Aile güvenliği Kullanıcı hesabı oluşturarak kullanıcı hesaplarıyla tek bir bilgisayarı birkaç kişi kolayca paylaşabilir. Herkesin masaüstü arka planı veya ekran koruyucu gibi benzersiz ayar ve tercihleri olan ayrı bir kullanıcı hesabı bulunabilir. Kullanıcı hesapları, kullanıcıların erişebileceği dosya ve programları, bilgisayarda yapabilecekleri değişiklikleri denetler. BİLGİSAYAR AĞLARI Bilgisayar ağları, birçok bilgisayarın iletişim kolaylığı sağlamak, yazılımları, donanımları, veri veya dosyaları paylaşmak amacıyla birbirleriyle iletişim kurmalarıyla oluşan yapılardır. Bilgisayar ağları ile zamandan ve mekandan kazanılırken büyük bir maddi tasarruf da edilir. Bilgisayarların ağ kurabilmeleri için birbirleriyle iletişim kurmaları esastır. İletişim iki yöntemle yapılır: Paralel İletişim: Verilerin paralel hatlardan aynı anda bir bilgisayardan diğer bilgisayara aktarılmasıdır. Veriler tek bir seferde aktarıldığı için hızlıdır. Seri İletişim: Verilerin tek bir hat üzerinden birbiri arkasına sırayla aktarıldığı iletişim şeklidir. Asenkron ve Senkron seri iletişim olmak üzere iki çeşittir. Senkron seri iletişimde veri paketi gönderileceği zaman bir hat oluşur ve transferin ardından hat kapatılır. Asenkron seri iletişimde ise hat her zaman açıktır istenildiği zaman veri gönderilip alınabilir. NOT: Paralel iletişim yöntemi, seri iletişim yöntemine göre daha hızlı olmasına rağmen paralel portlar, seri portlardan daha yavaştır. Bilgisayar Ağları Çeşitleri Bilgisayarı kapladıkları alana (ağın büyüklüğüne) ya da özelliğine göre gruplandırılabilir - LAN (Local Area Network – Yerel Alan Ağı) Aynı oda, aynı bina veya komşu binalar arası kurulan küçük ağlardır. Çok sayıda bilgisayar içermez. LAN ağlarının altyapısı, kablolaması, ağ ayarları, malzeme temini ağı kuran kişi tarafından sağlanır. WLAN (Wireless LAN – Kablosuz LAN) : Kablosuz özellikli LAN ağlarıdır - MAN (Metropolitan Area Network – Metropol Alan Ağı) LAN ağları biraya gelerek MAN ağlarını oluştururlar. Genellikle şehirlerarası veya geniş bir yerleşkede kurulan ağlardır. - WAN (Wide Area Network – Geniş Alan Ağı) LAN ve MAN ağlarının birbirine bağlanmasıyla oluşan geniş ağladır. Geniş alanlarda; farklı mahalle, farklı şehir, farklı ülke, farklı kıtalar arasında kurulan ağlardır. Çok fazla bilgisayar dahil olabilir. En geniş WAN internettir. Geniş alan ağlarının tesisatı için servis sağlayıcılardan destek alınır. - VPN (Virtual Private Network – Sanal Özel Ağ) Geniş alan ağı üzerinde tanımlanan daraltılmış, sınırlandırılmış özel ağlardır. - SAN (Storage Area Network – Depolama Alan Ağı) Depolama alan ağları, büyük ağ kullanıcılarına hizmet vermek üzere farklı tipteki veri depolama cihazlarını birbirine bağlayan ve bu cihazlar arasında veri alışverişine olanak veren özel amaçlı, yüksek hızlı bir ağdır. Ağ Topolojileri Ortak Yol (Bus) Topolojisi: Şekilde görüldüğü gibi ana bir yol (bus) üzerine T-Konnektörler ile bağlantı yapılan topolojidir. Hattın başına ve sonuna sonlandırıcı (terminatör) takılmalıdır. Çok kablo kullanılmadığından ve özel bir cihaza gerek duyulmadığından kurulması kolay ve ucuzdur. En fazla 30 bilgisayar bağlanabilir. Hatta veya bilgisayarlardan herhangi birinde oluşan arıza tüm ağı etkiler ve iletişim kesilir. Dolayısıyla arıza tespiti de zordur. Yıldız (Star) Topoloji Merkezi bir birim vardır. Tüm ağ iletişimi o merkezi birim tarafından sağlanır. Yeni bir bilgisayar eklemek kolaydır. Bilgisayarlardan birinin bağlantısının kesilmesi sadece o bilgisayarı devre dışı bırakır, ağın kalanının iletişimi devam eder. Dolayısıyla arıza kolay tespit edilir. Her bilgisayara ayrı kablo çekildiğinden ve merkezi birim zorunlu olduğundan daha kurulum maliyeti fazladır. Merkezi birimin arızalanması durumunda tüm ağ iletişimi kesilir. Ağaç (Tree) Topoloji Genellikle yıldız topolojideki ağları birbirine bağlayarak ağı genişletmek için kullanılır. Ortak Yol ve Yıldız topolojinin birleşmesiyle oluşur denilebilir. Ağacın gövdesi backbone olarak anılır ve yıldız topolojiye ait merkezi birimler bu gövde sayesinde birbiriyle iletişim kurar. Backbone’da meydana gelecek arıza tüm ağın iletişimini koparırken, merkezi birimlerden bilgisayarlara ulaşan kablolardaki arıza sadece o bilgisayarı devre dışı bırakır. Hiyerarşik ağların kurulmasında kullanılan bir topolojidir. Halka (Ring) Topoloji Bilgisayarların birbirine halka şeklinde bağlandığı topolojidir. Her bilgisayar komşu bilgisayara bağlıdır. Tek yönlü veri akışı mevcuttur. Bilgisayarlar hattı kullanıp veri gönderebilmek için token (jeton) kullanırlar. Tokeni alan bilgisayar yayın yapmak hakkına sahip olur. Gelen ve giden veriler ayrı hatlardan yapıldığı için ağ hızlıdır ve çarpışma olasılığı düşüktür. Halka içinde oluşabilecek bir arıza tüm ağın iletişimini koparır. Karmaşık (Mesh) Topoloji Ağdaki tüm bilgisayarların birbirine direkt kablolarla bağlandığı topolojidir. Noktadan noktaya bağlantı olduğu için oldukça ağ çok hızlıdır. Çok fazla kablo kullanıldığı için maliyet fazladır. Ağ karmaşık yapıda olduğu için bilgisayar sayısı arttıkça kurulum zorlaşır. Ağ Cihazları - Ethernet Kartı Bilgisayarın ağa bağlanmasını sağlayan RJ45 portunu üzerinde bulundurur. Her Ethernet kartının 48 bitlik ve birbirinden farklı olan MAC adresi vardır. - Hub (Dağıtıcı) En aptal merkezi birimdir. Ağdaki hiçbir bilgisayarın MAC adresini tutmaz. Gönderilecek veri paketini bilgisayarları tek tek dolaşarak ulaştırır. - Switch (Anahtar) Hub’dan daha akıllı bir merkezi birimdir. Ağdaki tüm bilgisayarların MAC adresini kendi listesinde tutar. Veri paketini direkt bilgisayara göndererek ağı meşgul etmez. - Router (Yönlendirici) Switch’ten daha yeteneklidir. Ağ üzerinde veri paketi bir bilgisayardan diğerine giderken en kısa yolu hesap ederek paketi gönderir. - Gateway (Geçit Yolu) Farklı topolojilerdeki ağlar arasındaki iletişimini ve veri akışını düzenler. - Repeater (Tekrarlayıcı) Ağın bir ucundan diğer ucuna zayıflayan sinyali kendisine geldiğinde yükselterek (tekrar ederek) kendisinden sonrasına gönderir. - Access Point (Erişim Noktası) Kablolu internet bağlantısını kablosuza çevirmek için kullanılan bir cihazdır. Kendisine kablo ile ulaşan bağlantıyı kablosuz olarak yayın yapar. - Modem Bilgisayarların telefon hatlarını kullanarak iletişim kurmalarını sağlar. Modemin görevi, bilgisayardan aldığı digital (sayısal) veriyi analog veriye çevirerek göndermek ve aynı şekilde karşı taraftaki bilgisayardan gelen analog veriyi tekrar digital veriye çevirerek bilgisayara iletmektir. Dial Up (Çevirmeli) Modemler: Günümüzde çok kullanılmayan modemlerdir. İnternet bağlantı hızları çok düşüktür. İnternete bağlanıldığında telefon hattı meşgul çalar. Dahili (Internal) veya Harici (External) olabilir. ADSL Modemler: Günümüzde kullanılan modemlerdir. İnternet bağlantı hızları yüksektir. Telefon sinyali ile internet sinyalini ayırmak için splitter kullanılır. Dolayısıyla internet ve telefon aynı anda kullanılabilir. Ethernet, PCI veya USB uyumlu olabilirler. Kablosuz (Wireless) modemler de ADSL modemdir. VDSL Modemler: ADSL modemlerden çok daha hızlıdırlar. Ancak uzun mesafelerde kullanma sakıncalarından dolayı yüksek hızlı kısa hatlarda kullanılırlar. AĞ OLUŞTURMA MODELLERİ OSI Modeli Ağ altyapısındaki donanım ve yazılımlar arasındaki standardı ifade etmek için kullanılan bir modeldir. Bu model sayesinde karmaşıklık azaltılmıştır ve belli katmanlarda uzmanlaşılması için referans olmuştur ve 7 katmandan oluşturulmuştur. Bu katmanların sırası önemlidir. 7. Uygulama katmanı (Application Layer): Yazılımların anlaşabileceği katmandır. Örneğin: HTTP, FTP, TFTP, Telnet... 6. Sunum katmanı (Presentation Layer): Verinin sunum şeklinin belirlendiği katmandır. Örneğin; JPG, MPEG, GIF, ASCII 5. Oturum katmanı (Session Layer): İletişim kuran bilgisayarlar arasında oturum açan ve sonladıran katmandır. Örneğin: SQL, NFS, Netbios adları 4. Taşıma katmanı (Transport Layer): Verinin nasıl gönderileceğinin belirlendiği katmandır. Örneğin: TCP, UDP 3. Ağ katmanı (Network Layer): Bir veri paketinin ağ içindeki hareketini sağlayan katmandır. Verinin en kısa yoldan hedefe gitmesinin, donanımların (ip) adreslenmesinin yapıldığı katmandır. Bu katmanda kullanılan protokollere örnek olarak : IP, ARP, ICMP, RARP, BOOTP 2. Veri bağı katmanı (Data Link Layer): Fiziksel adreslemenin tanımlandığı ve network ortamında verinin nasıl taşınacağının tanımlandığı katmandır. Örnek protokolleri: ATM, PPP, frame relay, HDLC 1. Fiziksel katman (Physical layer): Bu katman verinin sayısal rakamlara dönüşerek aktarıldığı katmandır. Örneğin, kablolar, hub, repeater. Bu katmanda herhangi bir protokol yoktur. TCP/IP Modeli ABD savunma bölümü tarafından OSI referans modelinin uyarlanmış halidir. 4. Uygulama Katmanı(Application Layer): Farklı sunucular üzerindeki süreç ve uygulamalar arasında olan iletişimi sağlar. 3. Taşıma Katmanı(Host to host or Transport Layer): Noktadan noktaya veri akışını sağlar. 2. İnternet Katmanı: Routerlar ile birbirine bağlanmış ağlar boyunca verinin kaynaktan hedefe yönlendirilmesini sağlar. 1. Ağ Erişim Katmanı: Uç sistem ile alt ağ arasındaki lojik arabirime ilişkin katmandır. KABLOLAMA Kablo genellikle çevresi koruyucu tabakalar ile kaplanan, iletimin mümkün olduğunca az veri kayıpla gerçekleşmesini sağlayan araçlardır. Ağ yapısına göre farklı özelliklerde kullanılabilecek birçok çeşit kablo standardı vardır. - Koaksiyel Kablo: Eş eksenli kablo da denilir, ses ve video iletiminde kullanılır. Elektromanyetik kirliliğin yüksek olduğu ortamlarda düşük güçte sinyalleri iletmek için kullanılır. Televizyon uydularında kullanılan kablodur. - Çift Bükümlü (Twisted Pair) Kablolar: Birbirine bükülmüş ve koruyucu bir tabaka içine yerleştirilmiş bir veya daha fazla yalıtılmış kablo çiftidir. İki çeşittir. UTP (Unshielded Twisted Pair-Korumasız Çift Bükümlü): En çok kullanılan kablo türüdür. Bükümlü yapısı sayesinde elektrik sinyallerinin birbiri üzerindeki etkisini nötrleştirir. Performanslarına göre Cat-1 ile Cat-7 arasında kategorileri vardır. Bilgisayar ağlarında en çok Cat-5 ve Cat-6 kablolar kullanılır. STP (Shielded Twisted Pair-Korumalı Çift Bükümlü): Her bükümlü çift kablonun etrafı korumalıdır. Bu koruma yüzünden maliyet artmaktadır. Ayrıca eğer koruma zırhının topraklanması gerekir aksi halde elektromanyetik dalgaları toplayarak sinyalin bozulmasına sebep olur. Bu sebeplerden dolayı çok kullanılmaz. - Fiber Optik Kablolar: Fiber optik kablolar verileri ışık hızıyla ileten ileri teknoloji iletim ortamlarıdır. Fiber optik kablolar yüksek veri iletimi için uygun kablolardır. Konnektör: Koaksiyel kabloların uçlarına BNC konnektörler takılırken, çift bükümlü kabloları sonlandırmak için RJ (Registered Jack) serisi konnektörler kullanılır. Telefon sistemlerinde RJ-11 veya RJ-12 kullanılırken UTP veya STP kablolar için RJ-45 konnektörü kullanılır. Fiber optik kablolar için ise ST-SC konnektörleri kullanılmaktadır. UTP veya STP Kablolara RJ-45 Konnektör Takılması UTP veya STP kabloların içinde çift bükümlü toplam 8 adet kablo bulunmaktadır. Bu kablolar şu renklerdedir: Turuncu (T), Turuncu-Beyaz (TB), Yeşil (Y), Yeşil-Beyaz (YB), Mavi (M), Mavi-Beyaz (MB), Kahverengi (K), Kahverengi-Beyaz (KB). Kabloları RJ-45 konnektörüne yerleştirirken belirli bir sıraya dikkat etmek gerekir. Bu sıralama için iki adet standart bulunmaktadır. Bu standartlar 568-A ve 568-B standartlarıdır. Eğer kablonun iki ucuna da aynı standarda uygun konnektör takılırsa düz kablo; birisi 568-A, diğeri 568-B standardına göre takılırsa çapraz kablo yapılmış olur. Standartlara göre kabloların dizilişleri aşağıdaki gibidir. 568-A Standardı: YB-Y-TB-M-MB-T-KB-K 568-B Standardı: TB-T-YB-M-MB-Y-KB-K PROGRAMLAMA TEMELLERİ Akış şemalarında kullanılan semboller ve anlamları Simge Simgenin Adı ve Anlamı Elips Akış şemasının başlangıç ve bitiş yerlerini gösterir. Başlangıç simgesinden çıkış oku vardır. Bitiş simgesinde giriş oku vardır. Paralel Kenar: Programa veri girişi ve programdan elde edilen sonuçların çıkış işlemlerini gösterir.(Oku, Yaz) Dikdörtgen Aritmetik işlemler ve değişik atama işlemlerinin temsil edilmesi için kullanılır.(A=A+1, Final=100 vb..) Eşkenar Dörtgen Bir karar verme işlemini temsil eder. (Eğer sayi<0 ise Yaz “Sayı negatif” vb…) Altıgen Program içinde belirli blokların ard arda tekrar edileceğini gösterir.(Döngü kurmak için kullanılır) Oklar Diyagramın akış yönünü ,yani her hangi bir adımdaki işlem tamamlandıktan sonra hangi adıma gidileceğini gösterir. Ayrıntılı bir akış şeması, yazılımı oluşturan işlemleri ve ilişkilerini en küçük detayına kadar belirler. Bir bilgisayar programının geliştirilmesinde kullanılan programlama dili ne olursa olsun bu programların akış diyagramlarında genel olarak yalnız üç basit mantıksal yapı kullanılır. Bu mantıksal yapılardan en basiti sıralı yapıdır. Sıralı yapı, hazırlanacak programdaki her işlemin mantık sırasına göre nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye kadar ikinci bir işlem başlayamaz. Şekil 1.2 Sıralı Yapı Mantıksal yapılardan ikincisi Karar Verme yapısıdır (Şekil 1.3). Programlama sırasında If...Then... Else (Eğer…. <şart> ….İse….)yapısı ile tanıyacağımız bu mantıksal yapılar, birden fazla sıralı yapı seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler. Şekil 1.3 Karar Verme Yapısı Üçüncü mantıksal yapı çeşidini tekrarlı yapılar oluşturmaktadır. Yani döngü oluşturmak için kullanılan yapıdır. Döngüler aynı işlemin bir çok kez yapılmasını sağlar.Söz konusu üç değişik yapı, değişik kombinezonlarda kullanılarak istenilen işlevleri yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması program modüllerinin daha kolay tasarlanmasını sağlar. b a Şekil 1.4. Tekrarlı Yapı VERİ TABANI SOL DİLİNİN YAPISI SQL (Structured Query Language), veri tabanındaki verileri okumak, güncellemek, yeni veri eklemek, verileri silmek vb. gibi işlemleri yapan, program yazarken kolaylıklar sağlayan, satırlarca kodun yaptığı işlemi tek bir sorguda yapabilen, yapısal bir sorgulama dilidir. DDL (VERİ TANIMLAMA DİLİ) SORGULAR TABLO OLUŞTURMA Sorgu kullanarak tablo oluşturmak için CREATE TABLE ifadesi kullanılır. SQL kodu yazılarak tablo oluşturma aşağıdaki şekilde yapılmaktadır. Kullanımı: CREATE TABLE tablo_adı ( Sütun1 veri tipi, Sütun2 veri tipi, . . sütunN veri tipi ) Örnek: Aşağıdaki SQL kodları Veri tabanı hazırlama programında yazılıp çalıştırıldığı zaman PERSONEL adında bir tablo oluşturulur ve bu tablonun sütunları Personel_no, Adı, Soyadı olarak tanımlanmış olur. TABLO SİLME Daha önceden oluşturmuş olduğunuz bir tabloya ihtiyaç duymayıp veri tabanından silmek isteyebilirsiniz. Silme işlemini gerçekleştirmek için DROP deyimi kullanılmaktadır. Kullanımı: DROP TABLE tablo Örnek: DROP TABLE PERSONEL Yeni bir sorgu oluşturup yukarıdaki komut satırını yazıp çalıştırdığınız zaman veri tabanı programı önceden oluşturmuş olduğunuz PERSONEL isimli tabloyu silecektir. TABLOYA SÜTUN EKLEME Bir tablo oluşturduktan sonra, isteğe göre oluşturulmuş olan tabloya yeni sütunlar ekleyebilirsiniz. Tabloya yeni bir sütun eklemek için ADD COLUMN deyimi kullanılır. Kullanımı: ALTER TABLE tablo_adı ADD sütun_adı, veri_türü Örnek: Önceden oluşturulmuş olan PERSONEL isimli tabloya “Bölümü” sütununu eklemek istersek SQL ifadesi aşağıdaki şekilde olacaktır. DML (VERİ İŞLEME DİLİ) SORGULAR SELECT DEYİMİNİN YAPISI Veri tabanında verilere erişebilmek için SELECT deyimi kullanılmaktadır. Select deyimi ile bir tabloda bulunan belli bir sütun, birden fazla sütun veya tüm sütunları çekebilirsiniz. Bunun yanı sıra sorgulama işlemlerini gerçekleştirmek için de SELECT deyiminden yararlanılır. Kullanımı: SELECT *sütun_listesi+ FROM [tablo_listesi] Örnek: SELECT adı FROM PERSONEL Bu satır ile Personel tablosunda bulunan “adı” alanını seçersiniz. Örnek: SELECT * FROM PERSONEL Bu satır ile Personel tablosunda bulunan tüm alanlar seçilmiş olur. VERİLERİN SINIRLANDIRILMASI Veri tabanında veriyi alma işlemi sırasında satırlara birtakım sınırlamalar getirilerek tablonun tüm satırları yerine istenildiği kadarını elde etmek mümkündür. Tabloda belirli kısımları seçme işlemini gerçekleştirmek için WHERE sözcüğü kullanılmaktadır. Kullanımı: SELECT *sütunlar+ FROM [tablo] WHERE *koşul+ PERSONEL tablosunda yer alan İl_kodu 34 olan kayıtları listelemek istersek komut satırı aşağıdaki şekilde olacaktır. Aşağıdaki SQL deyimi, maaşları 2000 TL’den yüksek olan çalışanları seçmeye yarar. Aşağıdaki tabloda Where komutuyla kullanılabilecek koşul operatörlerine örnekler verilmiştir. KOŞUL SORGU SONUCU 200 Maaşın 200 TL olduğu kayıtları döndürür. Not 2000 Maaşın 2000 TL olmadığı kayıtları döndürür. < 200 Maaşın 200 TL'den az (<200) olduğu kayıtları döndürür. İkinci ifade <= 200 (<=200) birim fiyatın 200 TL'ye eşit veya daha az olduğu kayıtları görüntüler. >100 Maaşın 100TL'den fazla olduğu kayıtları döndürür. İkinci ifade >=100 maaşın 100 TL'ye eşit veya daha fazla olduğu kayıtları görüntüler. 100 veya 125 Maaşın 100 TL veya 125 TL olduğu kayıtları döndürür. >50 ve <100 Maaşın 50 TL ile 100 TL arasında olduğu (ancak dahil değil) kayıtları -veyadöndürür. Between 50 and 100 <50 or >100 Maaşın 50 TL ile 100 TL arasında olmadığı kayıtları döndürür. In(10, 22, 30) Like "*4,99" Is Null Is Not Null Maaşın 10 TL, 22 TL veya 25 TL olduğu kayıtları döndürür. Maaşın sonunda "4,99" bulunan, 4,99 TL, 14,99 TL, 24,99 TL vb. kayıtları döndürür. NOT* ve % karakterleri bir ifadede kullanıldığı zaman, herhangi bir sayıda karakteri temsil eder (bunlara joker karakter de denir). %karakteri * karakteriyle birlikte bir ifadede kullanılamadığı gibi, ? joker karakteriyle birlikte de bir ifadede kullanılamaz. % joker karakterini, _ joker karakterini de içeren bir ifadede kullanabilirsiniz. Maaşı alanına değer girilmeyen kayıtları döndürür. Maaşı alanında değerin eksik olmadığı kayıtları döndürür. Örnek: Fiyatı 50 ile 100 TL arasında olan tüm ürünleri listelemek istersek SQL kodu aşağıdaki şekilde olacaktır. SELECT * FROM URUN WHERE FİYAT BETWEEN 50 AND 100 Örnek: İsmi “A” ile başlayan personeller listelenmek istenirse SQL kodu aşağıdaki şekilde olacaktır. SELECT * FROM PERSONEL WHERE ADI LIKE “A%” SIRALAMA İŞLEMLERİ Tabloların satırlarının herhangi bir sütuna göre sıralanmasının istendiği durumlarda SELECT deyimi ORDER BY ile birlikte kullanılır. Örnek: SELECT Soyadı, adı FROM PERSONEL ORDER BY Soyadı; Örnek: SELECT Soyadı, adı FROM PERSONEL ORDER BY Soyadı ASC; Azalan şekilde sıralama yapmak için (Z'den A'ya, 9'dan 0'a), azalan şekilde sıralamak istenilen her alanın sonuna DESC sözcüğünün eklenmesi gerekir. Örnek: SELECT Soyadı, İl_Kodu FROM PERSONEL ORDER BY İl_Kodu DESC, Soyadı SQL FONKSİYONLARI SQL fonksiyonları tek satır fonksiyonları ve çoklu satır fonksiyonları (grup fonksiyonları) olmak üzere iki türlüdür. Tek satır fonksiyonları genelde sadece Fonksiyon olarak adlandırılıp, tablonun her bir satırına uygulanabilen fonksiyonlardır. Karakter, sayısal, tarih ve dönüştürme olmak üzere farklı türleri vardır. Karakter fonksiyonları, girdi olarak karakter verilerini alıp, karakter veya sayısal değerler döndürebilen fonksiyonlardır. Karakter fonksiyonlarından en fazla kullanılanları Tablo 1.3’te gösterilmiştir. LCASE Büyük harfleri küçük harflere dönüştürmek için kullanılır. UCASE Küçük harfleri büyük harflere dönüştürmek için kullanılır. MID Verinin bir parçasını çekmek için kullanılır. LEN Bir string ifadesinin veya bir sütundaki verinin uzunluğunu döndürmek için kullanılır. Tablo 1.3: Karakter fonksiyonları Sayısal fonksiyonlar, sayısal veriler üzerinde birtakım işlemleri gerçekleştirmek için kullanılan fonksiyonlardır. Sayısal fonksiyonlardan en fazla kullanılanları Tablo 1.4’te gösterilmiştir .ROUND Sayısal değerleri yuvarlamak için kullanılır. MOD İki sayısal değerin, birbirine bölümünden elde edilen kalanı döndürmek için kullanılır. Tablo 1.4: Sayısal fonksiyonlar Dönüştürme fonksiyonları, karakter, sayısal ve tarih verilerinin birbirine dönüştürülmesi için kullanılan fonksiyonlardır. Dönüştürme fonksiyonlardan en fazla kullanılanları Tablo 1.5’te gösterilmiştir. CSTR Tarih ve sayısal bilginin istenildiği gibi biçimlendirilerek karakter dizisine dönüştürülmesini sağlar. CINT Bir dizenin içerdiği sayısal değerleri biçimlendirilerek sayısal veri türüne dönüştürmeye yarar. CDATE Bir dizenin içerdiği tarih verilerinin istenildiği gibi biçimlendirilerek tarih veri türüne dönüştürmek için kullanılır. Tablo 1.5: Dönüştürme fonksiyonları Tarih ve saat fonksiyonları, tarih ve saat ile bilgi almak ve tarih ve saat verilerini biçimlendirmek için kullanılan fonksiyonlardır. Tarih ve saat fonksiyonlardan en fazla kullanılanları Tablo 1.6’da gösterilmiştir. NOW Bilgisayarınızdaki geçerli sistem tarihini ve saatini bildirmek için kullanılır. Örnek: SELECT Now(); DAY 1 ve 31 dahil olmak üzere bu rakamlar arasında ayın gününü temsil eden bir tam sayı belirten Variant (Tamsayı) döndürmek için kullanılır. Örnek: SELECT Day(#11/22/2003#); Bu kod yazılıp çalıştırıldığında ayın gününü temsil eden “22” sayısı döndürülecektir. MONTH Yılın ayını gösteren 1 ile 12 arasında (bu sayılar dahil) bir tam sayı belirten Variant (Integer) türünde değer döndürmeye yarar. Örnek: SELECT Month (#22/11/2009#); Bu kod çalıştırıldığı zaman yılın ayını gösteren “11” değeri döndürülecektir. YEAR Yılı gösteren bir tam sayı içeren Variant (Integer) türünde bir değer döndürmeye yarar. Verilen tarihin yılını döndürür. Örnek: SELECT Year (#22/11/2012#); DATEADD Belirtilen bir zaman aralığı eklenmiş olan bir tarihi içeren Variant (Tarih) veri türünü döndürür. Örnek: SELECT DateAdd("yyyy",3,#11/22/2009#); 2009 yılına 3 yıl eklenmiştir DATEDIFF Belirtilen iki tarih arasındaki zaman aralıklarının sayısını belirten bir Variant (Long) döndürür. Örnek: SELECT DateDiff('m',#11/17/2011#,#1/22/2012#); Bu kod yazılıp çalıştırıldığı zaman bu zaman dilimleri arasında iki ay fark olduğundan “2” değeri dönecektir. DATEPART Verilen bir tarihin belirtilen kısmını içeren bir Variant (Tam sayı) döndürür. Örnek: SELECT DATEPART("yyyy", "01/04/2012") Tablo 1.6: Tarih ve saat fonksiyonları VERİLERİ GRUPLAYARAK ANALİZ ETME Şu ana kadar incelemiş olduğumuz deyimler söz konusu tablonun tüm satırlarına uygulanmaktaydı. Bazı durumlarda bazı işlemlerin satırlar yerine gruplara uygulanması gerekmektedir. Veriler gruplara ayrılıp analiz edilir ve bu tür gruplama işlemleri için de grup fonksiyonları kullanılır. GRUP FONKSİYONLARI Tek satır fonksiyonları tablonun bir satırına uygulanıp buna karşılık gelen bir sonuç satırı elde ediliyordu. Bir grup satıra bir fonksiyonun uygulanmasının söz konusu olduğu durumlara; "çoklu satır" veya "grup fonksiyonları" adı verilir. Grup fonksiyonları tablonun tüm satırlarına uygulanabilmektedir. AVG() Bu fonksiyon, herhangi bir sütunun içerdiği sayısal değerlerin aritmetik ortalamasını hesaplamak amacıyla kullanılır. Fonksiyonun uygulandığı sütunun veri türü sayısal olmalıdır. Örnek: SELECT AVG(NOTLAR) AS ORTALAMA FROM OGRENCİ SUM() Sütunların içerdiği sayısal değerleri toplamak amacıyla kullanılan fonksiyondur. Örnek: SELECT SUM(NOTLAR) AS TOPLAM FROM OGRENCİ STDEV() Standart sapma, sayısal verilerin aritmetik ortalamalardan farklarının kareli ortalaması olarak bilinir. Bu hesaplamayı yapan SQL fonksiyonu ise; STDEV() 'dir. Örnek: SELECT STDEV(NOTLAR) AS “St SAPMA” FROM OGRENCİ VARP() Sorgunun belirtilen alanında bulunan değerler kümesiyle temsil edilen bir grubun tahmini varyansını gösterir. Varyans, sayısal değerler arasındaki değişkenliği ölçen bir kavramdır. Standart sapmanın karesi olarak bilinmektedir. Örnek: SELECT VARP(MAAŞ) AS VARYANS FROM PERSONEL MAX() ve Tablodaki değerler arasında en büyük olanı bulmak için MAX(), en küçük olanını bulmak MIN() içinse MIN() ve fonksiyonları kullanılır. Örnek: SELECT MAX(NOLAR) AS “EN YÜKSEK” FROM ÖĞRENCİ Örnek: SELECT MİN(NOTLAR) AS “EN DÜŞÜK” FROM ÖĞRENCİ COUNT() Bir tablodaki kayıtların sayılması amacıyla kullanılan fonksiyondur. COUNT(*) fonksiyonu, NULL değerleri de içeren tüm kayıtların sayılmasını sağlar. WHERE ile birlikte kullanılırsa, bu koşula uygun tüm kayıtları sayar. COUNT(sütun) biçiminde kullanılırsa, söz konusu sütunda NULL değerler içermeyen tüm kayıtların sayılmasına neden olur. Örnek: SELECT COUNT(*) AS “ÖĞRENCİ SAYISI” FROM ÖĞRENCİ Tablo 1.7: Grup fonksiyonları ve örnekleri BİRDEN FAZLA SÜTUNA GÖRE GRUPLAMA GROUP BY kullanarak belirtilen alan listesindeki benzer değerlere sahip kayıtları tek bir kayıt olarak birleştirebilirsiniz. Yani birden fazla sütun için de gruplama yapabilirsiniz. Kullanımı: SELECT alanlistesi FROM tablo WHERE ölçütler [GROUP BY grupalanlistesi] Örnek: Yukarıdaki PERSONEL tablosunda her ilde yaşayan personel sayısına göre gruplama yapmak istersek SQL kodu aşağıdaki gibi olacaktır. Bu kodu çalıştırdığımız zaman PERSONEL tablosunda yer alan personellerin yaşadıkları illere göre sayısı listelenecektir. Örnek: SELECT Count(*) AS Personelsayısı FROM PERSONEL; Yukarıdaki komut satırı personel tablosunda yer alan toplam personel sayısını gösterir. INSERT DEYİMİ YAPISI Bir tabloya yeni veri eklemek için INSERT deyimi kullanılır. INSERT deyimi, INTO ve VALUES ifadeleri ile birlikte kullanılır ve tabloya yeni veri eklenmesi sağlanır. Sütun ismi belirtmeden kullanımı: INSERT INTO tablo VALUES (değer1, değer2…) Sütun ismi belirterek kullanımı: INSERT INTO tablo (sütun1, sütun2…) VALUES (değer1, değer2…) Örnek: Yukarıdaki Personel tablosuna bir kayıt eklemek istiyorsak SQL kodu aşağıdaki şekilde olacaktır. Örnek: Personel tablosunda sadece Personel_no ve Bölümü alanlarına veri girişi yapmak istiyorsak SQL sorgu kodu aşağıdaki şekilde olacaktır. INSERT INTO PERSONEL(Personel_no, Bölümü) VALUES (18, 'Müzik'); FONKSİYONLARIN KULLANIMI INSERT INTO içerisinde fonksiyonlar da kullanılabilmektedir. Örneğin PERSONEL tablosuna yeni bir kayıt eklerken Giriş_tarihi isimli alana o günün tarih ve zaman bilgisini eklemek istiyorsak komut satırı aşağıdaki gibi olacaktır. TABLODAKİ VERİLERİ GÜNCELLEME Bir tabloda bulunan kayıt veya kayıtların istenildiği zaman değiştirilmesi mümkündür. Tablolarda güncelleme işlemini gerçekleştirmek için UPDATE komutu kullanılır. SET ifadesi ile güncellenecek alanlar ve bu alanların alacakları yeni değerler belirlenir. WHERE deyimi ile de verilerin güncelleştirilmesi için koşul belirlenir. Eğer WHERE ifadesi ile bir koşul belirlenmezse tablodaki tüm kayıtlar güncellenmiş olacağından WHERE kullanmaya dikkat edilmesi gerekmektedir. Kullanımı: UPDATE tablo SET sütun1=değer1, sütun2=değer2,.. WHERE Koşul Örnek: Personel tablosunda yer alan 30 numaralı personelin “35” olan İl_Kodu bilgisini “06” olarak değiştirmek isteyelim. Bu işlem için yazılması gereken SQL kodu aşağıdaki şekilde olacaktır. UPDATE PERSONEL SET İl_Kodu = '06' WHERE Personel_no = 30 Örnek: PERSONEL tablosundaki tüm illerin kodunu “06” olarak değiştirmek istersek SQL kodları aşağıdaki gibi olmalıdır. UPDATE PERSONEL SET İl_Kodu = '06' WHERE Personel_no TABLOLARDAN VERİ SİLME Bir tabloda bulunan kayıt veya kayıtların istenildiği zaman silinmesi mümkündür. Tablolarda silme işlemini gerçekleştirmek için DELETE komutu kullanılır. DELETE komutu kullanılırken FROM eki ile birlikte tablo ismi yazılarak hangi tablodan veri silinmesi istendiği belirtilebilir. WHERE deyimi ile de verilerin silinme koşulu belirlenir. Eğer WHERE ifadesi ile bir koşul belirlenmezse tablodaki tüm kayıtlar silineceğinden WHERE kullanmaya dikkat edilmesi gerekmektedir. Kullanımı: DELETE FROM Tablo WHERE Koşul Örnek: Personel tablosunda yer alan 30 numaralı personeli silmek için yazılacak SQL komutu aşağıdaki gibi olacaktır. DELETE FROM PERSONEL WHERE Personel_no = 30 Örnek: Personel tablosunda Bölümü “müzik” ve “resim” olanlar dışındaki diğer kayıtların silinmesini istersek; Aşağıdaki kodları yazıp çalıştırdığımızda personel tablosundaki Bölümü müzik ve resim olan kayıtlar dışındaki tüm kayıtlar silinecektir. DELETE FROM PERSONEL WHERE Bölümü NOT IN ("müzik", "resim") ÖRNEK UYGULAMA1 “OGRENCI” adında bir veri tabanı yaratınız. İçinde ”KIMLIK” ,“NOTLAR”,”DERSLER” adında 3 adet tablo oluşturun. KIMLIK DERSLER NOTLAR TETİKLEYİCİLER (TRIGGER) Bir tabloda yapılan değişikliğin, diğer bir tabloyu etkilemesini sağlamak amacıyla kullanılan yapılara tetikleyici (trigger) denir. 3 çeşit tetikleyici yapısı vardır: Ekleme tetikleyicisi (INSERT Trigger): Bir tabloda ekleme işlemi yapıldığında diğer tablonun bu işlemden etkilenmesi istendiğinden kullanılır. Silme tetikleyicisi (DELETE Trigger): Bir tabloda silme işlemi gerçekleştirildiğinde diğer tablonun bu işlemden etkilenmesi istendiğinde kullanılır. Güncelleme tetikleyicisi (UPDATE Trigger): Bir tabloda güncelleme işlemi gerçekleştirildiğinde diğer tablonun bu işlemden etkilenmesi istendiğinde kullanılır. Yeni Tetikleyici Oluşturma Genel yapısı aşağıdaki gibidir ORNEK URUNLER1 TABLOSU urunid 1 2 3 urunadi Defter Kalem Silgi urunadeti 150 200 80 SATISLAR TABLOSU satisid 1 2 3 urunid 1 1 2 satisadeti 20 40 5 INSERT TRIGGER Create trigger EKLE on satislar for insert as begin declare @urunid int declare @satisadeti int select @urunid=urunid from inserted select @satisadeti = satisadeti from inserted update urunler1 set urunadeti=urunadeti- @satisadeti where urunid=@urunid end insert into satislar(satisid, urunid, satisadeti) values (1,3,10) Select * from urunler1 DELETE TRIGGER Create trigger satisiptalet on satislar for delete as begin declare @urunid int declare @satisadeti int select @urunid=urunid from deleted select @satisadeti = satisadeti from deleted update urunler1 set urunadeti=urunadeti+@satisadeti where urunid=@urunid end delete from satislar where satisid=2 Select * from urunler1 UPDATE TRIGGER Create trigger urunudediguncelleme1 on satislar for update as begin declare @urunid int declare @satisadetie int declare @satisadety int select @urunid=urunid from deleted select @satisadetie = satisadeti from deleted select @urunid=urunid from inserted select @satisadety = satisadeti from inserted update urunler1 set urunadeti=urunadeti+@satisadetie where urunid=@urunid update urunler1 set urunadeti=urunadeti-@satisadety where urunid=@urunid end SAKLI YORDAMLAR (STORED PROCEDURES) Stored Procedure SQL Server üzerinde önceden derlenmiş olup saklanan SQL ifadeleridir. Önceden derlenmiş olarak bulunduklarından her türlü sorgulamada en iyi performansı verirler. SQL Server' da sistem tarafından "sp_" ile başlayan isimlerle tanımlanmış bir çok yordam mevcuttur. Bunlar daha çok yönetim amaçlı olarak sistem tablolarından bilgi toplamak için kullanılırlar. Stored Procedure’ün oluşturulma şekli aşağıdaki gibidir. CREATE PROC * EDURE + prosedür_adı AS T-SQL ifadeleri GO Örnek ¾¾tblOgrenciBilgileri tablosunda veliId’si 1 olan öğrencileri listeleyen bir store procedure oluşturalım. Şimdi Execute butonuna tıklayarak veya klavyeden F5 tuşuna basarak sorgumuzu çalıştıralım. Çalıştırdıktan sonra sonuç penceresinde herhangi bir liste oluşmayacaktır. Biz burada sadece ağ veritabanı yazılımımıza yeni bir store procedure tanımladık. Tanımlamış olduğumuz saklı yordamı çalıştırmak için EXEC komtunu kullanırız. Değer Alan Alt Yordamlar Stored Procedure’lerin daha etkin kullanılabilmesi ve işlevsel bir hale gelebilmesi için dışarıdan değer almalarına ihtiyaç duyulur. Bu nedenle girdi parametreleri (Input Parameter) kullanılır. Stored Procedure’nin aldığı değer Query’den gelen değerdir. Gönderilen değeri karşılayacak bir değişken Stored Procedure’de tanımlanmalıdır. Örnek Daha önce oluşturduğumuz “usp_VeliOgrenciListe” stored procedure’ünde veliId bilgisini kendimiz yazıyorduk. Şimdi ise veliId bilgisini dışarıdan veri olarak gönderelim. stored procedure’ümüzü veliId değeri 1 için çağıralım. Sonuç; KISITLAYICI (CONSTRAİNT) Veri üzerindeki mantıksal sınırlamalara kısıt adı verilir. Kısıtlar, veri modellerinde bütünlük sağlamak için kullanılır. Kısıtlamalar, tabloların tanımlanmasıyla beraber oluşan öğelerdir. Kısıtlamalar, tablo oluştururken yani CREATE TABLE komutuyla birlikte tanımlanabilir. Tablo oluşturulmuşsa ALTER TABLE komutuyla bu işlem gerçekleşir. KISITLAYICI TÜRLERİ Birincil Anahtar Kısıtlayıcı (Primary Key Constraint) Birincil anahtar kısıtlayıcı anlamındadır. Aynı olmayan değerler girilmesini sağlar. Bu da her kaydın farklı olması demektir. Her tablonun en fazla 1 adet Primary Key Constraint’i olabilir. Yeni bir tablo oluştururken kullanımı: CREATE TABLE tablo_adı ( Sütun_adları, CONSTRAINT const_adı PRIMARY KEY (sütun_adı) ) Örnek: Oluşturulmuş olan tabloda kullanımı: ALTER TABLE tablo_adı ADD CONSTRAINT cons_adı PRIMARY KEY (sütun_adı) Örnek: Tekil Alan Kısıtlayıcı (Unique Constraint) Tekil alan kısıtlayıcı anlamındadır. Birincil anahtar olan ve tablodaki diğer alanlar içinde aynı içeriğe sahip verilerin olmaması için Unique Constraint tanımlanır. Yabancıl Anahtar Kısıtlayıcı (Foreign Key Constraint) Yabancıl anahtar kısıtlayıcı anlamındadır. Bir tablodaki bir sütuna ait verilerin başka bir tablonun belirli bir sütunundan gelmesini denetler. Bir tabloya girilebilecek değerleri başka bir tablonun belli bir alanında yer alabilecek veri grubu ile sınırlandırmaya ve en önemlisi de ilişkilendirmeye yarar. Yeni bir tablo oluştururken kullanımı: CREATE TABLE tablo_adı ( Sütun_adları, CONSTRAINT const_adı FOREIGN KEY (sütun_adı) REFERENCES diğertablo_adı (sütun_adı) ) Örnek: tblOgrenciBilgileri tablomuzu yeni oluşturuyormuş gibi düşünelim. Varsayılan Kısıtlayıcı (Default Constraint) Varsayılan kısıtlayıcı anlamındadır. Tablodaki herhangi bir alan için girilmesi gereken bir değerin atanmasıdır. INSERT komutu için geçerlidir. Örneğin, öğrenci devamsızlıklarının tutulduğu tblDevamsizlik tablosuna yeni bir öğrenci eklendiğinde devamsizlik sütununa varsayılan değer olarak 0 atanabilir. Yeni bir tablo oluşturulurken kullanımı: CREATE TABLE Tabloadi ( Sütunadi, Sütunadi CONSTRAINT Constraint_Adi DEFAULT (değer) ) Örnek: Kontrol Kısıtlayıcı (Check Constraint) Kontrol kısıtlayıcı anlamındadır. Belirtilen formata göre verilerin girilmesini sağlar. Örneğin, TcKimlikNo alanına 11 karakterin girilmesi Check Constraint ile sağlanabilir. Check Constraint’in kullanım amaçları şöyledir: Sütuna girilebilecek verileri bir sınır ile kısıtlamak, Sütuna girilebilecek verilerin belli bir formatla girilmesini sağlamak, Sütuna girilebilecek verileri başka sütun formatlarına göre karşılaştırarak denetlemektir. Yeni bir tablo oluşturulurken kullanımı: CREATE TABLE Tablo_Adi ( Sütun_Adi, Sütun_Adi, ….., CONSTRAINT Constraint_Adi CHECK (ifade) ) Örnek: Oluşturulmuş olan tabloda kullanımı: ALTER TABLE Tabloadi ADD CONSTRAINT Constraint_Adi CHECK (ifade) Örnek: ÖRNEK UYGULAMA2 SQL Server’da kendinize “OGRENCİ” adında bir veri tabanı yaratınız. İçinde “KIMLIK”, ”NOTLAR” ve “MEZUN”, adında 3 adet tablo oluşturun. KIMLIK TABLOSU OGRNO(int) SINIF nchar(3) AD varchar(15) SOYAD varchar(15) CINSIYET varchar(1) NOTLAR TABLOSU OGRNO (int ) DERS varchar(15) S1(int) S2(int) S3(int) MEZUN TABLOSU OGRNO(int) SINIF nchar(3) NTP Program Örnekleri Console Telefon Rehberi Uygulaması class Program { static void Main(string[] args) { Console.Write("Rehberi Kapasitesi:"); int kapasite = int.Parse(Console.ReadLine()); string[] isimler = new string[kapasite]; string[] numaralar = new string[kapasite]; for (int i = 0; i < isimler.Length; i++) { Console.Write((i+1) + ". Kişinin Adı Soyadı :"); isimler[i] = Console.ReadLine(); Console.Write((i+1)+". Kişinin Telefon Numarası :"); numaralar[i] = Console.ReadLine(); } Console.WriteLine("Bilgi Girişi Tamamlandı ... Devam için Herhangi bir tuşa basınız..."); Console.ReadKey(); Console.Clear(); Console.WriteLine("------------------------------------------------------------"); Console.WriteLine("Adı Soyadı Telefon Numarası "); Console.WriteLine("------------------------------------------------------------"); Console.WriteLine("------------------------------------------------------------"); for (int i = 0; i < kapasite; i++) { Console.WriteLine("{0,-20} {1,15}",isimler[i],numaralar[i]); } Console.WriteLine("------------------------------------------------------------"); Console.ReadKey(); } } Çok Boyutlu Dizi Kullanımı class Program { static void Main(string[] args) { Console.Write("Öğrenci Sayısı :"); int ogrSayisi = int.Parse(Console.ReadLine()); Console.Write("Ders Sayısı : "); int dersSayisi = int.Parse(Console.ReadLine()); Console.Write("Sınav Sayısı : "); int sinavSayisi = int.Parse(Console.ReadLine()); string[] adsoyad = new string[ogrSayisi]; string[,] dersler = new string[ogrSayisi, dersSayisi]; int[, ,] notlar = new int[ogrSayisi, dersSayisi, sinavSayisi]; double[,] ortalamalar = new double[ogrSayisi, dersSayisi]; string[,] dersdurum = new string[ogrSayisi, dersSayisi]; Console.WriteLine("Öğrenci Takip Uygulaması [Çok Boyutlu Dizi Kullanımı]"); Console.WriteLine("====================================================="); Console.Write("Öğrenci Sayısı : " + adsoyad.GetLength(0)); Console.Write(" Ders Sayısı :" + dersler.GetLength(1)); Console.Write(" Her Dersin Not Sayısı : " + notlar.GetLength(2)); Console.WriteLine("====================================================="); for (int i = 0; i < adsoyad.Length; i++) { Console.Write((i + 1) + ". Öğrencinin Adı Soyadı :"); adsoyad[i] = Console.ReadLine(); for (int j = 0; j < dersler.GetLength(1); j++) { Console.Write(adsoyad[i] + "isimli Öğrencinin " + (j + 1) + ". Ders Adı :"); dersler[i, j] = Console.ReadLine(); Console.WriteLine(adsoyad[i] + " isimli Öğrencinin" + dersler[i, j] + " Dersi Notları Girişi"); Console.WriteLine("====================================================="); int toplamnot = 0; for (int k = 0; k < notlar.GetLength(2); k++) { Console.Write((k+1) + ". Yazılı :"); notlar[i, j, k] =int.Parse( Console.ReadLine()); toplamnot += notlar[i, j, k]; } ortalamalar[i, j] = toplamnot / 3; if (ortalamalar[i,j] < 45) { dersdurum[i,j] = "KALDI"; } else { dersdurum[i, j] = "GEÇTİ"; } } } Console.WriteLine("Bilgi Girişi Tamamalandı ... Listelemek İçin Bir Tuşa Basınız..."); Console.ReadKey(); Console.Clear(); for (int i = 0; i < adsoyad.GetLength(0); i++) { Console.WriteLine("*******" + adsoyad[i] + "*******"); for (int j = 0; j < dersler.GetLength(1); j++) { Console.WriteLine("***" + dersler[i, j] + "***"); for (int k = 0; k < notlar.GetLength(2); k++) { Console.Write("{0,10}", notlar[i, j, k]); } Console.WriteLine(); Console.WriteLine("--------------------------"); Console.WriteLine("Ders Ortalaması : {0} -- Durumu :{1}", ortalamalar[i, j], dersdurum[i, j]); } } Console.WriteLine("Listeleme Tamamlandı ... Çıkış İçin Bir Tuşa Basınız..."); Console.ReadKey(); } } Telefon Rehberi Form uygulaması public partial class Form1 : Form { public Form1() { InitializeComponent(); } #region "Global Değişken Tanımlamaları" string[] adsoyad; string[] telefon; int adet = 0; #endregion private void btnKapasite_Click(object sender, EventArgs e) { try { if (int.Parse(txtKapasite.Text) > 2) { panel1.Visible = true; panel2.Visible = false; txtAdSoyad.Focus(); int kapasite = int.Parse(txtKapasite.Text); adsoyad = new string[kapasite]; telefon = new string[kapasite]; } } catch (Exception) { MessageBox.Show("Lütfen Sayı Giriniz..."); txtKapasite.ResetText(); txtKapasite.Focus(); } } private void btnEkle_Click(object sender, EventArgs e) { if (txtAdSoyad.Text.Length < 6 || txtTel.Text.Length < 7) { MessageBox.Show("Lütfen Bilgileri doğru giriniz...", "Veri Giriş Hatası", MessageBoxButtons.OK, MessageBoxIcon.Error); txtAdSoyad.ResetText(); txtTel.ResetText(); txtAdSoyad.Focus(); } else { DialogResult cevap = MessageBox.Show("Bilgiler Telefon Defterin Kaydadilsin mi?", "Kayıt Ekle", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (cevap==DialogResult.Yes) { adsoyad[adet] = txtAdSoyad.Text; telefon[adet] = txtTel.Text; txtAdSoyad.ResetText(); txtTel.ResetText(); txtAdSoyad.Focus(); adet++; if (adet==adsoyad.Length) { txtAdSoyad.Enabled = false; txtTel.Enabled = false; btnEkle.Enabled = false; btnListele.Visible = true; listBox1.Visible = true; listBox2.Visible = true; } } } } private void btnListele_Click(object sender, EventArgs e) { listBox1.Items.Clear(); listBox2.Items.Clear(); for (int i = 0; i < adsoyad.Length; i++) { listBox1.Items.Add(adsoyad[i]); listBox2.Items.Add(telefon[i]); } } private void Form1_Load(object sender, EventArgs e) { } } Arraylist Uygulaması public partial class Form1 : Form { public Form1() { InitializeComponent(); } ArrayList isimler = new ArrayList(); private void Form1_Load(object sender, EventArgs e) { txtKapasite.Text = isimler.Capacity.ToString(); txtElemanSayisi.Text = isimler.Count.ToString(); } private void button1_Click(object sender, EventArgs e) { isimler.Add(txtAdSoyad.Text); txtKapasite.Text = isimler.Capacity.ToString(); txtElemanSayisi.Text = isimler.Count.ToString(); } private void button2_Click(object sender, EventArgs e) { listBox1.Items.Clear(); //for (int i = 0; i < isimler.Count; i++) //{ // listBox1.Items.Add(isimler[i]); //} foreach (string a in isimler) { listBox1.Items.Add(a); } } private void button3_Click(object sender, EventArgs e) { isimler.TrimToSize(); txtKapasite.Text = isimler.Capacity.ToString(); txtElemanSayisi.Text = isimler.Count.ToString(); } private void button4_Click(object sender, EventArgs e) { isimler.Sort(); } private void button5_Click(object sender, EventArgs e) { isimler.Reverse(); } private void button6_Click(object sender, EventArgs e) { int aranan = isimler.IndexOf(txtAdSoyad.Text); if (aranan>-1) { MessageBox.Show("Aranan Kayıt Dizide Mevcut " + (aranan + 1) + ". Sırada...", "Ara", MessageBoxButtons.OK, MessageBoxIcon.Information); } else MessageBox.Show("Aranan Kayıt Dizide Mevcut Değil " , "Ara", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void button7_Click(object sender, EventArgs e) { isimler.Insert(int.Parse(textBox1.Text), txtAdSoyad.Text); //isimler.Insert(3, "Ali"); } } C# ile access veritabanına bağlanma Access ile oluşturulan veritabanına C# windows form uygulaması ile bağlantı sağlamak için yapmamız gereken işlemleri adım adım anlatalım. Öncellikle form1.cs kod bölümünde üst kısma aşağıdaki kodların hemen altına veritabanı bağlantısı için Oledb kütüphanesi eklenmelidir. using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; Aşağıdaki kodu ekliyoruz. using System.Data.OleDb;//database bağlantısı için Örnek veritabanımız. Bu kodu ekledikten sonra veritabanımızı (ogrenci.accdb) dosyamızı windows form uygulaması klasörünün içindeki bin\Debug içine atarsak daha kolay yoldan bağlantı sağlayabiliriz. Bu işlemleri yaptıktan sonra bağlantı oluşturmak için form'un Load olayına aşağıdaki kodları yazmalıyız. try { string baglantiCumlesi = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ogrenci.accdb;"; //Bağlantı için gerekli olan yol ve bağlantı türü yazılma şekli OleDbConnection baglanti = new OleDbConnection(baglantiCumlesi); //Oledb türünde bağlantı oluşturuyoruz. baglanti.Open(); //veritabanına bağlantıyı açıyoruz. } catch (Exception hata) { MessageBox.Show(hata.Message); } //Bağlantıda hata olursa uygulama yarıda kesilmeden sadece hata mesajını almak için try-catch kullanıldı Aşağıdaki hatayı veritabanı bağlantı için Data Source için path(yol) kısmını değiştirdiğimize aldık. Bağlantı yapılırken access 'te 2007 ve sonrasında oluşturulan veritabanında Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine şeklinde bir hata ile karşılaşılırsa aşağıdaki programları kurarak hata ortadan kaldırılabilir. 2007 Office System Driver: Data Connectivity Components (kurun deneyin olmaz ise altakini kurun) Microsoft Access Database Engine 2010 Redistributable C#'ta Veritabanına Bilgi Girişi Bu derste bir veritabanına bağlanarak c# ile oluşturduğumuz windows form üzerinden bilgi girişi yapacağız.ogrenciler.accdb adında aşağıdaki gibi bir veri tabanı oluşturuyoruz. Visual Studio'da yeni bir Windows application(uygulama) oluşturuyoruz. ve ilk form'a aşağıdaki gibi butonlar ekleyerek yapalım. Butonlara aşağıdaki kodları ekleyelim. private void button1_Click(object sender, EventArgs e) { Form2 kayit = new Form2(); kayit.Show(); } private void button2_Click(object sender, EventArgs e) { Form3 liste = new Form3(); liste.Show(); } private void button3_Click(object sender, EventArgs e) { Form4 silme = new Form4(); silme.Show(); } private void button4_Click(object sender, EventArgs e) { Form5 guncel = new Form5(); guncel.Show(); } Yeni Form oluşturarak aşağıdaki gibi tasarlayalım. comboBox nesnesine sınıf isimlerini girdikten sonra, button(Kaydet) ve button(İptal) kodlarını yazalım. private void button1_Click(object sender, EventArgs e) { //Veritabanın gağlantı türü ve hangi dosyaya bağlanacağını belirtir. access dosyasını bin/debug içine attık. OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=ogrenciler.accdb"); OleDbCommand sorgu = new OleDbCommand();//sorgu komut yapısı oluşturuldu baglanti.Open();// bağlantı açıldı sorgu.Connection = baglanti;//hangi bağlantıda kullanılacak string string string string no = textBox1.Text; ad = textBox2.Text; soyad = textBox3.Text; sinif = comboBox1.Text; sorgu.CommandType = CommandType.Text; sorgu.CommandText="insert into ogrenci_bilgi (numara,adi,soyadi,sinif) values (@numara,@adi,@soyadi,@sinif)"; sorgu.Parameters.AddWithValue("@numara", no); sorgu.Parameters.AddWithValue("@adi", ad); sorgu.Parameters.AddWithValue("@soyadi", soyad); sorgu.Parameters.AddWithValue("@sinif", sinif); sorgu.ExecuteNonQuery();//update,insert,delete sorgularını çalıştırır ve geriye kaç satırlık işlem yapıldığı ile ilgili bilgi int türünde geri döner. MessageBox.Show("Kaydınız gerçekleştirilmiştir.", "Kayır İşlemi"); baglanti.Close();// bağlantı kapatıldı. } private void button2_Click(object sender, EventArgs e) { this.Close(); } Bu şekilde access veritabanına c# windows form application(uygulama) üzerinden kaydetme işlemini gerçekleştirmiş olduk. Güncelleme Listeleme ve Silme için sıradaki derslerimizi takip edebilirsiniz. C#'ta Veritabanın'dan Bilgi Listeleme Bu yazılı dersimizden önceki Bilgi Girişi dersimize bakmanız iyi olacaktır. Önceki uygulamamıza bağlı olarak yeni bir form oluşturalım. aşağıdaki gibi dataGridView nesnesi ekleyelim. formun load olayına aşağıdaki kodları yazarak veritabanındaki bilgileri datagridview nesnesine aktaralım. private void Form3_Load(object sender, EventArgs e) { //Veritabanın gağlantı türü ve hangi dosyaya bağlanacağını belirtir. access dosyasını bin/debug içine attık. OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=ogrenciler.accdb"); OleDbCommand sorgu = new OleDbCommand();//sorgu komut yapısı oluşturuldu baglanti.Open();// bağlantı açıldı OleDbDataAdapter da = new OleDbDataAdapter("select * from ogrenci_bilgi", baglanti); DataTable dt = new DataTable(); //veri tablosu oluşturuldu da.Fill(dt);//sorgu sonucunda gelen veriler veir tablosuna aktarıldı dataGridView1.DataSource = dt;//data grid View'e data tableye bağlantı sağlanıyor. baglanti.Close();//bağlantı sonlandırma. } Bu şekilde access veritabanına c# windows form application(uygulama) üzerinde kayıt listeleme işlemi gerçekleştirmiş olduk. Güncelleme ve Silme için sıradaki derslerimizi takip edebilirsiniz. C#'ta Veritabanın'dan Kayıt Silme Bu yazılı dersimizden önceki Bilgi Listeleme dersimize bakmanız iyi olacaktır. Önceki uygulamamıza bağlı olarak yeni bir form oluşturalım. aşağıdaki gibi nesneleri ekleyelim. Button(sil) ve button(İptal) için aşağıdaki kodları ekleyelim. private void button1_Click(object sender, EventArgs e) { //Veritabanın gağlantı türü ve hangi dosyaya bağlanacağını belirtir. access dosyasını bin/debug içine attık. OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=ogrenciler.accdb"); OleDbCommand sorgu = new OleDbCommand();//sorgu komut yapısı oluşturuldu baglanti.Open();// bağlantı açıldı sorgu.Connection = baglanti;//hangi bağlantıda kullanılacak sorgu.CommandText = String.Format("delete from ogrenci_bilgi where numara={0}", textBox1.Text); int adet=sorgu.ExecuteNonQuery(); if (adet == 0) MessageBox.Show("Kayıt bulunamadı."); else MessageBox.Show(adet+" adet kayıt silindi"); baglanti.Close(); } private void button2_Click(object sender, EventArgs e) { this.Close(); } Bu şekilde access veritabanına c# windows form application(uygulama) üzerinde kayıtsilme işlemi gerçekleştirmiş olduk. Güncelleme için sıradaki derslerimizi takip edebilirsiniz. C#'ta Veritabanın'dan Kayıt Güncelleme aşağıdaki gibi bir form oluşturalım. kayıt ekleme yapmış olduğumuz dersteki gibi comboBox nesnesine sınıfları ekleyelim. aşağıdaki kodları gerekli nesnelerin olaylarına yazalım. private void button3_Click(object sender, EventArgs e) { //Veritabanın gağlantı türü ve hangi dosyaya bağlanacağını belirtir. access dosyasını bin/debug içine attık. OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=ogrenciler.accdb"); OleDbCommand sorgu = new OleDbCommand();//sorgu komut yapısı oluşturuldu baglanti.Open();// bağlantı açıldı sorgu.Connection = baglanti; sorgu.CommandText = String.Format("select * from ogrenci_bilgi where numara={0}", textBox1.Text); OleDbDataReader oku = sorgu.ExecuteReader(); bool durum = oku.Read(); if (durum == false) { MessageBox.Show("Kayıt yok"); textBox1.Text = null; textBox2.Text = null; textBox3.Text = null; comboBox1.Text = null; textBox1.Focus(); } else { textBox2.Text = oku[1].ToString(); textBox3.Text = oku[2].ToString(); comboBox1.SelectedText = oku[3].ToString(); } baglanti.Close();//bağlantı sonlandırma. } private void button2_Click(object sender, EventArgs e) { //Veritabanın gağlantı türü ve hangi dosyaya bağlanacağını belirtir. access dosyasını bin/debug içine attık. OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=ogrenciler.accdb"); OleDbCommand sorgu = new OleDbCommand();//sorgu komut yapısı oluşturuldu baglanti.Open();// bağlantı açıldı sorgu.Connection = baglanti; sorgu.CommandText = String.Format("update ogrenci_bilgi set adi='{0}',soyadi='{1}',sinif='{2}' where numara={3}", textBox2.Text,textBox3.Text,comboBox1.Text,textBox1.Text); int adet = sorgu.ExecuteNonQuery(); if (adet > 0) MessageBox.Show("Kayıt Güncellendi"); else MessageBox.Show("Kaıt güncellenmedi"); } private void button1_Click(object sender, EventArgs e) { this.Close(); }